database: fix billing calculcation
This commit is contained in:
79
sql/v01/31.create.bucket-view.sql
Normal file
79
sql/v01/31.create.bucket-view.sql
Normal file
@ -0,0 +1,79 @@
|
||||
|
||||
CREATE VIEW v_area_commitment_bucket_strict AS
|
||||
SELECT s.year, c.mgnr,
|
||||
t.sortid || COALESCE(a.attrid, '') AS bucket,
|
||||
t.sortid, a.attrid,
|
||||
CAST(ROUND(SUM(area) * COALESCE(t.min_kg_per_ha, 0) / 10000.0, 0) AS INTEGER) AS min_kg,
|
||||
CAST(ROUND(SUM(area) * COALESCE(a.max_kg_per_ha, s.max_kg_per_ha) / 10000.0, 0) AS INTEGER) AS max_kg,
|
||||
CAST(ROUND(SUM(area) * s.max_kg_per_ha / 10000.0, 0) AS INTEGER) AS upper_max_kg
|
||||
FROM season s, area_commitment c
|
||||
JOIN area_commitment_type t ON t.vtrgid = c.vtrgid
|
||||
LEFT JOIN wine_attribute a ON a.attrid = t.attrid
|
||||
WHERE (year_from IS NULL OR year_from <= s.year) AND
|
||||
(year_to IS NULL OR year_to >= s.year)
|
||||
GROUP BY s.year, c.mgnr, bucket
|
||||
ORDER BY s.year, c.mgnr, bucket;
|
||||
|
||||
CREATE VIEW v_area_commitment_bucket AS
|
||||
SELECT year, mgnr, bucket, min_kg, max_kg
|
||||
FROM v_area_commitment_bucket_strict
|
||||
WHERE attrid IS NOT NULL
|
||||
UNION ALL
|
||||
SELECT b.year, b.mgnr, b.sortid,
|
||||
SUM(b.min_kg) AS min_kg,
|
||||
SUM(b.upper_max_kg) AS max_kg
|
||||
FROM v_area_commitment_bucket_strict b
|
||||
LEFT JOIN wine_attribute a ON a.attrid = b.attrid
|
||||
WHERE a.strict IS NULL OR a.strict = FALSE
|
||||
GROUP BY b.year, b.mgnr, b.sortid
|
||||
ORDER BY year, mgnr, bucket;
|
||||
|
||||
|
||||
CREATE VIEW v_delivery_bucket_strict AS
|
||||
SELECT year, mgnr,
|
||||
sortid || IIF(min_quw, COALESCE(attrid, ''), '_') AS bucket,
|
||||
sortid, IIF(min_quw, attrid, NULL) AS attrid,
|
||||
SUM(weight) AS weight,
|
||||
min_quw
|
||||
FROM v_delivery
|
||||
GROUP BY year, mgnr, bucket
|
||||
ORDER BY year, mgnr, bucket;
|
||||
|
||||
CREATE VIEW v_delivery_bucket AS
|
||||
SELECT year, mgnr, bucket, weight
|
||||
FROM v_delivery_bucket_strict
|
||||
WHERE attrid IS NOT NULL OR NOT min_quw
|
||||
UNION ALL
|
||||
SELECT b.year, b.mgnr, b.sortid,
|
||||
SUM(b.weight) AS weight
|
||||
FROM v_delivery_bucket_strict b
|
||||
LEFT JOIN wine_attribute a ON a.attrid = b.attrid
|
||||
WHERE min_quw AND (a.strict IS NULL OR a.strict = FALSE)
|
||||
GROUP BY b.year, b.mgnr, b.sortid
|
||||
ORDER BY year, mgnr, bucket;
|
||||
|
||||
|
||||
CREATE VIEW v_payment_bucket_strict AS
|
||||
SELECT d.year, d.mgnr,
|
||||
d.sortid || b.discr AS bucket,
|
||||
d.sortid, IIF(b.discr IN ('', '_'), NULL, b.discr) AS attrid,
|
||||
SUM(b.value) AS weight,
|
||||
b.discr != '_' AS gebunden
|
||||
FROM v_delivery d
|
||||
LEFT JOIN delivery_part_bucket b ON (b.year, b.did, b.dpnr) = (d.year, d.did, d.dpnr)
|
||||
GROUP BY d.year, d.mgnr, bucket
|
||||
HAVING SUM(b.value) > 0
|
||||
ORDER BY d.year, d.mgnr, bucket;
|
||||
|
||||
CREATE VIEW v_payment_bucket AS
|
||||
SELECT year, mgnr, bucket, weight
|
||||
FROM v_payment_bucket_strict
|
||||
WHERE attrid IS NOT NULL OR NOT gebunden
|
||||
UNION ALL
|
||||
SELECT b.year, b.mgnr, b.sortid,
|
||||
SUM(b.weight) AS weight
|
||||
FROM v_payment_bucket_strict b
|
||||
LEFT JOIN wine_attribute a ON a.attrid = b.attrid
|
||||
WHERE gebunden AND (a.strict IS NULL OR a.strict = FALSE)
|
||||
GROUP BY b.year, b.mgnr, b.sortid
|
||||
ORDER BY year, mgnr, bucket;
|
Reference in New Issue
Block a user