import { Plus, Trash2 } from "lucide-react"; import { Button } from "@/components/ui/Button"; import { SelectField, TextField } from "@/components/ui/Field"; import { fmtDate } from "@/lib/format"; import { formatSvnr, svnrErrorMessage, validateSvnr } from "@/lib/svnr"; import type { RelationshipType } from "@/lib/types"; import type { HireDraftAngehoerige, HireDraftData } from "./types"; const VERHAELTNIS: RelationshipType[] = ["Ehepartner:in", "Lebenspartner:in", "Kind", "Sonstige"]; // Angehörige im Assistenten, obwohl es die Person noch nicht gibt. // // Sie werden hier gesammelt und erst nach dem Anlegen angehängt — die // Datenbankfunktion braucht eine Kennung, und die entsteht mit der // Einstellung. Der Preis dafür steht in HireWizard: schlägt eine der // Ergänzungen fehl, ist die Person trotzdem angelegt, und die Meldung sagt // das dann auch. // // Freiwillig: die meisten Einstellungen kommen ohne aus, und wer später // etwas nachträgt, findet denselben Dialog in der Personalakte. export function StepAngehoerige({ draft, update, }: { draft: HireDraftData; update: (patch: Partial) => void; }) { const liste = draft.angehoerige; function setze(index: number, patch: Partial) { update({ angehoerige: liste.map((a, i) => (i === index ? { ...a, ...patch } : a)) }); } function hinzufuegen() { update({ angehoerige: [...liste, { firstName: "", lastName: draft.lastName, relationship: "Kind", birthDate: "", svNummer: "" }], }); } return (

Angehörige sind freiwillig und lassen sich jederzeit in der Personalakte nachtragen. Der Nachname ist mit dem der einzustellenden Person vorbelegt — überschreibbar.

{liste.length === 0 ? (

Keine Angehörigen erfasst.

) : (
{liste.map((a, i) => { // Dieselbe Prüfung wie bei der Person selbst: Prüfziffer und // Geburtsdatum müssen zusammenpassen. Hier schon, damit der // Fehler nicht erst nach dem Anlegen auftaucht — dann existiert // die Person bereits und die Angehörige fehlt. const svFehler = a.svNummer.trim() ? validateSvnr(a.svNummer, a.birthDate || null) : null; return (
{a.firstName || a.lastName ? `${a.firstName} ${a.lastName}`.trim() : `Angehörige:r ${i + 1}`} {a.birthDate && · {fmtDate(a.birthDate)}}
setze(i, { firstName: v })} /> setze(i, { lastName: v })} />
setze(i, { relationship: v as RelationshipType })} options={VERHAELTNIS.map((r) => ({ value: r, label: r }))} /> setze(i, { birthDate: v })} />
setze(i, { svNummer: v })} error={svFehler ? svnrErrorMessage(svFehler) : undefined} hint={!svFehler && a.svNummer.trim() ? formatSvnr(a.svNummer) : undefined} />
); })}
)}
); }