Mitarbeiterart als zweite Achse neben der Beschaeftigtengruppe
Anforderung 9 aus dem Workshop. Migration 20260915140000.
Im Dokument standen die beiden untereinander:
Arbeiter, Angestellte, Lehrlinge
Standard / Praktikant / Geringfuegige Beschaeftigung / Altersteilzeit
Die erste Zeile gibt es schon als worker_type, Lehrling seit 20260910140000.
Die zweite ist eine andere Frage: nicht *als was* jemand angestellt ist,
sondern *in welcher Form*. Beide gelten gleichzeitig — ein Praktikant ist
Arbeiter oder Angestellter, nicht statt dessen. In eine Liste gepresst
muesste man sich fuer eine der Antworten entscheiden und verloere die andere.
NOT NULL mit Vorgabe "Standard": jede Person ist in irgendeiner Form
beschaeftigt, und "nicht erfasst" waere keine Aussage, sondern eine Luecke,
die sich durch jede Auswertung zieht. Der Bestand bekommt damit einen
sichtbaren, korrigierbaren Ausgangswert statt eines leeren Feldes.
Die vier Funktionen wurden vollstaendig neu geschrieben. Die Selbstpruefung
haelt deshalb auch die Felder der vorigen Migration fest: eines beim
Uebertragen zu verlieren waere ein Fehler, der nirgends auffiele — die
Oberflaeche schickte den Wert weiter, und die Funktion ignorierte ihn.
This commit is contained in:
@@ -6,12 +6,19 @@ import {
|
||||
GRUND_BEGUENSTIGT_BEHINDERT,
|
||||
KUENDIGUNGSSCHUTZ_GRUENDE,
|
||||
} from "@/lib/kuendigungsschutz";
|
||||
import type { CollectiveAgreement, DienstwagenArt, Weekday, WorkerType } from "@/lib/types";
|
||||
import { MITARBEITERARTEN } from "@/lib/mitarbeiterart";
|
||||
import type { CollectiveAgreement, DienstwagenArt, Mitarbeiterart, Weekday, WorkerType } from "@/lib/types";
|
||||
|
||||
const WEEKDAYS: Weekday[] = ["Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"];
|
||||
|
||||
export type RoleEmploymentValue = {
|
||||
workerType: WorkerType;
|
||||
/**
|
||||
* Form der Beschäftigung — zweite Achse neben der Gruppe. Ein Praktikant
|
||||
* kann Arbeiter oder Angestellter sein; in einem Feld liesse sich nur eines
|
||||
* von beidem sagen.
|
||||
*/
|
||||
mitarbeiterart: Mitarbeiterart;
|
||||
collectiveAgreement: CollectiveAgreement;
|
||||
workDays: Weekday[];
|
||||
isBetriebsrat: boolean;
|
||||
@@ -80,6 +87,17 @@ export function RoleEmploymentFields({ value, onChange }: { value: RoleEmploymen
|
||||
{ value: "Lehrling", label: "Lehrling" },
|
||||
]}
|
||||
/>
|
||||
{/* Zweites Feld und nicht dieselbe Liste erweitert: die Gruppe sagt,
|
||||
*als was* jemand beschäftigt ist, die Art *in welcher Form*. Beides
|
||||
gilt gleichzeitig — ein Praktikant ist Arbeiter oder Angestellter,
|
||||
nicht statt dessen. */}
|
||||
<SelectField
|
||||
label="Mitarbeiterart"
|
||||
dense
|
||||
value={value.mitarbeiterart}
|
||||
onChange={(v) => onChange({ mitarbeiterart: v as Mitarbeiterart })}
|
||||
options={MITARBEITERARTEN.map((a) => ({ value: a, label: a }))}
|
||||
/>
|
||||
<SelectField
|
||||
label="Kollektivvertrag"
|
||||
dense
|
||||
|
||||
@@ -15,6 +15,7 @@ import { useToast } from "@/components/ui/Toast";
|
||||
import { brauchtAufenthaltstitel, UN_COUNTRIES } from "@/lib/countries";
|
||||
import { STUNDEN_GRUENDE } from "@/lib/absence";
|
||||
import { GRUND_BEGUENSTIGT_BEHINDERT } from "@/lib/kuendigungsschutz";
|
||||
import { MITARBEITERART_STANDARD } from "@/lib/mitarbeiterart";
|
||||
import { fmtFullName, todayIso } from "@/lib/format";
|
||||
import { isValidSvnr, requiresAustrianSvnr } from "@/lib/svnr";
|
||||
import { EMERGENCY_RELATIONS, type ContractType, type Database, type EmploymentType, type GenderType } from "@/lib/types";
|
||||
@@ -81,6 +82,7 @@ export function DatenAendernPanel({
|
||||
|
||||
const [role, setRole] = useState<RoleEmploymentValue>({
|
||||
workerType: employee.worker_type ?? "Angestellte:r",
|
||||
mitarbeiterart: employee.mitarbeiterart ?? MITARBEITERART_STANDARD,
|
||||
collectiveAgreement: employee.collective_agreement ?? "Handel",
|
||||
workDays: employee.work_days ?? ["Mo", "Di", "Mi", "Do", "Fr"],
|
||||
isBetriebsrat: employee.is_betriebsrat ?? false,
|
||||
@@ -172,6 +174,7 @@ export function DatenAendernPanel({
|
||||
},
|
||||
role: {
|
||||
worker_type: role.workerType,
|
||||
mitarbeiterart: role.mitarbeiterart,
|
||||
collective_agreement: role.collectiveAgreement,
|
||||
work_days: role.workDays,
|
||||
is_betriebsrat: role.isBetriebsrat,
|
||||
|
||||
Reference in New Issue
Block a user