From 35d313d1eaa276c0670ea079654afa998330abfb Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Fri, 22 Dec 2023 15:36:05 +0100 Subject: [PATCH] database: Update payment triggers --- sql/v01/13.create.payment.sql | 20 ++++++++++---------- sql/v01/99.schema_version.sql | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sql/v01/13.create.payment.sql b/sql/v01/13.create.payment.sql index 68294fa..dc1b9c4 100644 --- a/sql/v01/13.create.payment.sql +++ b/sql/v01/13.create.payment.sql @@ -57,19 +57,19 @@ CREATE TRIGGER t_payment_delivery_part_i AFTER INSERT ON payment_delivery_part FOR EACH ROW BEGIN INSERT INTO payment_member (year, avnr, mgnr, net_amount) - VALUES (NEW.year, NEW.avnr, (SELECT mgnr FROM delivery WHERE (year, did) = (NEW.year, NEW.did)), NEW.amount) + SELECT year, NEW.avnr, mgnr, NEW.amount FROM delivery WHERE (year, did) = (NEW.year, NEW.did) ON CONFLICT DO UPDATE SET net_amount = net_amount + excluded.net_amount; END; CREATE TRIGGER t_payment_delivery_part_u - AFTER UPDATE OF amount ON payment_delivery_part FOR EACH ROW + AFTER UPDATE ON payment_delivery_part FOR EACH ROW BEGIN UPDATE payment_member SET net_amount = net_amount - OLD.amount - WHERE (year, avnr, mgnr) = (NEW.year, NEW.avnr, (SELECT mgnr FROM delivery WHERE (year, did) = (NEW.year, NEW.did))); - UPDATE payment_member - SET net_amount = net_amount + NEW.amount - WHERE (year, avnr, mgnr) = (NEW.year, NEW.avnr, (SELECT mgnr FROM delivery WHERE (year, did) = (NEW.year, NEW.did))); + WHERE (year, avnr, mgnr) IN (SELECT year, OLD.avnr, mgnr FROM delivery WHERE (year, did) = (OLD.year, OLD.did)); + INSERT INTO payment_member (year, avnr, mgnr, net_amount) + SELECT year, NEW.avnr, mgnr, NEW.amount FROM delivery WHERE (year, did) = (NEW.year, NEW.did) + ON CONFLICT DO UPDATE SET net_amount = net_amount + excluded.net_amount; END; CREATE TRIGGER t_payment_delivery_part_d @@ -77,7 +77,7 @@ CREATE TRIGGER t_payment_delivery_part_d BEGIN UPDATE payment_member SET net_amount = net_amount - OLD.amount - WHERE (year, avnr, mgnr) = (OLD.year, OLD.avnr, (SELECT mgnr FROM delivery WHERE (year, did) = (OLD.year, OLD.did))); + WHERE (year, avnr, mgnr) IN (SELECT year, OLD.avnr, mgnr FROM delivery WHERE (year, did) = (OLD.year, OLD.did)); END; -- all values in the table are stored with season-precision! @@ -109,11 +109,11 @@ BEGIN END; CREATE TRIGGER t_payment_delivery_part_bucket_u - AFTER UPDATE OF amount ON payment_delivery_part_bucket FOR EACH ROW + AFTER UPDATE ON payment_delivery_part_bucket FOR EACH ROW BEGIN UPDATE payment_delivery_part SET net_amount = net_amount - OLD.amount - WHERE (year, did, dpnr, avnr) = (NEW.year, NEW.did, NEW.dpnr, NEW.avnr); + WHERE (year, did, dpnr, avnr) = (OLD.year, OLD.did, OLD.dpnr, OLD.avnr); UPDATE payment_delivery_part SET net_amount = net_amount + NEW.amount WHERE (year, did, dpnr, avnr) = (NEW.year, NEW.did, NEW.dpnr, NEW.avnr); @@ -136,7 +136,7 @@ CREATE TABLE payment_member ( 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_rel)) STORED, + amount INTEGER NOT NULL GENERATED ALWAYS AS (ROUND(net_amount * (1 + mod_rel) + mod_abs)) STORED, CONSTRAINT pk_payment_member PRIMARY KEY (year, avnr, mgnr), CONSTRAINT fk_payment_member_payment_variant FOREIGN KEY (year, avnr) REFERENCES payment_variant (year, avnr) diff --git a/sql/v01/99.schema_version.sql b/sql/v01/99.schema_version.sql index c81b804..e673a1a 100644 --- a/sql/v01/99.schema_version.sql +++ b/sql/v01/99.schema_version.sql @@ -1,3 +1,3 @@ -- This value MUST NOT be changed while other connections are open! -PRAGMA schema_version = 1000; +PRAGMA schema_version = 1100;