diff --git a/sql/v01/10.create.sql b/sql/v01/10.create.sql index 7e51c20..b9ec485 100644 --- a/sql/v01/10.create.sql +++ b/sql/v01/10.create.sql @@ -3,7 +3,14 @@ PRAGMA foreign_keys = ON; CREATE TABLE meta ( version INTEGER NOT NULL DEFAULT 1 -); +) STRICT; + +CREATE TABLE client_parameter ( + param TEXT NOT NULL CHECK (param REGEXP '^[A-Z_]+$'), + value TEXT, + + CONSTRAINT pk_parameter PRIMARY KEY (param) +) STRICT; CREATE TABLE country ( alpha2 TEXT NOT NULL CHECK (alpha2 REGEXP '^[A-Z]{2}$'), @@ -103,7 +110,7 @@ CREATE TABLE AT_plz ( CONSTRAINT fk_AT_plz_AT_bundesland FOREIGN KEY (blnr) REFERENCES AT_bundesland (blnr) ON UPDATE CASCADE ON DELETE RESTRICT -); +) STRICT; CREATE TABLE AT_plz_dest ( plz INTEGER NOT NULL CHECK (plz >= 1000 AND plz <= 9999), @@ -245,7 +252,7 @@ CREATE TABLE branch ( 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]+$'), @@ -350,7 +357,7 @@ CREATE TABLE contract ( CONSTRAINT fk_contract_member FOREIGN KEY (mgnr) REFERENCES member (mgnr) ON UPDATE CASCADE ON DELETE RESTRICT -); +) STRICT; CREATE TABLE area_commitment ( vnr INTEGER NOT NULL, @@ -420,7 +427,7 @@ CREATE TABLE season ( CONSTRAINT fk_season_currency FOREIGN KEY (currency) REFERENCES currency (code) ON UPDATE CASCADE ON DELETE RESTRICT -); +) STRICT; CREATE TABLE modifier ( year INTEGER NOT NULL, diff --git a/wgmaster/import.py b/wgmaster/import.py index 07ee161..068f057 100755 --- a/wgmaster/import.py +++ b/wgmaster/import.py @@ -13,7 +13,7 @@ import csv DIR: str -TABLES = ['branch', 'wb_gl', 'wb_kg', 'wb_rd', 'wine_attribute', 'wine_cultivation', +TABLES = ['client_parameter', 'branch', 'wb_gl', 'wb_kg', 'wb_rd', 'wine_attribute', 'wine_cultivation', 'member', 'member_billing_address', 'contract', 'area_commitment', 'area_commitment_parcel', 'area_commitment_attribute', 'season', 'modifier', 'delivery', 'delivery_part', 'delivery_part_attribute', 'delivery_part_modifier', ] diff --git a/wgmaster/migrate.py b/wgmaster/migrate.py index cda9a4f..2918970 100755 --- a/wgmaster/migrate.py +++ b/wgmaster/migrate.py @@ -909,6 +909,41 @@ def migrate_payments(in_dir: str, out_dir: str) -> None: pass # TODO migrate payments +def migrate_parameters(in_dir: str, out_dir: str) -> None: + params: Dict[str, str] = {p['Bezeichnung']: p['Wert'] for p in csv.parse_dict(f'{in_dir}/TParameter.csv')} + name = params['MANDANTENNAME1'].title().replace('F.', 'für').replace('U.', 'und') + shortened = name.replace(' für ', ' f. ').replace(' und ', ' u. ') + suffix = params['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '') + suffixes = { + 'reggenmbg': 'reg. Gen.m.b.H.' + } + + new_params: Dict[str, Optional[str]] = { + 'NAME_TOKEN': None, + 'NAME_SHORT': None, + 'NAME_SHORTENED': shortened, + 'NAME': name, + 'NAME_SUFFIX': suffixes[suffix], + 'PLZ': params['MANDANTENPLZ'], + 'ORT': params['MANDANTENORT'], + 'ADDRESS': params['MANDANTENSTRASSE'], + 'DOCUMENT_SENDER': params['ABSENDERTEXT2'], + 'IBAN': None, + 'BIC': None, + 'USTID': params['MANDANTENUID'].replace(' ', ''), + 'LFBISNR': params['MANDANTENBETRIEBSNUMMER'], + 'PHONE': params['MANDANTENTELEFON'], + 'FAX': params['MANDANTENTELEFAX'], + 'EMAIL': params['MANDANTENEMAIL'], + 'WEBSITE': params['MANDANTENHOMEPAGE'], + } + + with open(f'{out_dir}/client_parameter.csv') as f: + f.write('param;value\n') + for param, value in new_params.items(): + f.write(csv.format_row(param, value)) + + def main() -> None: global DB_CNX, QUIET, HKID, WG @@ -947,6 +982,7 @@ def main() -> None: migrate_contracts(args.in_dir, args.out_dir) migrate_deliveries(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()