feat: Zahlungen finden ihren Vertrag von selbst – Preisaenderungen werden gemeldet
Ein Abo stand bisher unverbunden neben seinen Zahlungen. Wer wissen wollte, ob Netflix diesen Monat abgebucht wurde, musste es in der Buchungsliste suchen. Jetzt verknuepft Certain Buchung und Vertrag beim Import selbst. Drei Stufen, bewusst unterschiedlich mutig: - sicher (Betrag und Text passen, Datum im Fenster): wird zugeordnet. - Vorschlag: Betrag passt, Text nicht – oder der Text passt und der Betrag weicht ab. Der zweite Fall ist die Preiserhoehung. - nichts: im Zweifel lieber schweigen. Eine Preiserhoehung wird nie stillschweigend uebernommen. Sie ist eine Nachricht an den Nutzer, kein Wartungsvorgang – er entscheidet, ob der neue Preis der richtige ist. Die Zuordnung ist ein Etikett, keine Umbuchung: die Buchung selbst bleibt unangetastet, und ein geloeschter Vertrag nimmt sie nicht mit. Beim Backup wandern Vertraege nun vor die Buchungen, sonst haenge eine Rueckspielung Zahlungen an die falschen Vertraege. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
41db67f53e
commit
152483707e
@@ -111,11 +111,21 @@ def suche_uebertraege(db: Session, user: User) -> int:
|
||||
Ein Fehler hier darf das Buchen nicht kippen: Die Buchung ist schon
|
||||
festgeschrieben, die Verknuepfung ist nur eine Schicht darueber.
|
||||
"""
|
||||
from . import uebertraege
|
||||
from . import abo_erkennung, uebertraege
|
||||
|
||||
verknuepft = 0
|
||||
try:
|
||||
return uebertraege.finde(db, user).get("verknuepft", 0)
|
||||
verknuepft = uebertraege.finde(db, user).get("verknuepft", 0)
|
||||
except Exception: # pragma: no cover - Sicherheitsnetz
|
||||
log.exception("Uebertragssuche nach dem Buchen fehlgeschlagen")
|
||||
db.rollback()
|
||||
return 0
|
||||
|
||||
# Danach nach Vertraegen sehen. Ein Abo, das ueber die Bank hereinkommt,
|
||||
# soll sich von selbst seinem Vertrag zuordnen – sonst muesste man nach
|
||||
# jedem Abruf von Hand nachsehen.
|
||||
try:
|
||||
abo_erkennung.finde(db, user)
|
||||
except Exception: # pragma: no cover - Sicherheitsnetz
|
||||
log.exception("Vertrags-Zuordnung nach dem Buchen fehlgeschlagen")
|
||||
db.rollback()
|
||||
return verknuepft
|
||||
|
||||
Reference in New Issue
Block a user