|
|
@@ -1,5 +1,6 @@
|
|
|
import io
|
|
|
from datetime import datetime
|
|
|
+from operator import itemgetter
|
|
|
from pathlib import Path
|
|
|
from urllib.parse import unquote, urlencode
|
|
|
|
|
|
@@ -82,18 +83,19 @@ def forderungen_liste(request: Request, db: Session = Depends(get_session), limi
|
|
|
if len(params) < len(request.query_params):
|
|
|
return RedirectResponse(url="/app/forderungen/liste?" + urlencode(params))
|
|
|
context = {
|
|
|
- "RechnungsdatumVon": {"selectedDate": single_quote(params.get("RechnungsdatumVon", "2000-01-01T00:00:00"))},
|
|
|
- "RechnungsdatumBis": {"selectedDate": single_quote(params.get("RechnungsdatumBis", "2027-01-01T00:00:00"))},
|
|
|
"Hauptbetrieb": {"selectedOptionValue": single_quote(params.get("Hauptbetrieb", ""))},
|
|
|
"Standort": {"selectedOptionValue": single_quote(params.get("Standort", ""))},
|
|
|
+ "Bereich": {"selectedOptionValue": single_quote(params.get("Bereich", ""))},
|
|
|
+ "Verursacher": {"selectedOptionValue": single_quote(params.get("Verursacher", ""))},
|
|
|
"Rechnungsnummer": {"text": single_quote(params.get("Rechnungsnummer", ""))},
|
|
|
+ "RechnungsdatumVon": {"selectedDate": single_quote(params.get("RechnungsdatumVon", "2000-01-01T00:00:00"))},
|
|
|
+ "RechnungsdatumBis": {"selectedDate": single_quote(params.get("RechnungsdatumBis", "2027-01-01T00:00:00"))},
|
|
|
"Kunde": {"selectedOptionValue": single_quote(params.get("Kunde", ""))},
|
|
|
- "Verursacher": {"selectedOptionValue": single_quote(params.get("Verursacher", ""))},
|
|
|
+ "WiedervorlageVon": {"selectedDate": single_quote(params.get("WiedervorlageVon", "2000-01-01T00:00:00"))},
|
|
|
+ "WiedervorlageBis": {"selectedDate": single_quote(params.get("WiedervorlageBis", "2027-01-01T00:00:00"))},
|
|
|
"Fahrzeug": {"selectedOptionValue": single_quote(params.get("Fahrzeug", ""))},
|
|
|
"Staffel": {"selectedOptionValue": single_quote(params.get("Staffel", ""))},
|
|
|
"Mahnstufe": {"selectedOptionValue": single_quote(params.get("Mahnstufe", ""))},
|
|
|
- "WiedervorlageVon": {"selectedDate": single_quote(params.get("WiedervorlageVon", "2000-01-01T00:00:00"))},
|
|
|
- "WiedervorlageBis": {"selectedDate": single_quote(params.get("WiedervorlageBis", "2027-01-01T00:00:00"))},
|
|
|
"BenutzerSelect": {"selectedOptionValue": "winter"},
|
|
|
}
|
|
|
query = templates.TemplateResponse(request, "forderungen/queries/forderungen_liste.sql", context).body.decode(
|
|
|
@@ -111,6 +113,7 @@ def forderungen_liste(request: Request, db: Session = Depends(get_session), limi
|
|
|
"Standort": ("Standort_ID", "Standort_Name"),
|
|
|
# "Rechnungsnummer": {"text": "''"},
|
|
|
"Kunde": ("Kunde", "Kunde"),
|
|
|
+ "Bereich": ("Bereich", "Bereich"),
|
|
|
"Verursacher": ("Verursacher", "Verursacher"),
|
|
|
"Fahrzeug": ("VIN", "VIN"),
|
|
|
"Staffel": ("Staffel", "Staffel"),
|
|
|
@@ -125,6 +128,11 @@ def forderungen_liste(request: Request, db: Session = Depends(get_session), limi
|
|
|
for filter_name, (key, value) in config.items():
|
|
|
filters[filter_name] = {row[col_names.index(key)]: row[col_names.index(value)] for row in q}
|
|
|
|
|
|
+ summary = {
|
|
|
+ "offen": sum([r[col_names.index("offen")] for r in q]),
|
|
|
+ "Anzahl": len(q),
|
|
|
+ }
|
|
|
+
|
|
|
q_limit = q[page * limit : (page + 1) * limit]
|
|
|
|
|
|
defaults = {}
|
|
|
@@ -132,10 +140,24 @@ def forderungen_liste(request: Request, db: Session = Depends(get_session), limi
|
|
|
defaults[filter_name] = unquote(request.query_params.get(filter_name, ""))
|
|
|
# print(filters["Standort"])
|
|
|
|
|
|
+ if len(q_limit) == 0:
|
|
|
+ return None
|
|
|
+
|
|
|
+ template = "forderungen/liste.html"
|
|
|
+ if page > 0:
|
|
|
+ template = "forderungen/liste_tabelle.html"
|
|
|
+
|
|
|
return templates.TemplateResponse(
|
|
|
request,
|
|
|
- "forderungen/liste.html",
|
|
|
- {"request": request, "forderungen_liste": q_limit, "filter": filters, "defaults": defaults},
|
|
|
+ template,
|
|
|
+ {
|
|
|
+ "request": request,
|
|
|
+ "forderungen_liste": q_limit,
|
|
|
+ "filter": filters,
|
|
|
+ "defaults": defaults,
|
|
|
+ "summary": summary,
|
|
|
+ "page": page,
|
|
|
+ },
|
|
|
)
|
|
|
|
|
|
|
|
|
@@ -178,6 +200,12 @@ def forderungen_details(
|
|
|
return templates.TemplateResponse(request, "forderungen/details.html", template_context)
|
|
|
|
|
|
|
|
|
+@router.get("/app/forderungen/dashboard", response_class=HTMLResponse)
|
|
|
+def forderungen_dashboard(request: Request, db: Session = Depends(get_session)):
|
|
|
+ context = {"summary": False}
|
|
|
+ return templates.TemplateResponse(request, "forderungen/dashboard.html", context)
|
|
|
+
|
|
|
+
|
|
|
@router.get("/chat", response_class=HTMLResponse)
|
|
|
def chat(request: Request):
|
|
|
# q = db.query(Forderung).order_by(Forderung.faelligkeit.asc()).limit(limit).all()
|