from dbpool import getConnection, getOne, getMany, putOne import datetime import decimal import dateparser def get_zahlungen_by_mieter(mieter_id): return getMany(""" SELECT id, mieter, datum_ist, datum_soll betrag, kommentar FROM zahlung WHERE mieter = ? """, [ mieter_id ], "Zahlung") def get_zahlung(id): return getOne(""" SELECT id, mieter, datum_ist, datum_soll betrag, kommentar FROM zahlung WHERE id = ? """, [ id ], "Zahlung") def get_forderungen_by_mieter(mieter_id): return getMany(""" SELECT id, mieter, datum, betrag, kommentar, ref_wohnung FROM forderung WHERE mieter = ? """, [ mieter_id ], "Forderung") def get_forderung(id): return getOne(""" SELECT id, mieter, datum, betrag, kommentar, ref_wohnung FROM forderung WHERE id = ? """, [ id ], "Forderung") def get_zahlungforderung_by_mieter_and_year(mieter_id, year): if year == 0: year = datetime.datetime.now().year start_date = "{}-01-01".format(year) end_date = "{}-12-31".format(year) return getMany(""" SELECT id, mieter, datum_soll, datum_ist, betrag_zahlung, betrag_forderung, zf_type, kommentar FROM zahlung_forderung WHERE mieter = ? AND datum_soll BETWEEN ? AND ? """, [mieter_id, start_date, end_date], "ZahlungForderung") def get_saldo_by_mieter_and_year(mieter_id, year): if year == 0: year = datetime.datetime.now().year start_date = "{}-01-01".format(year) end_date = "{}-12-31".format(year) sumZahlungen = getOne(""" SELECT ROUND(sum(betrag), 2) as sum FROM zahlung WHERE mieter = ? AND datum_soll BETWEEN ? AND ? """, [mieter_id, start_date, end_date], "SumZahlung") sumForderungen = getOne(""" SELECT ROUND(sum(betrag), 2) as sum FROM forderung WHERE mieter = ? AND datum BETWEEN ? AND ? """, [mieter_id, start_date, end_date], "SumZahlung") print("Zahlung: {}, Forderung: {}".format(sumZahlungen, sumForderungen)) decimal.getcontext().prec = 2 sumZ = sumZahlungen["sum"] if not sumZ: sumZ = 0 sumF = sumForderungen["sum"] if not sumF: sumF = 0 saldo = sumZ - sumF return { "forderungen": float(sumF), "saldo": float(saldo), "zahlungen": float(sumZ) } def put_zahlung(zahlung): print("Input of put_zahlung: {} {}".format(type(zahlung), zahlung)) datum_soll = dateparser.parse(zahlung["datum_soll"], languages=["de"]) datum_ist = dateparser.parse(zahlung["datum_ist"], languages=["de"]) return putOne(""" INSERT INTO zahlung (datum_soll, datum_ist, mieter, betrag, kommentar) VALUES(?, ?, ?, ?, ?) """, [ datum_soll, datum_ist, zahlung["mieter"], zahlung["betrag"], zahlung["kommentar"] ], "Zahlung")