SeasonFinishWindow: Add table in export csv for deliveries and area coms
This commit is contained in:
@ -120,7 +120,7 @@ namespace Elwig.Windows {
|
|||||||
FROM member m
|
FROM member m
|
||||||
LEFT JOIN AT_plz_dest p ON p.id = m.postal_dest
|
LEFT JOIN AT_plz_dest p ON p.id = m.postal_dest
|
||||||
LEFT JOIN AT_ort o ON o.okz = p.okz
|
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)
|
JOIN v_under_delivery u ON (u.mgnr, u.bucket, u.year) = (m.mgnr, c.bucket, c.year)
|
||||||
WHERE m.active = 1
|
WHERE m.active = 1
|
||||||
ORDER BY m.mgnr, c.bucket
|
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) {
|
} catch (Exception exc) {
|
||||||
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(exc.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user