Migrate auszahlung kurven

This commit is contained in:
2023-08-23 16:57:38 +02:00
parent 1c88dfe6a5
commit 6d2a08bd94
2 changed files with 32 additions and 1 deletions

View File

@ -24,7 +24,16 @@ def main() -> None:
cur.execute("SELECT data FROM payment_variant WHERE (year, avnr) = (?, ?)", payment_vars[-1])
data = json.loads(cur.fetchall()[0][0])
az_sort = data['AuszahlungSorten']
curves = [{n: d for n, d in enumerate(c)} for c in az_sort['Kurven']]
curves = [
{
int(n[:-2]): d
for n, d in
[('50oe', c[sorted(c.keys(), key=lambda v: int(v[:-2]))[0]])] +
list(c.items()) +
[('120oe', c[sorted(c.keys(), key=lambda v: -int(v[:-2]))[0]])]
} if len(c) > 0 else {50: 0, 120: 0}
for c in az_sort['Kurven']
]
c_sort_idx = [sum(c.values()) / len(c) for c in curves]
c_sort = sorted([i for i in range(len(curves))], key=lambda a: c_sort_idx[a])[::-1]
c_sort_2 = {c: i for i, c in enumerate(c_sort)}

View File

@ -1550,6 +1550,28 @@ def migrate_payments(in_dir: str, out_dir: str) -> None:
if oe not in curves:
curves.append(oe)
azs[sortid][attrid][geb] = curves.index(oe)
for i, c in enumerate(curves):
n = {}
d = 0
for oe, p0, p1, p2 in zip(range(0, len(c) + 1), [0] + c, c, c[1:] + [c[len(c) - 1]]):
d1, d2 = round(p1 - p0, 4), round(p2 - p1, 4)
if d1 == d:
continue
d = d2
if p0 > 0:
n[f'{oe - 1}oe'] = p0
n[f'{oe}oe'] = p1
if c[len(c) - 1] > 0:
n[f'{len(c) - 1}oe'] = c[len(c) - 1]
keys = list(n.keys())
vals = list(n.values())
if len(n) >= 2 and vals[0] == vals[1]:
del n[keys[0]]
del n[keys[1]]
n = {keys[1]: vals[1], **n}
if len(n) == 1:
n = {'73oe': list(n.values())[0]}
curves[i] = n
azs['Kurven'] = curves
azq = data['AuszahlungSortenQualitätsstufe']
for q in qual_map.get(p['AZNR'], []):