Urlaubs-Typen (VacationType)
Zweck
VacationType modelliert die Stammdaten der Urlaubs-Typen pro Mandant — z. B. gesetzlicher Mindesturlaub, Tarif-Mehrurlaub, Schwerbehinderten-Zusatzurlaub, Jugendarbeitsschutz-Urlaub. Pro Typ sind Verfalls-Regel, Altersstaffelung und Abgeltungs-Logik konfiguriert.
In Mitarbeiter-Verträgen werden konkrete Urlaubs-Kontingente über die Junction EmployeeContractVacation mit einem VacationType verknüpft (siehe Employee-Contract-Vacations).
Voraussetzungen
Berechtigungen (CASL)
Frontend-Page-Guard: view:FE_VacationType, view:VacationType
API-Datenzugriff: view, create, update, delete auf VacationType
Datenmodell
| Feld | Typ | Bedeutung |
|---|---|---|
id | UUID | Primary Key |
key | String | maschinenlesbarer Schlüssel, eindeutig pro Mandant (z. B. statutory_minimum) |
name | String | Anzeigename (z. B. „Gesetzlicher Mindesturlaub") |
category | enum | statutory | tariff | contractual | other |
expiryRule | enum | endOfYear | march31NextYear | march31Plus15Months | none |
carryoverDeadline | String nullable | Stichtag MM-DD; leitet sich aus expiryRule ab wenn null |
compensableOnTermination | Boolean | Wird bei Kündigung in Geld abgegolten? |
compensableOnSickness | Boolean | Wird bei Krankheit übertragen? |
requiresHinweispflicht | Boolean | BAG-Hinweispflicht des AG vor Verfall |
appliesByAge | Array nullable | Altersabhängige Tagesstaffelung (z. B. JArbSchG §19) — [{minAge, maxAge, days}] |
replacesCategory | String nullable | Wenn gesetzt, ersetzt dieser Type einen anderen statt zu addieren (z. B. youthLeave ersetzt mandatory) |
defaultDays | Number nullable | Default-Tage bei Vertrags-Anlage |
isSystem | Boolean readonly | System-Templates sind nicht löschbar |
active | Boolean | Inaktive Typen erscheinen nicht in der Vertrags-Auswahl |
expiryRule im Detail
| Wert | Bedeutung |
|---|---|
endOfYear | Verfällt am 31.12. des Jahres |
march31NextYear | Übertragbar bis 31.03. des Folgejahres (Standard für gesetzlichen Urlaub) |
march31Plus15Months | Erweiterter Übertrag (15 Monate) — z. B. bei Krankheit, EuGH-Rechtsprechung |
none | Verfällt nicht — z. B. Sonderurlaub |
Beispiele typischer Vacation-Types
| Key | Name | Category | ExpiryRule | Tage | Hinweispflicht |
|---|---|---|---|---|---|
statutory_minimum | Gesetzlicher Mindesturlaub (BUrlG) | statutory | march31NextYear | 20 (5-Tage-Woche) | ja |
severely_disabled | Schwerbehinderten-Zusatzurlaub (SGB IX §208) | statutory | march31NextYear | 5 | ja |
youth_leave | Jugendurlaub (JArbSchG §19) | statutory | march31NextYear | altersgestaffelt 25-30 | ja |
tariff_extra | Tarif-Mehrurlaub | tariff | endOfYear | 10 | nein |
birthday_bonus | Geburtstags-Sonderurlaub | contractual | none | 1 | nein |
API-Endpoints
| Methode | Endpoint | Zweck |
|---|---|---|
GET | /api/vacation-types | Liste, Filter ?filter[active]=true |
GET | /api/vacation-types/:id | Detail |
POST | /api/vacation-types | Neu anlegen |
PATCH | /api/vacation-types/:id | Ändern |
DELETE | /api/vacation-types/:id | Löschen (nicht bei isSystem=true) |
Verknüpfungen
- EmployeeContractVacation — Junction-Tabelle, verknüpft Mitarbeiter-Vertrag mit
VacationTypeund konkreten Tagen. Bei Vertrags-Finalisierung werden die VacationType-Werte als Snapshot in die Junction übernommen — nachträgliche Änderungen am VacationType wirken nicht zurück. - Absences — beim Anlegen einer Abwesenheit wird auf das passende VacationType-Kontingent abgebucht.
- Settings — BAG-Urlaubsverfalls-Hinweis-Toggle pro Mandant aktivierbar (siehe Compliance-Notification-System).
Versionshinweise
- 2026-05 (Welle 98): Initiale Doku basiert auf Migration
20260430125230-initial-vacation-type-model.js+ ModellvacationType.model.ts. Eingeführt zusammen mitEmployeeContractVacation-Junction für altersgestaffelte und replacable VacationType-Logik.