Fix modifier migration
This commit is contained in:
@ -438,6 +438,7 @@ CREATE TABLE modifier (
|
|||||||
year INTEGER NOT NULL,
|
year INTEGER NOT NULL,
|
||||||
modid TEXT NOT NULL CHECK (modid REGEXP '^[A-Z0-9]+$'),
|
modid TEXT NOT NULL CHECK (modid REGEXP '^[A-Z0-9]+$'),
|
||||||
|
|
||||||
|
ordering INTEGER NOT NULL,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
abs INTEGER,
|
abs INTEGER,
|
||||||
rel REAL,
|
rel REAL,
|
||||||
|
@ -1228,18 +1228,26 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
global DELIVERY_MAP, MODIFIER_MAP
|
global DELIVERY_MAP, MODIFIER_MAP
|
||||||
DELIVERY_MAP, MODIFIER_MAP = {}, {}
|
DELIVERY_MAP, MODIFIER_MAP = {}, {}
|
||||||
|
|
||||||
modifiers = {m['ASNR']: m for m in utils.csv_parse_dict(f'{in_dir}/TAbschlaege.csv') if m['Bezeichnung']}
|
modifiers = {
|
||||||
|
m['ASNR']: m
|
||||||
|
for m in utils.csv_parse_dict(f'{in_dir}/TAbschlaege.csv')
|
||||||
|
if m['Bezeichnung'] and m['Bezeichnung'] != '-'
|
||||||
|
}
|
||||||
seasons = {}
|
seasons = {}
|
||||||
branches = {}
|
branches = {}
|
||||||
|
|
||||||
for mod in modifiers.values():
|
for mod in modifiers.values():
|
||||||
name: str = mod['Bezeichnung']
|
name: str = mod['Bezeichnung'].replace('ausser', 'außer')
|
||||||
nr: int = mod['ASNR']
|
nr: int = mod['ASNR']
|
||||||
MODIFIER_MAP[name] = mod
|
MODIFIER_MAP[name] = mod
|
||||||
if WG == 'MATZEN':
|
if WG == 'MATZEN':
|
||||||
mod['id'] = name[-1] if name.startswith('Klasse') else 'TB' if name == 'Treuebonus' else 'PZS'
|
mod['id'] = name[-1] if name.startswith('Klasse') else 'TB' if name == 'Treuebonus' else 'PZS'
|
||||||
elif WG == 'GWK':
|
elif WG == 'GWK':
|
||||||
mod['id'] = str(nr)
|
mod['id'] = {
|
||||||
|
1: 'KA', 2: 'LG', 3: 'MG', 4: 'SG',
|
||||||
|
5: 'VT', 6: 'MV', 7: 'UP', 8: 'VL',
|
||||||
|
9: 'DN', 10: 'SA', 11: 'DA', 12: 'EG',
|
||||||
|
}[nr]
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
|
||||||
@ -1377,15 +1385,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
)
|
)
|
||||||
for attrid in attributes:
|
for attrid in attributes:
|
||||||
f_attr.row(date.year, snr, dpnr, attrid)
|
f_attr.row(date.year, snr, dpnr, attrid)
|
||||||
f_delivery.row(date.year, snr, date, d['Uhrzeit'], zwstid, lnr, lsnr, mgnr,
|
f_delivery.row(date.year, snr, date, d['Uhrzeit'], zwstid, lnr, lsnr, mgnr, '; '.join(comments) or None)
|
||||||
'; '.join(comments) or None)
|
|
||||||
for k, v in updated_varieties.items():
|
for k, v in updated_varieties.items():
|
||||||
print(k + (f' ({v} times)' if v > 1 else ''))
|
print(k + (f' ({v} times)' if v > 1 else ''))
|
||||||
|
|
||||||
with utils.csv_open(f'{out_dir}/delivery_part_modifier.csv') as f_part_mod:
|
with utils.csv_open(f'{out_dir}/delivery_part_modifier.csv') as f_part_mod:
|
||||||
f_part_mod.header('year', 'did', 'dpnr', 'modid')
|
f_part_mod.header('year', 'did', 'dpnr', 'modid')
|
||||||
for m in utils.csv_parse_dict(f'{in_dir}/TLieferungAbschlag.csv'):
|
for m in utils.csv_parse_dict(f'{in_dir}/TLieferungAbschlag.csv'):
|
||||||
if m['LINR'] not in DELIVERY_MAP:
|
if m['LINR'] not in DELIVERY_MAP or m['ASNR'] not in modifiers:
|
||||||
continue
|
continue
|
||||||
y, did, dpnr = DELIVERY_MAP[m['LINR']]
|
y, did, dpnr = DELIVERY_MAP[m['LINR']]
|
||||||
f_part_mod.row(y, did, dpnr, modifiers[m['ASNR']]['id'])
|
f_part_mod.row(y, did, dpnr, modifiers[m['ASNR']]['id'])
|
||||||
@ -1393,12 +1400,13 @@ 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', 'start_date', 'end_date')
|
||||||
f_mod.header('year', 'modid', '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'], 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
|
||||||
f_mod.row(y, m['id'], m['Bezeichnung'], abs_v, m['AZASProzent'],
|
rel_v = m['AZASProzent'] / 100.0 if m['AZASProzent'] is not None else None
|
||||||
|
f_mod.row(y, m['id'], m['ASNR'], m['Bezeichnung'], abs_v, rel_v,
|
||||||
m.get('Standard', False), m['Schnellauswahl'])
|
m.get('Standard', False), m['Schnellauswahl'])
|
||||||
|
|
||||||
|
|
||||||
@ -1501,7 +1509,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
|||||||
for name in modifiers.split(' / '):
|
for name in modifiers.split(' / '):
|
||||||
mod = MODIFIER_MAP[name]
|
mod = MODIFIER_MAP[name]
|
||||||
if mod['AZASProzent']:
|
if mod['AZASProzent']:
|
||||||
r += mod['AZASProzent']
|
r += mod['AZASProzent'] / 100.0
|
||||||
if mod['AZAS']:
|
if mod['AZAS']:
|
||||||
a += round(mod['AZAS'] * pow(10, WGMASTER_PRECISION))
|
a += round(mod['AZAS'] * pow(10, WGMASTER_PRECISION))
|
||||||
return a, r
|
return a, r
|
||||||
@ -1557,7 +1565,7 @@ 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')}
|
params: Dict[str, str] = {p['Bezeichnung']: p['Wert'] for p in utils.csv_parse_dict(f'{in_dir}/TParameter.csv')}
|
||||||
name = params['MANDANTENNAME1'].title().replace('F.', 'für').replace('U.', 'und').replace(' Im ', 'im')
|
name = params['MANDANTENNAME1'].title().replace('F.', 'für').replace('U.', 'und').replace(' Im ', ' im ')
|
||||||
shortened = name.replace(' für ', ' f. ').replace(' und ', ' u. ').replace(' im ', ' i. ')
|
shortened = name.replace(' für ', ' f. ').replace(' und ', ' u. ').replace(' im ', ' i. ')
|
||||||
suffix = params['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '')
|
suffix = params['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '')
|
||||||
types = {
|
types = {
|
||||||
@ -1590,7 +1598,7 @@ def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
|||||||
'DELIVERY_OBLIGATION': params.get('LIEFERPFLICHT/GA1', None),
|
'DELIVERY_OBLIGATION': params.get('LIEFERPFLICHT/GA1', None),
|
||||||
'DELIVERY_RIGHT': params.get('LIEFERRECHT/GA1', None),
|
'DELIVERY_RIGHT': params.get('LIEFERRECHT/GA1', None),
|
||||||
'DOCUMENT_SENDER': params.get('ABSENDERTEXT2', None),
|
'DOCUMENT_SENDER': params.get('ABSENDERTEXT2', None),
|
||||||
'DELIVERY_NOTE_TEXT': params.get('LIEFERSCHEINTEXT', None).replace(' daß ', ' dass '),
|
'DELIVERY_NOTE_TEXT': params.get('LIEFERSCHEINTEXT', None).replace(' daß ', ' dass ').replace('obige Angaben maßgeblicher Veränderungen', 'maßgeblichen Veränderungen obiger Angaben'),
|
||||||
}
|
}
|
||||||
|
|
||||||
with utils.csv_open(f'{out_dir}/client_parameter.csv') as f:
|
with utils.csv_open(f'{out_dir}/client_parameter.csv') as f:
|
||||||
|
Reference in New Issue
Block a user