Add area_commitment_parcel table

This commit is contained in:
2023-04-15 16:34:55 +02:00
parent d5c8c224df
commit 78188b9f4e
4 changed files with 53 additions and 30 deletions

View File

@ -652,10 +652,12 @@ def migrate_contracts(in_dir: str, out_dir: str) -> None:
with open(f'{out_dir}/contract.csv', 'w+') as f_c, \
open(f'{out_dir}/area_commitment.csv', 'w+') as f_fb, \
open(f'{out_dir}/area_commitment_parcel.csv', 'w+') as f_parc, \
open(f'{out_dir}/area_commitment_attribute.csv', 'w+') as f_attr:
f_c.write('vnr;mgnr;year_from;year_to\n')
f_fb.write('vnr;kgnr;gstnr;rdnr;area;sortid;cultid\n')
f_attr.write('vnr;kgnr;gstnr;attrid\n')
f_c.write('vnr;mgnr;year_from;year_to;comment\n')
f_fb.write('vnr;sortid;cultid;area\n')
f_parc.write('vnr;kgnr;gstnr;rdnr;area\n')
f_attr.write('vnr;attrid\n')
for fb in csv.parse_dict(f'{in_dir}/TFlaechenbindungen.csv'):
if fb['Von'] is None and fb['Bis'] is None:
@ -668,28 +670,26 @@ def migrate_contracts(in_dir: str, out_dir: str) -> None:
if mgnr not in MEMBER_MAP:
continue
f_c.write(csv.format_row(
vnr, mgnr, fb['Von'], fb['Bis'] if fb['Bis'] and fb['Bis'] < 3000 else None
))
gstnrs = parse_gstnrs(parz, kgnr, fb['MGNR'])
area = int(fb['Flaeche'])
gst_area = int(area / (len(gstnrs) or 1))
gstnrs = parse_gstnrs(parz, kgnr, fb['MGNR'])
comment = None
if parz is None or parz == '0000':
invalid(mgnr, 'GstNr.', f'{kgnr or 0:05}-{parz}')
gstnrs = ['99999']
gstnrs = []
elif len(gstnrs) > 1 or (len(gstnrs) == 1 and gstnrs[0] != parz):
convert(mgnr, 'GstNr.', f'{kgnr or 0:05}-{parz or ""}', ', '.join(gstnrs))
if len(gstnrs) == 0:
comment = f'KG {kgnr}: {parz}'
to = fb['Bis'] if fb['Bis'] and fb['Bis'] < 3000 else None
f_c.write(csv.format_row(vnr, mgnr, fb['Von'], to, comment))
f_fb.write(csv.format_row(vnr, fb['SNR'], CULTIVATION_MAP[fb['BANR']], area))
if fb['SANR']:
f_attr.write(csv.format_row(vnr, fb['SANR']))
for i, gstnr in enumerate(gstnrs):
a = area - gst_area * (len(gstnrs) - 1) if i == 0 else gst_area
rdnr = REED_MAP[fb['RNR']][1] if fb['RNR'] else None
f_fb.write(csv.format_row(
vnr, kgnr, gstnr, rdnr, a, fb['SNR'], CULTIVATION_MAP[fb['BANR']]
))
if fb['SANR']:
f_attr.write(csv.format_row(vnr, kgnr, gstnr, fb['SANR']))
f_parc.write(csv.format_row(vnr, kgnr, gstnr, rdnr, area if len(gstnrs) == 1 else None))
def fix_deliveries(deliveries: Iterable[Dict[str, Any]]) -> Iterable[Tuple[str, List[int], datetime.date]]: