database: Organic update

This commit is contained in:
2026-09-30 00:31:48 +02:00
parent 6c10b95ef8
commit 525c32c7f2
8 changed files with 27 additions and 22 deletions
+11 -6
View File
@@ -61,8 +61,10 @@ CREATE TABLE area_commitment_type (
) STRICT;
CREATE TABLE wine_cultivation (
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z][A-Z0-9]*$'),
name TEXT NOT NULL,
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z][A-Z0-9]*$'),
name TEXT NOT NULL,
organic INTEGER NOT NULL CHECK (organic IN (TRUE, FALSE)) DEFAULT FALSE,
description TEXT DEFAULT NULL,
CONSTRAINT pk_wine_cultivation PRIMARY KEY (cultid),
@@ -93,11 +95,13 @@ CREATE TABLE member (
lfbis_nr TEXT CHECK (lfbis_nr REGEXP '^[0-9]{7}$') DEFAULT NULL,
ustid_nr TEXT CHECK (ustid_nr REGEXP '^[A-Z]{2}[A-Z0-9]{2,12}$') DEFAULT NULL,
ooc_id TEXT CHECK (ooc_id REGEXP '^[0-9]{3}-[0-9]{7}$') DEFAULT NULL,
org_auth_code TEXT CHECK (org_auth_code REGEXP '^[A-Z]{2}-[A-ZÖØ]{3}-[0-9]{2,3}(-[A-Z]{2})?$') DEFAULT NULL,
juridical_pers INTEGER NOT NULL CHECK (juridical_pers IN (TRUE, FALSE)) DEFAULT FALSE,
volllieferant INTEGER NOT NULL CHECK (volllieferant IN (TRUE, FALSE)) DEFAULT FALSE,
buchführend INTEGER NOT NULL CHECK (buchführend IN (TRUE, FALSE)) DEFAULT FALSE,
full_delivery INTEGER NOT NULL CHECK (full_delivery IN (TRUE, FALSE)) DEFAULT FALSE,
accounting INTEGER NOT NULL CHECK (accounting IN (TRUE, FALSE)) DEFAULT FALSE,
organic INTEGER NOT NULL CHECK (organic IN (TRUE, FALSE)) DEFAULT FALSE,
funktionär INTEGER NOT NULL CHECK (funktionär IN (TRUE, FALSE)) DEFAULT FALSE,
officer INTEGER NOT NULL CHECK (officer IN (TRUE, FALSE)) DEFAULT FALSE,
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
deceased INTEGER NOT NULL CHECK (deceased IN (TRUE, FALSE)) DEFAULT FALSE,
@@ -243,7 +247,8 @@ CREATE TABLE member_history (
source TEXT NOT NULL CHECK (source REGEXP '^[a-z_]+$'),
shares INTEGER NOT NULL CHECK (shares > 0),
signed INTEGER NOT NULL CHECK (signed IN (TRUE, FALSE)) DEFAULT FALSE,
signed_company INTEGER NOT NULL CHECK (signed_company IN (TRUE, FALSE)) DEFAULT FALSE,
signed_member INTEGER NOT NULL CHECK (signed_member IN (TRUE, FALSE)) DEFAULT FALSE,
value_per_share INTEGER DEFAULT NULL,
currency TEXT DEFAULT NULL,
deduct_year INTEGER DEFAULT NULL,
+1 -1
View File
@@ -183,7 +183,7 @@ CREATE TABLE delivery_part (
spl_check INTEGER NOT NULL CHECK (spl_check IN (TRUE, FALSE)) DEFAULT FALSE,
hand_picked INTEGER CHECK (hand_picked IN (TRUE, FALSE)) DEFAULT NULL,
gebunden INTEGER CHECK (gebunden IN (TRUE, FALSE)) DEFAULT NULL,
contracted INTEGER CHECK (contracted IN (TRUE, FALSE)) DEFAULT NULL,
unloading TEXT DEFAULT NULL,
temperature REAL DEFAULT NULL,
+5 -5
View File
@@ -43,7 +43,7 @@ SELECT p.year, p.did, p.dpnr,
v.sortid, v.type, a.attrid, p.cultid,
p.weight, p.kmw, ROUND(p.kmw * (4.54 + 0.022 * p.kmw), 0) AS oe, p.qualid,
p.hkid, p.kgnr, p.rdnr,
p.net_weight, p.gebunden,
p.net_weight, p.contracted,
p.qualid IN (SELECT l.qualid FROM wine_quality_level l WHERE NOT l.predicate AND (p.kmw >= l.min_kmw OR l.min_kmw IS NULL) ORDER BY l.min_kmw DESC LIMIT 1,100) AS abgewertet,
p.qualid NOT IN ('WEI', 'RSW', 'LDW') AS min_quw,
IIF(a.strict, COALESCE(a.fill_lower, 0), 0) AS attribute_prio,
@@ -127,7 +127,7 @@ SELECT s.year, m.mgnr, m.lfbis_nr, m.name,
(COALESCE(m.prefix || ' ', '') || m.given_name || COALESCE(' ' || m.middle_names, '') || COALESCE(' ' || m.suffix, '')) AS other_names,
a.name AS billing_name, COALESCE(a.address, m.address) AS address,
COALESCE(a.country, m.country) AS country, COALESCE(a.postal_dest, m.postal_dest) AS postal_dest,
m.volllieferant AS vollablieferer,
m.full_delivery AS vollablieferer,
SUM(COALESCE(IIF((c.year_from IS NULL OR c.year_from <= s.year) AND (c.year_to IS NULL OR c.year_to >= s.year), c.area, NULL), 0)) AS area
FROM season s, member m
LEFT JOIN member_billing_address a ON a.mgnr = m.mgnr
@@ -198,7 +198,7 @@ CREATE VIEW v_stat_total AS
SELECT d.year, d.zwstid, v.type, v.sortid,
IIF(b.discr = a.attrid OR NOT a.area_com, a.attrid, NULL) AS attrid,
p.cultid, q.qualid,
IIF(b.discr = '_', 'ungeb', 'geb') AS geb,
IIF(b.discr = '_', 'ungeb', 'geb') AS contracted,
SUM(value) AS weight
FROM delivery_part p
LEFT JOIN delivery d ON (d.year, d.did) = (p.year, p.did)
@@ -206,9 +206,9 @@ FROM delivery_part p
LEFT JOIN wine_quality_level q ON q.qualid = p.qualid
LEFT JOIN delivery_part_bucket b ON (b.year, b.did, b.dpnr) = (p.year, p.did, p.dpnr)
LEFT JOIN v_wine_attribute a ON a.attrid = p.attrid
GROUP BY d.year, d.zwstid, v.type, v.sortid, IIF(b.discr = a.attrid OR NOT a.area_com, a.attrid, NULL), p.cultid, q.qualid, geb
GROUP BY d.year, d.zwstid, v.type, v.sortid, IIF(b.discr = a.attrid OR NOT a.area_com, a.attrid, NULL), p.cultid, q.qualid, contracted
HAVING SUM(value) > 0
ORDER BY d.year, d.zwstid, v.type DESC, v.sortid, IIF(b.discr = a.attrid OR NOT a.area_com, a.attrid, NULL), p.cultid, q.min_kmw, geb;
ORDER BY d.year, d.zwstid, v.type DESC, v.sortid, IIF(b.discr = a.attrid OR NOT a.area_com, a.attrid, NULL), p.cultid, q.min_kmw, contracted;
CREATE VIEW v_stat_modifier AS
SELECT v.year, v.avnr, m.modid, m.name, m.abs, m.rel,
+4 -4
View File
@@ -61,7 +61,7 @@ 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
b.discr != '_' AS contracted
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
@@ -71,13 +71,13 @@ 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
WHERE attrid IS NOT NULL OR NOT contracted
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)
WHERE contracted AND (a.strict IS NULL OR a.strict = FALSE)
GROUP BY b.year, b.mgnr, b.sortid
ORDER BY year, mgnr, bucket;
@@ -96,7 +96,7 @@ FROM v_under_delivery_bucket_strict u
LEFT JOIN v_payment_bucket_strict p ON (p.year, p.mgnr, p.sortid) = (u.year, u.mgnr, u.bucket) AND p.attrid IS NOT NULL
LEFT JOIN wine_attribute a ON a.attrid = p.attrid
LEFT JOIN v_area_commitment_bucket_strict s ON (s.year, s.mgnr, s.bucket) = (p.year, p.mgnr, p.bucket)
WHERE (p.gebunden IS NULL OR p.gebunden) AND (a.strict IS NULL OR a.strict = FALSE)
WHERE (p.contracted IS NULL OR p.contracted) AND (a.strict IS NULL OR a.strict = FALSE)
GROUP BY u.year, u.mgnr, u.bucket
ORDER BY u.year, u.mgnr, u.bucket;
+1 -1
View File
@@ -1,3 +1,3 @@
-- This value MUST NOT be changed while other connections are open!
PRAGMA schema_version = 4100;
PRAGMA schema_version = 4200;