Finanzmanager/migrations/010_kontenzuordnung.sql
fds2610-bot 78f1b91bc0 Online-Banking: Kontenzuordnung, Sammellöschen und drei Umsatz-Fehler
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>
2026-08-12 11:54:23 +02:00

19 lines
993 B
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 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;