diff --git a/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml b/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml
new file mode 100644
index 0000000..6fc5d15
--- /dev/null
+++ b/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs b/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs
new file mode 100644
index 0000000..31f0d9c
--- /dev/null
+++ b/Elwig/Dialogs/DeliveryConfirmationsDialog.xaml.cs
@@ -0,0 +1,101 @@
+using Elwig.Documents;
+using Elwig.Models;
+using Elwig.Windows;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Input;
+
+namespace Elwig.Dialogs {
+ public partial class DeliveryConfirmationsDialog : ContextWindow {
+
+ public readonly int Year;
+
+ public DeliveryConfirmationsDialog(int year) {
+ InitializeComponent();
+ Year = year;
+ Title = $"Anlieferungsbestätigungen - Lese {Year} - Elwig";
+ TextElement.Text = App.Client.TextDeliveryConfirmation;
+ if (!App.Config.Debug) {
+ TestButton.Visibility = Visibility.Hidden;
+ }
+ }
+
+ protected override async Task OnRenewContext() { }
+
+ private async Task UpdateTextParameter() {
+ var text = TextElement.Text;
+ if (text.Length == 0) text = null;
+ if (text != App.Client.TextDeliveryConfirmation) {
+ App.Client.TextDeliveryConfirmation = text;
+ await App.Client.UpdateValues();
+ }
+ }
+
+ private async Task Generate(int mode) {
+
+ Mouse.OverrideCursor = Cursors.AppStarting;
+ await UpdateTextParameter();
+
+ var members = Context.Members.FromSqlRaw($"""
+ SELECT m.*
+ FROM member m
+ INNER JOIN delivery d ON d.mgnr = m.mgnr
+ WHERE d.year = {Year}
+ GROUP BY m.mgnr
+ """);
+ if (OrderMgNrInput.IsChecked == true) {
+ members = members
+ .OrderBy(m => m.MgNr);
+ } else if (OrderNameInput.IsChecked == true) {
+ members = members
+ .OrderBy(m => m.FamilyName)
+ .ThenBy(m => m.GivenName)
+ .ThenBy(m => m.MgNr);
+ } else if (OrderPlzInput.IsChecked == true) {
+ members = members
+ .OrderBy(m => m.PostalDest.AtPlz.Plz)
+ .ThenBy(m => m.PostalDest.AtPlz.Ort.Name)
+ .ThenBy(m => m.FamilyName)
+ .ThenBy(m => m.GivenName)
+ .ThenBy(m => m.MgNr);
+ }
+
+ IEnumerable list = await members.ToListAsync();
+ if (mode == 0) {
+ var r = new Random().Next(0, 10);
+ list = list.Where((_, n) => n % 10 == r);
+ }
+
+ using var doc = await Document.Merge(list.Select(m => new DeliveryConfirmation(Context, Year, m))); ;
+ await doc.Generate();
+ Mouse.OverrideCursor = null;
+
+ if (mode < 2) {
+ doc.Show();
+ return;
+ }
+ if (App.Config.Debug) {
+ doc.Show();
+ } else {
+ await doc.Print();
+ }
+ Close();
+ }
+
+ private async void TestButton_Click(object sender, RoutedEventArgs evt) {
+ await Generate(0);
+ }
+
+ private async void ShowButton_Click(object sender, RoutedEventArgs evt) {
+ await Generate(1);
+ }
+
+ private async void PrintButton_Click(object sender, RoutedEventArgs evt) {
+ await Generate(2);
+ }
+ }
+}
diff --git a/Elwig/Windows/SeasonFinishWindow.xaml.cs b/Elwig/Windows/SeasonFinishWindow.xaml.cs
index 10e79e4..936872c 100644
--- a/Elwig/Windows/SeasonFinishWindow.xaml.cs
+++ b/Elwig/Windows/SeasonFinishWindow.xaml.cs
@@ -1,8 +1,6 @@
-using Elwig.Documents;
+using Elwig.Dialogs;
using Elwig.Helpers;
using Elwig.Helpers.Billing;
-using Microsoft.EntityFrameworkCore;
-using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
@@ -46,32 +44,11 @@ namespace Elwig.Windows {
CalculateBinsButton.IsEnabled = true;
}
- private async void DeliveryConfirmationButton_Click(object sender, RoutedEventArgs evt) {
+ private void DeliveryConfirmationButton_Click(object sender, RoutedEventArgs evt) {
if (SeasonInput.Value is not int year)
return;
- var res = MessageBox.Show(
- $"Sollen wirklich alle Bestätigungen gedruckt werden?", "Ausdruck Bestätigen",
- MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.No);
- if (res != MessageBoxResult.Yes)
- return;
- Mouse.OverrideCursor = Cursors.AppStarting;
- using var doc = await Document.Merge(Context.Members.FromSqlRaw($"""
- SELECT m.*
- FROM member m
- JOIN delivery d ON d.mgnr = m.mgnr
- WHERE m.active AND d.year = {year}
- GROUP BY m.mgnr
- ORDER BY m.mgnr
- """)
- .ToList()
- .Select(m => new DeliveryConfirmation(Context, year, m)));
- await doc.Generate();
- Mouse.OverrideCursor = null;
- if (App.Config.Debug) {
- doc.Show();
- } else {
- await doc.Print();
- }
+ var d = new DeliveryConfirmationsDialog(year);
+ d.Show();
}
private void OverUnderDeliveryButton_Click(object sender, RoutedEventArgs evt) {