Fügt eine optisch abgesetzte Summenzeile unter der Dashboard-Tabelle
hinzu, die die Beträge der aktuell sichtbaren (per Spaltenfilter
gefilterten) Einträge summiert und live aktualisiert.
Schließt #6
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
git pull innerhalb des laufenden Skripts konnte die Datei auf der Platte
verändern, während Bash sie noch zeilenweise nachlädt - das führte auf einem
Zielserver zu einer inkonsistenten Mischung aus alter und neuer Ablauflogik
(Tests liefen nach statt vor dem Kopieren, Fehlermeldungen wichen vom
tatsächlichen Skriptinhalt ab). Fix: gesamte Logik in main() gekapselt, das
erst nach vollständigem Einlesen der Datei aufgerufen wird.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Extrahiert die wichtigste DB-/netzwerkfreie Geschäftslogik (Monatsnavigation,
Admin-/Aktien-Rollenprüfung, Aktien-GuV-Berechnung, OpenFIGI-/Alpha-Vantage-
Antwortauswertung, Eingabevalidierung, CSV-Export, Migrations-Logik) nach
html/lib/fscash.php und deckt sie mit 31 PHPUnit-Tests ab. update.sh
installiert Composer-Abhängigkeiten bei Bedarf und führt die Tests jetzt vor
jedem Deploy aus - bei Fehlschlag wird nichts kopiert oder migriert.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Jede Summenangabe in rep-month.php und rep-person.php führt jetzt per
Klick zum Dashboard mit exakt den Filtern (Jahr, Monat, Kategorie(n),
Zahler), die in die jeweilige Summe eingeflossen sind. Außerdem Fix
für rep-person.php: ohne ?categories[]-Parameter wurde $selectedCategories
nie initialisiert, was zu einem Fatal Error führte - jetzt werden
standardmäßig alle Kategorien vorausgewählt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Jede Tabellenspalte im Dashboard bekommt eine eigene Filterzeile (Text- oder
Dropdown-Filter je nach Spalte), die die sichtbaren Einträge clientseitig
per JS einschränkt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Kopiert den git-Stand nach /var/www/html (config.php bleibt unangetastet),
prüft PHP-Syntax vorab und wendet ausstehende Migrationen aus migrations/
über eine schema_migrations-Tracking-Tabelle an. Tests werden ausgeführt,
sobald welche existieren.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>