Billing: Include predecessors in Treuebonus for WGM
All checks were successful
Test / Run tests (push) Successful in 2m29s
All checks were successful
Test / Run tests (push) Successful in 2m29s
This commit is contained in:
@ -104,18 +104,21 @@ namespace Elwig.Helpers.Billing {
|
|||||||
if (App.Client.IsMatzen) {
|
if (App.Client.IsMatzen) {
|
||||||
var lastYears = 3;
|
var lastYears = 3;
|
||||||
var multiplier = 0.50;
|
var multiplier = 0.50;
|
||||||
|
var includePredecessor = true;
|
||||||
var modName = "Treue%";
|
var modName = "Treue%";
|
||||||
await AppDbContext.ExecuteBatch(cnx, $"""
|
await AppDbContext.ExecuteBatch(cnx, $"""
|
||||||
INSERT INTO payment_member (year, avnr, mgnr, net_amount, mod_abs, mod_rel)
|
INSERT INTO payment_member (year, avnr, mgnr, net_amount, mod_abs, mod_rel)
|
||||||
SELECT c.year, {AvNr}, s.mgnr, 0,
|
SELECT c.year, {AvNr}, s.mgnr, 0,
|
||||||
ROUND(s.sum * COALESCE(m.abs, 0)),
|
ROUND(s.sum * COALESCE(m.abs, 0)),
|
||||||
COALESCE(m.rel, 0)
|
COALESCE(m.rel, 0)
|
||||||
FROM (SELECT {Year} AS year, mgnr,
|
FROM (SELECT {Year} AS year, m.mgnr,
|
||||||
ROUND(AVG(sum) * {multiplier}) AS baseline,
|
ROUND(AVG(COALESCE(a.sum, b.sum)) * {multiplier}) AS baseline,
|
||||||
COUNT(*) = {lastYears} AND MIN(sum) > 0 AS allowed
|
COUNT(*) = {lastYears} AND MIN(COALESCE(a.sum, b.sum)) > 0 AS allowed
|
||||||
FROM v_stat_member
|
FROM member m
|
||||||
WHERE year > {Year} - {lastYears}
|
LEFT JOIN v_stat_member a ON a.mgnr = m.mgnr
|
||||||
GROUP BY 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
|
HAVING allowed) c
|
||||||
JOIN v_stat_member s ON (s.year, s.mgnr) = (c.year, c.mgnr)
|
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}'
|
LEFT JOIN modifier m ON m.year = c.year AND m.name LIKE '{modName}'
|
||||||
|
Reference in New Issue
Block a user