Compare commits
	
		
			8 Commits
		
	
	
		
			v0.2.0
			...
			ba691f4d17
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ba691f4d17 | |||
| 470f092482 | |||
| e9e4c75edd | |||
| ff1a4e7182 | |||
| 1e9cad6de7 | |||
| 62fe087598 | |||
| 7f01b85878 | |||
| a659d07db2 | 
| @@ -9,19 +9,16 @@ namespace Elwig.Dialogs { | |||||||
|         public int Weight = 0; |         public int Weight = 0; | ||||||
|         public string? Reason = null; |         public string? Reason = null; | ||||||
|  |  | ||||||
|         public ManualWeighingDialog() { |         public ManualWeighingDialog(string? reason = null) { | ||||||
|             InitializeComponent(); |             InitializeComponent(); | ||||||
|  |             ReasonInput.Text = reason; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void ConfirmButton_Click(object sender, RoutedEventArgs evt) { |         private void ConfirmButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|             DialogResult = true; |             DialogResult = true; | ||||||
|             Weight = int.Parse(WeightInput.Text); |             Weight = int.Parse(WeightInput.Text); | ||||||
|             Reason = Regex.Replace(ReasonInput.Text, @"\s+", "").Trim(); |             Reason = Regex.Replace(ReasonInput.Text, @"\s+", " ").Trim(); | ||||||
|             if (Reason == "") { |             if (Reason == "") Reason = null; | ||||||
|                 Reason = null; |  | ||||||
|             } else if (!Reason.EndsWith(".") || !Reason.EndsWith("!") || !Reason.EndsWith("?")) { |  | ||||||
|                 Reason += "."; |  | ||||||
|             } |  | ||||||
|             Close(); |             Close(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -14,5 +14,8 @@ | |||||||
|         <address>@Model.Address</address> |         <address>@Model.Address</address> | ||||||
|     </div> |     </div> | ||||||
|     <aside>@Raw(Model.Aside)</aside> |     <aside>@Raw(Model.Aside)</aside> | ||||||
|  |     @if (Model.ShowDateAndLocation) { | ||||||
|  |         <div class="date">@Model.Location, am @($"{Model.Date:dd.MM.yyyy}")</div> | ||||||
|  |     } | ||||||
| </div> | </div> | ||||||
| @RenderBody() | @RenderBody() | ||||||
|   | |||||||
| @@ -3,6 +3,8 @@ using Elwig.Models; | |||||||
| namespace Elwig.Documents { | namespace Elwig.Documents { | ||||||
|     public abstract class BusinessDocument : Document { |     public abstract class BusinessDocument : Document { | ||||||
|  |  | ||||||
|  |         public bool ShowDateAndLocation = false; | ||||||
|  |  | ||||||
|         public Member Member; |         public Member Member; | ||||||
|         public bool IncludeSender = false; |         public bool IncludeSender = false; | ||||||
|         public bool UseBillingAddress = false; |         public bool UseBillingAddress = false; | ||||||
|   | |||||||
| @@ -7,7 +7,6 @@ | |||||||
|     var bucketNum = Model.BucketNames.Length; |     var bucketNum = Model.BucketNames.Length; | ||||||
| } | } | ||||||
| <main> | <main> | ||||||
|     <div class="date">@Model.Location, am @($"{Model.Date:dd.MM.yyyy}")</div> |  | ||||||
|     <h1>@Model.Title</h1> |     <h1>@Model.Title</h1> | ||||||
|     <table class="credit"> |     <table class="credit"> | ||||||
|         <colgroup> |         <colgroup> | ||||||
|   | |||||||
| @@ -16,6 +16,7 @@ namespace Elwig.Documents { | |||||||
|  |  | ||||||
|         public CreditNote(Credit c, AppDbContext ctx) : base($"Traubengutschrift Nr. {c.TgId} – {c.Payment.Variant.Name}", c.Member) { |         public CreditNote(Credit c, AppDbContext ctx) : base($"Traubengutschrift Nr. {c.TgId} – {c.Payment.Variant.Name}", c.Member) { | ||||||
|             UseBillingAddress = true; |             UseBillingAddress = true; | ||||||
|  |             ShowDateAndLocation = true; | ||||||
|             Credit = c; |             Credit = c; | ||||||
|             Aside = Aside.Replace("</table>", "") + |             Aside = Aside.Replace("</table>", "") + | ||||||
|                 $"<thead><tr><th colspan='2'>Gutschrift</th></tr></thead><tbody>" + |                 $"<thead><tr><th colspan='2'>Gutschrift</th></tr></thead><tbody>" + | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ | |||||||
| @{ Layout = "BusinessDocument"; } | @{ Layout = "BusinessDocument"; } | ||||||
| <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-deliverynote.css" /> | <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-deliverynote.css" /> | ||||||
| <main> | <main> | ||||||
| <div class="date">@Model.Location, am @($"{Model.Date:dd.MM.yyyy}")</div> |  | ||||||
| <h1>@Model.Title</h1> | <h1>@Model.Title</h1> | ||||||
| @{ | @{ | ||||||
|     bool displayStats = true;  // Model.Delivery.Year == Model.CurrentNextSeason |     bool displayStats = true;  // Model.Delivery.Year == Model.CurrentNextSeason | ||||||
| @@ -127,7 +126,7 @@ | |||||||
|             </colgroup> |             </colgroup> | ||||||
|             <thead> |             <thead> | ||||||
|                 <tr> |                 <tr> | ||||||
|                     <th><b>Gesamtlieferung</b> [kg]</th> |                     <th><b>Lese @Model.Delivery.Year</b> per @($"{Model.Date:dd.MM.yyyy}") [kg]</th> | ||||||
|                     <th>Lieferpflicht</th> |                     <th>Lieferpflicht</th> | ||||||
|                     <th>Lieferrecht</th> |                     <th>Lieferrecht</th> | ||||||
|                     <th>Unterliefert</th> |                     <th>Unterliefert</th> | ||||||
| @@ -147,13 +146,14 @@ | |||||||
|                             $"<td>{sum:N0}</td>"; |                             $"<td>{sum:N0}</td>"; | ||||||
|                     } |                     } | ||||||
|                     var sortids = Model.Delivery.Parts.Select(p => p.SortId).ToList(); |                     var sortids = Model.Delivery.Parts.Select(p => p.SortId).ToList(); | ||||||
|  |                     var buckets = Model.MemberBuckets.GroupBy(b => b.Item1[..2]).ToDictionary(g => g.Key, g => g.Count()); | ||||||
|                 } |                 } | ||||||
|                 <tr> |                 <tr> | ||||||
|                     <th>Geschäftsanteile</th> |                     <th>Gesamtlieferung</th> | ||||||
|                     @Raw(FormatRow(Model.Member.DeliveryObligation, Model.Member.DeliveryRight, Model.Member.Deliveries.Where(d => d.Year == Model.Delivery.Year).Sum(d => d.Weight))) |                     @Raw(FormatRow(Model.Member.DeliveryObligation, Model.Member.DeliveryRight, Model.Member.Deliveries.Where(d => d.Year == Model.Delivery.Year).Sum(d => d.Weight))) | ||||||
|                 </tr> |                 </tr> | ||||||
|                 @foreach (var (id, name, right, obligation, sum) in Model.MemberBuckets.OrderBy(b => b.Item1)) { |                 @foreach (var (id, name, right, obligation, sum) in Model.MemberBuckets.OrderBy(b => b.Item1)) { | ||||||
|                     if (right > 0 && obligation > 0) { |                     if (right > 0 || obligation > 0 || (sum > 0 && buckets[id[..2]] > 1)) { | ||||||
|                         <tr class="@(sortids.Contains(id[..2]) ? "" : "optional")"> |                         <tr class="@(sortids.Contains(id[..2]) ? "" : "optional")"> | ||||||
|                             <th>@name</th> |                             <th>@name</th> | ||||||
|                             @Raw(FormatRow(obligation, right, sum)) |                             @Raw(FormatRow(obligation, right, sum)) | ||||||
|   | |||||||
| @@ -11,6 +11,7 @@ namespace Elwig.Documents { | |||||||
|  |  | ||||||
|         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; |             UseBillingAddress = true; | ||||||
|  |             ShowDateAndLocation = 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>" + | ||||||
|   | |||||||
| @@ -18,12 +18,14 @@ | |||||||
|     <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-page.css"/> |     <link rel="stylesheet" href="file:///@Raw(Model.DataPath)\resources\style-page.css"/> | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
|     <div class="m1"></div> |     @if (Model.ShowFoldMarks) { | ||||||
|     <div class="m2"></div> |         <div class="m1"></div> | ||||||
|     <div class="m3"></div> |         <div class="m2"></div> | ||||||
|     <div class="m1 r"></div> |         <div class="m3"></div> | ||||||
|     <div class="m2 r"></div> |         <div class="m1 r"></div> | ||||||
|     <div class="m3 r"></div> |         <div class="m2 r"></div> | ||||||
|  |         <div class="m3 r"></div> | ||||||
|  |     } | ||||||
|     <div class="footer-wrapper"> |     <div class="footer-wrapper"> | ||||||
|         <div class="pre-footer"> |         <div class="pre-footer"> | ||||||
|             <span class="date">@($"{Model.Date:dddd, d. MMMM yyyy}")</span> |             <span class="date">@($"{Model.Date:dddd, d. MMMM yyyy}")</span> | ||||||
|   | |||||||
| @@ -8,6 +8,8 @@ namespace Elwig.Documents { | |||||||
|  |  | ||||||
|         private TempFile? PdfFile = null; |         private TempFile? PdfFile = null; | ||||||
|  |  | ||||||
|  |         public bool ShowFoldMarks = App.Config.Debug; | ||||||
|  |  | ||||||
|         public string DataPath; |         public string DataPath; | ||||||
|         public int CurrentNextSeason; |         public int CurrentNextSeason; | ||||||
|         public string? DocumentId; |         public string? DocumentId; | ||||||
| @@ -22,8 +24,8 @@ namespace Elwig.Documents { | |||||||
|             DataPath = App.DataPath; |             DataPath = App.DataPath; | ||||||
|             CurrentNextSeason = Utils.CurrentNextSeason; |             CurrentNextSeason = Utils.CurrentNextSeason; | ||||||
|             Title = title; |             Title = title; | ||||||
|             Author = App.Client.NameFull; |             Author = c.NameFull; | ||||||
|             Header = $"<h1>{c.Name}</h1>"; |             Header = $"<div class='name'>{c.Name}</div><div class='suffix'>{c.NameSuffix}</div>"; | ||||||
|             Footer = Utils.GenerateFooter("<br/>", " \u00b7 ") |             Footer = Utils.GenerateFooter("<br/>", " \u00b7 ") | ||||||
|                 .Item(c.NameFull).NextLine() |                 .Item(c.NameFull).NextLine() | ||||||
|                 .Item(c.Address).Item($"{c.Plz} {c.Ort}").Item("Österreich").Item("Tel.", c.PhoneNr).Item("Fax", c.FaxNr).NextLine() |                 .Item(c.Address).Item($"{c.Plz} {c.Ort}").Item("Österreich").Item("Tel.", c.PhoneNr).Item("Fax", c.FaxNr).NextLine() | ||||||
|   | |||||||
| @@ -14,6 +14,13 @@ | |||||||
|     position: relative; |     position: relative; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .info-wrapper .date { | ||||||
|  |     text-align: right; | ||||||
|  |     position: absolute; | ||||||
|  |     right: 0; | ||||||
|  |     bottom: -1.5em; | ||||||
|  | } | ||||||
|  |  | ||||||
| .address-wrapper { | .address-wrapper { | ||||||
|     height: 45mm; |     height: 45mm; | ||||||
|     width: 85mm; |     width: 85mm; | ||||||
| @@ -80,7 +87,7 @@ main > *:first-child { | |||||||
|     margin-top: 0; |     margin-top: 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| .main-wrapper h1, .main-wrapper p { | main h1, .main-wrapper p { | ||||||
|     font-size: 12pt; |     font-size: 12pt; | ||||||
|     margin: 1em 0; |     margin: 1em 0; | ||||||
|     text-align: justify; |     text-align: justify; | ||||||
| @@ -92,12 +99,8 @@ main > *:first-child { | |||||||
|     hyphens: manual; |     hyphens: manual; | ||||||
| } | } | ||||||
|  |  | ||||||
| .main-wrapper .date { | main h1 { | ||||||
|     margin-bottom: 2em; |     margin-top: 0; | ||||||
|     text-align: right; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| .main-wrapper h1 { |  | ||||||
|     margin-bottom: 2em; |     margin-bottom: 2em; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,8 @@ | |||||||
|  |  | ||||||
|  | main h1 { | ||||||
|  |     margin-bottom: 1.5em !important; | ||||||
|  | } | ||||||
|  |  | ||||||
| table.delivery { | table.delivery { | ||||||
|     margin-bottom: 5mm; |     margin-bottom: 5mm; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ table th { | |||||||
|  |  | ||||||
| header { | header { | ||||||
|     height: 45mm; |     height: 45mm; | ||||||
|     padding: 5mm; |     padding: 10mm 0 0 0; | ||||||
|     position: absolute; |     position: absolute; | ||||||
|     top: -25mm; |     top: -25mm; | ||||||
|     left: 0; |     left: 0; | ||||||
| @@ -38,9 +38,15 @@ header { | |||||||
|     overflow: hidden; |     overflow: hidden; | ||||||
| } | } | ||||||
|  |  | ||||||
| header h1 { | header .name { | ||||||
|     font-size: 18pt; |     font-size: 18pt; | ||||||
|     margin-top: 10mm; |     margin-top: 10mm; | ||||||
|  |     font-weight: bold; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | header .suffix { | ||||||
|  |     font-size: 12pt; | ||||||
|  |     font-weight: bold; | ||||||
| } | } | ||||||
|  |  | ||||||
| .footer-wrapper { | .footer-wrapper { | ||||||
|   | |||||||
| @@ -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.2.0</Version> |     <Version>0.2.1</Version> | ||||||
|     <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> |     <SatelliteResourceLanguages>de-AT</SatelliteResourceLanguages> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -8,6 +8,7 @@ namespace Elwig.Helpers { | |||||||
|     public class Config { |     public class Config { | ||||||
|  |  | ||||||
|         private readonly string FileName; |         private readonly string FileName; | ||||||
|  |         public bool Debug; | ||||||
|         public string DatabaseFile = App.DataPath + "database.sqlite3"; |         public string DatabaseFile = App.DataPath + "database.sqlite3"; | ||||||
|         public string? DatabaseLog = null; |         public string? DatabaseLog = null; | ||||||
|         public string? Branch = null; |         public string? Branch = null; | ||||||
| @@ -49,6 +50,13 @@ namespace Elwig.Helpers { | |||||||
|                 Branch = branch; |                 Branch = branch; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             if (ini == null || !ini.TryGetKey("general.debug", out string debug)) { | ||||||
|  |                 Debug = false; | ||||||
|  |             } else { | ||||||
|  |                 debug = debug.ToLower(); | ||||||
|  |                 Debug = debug == "1" || debug == "true" || debug == "yes" || debug == "on"; | ||||||
|  |             } | ||||||
|  |  | ||||||
|             ScaleList.Clear(); |             ScaleList.Clear(); | ||||||
|             Scales = ScaleList; |             Scales = ScaleList; | ||||||
|             if (ini != null) { |             if (ini != null) { | ||||||
| @@ -72,6 +80,7 @@ namespace Elwig.Helpers { | |||||||
|             using var file = new StreamWriter(FileName, false, Utils.UTF8); |             using var file = new StreamWriter(FileName, false, Utils.UTF8); | ||||||
|             file.Write($"\r\n[general]\r\n"); |             file.Write($"\r\n[general]\r\n"); | ||||||
|             if (Branch != null) file.Write($"branch = {Branch}\r\n"); |             if (Branch != null) file.Write($"branch = {Branch}\r\n"); | ||||||
|  |             if (Debug) file.Write("debug = true\r\n"); | ||||||
|             file.Write($"\r\n[database]\r\nfile = {DatabaseFile}\r\n"); |             file.Write($"\r\n[database]\r\nfile = {DatabaseFile}\r\n"); | ||||||
|             if (DatabaseLog != null) file.Write($"log = {DatabaseLog}\r\n"); |             if (DatabaseLog != null) file.Write($"log = {DatabaseLog}\r\n"); | ||||||
|             foreach (var s in ScaleList) { |             foreach (var s in ScaleList) { | ||||||
|   | |||||||
| @@ -219,8 +219,8 @@ namespace Elwig.Helpers { | |||||||
|                 .Sum(); |                 .Sum(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public static (int, string?)? ShowManualWeighingDialog() { |         public static (int, string?)? ShowManualWeighingDialog(string? reason = null) { | ||||||
|             var d = new ManualWeighingDialog(); |             var d = new ManualWeighingDialog(reason); | ||||||
|             return d.ShowDialog() == true ? (d.Weight, d.Reason) : null; |             return d.ShowDialog() == true ? (d.Weight, d.Reason) : null; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -413,7 +413,7 @@ namespace Elwig.Windows { | |||||||
|             UpdateButtons(); |             UpdateButtons(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         protected void TextBox_TextChanged(object sender, RoutedEventArgs evt) { |         protected void TextBox_TextChanged(object sender, RoutedEventArgs? evt) { | ||||||
|             var input = (TextBox)sender; |             var input = (TextBox)sender; | ||||||
|             if (SenderIsRequired(input) && input.Text.Length == 0) { |             if (SenderIsRequired(input) && input.Text.Length == 0) { | ||||||
|                 ValidateInput(input, false); |                 ValidateInput(input, false); | ||||||
|   | |||||||
| @@ -272,22 +272,21 @@ | |||||||
|                           VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2" |                           VerticalAlignment="Top" HorizontalAlignment="Left" Margin="10,75,10,10" Grid.Column="0" Grid.ColumnSpan="2" | ||||||
|                           Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> |                           Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> | ||||||
|  |  | ||||||
|                 <Button x:Name="WeighingManualButton" Content="Handwiegung" Width="120" |  | ||||||
|                         Click="WeighingManualButton_Click" |  | ||||||
|                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,10,10,10" Grid.Column="2"/> |  | ||||||
|                 <Button x:Name="WeighingAButton" Content="Wiegen A" Width="120" |                 <Button x:Name="WeighingAButton" Content="Wiegen A" Width="120" | ||||||
|                         Click="WeighingButton_Click" |                         Click="WeighingButton_Click" | ||||||
|                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,42,10,10" Grid.Column="2"/> |                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,10,10,10" Grid.Column="2"/> | ||||||
|                 <Button x:Name="WeighingBButton" Content="Wiegen B" Width="120" |                 <Button x:Name="WeighingBButton" Content="Wiegen B" Width="120" | ||||||
|                         Click="WeighingButton_Click" |                         Click="WeighingButton_Click" | ||||||
|                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,74,10,10" Grid.Column="2"/> |                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,42,10,10" Grid.Column="2"/> | ||||||
|                 <Button x:Name="WeighingCButton" Content="Wiegen C" Width="120" |                 <Button x:Name="WeighingCButton" Content="Wiegen C" Width="120" | ||||||
|                         Click="WeighingButton_Click" |                         Click="WeighingButton_Click" | ||||||
|                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,106,10,10" Grid.Column="2"/> |                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,74,10,10" Grid.Column="2"/> | ||||||
|                 <Button x:Name="WeighingDButton" Content="Wiegen D" Width="120" |                 <Button x:Name="WeighingDButton" Content="Wiegen D" Width="120" | ||||||
|                         Click="WeighingButton_Click" |                         Click="WeighingButton_Click" | ||||||
|  |                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,106,10,10" Grid.Column="2"/> | ||||||
|  |                 <Button x:Name="WeighingManualButton" Content="Handwiegung" Width="120" | ||||||
|  |                         Click="WeighingManualButton_Click" | ||||||
|                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,138,10,10" Grid.Column="2"/> |                         VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,138,10,10" Grid.Column="2"/> | ||||||
|  |  | ||||||
|             </Grid> |             </Grid> | ||||||
|         </GroupBox> |         </GroupBox> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,6 +25,7 @@ namespace Elwig.Windows { | |||||||
|         private List<string> TextFilter = new(); |         private List<string> TextFilter = new(); | ||||||
|         private readonly RoutedCommand CtrlF = new(); |         private readonly RoutedCommand CtrlF = new(); | ||||||
|  |  | ||||||
|  |         private string? LastScaleError = null; | ||||||
|         private string? ManualWeighingReason = null; |         private string? ManualWeighingReason = null; | ||||||
|         private string? ScaleId = null; |         private string? ScaleId = null; | ||||||
|         private string? WeighingId = null; |         private string? WeighingId = null; | ||||||
| @@ -75,6 +76,7 @@ namespace Elwig.Windows { | |||||||
|                 if (n >= 2) WeighingBButton.Content = $"Wiegen {App.Scales[1].ScaleId}"; |                 if (n >= 2) WeighingBButton.Content = $"Wiegen {App.Scales[1].ScaleId}"; | ||||||
|                 if (n >= 3) WeighingCButton.Content = $"Wiegen {App.Scales[2].ScaleId}"; |                 if (n >= 3) WeighingCButton.Content = $"Wiegen {App.Scales[2].ScaleId}"; | ||||||
|                 if (n >= 4) WeighingDButton.Content = $"Wiegen {App.Scales[3].ScaleId}"; |                 if (n >= 4) WeighingDButton.Content = $"Wiegen {App.Scales[3].ScaleId}"; | ||||||
|  |                 WeighingManualButton.Margin = new Thickness(10, 10 + n * 32, 10, 10); | ||||||
|             } else { |             } else { | ||||||
|                 WeighingManualButton.Visibility = Visibility.Hidden; |                 WeighingManualButton.Visibility = Visibility.Hidden; | ||||||
|                 WeighingAButton.Visibility = Visibility.Hidden; |                 WeighingAButton.Visibility = Visibility.Hidden; | ||||||
| @@ -91,13 +93,13 @@ namespace Elwig.Windows { | |||||||
|             AllSeasonsInput.IsChecked = true; |             AllSeasonsInput.IsChecked = true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private async void Window_Loaded(object sender, RoutedEventArgs evt) { |         private void Window_Loaded(object sender, RoutedEventArgs evt) { | ||||||
|             OnSecondPassed(null, null); |             OnSecondPassed(null, null); | ||||||
|             Timer.Start(); |             Timer.Start(); | ||||||
|             LockInputs(); |             LockInputs(); | ||||||
|             if (IsReceipt) { |             if (IsReceipt) { | ||||||
|                 NewDeliveryButton_Click(null, null); |                 NewDeliveryButton_Click(null, null); | ||||||
|                 if ((await Context.Seasons.FindAsync(Utils.CurrentYear)) == null) { |                 if ((Context.Seasons.Find(Utils.CurrentYear)) == null) { | ||||||
|                     MessageBox.Show("Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.", |                     MessageBox.Show("Die Saison für das aktuelle Jahr wurde noch nicht erstellt. Neue Lieferungen können nicht abgespeichert werden.", | ||||||
|                         "Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Error); |                         "Saison noch nicht erstellt", MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|                 } |                 } | ||||||
| @@ -147,6 +149,11 @@ namespace Elwig.Windows { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void InitialInputs() { |         private void InitialInputs() { | ||||||
|  |             LastScaleError = null; | ||||||
|  |             WeighingId = null; | ||||||
|  |             ScaleId = null; | ||||||
|  |             ManualWeighingReason = null; | ||||||
|  |  | ||||||
|             ClearOriginalValues(); |             ClearOriginalValues(); | ||||||
|             ClearDefaultValues(); |             ClearDefaultValues(); | ||||||
|  |  | ||||||
| @@ -226,6 +233,7 @@ namespace Elwig.Windows { | |||||||
|             double filterOeLt = 0; |             double filterOeLt = 0; | ||||||
|  |  | ||||||
|             var filter = TextFilter.ToList(); |             var filter = TextFilter.ToList(); | ||||||
|  |             var hasFilters = filter.Count > 0; | ||||||
|             if (filter.Count > 0) { |             if (filter.Count > 0) { | ||||||
|                 var var = await Context.WineVarieties.Select(v => v.SortId).ToListAsync(); |                 var var = await Context.WineVarieties.Select(v => v.SortId).ToListAsync(); | ||||||
|                 var qual = await Context.WineQualityLevels.Select(q => q.QualId).ToListAsync(); |                 var qual = await Context.WineQualityLevels.Select(q => q.QualId).ToListAsync(); | ||||||
| @@ -331,7 +339,8 @@ namespace Elwig.Windows { | |||||||
|                     .ToList(); |                     .ToList(); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             ControlUtils.RenewItemsSource(DeliveryList, deliveries, d => ((d as Delivery)?.Year, (d as Delivery)?.DId), DeliveryList_SelectionChanged, IsCreating ? ControlUtils.RenewSourceDefault.None : ControlUtils.RenewSourceDefault.IfOnly, !updateSort); |             ControlUtils.RenewItemsSource(DeliveryList, deliveries, d => ((d as Delivery)?.Year, (d as Delivery)?.DId), | ||||||
|  |                 DeliveryList_SelectionChanged, hasFilters ? ControlUtils.RenewSourceDefault.IfOnly : ControlUtils.RenewSourceDefault.None, !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,7 +432,6 @@ 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; | ||||||
| @@ -441,6 +449,7 @@ namespace Elwig.Windows { | |||||||
|             if (IsCreating) await UpdateLsNr(); |             if (IsCreating) await UpdateLsNr(); | ||||||
|  |  | ||||||
|             await RefreshDeliveryParts(); |             await RefreshDeliveryParts(); | ||||||
|  |             RefreshInputs(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void FocusSearchInput(object sender, RoutedEventArgs evt) { |         private void FocusSearchInput(object sender, RoutedEventArgs evt) { | ||||||
| @@ -649,12 +658,18 @@ namespace Elwig.Windows { | |||||||
|                     ScaleId = null; |                     ScaleId = null; | ||||||
|                     WeighingId = null; |                     WeighingId = null; | ||||||
|                 } |                 } | ||||||
|                 ManualWeighingReason = null; |                 LastScaleError = null; | ||||||
|                 ManualWeighingInput.IsChecked = false; |  | ||||||
|             } catch (Exception e) { |             } catch (Exception e) { | ||||||
|  |                 LastScaleError = e.Message.Split(": ")[^1]; | ||||||
|  |                 WeightInput.Text = ""; | ||||||
|  |                 ScaleId = null; | ||||||
|  |                 WeighingId = null; | ||||||
|                 MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler", |                 MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{e.Message}", "Waagenfehler", | ||||||
|                        MessageBoxButton.OK, MessageBoxImage.Error); |                        MessageBoxButton.OK, MessageBoxImage.Error); | ||||||
|             } |             } | ||||||
|  |             ManualWeighingReason = null; | ||||||
|  |             ManualWeighingInput.IsChecked = false; | ||||||
|  |             base.TextBox_TextChanged(WeightInput, null); | ||||||
|             EnableWeighingButtons(); |             EnableWeighingButtons(); | ||||||
|             UpdateButtons(); |             UpdateButtons(); | ||||||
|         } |         } | ||||||
| @@ -771,8 +786,11 @@ namespace Elwig.Windows { | |||||||
|                 using var doc = new DeliveryNote(p.Delivery, Context); |                 using var doc = new DeliveryNote(p.Delivery, Context); | ||||||
|                 await doc.Generate(); |                 await doc.Generate(); | ||||||
|                 Mouse.OverrideCursor = null; |                 Mouse.OverrideCursor = null; | ||||||
|                 doc.Show(); |                 if (App.Config.Debug) { | ||||||
|                 //await doc.Print(2); |                     doc.Show(); | ||||||
|  |                 } else { | ||||||
|  |                     await doc.Print(2); | ||||||
|  |                 } | ||||||
|             } |             } | ||||||
|             FinishButton.Cursor = null; |             FinishButton.Cursor = null; | ||||||
|             DeliveryList.SelectedItem = null; |             DeliveryList.SelectedItem = null; | ||||||
| @@ -880,7 +898,7 @@ namespace Elwig.Windows { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void WeighingManualButton_Click(object sender, RoutedEventArgs evt) { |         private void WeighingManualButton_Click(object sender, RoutedEventArgs evt) { | ||||||
|             var res = Utils.ShowManualWeighingDialog(); |             var res = Utils.ShowManualWeighingDialog(LastScaleError); | ||||||
|             if (res == null) return; |             if (res == null) return; | ||||||
|             WeightInput.Text = $"{res?.Item1:N0}"; |             WeightInput.Text = $"{res?.Item1:N0}"; | ||||||
|             ManualWeighingInput.IsChecked = true; |             ManualWeighingInput.IsChecked = true; | ||||||
|   | |||||||
| @@ -5,6 +5,10 @@ namespace Elwig.Windows { | |||||||
|  |  | ||||||
|         public MainWindow() { |         public MainWindow() { | ||||||
|             InitializeComponent(); |             InitializeComponent(); | ||||||
|  |             if (!App.Config.Debug) { | ||||||
|  |                 TestWindowButton.Visibility = Visibility.Hidden; | ||||||
|  |                 //QueryWindowButton.Visibility = Visibility.Hidden; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void Window_Loaded(object sender, RoutedEventArgs evt) { } |         private void Window_Loaded(object sender, RoutedEventArgs evt) { } | ||||||
|   | |||||||
| @@ -89,7 +89,8 @@ namespace Elwig.Windows { | |||||||
|                     .ToList(); |                     .ToList(); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             ControlUtils.RenewItemsSource(MemberList, members, i => (i as Member)?.MgNr, MemberList_SelectionChanged, ControlUtils.RenewSourceDefault.IfOnly, !updateSort); |             ControlUtils.RenewItemsSource(MemberList, members, i => (i as Member)?.MgNr, | ||||||
|  |                 MemberList_SelectionChanged, TextFilter.Count > 0 ? ControlUtils.RenewSourceDefault.IfOnly : ControlUtils.RenewSourceDefault.None, !updateSort); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private void RefreshInputs(bool validate = false) { |         private void RefreshInputs(bool validate = false) { | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ | |||||||
| [general] | [general] | ||||||
| ; Only needed, if more than one branch is stored in database | ; Only needed, if more than one branch is stored in database | ||||||
| branch = Zweigstelle | branch = Zweigstelle | ||||||
|  | ;debug = true | ||||||
|  |  | ||||||
| [database] | [database] | ||||||
| ; Relative or absolute path to database file | ; Relative or absolute path to database file | ||||||
|   | |||||||
| @@ -72,14 +72,14 @@ namespace Tests { | |||||||
|         [Test] |         [Test] | ||||||
|         public void Test_SplitAddress() { |         public void Test_SplitAddress() { | ||||||
|             Assert.Multiple(() => { |             Assert.Multiple(() => { | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 1"), Is.EqualTo(("Winzerstra<EFBFBD>e", "1"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 1"), Is.EqualTo(("Winzerstraße", "1"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Auf dem Feld 12"), Is.EqualTo(("Auf dem Feld", "12"))); |                 Assert.That(Utils.SplitAddress("Auf dem Feld 12"), Is.EqualTo(("Auf dem Feld", "12"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 5a"), Is.EqualTo(("Winzerstra<EFBFBD>e", "5a"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 5a"), Is.EqualTo(("Winzerstraße", "5a"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 1-3/2"), Is.EqualTo(("Winzerstra<EFBFBD>e", "1-3/2"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 1-3/2"), Is.EqualTo(("Winzerstraße", "1-3/2"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 3/4/5"), Is.EqualTo(("Winzerstra<EFBFBD>e", "3/4/5"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 3/4/5"), Is.EqualTo(("Winzerstraße", "3/4/5"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 7/2/4/77"), Is.EqualTo(("Winzerstra<EFBFBD>e", "7/2/4/77"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 7/2/4/77"), Is.EqualTo(("Winzerstraße", "7/2/4/77"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 95b"), Is.EqualTo(("Winzerstra<EFBFBD>e", "95b"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 95b"), Is.EqualTo(("Winzerstraße", "95b"))); | ||||||
|                 Assert.That(Utils.SplitAddress("Winzerstra<EFBFBD>e 1, TOP 3"), Is.EqualTo(("Winzerstra<EFBFBD>e", "1, TOP 3"))); |                 Assert.That(Utils.SplitAddress("Winzerstraße 1, TOP 3"), Is.EqualTo(("Winzerstraße", "1, TOP 3"))); | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user