v1.14: Steuermodul - umlegbare und nicht umlegbare Kosten nach Haus und Wohnung

This commit is contained in:
2026-10-04 12:18:26 +02:00
parent 39eb247456
commit b57e9276f8
10 changed files with 606 additions and 4 deletions
+18
View File
@@ -189,6 +189,24 @@ tar -czf mp-dist.tar.gz -C dist .
## 8. Verlauf / offene Punkte
**Erledigt 04.10. (v1.14):** Steuermodul „Steuer & Kosten" (/kosten, Nav zwischen
Zählerstände und Dokumente, für beide Rollen sichtbar). Neue Tabelle `costs`
(building NOT NULL → buildings.name, unit_id NULL = hausweite Position, jahr,
kostenart, betrag, umlegbar BOOLEAN, notiz, erfasst_am), idempot vorbefüllt
mit 16 Demo-Positionen 2025/2026 (`seedeKosten()`). API (adminOnly):
POST/PATCH/DELETE /api/costs(/:id); Validierung: Kostenart aus KOSTEN_ARTEN
(15 Werte), jahr 2000..aktuell+1, betrag ≥ 0, Haus muss in buildings existieren
– bei gesetzter unitId folgt das Haus IMMER der Wohnung (eingereichtes Haus
wird überschrieben, vgl. meters). Bootstrap: Admin alle (jahr DESC), Mieter nur
eigene Wohnung. Frontend: Summenkarten (umlegbar/nicht umlegbar/Gesamt über die
Filterauswahl), Filterchips Umlegbarkeit + Selects Jahr/Haus (Admin), Tabelle
mit Kostenart/Notiz, Haus, Wohnung, Jahr, Badge, Betrag; Admin-Dialog
(Anlegen/Bearbeiten) mit Kostenart-, Umlegbarkeits-, Jahr-, Betrag-, Haus-
(disabled bei Wohnungswahl) und Wohnung-Select („Ganzes Haus" = Sentinel
'__haus'). Store: addKosten/updateKosten/deleteKosten. E2E verifiziert:
Hausableitung, Patch, Validierung 400 (Kostenart/Haus/Jahr/Betrag), Mieter
403, Löschen, Testdaten aufgeräumt.
**Erledigt 04.10. (v1.13):** Echter PDF-Upload für das Dokumentenmodul. Neue
Dep multer (^2.0.2, server/package-lock.json liegt jetzt im Repo, Docker
baut mit `npm ci`). DB: `documents` um `file_name`/`file_path` erweitert