Kontenzuordnung als dritter Einrichtungsschritt: Welches Bankkonto gehört zu welchem eigenen Konto? Umsätze merken sich über `bank_konto_id`, woher sie stammen, und ziehen mit, wenn die Zuordnung erst nach einem Abruf fällt. Abgerufene Umsätze buchen sich auf Wunsch selbst (`Services\Bankabgleich`). Im Kontoblatt lassen sich Buchungen sammelweise löschen; Statusmeldungen liegen jetzt über der Ansicht, statt den Inhalt springen zu lassen. Dazu drei Fehler, die zusammen dafür sorgten, dass abgerufene Umsätze spurlos verschwanden – der Abruf meldete sie als vorhanden, das Kontoblatt zeigte nichts, und in der Vorschlagsliste standen sie ebenfalls nicht: - Eine gelöschte Buchung ließ ihren Umsatz auf „uebernommen“ stehen. Der Fremdschlüssel setzte nur `buchung_id` auf NULL. `Buchung::loeschen()` gibt den Umsatz jetzt vorher frei, `Bankumsatz::verwaisteOeffnen()` fängt die Wege ab, die daran vorbeiführen – Kaskaden lösen in MariaDB keine Trigger aus. - Ein Bankkonto entstand doppelt, wenn die Bank die IBAN nicht bei jedem Dialog mitliefert. Gesucht wird jetzt über die Kontonummer; eine nachgelieferte IBAN wird am vorhandenen Eintrag nachgetragen. - Der Fingerabdruck hing an der IBAN und kippte mit ihr. Er nimmt jetzt die `bank_konto_id`, die fest steht, solange es den Bankzugang gibt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
19 lines
993 B
SQL
19 lines
993 B
SQL
-- Kontenzuordnung als eigener Einrichtungsschritt, und abgerufene Umsätze, die
|
||
-- von selbst im Konto landen.
|
||
--
|
||
-- Ein Umsatz kannte bisher nur das eigene Konto (`konto_id`), das beim Abruf
|
||
-- feststand. Wer die Zuordnung erst danach trifft – und genau das ist der neue
|
||
-- dritte Schritt –, hinterließe damit Umsätze, die für immer ohne Konto
|
||
-- dastehen. Mit `bank_konto_id` weiß jeder Umsatz, von welchem Bankkonto er
|
||
-- stammt; wird dessen Zuordnung gesetzt, ziehen die offenen Umsätze mit.
|
||
|
||
ALTER TABLE bank_umsaetze
|
||
ADD COLUMN IF NOT EXISTS bank_konto_id INT UNSIGNED NULL AFTER konto_id,
|
||
ADD KEY IF NOT EXISTS idx_umsatz_bankkonto (bank_konto_id);
|
||
|
||
-- Kein Fremdschlüssel auf bank_konten: Die Zeilen dort verschwinden nur mit dem
|
||
-- Bankzugang, und der räumt seine Umsätze ohnehin per CASCADE mit weg.
|
||
|
||
INSERT INTO einstellungen (schluessel, wert, bereich) VALUES
|
||
('banking_automatisch_buchen', '1', 'banking')
|
||
ON DUPLICATE KEY UPDATE schluessel = schluessel;
|