Compare commits
	
		
			9 Commits
		
	
	
		
			898cece0d3
			...
			v0.2.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| b2a78907cf | |||
| 7bcf532b26 | |||
| 595f9a049c | |||
| 80ed90941d | |||
| 77cee53f2d | |||
| 1a673f4b3a | |||
| 5ad8c88319 | |||
| 30aaa64f59 | |||
| 352bf840c3 | 
| @@ -26,7 +26,7 @@ namespace Elwig.Dialogs { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void UpdateButtons() { |         private void UpdateButtons() { | ||||||
|             ConfirmButton.IsEnabled = WeightInput.Text.Length > 0 && ReasonInput.Text.Trim().Length > 0; |             ConfirmButton.IsEnabled = WeightInput.Text.Length > 0; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void WeightInput_TextChanged(object sender, TextChangedEventArgs evt) { |         private void WeightInput_TextChanged(object sender, TextChangedEventArgs evt) { | ||||||
|   | |||||||
| @@ -5,8 +5,9 @@ namespace Elwig.Documents { | |||||||
|  |  | ||||||
|         public Member Member; |         public Member Member; | ||||||
|         public bool IncludeSender = false; |         public bool IncludeSender = false; | ||||||
|         public string Aside { get; set; } |         public bool UseBillingAddress = false; | ||||||
|         public string? Location { get; set; } |         public string Aside; | ||||||
|  |         public string? Location; | ||||||
|  |  | ||||||
|         public BusinessDocument(string title, Member m, bool includeSender = false) : base(title) { |         public BusinessDocument(string title, Member m, bool includeSender = false) : base(title) { | ||||||
|             Member = m; |             Member = m; | ||||||
| @@ -24,10 +25,11 @@ namespace Elwig.Documents { | |||||||
|         public string Address { |         public string Address { | ||||||
|             get { |             get { | ||||||
|                 var b = Member.BillingAddress; |                 var b = Member.BillingAddress; | ||||||
|                 var plz = (b == null) ? Member.PostalDest.AtPlz : b.PostalDest.AtPlz; |                 if (b != null && UseBillingAddress) { | ||||||
|                 if (b != null) { |                     var plz = b.PostalDest.AtPlz; | ||||||
|                     return $"{b.Name}\n{Member.AdministrativeName}\n{b.Address}\n{plz.Plz} {plz.Dest}\nÖsterreich"; |                     return $"{b.Name}\n{Member.AdministrativeName}\n{b.Address}\n{plz.Plz} {plz.Dest}\nÖsterreich"; | ||||||
|                 } else { |                 } else { | ||||||
|  |                     var plz = Member.PostalDest.AtPlz; | ||||||
|                     return $"{Member.AdministrativeName}\n{Member.Address}\n{plz.Plz} {plz.Dest}\nÖsterreich"; |                     return $"{Member.AdministrativeName}\n{Member.Address}\n{plz.Plz} {plz.Dest}\nÖsterreich"; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|   | |||||||
							
								
								
									
										86
									
								
								Elwig/Documents/CreditNote.cshtml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								Elwig/Documents/CreditNote.cshtml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | |||||||
|  | @using RazorLight | ||||||
|  | @inherits TemplatePage<Elwig.Documents.CreditNote> | ||||||
|  | @model Elwig.Documents.CreditNote | ||||||
|  | @{ Layout = "BusinessDocument"; } | ||||||
|  | <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-creditnote.css"/> | ||||||
|  | @{ | ||||||
|  |     var bucketNum = Model.BucketNames.Length; | ||||||
|  | } | ||||||
|  | <main> | ||||||
|  |     <div class="date">@Model.Location, am @($"{Model.Date:dd.MM.yyyy}")</div> | ||||||
|  |     <h1>@Model.Title</h1> | ||||||
|  |     <table class="credit"> | ||||||
|  |         <colgroup> | ||||||
|  |             <col style="width: 24mm;"/> | ||||||
|  |             <col style="width: 6mm;"/> | ||||||
|  |             <col style="width: 31mm;"/> | ||||||
|  |             <col style="width: 15mm;"/> | ||||||
|  |             <col style="width: 8mm;"/> | ||||||
|  |             <col style="width: 10mm;"/> | ||||||
|  |             <col style="width: 12mm;"/> | ||||||
|  |             <col style="width: 10mm;"/> | ||||||
|  |             <col style="width: 12mm;"/> | ||||||
|  |             <col style="width: 15mm;"/> | ||||||
|  |             <col style="width: 17mm;"/> | ||||||
|  |         </colgroup> | ||||||
|  |         <thead> | ||||||
|  |             <tr> | ||||||
|  |                 <th rowspan="3" style="text-align: left;">Lieferschein-Nr.</th> | ||||||
|  |                 <th rowspan="3">Pos.</th> | ||||||
|  |                 <th rowspan="3" style="text-align: left;">Sorte</th> | ||||||
|  |                 <th rowspan="3" style="text-align: left;">Attribut(e)</th> | ||||||
|  |                 <th rowspan="2" colspan="2">Gradation</th> | ||||||
|  |                 <th colspan="2">Zu-/Abschläge</th> | ||||||
|  |                 <th colspan="2">@Raw(string.Join("<br/>", Model.BucketNames))</th> | ||||||
|  |                 <th rowspan="2">Betrag</th> | ||||||
|  |             </tr> | ||||||
|  |             <tr> | ||||||
|  |                 <th>Abs.</th> | ||||||
|  |                 <th>Rel.</th> | ||||||
|  |                 <th>Gewicht</th> | ||||||
|  |                 <th>Preis</th> | ||||||
|  |             </tr> | ||||||
|  |             <tr> | ||||||
|  |                 <th>[°Oe]</th> | ||||||
|  |                 <th>[°KMW]</th> | ||||||
|  |                 <th>[@Model.CurrencySymbol/kg]</th> | ||||||
|  |                 <th>[%]</th> | ||||||
|  |                 <th>[kg]</th> | ||||||
|  |                 <th>[@Model.CurrencySymbol/kg]</th> | ||||||
|  |                 <th>[@Model.CurrencySymbol]</th> | ||||||
|  |             </tr> | ||||||
|  |         </thead> | ||||||
|  |         <tbody> | ||||||
|  |             @{ | ||||||
|  |                 string FormatRow(int? weight, decimal? amount) { | ||||||
|  |                     var w = weight == null || weight == 0 ? "-" : $"{weight:N0}"; | ||||||
|  |                     return $"<td class='weight'>{w}</td><td class='amount'>{amount?.ToString("0." + string.Concat(Enumerable.Repeat('0', Model.Precision)))}</td>"; | ||||||
|  |                 } | ||||||
|  |                 string? last = null; | ||||||
|  |             } | ||||||
|  |             @foreach (var part in Model.Parts) { | ||||||
|  |                 var pmt = part.Payment; | ||||||
|  |                 var abs = pmt?.ModAbs == null || pmt?.ModAbs == 0 ? "-" : pmt?.ModAbs.ToString("0." + string.Concat(Enumerable.Repeat('0', Model.Precision))); | ||||||
|  |                 var rel = pmt?.ModRel == null || pmt?.ModRel == 0 ? "-" : $"{pmt?.ModRel * 100:0.00##}"; | ||||||
|  |                 <tr class="first @(bucketNum <= 1 ? "last" : "") @(last != null && last != part.SortId ? "new" : "")"> | ||||||
|  |                     <td rowspan="@bucketNum" class="lsnr">@part.Delivery.LsNr</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="dpnr">@part.DPNr</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="variant">@part.Variant.Name</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="attribute">@string.Join(" / ", part.PartAttributes.Select(a => a.AttrId))</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="oe">@($"{part.Oe:N0}")</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="kmw">@($"{part.Kmw:N1}")</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="abs">@abs</td> | ||||||
|  |                     <td rowspan="@bucketNum" class="rel">@rel</td> | ||||||
|  |                     @Raw(FormatRow(pmt?.Buckets?.ElementAtOrDefault(0), pmt?.Prices?.ElementAtOrDefault(0))) | ||||||
|  |                     <td rowspan="@bucketNum" class="amount sum">@($"{pmt?.Amount:N2}")</td> | ||||||
|  |                 </tr> | ||||||
|  |                 @for (int i = 1; i < bucketNum; i++) { | ||||||
|  |                     <tr class="@(i == bucketNum - 1 ? "last" : "")"> | ||||||
|  |                         @Raw(FormatRow(pmt?.Buckets?.ElementAtOrDefault(i), pmt?.Prices?.ElementAtOrDefault(i))) | ||||||
|  |                     </tr> | ||||||
|  |                 } | ||||||
|  |                 last = part.SortId; | ||||||
|  |             } | ||||||
|  |         </tbody> | ||||||
|  |     </table> | ||||||
|  | </main> | ||||||
							
								
								
									
										39
									
								
								Elwig/Documents/CreditNote.cshtml.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								Elwig/Documents/CreditNote.cshtml.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | using Elwig.Helpers; | ||||||
|  | using Elwig.Models; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.Linq; | ||||||
|  |  | ||||||
|  | namespace Elwig.Documents { | ||||||
|  |     public class CreditNote : BusinessDocument { | ||||||
|  |  | ||||||
|  |         public Credit Credit; | ||||||
|  |         public string? Text; | ||||||
|  |         public string CurrencySymbol; | ||||||
|  |         public string[] BucketNames; | ||||||
|  |         public int Precision; | ||||||
|  |         public IEnumerable<DeliveryPart> Parts; | ||||||
|  |  | ||||||
|  |         public CreditNote(Credit c, AppDbContext ctx) : base($"Traubengutschrift Nr. {c.TgId} – {c.Payment.Variant.Name}", c.Member) { | ||||||
|  |             UseBillingAddress = true; | ||||||
|  |             Credit = c; | ||||||
|  |             Aside = Aside.Replace("</table>", "") + | ||||||
|  |                 $"<thead><tr><th colspan='2'>Gutschrift</th></tr></thead><tbody>" + | ||||||
|  |                 $"<tr><th>TG-Nr.</th><td>{c.TgId}</td></tr>" + | ||||||
|  |                 $"<tr><th>Überw. am</th><td>{c.Payment.Variant.TransferDate:dd.MM.yyyy}</td></tr>" + | ||||||
|  |                 $"<tr><th>Datum/Zeit</th><td>{c.ModifiedTimestamp:dd.MM.yyyy} / {c.ModifiedTimestamp:HH:mm}</td></tr>" + | ||||||
|  |                 $"</tbody></table>"; | ||||||
|  |             Text = App.Client.TextDeliveryNote; | ||||||
|  |             DocumentId = $"Tr.-Gutschr. {c.TgId}"; | ||||||
|  |             CurrencySymbol = c.Payment.Variant.Season.Currency.Symbol ?? c.Payment.Variant.Season.Currency.Code; | ||||||
|  |             BucketNames = c.Payment.Variant.BucketNames; | ||||||
|  |             Precision = c.Payment.Variant.Season.Precision; | ||||||
|  |             Parts = ctx.DeliveryParts.FromSql($""" | ||||||
|  |                 SELECT p.* | ||||||
|  |                 FROM v_delivery v | ||||||
|  |                 JOIN delivery_part p ON (p.year, p.did, p.dpnr) = (v.year, v.did, v.dpnr) | ||||||
|  |                 WHERE (v.year, v.mgnr) = ({c.Year}, {c.Member.MgNr}) | ||||||
|  |                 ORDER BY sortid, LENGTH(attributes) DESC, attributes, kmw DESC, date, time, dpnr | ||||||
|  |                 """).ToList(); | ||||||
|  |         } | ||||||
|  |     }} | ||||||
| @@ -10,6 +10,7 @@ namespace Elwig.Documents { | |||||||
|         public IEnumerable<(string, string, int, int, int)> MemberBuckets; |         public IEnumerable<(string, string, int, int, int)> MemberBuckets; | ||||||
|  |  | ||||||
|         public DeliveryNote(Delivery d, AppDbContext ctx) : base($"Traubenübernahmeschein Nr. {d.LsNr}", d.Member) { |         public DeliveryNote(Delivery d, AppDbContext ctx) : base($"Traubenübernahmeschein Nr. {d.LsNr}", d.Member) { | ||||||
|  |             UseBillingAddress = true; | ||||||
|             Delivery = d; |             Delivery = d; | ||||||
|             Aside = Aside.Replace("</table>", "") + |             Aside = Aside.Replace("</table>", "") + | ||||||
|                 $"<thead><tr><th colspan='2'>Lieferung</th></tr></thead><tbody>" + |                 $"<thead><tr><th colspan='2'>Lieferung</th></tr></thead><tbody>" + | ||||||
|   | |||||||
| @@ -49,6 +49,8 @@ namespace Elwig.Documents { | |||||||
|                 name = "BusinessLetter"; |                 name = "BusinessLetter"; | ||||||
|             } else if (this is DeliveryNote) { |             } else if (this is DeliveryNote) { | ||||||
|                 name = "DeliveryNote"; |                 name = "DeliveryNote"; | ||||||
|  |             } else if (this is CreditNote) { | ||||||
|  |                 name = "CreditNote"; | ||||||
|             } else { |             } else { | ||||||
|                 throw new InvalidOperationException("Invalid document object"); |                 throw new InvalidOperationException("Invalid document object"); | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ namespace Elwig.Documents { | |||||||
|             await e.CompileTemplateAsync("BusinessDocument"); |             await e.CompileTemplateAsync("BusinessDocument"); | ||||||
|             await e.CompileTemplateAsync("BusinessLetter"); |             await e.CompileTemplateAsync("BusinessLetter"); | ||||||
|             await e.CompileTemplateAsync("DeliveryNote"); |             await e.CompileTemplateAsync("DeliveryNote"); | ||||||
|  |             await e.CompileTemplateAsync("CreditNote"); | ||||||
|  |  | ||||||
|             Engine = e; |             Engine = e; | ||||||
|             evtHandler(); |             evtHandler(); | ||||||
|   | |||||||
							
								
								
									
										64
									
								
								Elwig/Documents/style-creditnote.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								Elwig/Documents/style-creditnote.css
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  |  | ||||||
|  | table.credit { | ||||||
|  |     font-size: 10pt; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit th, | ||||||
|  | table.credit td { | ||||||
|  |     padding: 0 0.25mm; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit thead { | ||||||
|  |     font-size: 8pt | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit thead th { | ||||||
|  |     font-weight: normal; | ||||||
|  |     font-style: italic; | ||||||
|  |     vertical-align: bottom; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit td { | ||||||
|  |     vertical-align: top; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit .oe, | ||||||
|  | table.credit .kmw { | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit .dpnr { | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit .amount, | ||||||
|  | table.credit .weight { | ||||||
|  |     text-align: right; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit .rel, | ||||||
|  | table.credit .abs { | ||||||
|  |     text-align: center; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit .amount.sum { | ||||||
|  |     vertical-align: bottom; | ||||||
|  |     padding-bottom: 1mm; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit tbody tr:not(.first):not(.last) { | ||||||
|  |     break-before: avoid; | ||||||
|  |     break-after: avoid; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit tbody tr.first td { | ||||||
|  |     padding-top: 1mm; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit tbody tr.last td { | ||||||
|  |     padding-bottom: 1mm; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | table.credit tbody tr.new { | ||||||
|  |     border-top: 0.5pt solid black; | ||||||
|  | } | ||||||
| @@ -7,7 +7,7 @@ | |||||||
|     <UseWPF>true</UseWPF> |     <UseWPF>true</UseWPF> | ||||||
|     <PreserveCompilationContext>true</PreserveCompilationContext> |     <PreserveCompilationContext>true</PreserveCompilationContext> | ||||||
|     <ApplicationIcon>elwig.ico</ApplicationIcon> |     <ApplicationIcon>elwig.ico</ApplicationIcon> | ||||||
|     <Version>0.1.0</Version> |     <Version>0.2.0</Version> | ||||||
|     <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> |     <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -44,6 +44,7 @@ namespace Elwig.Helpers { | |||||||
|         public DbSet<DeliveryPartModifier> DeliveryPartModifiers { get; private set; } |         public DbSet<DeliveryPartModifier> DeliveryPartModifiers { get; private set; } | ||||||
|         public DbSet<PaymentVar> PaymentVariants { get; private set; } |         public DbSet<PaymentVar> PaymentVariants { get; private set; } | ||||||
|         public DbSet<PaymentMember> MemberPayments { get; private set; } |         public DbSet<PaymentMember> MemberPayments { get; private set; } | ||||||
|  |         public DbSet<Credit> Credits { get; private set; } | ||||||
|  |  | ||||||
|         private readonly StreamWriter? LogFile = null; |         private readonly StreamWriter? LogFile = null; | ||||||
|         public static DateTime LastWriteTime => File.GetLastWriteTime(App.Config.DatabaseFile); |         public static DateTime LastWriteTime => File.GetLastWriteTime(App.Config.DatabaseFile); | ||||||
|   | |||||||
| @@ -21,12 +21,9 @@ namespace Elwig.Helpers.Billing { | |||||||
|         public static IEnumerable<Transaction> FromPaymentVariant(PaymentVar variant) { |         public static IEnumerable<Transaction> FromPaymentVariant(PaymentVar variant) { | ||||||
|             var last = variant.Season.PaymentVariants.Where(v => v.TransferDate != null).OrderBy(v => v.TransferDate).LastOrDefault(); |             var last = variant.Season.PaymentVariants.Where(v => v.TransferDate != null).OrderBy(v => v.TransferDate).LastOrDefault(); | ||||||
|             var dict = last?.MemberPayments.ToDictionary(m => m.MgNr, m => m.Amount) ?? new(); |             var dict = last?.MemberPayments.ToDictionary(m => m.MgNr, m => m.Amount) ?? new(); | ||||||
|             return variant.MemberPayments |             return variant.Credits | ||||||
|                 .OrderBy(m => m.MgNr) |                 .OrderBy(c => c.MgNr) | ||||||
|                 .Select(m => { |                 .Select(c => new Transaction(c.Member, c.Amount, variant.Season.CurrencyCode, c.TgNr)) | ||||||
|                     var amt = Math.Round(dict.GetValueOrDefault(m.MgNr, 0), 2); |  | ||||||
|                     return new Transaction(m.Member, m.Amount - amt, m.Variant.Season.CurrencyCode, m.TgNr ?? 0); |  | ||||||
|                 }) |  | ||||||
|                 .ToList(); |                 .ToList(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										104
									
								
								Elwig/Models/Credit.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								Elwig/Models/Credit.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | |||||||
|  | using Elwig.Helpers; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using System; | ||||||
|  | using System.ComponentModel.DataAnnotations.Schema; | ||||||
|  |  | ||||||
|  | namespace Elwig.Models { | ||||||
|  |     [Table("credit"), PrimaryKey("Year", "TgNr"), Index("Year", "AvNr", "MgNr", IsUnique = true)] | ||||||
|  |     public class Credit { | ||||||
|  |         [Column("year")] | ||||||
|  |         public int Year { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("tgnr")] | ||||||
|  |         public int TgNr { get; set; } | ||||||
|  |  | ||||||
|  |         [NotMapped] | ||||||
|  |         public string TgId => $"{Year}/{TgNr:000}"; | ||||||
|  |  | ||||||
|  |         [Column("mgnr")] | ||||||
|  |         public int MgNr { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("avnr")] | ||||||
|  |         public int AvNr { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("net_amount")] | ||||||
|  |         public long NetAmountValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal NetAmount { | ||||||
|  |             get => Utils.DecFromDb(NetAmountValue, 2); | ||||||
|  |             set => NetAmountValue = Utils.DecToDb(value, 2); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("prev_net_amount")] | ||||||
|  |         public long? PrevNetAmountValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? PrevNetAmount { | ||||||
|  |             get => PrevNetAmountValue != null ? Utils.DecFromDb(PrevNetAmountValue.Value, 2) : null; | ||||||
|  |             set => PrevNetAmountValue = value != null ? Utils.DecToDb(value.Value, 2) : null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("vat")] | ||||||
|  |         public double VatValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal Vat { | ||||||
|  |             get => (decimal)VatValue; | ||||||
|  |             set => VatValue = (double)value; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("vat_amount")] | ||||||
|  |         public long VatAmountValue { get; private set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal VatAmount { | ||||||
|  |             get => Utils.DecFromDb(VatAmountValue, 2); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("gross_amount")] | ||||||
|  |         public long GrossAmountValue { get; private set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal GrossAmount { | ||||||
|  |             get => Utils.DecFromDb(GrossAmountValue, 2); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("modifiers")] | ||||||
|  |         public long? ModifiersValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Modifiers { | ||||||
|  |             get => ModifiersValue != null ? Utils.DecFromDb(ModifiersValue.Value, 2) : null; | ||||||
|  |             set => ModifiersValue = value != null ? Utils.DecToDb(value.Value, 2) : null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("prev_modifiers")] | ||||||
|  |         public long? PrevModifiersValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? PrevModifiers { | ||||||
|  |             get => PrevModifiersValue != null ? Utils.DecFromDb(PrevModifiersValue.Value, 2) : null; | ||||||
|  |             set => PrevModifiersValue = value != null ? Utils.DecToDb(value.Value, 2) : null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("amount")] | ||||||
|  |         public long AmountValue { get; private set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal Amount { | ||||||
|  |             get => Utils.DecFromDb(AmountValue, 2); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("ctime")] | ||||||
|  |         public long CTime { get; private set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public DateTime CreatedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime; | ||||||
|  |  | ||||||
|  |         [Column("mtime")] | ||||||
|  |         public long MTime { get; private set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public DateTime ModifiedTimestamp => DateTimeOffset.FromUnixTimeSeconds(CTime).LocalDateTime; | ||||||
|  |  | ||||||
|  |         [ForeignKey("Year, AvNr, MgNr")] | ||||||
|  |         public virtual PaymentMember Payment { get; private set; } | ||||||
|  |  | ||||||
|  |         [ForeignKey("Year, AvNr")] | ||||||
|  |         public virtual PaymentVar Variant { get; private set; } | ||||||
|  |  | ||||||
|  |         [ForeignKey("MgNr")] | ||||||
|  |         public virtual Member Member { get; private set; } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -30,15 +30,10 @@ namespace Elwig.Models { | |||||||
|  |  | ||||||
|         [Column("kmw")] |         [Column("kmw")] | ||||||
|         public double Kmw { get; set; } |         public double Kmw { get; set; } | ||||||
|  |  | ||||||
|         [NotMapped] |         [NotMapped] | ||||||
|         public double Oe { |         public double Oe { | ||||||
|             get { |             get => Utils.KmwToOe(Kmw); | ||||||
|                 return Utils.KmwToOe(Kmw); |             set => Kmw = Utils.OeToKmw(value); | ||||||
|             } |  | ||||||
|             set { |  | ||||||
|                 Kmw = Utils.OeToKmw(value); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         [Column("qualid")] |         [Column("qualid")] | ||||||
| @@ -107,6 +102,10 @@ namespace Elwig.Models { | |||||||
|         [NotMapped] |         [NotMapped] | ||||||
|         public IEnumerable<Modifier> Modifiers => PartModifiers.Select(m => m.Modifier).OrderBy(m => m.Ordering); |         public IEnumerable<Modifier> Modifiers => PartModifiers.Select(m => m.Modifier).OrderBy(m => m.Ordering); | ||||||
|  |  | ||||||
|  |         [InverseProperty("DeliveryPart")] | ||||||
|  |         public virtual PaymentDeliveryPart? Payment { get; private set; } | ||||||
|  |  | ||||||
|  |         [NotMapped] | ||||||
|         public string OriginString => Origin.OriginString + "\n" + (Kg?.Gl != null ? $" / {Kg.Gl.Name}" : "") + (Kg != null ? $" / {Kg.AtKg.Gem.Name} / KG {Kg.AtKg.Name}" : "") + (Rd != null ? $" / Ried {Rd.Name}" : ""); |         public string OriginString => Origin.OriginString + "\n" + (Kg?.Gl != null ? $" / {Kg.Gl.Name}" : "") + (Kg != null ? $" / {Kg.AtKg.Gem.Name} / KG {Kg.AtKg.Name}" : "") + (Rd != null ? $" / Ried {Rd.Name}" : ""); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										158
									
								
								Elwig/Models/PaymentDeliveryPart.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								Elwig/Models/PaymentDeliveryPart.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,158 @@ | |||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using System.ComponentModel.DataAnnotations.Schema; | ||||||
|  | using System.Linq; | ||||||
|  |  | ||||||
|  | namespace Elwig.Models { | ||||||
|  |     [Table("payment_delivery_part"), PrimaryKey("Year", "DId", "DPNr", "AvNr")] | ||||||
|  |     public class PaymentDeliveryPart { | ||||||
|  |         [Column("year")] | ||||||
|  |         public int Year { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("did")] | ||||||
|  |         public int DId { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("dpnr")] | ||||||
|  |         public int DPNr { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("avnr")] | ||||||
|  |         public int AvNr { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("mod_abs")] | ||||||
|  |         public long ModAbsValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal ModAbs { | ||||||
|  |             get => Variant.Season.DecFromDb(ModAbsValue); | ||||||
|  |             set => ModAbsValue = Variant.Season.DecToDb(value); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("mod_rel")] | ||||||
|  |         public double ModRelValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal ModRel { | ||||||
|  |             get => (decimal)ModRelValue; | ||||||
|  |             set => ModRelValue = (double)value; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("bucket_1")] | ||||||
|  |         public int? Bucket1 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_2")] | ||||||
|  |         public int? Bucket2 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_3")] | ||||||
|  |         public int? Bucket3 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_4")] | ||||||
|  |         public int? Bucket4 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_5")] | ||||||
|  |         public int? Bucket5 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_6")] | ||||||
|  |         public int? Bucket6 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_7")] | ||||||
|  |         public int? Bucket7 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_8")] | ||||||
|  |         public int? Bucket8 { get; set; } | ||||||
|  |  | ||||||
|  |         [Column("bucket_9")] | ||||||
|  |         public int? Bucket9 { get; set; } | ||||||
|  |  | ||||||
|  |         [NotMapped] | ||||||
|  |         public int[] Buckets => (new int?[] { Bucket1, Bucket2, Bucket3, Bucket4, Bucket5, Bucket6, Bucket7, Bucket8, Bucket9 }) | ||||||
|  |             .Where(b => b != null).Select(b => b.Value).ToArray(); | ||||||
|  |  | ||||||
|  |         [Column("price_1")] | ||||||
|  |         public long? Price1Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price1 { | ||||||
|  |             get => Price1Value != null ? Variant.Season.DecFromDb(Price1Value.Value) : null; | ||||||
|  |             set => Price1Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [Column("price_2")] | ||||||
|  |         public long? Price2Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price2 { | ||||||
|  | 			get => Price2Value != null ? Variant.Season.DecFromDb(Price2Value.Value) : null; | ||||||
|  | 			set => Price2Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_3")] | ||||||
|  |         public long? Price3Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price3 { | ||||||
|  | 			get => Price3Value != null ? Variant.Season.DecFromDb(Price3Value.Value) : null; | ||||||
|  | 			set => Price3Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_4")] | ||||||
|  |         public long? Price4Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price4 { | ||||||
|  | 			get => Price4Value != null ? Variant.Season.DecFromDb(Price4Value.Value) : null; | ||||||
|  | 			set => Price4Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_5")] | ||||||
|  |         public long? Price5Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price5 { | ||||||
|  | 			get => Price5Value != null ? Variant.Season.DecFromDb(Price5Value.Value) : null; | ||||||
|  | 			set => Price5Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_6")] | ||||||
|  |         public long? Price6Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price6 { | ||||||
|  | 			get => Price6Value != null ? Variant.Season.DecFromDb(Price6Value.Value) : null; | ||||||
|  | 			set => Price6Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_7")] | ||||||
|  |         public long? Price7Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price7 { | ||||||
|  | 			get => Price7Value != null ? Variant.Season.DecFromDb(Price7Value.Value) : null; | ||||||
|  | 			set => Price7Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_8")] | ||||||
|  |         public long? Price8Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price8 { | ||||||
|  | 			get => Price8Value != null ? Variant.Season.DecFromDb(Price8Value.Value) : null; | ||||||
|  | 			set => Price8Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("price_9")] | ||||||
|  |         public long? Price9Value { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Price9 { | ||||||
|  | 			get => Price9Value != null ? Variant.Season.DecFromDb(Price9Value.Value) : null; | ||||||
|  | 			set => Price9Value = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  |         [Column("amount")] | ||||||
|  |         public long? AmountValue { get; set; } | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal? Amount { | ||||||
|  |             get => AmountValue != null ? Variant.Season.DecFromDb(AmountValue.Value) : null; | ||||||
|  |             set => AmountValue = value != null ? Variant.Season.DecToDb(value.Value) : null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         [NotMapped] | ||||||
|  |         public decimal[] Prices => (new decimal?[] { Price1, Price2, Price3, Price4, Price5, Price6, Price7, Price8, Price9 }) | ||||||
|  |             .Where(p => p != null).Select(p => p.Value).ToArray(); | ||||||
|  |  | ||||||
|  |         [ForeignKey("Year, AvNr")] | ||||||
|  |         public virtual PaymentVar Variant { get; private set; } | ||||||
|  |  | ||||||
|  |         [ForeignKey("Year, DId, DPNr")] | ||||||
|  |         public virtual DeliveryPart DeliveryPart { get; private set; } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -2,7 +2,7 @@ using Microsoft.EntityFrameworkCore; | |||||||
| using System.ComponentModel.DataAnnotations.Schema; | using System.ComponentModel.DataAnnotations.Schema; | ||||||
|  |  | ||||||
| namespace Elwig.Models { | namespace Elwig.Models { | ||||||
|     [Table("payment_member"), PrimaryKey("Year", "AvNr", "MgNr"), Index("Year", "TgNr", IsUnique = true)] |     [Table("payment_member"), PrimaryKey("Year", "AvNr", "MgNr")] | ||||||
|     public class PaymentMember { |     public class PaymentMember { | ||||||
|         [Column("year")] |         [Column("year")] | ||||||
|         public int Year { get; set; } |         public int Year { get; set; } | ||||||
| @@ -16,9 +16,6 @@ namespace Elwig.Models { | |||||||
|         [Column("amount")] |         [Column("amount")] | ||||||
|         public long AmountValue { get; set; } |         public long AmountValue { get; set; } | ||||||
|  |  | ||||||
|         [Column("tgnr")] |  | ||||||
|         public int? TgNr { get; set; } |  | ||||||
|  |  | ||||||
|         [NotMapped] |         [NotMapped] | ||||||
|         public decimal Amount { |         public decimal Amount { | ||||||
|             get => Variant.Season.DecFromDb(AmountValue); |             get => Variant.Season.DecFromDb(AmountValue); | ||||||
| @@ -30,5 +27,8 @@ namespace Elwig.Models { | |||||||
|  |  | ||||||
|         [ForeignKey("MgNr")] |         [ForeignKey("MgNr")] | ||||||
|         public virtual Member Member { get; private set; } |         public virtual Member Member { get; private set; } | ||||||
|  |  | ||||||
|  |         [InverseProperty("Payment")] | ||||||
|  |         public virtual Credit? Credit { get; private set; } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ using Microsoft.EntityFrameworkCore; | |||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using System.ComponentModel.DataAnnotations.Schema; | using System.ComponentModel.DataAnnotations.Schema; | ||||||
|  | using System.Linq; | ||||||
|  |  | ||||||
| namespace Elwig.Models { | namespace Elwig.Models { | ||||||
|     [Table("payment_variant"), PrimaryKey("Year", "AvNr")] |     [Table("payment_variant"), PrimaryKey("Year", "AvNr")] | ||||||
| @@ -66,6 +67,10 @@ namespace Elwig.Models { | |||||||
|         [Column("bucket_9_name")] |         [Column("bucket_9_name")] | ||||||
|         public string? Bucket9Name { get; set; } |         public string? Bucket9Name { get; set; } | ||||||
|  |  | ||||||
|  |         [NotMapped] | ||||||
|  |         public string[] BucketNames => (new string?[] { Bucket1Name, Bucket2Name, Bucket3Name, Bucket4Name, Bucket5Name, Bucket6Name, Bucket7Name, Bucket8Name, Bucket9Name }) | ||||||
|  | 			.Where(n => n != null).Select(n => n ?? "").ToArray(); | ||||||
|  |  | ||||||
|         [Column("comment")] |         [Column("comment")] | ||||||
|         public string? Comment { get; set; } |         public string? Comment { get; set; } | ||||||
|  |  | ||||||
| @@ -77,5 +82,8 @@ namespace Elwig.Models { | |||||||
|  |  | ||||||
|         [InverseProperty("Variant")] |         [InverseProperty("Variant")] | ||||||
|         public virtual ISet<PaymentMember> MemberPayments { get; private set; } |         public virtual ISet<PaymentMember> MemberPayments { get; private set; } | ||||||
|  |  | ||||||
|  |         [InverseProperty("Variant")] | ||||||
|  |         public virtual ISet<Credit> Credits { get; private set; } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -82,6 +82,14 @@ namespace Elwig.Windows { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void OnClosing(object? sender, CancelEventArgs evt) { |         private void OnClosing(object? sender, CancelEventArgs evt) { | ||||||
|  |             if ((IsCreating || IsEditing) && HasChanged) { | ||||||
|  |                 var r = System.Windows.MessageBox.Show("Soll das Fenster wirklich geschlossen werden?", "Schlie<69>en best<73>tigen", | ||||||
|  |                     MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); | ||||||
|  |                 if (r != MessageBoxResult.Yes) { | ||||||
|  |                     evt.Cancel = true; | ||||||
|  |                     return; | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|             IsClosing = true; |             IsClosing = true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -293,12 +301,20 @@ namespace Elwig.Windows { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         protected bool HasChanged => |         protected bool HasChanged => | ||||||
|  |             IsEditing && ( | ||||||
|                 !IsValid || |                 !IsValid || | ||||||
|                 TextBoxInputs.Any(InputHasChanged) || |                 TextBoxInputs.Any(InputHasChanged) || | ||||||
|                 ComboBoxInputs.Any(InputHasChanged) || |                 ComboBoxInputs.Any(InputHasChanged) || | ||||||
|                 CheckComboBoxInputs.Any(InputHasChanged) || |                 CheckComboBoxInputs.Any(InputHasChanged) || | ||||||
|                 CheckBoxInputs.Any(InputHasChanged) || |                 CheckBoxInputs.Any(InputHasChanged) || | ||||||
|             RadioButtonInputs.Any(InputHasChanged); |                 RadioButtonInputs.Any(InputHasChanged) | ||||||
|  |             ) || IsCreating && ( | ||||||
|  |                 TextBoxInputs.Any(i => InputIsNotDefault(i) || (!i.IsReadOnly && i.Text != "")) || | ||||||
|  |                 ComboBoxInputs.Any(i => InputIsNotDefault(i) || (i.IsEnabled && i.SelectedItem != null)) || | ||||||
|  |                 CheckComboBoxInputs.Any(i => InputIsNotDefault(i) || i.SelectedItem != null) || | ||||||
|  |                 CheckBoxInputs.Any(InputIsNotDefault) || | ||||||
|  |                 RadioButtonInputs.Any(InputIsNotDefault) | ||||||
|  |             ); | ||||||
|  |  | ||||||
|         protected void UpdatePlz(TextBox plzInput, ComboBox ortInput) { |         protected void UpdatePlz(TextBox plzInput, ComboBox ortInput) { | ||||||
|             var plzInputValid = GetInputValid(plzInput); |             var plzInputValid = GetInputValid(plzInput); | ||||||
|   | |||||||
| @@ -179,8 +179,8 @@ namespace Elwig.Windows { | |||||||
|             bool ch = HasChanged, v = IsValid; |             bool ch = HasChanged, v = IsValid; | ||||||
|             ResetButton.IsEnabled = ch; |             ResetButton.IsEnabled = ch; | ||||||
|             SaveButton.IsEnabled = v && ch; |             SaveButton.IsEnabled = v && ch; | ||||||
|             FinishButton.IsEnabled = v || !ch; |             FinishButton.IsEnabled = v && ch; | ||||||
|             NewDeliveryPartButton.IsEnabled = v; |             NewDeliveryPartButton.IsEnabled = v && ch; | ||||||
|             CancelCreatingButton.IsEnabled = DeliveryList.SelectedItem == null || DeliveryPartList.SelectedItem == null; |             CancelCreatingButton.IsEnabled = DeliveryList.SelectedItem == null || DeliveryPartList.SelectedItem == null; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -331,7 +331,7 @@ namespace Elwig.Windows { | |||||||
|                     .ToList(); |                     .ToList(); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             ControlUtils.RenewItemsSource(DeliveryList, deliveries, d => ((d as Delivery)?.Year, (d as Delivery)?.DId), DeliveryList_SelectionChanged, ControlUtils.RenewSourceDefault.IfOnly, !updateSort); |             ControlUtils.RenewItemsSource(DeliveryList, deliveries, d => ((d as Delivery)?.Year, (d as Delivery)?.DId), DeliveryList_SelectionChanged, IsCreating ? ControlUtils.RenewSourceDefault.None : ControlUtils.RenewSourceDefault.IfOnly, !updateSort); | ||||||
|  |  | ||||||
|             var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList(); |             var members = deliveries.Select(d => d.Member).DistinctBy(m => m.MgNr).ToList(); | ||||||
|             StatusMembers.Text = $"Mitglieder: {members.Count}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : ""); |             StatusMembers.Text = $"Mitglieder: {members.Count}" + (members.Count > 0 && members.Count <= 4 ? $" ({string.Join(", ", members.Select(m => m.AdministrativeName))})" : ""); | ||||||
| @@ -423,10 +423,11 @@ namespace Elwig.Windows { | |||||||
|                 Menu_Export_Bki.Items.Add(i); |                 Menu_Export_Bki.Items.Add(i); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             // FIXME on "only one" delivery, RenewContext doees not work | ||||||
|             await RefreshDeliveryList(); |             await RefreshDeliveryList(); | ||||||
|             var d = DeliveryList.SelectedItem as Delivery; |             var d = DeliveryList.SelectedItem as Delivery; | ||||||
|             var y = d?.Year ?? Utils.CurrentLastSeason; |             var y = d?.Year ?? Utils.CurrentLastSeason; | ||||||
|             ControlUtils.RenewItemsSource(MemberInput, await Context.Members.Where(m => m.IsActive || !IsReceipt).OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToListAsync(), i => (i as Member)?.MgNr); |             ControlUtils.RenewItemsSource(MemberInput, await Context.Members.Where(m => m.IsActive || !IsCreating).OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToListAsync(), i => (i as Member)?.MgNr); | ||||||
|             ControlUtils.RenewItemsSource(BranchInput, await Context.Branches.OrderBy(b => b.Name).ToListAsync(), i => (i as Branch)?.ZwstId); |             ControlUtils.RenewItemsSource(BranchInput, await Context.Branches.OrderBy(b => b.Name).ToListAsync(), i => (i as Branch)?.ZwstId); | ||||||
|             ControlUtils.RenewItemsSource(WineVarietyInput, await Context.WineVarieties.OrderBy(v => v.Name).ToListAsync(), i => (i as WineVar)?.SortId); |             ControlUtils.RenewItemsSource(WineVarietyInput, await Context.WineVarieties.OrderBy(v => v.Name).ToListAsync(), i => (i as WineVar)?.SortId); | ||||||
|             ControlUtils.RenewItemsSource(AttributesInput, await Context.WineAttributes.Where(a => IsCreating || a.IsActive).OrderBy(a => a.Name).ToListAsync(), i => (i as WineAttr)?.AttrId); |             ControlUtils.RenewItemsSource(AttributesInput, await Context.WineAttributes.Where(a => IsCreating || a.IsActive).OrderBy(a => a.Name).ToListAsync(), i => (i as WineAttr)?.AttrId); | ||||||
| @@ -729,7 +730,7 @@ namespace Elwig.Windows { | |||||||
|             MemberInput.SelectedItem = valid ? Context.Members.Find(int.Parse(MgNrInput.Text)) : null; |             MemberInput.SelectedItem = valid ? Context.Members.Find(int.Parse(MgNrInput.Text)) : null; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void MemberInput_SelectionChanged(object sender, SelectionChangedEventArgs evt) { |         private void MemberInput_SelectionChanged(object? sender, SelectionChangedEventArgs? evt) { | ||||||
|             var m = MemberInput.SelectedItem as Member; |             var m = MemberInput.SelectedItem as Member; | ||||||
|             if (m != null) MgNrInput.Text = m.MgNr.ToString(); |             if (m != null) MgNrInput.Text = m.MgNr.ToString(); | ||||||
|             MemberAddressField.Text = m?.FullAddress; |             MemberAddressField.Text = m?.FullAddress; | ||||||
| @@ -753,6 +754,7 @@ namespace Elwig.Windows { | |||||||
|             NewDeliveryPartButton.Cursor = null; |             NewDeliveryPartButton.Cursor = null; | ||||||
|             DeliveryList.SelectedItem = p?.Delivery; |             DeliveryList.SelectedItem = p?.Delivery; | ||||||
|             DeliveryPartList.SelectedItem = null; |             DeliveryPartList.SelectedItem = null; | ||||||
|  |             RefreshInputs(); | ||||||
|             InitialInputs(); |             InitialInputs(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -768,16 +770,23 @@ namespace Elwig.Windows { | |||||||
|                 Mouse.OverrideCursor = Cursors.Wait; |                 Mouse.OverrideCursor = Cursors.Wait; | ||||||
|                 using var doc = new DeliveryNote(p.Delivery, Context); |                 using var doc = new DeliveryNote(p.Delivery, Context); | ||||||
|                 await doc.Generate(); |                 await doc.Generate(); | ||||||
|                 Mouse.OverrideCursor = Cursors.Wait; |                 Mouse.OverrideCursor = null; | ||||||
|                 doc.Show(); |                 doc.Show(); | ||||||
|                 //await doc.Print(2); |                 //await doc.Print(2); | ||||||
|             } |             } | ||||||
|             FinishButton.Cursor = null; |             FinishButton.Cursor = null; | ||||||
|             DeliveryList.SelectedItem = null; |             DeliveryList.SelectedItem = null; | ||||||
|  |             RefreshInputs(); | ||||||
|             InitInputs(); |             InitInputs(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private async void CancelCreatingButton_Click(object sender, RoutedEventArgs evt) { |         private async void CancelCreatingButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|  |             if (IsCreating && HasChanged) { | ||||||
|  |                 var r = MessageBox.Show("Soll der Vorgang wirklich abgebrochen werden?", "Abbrechen bestätigen", | ||||||
|  |                     MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No); | ||||||
|  |                 if (r != MessageBoxResult.Yes) return; | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ControlUtils.RenewItemsSource(AttributesInput, await Context.WineAttributes.OrderBy(a => a.Name).ToListAsync(), i => (i as WineAttr)?.AttrId); |             ControlUtils.RenewItemsSource(AttributesInput, await Context.WineAttributes.OrderBy(a => a.Name).ToListAsync(), i => (i as WineAttr)?.AttrId); | ||||||
|             ControlUtils.RenewItemsSource(MemberInput, await Context.Members.Where(m => m.IsActive || !IsReceipt).OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToListAsync(), i => (i as Member)?.MgNr); |             ControlUtils.RenewItemsSource(MemberInput, await Context.Members.Where(m => m.IsActive || !IsReceipt).OrderBy(m => m.FamilyName).ThenBy(m => m.GivenName).ToListAsync(), i => (i as Member)?.MgNr); | ||||||
|             if (DeliveryList.SelectedItem is not Delivery d) { |             if (DeliveryList.SelectedItem is not Delivery d) { | ||||||
| @@ -1093,8 +1102,8 @@ namespace Elwig.Windows { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void ShowFinishNewPartDeliveryCancelButtons() { |         private void ShowFinishNewPartDeliveryCancelButtons() { | ||||||
|             FinishButton.IsEnabled = IsCreating && IsValid; |             FinishButton.IsEnabled = false; | ||||||
|             NewDeliveryPartButton.IsEnabled = IsCreating && IsValid; |             NewDeliveryPartButton.IsEnabled = false; | ||||||
|             CancelCreatingButton.IsEnabled = true; |             CancelCreatingButton.IsEnabled = true; | ||||||
|             FinishButton.Visibility = Visibility.Visible; |             FinishButton.Visibility = Visibility.Visible; | ||||||
|             NewDeliveryPartButton.Visibility = Visibility.Visible; |             NewDeliveryPartButton.Visibility = Visibility.Visible; | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ | |||||||
|                 <MenuItem Header="Über"/> |                 <MenuItem Header="Über"/> | ||||||
|             </MenuItem> |             </MenuItem> | ||||||
|         </Menu> |         </Menu> | ||||||
|         <Grid Height="100" VerticalAlignment="Top" Margin="0,25,0,0"> |         <Grid Height="100" VerticalAlignment="Top" Margin="25,25,0,0"> | ||||||
|             <Grid.ColumnDefinitions> |             <Grid.ColumnDefinitions> | ||||||
|                 <ColumnDefinition Width="100"/> |                 <ColumnDefinition Width="100"/> | ||||||
|                 <ColumnDefinition Width="*"/> |                 <ColumnDefinition Width="*"/> | ||||||
| @@ -40,24 +40,18 @@ | |||||||
|  |  | ||||||
|         <Button x:Name="MemberAdminButton" Content="Mitglieder" Click="MemberAdminButton_Click" |         <Button x:Name="MemberAdminButton" Content="Mitglieder" Click="MemberAdminButton_Click" | ||||||
|                 Margin="50,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="50,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|         <Button x:Name="MemberListButton" Content="Mitgliederliste" Click="MemberListButton_Click" |  | ||||||
|                 Margin="50,200,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |  | ||||||
|         <Button x:Name="ReceiptButton" Content="Übernahme" Click="ReceiptButton_Click" |         <Button x:Name="ReceiptButton" Content="Übernahme" Click="ReceiptButton_Click" | ||||||
|                 Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="50,200,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|         <Button x:Name="DeliveryAdminButton" Content="Lieferungen" Click="DeliveryAdminButton_Click" |         <Button x:Name="DeliveryAdminButton" Content="Lieferungen" Click="DeliveryAdminButton_Click" | ||||||
|  |                 Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|  |         <Button x:Name="PaymentWindowButton" Content="Auszahlung" Click="PaymentWindowButton_Click" | ||||||
|                 Margin="50,280,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="50,280,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|         <Button x:Name="DeliveryListButton" Content="Lieferungungen" Click="DeliveryListButton_Click" IsEnabled="False" |         <Button x:Name="BaseDataButton" Content="Stammdaten" Click="BaseDataButton_Click" | ||||||
|                 Margin="50,320,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="50,320,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|  |  | ||||||
|         <Button x:Name="BaseDataButton" Content="Stammdaten" Click="BaseDataButton_Click" |  | ||||||
|                 Margin="260,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |  | ||||||
|         <Button x:Name="PdfButton" Content="PDF Erzeugen" Click="PdfButton_Click" Tag="Print" |  | ||||||
|                 Margin="260,200,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |  | ||||||
|         <Button x:Name="TestWindowButton" Content="Test Fenster" Click="TestWindowButton_Click" |         <Button x:Name="TestWindowButton" Content="Test Fenster" Click="TestWindowButton_Click" | ||||||
|                 Margin="260,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |  | ||||||
|         <Button x:Name="QueryWindowButton" Content="Datenbankabfragen" Click="QueryWindowButton_Click" |  | ||||||
|                 Margin="260,280,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="260,280,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|         <Button x:Name="PaymentWindowButton" Content="Auszahlung" Click="PaymentWindowButton_Click" |         <Button x:Name="QueryWindowButton" Content="Datenbankabfragen" Click="QueryWindowButton_Click" | ||||||
|                 Margin="260,320,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="260,320,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|     </Grid> |     </Grid> | ||||||
| </Window> | </Window> | ||||||
|   | |||||||
| @@ -1,9 +1,4 @@ | |||||||
| using System.Linq; |  | ||||||
| using System.Windows; | using System.Windows; | ||||||
| using System.Windows.Input; |  | ||||||
| using Elwig.Documents; |  | ||||||
| using Elwig.Helpers; |  | ||||||
| using Microsoft.EntityFrameworkCore; |  | ||||||
|  |  | ||||||
| namespace Elwig.Windows { | namespace Elwig.Windows { | ||||||
|     public partial class MainWindow : Window { |     public partial class MainWindow : Window { | ||||||
| @@ -12,9 +7,7 @@ namespace Elwig.Windows { | |||||||
|             InitializeComponent(); |             InitializeComponent(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void Window_Loaded(object sender, RoutedEventArgs evt) { |         private void Window_Loaded(object sender, RoutedEventArgs evt) { } | ||||||
|             PdfButton.IsEnabled = App.IsPrintingReady; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         private void MemberAdminButton_Click(object sender, RoutedEventArgs evt) { |         private void MemberAdminButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|             var w = new MemberAdminWindow(); |             var w = new MemberAdminWindow(); | ||||||
| @@ -40,15 +33,6 @@ namespace Elwig.Windows { | |||||||
|             // TODO |             // TODO | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private async void PdfButton_Click(object sender, RoutedEventArgs evt) { |  | ||||||
|             Mouse.OverrideCursor = Cursors.Wait; |  | ||||||
|             using var ctx = new AppDbContext(); |  | ||||||
|             using var doc = new DeliveryNote(await ctx.Deliveries.OrderBy(d => d.Parts.Count).ThenBy(d => d.Year).ThenBy(d => d.DId).LastAsync(), ctx); |  | ||||||
|             await doc.Generate(); |  | ||||||
|             doc.Show(); |  | ||||||
|             Mouse.OverrideCursor = null; |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         private void TestWindowButton_Click(object sender, RoutedEventArgs evt) { |         private void TestWindowButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|             var w = new TestWindow(); |             var w = new TestWindow(); | ||||||
|             w.Show(); |             w.Show(); | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
|         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" |         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" | ||||||
|         xmlns:local="clr-namespace:Elwig.Windows" |         xmlns:local="clr-namespace:Elwig.Windows" | ||||||
|         xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" |         xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" | ||||||
|         Title="Test Fenster - Elwig" MinHeight="400" MinWidth="325" Height="450" Width="800" ResizeMode="CanResize"> |         Title="Test Fenster - Elwig" MinHeight="400" MinWidth="325" Height="450" Width="800" ResizeMode="CanResize" Loaded="Window_Loaded"> | ||||||
|     <Grid> |     <Grid> | ||||||
|         <xctk:CheckComboBox x:Name="MyComboBox" HorizontalAlignment="Left" Margin="216,186,0,0" VerticalAlignment="Top" Delimiter=", " |         <xctk:CheckComboBox x:Name="MyComboBox" HorizontalAlignment="Left" Margin="216,186,0,0" VerticalAlignment="Top" Delimiter=", " | ||||||
|                             SelectedValue="{Binding SelectedValue}" |                             SelectedValue="{Binding SelectedValue}" | ||||||
| @@ -18,5 +18,10 @@ | |||||||
|         <TextBlock x:Name="Output" Height="20" Width="200" Margin="470,329,0,0"  HorizontalAlignment="Left" VerticalAlignment="Top"/> |         <TextBlock x:Name="Output" Height="20" Width="200" Margin="470,329,0,0"  HorizontalAlignment="Left" VerticalAlignment="Top"/> | ||||||
|         <Button x:Name="ChartButton" Content="Chart" Click="ChartButton_Click" |         <Button x:Name="ChartButton" Content="Chart" Click="ChartButton_Click" | ||||||
|                 Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> |                 Margin="50,240,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|  |  | ||||||
|  |         <Button x:Name="PdfDeliveryButton" Content="Lieferschein Erzeugen" Click="PdfDeliveryButton_Click" Tag="Print" | ||||||
|  |                 Margin="260,190,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|  |         <Button x:Name="PdfCreditButton" Content="Gutschrift Erzeugen" Click="PdfCreditButton_Click" Tag="Print" | ||||||
|  |                 Margin="260,160,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/> | ||||||
|     </Grid> |     </Grid> | ||||||
| </Window> | </Window> | ||||||
|   | |||||||
| @@ -1,16 +1,26 @@ | |||||||
|  | using Elwig.Documents; | ||||||
|  | using Elwig.Helpers; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
| using System; | using System; | ||||||
| using System.Linq; | using System.Linq; | ||||||
| using System.Windows; | using System.Windows; | ||||||
|  | using System.Windows.Input; | ||||||
| using Xceed.Wpf.Toolkit.Primitives; | using Xceed.Wpf.Toolkit.Primitives; | ||||||
|  |  | ||||||
| namespace Elwig.Windows { | namespace Elwig.Windows { | ||||||
|     public partial class TestWindow : Window { |     public partial class TestWindow : Window { | ||||||
|  |  | ||||||
|         public TestWindow() { |         public TestWindow() { | ||||||
|             InitializeComponent(); |             InitializeComponent(); | ||||||
|             MyComboBox.ItemsSource = new string[] { "Klasse A" , "Klasse B", "Klasse C", "Klasse D", "Klasse E", "Klasse F" }; |             MyComboBox.ItemsSource = new string[] { "Klasse A" , "Klasse B", "Klasse C", "Klasse D", "Klasse E", "Klasse F" }; | ||||||
|             MyListBox.ItemsSource = new string[] { "Test 1", "Test 2", "Test 3", "Test 4" }; |             MyListBox.ItemsSource = new string[] { "Test 1", "Test 2", "Test 3", "Test 4" }; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         private void Window_Loaded(object sender, RoutedEventArgs evt) { | ||||||
|  |             PdfDeliveryButton.IsEnabled = App.IsPrintingReady; | ||||||
|  |             PdfCreditButton.IsEnabled = App.IsPrintingReady; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         private void OnItemSelectionChanged(object sender, ItemSelectionChangedEventArgs e) { |         private void OnItemSelectionChanged(object sender, ItemSelectionChangedEventArgs e) { | ||||||
|             MyText.Text = string.Join(", ", MyComboBox.SelectedItems.Cast<string>()); |             MyText.Text = string.Join(", ", MyComboBox.SelectedItems.Cast<string>()); | ||||||
|         } |         } | ||||||
| @@ -39,5 +49,23 @@ namespace Elwig.Windows { | |||||||
|             var w = new ChartWindow(); |             var w = new ChartWindow(); | ||||||
|             w.Show(); |             w.Show(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         private async void PdfDeliveryButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|  |             Mouse.OverrideCursor = Cursors.Wait; | ||||||
|  |             using var ctx = new AppDbContext(); | ||||||
|  |             using var doc = new DeliveryNote(await ctx.Deliveries.OrderBy(d => d.Parts.Count).ThenBy(d => d.Year).ThenBy(d => d.DId).LastAsync(), ctx); | ||||||
|  |             await doc.Generate(); | ||||||
|  |             doc.Show(); | ||||||
|  |             Mouse.OverrideCursor = null; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         private async void PdfCreditButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|  |             Mouse.OverrideCursor = Cursors.Wait; | ||||||
|  |             using var ctx = new AppDbContext(); | ||||||
|  |             using var doc = new CreditNote(await ctx.Credits.FirstAsync(), ctx); | ||||||
|  |             await doc.Generate(); | ||||||
|  |             doc.Show(); | ||||||
|  |             Mouse.OverrideCursor = null; | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,12 +0,0 @@ | |||||||
| <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"> |  | ||||||
| 	<Fragment> |  | ||||||
| 		<ComponentGroup Id="DocumentTemplateComponents" Directory="ConfigFolderResources"> |  | ||||||
| 			<Component> |  | ||||||
| 				<File Source="$(TargetDir)\paged.polyfill.js" /> |  | ||||||
| 			</Component> |  | ||||||
| 			<Component> |  | ||||||
| 				<File Source="$(var.ElwigProjectDir)\Documents\style.css" /> |  | ||||||
| 			</Component> |  | ||||||
| 		</ComponentGroup> |  | ||||||
| 	</Fragment> |  | ||||||
| </Wix> |  | ||||||
| @@ -23,10 +23,10 @@ | |||||||
|     --> |     --> | ||||||
| 	<xsl:key | 	<xsl:key | ||||||
|         name="FileToRemove" |         name="FileToRemove" | ||||||
|         match="wix:Component[ substring( wix:File/@Source, string-length( wix:File/@Source ) - 6 ) != '.cshtml' ]" |         match="wix:Component[ substring( wix:File/@Source, string-length( wix:File/@Source ) - 2 ) = '.cs' ]" | ||||||
|         use="@Id" |         use="@Id" | ||||||
|     /> |     /> | ||||||
| 	<!-- Get the last 4 characters of a string using `substring( s, len(s) - 3 )`, it uses -3 and not -4 because XSLT uses 1-based indexes, not 0-based indexes. --> | 	<!-- Get the last 3 characters of a string using `substring( s, len(s) - 2 )`, it uses -2 and not -3 because XSLT uses 1-based indexes, not 0-based indexes. --> | ||||||
| 
 | 
 | ||||||
| 	<!-- By default, copy all elements and nodes into the output... --> | 	<!-- By default, copy all elements and nodes into the output... --> | ||||||
| 	<xsl:template match="@*|node()"> | 	<xsl:template match="@*|node()"> | ||||||
| @@ -25,14 +25,13 @@ | |||||||
|     </Task> |     </Task> | ||||||
|   </UsingTask> |   </UsingTask> | ||||||
|   <Target Name="CustomBeforeBuild" BeforeTargets="BeforeBuild"> |   <Target Name="CustomBeforeBuild" BeforeTargets="BeforeBuild"> | ||||||
|     <Exec Command="curl -s -L "https://unpkg.com/pagedjs/dist/paged.polyfill.js" -o "$(TargetDir)paged.polyfill.js"" /> |  | ||||||
|     <Exec Command="curl -s "http://www.columbia.edu/~em36/PDFtoPrinter.exe" -z "$(TargetDir)PDFtoPrinter.exe" -o "$(TargetDir)PDFtoPrinter.exe"" /> |     <Exec Command="curl -s "http://www.columbia.edu/~em36/PDFtoPrinter.exe" -z "$(TargetDir)PDFtoPrinter.exe" -o "$(TargetDir)PDFtoPrinter.exe"" /> | ||||||
|     <Exec Command="dotnet publish "$(SolutionDir)Elwig\Elwig.csproj" "/p:PublishProfile=$(SolutionDir)\Elwig\Properties\PublishProfiles\FolderProfile.pubxml"" /> |     <Exec Command="dotnet publish "$(SolutionDir)Elwig\Elwig.csproj" "/p:PublishProfile=$(SolutionDir)\Elwig\Properties\PublishProfiles\FolderProfile.pubxml"" /> | ||||||
|     <GetFileVersion AssemblyPath="..\Elwig\bin\Publish\Elwig.exe"> |     <GetFileVersion AssemblyPath="..\Elwig\bin\Publish\Elwig.exe"> | ||||||
|       <Output TaskParameter="Version" PropertyName="ElwigFileVersion" /> |       <Output TaskParameter="Version" PropertyName="ElwigFileVersion" /> | ||||||
|     </GetFileVersion> |     </GetFileVersion> | ||||||
|     <PropertyGroup> |     <PropertyGroup> | ||||||
|       <DefineConstants>ProductVersion=$(ElwigFileVersion);BuildPath=..\Elwig\bin\Publish;DocumentTemplatesPath=..\Elwig\Documents;ElwigProjectDir=..\Elwig</DefineConstants> |       <DefineConstants>ProductVersion=$(ElwigFileVersion);BuildPath=..\Elwig\bin\Publish;DocumentPath=..\Elwig\Documents;ElwigProjectDir=..\Elwig</DefineConstants> | ||||||
|     </PropertyGroup> |     </PropertyGroup> | ||||||
|   </Target> |   </Target> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
| @@ -50,13 +49,13 @@ | |||||||
|       <ComponentGroupName>DocumentTemplates</ComponentGroupName> |       <ComponentGroupName>DocumentTemplates</ComponentGroupName> | ||||||
|       <DirectoryRefId>ConfigFolderResources</DirectoryRefId> |       <DirectoryRefId>ConfigFolderResources</DirectoryRefId> | ||||||
|       <SuppressRootDirectory>true</SuppressRootDirectory> |       <SuppressRootDirectory>true</SuppressRootDirectory> | ||||||
|       <PreprocessorVariable>DocumentTemplatesPath</PreprocessorVariable> |       <PreprocessorVariable>DocumentPath</PreprocessorVariable> | ||||||
|       <Transforms>DocumentTemplatesTransform.xslt</Transforms> |       <Transforms>DocumentTransform.xslt</Transforms> | ||||||
|     </HarvestDirectory> |     </HarvestDirectory> | ||||||
|     <BindPath BindName="DocumentTemplateBindPath" Include="../Elwig/Documents" /> |     <BindPath BindName="DocumentTemplateBindPath" Include="../Elwig/Documents" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <None Include="DocumentTemplatesTransform.xslt" /> |     <None Include="DocumentTransform.xslt" /> | ||||||
|     <None Include="BuildFilesTransform.xslt" /> |     <None Include="BuildFilesTransform.xslt" /> | ||||||
|     <None Include="Files\config.ini" /> |     <None Include="Files\config.ini" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   | |||||||
| @@ -11,7 +11,6 @@ | |||||||
|       <ComponentGroupRef Id="MainComponents"/> |       <ComponentGroupRef Id="MainComponents"/> | ||||||
|       <ComponentGroupRef Id="BuildFiles"/> |       <ComponentGroupRef Id="BuildFiles"/> | ||||||
|       <ComponentGroupRef Id="DocumentTemplates"/> |       <ComponentGroupRef Id="DocumentTemplates"/> | ||||||
|       <ComponentGroupRef Id="DocumentTemplateComponents"/> |  | ||||||
|     </Feature> |     </Feature> | ||||||
|   </Package> |   </Package> | ||||||
| </Wix> | </Wix> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user