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.")
|
raise HTTPException(status_code=404, detail="Abwesenheit nicht gefunden.")
|
||||||
|
|
||||||
is_admin = current_user.role in (UserRole.HR, UserRole.COMPANY_ADMIN, UserRole.SUPER_ADMIN)
|
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:
|
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.")
|
raise HTTPException(status_code=403, detail="Nur eigene Anträge können storniert werden.")
|
||||||
@@ -329,14 +330,16 @@ class AbsenceService:
|
|||||||
action="absence_cancelled",
|
action="absence_cancelled",
|
||||||
entity_type="absence",
|
entity_type="absence",
|
||||||
entity_id=absence.id,
|
entity_id=absence.id,
|
||||||
old_value={"status": "pending"},
|
old_value={"status": original_status.value},
|
||||||
new_value={
|
new_value={
|
||||||
"status": "cancelled",
|
"status": "cancelled",
|
||||||
"cancelled_by": str(current_user.id),
|
"cancelled_by": str(current_user.id),
|
||||||
|
"cancelled_by_name": current_user.full_name,
|
||||||
"absence_user_id": str(absence.user_id),
|
"absence_user_id": str(absence.user_id),
|
||||||
"start_date": str(absence.start_date),
|
"start_date": str(absence.start_date),
|
||||||
"end_date": str(absence.end_date),
|
"end_date": str(absence.end_date),
|
||||||
"working_days": float(absence.working_days),
|
"working_days": float(absence.working_days),
|
||||||
|
**({"fza_hours_refunded": True} if original_status == AbsenceStatus.APPROVED else {}),
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user