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
@@ -30,7 +30,7 @@ from ..models import (
|
||||
User,
|
||||
)
|
||||
from ..schemas import InboxItemOut, QuickBookingIn, QuickBookingOut
|
||||
from ..services import csv_import, currency
|
||||
from ..services import csv_import, currency, eingang
|
||||
|
||||
router = APIRouter(prefix="/quick", tags=["quick"])
|
||||
|
||||
@@ -118,6 +118,10 @@ def quick_booking(
|
||||
category_id=kategorie_id,
|
||||
payee=(payload.payee or None),
|
||||
description=(payload.note or None),
|
||||
# Die Kennung des Kurzbefehls gehoert auch an die Buchung, nicht nur an
|
||||
# den Eingangs-Eintrag darueber: Nur dort ueberlebt sie, wenn der
|
||||
# Eintrag einmal wegfaellt.
|
||||
source_uid=eingang.quell_kennung(InboxSource.shortcut, payload.external_id),
|
||||
)
|
||||
db.add(txn)
|
||||
db.flush()
|
||||
|
||||
Reference in New Issue
Block a user