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>
24 lines
624 B
PHP
24 lines
624 B
PHP
<?php
|
|
|
|
use Finanzmanager\View;
|
|
|
|
/**
|
|
* Statusmeldungen als Einblendung über der Ansicht.
|
|
*
|
|
* Bewusst außerhalb des Inhalts: Die Meldungen liegen über der Seite und
|
|
* schieben sich von oben ins Bild, statt den Inhalt nach unten zu drücken und
|
|
* beim Verschwinden wieder hochschnappen zu lassen.
|
|
*/
|
|
/** @var array $flash */
|
|
|
|
if (($flash ?? []) === []) {
|
|
return;
|
|
}
|
|
?>
|
|
<div class="meldungen">
|
|
<?php foreach ($flash as $meldung): ?>
|
|
<div class="meldung meldung-<?= View::h($meldung['typ']) ?>" role="status">
|
|
<?= View::h($meldung['meldung']) ?>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|