diff --git a/Elwig/Resources/Sql/10-11.sql b/Elwig/Resources/Sql/10-11.sql index dfdc057..0f082f9 100644 --- a/Elwig/Resources/Sql/10-11.sql +++ b/Elwig/Resources/Sql/10-11.sql @@ -1,17 +1,33 @@ -- schema version 10 to 11 --- Drop columns, if they exist... -ALTER TABLE payment_delivery_part DROP COLUMN price_1; -ALTER TABLE payment_delivery_part DROP COLUMN price_2; -ALTER TABLE payment_delivery_part DROP COLUMN price_3; -ALTER TABLE payment_delivery_part DROP COLUMN price_4; -ALTER TABLE payment_delivery_part DROP COLUMN price_5; -ALTER TABLE payment_delivery_part DROP COLUMN price_6; -ALTER TABLE payment_delivery_part DROP COLUMN price_7; -ALTER TABLE payment_delivery_part DROP COLUMN price_8; -ALTER TABLE payment_delivery_part DROP COLUMN price_9; +CREATE TABLE payment_delivery_part_new ( + year INTEGER NOT NULL, + did INTEGER NOT NULL, + dpnr INTEGER NOT NULL, + avnr INTEGER NOT NULL, -DROP TRIGGER t_payment_delivery_part_i; + net_amount INTEGER NOT NULL, + mod_abs INTEGER NOT NULL DEFAULT 0, + mod_rel REAL NOT NULL DEFAULT 0, + amount INTEGER NOT NULL GENERATED ALWAYS AS (ROUND(net_amount * (1 + mod_rel) + mod_abs)) STORED, + + CONSTRAINT pk_payment_delivery_part PRIMARY KEY (year, did, dpnr, avnr), + CONSTRAINT fk_payment_delivery_part_delivery_part FOREIGN KEY (year, did, dpnr) REFERENCES delivery_part (year, did, dpnr) + ON UPDATE CASCADE + ON DELETE CASCADE, + CONSTRAINT fk_payment_delivery_part_payment_variant FOREIGN KEY (year, avnr) REFERENCES payment_variant (year, avnr) + ON UPDATE CASCADE + ON DELETE CASCADE +) STRICT; +INSERT INTO payment_delivery_part_new (year, did, dpnr, avnr, net_amount, mod_abs, mod_rel) +SELECT year, did, dpnr, avnr, net_amount, mod_abs, mod_rel +FROM payment_delivery_part; +PRAGMA writable_schema = ON; +DROP TABLE payment_delivery_part; +ALTER TABLE payment_delivery_part_new RENAME TO payment_delivery_part; +PRAGMA writable_schema = OFF; + +DROP TRIGGER IF EXISTS t_payment_delivery_part_i; CREATE TRIGGER t_payment_delivery_part_i AFTER INSERT ON payment_delivery_part FOR EACH ROW BEGIN @@ -20,7 +36,7 @@ BEGIN ON CONFLICT DO UPDATE SET net_amount = net_amount + excluded.net_amount; END; -DROP TRIGGER t_payment_delivery_part_u; +DROP TRIGGER IF EXISTS t_payment_delivery_part_u; CREATE TRIGGER t_payment_delivery_part_u AFTER UPDATE ON payment_delivery_part FOR EACH ROW BEGIN @@ -32,7 +48,7 @@ BEGIN ON CONFLICT DO UPDATE SET net_amount = net_amount + excluded.net_amount; END; -DROP TRIGGER t_payment_delivery_part_d; +DROP TRIGGER IF EXISTS t_payment_delivery_part_d; CREATE TRIGGER t_payment_delivery_part_d AFTER DELETE ON payment_delivery_part FOR EACH ROW BEGIN @@ -41,7 +57,7 @@ BEGIN WHERE (year, avnr, mgnr) IN (SELECT year, OLD.avnr, mgnr FROM delivery WHERE (year, did) = (OLD.year, OLD.did)); END; -DROP TRIGGER t_payment_delivery_part_bucket_u; +DROP TRIGGER IF EXISTS t_payment_delivery_part_bucket_u; CREATE TRIGGER t_payment_delivery_part_bucket_u AFTER UPDATE ON payment_delivery_part_bucket FOR EACH ROW BEGIN