migrate.py: Adaptations for Gr.Inzersdorf

This commit is contained in:
2024-02-23 17:38:04 +01:00
parent 046ff56fef
commit 977509fbe6

View File

@ -408,6 +408,10 @@ def lookup_plz(plz: Optional[int], ort: Optional[str], address: Optional[str] =
ort = 'SCHÖNAU AN DER TRIESTING'
elif ort.upper() == 'BAD FISCHAU - BRUNN' and plz == 2721:
ort = 'BAD FISCHAU-BRUNN'
elif ort.upper() == 'NEUSIEDL/ZAYA':
ort = 'NEUSIEDL AN DER ZAYA'
elif ort.upper() == 'SIERNDORF/MARCH':
ort = 'SIERNDORF AN DER MARCH'
cur = DB_CNX.cursor()
cur.execute("SELECT o.okz, p.dest, o.name FROM AT_plz_dest p JOIN AT_ort o ON o.okz = p.okz WHERE plz = ?", (plz,))
@ -532,6 +536,14 @@ def lookup_gem_name(name: str) -> List[Tuple[int, int]]:
return [(9008, 31028), (9026, 31028), (9032, 31028), (9037, 31028), (9051, 31028), (9067, 31028)]
elif CLIENT == WG.WEINLAND:
hkid = "'WLWV'"
if name.lower() == 'neusiedl/zaya':
name = 'Neusiedl an der Zaya'
elif name.lower() == 'bad pirawarth':
name = 'pirawarth'
elif name.lower() == 'sierndorf':
gem_name = 'Jedenspeigen'
elif name.lower() == 'velm-götzendorf':
return [(6027, 30859), (6007, 30859)]
elif CLIENT == WG.BADEN:
hkid = "'WLTH'"
if name.lower() == 'baden':
@ -599,7 +611,7 @@ def lookup_hkid(kgnr: Optional[int], qualid: str) -> str:
if qualid in ('WEI', 'RSW'):
return 'OEST'
elif kgnr is None:
if CLIENT in (WG.MATZEN, WG.WINZERKELLER, WG.BADEN):
if CLIENT in (WG.MATZEN, WG.WINZERKELLER, WG.BADEN, WG.WEINLAND):
hkid = 'WLNO'
else:
raise NotImplementedError(f'Default hkid for {CLIENT} not implemented yet')
@ -655,7 +667,8 @@ def migrate_branches(in_dir: str, out_dir: str) -> None:
with utils.csv_open(f'{out_dir}/branch.csv') as f:
f.header('zwstid', 'name', 'country', 'postal_dest', 'address', 'phone_nr', 'fax_nr', 'mobile_nr')
for b in utils.csv_parse_dict(f'{in_dir}/TZweigstellen.csv'):
BRANCH_MAP[b['ZNR']] = b['Kennbst']
kennbst = b['Kennbst'] or ('G' if CLIENT == WG.WEINLAND else None)
BRANCH_MAP[b['ZNR']] = kennbst
address = b['Straße']
postal_dest = lookup_plz(int(b['PLZ']) if b['PLZ'] else None, b['Ort'], address)
if CLIENT == WG.MATZEN:
@ -664,7 +677,7 @@ def migrate_branches(in_dir: str, out_dir: str) -> None:
tel, mob = normalize_phone_nr(b['Telefon']), None
if tel and tel[4] == '6':
mob, tel = tel, None
f.row(b['Kennbst'], b['Name'].strip().title(), AUSTRIA, postal_dest, address,
f.row(kennbst, b['Name'].strip().title(), AUSTRIA, postal_dest, address,
tel, normalize_phone_nr(b['Telefax']), mob)
@ -780,6 +793,8 @@ 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:
f.header('vtrgid', 'sortid', 'attrid', 'disc', 'min_kg_per_ha',
'penalty_per_kg', 'penalty_amount', 'penalty_none')
if not os.path.exists(f'{in_dir}/TLiefermengen.csv'):
return
for t in utils.csv_parse_dict(f'{in_dir}/TLiefermengen.csv'):
sortid: str = t['SNR']
if not sortid or sortid == 'SV':
@ -1460,13 +1475,18 @@ def fix_deliveries(deliveries: Iterable[Dict[str, Any]]) -> Iterable[Tuple[str,
deliveries: List[Tuple[int, str, datetime.date, int, int]] = [
(d['LINR'], d['Lieferscheinnummer'], d['Datum'], d['ZNR'], d['MGNR'])
for d in deliveries
if d['Lieferscheinnummer'] and not d['Storniert']
if (d['Lieferscheinnummer'] or (CLIENT == WG.WEINLAND and d['Oechsle'] and d['MGNR'])) and not d['Storniert']
]
lsnrs = {d[1] for d in deliveries}
local_lnr = 99
for lnr, lsnr, date, zwstid, mgnr in deliveries:
if len(lsnr) < 8:
if CLIENT == WG.WEINLAND and not lsnr or len(lsnr) <= 8:
local_lnr += 1
add(f'{date:%Y%m%d}G{local_lnr:03}', lnr, date)
continue
elif len(lsnr) < 8:
continue
if lsnr.startswith('22'):
lsnr = '20' + lsnr[2:]
@ -1525,6 +1545,10 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
}[nr]
elif CLIENT == WG.BADEN:
mod['id'] = name[-1] if name.startswith('Klasse') else 'TB' if name == 'Treuebonus' else 'UE'
elif CLIENT == WG.WEINLAND:
mod['id'] = {
1: 'PZS', 2: 'TB', 3: 'LM'
}[nr]
else:
raise NotImplementedError(f'Modifier migration for {CLIENT} not yet implemented')
@ -1556,7 +1580,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
snr = s['nr']
mgnr = delivery_dict[linrs[0]]['MGNR']
znr = delivery_dict[linrs[0]]['ZNR']
znr = delivery_dict[linrs[0]]['ZNR'] or (1 if CLIENT == WG.WEINLAND else None)
glob_waage = set(delivery_dict[linr]['Waagentext'] for linr in linrs if delivery_dict[linr]['Waagentext'])
zwstid = lsnr[8]
@ -1577,7 +1601,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
d = delivery_dict[linr]
DELIVERY_MAP[linr] = (date.year, snr, dpnr)
if lsnr != d['Lieferscheinnummer']:
renumber_delivery(d['Lieferscheinnummer'], lsnr)
renumber_delivery(d['Lieferscheinnummer'] or '', lsnr)
oe = d['OechsleOriginal'] or d['Oechsle']
kmw = GRADATION_MAP[oe]
@ -1676,6 +1700,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
comment = None
elif comment == '.':
comment = None
elif comment in ('LW', 'lw'):
lesewagen = True
comment = None
elif 'LW' in comment:
lesewagen = True
comment = comment.replace('LW', '').strip()
if comment == '':
comment = None
if comment:
comments.append(comment)
gerebelt = True if CLIENT == WG.MATZEN or (CLIENT == WG.WINZERKELLER and zwstid == 'W') else d['Gerebelt'] or False
@ -1923,7 +1955,7 @@ def migrate_parameters(in_dir: str, out_dir: str) -> None:
global PARAMETERS
PARAMETERS = {p['Bezeichnung']: p['Wert'] for p in utils.csv_parse_dict(f'{in_dir}/TParameter.csv')}
name = PARAMETERS['MANDANTENNAME1'].title().replace('F.', 'für').replace('U.', 'und').replace(' Im ', ' im ')
suffix = PARAMETERS['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '')
suffix = PARAMETERS['MANDANTENNAME2'].lower().replace(' ', '').replace('.', '').split(',')[-1]
types = {
'reggenmbh': 'reg. Gen.m.b.H.'
}