database: fix billing calculcation
This commit is contained in:
@ -19,6 +19,7 @@ CREATE TABLE branch (
|
|||||||
mobile_nr TEXT DEFAULT NULL CHECK (mobile_nr REGEXP '^\+[0-9]{1,3}( [0-9]+)+(-[0-9]+)?$'),
|
mobile_nr TEXT DEFAULT NULL CHECK (mobile_nr REGEXP '^\+[0-9]{1,3}( [0-9]+)+(-[0-9]+)?$'),
|
||||||
|
|
||||||
CONSTRAINT pk_branch PRIMARY KEY (zwstid),
|
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)
|
CONSTRAINT fk_branch_postal_dest FOREIGN KEY (country, postal_dest) REFERENCES postal_dest (country, id)
|
||||||
ON UPDATE CASCADE
|
ON UPDATE CASCADE
|
||||||
ON DELETE RESTRICT
|
ON DELETE RESTRICT
|
||||||
@ -27,14 +28,17 @@ CREATE TABLE branch (
|
|||||||
CREATE TABLE wine_attribute (
|
CREATE TABLE wine_attribute (
|
||||||
attrid TEXT NOT NULL CHECK (attrid REGEXP '^[A-Z]+$'),
|
attrid TEXT NOT NULL CHECK (attrid REGEXP '^[A-Z]+$'),
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
|
|
||||||
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,
|
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
|
||||||
|
|
||||||
CONSTRAINT pk_wine_attribute PRIMARY KEY (attrid)
|
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 sk_wine_attribute_name UNIQUE (name)
|
||||||
) STRICT;
|
) STRICT;
|
||||||
|
|
||||||
|
-- all values in the table are stored with precision 4!
|
||||||
CREATE TABLE area_commitment_type (
|
CREATE TABLE area_commitment_type (
|
||||||
vtrgid TEXT NOT NULL CHECK (vtrgid = sortid || COALESCE(attrid, '') || disc),
|
vtrgid TEXT NOT NULL CHECK (vtrgid = sortid || COALESCE(attrid, '') || disc),
|
||||||
sortid TEXT NOT NULL,
|
sortid TEXT NOT NULL,
|
||||||
@ -42,8 +46,9 @@ CREATE TABLE area_commitment_type (
|
|||||||
disc TEXT DEFAULT NULL CHECK (disc REGEXP '^[A-Z0-9]+$'),
|
disc TEXT DEFAULT NULL CHECK (disc REGEXP '^[A-Z0-9]+$'),
|
||||||
|
|
||||||
min_kg_per_ha INTEGER,
|
min_kg_per_ha INTEGER,
|
||||||
max_kg_per_ha INTEGER,
|
penalty_per_kg INTEGER,
|
||||||
penalty_amount INTEGER,
|
penalty_amount INTEGER,
|
||||||
|
penalty_none INTEGER,
|
||||||
|
|
||||||
CONSTRAINT pk_area_commitment_type PRIMARY KEY (vtrgid),
|
CONSTRAINT pk_area_commitment_type PRIMARY KEY (vtrgid),
|
||||||
CONSTRAINT sk_area_commitment_type_sort_attr UNIQUE (sortid, attrid, disc),
|
CONSTRAINT sk_area_commitment_type_sort_attr UNIQUE (sortid, attrid, disc),
|
||||||
@ -58,8 +63,10 @@ CREATE TABLE area_commitment_type (
|
|||||||
CREATE TABLE wine_cultivation (
|
CREATE TABLE wine_cultivation (
|
||||||
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z]+$'),
|
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z]+$'),
|
||||||
name TEXT NOT NULL,
|
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;
|
) STRICT;
|
||||||
|
|
||||||
CREATE TABLE member (
|
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,
|
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,
|
volllieferant INTEGER NOT NULL CHECK (volllieferant IN (TRUE, FALSE)) DEFAULT FALSE,
|
||||||
buchführend INTEGER NOT NULL CHECK (buchführend 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,
|
funktionär INTEGER NOT NULL CHECK (funktionär IN (TRUE, FALSE)) DEFAULT FALSE,
|
||||||
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
|
active INTEGER NOT NULL CHECK (active IN (TRUE, FALSE)) DEFAULT TRUE,
|
||||||
deceased INTEGER NOT NULL CHECK (deceased IN (TRUE, FALSE)) DEFAULT FALSE,
|
deceased INTEGER NOT NULL CHECK (deceased IN (TRUE, FALSE)) DEFAULT FALSE,
|
||||||
|
@ -4,6 +4,16 @@ CREATE TABLE season (
|
|||||||
currency TEXT NOT NULL,
|
currency TEXT NOT NULL,
|
||||||
precision INTEGER NOT NULL DEFAULT 4,
|
precision INTEGER NOT NULL DEFAULT 4,
|
||||||
|
|
||||||
|
max_kg_per_ha INTEGER NOT NULL DEFAULT 10000,
|
||||||
|
vat_normal REAL NOT NULL DEFAULT 0.10,
|
||||||
|
vat_flatrate REAL NOT NULL DEFAULT 0.13,
|
||||||
|
|
||||||
|
min_kg_per_bs INTEGER NOT NULL,
|
||||||
|
max_kg_per_bs INTEGER NOT NULL,
|
||||||
|
penalty_per_kg INTEGER,
|
||||||
|
penalty_amount INTEGER,
|
||||||
|
penalty_none 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])$'),
|
||||||
end_date TEXT CHECK (end_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'),
|
end_date TEXT CHECK (end_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'),
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
|
|
||||||
CREATE TABLE delivery_part_bin (
|
CREATE TABLE delivery_part_bucket (
|
||||||
year INTEGER NOT NULL,
|
year INTEGER NOT NULL,
|
||||||
did INTEGER NOT NULL,
|
did INTEGER NOT NULL,
|
||||||
dpnr INTEGER NOT NULL,
|
dpnr INTEGER NOT NULL,
|
||||||
binnr INTEGER NOT NULL,
|
bktnr INTEGER NOT NULL,
|
||||||
|
|
||||||
discr TEXT NOT NULL,
|
discr TEXT NOT NULL,
|
||||||
value INTEGER NOT NULL,
|
value INTEGER NOT NULL,
|
||||||
|
|
||||||
CONSTRAINT pk_delivery_part_bin PRIMARY KEY (year, did, dpnr, binnr),
|
CONSTRAINT pk_delivery_part_bucket PRIMARY KEY (year, did, dpnr, bktnr),
|
||||||
CONSTRAINT fk_delivery_part_bin_delivery_part FOREIGN KEY (year, did, dpnr) REFERENCES delivery_part (year, did, dpnr)
|
CONSTRAINT fk_delivery_part_bucket_delivery_part FOREIGN KEY (year, did, dpnr) REFERENCES delivery_part (year, did, dpnr)
|
||||||
ON UPDATE CASCADE
|
ON UPDATE CASCADE
|
||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
) STRICT;
|
) STRICT;
|
||||||
@ -77,21 +77,21 @@ BEGIN
|
|||||||
END;
|
END;
|
||||||
|
|
||||||
-- all values in the table are stored with season-precision!
|
-- all values in the table are stored with season-precision!
|
||||||
CREATE TABLE payment_delivery_part_bin (
|
CREATE TABLE payment_delivery_part_bucket (
|
||||||
year INTEGER NOT NULL,
|
year INTEGER NOT NULL,
|
||||||
did INTEGER NOT NULL,
|
did INTEGER NOT NULL,
|
||||||
dpnr INTEGER NOT NULL,
|
dpnr INTEGER NOT NULL,
|
||||||
binnr INTEGER NOT NULL,
|
bktnr INTEGER NOT NULL,
|
||||||
avnr INTEGER NOT NULL,
|
avnr INTEGER NOT NULL,
|
||||||
|
|
||||||
price INTEGER NOT NULL,
|
price INTEGER NOT NULL,
|
||||||
amount INTEGER NOT NULL,
|
amount INTEGER NOT NULL,
|
||||||
|
|
||||||
CONSTRAINT pk_payment_delivery_part_bin PRIMARY KEY (year, did, dpnr, binnr, avnr),
|
CONSTRAINT pk_payment_delivery_part_bucket PRIMARY KEY (year, did, dpnr, bktnr, avnr),
|
||||||
CONSTRAINT fk_payment_delivery_part_bin_delivery_part_bin FOREIGN KEY (year, did, dpnr, binnr) REFERENCES delivery_part_bin (year, did, dpnr, binnr)
|
CONSTRAINT fk_payment_delivery_part_bucket_delivery_part_bucket FOREIGN KEY (year, did, dpnr, bktnr) REFERENCES delivery_part_bucket (year, did, dpnr, bktnr)
|
||||||
ON UPDATE CASCADE
|
ON UPDATE CASCADE
|
||||||
ON DELETE CASCADE,
|
ON DELETE CASCADE,
|
||||||
CONSTRAINT fk_payment_delivery_part_bin_payment_variant FOREIGN KEY (year, avnr) REFERENCES payment_variant (year, avnr)
|
CONSTRAINT fk_payment_delivery_part_bucket_payment_variant FOREIGN KEY (year, avnr) REFERENCES payment_variant (year, avnr)
|
||||||
ON UPDATE CASCADE
|
ON UPDATE CASCADE
|
||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
) STRICT;
|
) STRICT;
|
||||||
|
@ -5,19 +5,6 @@ FROM AT_gem g
|
|||||||
JOIN AT_ort o ON o.gkz = g.gkz
|
JOIN AT_ort o ON o.gkz = g.gkz
|
||||||
JOIN AT_plz_dest p ON p.okz = o.okz;
|
JOIN AT_plz_dest p ON p.okz = o.okz;
|
||||||
|
|
||||||
CREATE VIEW v_area_commitment AS
|
|
||||||
SELECT c.fbnr, m.mgnr, m.family_name, m.given_name,
|
|
||||||
c.sortid, c.cultid, c.area,
|
|
||||||
c.kgnr, c.gstnr, c.rdnr,
|
|
||||||
c.year_from, c.year_to,
|
|
||||||
GROUP_CONCAT(DISTINCT a.attrid) AS attributes,
|
|
||||||
c.comment
|
|
||||||
FROM area_commitment c
|
|
||||||
JOIN member m ON m.mgnr = c.mgnr
|
|
||||||
LEFT JOIN area_commitment_attribute a ON a.fbnr = c.fbnr
|
|
||||||
GROUP BY c.fbnr
|
|
||||||
ORDER BY c.fbnr;
|
|
||||||
|
|
||||||
CREATE VIEW v_delivery AS
|
CREATE VIEW v_delivery AS
|
||||||
SELECT p.year, p.did, p.dpnr,
|
SELECT p.year, p.did, p.dpnr,
|
||||||
d.date, d.time, d.zwstid, d.lnr, d.lsnr,
|
d.date, d.time, d.zwstid, d.lnr, d.lsnr,
|
||||||
@ -28,7 +15,7 @@ SELECT p.year, p.did, p.dpnr,
|
|||||||
p.gerebelt, p.gebunden,
|
p.gerebelt, p.gebunden,
|
||||||
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 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,
|
p.qualid NOT IN ('WEI', 'RSW', 'LDW') AS min_quw,
|
||||||
COALESCE(a.fill_lower_bins, 0) AS attribute_prio,
|
IIF(a.strict, COALESCE(a.fill_lower, 0), 0) AS attribute_prio,
|
||||||
GROUP_CONCAT(o.modid) AS modifiers,
|
GROUP_CONCAT(o.modid) AS modifiers,
|
||||||
d.comment, p.comment AS part_comment
|
d.comment, p.comment AS part_comment
|
||||||
FROM delivery_part p
|
FROM delivery_part p
|
||||||
@ -39,36 +26,6 @@ FROM delivery_part p
|
|||||||
GROUP BY p.year, p.did, p.dpnr
|
GROUP BY p.year, p.did, p.dpnr
|
||||||
ORDER BY p.year, p.did, p.dpnr, o.modid;
|
ORDER BY p.year, p.did, p.dpnr, o.modid;
|
||||||
|
|
||||||
CREATE VIEW v_delivery_bin AS
|
|
||||||
SELECT year, mgnr,
|
|
||||||
sortid || IIF(min_quw, COALESCE(attrid, ''), '_') AS bin,
|
|
||||||
SUM(weight) AS weight
|
|
||||||
FROM v_delivery
|
|
||||||
GROUP BY year, mgnr, bin
|
|
||||||
ORDER BY year, mgnr, LENGTH(bin) DESC, bin;
|
|
||||||
|
|
||||||
CREATE VIEW v_payment_bin AS
|
|
||||||
SELECT d.year, d.mgnr,
|
|
||||||
sortid || discr AS bin,
|
|
||||||
SUM(value) AS weight
|
|
||||||
FROM v_delivery d
|
|
||||||
JOIN delivery_part_bin b ON (b.year, b.did, b.dpnr) = (d.year, d.did, d.dpnr)
|
|
||||||
GROUP BY d.year, d.mgnr, bin
|
|
||||||
HAVING SUM(value) > 0
|
|
||||||
ORDER BY d.year, d.mgnr, LENGTH(bin) DESC, bin;
|
|
||||||
|
|
||||||
CREATE VIEW v_area_commitment_bin AS
|
|
||||||
SELECT s.year, c.mgnr,
|
|
||||||
c.vtrgid AS bin,
|
|
||||||
CAST(ROUND(SUM(COALESCE(area * min_kg_per_ha, 0)) / 10000.0, 0) AS INTEGER) AS min_kg,
|
|
||||||
CAST(ROUND(SUM(COALESCE(area * max_kg_per_ha, 0)) / 10000.0, 0) AS INTEGER) AS max_kg
|
|
||||||
FROM area_commitment c, season s
|
|
||||||
JOIN area_commitment_type t ON t.vtrgid = c.vtrgid
|
|
||||||
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, c.vtrgid
|
|
||||||
ORDER BY s.year, c.mgnr, LENGTH(c.vtrgid) DESC, c.vtrgid;
|
|
||||||
|
|
||||||
CREATE VIEW v_stat_season AS
|
CREATE VIEW v_stat_season AS
|
||||||
SELECT year,
|
SELECT year,
|
||||||
SUM(weight) AS sum,
|
SUM(weight) AS sum,
|
||||||
|
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;
|
@ -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 = 500;
|
PRAGMA schema_version = 600;
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
SET dir=.
|
SET dir=.
|
||||||
sqlite3 -box^
|
sqlite3 -box^
|
||||||
-cmd ".read %dir%/sql/v01/00.setup.sql"^
|
-cmd ".read %dir%/sql/v01/00.setup.sql"^
|
||||||
@ -9,6 +8,7 @@ sqlite3 -box^
|
|||||||
-cmd ".read %dir%/sql/v01/13.create.payment.sql"^
|
-cmd ".read %dir%/sql/v01/13.create.payment.sql"^
|
||||||
-cmd ".read %dir%/sql/v01/20.create.timestamp-trigger.sql"^
|
-cmd ".read %dir%/sql/v01/20.create.timestamp-trigger.sql"^
|
||||||
-cmd ".read %dir%/sql/v01/30.create.view.sql"^
|
-cmd ".read %dir%/sql/v01/30.create.view.sql"^
|
||||||
|
-cmd ".read %dir%/sql/v01/31.create.bucket-view.sql"^
|
||||||
-cmd ".read %dir%/sql/v01/50.insert.base.sql"^
|
-cmd ".read %dir%/sql/v01/50.insert.base.sql"^
|
||||||
-cmd ".read %dir%/data/90.plz.sql"^
|
-cmd ".read %dir%/data/90.plz.sql"^
|
||||||
-cmd ".read %dir%/sql/91.plz-fix.sql"^
|
-cmd ".read %dir%/sql/91.plz-fix.sql"^
|
||||||
|
@ -8,6 +8,7 @@ sqlite3 -box \
|
|||||||
-cmd ".read $dir/sql/v01/13.create.payment.sql" \
|
-cmd ".read $dir/sql/v01/13.create.payment.sql" \
|
||||||
-cmd ".read $dir/sql/v01/20.create.timestamp-trigger.sql" \
|
-cmd ".read $dir/sql/v01/20.create.timestamp-trigger.sql" \
|
||||||
-cmd ".read $dir/sql/v01/30.create.view.sql" \
|
-cmd ".read $dir/sql/v01/30.create.view.sql" \
|
||||||
|
-cmd ".read $dir/sql/v01/31.create.bucket-view.sql" \
|
||||||
-cmd ".read $dir/sql/v01/50.insert.base.sql" \
|
-cmd ".read $dir/sql/v01/50.insert.base.sql" \
|
||||||
-cmd ".read $dir/data/90.plz.sql" \
|
-cmd ".read $dir/data/90.plz.sql" \
|
||||||
-cmd ".read $dir/sql/91.plz-fix.sql" \
|
-cmd ".read $dir/sql/91.plz-fix.sql" \
|
||||||
|
@ -12,10 +12,11 @@ import utils
|
|||||||
|
|
||||||
DIR: str
|
DIR: str
|
||||||
|
|
||||||
TABLES = ['client_parameter', 'branch', 'wb_gl', 'wb_kg', 'wb_rd', 'wine_attribute', 'wine_cultivation', 'area_commitment_type',
|
TABLES = ['client_parameter', 'branch', 'wb_gl', 'wb_kg', 'wb_rd',
|
||||||
|
'wine_attribute', 'wine_cultivation', 'area_commitment_type',
|
||||||
'member', 'member_billing_address', 'member_telephone_number', 'member_email_address', 'area_commitment',
|
'member', 'member_billing_address', 'member_telephone_number', 'member_email_address', 'area_commitment',
|
||||||
'season', 'modifier', 'delivery', 'delivery_part', 'delivery_part_modifier',
|
'season', 'modifier', 'delivery', 'delivery_part', 'delivery_part_modifier',
|
||||||
'delivery_part_bin', 'payment_variant', 'payment_delivery_part']
|
'delivery_part_bucket', 'payment_variant', 'payment_delivery_part']
|
||||||
|
|
||||||
|
|
||||||
def get_sql_files() -> List[str]:
|
def get_sql_files() -> List[str]:
|
||||||
|
@ -44,6 +44,7 @@ MEMBER_MAP: Optional[Dict[int, Dict[str, Any]]] = None
|
|||||||
GROSSLAGE_KG_MAP: Optional[Dict[int, int]] = None
|
GROSSLAGE_KG_MAP: Optional[Dict[int, int]] = None
|
||||||
DELIVERY_MAP: Optional[Dict[int, Tuple[int, int, int]]] = None
|
DELIVERY_MAP: Optional[Dict[int, Tuple[int, int, int]]] = None
|
||||||
MODIFIER_MAP: Optional[Dict[str, Dict]] = None
|
MODIFIER_MAP: Optional[Dict[str, Dict]] = None
|
||||||
|
PARAMETERS: Optional[Dict[str, str]] = None
|
||||||
|
|
||||||
AUSTRIA = 40
|
AUSTRIA = 40
|
||||||
WGMASTER_PRECISION = 4
|
WGMASTER_PRECISION = 4
|
||||||
@ -601,14 +602,17 @@ def migrate_reeds(in_dir: str, out_dir: str) -> None:
|
|||||||
|
|
||||||
def migrate_attributes(in_dir: str, out_dir: str) -> None:
|
def migrate_attributes(in_dir: str, out_dir: str) -> None:
|
||||||
with utils.csv_open(f'{out_dir}/wine_attribute.csv') as f:
|
with utils.csv_open(f'{out_dir}/wine_attribute.csv') as f:
|
||||||
f.header('attrid', 'name', 'max_kg_per_ha', 'fill_lower_bins', 'active')
|
f.header('attrid', 'name', 'active', 'max_kg_per_ha', 'strict', 'fill_lower')
|
||||||
for a in utils.csv_parse_dict(f'{in_dir}/TSortenAttribute.csv'):
|
for a in utils.csv_parse_dict(f'{in_dir}/TSortenAttribute.csv'):
|
||||||
if a['SANR'] is None:
|
if a['SANR'] is None:
|
||||||
continue
|
continue
|
||||||
f.row(a['SANR'], a['Attribut'], int(a['KgProHa']) if a['KgProHa'] is not None else None, 0, True)
|
max_kg = int(a['KgProHa']) if a['KgProHa'] is not None else None
|
||||||
|
if max_kg == 10_000:
|
||||||
|
max_kg = None
|
||||||
|
f.row(a['SANR'], a['Attribut'], True, max_kg, False, 0)
|
||||||
if CLIENT == WG.MATZEN:
|
if CLIENT == WG.MATZEN:
|
||||||
f.row('M', 'Matzen', None, 0, False)
|
f.row('M', 'Matzen', False, None, False, 0)
|
||||||
f.row('HU', 'Huber', None, 0, False)
|
f.row('HU', 'Huber', False, None, False, 0)
|
||||||
|
|
||||||
|
|
||||||
def migrate_cultivations(in_dir: str, out_dir: str) -> None:
|
def migrate_cultivations(in_dir: str, out_dir: str) -> None:
|
||||||
@ -616,7 +620,7 @@ def migrate_cultivations(in_dir: str, out_dir: str) -> None:
|
|||||||
CULTIVATION_MAP = {}
|
CULTIVATION_MAP = {}
|
||||||
|
|
||||||
with utils.csv_open(f'{out_dir}/wine_cultivation.csv') as f:
|
with utils.csv_open(f'{out_dir}/wine_cultivation.csv') as f:
|
||||||
f.header('cultid', 'name')
|
f.header('cultid', 'name', 'description')
|
||||||
for c in utils.csv_parse_dict(f'{in_dir}/TBewirtschaftungsarten.csv'):
|
for c in utils.csv_parse_dict(f'{in_dir}/TBewirtschaftungsarten.csv'):
|
||||||
name: str = c['Bezeichnung']
|
name: str = c['Bezeichnung']
|
||||||
cultid = name[0].upper()
|
cultid = name[0].upper()
|
||||||
@ -625,28 +629,28 @@ def migrate_cultivations(in_dir: str, out_dir: str) -> None:
|
|||||||
elif 'biolog' in name.lower():
|
elif 'biolog' in name.lower():
|
||||||
cultid = 'BIO'
|
cultid = 'BIO'
|
||||||
CULTIVATION_MAP[c['BANR']] = cultid
|
CULTIVATION_MAP[c['BANR']] = cultid
|
||||||
f.row(cultid, name)
|
f.row(cultid, name, None)
|
||||||
|
|
||||||
|
|
||||||
def migrate_area_commitment_types(in_dir: str, out_dir: str) -> None:
|
def migrate_area_commitment_types(in_dir: str, out_dir: str) -> None:
|
||||||
with utils.csv_open(f'{out_dir}/area_commitment_type.csv') as f:
|
with utils.csv_open(f'{out_dir}/area_commitment_type.csv') as f:
|
||||||
f.header('vtrgid', 'sortid', 'attrid', 'disc',
|
f.header('vtrgid', 'sortid', 'attrid', 'disc', 'min_kg_per_ha',
|
||||||
'min_kg_per_ha', 'max_kg_per_ha', 'penalty_amount')
|
'penalty_per_kg', 'penalty_amount', 'penalty_none')
|
||||||
for t in utils.csv_parse_dict(f'{in_dir}/TLiefermengen.csv'):
|
for t in utils.csv_parse_dict(f'{in_dir}/TLiefermengen.csv'):
|
||||||
sortid: str = t['SNR']
|
sortid: str = t['SNR']
|
||||||
if not sortid or sortid == 'SV':
|
if not sortid or sortid == 'SV':
|
||||||
continue
|
continue
|
||||||
menge = int(t['ErwarteteLiefermengeProHa'])
|
menge = int(t['ErwarteteLiefermengeProHa'])
|
||||||
f.row(sortid + (t['SANR'] or ''), sortid[:2], t['SANR'] or sortid[2:] or None, None,
|
f.row(sortid + (t['SANR'] or ''), sortid[:2], t['SANR'] or sortid[2:] or None, None, menge,
|
||||||
menge, menge, None)
|
None, None, None)
|
||||||
bio = []
|
bio = []
|
||||||
if CLIENT == WG.MATZEN:
|
if CLIENT == WG.MATZEN:
|
||||||
bio = ['GV', 'ZW', 'MT']
|
bio = ['GV', 'ZW', 'MT']
|
||||||
f.row('BM', 'BM', None, None, None, None, None)
|
f.row('BM', 'BM', None, None, None, None, None, None)
|
||||||
elif CLIENT == WG.WINZERKELLER:
|
elif CLIENT == WG.WINZERKELLER:
|
||||||
bio = ['GV', 'ZW', 'WR', 'MT', 'RR', 'WB', 'CH', 'MU']
|
bio = ['GV', 'ZW', 'WR', 'MT', 'RR', 'WB', 'CH', 'MU']
|
||||||
for sortid in bio:
|
for sortid in bio:
|
||||||
f.row(f'{sortid}B', sortid, 'B', None, None, None, None)
|
f.row(f'{sortid}B', sortid, 'B', None, None, None, None, None)
|
||||||
|
|
||||||
|
|
||||||
def normalize_name(family_name: str, given_name: str) -> Tuple[Optional[str], Optional[str], Optional[str], Optional[str], Optional[str], Optional[str]]:
|
def normalize_name(family_name: str, given_name: str) -> Tuple[Optional[str], Optional[str], Optional[str], Optional[str], Optional[str], Optional[str]]:
|
||||||
@ -767,7 +771,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
f_m.header(
|
f_m.header(
|
||||||
'mgnr', 'predecessor_mgnr', 'prefix', 'given_name', 'middle_names', 'family_name', 'suffix',
|
'mgnr', 'predecessor_mgnr', 'prefix', 'given_name', 'middle_names', 'family_name', 'suffix',
|
||||||
'birthday', 'entry_date', 'exit_date', 'business_shares', 'accounting_nr', 'zwstid',
|
'birthday', 'entry_date', 'exit_date', 'business_shares', 'accounting_nr', 'zwstid',
|
||||||
'lfbis_nr', 'ustid_nr', 'volllieferant', 'buchführend', 'funktionär', 'active', 'deceased',
|
'lfbis_nr', 'ustid_nr', 'volllieferant', 'buchführend', 'organic', 'funktionär', 'active', 'deceased',
|
||||||
'iban', 'bic', 'country', 'postal_dest', 'address', 'default_kgnr', 'comment')
|
'iban', 'bic', 'country', 'postal_dest', 'address', 'default_kgnr', 'comment')
|
||||||
f_mba.header('mgnr', 'name', 'country', 'postal_dest', 'address')
|
f_mba.header('mgnr', 'name', 'country', 'postal_dest', 'address')
|
||||||
f_tel.header('mgnr', 'nr', 'type', 'number', 'comment')
|
f_tel.header('mgnr', 'nr', 'type', 'number', 'comment')
|
||||||
@ -952,7 +956,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
|||||||
mgnr, pred, prefix, given_name, middle_names, family_name, suffix,
|
mgnr, pred, prefix, given_name, middle_names, family_name, suffix,
|
||||||
m['Geburtsjahr'], m['Eintrittsdatum'], m['Austrittsdatum'], m['Geschäftsanteile1'] or 0,
|
m['Geburtsjahr'], m['Eintrittsdatum'], m['Austrittsdatum'], m['Geschäftsanteile1'] or 0,
|
||||||
m['BHKontonummer'], zwstid, bnr, ustid_nr,
|
m['BHKontonummer'], zwstid, bnr, ustid_nr,
|
||||||
m['Volllieferant'] or False, m['Buchführend'] or False, funktionaer, active, deceased,
|
m['Volllieferant'] or False, m['Buchführend'] or False, False, funktionaer, active, deceased,
|
||||||
iban, bic, AUSTRIA, postal_dest, address or '-', kgnr, m['Anmerkung']
|
iban, bic, AUSTRIA, postal_dest, address or '-', kgnr, m['Anmerkung']
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -1521,10 +1525,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
|
|
||||||
with utils.csv_open(f'{out_dir}/season.csv') as f_season, \
|
with utils.csv_open(f'{out_dir}/season.csv') as f_season, \
|
||||||
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', 'start_date', 'end_date')
|
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',
|
||||||
|
'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'], s['start'], s['end'])
|
f_season.row(y, s['currency'], s['precision'], 10_000, 0.10, 0.13,
|
||||||
|
PARAMETERS['LIEFERPFLICHT/GA1'], PARAMETERS['LIEFERRECHT/GA1'],
|
||||||
|
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
|
||||||
@ -1677,9 +1685,9 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
|||||||
|
|
||||||
# TODO database migration
|
# TODO database migration
|
||||||
with utils.csv_open(f'{out_dir}/payment_delivery_part.csv') as f_del_pay, \
|
with utils.csv_open(f'{out_dir}/payment_delivery_part.csv') as f_del_pay, \
|
||||||
utils.csv_open(f'{out_dir}/delivery_part_bin.csv') as f_bin:
|
utils.csv_open(f'{out_dir}/delivery_part_bucket.csv') as f_bucket:
|
||||||
f_del_pay.header('year', 'did', 'dpnr', 'avnr', 'amount')
|
f_del_pay.header('year', 'did', 'dpnr', 'avnr', 'amount')
|
||||||
f_bin.header('year', 'did', 'dpnr', 'binnr', 'discr', 'value')
|
f_bucket.header('year', 'did', 'dpnr', 'bktnr', 'discr', 'value')
|
||||||
deliveries = {d['LINR']: d for d in utils.csv_parse_dict(f'{in_dir}/TLieferungen.csv')}
|
deliveries = {d['LINR']: d for d in utils.csv_parse_dict(f'{in_dir}/TLieferungen.csv')}
|
||||||
for linr, (y, did, dpnr) in DELIVERY_MAP.items():
|
for linr, (y, did, dpnr) in DELIVERY_MAP.items():
|
||||||
p = deliveries[linr]
|
p = deliveries[linr]
|
||||||
@ -1688,8 +1696,8 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
|||||||
gew, geb_gew = int(p['Gewicht']), int(p['BGewichtGebunden'])
|
gew, geb_gew = int(p['Gewicht']), int(p['BGewichtGebunden'])
|
||||||
b1 = gew - geb_gew
|
b1 = gew - geb_gew
|
||||||
b2 = geb_gew
|
b2 = geb_gew
|
||||||
f_bin.row(y, did, dpnr, 1, '_', b1)
|
f_bucket.row(y, did, dpnr, 0, '_', b1)
|
||||||
f_bin.row(y, did, dpnr, 2, p['SANR'] or '', b2)
|
f_bucket.row(y, did, dpnr, 1, p['SANR'] or '', b2)
|
||||||
for aznr, avnr, tznr in variant_year_map[y]:
|
for aznr, avnr, tznr in variant_year_map[y]:
|
||||||
val = p[f'BTeilzahlung{tznr}' if tznr < 6 else 'BEndauszahlung']
|
val = p[f'BTeilzahlung{tznr}' if tznr < 6 else 'BEndauszahlung']
|
||||||
val = round(val * pow(10, WGMASTER_PRECISION))
|
val = round(val * pow(10, WGMASTER_PRECISION))
|
||||||
@ -1709,9 +1717,10 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
||||||
params: Dict[str, str] = {p['Bezeichnung']: p['Wert'] for p in utils.csv_parse_dict(f'{in_dir}/TParameter.csv')}
|
global PARAMETERS
|
||||||
name = params['MANDANTENNAME1'].title().replace('F.', 'für').replace('U.', 'und').replace(' Im ', ' im ')
|
PARAMETERS = {p['Bezeichnung']: p['Wert'] for p in utils.csv_parse_dict(f'{in_dir}/TParameter.csv')}
|
||||||
suffix = params['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '')
|
name = PARAMETERS['MANDANTENNAME1'].title().replace('F.', 'für').replace('U.', 'und').replace(' Im ', ' im ')
|
||||||
|
suffix = PARAMETERS['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '')
|
||||||
types = {
|
types = {
|
||||||
'reggenmbh': 'reg. Gen.m.b.H.'
|
'reggenmbh': 'reg. Gen.m.b.H.'
|
||||||
}
|
}
|
||||||
@ -1720,32 +1729,27 @@ def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
|||||||
WG.WINZERKELLER: ('WKW', 'Winzerkeller')
|
WG.WINZERKELLER: ('WKW', 'Winzerkeller')
|
||||||
}.get(CLIENT, (None, None))
|
}.get(CLIENT, (None, None))
|
||||||
|
|
||||||
ort = params['MANDANTENORT'].title()
|
ort = PARAMETERS['MANDANTENORT'].title()
|
||||||
new_params: Dict[str, Optional[str]] = {
|
new_params: Dict[str, Optional[str]] = {
|
||||||
'CLIENT_NAME_TOKEN': tokens[0],
|
'CLIENT_NAME_TOKEN': tokens[0],
|
||||||
'CLIENT_NAME_SHORT': tokens[1],
|
'CLIENT_NAME_SHORT': tokens[1],
|
||||||
'CLIENT_NAME': name,
|
'CLIENT_NAME': name,
|
||||||
'CLIENT_NAME_SUFFIX': None,
|
'CLIENT_NAME_SUFFIX': None,
|
||||||
'CLIENT_NAME_TYPE': types[suffix],
|
'CLIENT_NAME_TYPE': types[suffix],
|
||||||
'CLIENT_PLZ': params['MANDANTENPLZ'],
|
'CLIENT_PLZ': PARAMETERS['MANDANTENPLZ'],
|
||||||
'CLIENT_ORT': ort,
|
'CLIENT_ORT': ort,
|
||||||
'CLIENT_ADDRESS': params['MANDANTENSTRASSE'],
|
'CLIENT_ADDRESS': PARAMETERS['MANDANTENSTRASSE'],
|
||||||
'CLIENT_IBAN': None,
|
'CLIENT_IBAN': None,
|
||||||
'CLIENT_BIC': None,
|
'CLIENT_BIC': None,
|
||||||
'CLIENT_USTIDNR': params['MANDANTENUID'].replace(' ', ''),
|
'CLIENT_USTIDNR': PARAMETERS['MANDANTENUID'].replace(' ', ''),
|
||||||
'CLIENT_LFBISNR': params['MANDANTENBETRIEBSNUMMER'],
|
'CLIENT_LFBISNR': PARAMETERS['MANDANTENBETRIEBSNUMMER'],
|
||||||
'CLIENT_PHONE': normalize_phone_nr(params['MANDANTENTELEFON'], ort),
|
'CLIENT_PHONE': normalize_phone_nr(PARAMETERS['MANDANTENTELEFON'], ort),
|
||||||
'CLIENT_FAX': normalize_phone_nr(params['MANDANTENTELEFAX'], ort),
|
'CLIENT_FAX': normalize_phone_nr(PARAMETERS['MANDANTENTELEFAX'], ort),
|
||||||
'CLIENT_EMAIL': params['MANDANTENEMAIL'],
|
'CLIENT_EMAIL': PARAMETERS['MANDANTENEMAIL'],
|
||||||
'CLIENT_WEBSITE': params.get('MANDANTENHOMEPAGE', None),
|
'CLIENT_WEBSITE': PARAMETERS.get('MANDANTENHOMEPAGE', None),
|
||||||
'DELIVERY_OBLIGATION': params.get('LIEFERPFLICHT/GA1', None),
|
'DOCUMENT_SENDER': PARAMETERS.get('ABSENDERTEXT2', None),
|
||||||
'DELIVERY_RIGHT': params.get('LIEFERRECHT/GA1', None),
|
'TEXT_DELIVERYNOTE': PARAMETERS.get('LIEFERSCHEINTEXT', None).replace(' daß ', ' dass ').replace('obige Angaben maßgeblicher Veränderungen', 'maßgeblichen Veränderungen obiger Angaben'),
|
||||||
'VAT_NORMAL': '0.20',
|
'TEXT_DELIVERYCONFIRMATION': PARAMETERS.get('ANLIEFTEXT', None),
|
||||||
'VAT_REDUCED': '0.10',
|
|
||||||
'VAT_FLATRATE': '0.13',
|
|
||||||
'DOCUMENT_SENDER': params.get('ABSENDERTEXT2', None),
|
|
||||||
'TEXT_DELIVERYNOTE': params.get('LIEFERSCHEINTEXT', None).replace(' daß ', ' dass ').replace('obige Angaben maßgeblicher Veränderungen', 'maßgeblichen Veränderungen obiger Angaben'),
|
|
||||||
'TEXT_DELIVERYCONFIRMATION': params.get('ANLIEFTEXT', None),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
with utils.csv_open(f'{out_dir}/client_parameter.csv') as f:
|
with utils.csv_open(f'{out_dir}/client_parameter.csv') as f:
|
||||||
@ -1777,6 +1781,7 @@ def main() -> None:
|
|||||||
|
|
||||||
DB_CNX = sqlite3.connect(args.database)
|
DB_CNX = sqlite3.connect(args.database)
|
||||||
|
|
||||||
|
migrate_parameters(args.in_dir, args.out_dir)
|
||||||
migrate_gradation(args.in_dir, args.out_dir)
|
migrate_gradation(args.in_dir, args.out_dir)
|
||||||
migrate_branches(args.in_dir, args.out_dir)
|
migrate_branches(args.in_dir, args.out_dir)
|
||||||
migrate_grosslagen(args.in_dir, args.out_dir)
|
migrate_grosslagen(args.in_dir, args.out_dir)
|
||||||
@ -1789,7 +1794,6 @@ def main() -> None:
|
|||||||
migrate_area_commitments(args.in_dir, args.out_dir)
|
migrate_area_commitments(args.in_dir, args.out_dir)
|
||||||
migrate_deliveries(args.in_dir, args.out_dir)
|
migrate_deliveries(args.in_dir, args.out_dir)
|
||||||
migrate_payments(args.in_dir, args.out_dir)
|
migrate_payments(args.in_dir, args.out_dir)
|
||||||
migrate_parameters(args.in_dir, args.out_dir)
|
|
||||||
|
|
||||||
DB_CNX.close()
|
DB_CNX.close()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user