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`