AppDbUpdater: Add new VIEWs for penalties
This commit is contained in:
@ -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 = 13;
|
||||
public static readonly int RequiredSchemaVersion = 14;
|
||||
|
||||
private static int VersionOffset = 0;
|
||||
|
||||
|
@ -43,11 +43,10 @@ namespace Elwig.Helpers.Billing {
|
||||
ROUND(p.amount / POW(10, s.precision - 2)) AS net_amount,
|
||||
ROUND(lp.amount / POW(10, s.precision - 2)) AS prev_amount,
|
||||
IIF(m.buchführend, s.vat_normal, s.vat_flatrate) AS vat,
|
||||
ROUND(
|
||||
IIF({Data.ConsiderContractPenalties}, COALESCE(u.total_penalty, 0) / POW(10, 4 - 2), 0) +
|
||||
IIF({Data.ConsiderTotalPenalty}, COALESCE(b.total_penalty, 0), 0) +
|
||||
IIF({Data.ConsiderAutoBusinessShares}, -COALESCE(a.business_shares * s.bs_value, 0), 0) / POW(10, s.precision - 2)
|
||||
) AS modifiers,
|
||||
ROUND(IIF({Data.ConsiderContractPenalties}, COALESCE(u.total_penalty, 0), 0) / POW(10, 4 - 2)) +
|
||||
ROUND(IIF({Data.ConsiderTotalPenalty}, COALESCE(b.total_penalty, 0), 0) / POW(10, s.precision - 2)) +
|
||||
ROUND(IIF({Data.ConsiderAutoBusinessShares}, -COALESCE(a.total_amount, 0), 0) / POW(10, s.precision - 2))
|
||||
AS modifiers,
|
||||
lc.modifiers AS prev_modifiers
|
||||
FROM season s
|
||||
JOIN payment_variant v ON v.year = s.year
|
||||
@ -63,26 +62,9 @@ namespace Elwig.Helpers.Billing {
|
||||
LEFT JOIN payment_member lp ON (lp.year, lp.avnr, lp.mgnr) = (l.year, l.avnr, m.mgnr)
|
||||
LEFT JOIN payment_member p ON (p.year, p.avnr, p.mgnr) = (v.year, v.avnr, m.mgnr)
|
||||
LEFT JOIN credit lc ON (lc.year, lc.avnr, lc.mgnr) = (l.year, l.avnr, m.mgnr)
|
||||
LEFT JOIN (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
|
||||
FROM v_under_delivery u
|
||||
JOIN area_commitment_type t ON t.vtrgid = u.bucket
|
||||
GROUP BY year, mgnr) u ON (u.year, u.mgnr) = (s.year, m.mgnr)
|
||||
LEFT JOIN (SELECT s.year, u.mgnr,
|
||||
(COALESCE(IIF(u.weight = 0, -s.penalty_none, 0), 0) +
|
||||
COALESCE(IIF(u.diff < 0, -s.penalty_amount, 0), 0) +
|
||||
COALESCE(u.diff * s.penalty_per_kg, 0)
|
||||
) / POW(10, s.precision - 2) AS total_penalty
|
||||
FROM v_total_under_delivery u
|
||||
JOIN season s ON s.year = u.year
|
||||
WHERE u.diff < 0) b ON (b.year, b.mgnr) = (s.year, m.mgnr)
|
||||
LEFT JOIN (SELECT h.mgnr, h.business_shares
|
||||
FROM member_history h
|
||||
WHERE type = 'auto' AND
|
||||
date >= '{Year}-06-01' AND
|
||||
date < '{Year + 1}-06-01') a ON a.mgnr = m.mgnr
|
||||
LEFT JOIN v_penalty_area_commitments u ON (u.year, u.mgnr) = (s.year, m.mgnr)
|
||||
LEFT JOIN v_penalty_business_shares b ON (b.year, b.mgnr) = (s.year, m.mgnr)
|
||||
LEFT JOIN v_auto_business_shares a ON (a.year, a.mgnr) = (s.year, m.mgnr)
|
||||
WHERE s.year = {Year} AND v.avnr = {AvNr};
|
||||
|
||||
UPDATE payment_variant SET test_variant = FALSE WHERE (year, avnr) = ({Year}, {AvNr});
|
||||
|
@ -1,4 +1,4 @@
|
||||
-- schema version 11 to 12
|
||||
-- schema version 12 to 13
|
||||
|
||||
ALTER TABLE season ADD COLUMN bs_value INTEGER;
|
||||
|
||||
|
33
Elwig/Resources/Sql/13-14.sql
Normal file
33
Elwig/Resources/Sql/13-14.sql
Normal file
@ -0,0 +1,33 @@
|
||||
-- schema version 13 to 14
|
||||
|
||||
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
|
||||
FROM v_under_delivery u
|
||||
JOIN area_commitment_type t ON t.vtrgid = u.bucket
|
||||
GROUP BY year, mgnr
|
||||
HAVING total_penalty < 0
|
||||
ORDER BY year, mgnr;
|
||||
|
||||
CREATE VIEW v_penalty_business_shares AS
|
||||
SELECT s.year, u.mgnr,
|
||||
(COALESCE(IIF(u.weight = 0, -s.penalty_none, 0), 0) +
|
||||
COALESCE(IIF(u.diff < 0, -s.penalty_amount, 0), 0) +
|
||||
COALESCE(u.diff * s.penalty_per_kg, 0)
|
||||
) AS total_penalty
|
||||
FROM v_total_under_delivery u
|
||||
JOIN season s ON s.year = u.year
|
||||
WHERE u.diff < 0 AND total_penalty < 0
|
||||
ORDER BY s.year, u.mgnr;
|
||||
|
||||
CREATE VIEW v_auto_business_shares AS
|
||||
SELECT s.year, h.mgnr,
|
||||
SUM(h.business_shares) AS business_shares,
|
||||
SUM(h.business_shares) * s.bs_value AS total_amount
|
||||
FROM member_history h, season s
|
||||
WHERE h.type = 'auto' AND h.date >= s.year || '-01-01' AND h.date <= s.year || '-12-31'
|
||||
GROUP BY s.year, h.mgnr
|
||||
ORDER BY s.year, h.mgnr;
|
Reference in New Issue
Block a user