From 65ae2090ac637ff917b3ff2383f4f81ba459d6f1 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner <lorenz.stechauner@necronda.net> Date: Wed, 8 Nov 2023 17:57:17 +0100 Subject: [PATCH] SeasonFinishWindow: Add table in export csv for deliveries and area coms --- Elwig/Windows/SeasonFinishWindow.xaml.cs | 47 +++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/Elwig/Windows/SeasonFinishWindow.xaml.cs b/Elwig/Windows/SeasonFinishWindow.xaml.cs index 65fc337..63298d7 100644 --- a/Elwig/Windows/SeasonFinishWindow.xaml.cs +++ b/Elwig/Windows/SeasonFinishWindow.xaml.cs @@ -120,7 +120,7 @@ namespace Elwig.Windows { FROM member m LEFT JOIN AT_plz_dest p ON p.id = m.postal_dest LEFT JOIN AT_ort o ON o.okz = p.okz - LEFT JOIN v_area_commitment_bucket_strict c ON (c.mgnr, c.year) = (m.mgnr, s.year) + LEFT JOIN v_area_commitment_bucket_strict c ON c.mgnr = m.mgnr AND c.year = {year} JOIN v_under_delivery u ON (u.mgnr, u.bucket, u.year) = (m.mgnr, c.bucket, c.year) WHERE m.active = 1 ORDER BY m.mgnr, c.bucket @@ -141,6 +141,51 @@ namespace Elwig.Windows { } } + await file.WriteLineAsync($";;;;;;;;;;;"); + await file.WriteLineAsync($"Lieferungen pro Mitglied und Sorte;;;;;;;;;;;"); + await file.WriteLineAsync($"MgNr;Name;Vorname;Adresse;PLZ;Ort;Sorte;Attribut;Geliefert;Fläche;Ertrag"); + using (var cmd = cnx.CreateCommand()) { + cmd.CommandText = $""" + SELECT m.mgnr, m.family_name, m.given_name, p.plz, o.name, m.address, + v.bucket, v.weight, v.area + FROM ( + SELECT c.year AS year, + c.mgnr AS mgnr, + c.bucket AS bucket, + COALESCE(d.weight, 0) AS weight, + COALESCE(c.area, 0) AS area + FROM v_area_commitment_bucket_strict c + LEFT JOIN v_delivery_bucket_strict d ON (d.year, d.mgnr, d.bucket) = (c.year, c.mgnr, c.bucket) + WHERE c.year = {year} + UNION + SELECT d.year, + d.mgnr, + d.bucket, + COALESCE(d.weight, 0), + COALESCE(c.area, 0) + FROM v_delivery_bucket_strict d + LEFT JOIN v_area_commitment_bucket_strict c ON (c.year, c.mgnr, c.bucket) = (d.year, d.mgnr, d.bucket) + WHERE d.year = {year} + ) v + LEFT JOIN member m ON m.mgnr = v.mgnr + LEFT JOIN AT_plz_dest p ON p.id = m.postal_dest + LEFT JOIN AT_ort o ON o.okz = p.okz + ORDER BY m.mgnr, v.bucket + """; + using var reader = await cmd.ExecuteReaderAsync(); + while (await reader.ReadAsync()) { + var mgnr = reader.GetInt32(0); + var familyName = reader.GetString(1); + var givenName = reader.GetString(2); + var plz = reader.GetInt32(3); + var ort = reader.GetString(4).Split(',')[0]; + var addr = reader.GetString(5); + var id = reader.GetString(6); + var sum = reader.GetInt32(7); + var area = reader.GetInt32(8); + await file.WriteLineAsync($"{mgnr};{familyName};{givenName};{addr};{plz};{ort};{id[..2]};{id[2..]};{sum};{area};{(area > 0 ? sum * 10000 / area : "")}"); + } + } } catch (Exception exc) { MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); }