database: Add penalty_per_bs to season table

This commit is contained in:
2024-06-07 12:21:13 +02:00
parent b0db769042
commit bb57c6fab5
4 changed files with 5 additions and 14 deletions

View File

@ -13,6 +13,8 @@ CREATE TABLE season (
penalty_per_kg INTEGER, penalty_per_kg INTEGER,
penalty_amount INTEGER, penalty_amount INTEGER,
penalty_none INTEGER, penalty_none INTEGER,
penalty_per_bs_amount INTEGER,
penalty_per_bs_none INTEGER,
bs_value INTEGER, bs_value INTEGER,
start_date TEXT CHECK (start_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'), start_date TEXT CHECK (start_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'),

View File

@ -11,17 +11,6 @@ GROUP BY year, mgnr
HAVING total_penalty < 0 HAVING total_penalty < 0
ORDER BY year, mgnr; 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 CREATE VIEW v_auto_business_shares AS
SELECT s.year, h.mgnr, SELECT s.year, h.mgnr,
SUM(h.business_shares) AS business_shares, SUM(h.business_shares) AS business_shares,

View File

@ -1,3 +1,3 @@
-- This value MUST NOT be changed while other connections are open! -- This value MUST NOT be changed while other connections are open!
PRAGMA schema_version = 1900; PRAGMA schema_version = 2000;

View File

@ -1742,12 +1742,12 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
utils.csv_open(f'{out_dir}/modifier.csv') as f_mod: utils.csv_open(f'{out_dir}/modifier.csv') as f_mod:
f_season.header('year', 'currency', 'precision', 'max_kg_per_ha', 'vat_normal', 'vat_flatrate', f_season.header('year', 'currency', 'precision', 'max_kg_per_ha', 'vat_normal', 'vat_flatrate',
'min_kg_per_bs', 'max_kg_per_bs', 'penalty_per_kg', 'penalty_amount', 'penalty_none', 'min_kg_per_bs', 'max_kg_per_bs', 'penalty_per_kg', 'penalty_amount', 'penalty_none',
'start_date', 'end_date') 'penalty_per_bs_amount', 'penalty_per_bs_none', 'start_date', 'end_date')
f_mod.header('year', 'modid', 'ordering', 'name', 'abs', 'rel', 'standard', 'quick_select') f_mod.header('year', 'modid', 'ordering', 'name', 'abs', 'rel', 'standard', 'quick_select')
for y, s in seasons.items(): for y, s in seasons.items():
f_season.row(y, s['currency'], s['precision'], 10_000, 0.10, 0.13, f_season.row(y, s['currency'], s['precision'], 10_000, 0.10, 0.13,
PARAMETERS['LIEFERPFLICHT/GA1'], PARAMETERS['LIEFERRECHT/GA1'], PARAMETERS['LIEFERPFLICHT/GA1'], PARAMETERS['LIEFERRECHT/GA1'],
None, None, None, s['start'], s['end']) None, None, None, None, None, s['start'], s['end'])
for m in modifiers.values(): for m in modifiers.values():
abs_v = round(m['AZAS'] * pow(10, s['precision'])) if m['AZAS'] is not None else None abs_v = round(m['AZAS'] * pow(10, s['precision'])) if m['AZAS'] is not None else None
rel_v = m['AZASProzent'] / 100.0 if m['AZASProzent'] is not None else None rel_v = m['AZASProzent'] / 100.0 if m['AZASProzent'] is not None else None