Urlaubsanträge
Urlaubsanträge sind der Kern des Abwesenheitsmanagement-Workflows. Mitarbeiter reichen Anträge auf Freistellung ein, die dann einen Genehmigungsprozess durchlaufen. Das System verfolgt den gesamten Lebenszyklus von der Einreichung bis zur Genehmigung oder Ablehnung, mit automatischen Saldoaktualisierungen bei jedem Schritt.
Einen Urlaubsantrag Einreichen
Als Mitarbeiter (Portal)
- Navigieren Sie zu Urlaubsanträge in der Seitenleiste.
- Klicken Sie auf Erstellen.
- Wählen Sie den Urlaubstyp.
- Geben Sie das Startdatum und das Enddatum ein.
- Geben Sie die Anzahl der Tage ein (unterstützt halbe Tage, z.B. 0,5, 1,5).
- Fügen Sie optional einen Grund hinzu.
- Klicken Sie auf Speichern.
Das Mitarbeiterfeld wird automatisch auf den angemeldeten Mitarbeiter gesetzt — es erscheint nicht im Formular.
Als Administrator
Administratoren sehen dasselbe Formular, aber mit einem zusätzlichen Mitarbeiter-Feld zur Auswahl des betreffenden Mitarbeiters. Sie können auch das Feld Admin-Notizen ausfüllen (für Mitarbeiter verborgen).
Von der Mitarbeiter-Detailansicht
Administratoren können Urlaubsanträge direkt von der Detailseite eines Mitarbeiters aus erstellen, indem sie die Aktion Urlaubsantrag Erstellen verwenden. Der Mitarbeiter ist vorausgefüllt, und ein zusätzlicher Halbtag-Schalter ist für mehr Komfort verfügbar.
Validierungsregeln
Das System wendet mehrere Validierungsregeln an, wenn ein Urlaubsantrag eingereicht oder bearbeitet wird:
Tagevalidierung
Die Anzahl der Tage muss mit dem Datumsbereich übereinstimmen:
- Volle Tage: Tage müssen gleich
end_date - start_date + 1sein - Halbe Tage: Tage müssen gleich
(end_date - start_date + 1) * 0.5sein
Jeder andere Wert wird mit einer Fehlermeldung abgelehnt.
Überschneidungserkennung
Das System prüft auf überschneidende Urlaubsanträge für denselben Mitarbeiter. Ein Antrag wird blockiert, wenn sein Datumsbereich sich mit einem bestehenden genehmigten oder ausstehenden Antrag überschneidet.
Zwei Datumsbereiche überschneiden sich, wenn:
start_date_1 <= end_date_2 AND start_date_2 <= end_date_1
Bei der Bearbeitung eines bestehenden Antrags schließt die Überschneidungsprüfung den aktuellen Datensatz aus.
Antragsstatus
| Status | Badge | Beschreibung |
|---|---|---|
| Ausstehend | Gelb | Wartet auf Genehmigung. Saldo ist in pending_days reserviert. |
| Genehmigt | Grün | Von einem Vorgesetzten genehmigt. Tage von pending_days nach used_days verschoben. |
| Abgelehnt | Rot | Von einem Vorgesetzten abgelehnt. Tage aus pending_days entfernt. |
| Storniert | Grau | Vom Mitarbeiter oder Administrator storniert. Tage wiederhergestellt. |
Genehmigungsworkflow
Standardablauf
Mitarbeiter reicht Antrag ein
|
Status: Ausstehend
(pending_days erhöht)
|
Vorgesetzter prüft Antrag
|
+--- Genehmigen ---> Status: Genehmigt
| (pending_days -> used_days)
| Mitarbeiter benachrichtigt
|
+--- Ablehnen -----> Status: Abgelehnt
| (pending_days entfernt)
| Ablehnungsgrund erfasst
| Mitarbeiter benachrichtigt
|
+--- (Mitarbeiter) Stornieren --> Status: Storniert
(pending_days entfernt)
Automatische Genehmigung
Für Urlaubstypen, die für automatische Genehmigung konfiguriert sind (in Einstellungen > Urlaubsverwaltung):
Mitarbeiter reicht Antrag ein
|
Observer erkennt Auto-Genehmigungs-Konfiguration
|
Status: Sofort genehmigt
(used_days erhöht)
Keine Benachrichtigung an Vorgesetzten
Einstellungen des Genehmigungsworkflows
Navigieren Sie zu Einstellungen > HRM-Konfiguration > Urlaubsverwaltung, um den Workflow zu konfigurieren:
| Einstellung | Optionen | Standard |
|---|---|---|
| Genehmigungsworkflow | Einzelstufe / Mehrstufig / Automatische Genehmigung | Einzelstufe |
| Auto-Genehmigte Urlaubstypen | Bestimmte Urlaubstypen auswählen | Keine |
Einen Urlaubsantrag Genehmigen
Erfordert die Berechtigung approve leave requests.
- Navigieren Sie zu Urlaubsanträge oder öffnen Sie von der Dashboard-Karte für ausstehende Anträge.
- Wählen Sie einen oder mehrere ausstehende Anträge.
- Klicken Sie auf die Aktion Genehmigen.
- Fügen Sie optional Admin-Notizen hinzu.
- Bestätigen Sie.
Was passiert:
- Status wechselt zu Genehmigt
approved_bywird auf den aktuellen Benutzer gesetztapproved_atwird auf den aktuellen Zeitstempel gesetzt- Urlaubssaldo:
pending_daysnimmt ab,used_daysnimmt zu - Mitarbeiter erhält eine Benachrichtigung
Einen Urlaubsantrag Ablehnen
Erfordert die Berechtigung approve leave requests.
- Wählen Sie einen oder mehrere ausstehende Anträge.
- Klicken Sie auf die Aktion Ablehnen.
- Geben Sie einen Ablehnungsgrund ein (erforderlich).
- Fügen Sie optional Admin-Notizen hinzu.
- Bestätigen Sie.
Was passiert:
- Status wechselt zu Abgelehnt
rejection_reasonwird erfasst und ist für den Mitarbeiter sichtbar- Urlaubssaldo:
pending_daysnimmt ab - Mitarbeiter erhält eine Benachrichtigung
Einen Urlaubsantrag Stornieren
Erfordert die Berechtigung cancel leave requests. Sowohl Mitarbeiter als auch Administratoren können Anträge stornieren.
- Wählen Sie einen ausstehenden oder genehmigten Antrag.
- Klicken Sie auf die Aktion Stornieren.
- Bestätigen Sie.
Was passiert:
- Status wechselt zu Storniert
- Wenn der Antrag ausstehend war:
pending_daysnimmt ab - Wenn der Antrag genehmigt war:
used_daysnimmt ab (Tage werden zurückgegeben)
Nur ausstehende und genehmigte Anträge können storniert werden. Abgelehnte und bereits stornierte Anträge können nicht storniert werden.
Tabellenansichten
Die Urlaubsantragsliste enthält vier vorkonfigurierte Ansichten:
| Ansicht | Filter |
|---|---|
| Alle Urlaubsanträge | Kein Filter |
| Ausstehende Anträge | Status = Ausstehend |
| Genehmigte Anträge | Status = Genehmigt |
| Abgelehnte Anträge | Status = Abgelehnt |
Verfügbare Filter
- Status — Ausstehend, Genehmigt, Abgelehnt, Storniert
- Startdatum — Datumsbereich
- Enddatum — Datumsbereich
- Tage — Zahlenbereich
Benachrichtigungen
Das System sendet E-Mail-Benachrichtigungen an wichtigen Punkten im Lebenszyklus des Urlaubsantrags:
Wenn ein Antrag Eingereicht Wird
Eine Benachrichtigung wird an alle Benutzer gesendet, die die Berechtigung approve leave requests haben. Die E-Mail enthält:
- Name und E-Mail des Mitarbeiters
- Urlaubstyp, Start-/Enddaten, Gesamttage
- Grund (falls angegeben)
- Link zur Anzeige des Antrags
Wenn Sich der Antragsstatus Ändert
Der Mitarbeiter erhält eine Benachrichtigung, wenn sein Antrag genehmigt, abgelehnt oder storniert wird. Die E-Mail enthält:
- Urlaubstyp, Daten und Gesamttage
- Neuer Status
- Ablehnungsgrund (falls abgelehnt)
- Name des Genehmigenden
- Link zur Anzeige des Antrags
E-Mail-Vorlagen können unter Einstellungen > E-Mail-Konten > Vorlagen angepasst werden.
Dashboard-Karten
Das Urlaubsverwaltungssystem bietet drei Dashboard-Karten:
| Karte | Typ | Beschreibung |
|---|---|---|
| Urlaubsanträge nach Status | Kreisdiagramm | Verteilung der Anträge nach Status |
| Urlaubsanträge nach Typ | Balkendiagramm | Anzahl der Anträge gruppiert nach Urlaubstyp |
| Ausstehende Urlaubsanträge | Tabelle | Die 15 neuesten ausstehenden Anträge, die Aktion erfordern |
Genehmigungs- und Ablehnungsworkflow
Der Urlaubsgenehmigungsworkflow steuert, wie Urlaubsanträge von der Einreichung zur Lösung gelangen. Das HRM-Modul unterstützt drei Workflow-Modi, die von der Einstellungsseite aus konfiguriert werden können.
Workflow-Modi
Konfigurieren Sie den Workflow-Modus unter Einstellungen > HRM-Konfiguration > Urlaubsverwaltung.
Einzelstufe (Standard)
Der einfachste Workflow. Ein autorisierter Benutzer prüft und genehmigt oder lehnt den Antrag ab.
Mitarbeiter -> Einreichen -> Vorgesetzter/HR Genehmigt oder Lehnt ab -> Fertig
Jeder Benutzer mit der Berechtigung approve leave requests kann Anträge genehmigen oder ablehnen.
Mehrstufig
Anträge durchlaufen mehrere Genehmigungsstufen. Dies eignet sich für Organisationen, die sowohl die Genehmigung des direkten Vorgesetzten als auch der HR-Abteilung erfordern.
Mitarbeiter -> Einreichen -> Vorgesetzter Genehmigt -> HR Genehmigt -> Fertig
Automatische Genehmigung
Alle Urlaubsanträge werden bei der Einreichung automatisch genehmigt. Keine menschliche Überprüfung erforderlich.
Mitarbeiter -> Einreichen -> Automatisch Genehmigt -> Fertig
Sie können Workflow-Modi mit der Einstellung Auto-Genehmigte Urlaubstypen kombinieren, um bestimmte Typen (z.B. Homeoffice) automatisch zu genehmigen, während für andere (z.B. Jahresurlaub) eine Genehmigung erforderlich ist.
Automatische Genehmigung für Bestimmte Urlaubstypen
Anstatt alle Anträge automatisch zu genehmigen, können Sie bestimmte Urlaubstypen auswählen, die die Genehmigung umgehen:
- Gehen Sie zu Einstellungen > HRM-Konfiguration > Urlaubsverwaltung.
- Wählen Sie unter Auto-Genehmigte Urlaubstypen die Typen aus (z.B. Homeoffice, Freizeitausgleich).
- Speichern Sie.
Wenn ein Mitarbeiter einen Antrag für einen automatisch genehmigten Urlaubstyp einreicht:
- Der Status wird sofort auf Genehmigt gesetzt.
- Der Urlaubssaldo wird aktualisiert (
used_dayswird direkt erhöht, keinpending_days-Schritt). - Keine Benachrichtigung wird an Vorgesetzte gesendet.
- Der Mitarbeiter erhält keine Genehmigungsbenachrichtigung (da es sofort erfolgt).
Anträge für nicht automatisch genehmigte Urlaubstypen folgen dem Standard-Genehmigungsworkflow, unabhängig von dieser Einstellung.
Saldoaktualisierungen nach Aktion
| Aktion | Ausstehende Tage | Verwendete Tage | Verfügbare Tage |
|---|---|---|---|
| Antrag einreichen | +Tage | — | nimmt ab |
| Antrag genehmigen | -Tage | +Tage | unverändert |
| Antrag ablehnen | -Tage | — | nimmt zu |
| Stornieren (war ausstehend) | -Tage | — | nimmt zu |
| Stornieren (war genehmigt) | — | -Tage | nimmt zu |
Wer Kann Genehmigen
Genehmigungsaktionen werden durch die Berechtigung approve leave requests gesteuert. Diese Berechtigung muss einer Rolle explizit gewährt werden — sie ist nicht in der Standard-Mitarbeiterrolle enthalten.
Typische Rollen, die diese Berechtigung haben sollten:
- HR-Manager
- Abteilungsleiter
- Teamleiter
- Jede Administratorrolle
Super-Administratoren können Anträge immer genehmigen (umgangen über Gate::before).
Ablehnungsgründe
Bei der Ablehnung eines Urlaubsantrags ist ein Ablehnungsgrund erforderlich. Dieser Grund wird:
- Im Urlaubsantragsdatensatz gespeichert
- Dem Mitarbeiter in der Detailansicht seines Urlaubsantrags angezeigt
- In die E-Mail-Benachrichtigung über die Statusänderung aufgenommen
Administratoren können auch Admin-Notizen während der Genehmigung oder Ablehnung hinzufügen. Admin-Notizen sind nur für andere Administratoren sichtbar, niemals für den Mitarbeiter.
Einen Urlaubsantrag Stornieren
Mitarbeiter und Administratoren können Urlaubsanträge stornieren, die den Status Ausstehend oder Genehmigt haben. Die Stornierung stellt die verbrauchten oder reservierten Urlaubstage im Saldo des Mitarbeiters wieder her.
Wer Kann Stornieren
Die Stornierung erfordert die Berechtigung cancel leave requests. Standardmäßig haben Mitarbeiter diese Berechtigung und können ihre eigenen Anträge stornieren.
| Benutzer | Kann Eigene Stornieren | Kann Andere Stornieren |
|---|---|---|
| Mitarbeiter | Ja (mit Berechtigung) | Nein (Datenbeschränkung verhindert Einsicht anderer) |
| Administrator | Ja | Ja (wenn Berechtigung vorhanden) |
| Super Admin | Ja | Ja (umgeht alle Prüfungen) |
Wie Man Storniert
- Navigieren Sie zu Urlaubsanträge.
- Finden Sie den zu stornierenden Antrag (muss Ausstehend oder Genehmigt sein).
- Klicken Sie auf die Aktion Urlaub Stornieren (inline in der Aktionsspalte angezeigt).
- Bestätigen Sie die Stornierung.
Was Bei der Stornierung Passiert
Stornierung eines Ausstehenden Antrags
Vorher: pending_days = 5, used_days = 10, available_days = 3 Stornierung eines 2-tägigen ausstehenden Antrags Nachher: pending_days = 3, used_days = 10, available_days = 5
pending_daysnimmt um die Tage des Antrags abavailable_dayserhöht sich entsprechend- Der Antragsstatus wechselt zu Storniert
Stornierung eines Genehmigten Antrags
Vorher: pending_days = 3, used_days = 12, available_days = 3 Stornierung eines 2-tägigen genehmigten Antrags Nachher: pending_days = 3, used_days = 10, available_days = 5
used_daysnimmt um die Tage des Antrags abavailable_dayserhöht sich entsprechend- Der Antragsstatus wechselt zu Storniert
Einschränkungen
- Abgelehnte Anträge können nicht storniert werden (sie sind bereits abgeschlossen).
- Bereits stornierte Anträge können nicht erneut storniert werden.
- Die Stornieren-Schaltfläche erscheint nur für Anträge im Status Ausstehend oder Genehmigt.
Überschneidungsvalidierung
Das HRM-Modul verhindert, dass Mitarbeiter Urlaubsanträge einreichen, die sich mit ihren bestehenden genehmigten oder ausstehenden Anträgen überschneiden. Dies gewährleistet eine genaue Urlaubsverfolgung und verhindert Doppelbuchungen von Freizeit.
Wie Es Funktioniert
Wenn ein Urlaubsantrag erstellt oder aktualisiert wird, prüft das System auf überschneidende Datumsbereiche:
- Fragt alle Urlaubsanträge für denselben Mitarbeiter ab.
- Filtert nur auf genehmigte und ausstehende Anträge (abgelehnte und stornierte werden ignoriert).
- Schließt bei der Bearbeitung den aktuellen Antrag von der Prüfung aus.
- Testet auf Überschneidung mit der Formel:
existing_start <= new_end AND new_start <= existing_end.
Wenn eine Überschneidung gefunden wird, wird der Antrag mit einem Validierungsfehler abgelehnt.
Beispiele
Blockiert (Überschneidung)
| Bestehender Antrag | Neuer Antrag | Ergebnis |
|---|---|---|
| 10.–12. Jan (Genehmigt) | 11.–14. Jan | Blockiert — Überschneidung am 11.–12. Jan |
| 15.–15. Jan (Ausstehend) | 15.–15. Jan | Blockiert — exakt gleiches Datum |
| 1.–31. Jan (Genehmigt) | 10.–10. Jan | Blockiert — innerhalb des bestehenden Bereichs |
Erlaubt (Keine Überschneidung)
| Bestehender Antrag | Neuer Antrag | Ergebnis |
|---|---|---|
| 10.–12. Jan (Genehmigt) | 13.–15. Jan | Erlaubt — benachbart aber ohne Überschneidung |
| 10.–12. Jan (Abgelehnt) | 10.–12. Jan | Erlaubt — abgelehnte Anträge werden ignoriert |
| 10.–12. Jan (Storniert) | 10.–12. Jan | Erlaubt — stornierte Anträge werden ignoriert |
Typübergreifende Überschneidung
Die Überschneidungsvalidierung gilt für alle Urlaubstypen. Ein Mitarbeiter kann keine überschneidenden Jahresurlaub- und Krankheitsurlaub-Anträge haben — die Daten dürfen nicht in Konflikt stehen, unabhängig vom Urlaubstyp.
Urlaubsübertrag
Der Urlaubsübertrag ermöglicht es, nicht genutzte Urlaubstage eines Geschäftsjahres auf das nächste zu übertragen. Diese Funktion ist sowohl auf globaler Ebene (Einstellungen) als auch auf der Ebene des einzelnen Urlaubstyps konfigurierbar.
Wie der Übertrag Funktioniert
Am Ende jedes Geschäftsjahres verarbeitet das System den Übertrag für alle Mitarbeiter:
- Für den Urlaubssaldo jedes Mitarbeiters des endenden Jahres:
- Prüft, ob der Urlaubstyp Übertrag aktiviert hat.
- Berechnet ungenutzte Tage:
total_days - used_days - pending_days. - Wendet die Übertragsobergrenze an (der kleinere Wert aus den Max. Übertragstagen des Urlaubstyps und der globalen Einstellung Max. Übertragstage).
- Erstellt oder aktualisiert den Urlaubssaldo des nächsten Jahres mit den Übertragenen Tagen.
- Übertragene Tage haben ein Ablaufdatum basierend auf der Einstellung Übertragsablauf.
Konfiguration
Globale Einstellungen
Navigieren Sie zu Einstellungen > HRM-Konfiguration > Urlaubsverwaltung:
| Einstellung | Standard | Beschreibung |
|---|---|---|
| Übertrag Aktiviert | Ja | Hauptschalter für die Übertragsfunktion |
| Max. Übertragstage | 10 | Globale Obergrenze für übertragene Tage über alle Urlaubstypen |
| Übertragsablauf (Monate) | 3 | Übertragene Tage verfallen nach dieser Anzahl Monaten im neuen Geschäftsjahr |
Einstellungen pro Urlaubstyp
Jeder Urlaubstyp hat seine eigene Übertragskonfiguration:
| Feld | Beschreibung |
|---|---|
| Übertrag | Übertrag für diesen spezifischen Urlaubstyp aktivieren/deaktivieren |
| Max. Übertragstage | Maximale Tage, die für diesen Typ übertragen werden können |
Die effektive Übertragsobergrenze ist der kleinere Wert aus der Urlaubstyp-Grenze und der globalen Grenze.
Beispiel: Der Urlaubstyp erlaubt 10 Tage Übertrag, aber das globale Maximum ist 5. Nur 5 Tage werden übertragen.
Übertragsverarbeitung
Der Übertrag wird automatisch über einen geplanten Befehl verarbeitet, der am ersten Tag des Geschäftsjahres-Startmonats ausgeführt wird:
php artisan hrm:process-leave-carryover
Übertragsablauf
Übertragene Tage sind nicht permanent — sie verfallen nach einem konfigurierbaren Zeitraum. Nach dem Ablauf werden sie nicht mehr im verfügbaren Saldo gezählt.