Konten, Kontengruppen, Kategorien und Klassen samt Übernahme aus dem
QIF-Export des Lexware FinanzManagers.
Kontenübersicht nach Kontengruppen gebündelt, mit Gruppensummen und
Gesamtsumme; die drei Saldospalten (Online-Saldo, aktueller und erwarteter
Saldo) sind angelegt und werden bis Phase 2 aus dem Anfangssaldo gespeist.
Kategorien sind hierarchisch mit ":" als Trenner. Der vollständige Pfad
steht redundant in der Tabelle, weil jede Anzeige und der gesamte Import
darüber laufen; Umbenennen und Verschieben schreiben den Teilbaum neu. Die
Art (Einnahme/Ausgabe) gilt für den ganzen Ast. Register wie im Original:
Alle, Einnahmen, Ausgaben, Umbuchungskonten.
QifParser liest zustandsbehaftet und sequenziell, wandelt ISO-8859-1 nach
UTF-8 und versteht US-Beträge sowie das Datumsformat aus der Kopfzeile.
QifStammdatenImport ist idempotent und bietet Trockenlauf und Protokoll -
im Dialog unter Verwaltung sowie über scripts/qif-import.php. Am echten
Export geprüft: 17 Klassen, 105 Kategorien, 37 Konten.
Enthält außerdem die Korrektur der englischen Monatsnamen im
Einstellungsdialog: date('F') ist sprachlich nicht umschaltbar, deshalb
liegen die Namen jetzt zentral als View::MONATE vor. Die Änderung ließ
sich nicht als eigener Commit trennen, weil sie dieselben Dateien berührt
wie Phase 1.
Tests: 227 PHP-Prüfungen und 14 Playwright-Tests, alle grün.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.5 KiB
4.5 KiB
Änderungen
Phase 1 – Stammdaten und QIF-Stammdatenimport (09.08.2026)
Datenmodell
- Migration
002_stammdaten.sql:kontengruppen,konten,kategorien,klassen - Alle Tabellen führen
benutzer_id;Mandant::id()liefert die Kennung aus der Session oder – im CLI – vom ersten aktiven Benutzer
Konten
- Kontenübersicht nach Kontengruppen gebündelt, mit Gruppensummen und Gesamtsumme
- Die drei Saldospalten des FinanzManagers (Online-Saldo, aktueller und erwarteter Saldo) sind angelegt und werden bis Phase 2 aus dem Anfangssaldo gespeist
- Kontoarten des FinanzManagers samt Zuordnung zu den QIF-Typen
- Kontenpflege mit Anfangssaldo, Kreditlimit, IBAN/BIC, Kontengruppe, aktiv/inaktiv
- Kontengruppen anlegen, umbenennen, sortieren, löschen – die Konten bleiben erhalten
Kategorien und Klassen
- Hierarchische Kategorien mit
:als Trenner; der vollständige Pfad wird mitgeführt und beim Umbenennen oder Verschieben für den ganzen Teilbaum neu geschrieben - Art (Einnahme/Ausgabe) gilt für den ganzen Ast und vererbt sich an Unterkategorien
- Verschieben, Zusammenführen und Löschen; Verschieben in den eigenen Teilbaum wird abgewiesen
- Register Alle / Einnahmen / Ausgaben / Umbuchungskonten wie im Original
- Klassen als flache zweite Auswertungsdimension, in der Liste direkt bearbeitbar
QIF-Import
QifParser: zustandsbehaftetes, sequenzielles Lesen; ISO-8859-1 nach UTF-8, US-Beträge, Datumsformat aus der Kopfzeile, Mehrfachfelder für spätere SplitzeilenQifStammdatenImportfür Klassen, Kategorien und Konten – idempotent, mit Trockenlauf und Protokoll; fehlende Zwischenstufen im Kategoriepfad entstehen selbsttätig- Dialog unter Verwaltung → QIF-Import mit Upload, Trockenlauf und Übernahme
scripts/qif-import.phpfür dieselbe Aufgabe auf der Kommandozeile- Geprüft am echten Export: 17 Klassen, 105 Kategorien, 37 Konten
Tests
06_KategorienTest– Hierarchie, Pfadpflege, Artvererbung, Verschieben, Zusammenführen07_KontenTest– Kontoarten, Gruppierung und Summen, Betragseingabe08_QifImportTest– Parser, Zeichensatz, Beträge und Datum, Import, Trockenlauf, Prüfung der Dateinamen- E2E
stammdaten.spec.js– Konto, Kategorie mit Unterkategorie, Register, Klasse, QIF-Upload mit Trockenlauf
Korrektur – Monatsnamen auf Deutsch (09.08.2026)
- Der Einstellungsdialog zeigte unter Buchhaltung englische Monatsnamen, weil
date('F')sprachlich nicht umschaltbar ist. - Monatsnamen liegen jetzt zentral als
View::MONATEundView::MONATE_KURZvor, abrufbar überView::monat(). Budgetplaner und Auswertungen greifen später darauf zu. 05_DarstellungTestprüft Monatsnamen, Betrags- und Datumsformat gegen eine feste Sollliste – der Vergleich gegendate('F')allein würde April, August, September und November nicht auffallen lassen.
Phase 0 – Projektgerüst (09.08.2026)
Grundgerüst der Anwendung. Fachliche Module folgen ab Phase 1.
Betrieb
- Docker Compose mit drei Services:
nginx(Port 8000),php(php-fpm 8.3),db(MariaDB 11) docker-entrypoint.shlegt Datenverzeichnisse an und spielt Migrationen einscripts/migrate.php– nummerierte SQL-Migrationen, idempotent, mit Journal-Tabellescripts/update.sh– Update für den Produktionsserver: Backup,git pull, Image-Neubau bei Bedarf, Migrationen, Rechte, Testsscripts/backup.sh– Datenbank- und Dateisicherung mit Rotation (7 Tage / 4 Wochen / 12 Monate), gegen Parallelläufe perflockabgesichert
Anwendung
Config,Database(PDO-Wrapper, verschachtelbare Transaktionen),Router(Platzhalter-Routen, CSRF-Prüfung für alle verändernden Requests),View,Auth- Anmeldung mit Session-Härtung, Ersteinrichtung des ersten Benutzers
- Zentraler Einstellungsdialog mit Reitern (Allgemein, Darstellung, Buchhaltung,
Online-Banking, Import/Export, Wertpapiere, Diagnose); Werte in Tabelle
einstellungen - Debug-Log, ein- und ausschaltbar, mit Maskierung von PINs, Passwörtern, TANs und API-Keys; Ausnahmen werden immer protokolliert
- Layout nach Vorbild des FinanzManagers: feste Navigation links, Werkzeugleiste oben, Tab-Leiste; Farbschema hell/dunkel/System
Tests
- Test-Harness mit Transaktions-Rollback und Aufräumen temporärer Pfade
01_AuthTest– Anmeldung, Passwort-Hashing, CSRF, Cookie-Attribute02_EinstellungenTest– Lesen/Schreiben, Cache-Invalidierung, Bereichsabdeckung03_RouterTest– Pfad-Muster, Platzhalter, keine Treffer über Pfadgrenzen04_DebugLogTest– Schalter, Maskierung, Fehlerprotokollierung