From 2333077aa563a72038a13bc60a90c89ab6d90c15 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 8 Aug 2024 19:09:38 +0200 Subject: [PATCH] Billing: Include predecessors in Treuebonus for WGM --- Elwig/Helpers/Billing/BillingVariant.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Elwig/Helpers/Billing/BillingVariant.cs b/Elwig/Helpers/Billing/BillingVariant.cs index 3b41ef3..3afafdb 100644 --- a/Elwig/Helpers/Billing/BillingVariant.cs +++ b/Elwig/Helpers/Billing/BillingVariant.cs @@ -104,18 +104,21 @@ namespace Elwig.Helpers.Billing { if (App.Client.IsMatzen) { var lastYears = 3; var multiplier = 0.50; + var includePredecessor = true; var modName = "Treue%"; await AppDbContext.ExecuteBatch(cnx, $""" INSERT INTO payment_member (year, avnr, mgnr, net_amount, mod_abs, mod_rel) SELECT c.year, {AvNr}, s.mgnr, 0, ROUND(s.sum * COALESCE(m.abs, 0)), COALESCE(m.rel, 0) - FROM (SELECT {Year} AS year, mgnr, - ROUND(AVG(sum) * {multiplier}) AS baseline, - COUNT(*) = {lastYears} AND MIN(sum) > 0 AS allowed - FROM v_stat_member - WHERE year > {Year} - {lastYears} - GROUP BY mgnr + FROM (SELECT {Year} AS year, m.mgnr, + ROUND(AVG(COALESCE(a.sum, b.sum)) * {multiplier}) AS baseline, + COUNT(*) = {lastYears} AND MIN(COALESCE(a.sum, b.sum)) > 0 AS allowed + FROM member m + LEFT JOIN v_stat_member a ON a.mgnr = m.mgnr + FULL OUTER JOIN v_stat_member b ON b.mgnr = m.predecessor_mgnr AND b.year = a.year AND {(includePredecessor ? "TRUE" : "FALSE")} + WHERE a.year > {Year} - {lastYears} + GROUP BY m.mgnr HAVING allowed) c JOIN v_stat_member s ON (s.year, s.mgnr) = (c.year, c.mgnr) LEFT JOIN modifier m ON m.year = c.year AND m.name LIKE '{modName}'