@if (i == 0) {
@p.LsNr |
- @p.DPNr |
+ @p.DPNr |
@p.Variety |
@p.Attribute@(p.Attribute != null && p.Cultivation != null ? " / " : "")@p.Cultivation
diff --git a/Elwig/Documents/DeliveryConfirmation.cshtml b/Elwig/Documents/DeliveryConfirmation.cshtml
index 3bdc972..52f91b1 100644
--- a/Elwig/Documents/DeliveryConfirmation.cshtml
+++ b/Elwig/Documents/DeliveryConfirmation.cshtml
@@ -9,8 +9,8 @@
-
-
+
+
@@ -60,7 +60,7 @@
i + 1 ? "last" : "")">
@if (first) {
@p.LsNr |
- @p.DPNr |
+ @p.DPNr |
@p.Variety |
@p.Attribute@(p.Attribute != null && p.Cultivation != null ? " / " : "")@p.Cultivation |
@p.QualityLevel |
diff --git a/Elwig/Documents/DeliveryDepreciationList.cs b/Elwig/Documents/DeliveryDepreciationList.cs
new file mode 100644
index 0000000..5fb92c4
--- /dev/null
+++ b/Elwig/Documents/DeliveryDepreciationList.cs
@@ -0,0 +1,22 @@
+using Elwig.Models.Dtos;
+using System.Collections.Generic;
+
+namespace Elwig.Documents {
+ public class DeliveryDepreciationList : Document {
+
+ public new static string Name => "Abwertungsliste";
+
+ public string Filter;
+ public IEnumerable Deliveries;
+
+ public DeliveryDepreciationList(string filter, IEnumerable deliveries) :
+ base($"{Name} {filter}") {
+ Filter = filter;
+ Deliveries = deliveries;
+ }
+
+ public DeliveryDepreciationList(string filter, DeliveryJournalData data) :
+ this(filter, data.Rows) {
+ }
+ }
+}
diff --git a/Elwig/Documents/DeliveryDepreciationList.cshtml b/Elwig/Documents/DeliveryDepreciationList.cshtml
new file mode 100644
index 0000000..df85d07
--- /dev/null
+++ b/Elwig/Documents/DeliveryDepreciationList.cshtml
@@ -0,0 +1,104 @@
+@using RazorLight
+@inherits TemplatePage
+@model Elwig.Documents.DeliveryDepreciationList
+@{ Layout = "Document"; }
+
+
+ Abwertungsliste
+ @Model.Filter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Lieferschein-Nr. |
+ Pos. |
+ Datum |
+ Zeit |
+ Sorte |
+ Attr./Bewirt. |
+ Gradation |
+ Gewicht |
+
+
+ [°Oe] |
+ [°KMW] |
+ [kg] |
+
+
+
+ @{
+ int? lastMember = null;
+ }
+ @foreach (var p in Model.Deliveries) {
+ if (lastMember != p.MgNr) {
+
+ @{
+ var memberDeliveries = Model.Deliveries.Where(d => d.MgNr == p.MgNr).ToList();
+ var memberKmw = Elwig.Helpers.Utils.AggregateDeliveryPartsKmw(memberDeliveries);
+ var memberOe = Elwig.Helpers.Utils.KmwToOe(memberKmw);
+ }
+
+ @($"{p.MgNr}, {p.AdministrativeName}")
+ |
+ Teil-Lfrg.: @($"{memberDeliveries.Count():N0}") |
+ @($"{memberOe:N0}") |
+ @($"{memberKmw:N1}") |
+ @($"{memberDeliveries.Sum(p => p.Weight):N0}") |
+
+ }
+
+ @p.LsNr |
+ @p.Pos |
+ @($"{p.Date:dd.MM.yyyy}") |
+ @($"{p.Time:HH:mm}") |
+ @p.Variety |
+ @p.Attribute@(p.Attribute != null && p.Cultivation != null ? " / " : "")@p.Cultivation |
+ @($"{p.Oe:N0}") |
+ @($"{p.Kmw:N1}") |
+ @($"{p.Weight:N0}") |
+
+ lastMember = p.MgNr;
+ }
+ @{
+ var branches = Model.Deliveries.Select(d => d.DeliveryBranch).Distinct().Order().ToArray();
+ if (branches.Length > 1) {
+ foreach (var b in branches) {
+
+ @{
+ var branchDeliveries = Model.Deliveries.Where(d => d.DeliveryBranch == b).ToList();
+ var branchKmw = Elwig.Helpers.Utils.AggregateDeliveryPartsKmw(branchDeliveries);
+ var branchOe = Elwig.Helpers.Utils.KmwToOe(branchKmw);
+ }
+ @b: |
+ (Teil-)Lieferungen: @($"{branchDeliveries.DistinctBy(p => p.LsNr).Count():N0}") (@($"{branchDeliveries.Count():N0}")) |
+ @($"{branchOe:N0}") |
+ @($"{branchKmw:N1}") |
+ @($"{branchDeliveries.Sum(p => p.Weight):N0}") |
+
+ }
+ }
+ }
+
+ @{
+ var kmw = Elwig.Helpers.Utils.AggregateDeliveryPartsKmw(Model.Deliveries);
+ var oe = Elwig.Helpers.Utils.KmwToOe(kmw);
+ }
+ Gesamt: |
+ (Teil-)Lieferungen: @($"{Model.Deliveries.DistinctBy(p => p.LsNr).Count():N0}") (@($"{Model.Deliveries.Count():N0}")) |
+ @($"{oe:N0}") |
+ @($"{kmw:N1}") |
+ @($"{Model.Deliveries.Sum(p => p.Weight):N0}") |
+
+
+
+
diff --git a/Elwig/Documents/DeliveryDepreciationList.css b/Elwig/Documents/DeliveryDepreciationList.css
new file mode 100644
index 0000000..f0d3b56
--- /dev/null
+++ b/Elwig/Documents/DeliveryDepreciationList.css
@@ -0,0 +1,13 @@
+
+h1 {
+ text-align: center;
+ font-size: 24pt;
+ margin-top: 10mm;
+ margin-bottom: 2mm;
+}
+
+h2 {
+ text-align: center;
+ font-size: 14pt;
+ margin-top: 2mm;
+}
diff --git a/Elwig/Documents/DeliveryJournal.cs b/Elwig/Documents/DeliveryJournal.cs
index 293ed42..2e531aa 100644
--- a/Elwig/Documents/DeliveryJournal.cs
+++ b/Elwig/Documents/DeliveryJournal.cs
@@ -9,7 +9,8 @@ namespace Elwig.Documents {
public string Filter;
public IEnumerable Deliveries;
- public DeliveryJournal(string filter, IEnumerable deliveries) : base($"{Name} {filter}") {
+ public DeliveryJournal(string filter, IEnumerable deliveries) :
+ base($"{Name} {filter}") {
Filter = filter;
Deliveries = deliveries;
}
diff --git a/Elwig/Documents/DeliveryJournal.cshtml b/Elwig/Documents/DeliveryJournal.cshtml
index cb8054b..6ef0a21 100644
--- a/Elwig/Documents/DeliveryJournal.cshtml
+++ b/Elwig/Documents/DeliveryJournal.cshtml
@@ -9,10 +9,10 @@
-
+
-
-
+
+
@@ -41,7 +41,7 @@
@foreach (var p in Model.Deliveries) {
@p.LsNr |
- @p.Pos |
+ @p.Pos |
@($"{p.Date:dd.MM.yyyy}") |
@($"{p.Time:HH:mm}") |
@p.MgNr |
@@ -52,6 +52,25 @@
@($"{p.Weight:N0}") |
}
+ @{
+ var branches = Model.Deliveries.Select(d => d.DeliveryBranch).Distinct().Order().ToArray();
+ if (branches.Length > 1) {
+ foreach (var b in branches) {
+
+ @{
+ var branchDeliveries = Model.Deliveries.Where(d => d.DeliveryBranch == b).ToList();
+ var branchKmw = Elwig.Helpers.Utils.AggregateDeliveryPartsKmw(branchDeliveries);
+ var branchOe = Elwig.Helpers.Utils.KmwToOe(branchKmw);
+ }
+ @b: |
+ (Teil-)Lieferungen: @($"{branchDeliveries.DistinctBy(p => p.LsNr).Count():N0}") (@($"{branchDeliveries.Count():N0}")) |
+ @($"{branchOe:N0}") |
+ @($"{branchKmw:N1}") |
+ @($"{branchDeliveries.Sum(p => p.Weight):N0}") |
+
+ }
+ }
+ }
@{
var kmw = Elwig.Helpers.Utils.AggregateDeliveryPartsKmw(Model.Deliveries);
diff --git a/Elwig/Documents/Document.cs b/Elwig/Documents/Document.cs
index 4a77a55..348083a 100644
--- a/Elwig/Documents/Document.cs
+++ b/Elwig/Documents/Document.cs
@@ -78,6 +78,8 @@ namespace Elwig.Documents {
name = "CreditNote";
} else if (this is DeliveryJournal) {
name = "DeliveryJournal";
+ } else if (this is DeliveryDepreciationList) {
+ name = "DeliveryDepreciationList";
} else if (this is Letterhead) {
name = "Letterhead";
} else if (this is DeliveryConfirmation) {
diff --git a/Elwig/Services/DeliveryService.cs b/Elwig/Services/DeliveryService.cs
index 4d90cbb..6725d88 100644
--- a/Elwig/Services/DeliveryService.cs
+++ b/Elwig/Services/DeliveryService.cs
@@ -24,7 +24,7 @@ namespace Elwig.Services {
public static class DeliveryService {
public enum ExportSubject {
- FromFilters, FromToday, FromSeasonAndBranch, Selected,
+ FromFilters, FromToday, FromSeason, FromSeasonAndBranch, Selected,
};
public static async Task GetMemberAsync(int mgnr) {
@@ -809,6 +809,71 @@ namespace Elwig.Services {
Mouse.OverrideCursor = null;
}
+ public static async Task GenerateDeliveryDepreciationList(this DeliveryAdminViewModel vm, ExportSubject subject, ExportMode mode) {
+ using var ctx = new AppDbContext();
+ IQueryable query;
+ List filterNames = [];
+ if (subject == ExportSubject.FromFilters) {
+ var (f, _, q, _, _) = await vm.GetFilters(ctx);
+ query = q;
+ filterNames.AddRange(f);
+ } else if (subject == ExportSubject.FromSeason) {
+ var year = vm.FilterSeason ?? Utils.CurrentLastSeason;
+ query = ctx.DeliveryParts
+ .Where(p => p.Year == year);
+ filterNames.Add($"{year}");
+ } else {
+ throw new ArgumentException("Invalid value for ExportSubject");
+ }
+
+ query = query
+ .Where(p => p.QualId == "WEI")
+ .OrderBy(p => p.Delivery.MgNr)
+ .ThenBy(p => p.Delivery.DateString)
+ .ThenBy(p => p.Delivery.TimeString)
+ .ThenBy(p => p.Delivery.LsNr)
+ .ThenBy(p => p.DPNr);
+ filterNames.Remove("abgewertet");
+
+ if (mode == ExportMode.SaveList) {
+ var d = new SaveFileDialog() {
+ FileName = $"{DeliveryDepreciationList.Name}-{vm.FilterSeason ?? Utils.CurrentLastSeason}.ods",
+ DefaultExt = "ods",
+ Filter = "OpenDocument Format Spreadsheet (*.ods)|*.ods",
+ Title = $"{DeliveryDepreciationList.Name} speichern unter - Elwig"
+ };
+ if (d.ShowDialog() == true) {
+ Mouse.OverrideCursor = Cursors.AppStarting;
+ try {
+ using var ods = new OdsFile(d.FileName);
+ var tblTotal = await DeliveryJournalData.FromQuery(query, filterNames);
+ tblTotal.FullName = DeliveryDepreciationList.Name;
+ tblTotal.Name = "Gesamt";
+ await ods.AddTable(tblTotal);
+ foreach (var branch in await ctx.Branches.OrderBy(b => b.Name).ToListAsync()) {
+ var tbl = await DeliveryJournalData.FromQuery(query.Where(p => p.Delivery.ZwstId == branch.ZwstId), filterNames);
+ tbl.FullName = DeliveryDepreciationList.Name;
+ tbl.Name = branch.Name;
+ await ods.AddTable(tbl);
+ }
+ } catch (Exception exc) {
+ MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ }
+ Mouse.OverrideCursor = null;
+ }
+ } else {
+ Mouse.OverrideCursor = Cursors.AppStarting;
+ try {
+ var data = await DeliveryJournalData.FromQuery(query, filterNames);
+ using var doc = new DeliveryDepreciationList(string.Join(" / ", filterNames), data);
+ await Utils.ExportDocument(doc, mode);
+ } catch (Exception exc) {
+ MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
+ }
+ Mouse.OverrideCursor = null;
+ }
+ }
+
private static void AddToolTipCell(Grid grid, string text, int row, int col, int colSpan = 1, bool bold = false, bool alignRight = false, bool alignCenter = false) {
var tb = new TextBlock() {
Text = text,
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml b/Elwig/Windows/DeliveryAdminWindow.xaml
index 9d18fe4..acf3f9d 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml
@@ -120,6 +120,25 @@
+
diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
index 14560a7..d1f46d9 100644
--- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs
+++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs
@@ -252,6 +252,23 @@ namespace Elwig.Windows {
await App.Client.UpdateValues();
}
+ private async void Menu_DeliveryDepreciationList_SaveFilters_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromFilters, ExportMode.SaveList);
+ private async void Menu_DeliveryDepreciationList_ShowFilters_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromFilters, ExportMode.Show);
+ private async void Menu_DeliveryDepreciationList_SavePdfFilters_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromFilters, ExportMode.SavePdf);
+ private async void Menu_DeliveryDepreciationList_PrintFilters_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromFilters, ExportMode.Print);
+ private async void Menu_DeliveryDepreciationList_SaveSeason_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromSeason, ExportMode.SaveList);
+ private async void Menu_DeliveryDepreciationList_ShowSeason_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromSeason, ExportMode.Show);
+ private async void Menu_DeliveryDepreciationList_SavePdfSeason_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromSeason, ExportMode.SavePdf);
+ private async void Menu_DeliveryDepreciationList_PrintSeason_Click(object sender, RoutedEventArgs evt) =>
+ await ViewModel.GenerateDeliveryDepreciationList(DeliveryService.ExportSubject.FromSeason, ExportMode.Print);
+
private void Menu_Settings_EnableFreeEditing_Checked(object sender, RoutedEventArgs evt) {
if (IsEditing || IsCreating) {
DateInput.IsReadOnly = false;
diff --git a/Tests/DocumentTests/CreditNoteTest.cs b/Tests/DocumentTests/CreditNoteTest.cs
index 0195c6e..265d312 100644
--- a/Tests/DocumentTests/CreditNoteTest.cs
+++ b/Tests/DocumentTests/CreditNoteTest.cs
@@ -29,9 +29,10 @@ namespace Tests.DocumentTests {
Assert.That(text, Contains.Substring("AT81 1234 5678 9012 3457"));
Assert.That(text, Contains.Substring("""
20201001X001 1 Grüner Veltliner 73 15,0 ungeb.: 3 219 0,5000 - - 1 609,50
- 20201001X003 1 Grüner Veltliner 75 15,4 ungeb.: 2 561 - -
- 20201001X003 2 Grüner Veltliner Kabinett 87 17,6 ungeb.: 3 129 - -
- 20201001X003 3 Grüner Veltliner 79 16,1 ungeb.: 1 280 - -
+ 20201001X003 1 Grüner Veltliner abgew. 75 15,4 ungeb.: 2 561 - -
+ 20201001X003 2 Grüner Veltliner Kabinett / abgew.
+ 87 17,6 ungeb.: 3 129 - -
+ 20201001X003 3 Grüner Veltliner abgew. 79 16,1 ungeb.: 1 280 - -
20201001X005 1 Welschriesling 84 17,0 ungeb.: 3 192 - -
20201001X005 2 Welschriesling 84 17,1 ungeb.: 2 190 - -
"""));
diff --git a/Tests/DocumentTests/DeliveryConfirmationTest.cs b/Tests/DocumentTests/DeliveryConfirmationTest.cs
index 3199d03..262dae9 100644
--- a/Tests/DocumentTests/DeliveryConfirmationTest.cs
+++ b/Tests/DocumentTests/DeliveryConfirmationTest.cs
@@ -24,10 +24,10 @@ namespace Tests.DocumentTests {
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
Assert.That(text, Contains.Substring("Anlieferungsbestätigung 2020"));
Assert.That(text, Contains.Substring("""
- 20201001X003 2 Grüner Veltliner Kabinett Kabinett 87 17,6 ungeb.: 3 129 3 129 ☑
- 20201001X003 3 Grüner Veltliner Qualitätswein 79 16,1 ungeb.: 1 280 1 280 ☑
- 20201001X003 1 Grüner Veltliner Qualitätswein 75 15,4 ungeb.: 2 561 2 561 ☑
20201001X001 1 Grüner Veltliner Qualitätswein 73 15,0 ungeb.: 3 219 3 219 ☑
+ 20201001X003 2 Grüner Veltliner Kabinett Wein 87 17,6 ungeb.: 3 129 3 129 ☑
+ 20201001X003 3 Grüner Veltliner Wein 79 16,1 ungeb.: 1 280 1 280 ☑
+ 20201001X003 1 Grüner Veltliner Wein 75 15,4 ungeb.: 2 561 2 561 ☑
20201001X005 2 Welschriesling Kabinett 84 17,1 ungeb.: 2 190 2 190 ☑
20201001X005 1 Welschriesling Kabinett 84 17,0 ungeb.: 3 192 3 192 ☑
"""));
diff --git a/Tests/DocumentTests/DeliveryDepreciationListTest.cs b/Tests/DocumentTests/DeliveryDepreciationListTest.cs
new file mode 100644
index 0000000..c1a126d
--- /dev/null
+++ b/Tests/DocumentTests/DeliveryDepreciationListTest.cs
@@ -0,0 +1,32 @@
+using Elwig.Documents;
+using Elwig.Helpers;
+using Elwig.Models.Dtos;
+
+namespace Tests.DocumentTests {
+ [TestFixture]
+ public class DeliveryDepreciationListTest {
+
+ [Test]
+ public async Task Test_01_DepreciatedDeliveries2020() {
+ using var ctx = new AppDbContext();
+ var data = await DeliveryJournalData.FromQuery(ctx.Deliveries.Where(d => d.Year == 2020).SelectMany(d => d.Parts).Where(d => d.QualId == "WEI"), ["Saison 2020"]);
+ using var doc = new DeliveryDepreciationList("Saison 2020", data);
+ var text = await Utils.GeneratePdfText(doc, true);
+ var table = Utils.ExtractTable(text);
+ Assert.Multiple(() => {
+ Assert.That(text, Contains.Substring("Abwertungsliste"));
+ Assert.That(text, Contains.Substring("Saison 2020"));
+ Assert.That(table, Is.EqualTo(new string[][] {
+ ["101, MUSTERMANN Max", "Teil-Lfrg.:", "3", "81", "16,5", "6 970"],
+ ["20201001X003 1 01.10.2020 10:24", "Grüner Veltliner", "75", "15,4", "2 561"],
+ ["20201001X003 2 01.10.2020 10:24", "Grüner Veltliner", "Kabinett", "87", "17,6", "3 129"],
+ ["20201001X003 3 01.10.2020 10:24", "Grüner Veltliner", "79", "16,1", "1 280"],
+ ["103, MUSTERBAUER Matthäus", "Teil-Lfrg.:", "2", "79", "16,2", "6 099"],
+ ["20201002X001 1 02.10.2020 09:13", "Grüner Veltliner", "Bio", "80", "16,3", "3 198"],
+ ["20201002X002 1 02.10.2020 09:28", "Grüner Veltliner", "Bio", "78", "16,0", "2 901"],
+ ["Gesamt:", "(Teil-)Lieferungen: 3 (5)", "80", "16,3", "13 069"],
+ }));
+ });
+ }
+ }
+}
diff --git a/Tests/DocumentTests/DeliveryNoteTest.cs b/Tests/DocumentTests/DeliveryNoteTest.cs
index 11235d6..6529d62 100644
--- a/Tests/DocumentTests/DeliveryNoteTest.cs
+++ b/Tests/DocumentTests/DeliveryNoteTest.cs
@@ -84,20 +84,20 @@ namespace Tests.DocumentTests {
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X003"));
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
+ 1 Grüner Veltliner Wein 75 15,4 2 561
+ Herkunft: Österreich
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
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
+ 2 Grüner Veltliner Kabinett Wein 87 17,6 3 129
+ Herkunft: Österreich
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
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
+ 3 Grüner Veltliner Wein 79 16,1 1 280
+ Herkunft: Österreich
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
Waage: ?, ID: ? (gerebelt gewogen)
"""));
@@ -123,9 +123,9 @@ namespace Tests.DocumentTests {
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201002X001"));
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
+ 1 Grüner Veltliner Wein 80 16,3 3 198
Bewirtschaftung: Bio (AT-BIO-302)
- Herkunft: Österreich / Weinland / Niederösterreich
+ Herkunft: Österreich
/ Wolkersdorfer Hochleithen / Wolkersdorf im Weinviertel / KG Wolkersdorf
Waage: ?, ID: ? (gerebelt gewogen)
"""));
diff --git a/Tests/DocumentTests/WineQualityStatisticsTest.cs b/Tests/DocumentTests/WineQualityStatisticsTest.cs
index 616b3aa..f145fef 100644
--- a/Tests/DocumentTests/WineQualityStatisticsTest.cs
+++ b/Tests/DocumentTests/WineQualityStatisticsTest.cs
@@ -16,14 +16,19 @@ namespace Tests.DocumentTests {
Assert.That(text, Contains.Substring("Qualitätsstatistik"));
Assert.That(text, Contains.Substring("Saison 2020"));
Assert.That(text, Contains.Substring("""
- Qualitätswein
- 73 2 4 431
- 74 2 4 203
- 75 3 5 176
- 77 1 842
+ Wein
+ 75 1 2 561
78 1 2 901
79 1 1 280
80 1 3 198
+ 87 1 3 129
+ """));
+ Assert.That(text, Contains.Substring("""
+ Qualitätswein
+ 73 2 4 431
+ 74 2 4 203
+ 75 2 2 615
+ 77 1 842
82 1 4 002
"""));
Assert.That(text, Contains.Substring("""
@@ -31,14 +36,14 @@ namespace Tests.DocumentTests {
84 3 8 960
85 3 11 181
86 1 2 987
- 87 2 5 002
+ 87 1 1 873
89 2 4 723
"""));
Assert.That(text, Contains.Substring(
+ "80 5 " + "13 069 " +
"- 0 0 " +
- "- 0 0 " +
- "77 12 " + "26 033 " +
- "86 11 " + "32 853"));
+ "77 5 " + "11 568 " +
+ "85 6 " + "17 561"));
});
}
}
diff --git a/Tests/Resources/Sql/DocumentInsert.sql b/Tests/Resources/Sql/DocumentInsert.sql
index a61dfe5..543dab4 100644
--- a/Tests/Resources/Sql/DocumentInsert.sql
+++ b/Tests/Resources/Sql/DocumentInsert.sql
@@ -43,17 +43,17 @@ INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw,
(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),
-(2020, 3, 2, 'GV', 'K', NULL, 3129, 17.6, 'KAB', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
-(2020, 3, 3, 'GV', NULL, NULL, 1280, 16.1, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
+(2020, 3, 1, 'GV', NULL, NULL, 2561, 15.4, 'WEI', 'OEST', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
+(2020, 3, 2, 'GV', 'K', NULL, 3129, 17.6, 'WEI', 'OEST', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
+(2020, 3, 3, 'GV', NULL, NULL, 1280, 16.1, 'WEI', 'OEST', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 4, 1, 'GV', NULL, NULL, 4002, 16.7, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 4, 2, 'GV', NULL, NULL, 481, 15.3, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 5, 1, 'WR', NULL, NULL, 3192, 17.0, 'KAB', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 5, 2, 'WR', NULL, NULL, 2190, 17.1, 'KAB', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 6, 1, 'GV', NULL, 'B', 1732, 15.2, 'QUW', 'WLNO', 06109, TRUE, FALSE, FALSE, NULL, NULL, NULL),
-(2020, 7, 1, 'GV', NULL, 'B', 3198, 16.3, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
+(2020, 7, 1, 'GV', NULL, 'B', 3198, 16.3, 'WEI', 'OEST', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 7, 2, 'GV', NULL, 'B', 2134, 15.4, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
-(2020, 8, 1, 'GV', NULL, 'B', 2901, 16.0, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
+(2020, 8, 1, 'GV', NULL, 'B', 2901, 16.0, 'WEI', 'OEST', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 8, 2, 'GV', NULL, 'B', 3321, 17.3, 'KAB', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 9, 1, 'WR', NULL, 'B', 3998, 17.2, 'KAB', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 10, 1, 'ZW', NULL, NULL, 1212, 15.0, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
|