Add client_parameter table

This commit is contained in:
2023-04-28 12:45:10 +02:00
parent f8a27ea3ad
commit 24928931c8
3 changed files with 49 additions and 6 deletions

View File

@ -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,

View File

@ -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', ]

View File

@ -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()