From 99a6f533071431e7dad52f6779bcf7be0616eb3a Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 14 Aug 2023 20:09:53 +0200 Subject: [PATCH] Update DeliveryAdminWindow --- Elwig/Helpers/ClientParameters.cs | 110 +++++++++++----------- Elwig/Helpers/Weighing/SystecScale.cs | 17 ++-- Elwig/Helpers/Weighing/WeighingResult.cs | 5 + Elwig/Windows/DeliveryAdminWindow.xaml | 4 + Elwig/Windows/DeliveryAdminWindow.xaml.cs | 91 ++++++++++++++---- 5 files changed, 149 insertions(+), 78 deletions(-) diff --git a/Elwig/Helpers/ClientParameters.cs b/Elwig/Helpers/ClientParameters.cs index 15d8674..24c90b7 100644 --- a/Elwig/Helpers/ClientParameters.cs +++ b/Elwig/Helpers/ClientParameters.cs @@ -1,63 +1,67 @@ using Elwig.Models; namespace Elwig.Helpers { - public class ClientParameters { + public class ClientParameters { - public string NameToken; - public string NameShort; - public string NameShortened; - public string Name; - public string NameSuffix; - public string NameFull => $"{Name} {NameSuffix}"; + public enum Type { Matzen, GWK }; - public PostalDest PostalDest { - set { - Plz = value.AtPlz.Plz; - Ort = value.AtPlz.Ort.Name; - } - } - public int Plz { get; private set; } - public string Ort { get; private set; } - public string Address; - public string Sender1 => $"{NameShort} | {Address} | {Plz} {Ort}"; - public string Sender2; + public string NameToken; + public string NameShort; + public string NameShortened; + public string Name; + public string NameSuffix; + public string NameFull => $"{Name} {NameSuffix}"; + public Type? Client; - public string? Iban; - public string? Bic; - public string? UstId; - public string? LfbisNr; + public PostalDest PostalDest { + set { + Plz = value.AtPlz.Plz; + Ort = value.AtPlz.Ort.Name; + } + } + public int Plz { get; private set; } + public string Ort { get; private set; } + public string Address; + public string Sender1 => $"{NameShort} | {Address} | {Plz} {Ort}"; + public string Sender2; - public string? PhoneNr; - public string? FaxNr; - public string? EmailAddress; - public string? Website; + public string? Iban; + public string? Bic; + public string? UstId; + public string? LfbisNr; - public string? DeliveryNoteText; + public string? PhoneNr; + public string? FaxNr; + public string? EmailAddress; + public string? Website; - public ClientParameters() { - NameToken = "WGM"; - NameShort = "WG Matzen"; - NameShortened = "Winzergenossenschaft f. Matzen u. Umgebung"; - Name = "Winzergenossenschaft für Matzen und Umgebung"; - NameSuffix = "reg. Gen.m.b.H."; - Plz = 2243; - Ort = "Matzen"; - Address = "Schloßstraße 6"; - PhoneNr = "+43 2289 2221"; - FaxNr = "+43 2289 2221"; - EmailAddress = "winzermatzen@aon.at"; - Website = "winzermatzen.at"; - LfbisNr = "0901768"; - UstId = "ATU16328105"; - Bic = "RLNWATWWGAE"; - Iban = "AT92 3209 2000 0240 0075"; - Sender2 = "E Österreichische Post AG Eco Brief"; - DeliveryNoteText = "Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht und insbesondere die " + - "Bestimmungen über die Mengenbeschränkungen sowie für die Erzeugung von Wein besonderer Leseart eingehalten wird. " + - "Alle maßgeblichen Veränderungen obiger Angaben sind der Winzergenossenschaft unverzüglich zu melden. " + - "Das Mitglied bestätigt weiters mit seiner Unterschrift, dass die gelieferten Trauben entsprechend der guten Herstellungspraxis erzeugt wurden, " + - "insbesondere die Einhaltung der vom Hersteller vorgegebenen Wartefristen für Pflanzenschutzmittel. " + - "Weiters wird bestätigt, dass die Datenschutzerklärung der Winzergenossenschaft für Matzen und Umgebung in der Übernahmestelle zur freien Entnahme aufliegt."; - } - } + public string? DeliveryNoteText; + + public ClientParameters() { + NameToken = "WGM"; + NameShort = "WG Matzen"; + NameShortened = "Winzergenossenschaft f. Matzen u. Umgebung"; + Name = "Winzergenossenschaft für Matzen und Umgebung"; + NameSuffix = "reg. Gen.m.b.H."; + Client = Type.Matzen; + Plz = 2243; + Ort = "Matzen"; + Address = "Schloßstraße 6"; + PhoneNr = "+43 2289 2221"; + FaxNr = "+43 2289 2221"; + EmailAddress = "winzermatzen@aon.at"; + Website = "winzermatzen.at"; + LfbisNr = "0901768"; + UstId = "ATU16328105"; + Bic = "RLNWATWWGAE"; + Iban = "AT92 3209 2000 0240 0075"; + Sender2 = "E Österreichische Post AG Eco Brief"; + DeliveryNoteText = "Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht und insbesondere die " + + "Bestimmungen über die Mengenbeschränkungen sowie für die Erzeugung von Wein besonderer Leseart eingehalten wird. " + + "Alle maßgeblichen Veränderungen obiger Angaben sind der Winzergenossenschaft unverzüglich zu melden. " + + "Das Mitglied bestätigt weiters mit seiner Unterschrift, dass die gelieferten Trauben entsprechend der guten Herstellungspraxis erzeugt wurden, " + + "insbesondere die Einhaltung der vom Hersteller vorgegebenen Wartefristen für Pflanzenschutzmittel. " + + "Weiters wird bestätigt, dass die Datenschutzerklärung der Winzergenossenschaft für Matzen und Umgebung in der Übernahmestelle zur freien Entnahme aufliegt."; + } + } } diff --git a/Elwig/Helpers/Weighing/SystecScale.cs b/Elwig/Helpers/Weighing/SystecScale.cs index 17b66b0..bf022a8 100644 --- a/Elwig/Helpers/Weighing/SystecScale.cs +++ b/Elwig/Helpers/Weighing/SystecScale.cs @@ -161,16 +161,19 @@ namespace Elwig.Helpers.Weighing { var terminalNr = line[49..52].Trim(); var crc16 = line[52..60].Trim(); - if (Utils.CalcCrc16Modbus(record[..54]).ToString() != crc16) { + if (Utils.CalcCrc16Modbus(record[..54]) != ushort.Parse(crc16)) { throw new IOException($"Invalid response from scale: Invalid CRC16 checksum ({crc16} != {Utils.CalcCrc16Modbus(record[..54]).ToString()})"); } else if (unit != "kg") { throw new IOException($"Unsupported unit in weighing response: '{unit}'"); } + identNr = identNr.Length > 0 && identNr != "0" ? identNr : null; + var parsedDate = DateOnly.Parse(date); return new() { - Weight = int.TryParse(netto, out int w) ? w : null, - WeighingId = identNr.Length > 0 && identNr != "0" ? identNr : null, - Date = DateOnly.Parse(date), + Weight = int.Parse(netto), + WeighingId = identNr, + FullWeighingId = identNr != null ? $"{parsedDate:yyyy-MM-dd}/{identNr}" : null, + Date = parsedDate, Time = TimeOnly.Parse(time), }; } @@ -195,10 +198,10 @@ namespace Elwig.Helpers.Weighing { p.DtrEnable = false; } else if (EmptyMode == Output.OUT1 || EmptyMode == Output.OUT2) { int output = EmptyMode == Output.OUT1 ? 1 : 2; - await SendCommand($"OS{output:02i}"); + await SendCommand($"OS{output:00}"); await ReceiveResponse(); await Task.Delay(EmptyDelay); - await SendCommand($"OC{output:02i}"); + await SendCommand($"OC{output:00}"); await ReceiveResponse(); } } @@ -212,7 +215,7 @@ namespace Elwig.Helpers.Weighing { } else if (FillingClearanceMode == Output.OUT1 || FillingClearanceMode == Output.OUT2) { string cmd = status ? "OS" : "OC"; int output = FillingClearanceMode == Output.OUT1 ? 1 : 2; - await SendCommand($"{cmd}{output:02i}"); + await SendCommand($"{cmd}{output:00}"); await ReceiveResponse(); } } diff --git a/Elwig/Helpers/Weighing/WeighingResult.cs b/Elwig/Helpers/Weighing/WeighingResult.cs index 5388eb0..25d77e5 100644 --- a/Elwig/Helpers/Weighing/WeighingResult.cs +++ b/Elwig/Helpers/Weighing/WeighingResult.cs @@ -15,6 +15,11 @@ namespace Elwig.Helpers.Weighing { /// public string? WeighingId = null; + /// + /// Wheighing id (or IdentNr) provided by the scale optionally combined with the current date + /// + public string? FullWeighingId = null; + /// /// Date string provided by the scale /// diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index 8e246c2..b4d0d2d 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -266,12 +266,16 @@ Click="WeighingManualButton_Click" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,10,10,10" Grid.Column="2"/>