fix: Die Kennung der Bank steht jetzt an der Buchung selbst
Bisher lag sie nur am Eingangs-Eintrag. Das reicht nicht: Der Eintrag ist eine Zwischenstation und faellt weg, wenn ein Konto geloescht wird oder ein aelteres Backup ihn nicht kannte. Dann war die Zahlung fuer den naechsten Abruf neu, obwohl sie laengst gebucht war. Am schlimmsten bei einem als Uebertrag gebuchten Umsatz: Der ist von der Aehnlichkeitspruefung ausgenommen, dort griff also gar nichts mehr. Die Kennung gehoert deshalb an die Buchung (transactions.source_uid, mit der Quelle davor). Dort ueberlebt sie alles, was mit dem Eingang passiert, und die Eindeutigkeit haelt die Datenbank selbst durch – nicht erst der pruefende Code davor. Gestempelt wird an allen drei Buchungswegen: Eingang, Kurzbefehl und Uebertrag. Vorhandene Buchungen bekommen die Kennung nachgetragen, solange ihr Eingangs-Eintrag noch da ist. Ohne Kennung – von Hand erfasst, aus einer CSV-Datei – bleibt es beim bisherigen Schutz ueber die Aehnlichkeit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
175d9f50e0
commit
991a8e4fc2
@@ -673,6 +673,15 @@ def hole_umsaetze(db: Session, user: User, verbindung: BankConnection,
|
||||
InboxItem.external_id.in_(kennungen))
|
||||
.first()
|
||||
)
|
||||
if schon is None:
|
||||
# Und dann noch an den BUCHUNGEN selbst. Der Eingangs-Eintrag
|
||||
# ist eine Zwischenstation: Er faellt weg, wenn ein Konto
|
||||
# geloescht wird, und aeltere Backups kannten ihn nicht. Die
|
||||
# Buchung bleibt – und traegt die Kennung seit 0027 selbst.
|
||||
schon = eingang.gebuchte_mit_kennung(
|
||||
db, user,
|
||||
[eingang.quell_kennung(InboxSource.bank, k) for k in kennungen],
|
||||
)
|
||||
if schon is not None:
|
||||
continue
|
||||
kennung = kennungen[0]
|
||||
|
||||
Reference in New Issue
Block a user