'use client' import Link from 'next/link' import { useActionState } from 'react' import { CheckCircle2, FileDown, FileWarning, Gavel, Scale, TriangleAlert } from 'lucide-react' import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' import { Checkbox } from '@/components/ui/checkbox' import { Input } from '@/components/ui/input' import { Select } from '@/components/ui/select' import { Textarea } from '@/components/ui/textarea' import { Feld } from '@/components/feld' import { Rechtshinweis } from '@/components/rechtshinweis' import { Button } from '@/components/ui/button' import { Absendeknopf, Textbaustein, Zustandsmeldung } from '@/components/substanz-formular' import { kuendigungVermerken } from '@/server/actions/vertraege' import { formatDatum } from '@/lib/utils' import type { Formularzustand } from '@/lib/validierung/substanz' export type AssistentDaten = { schreiben: string warnungen: string[] genehmigung: { stellen: boolean frage: string rechtsgrundlage: string hinweis: string } versandnachweis: { moeglichkeiten: string[] hinweis: string } plan: { berechenbar: boolean naechsterTermin: string | null zugangSpaetestensAm: string | null spaetesterAbsendetag: string | null tageBisAbsendetag: number | null verpasst: boolean hinweise: string[] } } export function KuendigungsAssistent({ betreuteId, vertragId, daten, heuteIso, darfSchreiben, }: { betreuteId: string vertragId: string daten: AssistentDaten heuteIso: string darfSchreiben: boolean }) { const [zustand, aktion] = useActionState(kuendigungVermerken, {}) return (
{daten.warnungen.length > 0 && ( )} Zu diesem Termin kann als Nächstes gekündigt werden — und bis wann der Brief dafür raus muss. {daten.plan.berechenbar ? (
Kündigung zum
{formatDatum(daten.plan.naechsterTermin)}
Zugang spätestens
{formatDatum(daten.plan.zugangSpaetestensAm)}
Brief spätestens absenden
{formatDatum(daten.plan.spaetesterAbsendetag)}
{daten.plan.tageBisAbsendetag !== null && (
{daten.plan.tageBisAbsendetag < 0 ? `vor ${Math.abs(daten.plan.tageBisAbsendetag)} Tagen` : `in ${daten.plan.tageBisAbsendetag} Tagen`}
)}
) : (

Ohne Laufzeitbeginn und Kündigungsfrist lässt sich der Termin nicht berechnen.

)}
    {daten.plan.hinweise.map((hinweis) => (
  • {hinweis}
  • ))}
{daten.genehmigung.frage}

{daten.genehmigung.hinweis}

Kündigungsschreiben Entwurf zum Kopieren und Bearbeiten. Die App verschickt nichts.
{daten.versandnachweis.hinweis}
    {daten.versandnachweis.moeglichkeiten.map((moeglichkeit) => (
  • {moeglichkeit}
  • ))}
{darfSchreiben && (