Mitarbeiter — Zeiterfassungen (Sub-Route)
Zweck
Sub-Route /employees/:id/employee-time-trackings zeigt alle Zeit-Einträge des Mitarbeiters chronologisch — mit Verweis auf Zeitart und ggf. den Workorder, für den die Zeit erfasst wurde. Aggregation und Soll/Ist-Vergleich liegt in Time-Overview.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Employee, Employee, FE_EmployeeTimeTracking, EmployeeTimeTracking | Liste sichtbar | — |
create | EmployeeTimeTracking | Erfassen | APP_SPEAMCORE_CREATE_EMPLOYEE_TIME_TRACKING |
Schritt-für-Schritt-Anleitung
- Mitarbeiter (
/employees/:id) → Tab Zeiten. - + Zeit → Datum, Beginn, Ende, Zeitart wählen.
- Optional Workorder verknuepfen, falls die Zeit auftragsbezogen ist.
![]()
Inline-Row-Editing
Identisch zum Pattern in Auftrag-Arbeitszeit — neue Zeile, Spalten Mitarbeiter (vorbefuellt), Service, Zeiterfassungstyp, Abrechenbar, Start/Ende, Dauer, Kommentar. Tab-Navigation speichert pro Zelle.
Filter-Default: Liste zeigt nur Einträge des aktuellen Monats mit employeeId = :id. Filter erlaubt Wechsel auf andere Monate, Zeiterfassungstyp, abrechenbar/nicht-abrechenbar.
Aggregation am Listenende: Wochen-/Monatssummen pro Zeiterfassungstyp werden im Footer der DataGrid angezeigt — schnelle Plausibilitaetspruefung der Lohnabrechnung.
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Mitarbeiter — Eltern-Modul.
- Zeiterfassungen — globale Sicht.
- Mitarbeiter-Zeitarten — Klassifikation.
- Time-Overview — Soll/Ist-Auswertung.
- Workorders — Arbeitszeiten — alternative Erfassungs-Sicht im Auftragskontext.
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/employee-time-trackings?filter[employeeId] | Liste | view EmployeeTimeTracking |
POST | /api/employee-time-trackings | Erfassen | create EmployeeTimeTracking |
UI — RefLink-Spalte (Welle 132)
Wie in der globalen Zeiterfassungs-Liste zeigt jede Zeile in der Actions-Spalte ein Sprung-zum-Kontext-Icon (FiExternalLink):
parentType = Workorder→ öffnet/workorders/:id(CASLview:Workorder)parentType = Employee→ öffnet/employees/:id(view:Employee)
So lässt sich aus der Mitarbeiter-Sub-Liste in einem Klick zum Workorder springen, dem die Zeit zugeordnet wurde.
Versionshinweise
- 2026-04-30: Initiale Veröffentlichung.
- 2026-05-20 (Welle 132): Actions-Spalte mit RefLink-Icon zum verknüpften Parent ergänzt — analog zur globalen Zeiterfassungs-Liste. Quelle: FE-Commit
3da01a80.