Kundenansicht: Toggle „Deaktivierte Verträge anzeigen"

Der Vertragsbaum beim Kunden blendete DEACTIVATED-Verträge
komplett aus. Da der aktuellste Vertrag die Baumwurzel ist und
Vorgänger als Children hängen, verschwand eine ganze Kette aus
der Ansicht, sobald die Wurzel deaktiviert wurde – so „verschwand"
ein Vertrag scheinbar, als ein aktiver Folgevertrag gelöscht und
der Vorgänger vorher deaktiviert worden war.

getContractTreeForCustomer bekommt ein optionales
includeDeactivated-Flag (Default false = bisheriges Verhalten),
durchgereicht per Query-Param includeDeactivated=true. Toggle-
Button (Eye/EyeOff) im Kunden-Vertragstab; showDeactivated ist
Teil des Query-Keys → frischer Fetch beim Umschalten. Deaktivierte
behalten ihr graues DEACTIVATED-Badge.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 21:45:58 +02:00
co-authored by Claude Opus 4.7
parent d0611b740a
commit d059912c1e
5 changed files with 52 additions and 14 deletions
+16
View File
@@ -97,6 +97,22 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **👁 Kundenansicht: Toggle „Deaktivierte Verträge anzeigen"**
- Der Vertragsbaum beim Kunden (`CustomerDetail` → Tab Verträge)
blendete `DEACTIVATED`-Verträge komplett aus. Da der jeweils
aktuellste Vertrag die Baumwurzel ist und Vorgänger als Children
hängen, verschwand eine ganze Kette aus der Ansicht, sobald die
Wurzel deaktiviert wurde – genau das passierte, als ein aktiver
Folgevertrag gelöscht und der Vorgänger vorher auf „deaktiviert"
gesetzt worden war. Der Vertrag „verschwand" scheinbar, war aber
nur unsichtbar gefiltert.
- Fix: `getContractTreeForCustomer(customerId, includeDeactivated)`
mit optionalem Flag (Default false = bisheriges Verhalten). Query-
Param `includeDeactivated=true`, Toggle-Button im Kunden-Vertragstab
(`Eye`/`EyeOff`). `showDeactivated` ist Teil des Query-Keys →
frischer Fetch beim Umschalten. Deaktivierte Verträge tragen ihr
graues `DEACTIVATED`-Badge, bleiben also klar erkennbar.
- [x] **🐞 Vertrag-Löschen: Kette unterbrach, Liste aktualisierte nicht**
- Zwei zusammenspielende Bugs: (1) im Service scheiterte das Umbiegen
des Folgevertrags an der `@unique`-Regel auf `Contract.previousContractId`