migrate.py: Adjust for Baden
This commit is contained in:
@ -811,7 +811,10 @@ def migrate_area_commitment_types(in_dir: str, out_dir: str) -> None:
|
||||
f.row(sortid + (attrid or ''), sortid[:2], attrid or sortid[2:] or None, None, menge,
|
||||
None, None, None)
|
||||
if CLIENT == WG.MATZEN:
|
||||
f.row('BM', 'BM', None, None, None, None, None, None, None)
|
||||
f.row('BM', 'BM', None, None, None, None, None, None)
|
||||
elif CLIENT == WG.BADEN:
|
||||
for sortid in ['NB', 'GW', 'BB', 'WB', 'SL', 'RG', 'ZF', 'SO', 'MO', 'TR', 'GR', 'CS', 'MU', 'ME', 'GB', 'SA', 'BO', 'RL', 'SB', 'SY']:
|
||||
f.row(sortid, sortid, None, None, None, None, None, None)
|
||||
|
||||
|
||||
def normalize_name(family_name: str, given_name: str) -> Tuple[Optional[str], Optional[str], Optional[str], Optional[str], Optional[str], Optional[str]]:
|
||||
@ -951,7 +954,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
utils.csv_open(f'{out_dir}/member_email_address.csv') as f_email, \
|
||||
utils.csv_open(f'{out_dir}/wb_kg.csv', 'a') as f_kg):
|
||||
f_m.header(
|
||||
'mgnr', 'predecessor_mgnr', 'prefix', 'given_name', 'middle_names', 'family_name', 'suffix',
|
||||
'mgnr', 'predecessor_mgnr', 'name', 'prefix', 'given_name', 'middle_names', 'suffix', 'attn',
|
||||
'birthday', 'entry_date', 'exit_date', 'business_shares', 'accounting_nr', 'zwstid',
|
||||
'lfbis_nr', 'ustid_nr', 'volllieferant', 'buchführend', 'organic', 'funktionär', 'active', 'deceased',
|
||||
'iban', 'bic', 'country', 'postal_dest', 'address', 'default_kgnr', 'comment')
|
||||
@ -990,10 +993,12 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
if billing_name or n1.lower() != n2.lower():
|
||||
convert_name(mgnr, (m['Nachname'], m['Vorname']),
|
||||
(prefix, given_name, middle_names, family_name, suffix), billing_name)
|
||||
if not given_name or not family_name:
|
||||
given_name = given_name or ''
|
||||
family_name = family_name or ''
|
||||
invalid(mgnr, 'Name', n1, active)
|
||||
if not family_name:
|
||||
if billing_name:
|
||||
family_name = billing_name
|
||||
billing_name = None
|
||||
else:
|
||||
invalid(mgnr, 'Name', n1, active)
|
||||
|
||||
bnr: Optional[str] = m['Betriebsnummer'] if m['Betriebsnummer'] != '-' else None
|
||||
if bnr is not None:
|
||||
@ -1105,6 +1110,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
email: Optional[str] = m['EMail']
|
||||
emails = []
|
||||
if email is not None:
|
||||
email = email.replace('qgmx.at', '@gmx.at').replace('qtuwien.ac.at', '@tuwien.ac.at')
|
||||
for email in (email.split(' ') if CLIENT == WG.BADEN else email.split(' + ')):
|
||||
if email.isupper():
|
||||
email = email.lower()
|
||||
@ -1146,7 +1152,7 @@ def migrate_members(in_dir: str, out_dir: str) -> None:
|
||||
|
||||
pred = m['MGNR-Vorgänger'] if m['MGNR-Vorgänger'] in mgnrs else None
|
||||
f_m.row(
|
||||
mgnr, pred, prefix, given_name, middle_names, family_name, suffix,
|
||||
mgnr, pred, family_name, prefix, given_name, middle_names, suffix, None,
|
||||
m['Geburtsjahr'], m['Eintrittsdatum'], m['Austrittsdatum'], m['Geschäftsanteile1'] or 0,
|
||||
m['BHKontonummer'], zwstid, bnr, ustid_nr,
|
||||
m['Volllieferant'] or False, m['Buchführend'] or False, False, funktionaer, active, deceased,
|
||||
@ -1389,13 +1395,13 @@ def migrate_area_commitments(in_dir: str, out_dir: str) -> None:
|
||||
'year_from', 'year_to', 'comment')
|
||||
|
||||
for fb in utils.csv_parse_dict(f'{in_dir}/TFlaechenbindungen.csv'):
|
||||
if (fb['Von'] is None and fb['Bis'] is None) or fb['GNR'] is None:
|
||||
if (fb['Von'] is None and fb['Bis'] is None) or (CLIENT != WG.BADEN and fb['GNR'] is None):
|
||||
continue
|
||||
parz: str = fb['Parzellennummer']
|
||||
fbnr: int = fb['FBNR']
|
||||
mgnr: int = fb['MGNR']
|
||||
gem = GEM_MAP[fb['GNR']]
|
||||
kgnrs = [kgnr for kgnr, gkz in gem]
|
||||
gem = GEM_MAP[fb['GNR']] if fb['GNR'] is not None else None
|
||||
kgnrs = [kgnr for kgnr, gkz in gem] if gem is not None else [4002]
|
||||
rnr = fb['RNR']
|
||||
rd_kgnr, rdnr, _ = REED_MAP.get(rnr, (None, None, None)) if rnr else (None, None, None)
|
||||
if mgnr not in MEMBER_MAP:
|
||||
@ -1448,12 +1454,15 @@ def migrate_area_commitments(in_dir: str, out_dir: str) -> None:
|
||||
if parz != gstnr.replace('+', '/'):
|
||||
convert(mgnr, f'GstNr. ({fbnr})', parz, gstnr)
|
||||
|
||||
snr = fb['SNR']
|
||||
if snr == 'GO':
|
||||
snr = 'SO'
|
||||
to = fb['Bis'] if fb['Bis'] and fb['Bis'] < 3000 else None
|
||||
attrid = ATTRIBUTE_MAP[fb['SANR']] if fb['SANR'] else None
|
||||
if attrid == 'B':
|
||||
attrid = None
|
||||
f_fb.row(fbnr, mgnr, fb['SNR'] + (attrid or ''), CULTIVATION_MAP[fb['BANR'] or 1], area,
|
||||
kgnr, gstnr, rdnr, fb['Von'], to, comment)
|
||||
f_fb.row(fbnr, mgnr, snr + (attrid or ''), CULTIVATION_MAP[fb['BANR'] or 1], area,
|
||||
kgnr, gstnr, rdnr, fb['Von'] if fb['Von'] != 0 else None, to, comment)
|
||||
|
||||
|
||||
def fix_deliveries(deliveries: Iterable[Dict[str, Any]]) -> Iterable[Tuple[str, List[int], datetime.date]]:
|
||||
@ -1485,10 +1494,13 @@ def fix_deliveries(deliveries: Iterable[Dict[str, Any]]) -> Iterable[Tuple[str,
|
||||
local_lnr = 99
|
||||
|
||||
for lnr, lsnr, date, zwstid, mgnr in deliveries:
|
||||
if CLIENT == WG.WEINLAND and not lsnr or 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 CLIENT == WG.BADEN and len(lsnr) <= 8:
|
||||
add(f'{date:%Y}B{lsnr:>03}', lnr, date)
|
||||
continue
|
||||
elif len(lsnr) < 8:
|
||||
continue
|
||||
if lsnr.startswith('22'):
|
||||
@ -1564,7 +1576,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
utils.csv_open(f'{out_dir}/delivery_part.csv') as f_part:
|
||||
f_delivery.header('year', 'did', 'date', 'time', 'zwstid', 'lnr', 'lsnr', 'mgnr', 'comment')
|
||||
f_part.header('year', 'did', 'dpnr', 'sortid', 'attrid', 'cultid', 'weight', 'kmw', 'qualid',
|
||||
'hkid', 'kgnr', 'rdnr', 'gerebelt', 'manual_weighing', 'spl_check', 'hand_picked', 'lesewagen',
|
||||
'hkid', 'kgnr', 'rdnr', 'net_weight', 'manual_weighing', 'spl_check', 'hand_picked', 'lesewagen',
|
||||
'gebunden', 'temperature', 'acid', 'scale_id', 'weighing_data', 'weighing_reason', 'comment')
|
||||
|
||||
for lsnr, linrs, date in fixed:
|
||||
@ -1583,10 +1595,12 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
snr = s['nr']
|
||||
|
||||
mgnr = delivery_dict[linrs[0]]['MGNR']
|
||||
if CLIENT == WG.BADEN and mgnr == 229:
|
||||
mgnr = 3
|
||||
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]
|
||||
zwstid = lsnr[8] if len(lsnr) > 8 else lsnr[4]
|
||||
if zwstid not in branches:
|
||||
branches[zwstid] = {}
|
||||
if date not in branches[zwstid]:
|
||||
@ -1637,6 +1651,7 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
attributes.remove('W')
|
||||
elif CLIENT == WG.BADEN:
|
||||
if sortid == 'GO':
|
||||
# "Gem.Satz rot"
|
||||
sortid = 'SO'
|
||||
|
||||
if d['SNR'] != sortid:
|
||||
@ -1658,6 +1673,15 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
else:
|
||||
warning_delivery(lsnr, mgnr, 'qualid', f'{qualid} (abgewertet)')
|
||||
qualid = 'WEI'
|
||||
if qualid == 'LDW' and d['Oechsle'] < 68:
|
||||
warning_delivery(lsnr, mgnr, 'qualid', f'{qualid} ({d["Oechsle"]} °Oe)')
|
||||
qualid = 'RSW'
|
||||
elif qualid == 'QUW' and d['Oechsle'] < 73:
|
||||
warning_delivery(lsnr, mgnr, 'qualid', f'{qualid} ({d["Oechsle"]} °Oe)')
|
||||
qualid = 'LDW' if d['Oechsle'] >= 68 else 'RSW'
|
||||
elif qualid == 'KAB' and d['Oechsle'] < 84:
|
||||
warning_delivery(lsnr, mgnr, 'qualid', f'{qualid} ({d["Oechsle"]} °Oe)')
|
||||
qualid = 'QUW' if d['Oechsle'] >= 73 else 'LDW' if d['Oechsle'] >= 68 else 'RSW'
|
||||
|
||||
kgnr, rdnr = None, None
|
||||
if d['GNR']:
|
||||
@ -1727,7 +1751,8 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
gerebelt, handwiegung, d['Spaetlese-Ueberpruefung'] or False,
|
||||
hand, lesewagen, gebunden, d['Temperatur'], acid, scale_id, weighing_data, None, comment
|
||||
)
|
||||
f_delivery.row(date.year, snr, date, d['Uhrzeit'], zwstid, lnr, lsnr, mgnr, '; '.join(comments) or None)
|
||||
time = d['Uhrzeit'] if d['Uhrzeit'] != datetime.time(0, 0, 0) else None
|
||||
f_delivery.row(date.year, snr, date, time, zwstid, lnr, lsnr, mgnr, '; '.join(comments) or None)
|
||||
for k, v in updated_varieties.items():
|
||||
print(k + (f' ({v} times)' if v > 1 else ''))
|
||||
|
||||
|
Reference in New Issue
Block a user