database: fix billing calculcation

This commit is contained in:
2023-11-02 11:56:42 +01:00
parent 922957d72d
commit 462513f2a4
10 changed files with 173 additions and 113 deletions

View File

@ -19,22 +19,26 @@ CREATE TABLE branch (
mobile_nr TEXT DEFAULT NULL CHECK (mobile_nr REGEXP '^\+[0-9]{1,3}( [0-9]+)+(-[0-9]+)?$'),
CONSTRAINT pk_branch PRIMARY KEY (zwstid),
CONSTRAINT sk_branch_name UNIQUE (name),
CONSTRAINT fk_branch_postal_dest FOREIGN KEY (country, postal_dest) REFERENCES postal_dest (country, id)
ON UPDATE CASCADE
ON DELETE RESTRICT
) STRICT;
CREATE TABLE wine_attribute (
attrid TEXT NOT NULL CHECK (attrid REGEXP '^[A-Z]+$'),
name TEXT NOT NULL,
attrid TEXT NOT NULL CHECK (attrid REGEXP '^[A-Z]+$'),
name TEXT NOT NULL,
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
max_kg_per_ha INTEGER,
fill_lower_bins INTEGER NOT NULL CHECK (fill_lower_bins IN (0, 1, 2)) DEFAULT 0,
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
max_kg_per_ha INTEGER,
strict INTEGER NOT NULL CHECK (strict IN (TRUE, FALSE)) DEFAULT FALSE,
fill_lower INTEGER NOT NULL CHECK (fill_lower IN (0, 1, 2)) DEFAULT 0,
CONSTRAINT pk_wine_attribute PRIMARY KEY (attrid)
CONSTRAINT pk_wine_attribute PRIMARY KEY (attrid),
CONSTRAINT sk_wine_attribute_name UNIQUE (name)
) STRICT;
-- all values in the table are stored with precision 4!
CREATE TABLE area_commitment_type (
vtrgid TEXT NOT NULL CHECK (vtrgid = sortid || COALESCE(attrid, '') || disc),
sortid TEXT NOT NULL,
@ -42,8 +46,9 @@ CREATE TABLE area_commitment_type (
disc TEXT DEFAULT NULL CHECK (disc REGEXP '^[A-Z0-9]+$'),
min_kg_per_ha INTEGER,
max_kg_per_ha INTEGER,
penalty_per_kg INTEGER,
penalty_amount INTEGER,
penalty_none INTEGER,
CONSTRAINT pk_area_commitment_type PRIMARY KEY (vtrgid),
CONSTRAINT sk_area_commitment_type_sort_attr UNIQUE (sortid, attrid, disc),
@ -56,10 +61,12 @@ CREATE TABLE area_commitment_type (
) STRICT;
CREATE TABLE wine_cultivation (
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z]+$'),
name TEXT NOT NULL,
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z]+$'),
name TEXT NOT NULL,
description TEXT DEFAULT NULL,
CONSTRAINT pk_wine_cultivation PRIMARY KEY (cultid)
CONSTRAINT pk_wine_cultivation PRIMARY KEY (cultid),
CONSTRAINT sk_wine_cultivation_name UNIQUE (name)
) STRICT;
CREATE TABLE member (
@ -84,6 +91,7 @@ CREATE TABLE member (
ustid_nr TEXT CHECK (ustid_nr REGEXP '^[A-Z]{2}[A-Z0-9]{2,12}$') DEFAULT NULL,
volllieferant INTEGER NOT NULL CHECK (volllieferant IN (TRUE, FALSE)) DEFAULT FALSE,
buchführend INTEGER NOT NULL CHECK (buchführend 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,
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
deceased INTEGER NOT NULL CHECK (deceased IN (TRUE, FALSE)) DEFAULT FALSE,