database: use bins instead of buckets
This commit is contained in:
@ -1510,10 +1510,11 @@ def migrate_deliveries(in_dir: str, out_dir: str) -> None:
|
||||
|
||||
with utils.csv_open(f'{out_dir}/season.csv') as f_season, \
|
||||
utils.csv_open(f'{out_dir}/modifier.csv') as f_mod:
|
||||
f_season.header('year', 'currency', 'precision', 'start_date', 'end_date')
|
||||
f_season.header('year', 'currency', 'precision', 'start_date', 'end_date',
|
||||
'bin_1_name', 'bin_2_name')
|
||||
f_mod.header('year', 'modid', 'ordering', 'name', 'abs', 'rel', 'standard', 'quick_select')
|
||||
for y, s in seasons.items():
|
||||
f_season.row(y, s['currency'], s['precision'], s['start'], s['end'])
|
||||
f_season.row(y, s['currency'], s['precision'], s['start'], s['end'], 'gebunden', 'ungebunden')
|
||||
for m in modifiers.values():
|
||||
abs_v = round(m['AZAS'] * pow(10, s['precision'])) if m['AZAS'] is not None else None
|
||||
rel_v = m['AZASProzent'] / 100.0 if m['AZASProzent'] is not None else None
|
||||
@ -1533,8 +1534,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
||||
qual_map = {i: [s for s in p_qual if s['AZNR'] == i] for i in set([s['AZNR'] for s in p_qual])}
|
||||
|
||||
with utils.csv_open(f'{out_dir}/payment_variant.csv') as f_payment:
|
||||
f_payment.header('year', 'avnr', 'name', 'date', 'test_variant', 'calc_time',
|
||||
'bucket_1_name', 'bucket_2_name', 'bucket_3_name', 'comment', 'data')
|
||||
f_payment.header('year', 'avnr', 'name', 'date', 'test_variant', 'calc_time', 'comment', 'data')
|
||||
for p in utils.csv_parse_dict(f'{in_dir}/TAuszahlung.csv'):
|
||||
year = p['Lesejahr']
|
||||
if year is None:
|
||||
@ -1633,7 +1633,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
||||
variant_year_map[year] = []
|
||||
variant_year_map[year].append((p['AZNR'], year_map[year], p['TeilzahlungNr']))
|
||||
f_payment.row(year, year_map[year], p['Titel'], p['Datum'], test, None,
|
||||
'Gebunden', 'Nicht gebunden', 'Abgewertet', p['Beschreibung'], json.dumps(data))
|
||||
p['Beschreibung'], json.dumps(data))
|
||||
|
||||
def get_modifiers(modifiers: str) -> Tuple[int, float]:
|
||||
if modifiers is None or modifiers == '':
|
||||
@ -1665,27 +1665,28 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
||||
prec = pow(10, WGMASTER_PRECISION)
|
||||
return round(p1 * prec), round(p2 * prec), round(p3 * prec)
|
||||
|
||||
with utils.csv_open(f'{out_dir}/payment_delivery_part.csv') as f_del_pay:
|
||||
f_del_pay.header('year', 'did', 'dpnr', 'avnr', 'bucket_1', 'bucket_2', 'bucket_3', 'amount')
|
||||
# TODO database migration
|
||||
with utils.csv_open(f'{out_dir}/payment_delivery_part.csv') as f_del_pay, \
|
||||
utils.csv_open(f'{out_dir}/delivery_part_bin.csv') as f_bin:
|
||||
f_del_pay.header('year', 'did', 'dpnr', 'avnr', 'amount')
|
||||
f_bin.header('year', 'did', 'dpnr', 'bin_1', 'bin_2')
|
||||
deliveries = {d['LINR']: d for d in utils.csv_parse_dict(f'{in_dir}/TLieferungen.csv')}
|
||||
for linr, (y, did, dpnr) in DELIVERY_MAP.items():
|
||||
p = deliveries[linr]
|
||||
if y not in variant_year_map:
|
||||
continue
|
||||
gew, geb_gew = int(p['Gewicht']), int(p['BGewichtGebunden'])
|
||||
b2 = gew - geb_gew
|
||||
b1 = geb_gew
|
||||
f_bin.row(y, did, dpnr, b1, b2)
|
||||
for aznr, avnr, tznr in variant_year_map[y]:
|
||||
val = p[f'BTeilzahlung{tznr}' if tznr < 6 else 'BEndauszahlung']
|
||||
val = round(val * pow(10, WGMASTER_PRECISION))
|
||||
b1, b2, b3 = 0, 0, 0
|
||||
# prices = get_prices(aznr, p['SNR'], p['SANR'], int(p['Oechsle']))
|
||||
# mod = get_modifiers(p['BAbschlaegeString'])
|
||||
# if not az_map[aznr].get('AbschlägeBerücksichtigen', False):
|
||||
# mod = 0, 0.0
|
||||
gew, geb_gew = int(p['Gewicht']), int(p['BGewichtGebunden'])
|
||||
if QUAL_MAP[p['QSNR']] == 'WEI':
|
||||
b3 += gew
|
||||
else:
|
||||
b2 += gew - geb_gew
|
||||
b1 += geb_gew
|
||||
|
||||
# check_val = b1 * (prices[0] + mod[0]) + b2 * (prices[1] + mod[0]) + b3 * (prices[2] + mod[0])
|
||||
# check_val *= 1 + mod[1]
|
||||
# check_val = round(check_val / 100) * 100
|
||||
@ -1693,7 +1694,7 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
|
||||
# print(p['LINR'], y, did, dpnr, avnr, val, check_val)
|
||||
# else:
|
||||
# print("GOOD")
|
||||
f_del_pay.row(y, did, dpnr, avnr, b1, b2, b3, val)
|
||||
f_del_pay.row(y, did, dpnr, avnr, val)
|
||||
|
||||
|
||||
def migrate_parameters(in_dir: str, out_dir: str) -> None:
|
||||
|
Reference in New Issue
Block a user