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,
|
f.row(sortid + (attrid or ''), sortid[:2], attrid or sortid[2:] or None, None, menge,
|
||||||
None, None, None)
|
None, None, None)
|
||||||
if CLIENT == WG.MATZEN:
|
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]]:
|
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}/member_email_address.csv') as f_email, \
|
||||||
utils.csv_open(f'{out_dir}/wb_kg.csv', 'a') as f_kg):
|
utils.csv_open(f'{out_dir}/wb_kg.csv', 'a') as f_kg):
|
||||||
f_m.header(
|
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',
|
'birthday', 'entry_date', 'exit_date', 'business_shares', 'accounting_nr', 'zwstid',
|
||||||
'lfbis_nr', 'ustid_nr', 'volllieferant', 'buchführend', 'organic', 'funktionär', 'active', 'deceased',
|
'lfbis_nr', 'ustid_nr', 'volllieferant', 'buchführend', 'organic', 'funktionär', 'active', 'deceased',
|
||||||
'iban', 'bic', 'country', 'postal_dest', 'address', 'default_kgnr', 'comment')
|
'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():
|
if billing_name or n1.lower() != n2.lower():
|
||||||
convert_name(mgnr, (m['Nachname'], m['Vorname']),
|
convert_name(mgnr, (m['Nachname'], m['Vorname']),
|
||||||
(prefix, given_name, middle_names, family_name, suffix), billing_name)
|
(prefix, given_name, middle_names, family_name, suffix), billing_name)
|
||||||
if not given_name or not family_name:
|
if not family_name:
|
||||||
given_name = given_name or ''
|
if billing_name:
|
||||||
family_name = family_name or ''
|
family_name = billing_name
|
||||||
invalid(mgnr, 'Name', n1, active)
|
billing_name = None
|
||||||
|
else:
|
||||||
|
invalid(mgnr, 'Name', n1, active)
|
||||||
|
|
||||||
bnr: Optional[str] = m['Betriebsnummer'] if m['Betriebsnummer'] != '-' else None
|
bnr: Optional[str] = m['Betriebsnummer'] if m['Betriebsnummer'] != '-' else None
|
||||||
if bnr is not 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']
|
email: Optional[str] = m['EMail']
|
||||||
emails = []
|
emails = []
|
||||||
if email is not None:
|
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(' + ')):
|
for email in (email.split(' ') if CLIENT == WG.BADEN else email.split(' + ')):
|
||||||
if email.isupper():
|
if email.isupper():
|
||||||
email = email.lower()
|
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
|
pred = m['MGNR-Vorgänger'] if m['MGNR-Vorgänger'] in mgnrs else None
|
||||||
f_m.row(
|
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['Geburtsjahr'], m['Eintrittsdatum'], m['Austrittsdatum'], m['Geschäftsanteile1'] or 0,
|
||||||
m['BHKontonummer'], zwstid, bnr, ustid_nr,
|
m['BHKontonummer'], zwstid, bnr, ustid_nr,
|
||||||
m['Volllieferant'] or False, m['Buchführend'] or False, False, funktionaer, active, deceased,
|
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')
|
'year_from', 'year_to', 'comment')
|
||||||
|
|
||||||
for fb in utils.csv_parse_dict(f'{in_dir}/TFlaechenbindungen.csv'):
|
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
|
continue
|
||||||
parz: str = fb['Parzellennummer']
|
parz: str = fb['Parzellennummer']
|
||||||
fbnr: int = fb['FBNR']
|
fbnr: int = fb['FBNR']
|
||||||
mgnr: int = fb['MGNR']
|
mgnr: int = fb['MGNR']
|
||||||
gem = GEM_MAP[fb['GNR']]
|
gem = GEM_MAP[fb['GNR']] if fb['GNR'] is not None else None
|
||||||
kgnrs = [kgnr for kgnr, gkz in gem]
|
kgnrs = [kgnr for kgnr, gkz in gem] if gem is not None else [4002]
|
||||||
rnr = fb['RNR']
|
rnr = fb['RNR']
|
||||||
rd_kgnr, rdnr, _ = REED_MAP.get(rnr, (None, None, None)) if rnr else (None, None, None)
|
rd_kgnr, rdnr, _ = REED_MAP.get(rnr, (None, None, None)) if rnr else (None, None, None)
|
||||||
if mgnr not in MEMBER_MAP:
|
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('+', '/'):
|
if parz != gstnr.replace('+', '/'):
|
||||||
convert(mgnr, f'GstNr. ({fbnr})', parz, gstnr)
|
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
|
to = fb['Bis'] if fb['Bis'] and fb['Bis'] < 3000 else None
|
||||||
attrid = ATTRIBUTE_MAP[fb['SANR']] if fb['SANR'] else None
|
attrid = ATTRIBUTE_MAP[fb['SANR']] if fb['SANR'] else None
|
||||||
if attrid == 'B':
|
if attrid == 'B':
|
||||||
attrid = None
|
attrid = None
|
||||||
f_fb.row(fbnr, mgnr, fb['SNR'] + (attrid or ''), CULTIVATION_MAP[fb['BANR'] or 1], area,
|
f_fb.row(fbnr, mgnr, snr + (attrid or ''), CULTIVATION_MAP[fb['BANR'] or 1], area,
|
||||||
kgnr, gstnr, rdnr, fb['Von'], to, comment)
|
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]]:
|
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
|
local_lnr = 99
|
||||||
|
|
||||||
for lnr, lsnr, date, zwstid, mgnr in deliveries:
|
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
|
local_lnr += 1
|
||||||
add(f'{date:%Y%m%d}G{local_lnr:03}', lnr, date)
|
add(f'{date:%Y%m%d}G{local_lnr:03}', lnr, date)
|
||||||
continue
|
continue
|
||||||
|
elif CLIENT == WG.BADEN and len(lsnr) <= 8:
|
||||||
|
add(f'{date:%Y}B{lsnr:>03}', lnr, date)
|
||||||
|
continue
|
||||||
elif len(lsnr) < 8:
|
elif len(lsnr) < 8:
|
||||||
continue
|
continue
|
||||||
if lsnr.startswith('22'):
|
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:
|
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_delivery.header('year', 'did', 'date', 'time', 'zwstid', 'lnr', 'lsnr', 'mgnr', 'comment')
|
||||||
f_part.header('year', 'did', 'dpnr', 'sortid', 'attrid', 'cultid', 'weight', 'kmw', 'qualid',
|
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')
|
'gebunden', 'temperature', 'acid', 'scale_id', 'weighing_data', 'weighing_reason', 'comment')
|
||||||
|
|
||||||
for lsnr, linrs, date in fixed:
|
for lsnr, linrs, date in fixed:
|
||||||
@ -1583,10 +1595,12 @@ 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']
|
||||||
|
if CLIENT == WG.BADEN and mgnr == 229:
|
||||||
|
mgnr = 3
|
||||||
znr = delivery_dict[linrs[0]]['ZNR'] or (1 if CLIENT == WG.WEINLAND else None)
|
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] if len(lsnr) > 8 else lsnr[4]
|
||||||
if zwstid not in branches:
|
if zwstid not in branches:
|
||||||
branches[zwstid] = {}
|
branches[zwstid] = {}
|
||||||
if date not in 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')
|
attributes.remove('W')
|
||||||
elif CLIENT == WG.BADEN:
|
elif CLIENT == WG.BADEN:
|
||||||
if sortid == 'GO':
|
if sortid == 'GO':
|
||||||
|
# "Gem.Satz rot"
|
||||||
sortid = 'SO'
|
sortid = 'SO'
|
||||||
|
|
||||||
if d['SNR'] != sortid:
|
if d['SNR'] != sortid:
|
||||||
@ -1658,6 +1673,15 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
else:
|
else:
|
||||||
warning_delivery(lsnr, mgnr, 'qualid', f'{qualid} (abgewertet)')
|
warning_delivery(lsnr, mgnr, 'qualid', f'{qualid} (abgewertet)')
|
||||||
qualid = 'WEI'
|
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
|
kgnr, rdnr = None, None
|
||||||
if d['GNR']:
|
if d['GNR']:
|
||||||
@ -1727,7 +1751,8 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
|||||||
gerebelt, handwiegung, d['Spaetlese-Ueberpruefung'] or False,
|
gerebelt, handwiegung, d['Spaetlese-Ueberpruefung'] or False,
|
||||||
hand, lesewagen, gebunden, d['Temperatur'], acid, scale_id, weighing_data, None, comment
|
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():
|
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 ''))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user