62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Liest die Niki Excel vollständig mit Auslagen"""
|
|
|
|
import pandas as pd
|
|
import json
|
|
|
|
df = pd.read_excel('Schulden Niki.xlsx', sheet_name='Tabelle1', header=None)
|
|
|
|
zahlungen = []
|
|
auslagen = []
|
|
|
|
for idx in range(6, len(df)):
|
|
row = df.iloc[idx]
|
|
datum_raw = row[2]
|
|
abgezahlt = row[5]
|
|
neue_kosten = row[6]
|
|
fuer_was = row[7]
|
|
|
|
if pd.isna(datum_raw):
|
|
continue
|
|
|
|
if isinstance(datum_raw, pd.Timestamp):
|
|
datum = datum_raw.strftime('%Y-%m-%d')
|
|
else:
|
|
datum = str(datum_raw).split()[0]
|
|
|
|
notiz = fuer_was if not pd.isna(fuer_was) else ''
|
|
|
|
# Zahlung (Abgezahlt > 0)
|
|
if not pd.isna(abgezahlt) and abgezahlt > 0:
|
|
zahlungen.append({'datum': datum, 'betrag': float(abgezahlt), 'notiz': notiz})
|
|
|
|
# Auslage (Neue Kosten ist NEGATIV in Excel -> wir speichern als negativ in DB)
|
|
if not pd.isna(neue_kosten) and neue_kosten < 0:
|
|
auslagen.append({'datum': datum, 'betrag': abs(float(neue_kosten)), 'notiz': notiz})
|
|
|
|
print('=== KORREKTE DATEN ===')
|
|
summe_zahlungen = sum(z['betrag'] for z in zahlungen)
|
|
summe_auslagen = sum(a['betrag'] for a in auslagen)
|
|
print(f'Zahlungen: {len(zahlungen)} Stueck = {summe_zahlungen:.2f} EUR')
|
|
print(f'Auslagen: {len(auslagen)} Stueck = {summe_auslagen:.2f} EUR')
|
|
print()
|
|
print('Startschuld: 7000 EUR')
|
|
berechnet = 7000 - summe_zahlungen + summe_auslagen
|
|
print(f'Restschuld: {berechnet:.2f} EUR')
|
|
|
|
print()
|
|
print('=== KOMPLETTE LISTE ===')
|
|
for z in zahlungen:
|
|
print(f'Zahlung: {z["datum"]} | +{z["betrag"]:7.2f} EUR | {z["notiz"]}')
|
|
for a in auslagen:
|
|
print(f'Auslage: {a["datum"]} | -{a["betrag"]:7.2f} EUR | {a["notiz"]}')
|
|
|
|
print()
|
|
print('=== JSON FUER IMPORT ===')
|
|
all_trans = []
|
|
for z in zahlungen:
|
|
all_trans.append({'datum': z['datum'], 'typ': 'zahlung', 'betrag': z['betrag'], 'notiz': z['notiz']})
|
|
for a in auslagen:
|
|
all_trans.append({'datum': a['datum'], 'typ': 'auslage', 'betrag': -a['betrag'], 'notiz': a['notiz']})
|
|
print(json.dumps(all_trans, indent=2, ensure_ascii=False))
|