fix: Saldo-Abgleich meldet Zeilen, die auf ein Gegenkonto warten
Eine Zeile mit „Gegenkonto wählen" wird nicht gebucht, der Abgleich zählte ihren Betrag aber trotzdem mit und meldete „stimmt überein" – das Geld fehlte im Konto, ohne dass es auffiel. Duplikate und Gegenbuchungen zählen weiterhin mit (ihr Betrag steckt bereits in einer früher gebuchten Buchung); wartende Zeilen zählen jetzt als 0 und tauchen als erste Abweichung mit Datum und Empfänger auf. Nachgestellt am echten Raiffeisen-Auszug: Zeigt die Transfer-Regel „Übertrag" auf das importierte Konto selbst, bleibt die Gutschrift über 92.00 ungebucht; der Abgleich nennt jetzt genau diese Zeile. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -551,10 +551,15 @@ def reconcile(rows: list[dict]) -> dict:
|
||||
return {"available": False}
|
||||
|
||||
def gebucht(r: dict) -> int:
|
||||
"""Betrag, der tatsächlich ins Konto fließt – 0 für nicht gebuchte Zeilen
|
||||
(storniert, ungültig). Nur so fällt auf, wenn die Bank etwas verbucht hat,
|
||||
wir aber nichts (z. B. nicht zugeordnete Gebührenspalte)."""
|
||||
return (r.get("amount_cents") or 0) if r.get("valid") else 0
|
||||
"""Betrag, der im Konto ankommt – 0, wenn die Zeile nirgends landet.
|
||||
|
||||
Duplikate und Gegenbuchungen zählen mit: deren Betrag steckt bereits in
|
||||
einer früher gebuchten Buchung. Eine Zeile, die auf ein Gegenkonto wartet,
|
||||
zählt dagegen NICHT – sie ist unterwegs verloren, und genau das soll der
|
||||
Abgleich melden."""
|
||||
if not r.get("valid") or r.get("needs_target"):
|
||||
return 0
|
||||
return r.get("amount_cents") or 0
|
||||
|
||||
# Manche Banken exportieren neueste Buchung zuerst – für den Abgleich drehen.
|
||||
dated = [r["date"] for r in seq if r.get("date")]
|
||||
|
||||
Reference in New Issue
Block a user