From fd0ed97305632aa7ba728c48752cebaeb12f893f Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Mon, 22 Jul 2024 17:10:36 +0200 Subject: [PATCH] Weighing: Do not ignore gross and tare weight and show it on DeliveryNote --- Elwig/Documents/DeliveryNote.cshtml | 14 +++++++-- Elwig/Helpers/AppDbUpdater.cs | 2 +- Elwig/Helpers/Export/ElwigData.cs | 4 +-- Elwig/Helpers/Weighing/AveryEventScale.cs | 2 +- Elwig/Helpers/Weighing/GassnerScale.cs | 9 +++--- Elwig/Helpers/Weighing/ICommandScale.cs | 2 +- Elwig/Helpers/Weighing/IEventScale.cs | 2 +- Elwig/Helpers/Weighing/IScale.cs | 2 +- Elwig/Helpers/Weighing/SysTecITScale.cs | 4 ++- Elwig/Helpers/Weighing/WeighingEventArgs.cs | 9 ++---- Elwig/Helpers/Weighing/WeighingResult.cs | 31 ++++++++++++++++--- Elwig/Models/Entities/DeliveryPart.cs | 24 ++++++++++++-- Elwig/Resources/Sql/24-25.sql | 4 +++ Elwig/Services/DeliveryService.cs | 8 ++--- Elwig/ViewModels/DeliveryAdminViewModel.cs | 2 +- Elwig/Windows/DeliveryAdminWindow.xaml | 4 +-- Elwig/Windows/DeliveryAdminWindow.xaml.cs | 16 +++++----- Tests/DocumentTests/DeliveryNoteTest.cs | 25 ++++++++------- Tests/Resources/Sql/BillingInsert.sql | 4 +-- Tests/Resources/Sql/DocumentInsert.sql | 4 +-- Tests/Resources/Sql/Insert.sql | 2 +- Tests/WeighingTests/ScaleTestBadenL320.cs | 9 +++--- .../ScaleTestGrInzersdorfL246.cs | 21 +++++++------ Tests/WeighingTests/ScaleTestMatzenIT3000A.cs | 21 +++++++------ .../ScaleTestWolkersdorfIT6000E.cs | 28 ++++++++++------- Tests/fetch-resources.bat | 2 +- 26 files changed, 159 insertions(+), 96 deletions(-) create mode 100644 Elwig/Resources/Sql/24-25.sql diff --git a/Elwig/Documents/DeliveryNote.cshtml b/Elwig/Documents/DeliveryNote.cshtml index 662e63a..6acf883 100644 --- a/Elwig/Documents/DeliveryNote.cshtml +++ b/Elwig/Documents/DeliveryNote.cshtml @@ -60,8 +60,18 @@ } } - @Raw(part.IsManualWeighing ? "Handwiegung" : $"Waage: {part.ScaleId ?? "?"}, ID: {part.WeighingId ?? "?"}") - (@(part.IsNetWeight ? "netto/gerebelt gewogen" : "brutto/nicht gerebelt gewogen"))@Raw(part.WeighingReason != null ? $", Begründung:" : "") @part.WeighingReason + @if (part.IsManualWeighing) { + Handwiegung @(part.IsNetWeight ? " (gerebelt gewogen)" : " (nicht gerebelt gewogen)")@Raw(part.WeighingReason != null ? ", Begründung: " : "") @part.WeighingReason + } else { + var info = part.WeighingInfo; + Waage: @(part.ScaleId ?? "?")@(", ") ID: @(info.Id ?? "?") + @(info.Date != null || info.Time != null ? " – " : "")@(info.Time != null ? $"{info.Time:HH:mm}" : "")@(info.Date != null ? $", {info.Date:dd.MM.yyyy}" : "") + @if (info.Gross != null && info.Tare != null && info.Net != null) { +
Brutto: @($"{info.Gross:N0} kg")@(" – ") Tara: @($"{info.Tare:N0} kg")@(" – ") Netto: @($"{info.Net:N0} kg")@(" – ")@Raw(part.IsNetWeight ? "gerebelt gewogen" : "nicht gerebelt gewogen") + } else { + @Raw($" ({(part.IsNetWeight ? "gerebelt gewogen" : "nicht gerebelt gewogen")})") + } + } @if (part.Comment != null) { Anmerkung: @part.Comment diff --git a/Elwig/Helpers/AppDbUpdater.cs b/Elwig/Helpers/AppDbUpdater.cs index 4a57078..401f7ea 100644 --- a/Elwig/Helpers/AppDbUpdater.cs +++ b/Elwig/Helpers/AppDbUpdater.cs @@ -9,7 +9,7 @@ namespace Elwig.Helpers { public static class AppDbUpdater { // Don't forget to update value in Tests/fetch-resources.bat! - public static readonly int RequiredSchemaVersion = 24; + public static readonly int RequiredSchemaVersion = 25; private static int VersionOffset = 0; diff --git a/Elwig/Helpers/Export/ElwigData.cs b/Elwig/Helpers/Export/ElwigData.cs index 5944370..77f9cd2 100644 --- a/Elwig/Helpers/Export/ElwigData.cs +++ b/Elwig/Helpers/Export/ElwigData.cs @@ -194,7 +194,7 @@ namespace Elwig.Helpers.Export { if (p.Temperature != null) obj["temperature"] = p.Temperature; if (p.Acid != null) obj["acid"] = p.Acid; if (p.ScaleId != null) obj["scale_id"] = p.ScaleId; - if (p.WeighingId != null) obj["weighing_id"] = p.WeighingId; + if (p.WeighingData != null) obj["weighing_data"] = JsonNode.Parse(p.WeighingData); if (p.WeighingReason != null) obj["weighing_reason"] = p.WeighingReason; return obj; }).ToArray()), @@ -238,7 +238,7 @@ namespace Elwig.Helpers.Export { Temperature = p["temperature"]?.AsValue().GetValue(), Acid = p["acid"]?.AsValue().GetValue(), ScaleId = p["scale_id"]?.AsValue().GetValue(), - WeighingId = p["weighing_id"]?.AsValue().GetValue(), + WeighingData = p["weighing_data"]?.AsObject().ToJsonString(), WeighingReason = p["weighing_reason"]?.AsValue().GetValue(), }).ToList(), json["parts"]!.AsArray().SelectMany(p => p!["modids"]!.AsArray().Select(m => new DeliveryPartModifier { Year = year, diff --git a/Elwig/Helpers/Weighing/AveryEventScale.cs b/Elwig/Helpers/Weighing/AveryEventScale.cs index 48526c3..7fa79cd 100644 --- a/Elwig/Helpers/Weighing/AveryEventScale.cs +++ b/Elwig/Helpers/Weighing/AveryEventScale.cs @@ -79,7 +79,7 @@ namespace Elwig.Helpers.Weighing { identNr = identNr.Length > 0 && identNr != "0" ? identNr : null; var parsedDate = DateOnly.Parse(date); return new() { - Weight = int.Parse(netto), + NetWeight = int.Parse(netto), WeighingId = identNr, FullWeighingId = identNr != null ? $"{parsedDate:yyyy-MM-dd}/{identNr}" : null, Date = parsedDate, diff --git a/Elwig/Helpers/Weighing/GassnerScale.cs b/Elwig/Helpers/Weighing/GassnerScale.cs index 90947f8..fb5bae6 100644 --- a/Elwig/Helpers/Weighing/GassnerScale.cs +++ b/Elwig/Helpers/Weighing/GassnerScale.cs @@ -69,13 +69,14 @@ namespace Elwig.Helpers.Weighing { var time = line[37..43]; identNr = identNr.Length > 0 && identNr != "0" ? identNr : null; - var parsedDate = DateOnly.ParseExact(date, "yyyyMMdd"); return new() { - Weight = int.Parse(netto), + GrossWeight = int.Parse(brutto), + TareWeight = int.Parse(tara), + NetWeight = int.Parse(netto), WeighingId = identNr, FullWeighingId = identNr, - Date = parsedDate, - Time = TimeOnly.ParseExact(time, "HHmmss"), + Date = DateOnly.TryParseExact(date, "yyyyMMdd", out var d) ? d : null, + Time = TimeOnly.TryParseExact(time, "HHmmss", out var t) ? t : null, }; } diff --git a/Elwig/Helpers/Weighing/ICommandScale.cs b/Elwig/Helpers/Weighing/ICommandScale.cs index 789997a..34449b3 100644 --- a/Elwig/Helpers/Weighing/ICommandScale.cs +++ b/Elwig/Helpers/Weighing/ICommandScale.cs @@ -2,7 +2,7 @@ namespace Elwig.Helpers.Weighing { /// - /// Interface for controlling a a scale which responds to commands sent to it + /// Interface for controlling a weighing scale which responds to commands sent to it /// public interface ICommandScale : IScale { /// diff --git a/Elwig/Helpers/Weighing/IEventScale.cs b/Elwig/Helpers/Weighing/IEventScale.cs index d0b550d..a077393 100644 --- a/Elwig/Helpers/Weighing/IEventScale.cs +++ b/Elwig/Helpers/Weighing/IEventScale.cs @@ -1,6 +1,6 @@ namespace Elwig.Helpers.Weighing { /// - /// Interface for controlling a a scale which automatically sends weighing updates + /// Interface for controlling a weighing scale which automatically sends weighing updates /// public interface IEventScale : IScale { diff --git a/Elwig/Helpers/Weighing/IScale.cs b/Elwig/Helpers/Weighing/IScale.cs index 9e5efda..070ae89 100644 --- a/Elwig/Helpers/Weighing/IScale.cs +++ b/Elwig/Helpers/Weighing/IScale.cs @@ -2,7 +2,7 @@ using System; namespace Elwig.Helpers.Weighing { /// - /// Interface for controlling a industrial scale (industrial terminal, "IT") + /// Interface for controlling a industrial weighing scale (industrial terminal, "IT") /// public interface IScale : IDisposable { /// diff --git a/Elwig/Helpers/Weighing/SysTecITScale.cs b/Elwig/Helpers/Weighing/SysTecITScale.cs index 24400be..1e4885f 100644 --- a/Elwig/Helpers/Weighing/SysTecITScale.cs +++ b/Elwig/Helpers/Weighing/SysTecITScale.cs @@ -98,7 +98,9 @@ namespace Elwig.Helpers.Weighing { identNr = identNr.Length > 0 && identNr != "0" ? identNr : null; var parsedDate = DateOnly.Parse(date); return new() { - Weight = int.Parse(netto), + GrossWeight = int.Parse(brutto), + TareWeight = int.Parse(tara), + NetWeight = int.Parse(netto), WeighingId = identNr, FullWeighingId = identNr != null ? $"{parsedDate:yyyy-MM-dd}/{identNr}" : null, Date = parsedDate, diff --git a/Elwig/Helpers/Weighing/WeighingEventArgs.cs b/Elwig/Helpers/Weighing/WeighingEventArgs.cs index e74d5fa..ff08bab 100644 --- a/Elwig/Helpers/Weighing/WeighingEventArgs.cs +++ b/Elwig/Helpers/Weighing/WeighingEventArgs.cs @@ -1,12 +1,7 @@ using System; namespace Elwig.Helpers.Weighing { - public class WeighingEventArgs : EventArgs { - - public WeighingResult Result { get; set; } - - public WeighingEventArgs(WeighingResult result) { - Result = result; - } + public class WeighingEventArgs(WeighingResult result) : EventArgs { + public readonly WeighingResult Result = result; } } diff --git a/Elwig/Helpers/Weighing/WeighingResult.cs b/Elwig/Helpers/Weighing/WeighingResult.cs index 6cb4d77..5447a49 100644 --- a/Elwig/Helpers/Weighing/WeighingResult.cs +++ b/Elwig/Helpers/Weighing/WeighingResult.cs @@ -1,14 +1,25 @@ using System; +using System.Text.Json.Nodes; namespace Elwig.Helpers.Weighing { /// - /// Result of a weighing process on an industrial scale + /// Result of a weighing process on an industrial weighing scale /// public struct WeighingResult { + /// + /// Measured gross weight in kg + /// + public int? GrossWeight; + + /// + /// Measured tare weight in kg + /// + public int? TareWeight; + /// /// Measured net weight in kg /// - public int? Weight; + public int? NetWeight; /// /// Weighing id (or IdentNr) provided by the scale @@ -30,12 +41,22 @@ namespace Elwig.Helpers.Weighing { /// public TimeOnly? Time; - /// <Weight/WeighingId/Date/Time> + /// <[GrossWeight-TaraWeight=]NetWeight/WeighingId/Date/Time> public override readonly string ToString() { - var w = Weight != null ? $"{Weight}kg" : ""; + var w = NetWeight != null ? (GrossWeight != null && TareWeight != null ? $"{GrossWeight}-{TareWeight}=" : "") + $"{NetWeight}kg" : ""; return $"<{w}/{WeighingId}/{Date:yyyy-MM-dd}/{Time:HH:mm}>"; } - + public readonly JsonObject ToJson() { + var obj = new JsonObject(); + if (FullWeighingId != null) obj["id"] = FullWeighingId; + if (WeighingId != null) obj["nr"] = int.Parse(WeighingId); + if (Date != null) obj["date"] = $"{Date:yyyy-MM-dd}"; + if (Time != null) obj["time"] = $"{Time:HH:mm:ss}"; + if (GrossWeight != null) obj["gross_weight"] = GrossWeight; + if (TareWeight != null) obj["tare_weight"] = TareWeight; + if (NetWeight != null) obj["net_weight"] = NetWeight; + return obj; + } } } diff --git a/Elwig/Models/Entities/DeliveryPart.cs b/Elwig/Models/Entities/DeliveryPart.cs index 9d7f7b9..4368991 100644 --- a/Elwig/Models/Entities/DeliveryPart.cs +++ b/Elwig/Models/Entities/DeliveryPart.cs @@ -1,8 +1,10 @@ using Elwig.Helpers; using Microsoft.EntityFrameworkCore; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; +using System.Text.Json.Nodes; namespace Elwig.Models.Entities { [Table("delivery_part"), PrimaryKey("Year", "DId", "DPNr")] @@ -99,8 +101,26 @@ namespace Elwig.Models.Entities { [Column("scale_id")] public string? ScaleId { get; set; } - [Column("weighing_id")] - public string? WeighingId { get; set; } + [Column("weighing_data")] + public string? WeighingData { get; set; } + [NotMapped] + public (string? Id, int? Gross, int? Tare, int? Net, DateOnly? Date, TimeOnly? Time) WeighingInfo { + get { + try { + var obj = JsonNode.Parse(WeighingData!)!.AsObject(); + return ( + obj["id"]?.AsValue().GetValue(), + obj["gross_weight"]?.AsValue().GetValue(), + obj["tare_weight"]?.AsValue().GetValue(), + obj["net_weight"]?.AsValue().GetValue(), + DateOnly.TryParseExact(obj["date"]?.AsValue().GetValue(), "yyyy-MM-dd", out var d) ? d : null, + TimeOnly.TryParseExact(obj["time"]?.AsValue().GetValue(), ["HH:mm:ss", "HH:mm"], out var t) ? t : null + ); + } catch { + return (null, null, null, null, null, null); + } + } + } [Column("weighing_reason")] public string? WeighingReason { get; set; } diff --git a/Elwig/Resources/Sql/24-25.sql b/Elwig/Resources/Sql/24-25.sql new file mode 100644 index 0000000..59e1610 --- /dev/null +++ b/Elwig/Resources/Sql/24-25.sql @@ -0,0 +1,4 @@ +-- schema version 24 to 25 + +ALTER TABLE delivery_part RENAME COLUMN weighing_id TO weighing_data; +UPDATE delivery_part SET weighing_data = '{"id":"' || weighing_data || '","nr":' || SUBSTR(weighing_data, INSTR(weighing_data, '/') + 1) || '}'; diff --git a/Elwig/Services/DeliveryService.cs b/Elwig/Services/DeliveryService.cs index ff3e2f8..6ddacbd 100644 --- a/Elwig/Services/DeliveryService.cs +++ b/Elwig/Services/DeliveryService.cs @@ -80,7 +80,7 @@ namespace Elwig.Services { vm.IsGebunden = p.IsGebunden; vm.ScaleId = p.ScaleId; - vm.WeighingId = p.WeighingId; + vm.WeighingData = p.WeighingData; vm.ManualWeighingReason = p.WeighingReason; } @@ -174,11 +174,11 @@ namespace Elwig.Services { prd = prd.And(p => p.IsManualWeighing == false); filter.RemoveAt(i--); filterNames.Add("keine Handwiegung"); - } else if (e.ToLower() is "bto" or "brut" or "brutt" or "brutto" or "!gerebelt") { + } else if (e.ToLower() == "!gerebelt") { prd = prd.And(p => p.IsNetWeight == false); filter.RemoveAt(i--); filterNames.Add("brutto Wiegung"); - } else if (e.ToLower() is "nto" or "net" or "nett" or "netto" or "gerebelt") { + } else if (e.ToLower() == "gerebelt") { prd = prd.And(p => p.IsNetWeight == true); filter.RemoveAt(i--); filterNames.Add("netto Wiegung"); @@ -465,7 +465,7 @@ namespace Elwig.Services { Weight = (int)vm.Weight!, IsManualWeighing = vm.IsManualWeighing, ScaleId = vm.ScaleId, - WeighingId = vm.WeighingId, + WeighingData = vm.WeighingData, WeighingReason = vm.ManualWeighingReason, }; diff --git a/Elwig/ViewModels/DeliveryAdminViewModel.cs b/Elwig/ViewModels/DeliveryAdminViewModel.cs index 5e9d178..979a503 100644 --- a/Elwig/ViewModels/DeliveryAdminViewModel.cs +++ b/Elwig/ViewModels/DeliveryAdminViewModel.cs @@ -27,7 +27,7 @@ namespace Elwig.ViewModels { [ObservableProperty] private string? _scaleId; [ObservableProperty] - private string? _weighingId; + private string? _weighingData; [ObservableProperty] private bool _filterTodayOnly; diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml index 21ddac5..4601fff 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml +++ b/Elwig/Windows/DeliveryAdminWindow.xaml @@ -176,7 +176,7 @@ Handwiegung: handw[iegung], !Handw[iegung] (alle ohne Handwiegung) Handlese: Handl[ese], !handl[ese] (alle ohne Handlese) Gebunden: geb[unden], ungeb[unden], !geb[unden], !ungeb[unden] - Brutto/Netto Wiegung: bto, Brut[to], nto, Net[to], gerebelt, !Gerebelt + Gerebelt: gerebelt, !Gerebelt (nicht gerebelt gewogen) Freitext: z.B. Lieferscheinnummern, Anmerkung, "quw" (sucht nach dem Text "quw") @@ -469,7 +469,7 @@ Checked="CheckBox_Changed" Unchecked="CheckBox_Changed"/> diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 2b9d159..6c0322f 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -285,7 +285,7 @@ namespace Elwig.Windows { private void InitialInputs() { ViewModel.LastScaleError = null; - ViewModel.WeighingId = null; + ViewModel.WeighingData = null; ViewModel.ScaleId = null; ViewModel.ManualWeighingReason = null; @@ -525,7 +525,7 @@ namespace Elwig.Windows { OnWeighingResult(s, res); } catch (Exception ex) { ViewModel.LastScaleError = ex.Message.Split(": ")[^1]; - OnWeighingResult(s, new() { Weight = 0 }); + OnWeighingResult(s, new()); MessageBox.Show($"Beim Wiegen ist ein Fehler aufgetreten:\n\n{ex.Message}", "Waagenfehler", MessageBoxButton.OK, MessageBoxImage.Error); } @@ -538,16 +538,16 @@ namespace Elwig.Windows { } private void OnWeighingResult(IScale scale, WeighingResult res) { - if ((res.Weight ?? 0) > 0 && res.FullWeighingId != null) { - ViewModel.Weight = res.Weight; + if ((res.NetWeight ?? 0) > 0 && res.FullWeighingId != null) { + ViewModel.Weight = res.NetWeight; ViewModel.ScaleId = scale.ScaleId; - ViewModel.WeighingId = res.FullWeighingId; + ViewModel.WeighingData = res.ToJson().ToJsonString(); ViewModel.ManualWeighingReason = null; ManualWeighingInput.IsChecked = false; } else { ViewModel.Weight = null; ViewModel.ScaleId = null; - ViewModel.WeighingId = null; + ViewModel.WeighingData = null; } ViewModel.LastScaleError = null; TextBox_TextChanged(WeightInput, null); @@ -842,7 +842,7 @@ namespace Elwig.Windows { ManualWeighingInput.IsChecked = true; ViewModel.ManualWeighingReason = res?.Item2; ViewModel.ScaleId = null; - ViewModel.WeighingId = null; + ViewModel.WeighingData = null; } protected override void ShortcutEdit() { @@ -1004,7 +1004,7 @@ namespace Elwig.Windows { DId = await ctx.NextDId(p.Year), LNr = lnr, DateString = $"{delivery.Date:yyyy-MM-dd}", - TimeString = $"{delivery.Time:HH:mm:SS}", + TimeString = $"{delivery.Time:HH:mm:ss}", ZwstId = delivery.ZwstId, MgNr = delivery.MgNr, Comment = delivery.Comment, diff --git a/Tests/DocumentTests/DeliveryNoteTest.cs b/Tests/DocumentTests/DeliveryNoteTest.cs index 5128689..a63ccec 100644 --- a/Tests/DocumentTests/DeliveryNoteTest.cs +++ b/Tests/DocumentTests/DeliveryNoteTest.cs @@ -21,12 +21,13 @@ namespace Tests.DocumentTests { Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}")); Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X001")); - Assert.That(text, Contains.Substring("Ich bin der Text, der auf einem Traubenübernahmeschein steht!")); + Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht")); Assert.That(text, Contains.Substring(""" 1 Grüner Veltliner Qualitätswein 73 15,0 3 219 Herkunft: Österreich / Weinland / Niederösterreich / Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: 1, ID: 321 – 09:02, 01.10.2020 + Brutto: 3 219 kg – Tara: 0 kg – Netto: 3 219 kg – gerebelt gewogen """)); }); } @@ -48,18 +49,18 @@ namespace Tests.DocumentTests { Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}")); Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X004")); - Assert.That(text, Contains.Substring("Ich bin der Text, der auf einem Traubenübernahmeschein steht!")); + Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht")); Assert.That(text, Contains.Substring(""" 1 Grüner Veltliner Qualitätswein 82 16,7 4 002 Herkunft: Österreich / Weinland / Niederösterreich / Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring(""" 2 Grüner Veltliner Qualitätswein 75 15,3 481 Herkunft: Österreich / Weinland / Niederösterreich / Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring("Gesamt: 81 16,5 4 483")); }); @@ -81,24 +82,24 @@ namespace Tests.DocumentTests { Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}")); Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X003")); - Assert.That(text, Contains.Substring("Ich bin der Text, der auf einem Traubenübernahmeschein steht!")); + Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht")); Assert.That(text, Contains.Substring(""" 1 Grüner Veltliner Qualitätswein 75 15,4 2 561 Herkunft: Österreich / Weinland / Niederösterreich / Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring(""" 2 Grüner Veltliner Kabinett Kabinett 87 17,6 3 129 Herkunft: Österreich / Weinland / Niederösterreich / Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring(""" 3 Grüner Veltliner Qualitätswein 79 16,1 1 280 Herkunft: Österreich / Weinland / Niederösterreich / Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring("Gesamt: 81 16,5 6 970")); }); @@ -120,20 +121,20 @@ namespace Tests.DocumentTests { Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}")); Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201002X001")); - Assert.That(text, Contains.Substring("Ich bin der Text, der auf einem Traubenübernahmeschein steht!")); + Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht")); Assert.That(text, Contains.Substring(""" 1 Grüner Veltliner Qualitätswein 80 16,3 3 198 Bewirtschaftung: Bio (AT-BIO-302) Herkunft: Österreich / Weinland / Niederösterreich / Wolkersdorfer Hochleithen / Wolkersdorf im Weinviertel / KG Wolkersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring(""" 2 Grüner Veltliner Qualitätswein 75 15,4 2 134 Bewirtschaftung: Bio (AT-BIO-302) Herkunft: Österreich / Weinland / Niederösterreich / Wolkersdorfer Hochleithen / Wolkersdorf im Weinviertel / KG Wolkersdorf - Waage: ?, ID: ? (netto/gerebelt gewogen) + Waage: ?, ID: ? (gerebelt gewogen) """)); Assert.That(text, Contains.Substring("Gesamt: 78 15,9 5 332")); }); diff --git a/Tests/Resources/Sql/BillingInsert.sql b/Tests/Resources/Sql/BillingInsert.sql index f878d2c..0ee9178 100644 --- a/Tests/Resources/Sql/BillingInsert.sql +++ b/Tests/Resources/Sql/BillingInsert.sql @@ -40,7 +40,7 @@ INSERT INTO delivery (mgnr, year, did, date, time, zwstid, lnr) VALUES (101, 2020, 1, '2020-10-01', NULL, 'X', 1), (101, 2020, 2, '2020-10-01', NULL, 'X', 2), (101, 2020, 3, '2020-10-01', NULL, 'X', 3); -INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, net_weight, manual_weighing, spl_check, scale_id, weighing_id, weighing_reason) VALUES +INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, net_weight, manual_weighing, spl_check, scale_id, weighing_data, weighing_reason) VALUES (2020, 1, 1, 'GV', 'K', NULL, 4000, 17, 'KAB', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2020, 1, 2, 'GV', NULL, NULL, 4000, 16, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2020, 2, 1, 'GV', NULL, 'B', 4000, 15, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), @@ -55,7 +55,7 @@ INSERT INTO delivery (mgnr, year, did, date, time, zwstid, lnr) VALUES (101, 2021, 1, '2021-10-01', NULL, 'X', 1), (101, 2021, 2, '2021-10-01', NULL, 'X', 2), (101, 2021, 3, '2021-10-01', NULL, 'X', 3); -INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, gebunden, net_weight, manual_weighing, spl_check, scale_id, weighing_id, weighing_reason) VALUES +INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, gebunden, net_weight, manual_weighing, spl_check, scale_id, weighing_data, weighing_reason) VALUES (2021, 1, 1, 'GV', 'K', NULL, 4000, 17, 'KAB', 'WLNO', 06109, TRUE, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2021, 1, 2, 'GV', NULL, NULL, 4000, 16, 'QUW', 'WLNO', 06109, FALSE, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2021, 2, 1, 'GV', NULL, 'B', 4000, 15, 'QUW', 'WLNO', 06109, TRUE, TRUE, FALSE, FALSE, NULL, NULL, NULL), diff --git a/Tests/Resources/Sql/DocumentInsert.sql b/Tests/Resources/Sql/DocumentInsert.sql index 63a42b4..22b3b96 100644 --- a/Tests/Resources/Sql/DocumentInsert.sql +++ b/Tests/Resources/Sql/DocumentInsert.sql @@ -27,8 +27,8 @@ INSERT INTO delivery (mgnr, year, did, date, time, zwstid, lnr) VALUES (104, 2020, 11, '2020-10-03', '14:39:22', 'X', 2), (104, 2020, 12, '2020-10-03', '15:15:41', 'X', 3); -INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, net_weight, manual_weighing, spl_check, scale_id, weighing_id, weighing_reason) VALUES -(2020, 1, 1, 'GV', NULL, NULL, 3219, 15.0, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), +INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, net_weight, manual_weighing, spl_check, scale_id, weighing_data, weighing_reason) VALUES +(2020, 1, 1, 'GV', NULL, NULL, 3219, 15.0, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, '1', '{"id":"321","nr":321,"gross_weight":3219,"tare_weight":0,"net_weight":3219,"date":"2020-10-01","time":"09:02:46"}', NULL), (2020, 2, 1, 'GV', 'K', NULL, 2987, 17.5, 'KAB', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2020, 2, 2, 'GV', 'K', NULL, 1873, 17.7, 'KAB', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2020, 3, 1, 'GV', NULL, NULL, 2561, 15.4, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL), diff --git a/Tests/Resources/Sql/Insert.sql b/Tests/Resources/Sql/Insert.sql index 905d9fa..34e2980 100644 --- a/Tests/Resources/Sql/Insert.sql +++ b/Tests/Resources/Sql/Insert.sql @@ -45,7 +45,7 @@ INSERT INTO client_parameter (param, value) VALUES ('CLIENT_IBAN', 'AT11 1234 5678 9012 3456'), ('CLIENT_LFBISNR', '0123455'), ('CLIENT_USTIDNR', 'ATU12345675'), -('TEXT_DELIVERYNOTE', 'Ich bin der Text, der auf einem Traubenübernahmeschein steht!'); +('TEXT_DELIVERYNOTE', 'Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht und insbesondere die Bestimmungen über die Mengenbeschränkung 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.'); INSERT INTO branch (zwstid, name, country, postal_dest, address) VALUES ('X', 'Test', 40, 212005138, 'Genossenschaftsstraße 1'); diff --git a/Tests/WeighingTests/ScaleTestBadenL320.cs b/Tests/WeighingTests/ScaleTestBadenL320.cs index b6fc32e..4c53c43 100644 --- a/Tests/WeighingTests/ScaleTestBadenL320.cs +++ b/Tests/WeighingTests/ScaleTestBadenL320.cs @@ -37,8 +37,8 @@ namespace Tests.WeighingTests { await Task.Delay(100); Assert.That(res, Is.Not.Null); Assert.That(res, Is.EqualTo(new WeighingResult { - Weight = 2345, WeighingId = "1", - FullWeighingId = $"2020-09-28/1", + NetWeight = 2345, + WeighingId = "1", FullWeighingId = $"2020-09-28/1", Date = new DateOnly(2020, 9, 28), Time = new TimeOnly(9, 8), })); @@ -46,9 +46,8 @@ namespace Tests.WeighingTests { await Task.Delay(100); Assert.That(res, Is.Not.Null); Assert.That(res, Is.EqualTo(new WeighingResult { - Weight = 4215, - WeighingId = "2", - FullWeighingId = $"2020-09-28/2", + NetWeight = 4215, + WeighingId = "2", FullWeighingId = $"2020-09-28/2", Date = new DateOnly(2020, 9, 28), Time = new TimeOnly(9, 8), })); diff --git a/Tests/WeighingTests/ScaleTestGrInzersdorfL246.cs b/Tests/WeighingTests/ScaleTestGrInzersdorfL246.cs index a13768b..071ecd8 100644 --- a/Tests/WeighingTests/ScaleTestGrInzersdorfL246.cs +++ b/Tests/WeighingTests/ScaleTestGrInzersdorfL246.cs @@ -30,15 +30,18 @@ namespace Tests.WeighingTests { public async Task Test_01_CurrentWeight() { Mock.Weight = 1235; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1235, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), + GrossWeight = 1235, TareWeight = 0, NetWeight = 1235, + Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), })); Mock.Weight = 1240; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1240, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), + GrossWeight = 1240, TareWeight = 0, NetWeight = 1240, + Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), })); Mock.Weight = 1245; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1245, Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), + GrossWeight = 1245, TareWeight = 0, NetWeight = 1245, + Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), })); } @@ -46,20 +49,20 @@ namespace Tests.WeighingTests { public async Task Test_02_Normal() { Mock.Weight = 1235; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 1235, WeighingId = "1", - FullWeighingId = $"2020-10-17/1", + GrossWeight = 1235, TareWeight = 0, NetWeight = 1235, + WeighingId = "1", FullWeighingId = $"2020-10-17/1", Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), })); Mock.Weight = 3335; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 3335, WeighingId = "2", - FullWeighingId = $"2020-10-17/2", + GrossWeight = 3335, TareWeight = 0, NetWeight = 3335, + WeighingId = "2", FullWeighingId = $"2020-10-17/2", Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), })); Mock.Weight = 6420; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 6420, WeighingId = "3", - FullWeighingId = $"2020-10-17/3", + GrossWeight = 6420, TareWeight = 0, NetWeight = 6420, + WeighingId = "3", FullWeighingId = $"2020-10-17/3", Date = new DateOnly(2020, 10, 17), Time = new TimeOnly(14, 23), })); } diff --git a/Tests/WeighingTests/ScaleTestMatzenIT3000A.cs b/Tests/WeighingTests/ScaleTestMatzenIT3000A.cs index 1153ac9..9e79bfc 100644 --- a/Tests/WeighingTests/ScaleTestMatzenIT3000A.cs +++ b/Tests/WeighingTests/ScaleTestMatzenIT3000A.cs @@ -30,15 +30,18 @@ namespace Tests.WeighingTests { public async Task Test_01_CurrentWeight() { Mock.Weight = 1234; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1234, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), + GrossWeight = 1234, TareWeight = 0, NetWeight = 1234, + Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 1235; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1235, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), + GrossWeight = 1235, TareWeight = 0, NetWeight = 1235, + Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 1236; Assert.That(await Scale!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1236, Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), + GrossWeight = 1236, TareWeight = 0, NetWeight = 1236, + Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); } @@ -46,20 +49,20 @@ namespace Tests.WeighingTests { public async Task Test_02_Normal() { Mock.Weight = 1234; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 1234, WeighingId = "1", - FullWeighingId = $"2020-10-15/1", + GrossWeight = 1234, TareWeight = 0, NetWeight = 1234, + WeighingId = "1", FullWeighingId = $"2020-10-15/1", Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 3333; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 3333, WeighingId = "2", - FullWeighingId = $"2020-10-15/2", + GrossWeight = 3333, TareWeight = 0, NetWeight = 3333, + WeighingId = "2", FullWeighingId = $"2020-10-15/2", Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); Mock.Weight = 4321; Assert.That(await Scale!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 4321, WeighingId = "3", - FullWeighingId = $"2020-10-15/3", + GrossWeight = 4321, TareWeight = 0, NetWeight = 4321, + WeighingId = "3", FullWeighingId = $"2020-10-15/3", Date = new DateOnly(2020, 10, 15), Time = new TimeOnly(12, 34), })); } diff --git a/Tests/WeighingTests/ScaleTestWolkersdorfIT6000E.cs b/Tests/WeighingTests/ScaleTestWolkersdorfIT6000E.cs index c08c5a5..2944a4d 100644 --- a/Tests/WeighingTests/ScaleTestWolkersdorfIT6000E.cs +++ b/Tests/WeighingTests/ScaleTestWolkersdorfIT6000E.cs @@ -78,19 +78,23 @@ namespace Tests.WeighingTests { public async Task Test_01_CurrentWeight() { MockA.Weight = 1234; Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1234, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), + GrossWeight = 1234, TareWeight = 0, NetWeight = 1234, + Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); MockB.Weight = 3456; Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 3456, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), + GrossWeight = 3456, TareWeight = 0, NetWeight = 3456, + Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); MockA.Weight = 1236; Assert.That(await ScaleA!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 1236, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), + GrossWeight = 1236, TareWeight = 0, NetWeight = 1236, + Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); MockB.Weight = 3457; Assert.That(await ScaleB!.GetCurrentWeight(), Is.EqualTo(new WeighingResult { - Weight = 3457, Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), + GrossWeight = 3457, TareWeight = 0, NetWeight = 3457, + Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); } @@ -98,26 +102,26 @@ namespace Tests.WeighingTests { public async Task Test_02_Normal() { MockA.Weight = 1234; Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 1234, WeighingId = "1", - FullWeighingId = $"2020-10-08/1", + GrossWeight = 1234, TareWeight = 0, NetWeight = 1234, + WeighingId = "1", FullWeighingId = $"2020-10-08/1", Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); MockB.Weight = 3456; Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 3456, WeighingId = "1", - FullWeighingId = $"2020-10-08/1", + GrossWeight = 3456, TareWeight = 0, NetWeight = 3456, + WeighingId = "1", FullWeighingId = $"2020-10-08/1", Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); MockA.Weight = 4321; Assert.That(await ScaleA!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 4321, WeighingId = "2", - FullWeighingId = $"2020-10-08/2", + GrossWeight = 4321, TareWeight = 0, NetWeight = 4321, + WeighingId = "2", FullWeighingId = $"2020-10-08/2", Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); MockB.Weight = 3333; Assert.That(await ScaleB!.Weigh(), Is.EqualTo(new WeighingResult { - Weight = 3333, WeighingId = "2", - FullWeighingId = $"2020-10-08/2", + GrossWeight = 3333, TareWeight = 0, NetWeight = 3333, + WeighingId = "2", FullWeighingId = $"2020-10-08/2", Date = new DateOnly(2020, 10, 8), Time = new TimeOnly(8, 47), })); } diff --git a/Tests/fetch-resources.bat b/Tests/fetch-resources.bat index eaa54ab..0363416 100644 --- a/Tests/fetch-resources.bat +++ b/Tests/fetch-resources.bat @@ -1 +1 @@ -curl --fail -s -L "https://elwig.at/files/create.sql?v=24" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql" +curl --fail -s -L "https://elwig.at/files/create.sql?v=25" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql"