From c772ddcc122b789fbbd6c65e29b8d16d31682ea5 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 27 Jun 2024 13:35:20 +0200 Subject: [PATCH] database: Add payment_custom and v_penalty_business_shares --- sql/v01/13.create.payment.sql | 17 +++++++++++++++++ sql/v01/32.create.penalty-view.sql | 24 +++++++++++++++++++----- sql/v01/99.schema_version.sql | 2 +- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/sql/v01/13.create.payment.sql b/sql/v01/13.create.payment.sql index 1ff9bef..18533fe 100644 --- a/sql/v01/13.create.payment.sql +++ b/sql/v01/13.create.payment.sql @@ -149,6 +149,23 @@ CREATE TABLE payment_member ( ON DELETE CASCADE ) STRICT; +-- all values in the table are stored with precision 2! +CREATE TABLE payment_custom ( + year INTEGER NOT NULL, + mgnr INTEGER NOT NULL, + + amount INTEGER NOT NULL, + comment TEXT, + + CONSTRAINT pk_payment_custom PRIMARY KEY (year, mgnr), + CONSTRAINT fk_payment_custom_season FOREIGN KEY (year) REFERENCES season (year) + ON UPDATE CASCADE + ON DELETE CASCADE, + CONSTRAINT fk_payment_custom_member FOREIGN KEY (mgnr) REFERENCES member (mgnr) + ON UPDATE CASCADE + ON DELETE CASCADE +) STRICT; + -- all values in the table are stored with precision 2! CREATE TABLE credit ( year INTEGER NOT NULL, diff --git a/sql/v01/32.create.penalty-view.sql b/sql/v01/32.create.penalty-view.sql index bf958e5..cf9b0ed 100644 --- a/sql/v01/32.create.penalty-view.sql +++ b/sql/v01/32.create.penalty-view.sql @@ -1,10 +1,24 @@ +CREATE VIEW v_penalty_business_shares AS +SELECT u.year, u.mgnr, + SUM(IIF(u.weight = 0, COALESCE(-s.penalty_none, 0) + COALESCE(-u.business_shares * s.penalty_per_bs_none, 0), 0) + + IIF(u.diff < 0, COALESCE(-s.penalty_amount, 0), 0) + + COALESCE(u.diff * s.penalty_per_kg, 0) + COALESCE(CEIL(CAST(u.diff AS REAL) / s.min_kg_per_bs) * s.penalty_per_bs_amount, 0) + ) AS total_penalty +FROM v_total_under_delivery u + JOIN season s ON u.year = s.year + JOIN member m ON m.mgnr = u.mgnr +WHERE m.active +GROUP BY u.year, u.mgnr +HAVING total_penalty < 0 +ORDER BY u.year, u.mgnr; + CREATE VIEW v_penalty_area_commitments AS -SELECT year, mgnr, - SUM(COALESCE(IIF(u.weight = 0, -t.penalty_none, 0), 0) + - COALESCE(IIF(u.diff < 0, -t.penalty_amount, 0), 0) + - COALESCE(u.diff * t.penalty_per_kg, 0) - ) AS total_penalty +SELECT u.year, u.mgnr, + SUM(COALESCE(IIF(u.weight = 0, -t.penalty_none, 0), 0) + + COALESCE(IIF(u.diff < 0, -t.penalty_amount, 0), 0) + + COALESCE(u.diff * t.penalty_per_kg, 0) + ) AS total_penalty FROM v_under_delivery u JOIN area_commitment_type t ON t.vtrgid = u.bucket GROUP BY year, mgnr diff --git a/sql/v01/99.schema_version.sql b/sql/v01/99.schema_version.sql index 98f6304..b2bf2f7 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 = 2100; +PRAGMA schema_version = 2200;