Zum Hauptinhalt springen

Mitarbeiter — Abwesenheiten (Sub-Route)

Zweck

Sub-Route /employees/:id/absences zeigt alle Abwesenheiten des Mitarbeiters mit Genehmigungs-Status. Drill-Down zur globalen Verarbeitungssicht oder zum Antrag.

Voraussetzungen

- Berechtigung `view:Employee` und `view:Absence`. - Für Antraege: `create:Absence`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Employee, Employee, FE_Absence, AbsenceListe sichtbar
createAbsenceAntrag stellenAPP_SPEAMCORE_CREATE_ABSENCE

Schritt-für-Schritt-Anleitung

  1. Mitarbeiter (/employees/:id) → Tab Abwesenheiten.
  2. Liste aller Antraege chronologisch sortiert, mit Filter auf Status.
  3. + Antrag legt einen neuen Absence-Antrag mit requestedById = :id an. Pflichtfelder:
    • type — Urlaub / Krank / Schule / Sonderurlaub / Elternzeit / unbezahlte Freistellung.
    • subtype — Sub-Typ je nach type (z. B. „Erholungsurlaub" / „Sonderurlaub Hochzeit" / „Krank mit AU" / „Krank ohne AU").
    • startDate / endDate.
    • halfDayMorning / halfDayAfternoon (optional für halbe Tage).
  4. Status startet auf requested. Genehmigungsworkflow über den Vorgesetzten (Employee.supervisorId) — siehe /absences und /employee-time-trackings/management.

Status-Lifecycle einer Abwesenheit

**Resturlaubs-Berechnung:** Genehmigte `type = 'vacation'`-Antraege reduzieren den Resturlaubsstand des Mitarbeiters (`Employee.vacationDaysPerYear` aus aktivem Vertrag minus Summe genehmigter Urlaube im Jahr). Krankheits-Einträge (`type = 'sick'`) reduzieren NICHT den Urlaub. Storniert/abgelehnte Antraege werden nicht beruecksichtigt.

Abwesenheiten-Übersicht mit Urlaubskonto 2026 (Gesamt verfügbar, Genommen, Zukünftig genehmigt, Beantragt, Rest) und Jahres-Kalender mit farbcodierten Tagen (Urlaub genehmigt, Halbtag, Krankheit, Feiertag) — Legende unten (Test-Daten).

Die fünf Kennzahlen im Urlaubskonto

Oben zeigt das Urlaubskonto fünf Werte:

KachelBedeutung
Gesamt verfügbarJahresanspruch des Mitarbeiters (aus aktivem Vertrag) plus ggf. Übertrag aus dem Vorjahr.
GenommenBereits angetretene, genehmigte Urlaubstage.
Zukünftig (genehmigt)Genehmigte Urlaube, die noch in der Zukunft liegen.
BeantragtEingereichte, aber noch nicht genehmigte Anträge.
RestGesamt verfügbar minus Genommen minus Zukünftig genehmigt.

<Stolperstein titel="Negativer Rest (z. B. „−9")"> Ein negativer Rest entsteht, wenn mehr Urlaub genehmigt ist, als Anspruch besteht — typisch im Demo-/Setup-Fall, wenn am Vertrag noch kein Jahresanspruch hinterlegt ist (Gesamt verfügbar = 0), aber bereits Urlaube genehmigt wurden (z. B. 9 → Rest −9). In der Praxis bedeutet ein negativer Rest: Der Mitarbeiter hat sein Kontingent überzogen. Lösung: Jahresanspruch am Vertrag prüfen/setzen.

Wiederverwendbare Konzepte

Verknuepfungen zu anderen Modulen

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/absences?filter[requestedById]Listeview Absence
POST/api/absencesAntragcreate Absence

Versionshinweise

  • 2026-04-30: Initiale Veroeffentlichung.