hv-service/ZahlungenForderungen.py

124 lines
3.1 KiB
Python
Raw Permalink Normal View History

2021-01-20 16:14:27 +01:00
from dbpool import getConnection, getOne, getMany, putOne
2021-01-19 19:44:25 +01:00
import datetime
import decimal
2021-01-20 16:14:27 +01:00
import dateparser
2021-01-27 14:13:49 +01:00
from auth import check_scope
2021-01-18 18:37:19 +01:00
2021-01-27 14:13:49 +01:00
def get_zahlungen_by_mieter(mieter_id, token_info):
check_scope(token_info, "zahlung/read")
2021-01-18 18:37:19 +01:00
return getMany("""
SELECT id,
2021-01-18 20:24:57 +01:00
mieter,
2021-01-18 18:37:19 +01:00
datum_ist,
datum_soll
betrag,
kommentar
FROM zahlung
WHERE mieter = ?
""", [ mieter_id ], "Zahlung")
def get_zahlung(id):
return getOne("""
SELECT id,
2021-01-19 19:44:25 +01:00
mieter,
2021-01-18 18:37:19 +01:00
datum_ist,
datum_soll
betrag,
kommentar
FROM zahlung
WHERE id = ?
""", [ id ], "Zahlung")
2021-01-27 14:13:49 +01:00
def get_forderungen_by_mieter(mieter_id, token_info):
check_scope(token_info, "forderung/read")
2021-01-18 18:37:19 +01:00
return getMany("""
SELECT id,
2021-01-19 19:44:25 +01:00
mieter,
2021-01-18 18:37:19 +01:00
datum,
betrag,
kommentar,
ref_wohnung
FROM forderung
WHERE mieter = ?
""", [ mieter_id ], "Forderung")
2021-01-27 14:13:49 +01:00
def get_forderung(id, token_info):
check_scope(token_info, "forderung/read")
2021-01-18 18:37:19 +01:00
return getOne("""
SELECT id,
2021-01-19 19:44:25 +01:00
mieter,
2021-01-18 18:37:19 +01:00
datum,
betrag,
kommentar,
ref_wohnung
FROM forderung
WHERE id = ?
""", [ id ], "Forderung")
2021-01-27 14:13:49 +01:00
def get_zahlungforderung_by_mieter_and_year(mieter_id, year, token_info):
check_scope(token_info, [ "forderung/read", "zahlung/read", "mieter/read" ])
2021-01-19 19:44:25 +01:00
if year == 0:
year = datetime.datetime.now().year
2021-01-18 18:37:19 +01:00
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 ?
2021-01-19 19:44:25 +01:00
""", [mieter_id, start_date, end_date], "ZahlungForderung")
2021-01-27 14:13:49 +01:00
def get_saldo_by_mieter_and_year(mieter_id, year, token_info):
check_scope(token_info, [ "forderung/read", "zahlung/read", "mieter/read" ])
2021-01-19 19:44:25 +01:00
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)
2021-01-20 16:14:27 +01:00
}
2021-01-27 14:13:49 +01:00
def put_zahlung(zahlung, token_info):
check_scope(token_info, "zahlung/write")
2021-01-20 16:14:27 +01:00
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")