migrate.py: Adaptations for Gr.Inzersdorf
This commit is contained in:
@ -408,6 +408,10 @@ def lookup_plz(plz: Optional[int], ort: Optional[str], address: Optional[str] =
|
|||||||
ort = 'SCHÖNAU AN DER TRIESTING'
|
ort = 'SCHÖNAU AN DER TRIESTING'
|
||||||
elif ort.upper() == 'BAD FISCHAU - BRUNN' and plz == 2721:
|
elif ort.upper() == 'BAD FISCHAU - BRUNN' and plz == 2721:
|
||||||
ort = 'BAD FISCHAU-BRUNN'
|
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 = 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,))
|
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)]
|
return [(9008, 31028), (9026, 31028), (9032, 31028), (9037, 31028), (9051, 31028), (9067, 31028)]
|
||||||
elif CLIENT == WG.WEINLAND:
|
elif CLIENT == WG.WEINLAND:
|
||||||
hkid = "'WLWV'"
|
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:
|
elif CLIENT == WG.BADEN:
|
||||||
hkid = "'WLTH'"
|
hkid = "'WLTH'"
|
||||||
if name.lower() == 'baden':
|
if name.lower() == 'baden':
|
||||||
@ -599,7 +611,7 @@ def lookup_hkid(kgnr: Optional[int], qualid: str) -> str:
|
|||||||
if qualid in ('WEI', 'RSW'):
|
if qualid in ('WEI', 'RSW'):
|
||||||
return 'OEST'
|
return 'OEST'
|
||||||
elif kgnr is None:
|
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'
|
hkid = 'WLNO'
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError(f'Default hkid for {CLIENT} not implemented yet')
|
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:
|
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')
|
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'):
|
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']
|
address = b['Straße']
|
||||||
postal_dest = lookup_plz(int(b['PLZ']) if b['PLZ'] else None, b['Ort'], address)
|
postal_dest = lookup_plz(int(b['PLZ']) if b['PLZ'] else None, b['Ort'], address)
|
||||||
if CLIENT == WG.MATZEN:
|
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
|
tel, mob = normalize_phone_nr(b['Telefon']), None
|
||||||
if tel and tel[4] == '6':
|
if tel and tel[4] == '6':
|
||||||
mob, tel = tel, None
|
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)
|
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:
|
with utils.csv_open(f'{out_dir}/area_commitment_type.csv') as f:
|
||||||
f.header('vtrgid', 'sortid', 'attrid', 'disc', 'min_kg_per_ha',
|
f.header('vtrgid', 'sortid', 'attrid', 'disc', 'min_kg_per_ha',
|
||||||
'penalty_per_kg', 'penalty_amount', 'penalty_none')
|
'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'):
|
for t in utils.csv_parse_dict(f'{in_dir}/TLiefermengen.csv'):
|
||||||
sortid: str = t['SNR']
|
sortid: str = t['SNR']
|
||||||
if not sortid or sortid == 'SV':
|
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]] = [
|
deliveries: List[Tuple[int, str, datetime.date, int, int]] = [
|
||||||
(d['LINR'], d['Lieferscheinnummer'], d['Datum'], d['ZNR'], d['MGNR'])
|
(d['LINR'], d['Lieferscheinnummer'], d['Datum'], d['ZNR'], d['MGNR'])
|
||||||
for d in deliveries
|
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}
|
lsnrs = {d[1] for d in deliveries}
|
||||||
|
local_lnr = 99
|
||||||
|
|
||||||
for lnr, lsnr, date, zwstid, mgnr in deliveries:
|
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
|
continue
|
||||||
if lsnr.startswith('22'):
|
if lsnr.startswith('22'):
|
||||||
lsnr = '20' + lsnr[2:]
|
lsnr = '20' + lsnr[2:]
|
||||||
@ -1525,6 +1545,10 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
}[nr]
|
}[nr]
|
||||||
elif CLIENT == WG.BADEN:
|
elif CLIENT == WG.BADEN:
|
||||||
mod['id'] = name[-1] if name.startswith('Klasse') else 'TB' if name == 'Treuebonus' else 'UE'
|
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:
|
else:
|
||||||
raise NotImplementedError(f'Modifier migration for {CLIENT} not yet implemented')
|
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']
|
snr = s['nr']
|
||||||
|
|
||||||
mgnr = delivery_dict[linrs[0]]['MGNR']
|
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'])
|
glob_waage = set(delivery_dict[linr]['Waagentext'] for linr in linrs if delivery_dict[linr]['Waagentext'])
|
||||||
|
|
||||||
zwstid = lsnr[8]
|
zwstid = lsnr[8]
|
||||||
@ -1577,7 +1601,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
d = delivery_dict[linr]
|
d = delivery_dict[linr]
|
||||||
DELIVERY_MAP[linr] = (date.year, snr, dpnr)
|
DELIVERY_MAP[linr] = (date.year, snr, dpnr)
|
||||||
if lsnr != d['Lieferscheinnummer']:
|
if lsnr != d['Lieferscheinnummer']:
|
||||||
renumber_delivery(d['Lieferscheinnummer'], lsnr)
|
renumber_delivery(d['Lieferscheinnummer'] or '', lsnr)
|
||||||
|
|
||||||
oe = d['OechsleOriginal'] or d['Oechsle']
|
oe = d['OechsleOriginal'] or d['Oechsle']
|
||||||
kmw = GRADATION_MAP[oe]
|
kmw = GRADATION_MAP[oe]
|
||||||
@ -1676,6 +1700,14 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
comment = None
|
comment = None
|
||||||
elif comment == '.':
|
elif comment == '.':
|
||||||
comment = None
|
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:
|
if comment:
|
||||||
comments.append(comment)
|
comments.append(comment)
|
||||||
gerebelt = True if CLIENT == WG.MATZEN or (CLIENT == WG.WINZERKELLER and zwstid == 'W') else d['Gerebelt'] or False
|
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
|
global PARAMETERS
|
||||||
PARAMETERS = {p['Bezeichnung']: p['Wert'] for p in utils.csv_parse_dict(f'{in_dir}/TParameter.csv')}
|
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 ')
|
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 = {
|
types = {
|
||||||
'reggenmbh': 'reg. Gen.m.b.H.'
|
'reggenmbh': 'reg. Gen.m.b.H.'
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user