Kassenverwaltung als Phase 9 ergaenzen, Festlegungen dokumentieren

Die Rolle KASSIER war seit Phase 0 angelegt, ein Kassenmodul fehlte in der
Planung. Phase-9.md beschreibt es jetzt: Konten, Buchungen mit Beleg,
Beitragslauf mit Mahnstufen, Rechnungen, Kassenabschluss und Auswertungen.
Geschaetzt 8-11 PT, Version 0.10.0.

Zwei Festlegungen aus der Spezifikation, weil sie den Rest bestimmen: eine
festgeschriebene Buchung ist unveraenderbar und wird nur ueber eine
Gegenbuchung korrigiert; der Kassenabschluss friert seinen Zeitraum ein.

Ausserdem als entschieden festgehalten:
- Berechtigung bleibt ohne organisationId. Die Tabelle ist der systemweite
  Katalog dessen, was die Software kann; mandantenbezogen wird es erst ueber
  RolleBerechtigung.
- Die Loeschausnahme im Audit-Log bleibt. UPDATE ist dauerhaft gesperrt,
  DELETE nur im gekennzeichneten Aufbewahrungslauf des Workers.

Roadmap, Aufwandsschaetzung, Versionierung, README und die Seitenleiste sind
entsprechend ergaenzt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-03 07:11:37 +02:00
co-authored by Claude Opus 5
parent 845942f36c
commit 4b3021bb50
7 changed files with 103 additions and 31 deletions
+3 -1
View File
@@ -15,6 +15,7 @@ import {
MonitorSmartphone,
Siren,
Truck,
Wallet,
Users,
Wrench,
X,
@@ -31,7 +32,7 @@ import type { Recht, Rolle } from "@/lib/authz";
* bleibt in lib/authz.ts, wie es die Projektregeln verlangen. Ein ausgeblendeter
* Eintrag ist Bequemlichkeit, kein Schutz; der Schutz sitzt in der tRPC-Schicht.
*
* Die Phasenangaben entsprechen den Dateien Phase-0.md bis Phase-8.md.
* Die Phasenangaben entsprechen den Dateien Phase-0.md bis Phase-9.md.
*/
interface Eintrag {
@@ -86,6 +87,7 @@ const EINTRAEGE: Eintrag[] = [
rechte: ["ausbildung.lesen"],
abPhase: 7,
},
{ titel: "Kasse", pfad: "/kasse", symbol: Wallet, rechte: ["kasse.lesen"], abPhase: 9 },
{
titel: "Protokoll",
pfad: "/protokoll",