diff --git a/backend/app/services/absence_service.py b/backend/app/services/absence_service.py index b2c6a11..c34c4e8 100644 --- a/backend/app/services/absence_service.py +++ b/backend/app/services/absence_service.py @@ -300,6 +300,7 @@ class AbsenceService: raise HTTPException(status_code=404, detail="Abwesenheit nicht gefunden.") is_admin = current_user.role in (UserRole.HR, UserRole.COMPANY_ADMIN, UserRole.SUPER_ADMIN) + original_status = absence.status # vor Änderung merken if absence.user_id != current_user.id and not is_admin: raise HTTPException(status_code=403, detail="Nur eigene Anträge können storniert werden.") @@ -329,14 +330,16 @@ class AbsenceService: action="absence_cancelled", entity_type="absence", entity_id=absence.id, - old_value={"status": "pending"}, + old_value={"status": original_status.value}, new_value={ "status": "cancelled", "cancelled_by": str(current_user.id), + "cancelled_by_name": current_user.full_name, "absence_user_id": str(absence.user_id), "start_date": str(absence.start_date), "end_date": str(absence.end_date), "working_days": float(absence.working_days), + **({"fza_hours_refunded": True} if original_status == AbsenceStatus.APPROVED else {}), }, ))