Cockpit: DEACTIVATED + CANCELLED skippt Fristen-Warnungen

Bug: Ein DEACTIVATED-Vertrag (manuell archiviert) zeigte im
Cockpit weiter "Vertragsende: Vertrag seit 79 Tagen abgelaufen!"
– sinnlos, weil der Mitarbeiter den Vertrag ja aktiv beendet
hatte.

Fix: skipDeadlines-Guard, der bisher nur ONGOING abfing, greift
jetzt auch bei DEACTIVATED und CANCELLED. Beide sind terminale
Status – laufende Fristen ergeben da semantisch keinen Sinn.

Bewusst weiterhin AKTIV:
- Block 13a (Schlussrechnung fehlt): feuert wegen dieser Status,
  nicht trotzdem.
- Block 8 (DSGVO/Consent): läuft pro Kunde, nicht pro Vertrag.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 17:08:54 +02:00
co-authored by Claude Opus 4.7
parent 217aa82b2a
commit b099297e11
@@ -356,12 +356,23 @@ export async function getCockpitData(opts?: { customerIds?: number[] }): Promise
// Prüfen ob aktiver Folgevertrag existiert - dann keine Kündigungswarnungen nötig
const hasActiveFollowUp = contract.followUpContract?.status === 'ACTIVE';
// ONGOING = "Läuft weiter auf unbestimmte Zeit": es gibt kein Ende,
// also alle Fristen-bezogenen Blöcke (Kündigung, Verlängerung,
// Lieferbestätigung) für diesen Vertrag komplett skippen. DSGVO-/
// Consent-Checks laufen weiter, weil die pro Kunde greifen, nicht
// pro Vertrag.
const skipDeadlines = contract.status === 'ONGOING';
// Fristen-Blöcke pro Vertrag skippen für Status, bei denen laufende
// Fristen semantisch keinen Sinn ergeben:
// - ONGOING : "Läuft weiter auf unbestimmte Zeit" → kein Ende
// - DEACTIVATED : manuell beendet/archiviert → nichts mehr zu erinnern
// - CANCELLED : Kündigung schon eingereicht → Vertragsende ist
// die Konsequenz der Kündigung, keine Frist mehr
// Die Schlussrechnung-Fehlt-Warnung (Block 13a) bleibt aktiv, weil
// sie WEGEN dieser Status feuert (kein separater Guard). DSGVO-/
// Consent-Checks (Block 8) sind pro Kunde, nicht pro Vertrag, und
// laufen ebenfalls weiter.
// User-Wunsch 2026-07-13: DEACTIVATED-Vertrag zeigte im Cockpit
// "Vertrag seit 79 Tagen abgelaufen!" sinnlos für einen Vertrag,
// der vom Mitarbeiter aktiv archiviert wurde.
const skipDeadlines =
contract.status === 'ONGOING'
|| contract.status === 'DEACTIVATED'
|| contract.status === 'CANCELLED';
// 1. KÜNDIGUNGSFRIST (nur wenn kein aktiver Folgevertrag UND Snooze nicht aktiv)
// Snooze unterdrückt NUR Fristen-bezogene Warnungen!