Fix modifier migration
This commit is contained in:
@ -438,6 +438,7 @@ CREATE TABLE modifier (
|
||||
year INTEGER NOT NULL,
|
||||
modid TEXT NOT NULL CHECK (modid REGEXP '^[A-Z0-9]+$'),
|
||||
|
||||
ordering INTEGER NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
abs INTEGER,
|
||||
rel REAL,
|
||||
|
@ -1228,18 +1228,26 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
global 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 = {}
|
||||
branches = {}
|
||||
|
||||
for mod in modifiers.values():
|
||||
name: str = mod['Bezeichnung']
|
||||
name: str = mod['Bezeichnung'].replace('ausser', 'außer')
|
||||
nr: int = mod['ASNR']
|
||||
MODIFIER_MAP[name] = mod
|
||||
if WG == 'MATZEN':
|
||||
mod['id'] = name[-1] if name.startswith('Klasse') else 'TB' if name == 'Treuebonus' else 'PZS'
|
||||
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:
|
||||
raise NotImplementedError()
|
||||
|
||||
@ -1377,15 +1385,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
)
|
||||
for attrid in attributes:
|
||||
f_attr.row(date.year, snr, dpnr, attrid)
|
||||
f_delivery.row(date.year, snr, date, d['Uhrzeit'], zwstid, lnr, lsnr, mgnr,
|
||||
'; '.join(comments) or None)
|
||||
f_delivery.row(date.year, snr, date, d['Uhrzeit'], zwstid, lnr, lsnr, mgnr, '; '.join(comments) or None)
|
||||
for k, v in updated_varieties.items():
|
||||
print(k + (f' ({v} times)' if v > 1 else ''))
|
||||
|
||||
with utils.csv_open(f'{out_dir}/delivery_part_modifier.csv') as f_part_mod:
|
||||
f_part_mod.header('year', 'did', 'dpnr', 'modid')
|
||||
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
|
||||
y, did, dpnr = DELIVERY_MAP[m['LINR']]
|
||||
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, \
|
||||
utils.csv_open(f'{out_dir}/modifier.csv') as f_mod:
|
||||
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():
|
||||
f_season.row(y, s['currency'], s['precision'], s['start'], s['end'])
|
||||
for m in modifiers.values():
|
||||
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'])
|
||||
|
||||
|
||||
@ -1501,7 +1509,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
||||
for name in modifiers.split(' / '):
|
||||
mod = MODIFIER_MAP[name]
|
||||
if mod['AZASProzent']:
|
||||
r += mod['AZASProzent']
|
||||
r += mod['AZASProzent'] / 100.0
|
||||
if mod['AZAS']:
|
||||
a += round(mod['AZAS'] * pow(10, WGMASTER_PRECISION))
|
||||
return a, r
|
||||
@ -1590,7 +1598,7 @@ def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
||||
'DELIVERY_OBLIGATION': params.get('LIEFERPFLICHT/GA1', None),
|
||||
'DELIVERY_RIGHT': params.get('LIEFERRECHT/GA1', 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:
|
||||
|
Reference in New Issue
Block a user