forderung_summary.py 1.1 KB

123456789101112131415161718192021222324252627
  1. from sqlalchemy import text
  2. from sqlalchemy.orm import Session
  3. CURRENT_SUMMARY_SQL = text("""
  4. SELECT TOP 1 Beleg_Nr, Beleg_Datum, Kunde_Text, Beleg_Betrag, Beleg_Offen
  5. FROM dbo.Forderungen_Kopf
  6. WHERE Client_DB = :client_db AND Beleg_Nr = :beleg_nr
  7. """)
  8. HISTORY_SUMMARY_SQL = text("""
  9. SELECT TOP 1 Beleg_Nr, Beleg_Datum, Auszifferung_Datum
  10. FROM dbo.Forderungen_Historie
  11. WHERE Client_DB = :client_db AND Beleg_Nr = :beleg_nr
  12. ORDER BY Auszifferung_Datum DESC, Beleg_Datum DESC
  13. """)
  14. def get_forderung_summary(db: Session, client_db: str, beleg_nr: str) -> dict:
  15. """Explicitly permitted minimal information, independent of the detail scope."""
  16. params = {"client_db": client_db, "beleg_nr": beleg_nr}
  17. current = db.execute(CURRENT_SUMMARY_SQL, params).mappings().first()
  18. if current is not None:
  19. return {"kind": "open", "forderung": dict(current)}
  20. historical = db.execute(HISTORY_SUMMARY_SQL, params).mappings().first()
  21. if historical is not None:
  22. return {"kind": "settled", "forderung": dict(historical)}
  23. return {"kind": "missing", "forderung": None}