fix: AuditLog bei FZA-Stornierung mit korrektem old_status und fza_hours_refunded-Flag
- 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 <noreply@anthropic.com>
This commit is contained in:
@@ -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 {}),
|
||||
},
|
||||
))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user