import { MITARBEITERART_STANDARD } from "@/lib/mitarbeiterart"; import type { CollectiveAgreement, ContractType, DienstwagenArt, EmploymentType, GenderType, Mitarbeiterart, PaygradeType, RelationshipType, Weekday, WorkerType } from "@/lib/types"; // The spec's hire wizard field list (§4.4) omits Geschlecht and Standort even // though both are NOT NULL on employees — added here (defaults keep them // effectively "free" for the user, same treatment as the karenz-start gap). /** * Angehörige:r, wie sie im Assistenten gesammelt wird. * * Eigener Typ statt der Zeile aus der Datenbank: es gibt weder eine Kennung * noch eine Person, an der sie hängt — beides entsteht erst mit dem Anlegen. */ export type HireDraftAngehoerige = { firstName: string; lastName: string; relationship: RelationshipType; birthDate: string; svNummer: string; }; export type HireDraftData = { /** * Eingabe, nicht Vergabe. * * Muss mit Loga und Interflex übereinstimmen — als Zeichenkette geführt, * weil ein leeres Zahlenfeld sonst als 0 im Entwurf landet. */ personnelNumber: string; firstName: string; lastName: string; titlePrefix: string[]; titleSuffix: string[]; gender: GenderType; birthDate: string; svNummer: string; email: string; phone: string; locationId: string; positionId: string; besetzung: "Intern" | "Extern" | ""; entryDate: string; contractType: ContractType; contractEndDate: string; employmentType: EmploymentType; weeklyHours: string; paygrade: PaygradeType; workerType: WorkerType; collectiveAgreement: CollectiveAgreement; workDays: Weekday[]; isBetriebsrat: boolean; hasDienstwagen: boolean; /** Nur ausgewertet, wenn hasDienstwagen gesetzt ist — so will es der CHECK. */ dienstwagenArt: DienstwagenArt; emergencyContactName: string; emergencyContactPhone: string; emergencyContactRelation: string; angehoerige: HireDraftAngehoerige[]; isLateraleFuehrung: boolean; isCLevel: boolean; /** Form der Beschäftigung — zweite Achse neben der Beschäftigtengruppe. */ mitarbeiterart: Mitarbeiterart; hasKuendigungsschutz: boolean; /** Freiwillig — leer heisst „bis auf Weiteres". */ kuendigungsschutzBis: string; /** Personenkreis nach dem besonderen Kündigungsschutz; leer heisst „nicht erfasst". */ kuendigungsschutzGrund: string; kuendigungsschutzAb: string; istBeguenstigtBehindert: boolean; /** Grad in Prozent als Text — ein leeres Zahlenfeld wäre sonst 0. */ behinderungGrad: string; behinderungAb: string; behinderungBis: string; }; export const EMPTY_HIRE_DRAFT: HireDraftData = { personnelNumber: "", firstName: "", lastName: "", titlePrefix: [], titleSuffix: [], gender: "m", birthDate: "", svNummer: "", email: "", phone: "", locationId: "", positionId: "", besetzung: "", entryDate: "", contractType: "unbefristet", contractEndDate: "", employmentType: "Vollzeit", weeklyHours: "38.5", paygrade: "B", workerType: "Angestellte:r", collectiveAgreement: "Handel", workDays: ["Mo", "Di", "Mi", "Do", "Fr"], isBetriebsrat: false, hasDienstwagen: false, dienstwagenArt: "Verbrenner", emergencyContactName: "", emergencyContactPhone: "", emergencyContactRelation: "", angehoerige: [], isLateraleFuehrung: false, isCLevel: false, mitarbeiterart: MITARBEITERART_STANDARD, hasKuendigungsschutz: false, kuendigungsschutzBis: "", kuendigungsschutzGrund: "", kuendigungsschutzAb: "", istBeguenstigtBehindert: false, behinderungGrad: "", behinderungAb: "", behinderungBis: "", };