import { redirect } from 'next/navigation' import { Info } from 'lucide-react' import { Alert, AlertDescription } from '@/components/ui/alert' import { SeitenKopf } from '@/components/seiten-kopf' import { LEERER_VERTRAG, VertragFormular } from '@/components/vertraege/vertrag-formular' import { aktiveBetreute, erfordereBenutzer, erfordereZugang } from '@/lib/auth/sitzung' import { alsZahlRhythmus, type Rhythmus } from '@/lib/finanzen/wiederkehrend' import { betragFormatieren } from '@/lib/finanzen/betrag' export const dynamic = 'force-dynamic' /** * Uebernimmt eine Vorbelegung aus der Adresszeile. * * Sie kommt von "Wiederkehrende Zahlungen": Dort steht schon, wer da * abbucht und wie viel. Diese Angaben noch einmal abzutippen waere genau * die Arbeit, die die Auswertung ersparen soll. * * Uebernommen wird nur, was aus dem Kontoauszug ablesbar ist - Gesellschaft, * Beitrag, Rhythmus. Die Bezeichnung und die Vertragsart bleiben leer: Was * fuer ein Vertrag das ist, steht nicht im Auszug, und eine geratene * Vorbelegung wird uebersehen statt korrigiert. */ function vorbelegung(parameter: Record) { const text = (name: string): string => { const wert = parameter[name] return typeof wert === 'string' ? wert.trim() : '' } const werte = { ...LEERER_VERTRAG } let etwasUebernommen = false const gesellschaft = text('gesellschaft') if (gesellschaft) { werte.gesellschaft = gesellschaft.slice(0, 200) etwasUebernommen = true } const cent = text('beitragCent') if (/^[0-9]{1,15}$/.test(cent)) { werte.beitrag = betragFormatieren(BigInt(cent)) etwasUebernommen = true } const rhythmus = alsZahlRhythmus(text('rhythmus') as Rhythmus) if (rhythmus) { werte.rhythmus = rhythmus as typeof werte.rhythmus etwasUebernommen = true } return { werte, etwasUebernommen } } export default async function VertragAnlegen({ searchParams, }: { searchParams: Promise> }) { const parameter = await searchParams const benutzer = await erfordereBenutzer('/vertraege/neu') const aktive = await aktiveBetreute(benutzer) if (!aktive) return null const { darfSchreiben } = await erfordereZugang(aktive.id, 'VERTRAEGE', 'lesen') if (!darfSchreiben('VERTRAEGE')) redirect('/vertraege') const { werte, etwasUebernommen } = vorbelegung(parameter) return (
{etwasUebernommen && ( )}
) }