From 1170e59e4926fbd05ecfbc1072ea036dc821f603 Mon Sep 17 00:00:00 2001 From: patrick Date: Mon, 25 May 2026 00:22:39 +0200 Subject: [PATCH] fix: AuditLog bei FZA-Stornierung mit korrektem old_status und fza_hours_refunded-Flag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - old_value enthält den tatsächlichen Status vor der Stornierung (pending/approved) - new_value enthält cancelled_by_name für bessere Lesbarkeit - fza_hours_refunded: true wird gesetzt wenn ein genehmigter FZA storniert wurde Co-Authored-By: Claude Sonnet 4.6 --- backend/app/services/absence_service.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 {}), }, ))