diff --git a/Elwig/Helpers/AppDbUpdater.cs b/Elwig/Helpers/AppDbUpdater.cs index d36988d..7ed3427 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 = 40; + public static readonly int RequiredSchemaVersion = 41; private static int VersionOffset = 0; diff --git a/Elwig/Helpers/Export/Bki.cs b/Elwig/Helpers/Export/Bki.cs index f02cc73..d4a0504 100644 --- a/Elwig/Helpers/Export/Bki.cs +++ b/Elwig/Helpers/Export/Bki.cs @@ -6,7 +6,7 @@ using System; namespace Elwig.Helpers.Export { - using Row = Tuple<(string?, string?, string?, string?, string, int, string, int), (string, int, string, string, string, int, string, double, double)>; + using Row = Tuple<(string?, string?, string?, string?, string, int, string, bool, int), (string, int, string, string, string, int, string, double, double)>; public class Bki : Csv { @@ -29,7 +29,7 @@ namespace Elwig.Helpers.Export { using var cnx = await AppDbContext.ConnectAsync(); using var cmd = cnx.CreateCommand(); cmd.CommandText = $""" - SELECT lfbis_nr, name, other_names, billing_name, address, plz, ort, area, + SELECT lfbis_nr, name, other_names, billing_name, address, plz, ort, vollablieferer, area, date, weight, type, sortid, qualid, year, hkid, kmw, oe FROM v_bki_delivery WHERE year = {year} @@ -38,8 +38,8 @@ namespace Elwig.Helpers.Export { List rows = []; while (await r.ReadAsync()) { rows.Add(new( - (r.IsDBNull(0) ? null : r.GetString(0), r.IsDBNull(1) ? null : r.GetString(1), r.IsDBNull(2) ? null : r.GetString(2), r.IsDBNull(3) ? null : r.GetString(3), r.GetString(4), r.GetInt32(5), r.GetString(6), r.GetInt32(7)), - (r.GetString(8), r.GetInt32(9), r.GetString(10), r.GetString(11), r.GetString(12), r.GetInt32(13), r.GetString(14), r.GetDouble(15), r.GetDouble(16)) + (r.IsDBNull(0) ? null : r.GetString(0), r.IsDBNull(1) ? null : r.GetString(1), r.IsDBNull(2) ? null : r.GetString(2), r.IsDBNull(3) ? null : r.GetString(3), r.GetString(4), r.GetInt32(5), r.GetString(6), r.GetBoolean(7), r.GetInt32(8)), + (r.GetString(9), r.GetInt32(10), r.GetString(11), r.GetString(12), r.GetString(13), r.GetInt32(14), r.GetString(15), r.GetDouble(16), r.GetDouble(17)) )); } @@ -52,14 +52,14 @@ namespace Elwig.Helpers.Export { public override string FormatRow(Row row) { var (member, delivery) = row; - var (lfBisNr, familyName, name, billingName, address, plz, ort, area) = member; + var (lfBisNr, familyName, name, billingName, address, plz, ort, vollablieferer, area) = member; var (date, weight, type, sortid, qualid, year, hkid, kmw, oe) = delivery; var (n1, n2) = billingName == null ? (familyName, name) : Utils.SplitName(billingName, familyName); var (a1, a2) = Utils.SplitAddress(address); var memberData = $"{lfBisNr};{n1};{n2};{a1};\t{a2};{plz};{ort}"; var deliveryData = $"{string.Join(".", date.Split("-").Reverse())};{weight};TB;{(type == "W" ? "J" : "")};{(type == "R" ? "J" : "")};{sortid};;;{qualid};{year};{hkid};{kmw:0.0};{oe:0}"; - var vollData = $"N;;;{area / 10_000.0}"; + var vollData = $"{(vollablieferer ? "J" : "N")};{(vollablieferer ? area / 10_000.0 : null):N4};{(vollablieferer ? area / 10_000.0 : null):N4};{area / 10_000.0:N4}"; return $"{_clientData};{memberData};{deliveryData};{vollData}"; } diff --git a/Elwig/Models/Entities/DeliveryPart.cs b/Elwig/Models/Entities/DeliveryPart.cs index 9b94652..fc6379d 100644 --- a/Elwig/Models/Entities/DeliveryPart.cs +++ b/Elwig/Models/Entities/DeliveryPart.cs @@ -118,7 +118,7 @@ namespace Elwig.Models.Entities { [Column("acid")] public double? Acid { get; set; } - [Column("scale_id")] + [Column("scale_terminal")] public string? ScaleTerminalId { get; set; } [Column("weighing_data")] diff --git a/Elwig/Resources/Sql/40-41.sql b/Elwig/Resources/Sql/40-41.sql new file mode 100644 index 0000000..db3d2a1 --- /dev/null +++ b/Elwig/Resources/Sql/40-41.sql @@ -0,0 +1,37 @@ +-- schema version 40 to 41 + +PRAGMA writable_schema = ON; + +UPDATE sqlite_schema SET sql = REPLACE(sql, 'scale_id ', 'scale_terminal') +WHERE type = 'table' AND name = 'delivery_part'; + +DROP VIEW v_bki_delivery; +DROP VIEW v_bki_member; + +CREATE VIEW v_bki_member AS +SELECT s.year, m.mgnr, m.lfbis_nr, m.name, + (COALESCE(m.prefix || ' ', '') || m.given_name || COALESCE(' ' || m.middle_names, '') || COALESCE(' ' || m.suffix, '')) AS other_names, + a.name AS billing_name, COALESCE(a.address, m.address) AS address, + COALESCE(a.country, m.country) AS country, COALESCE(a.postal_dest, m.postal_dest) AS postal_dest, + m.volllieferant AS vollablieferer, + SUM(COALESCE(IIF((c.year_from IS NULL OR c.year_from <= s.year) AND (c.year_to IS NULL OR c.year_to >= s.year), c.area, NULL), 0)) AS area +FROM season s, member m + LEFT JOIN member_billing_address a ON a.mgnr = m.mgnr + LEFT JOIN area_commitment c ON c.mgnr = m.mgnr +GROUP BY s.year, m.mgnr; + +CREATE VIEW v_bki_delivery AS +SELECT m.lfbis_nr, m.name, m.other_names, m.billing_name, + m.address, plz.plz, IIF(INSTR(o.name, ',') = 0, o.name, SUBSTR(o.name, 1, INSTR(o.name, ',') - 1)) AS ort, + d.date, d.weight, v.type, v.sortid, d.qualid, d.year, d.hkid, d.kmw, d.oe, + m.vollablieferer, m.area +FROM v_delivery d + JOIN v_bki_member m ON (m.year, m.mgnr) = (d.year, d.mgnr) + JOIN postal_dest pd ON (pd.country, pd.id) = (m.country, m.postal_dest) + LEFT JOIN AT_plz_dest ap ON (ap.country, ap.id) = (pd.country, pd.id) + LEFT JOIN AT_plz plz ON plz.plz = ap.plz + LEFT JOIN AT_ort o ON o.okz = ap.okz + JOIN wine_variety v ON v.sortid = d.sortid +ORDER BY d.date, d.time; + +PRAGMA writable_schema = OFF; diff --git a/Tests/Resources/Sql/BillingInsert.sql b/Tests/Resources/Sql/BillingInsert.sql index 7a34340..f9a6190 100644 --- a/Tests/Resources/Sql/BillingInsert.sql +++ b/Tests/Resources/Sql/BillingInsert.sql @@ -45,7 +45,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_data, 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_terminal, 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), @@ -60,7 +60,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_data, 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_terminal, 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 18d3968..76afff4 100644 --- a/Tests/Resources/Sql/DocumentInsert.sql +++ b/Tests/Resources/Sql/DocumentInsert.sql @@ -39,7 +39,7 @@ 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_data, 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_terminal, 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), diff --git a/Tests/Resources/Sql/ServiceInsert.sql b/Tests/Resources/Sql/ServiceInsert.sql index 54942fd..bc14b00 100644 --- a/Tests/Resources/Sql/ServiceInsert.sql +++ b/Tests/Resources/Sql/ServiceInsert.sql @@ -76,7 +76,7 @@ INSERT INTO delivery (mgnr, year, did, date, time, zwstid, lnr) VALUES (101, 2023, 18, '2023-10-10', NULL, 'X', 2), (101, 2023, 19, '2023-10-10', 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_data, 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_terminal, weighing_data, weighing_reason) VALUES (2021, 1, 1, 'GV', NULL, NULL, 3500, 15.0, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2021, 2, 1, 'GV', NULL, NULL, 4000, 17.0, 'KAB', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL), (2021, 2, 2, 'GV', NULL, NULL, 4000, 16.0, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL), diff --git a/Tests/fetch-resources.bat b/Tests/fetch-resources.bat index a44050d..9e5ddd8 100644 --- a/Tests/fetch-resources.bat +++ b/Tests/fetch-resources.bat @@ -1 +1 @@ -curl --fail -s -L "https://elwig.at/files/create.sql?v=40" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql" +curl --fail -s -L "https://elwig.at/files/create.sql?v=41" -u "elwig:ganzGeheim123!" -o "Resources\Sql\Create.sql"