From 68dbf494c535c1014e3b6ad746c19bde63205993 Mon Sep 17 00:00:00 2001 From: admin Date: Tue, 28 Apr 2026 18:03:37 +0800 Subject: [PATCH] fix(hr): robust HD detection and added debug logs --- .../AttendanceRecordController.php | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/AttendanceRecordController.php b/app/Http/Controllers/AttendanceRecordController.php index ff47ffdb5..7132722d3 100644 --- a/app/Http/Controllers/AttendanceRecordController.php +++ b/app/Http/Controllers/AttendanceRecordController.php @@ -925,11 +925,22 @@ class AttendanceRecordController extends Controller ]; $shift = $user->employee->shift ?? null; - $workingHours = $shift ? $shift->working_hours : 8; - $shiftStart = $shift ? \Carbon\Carbon::parse($shift->start_time)->format('H:i') : null; - $shiftEnd = $shift ? \Carbon\Carbon::parse($shift->end_time)->format('H:i') : null; - $clockInTime = $record->clock_in ? \Carbon\Carbon::parse($record->clock_in)->format('H:i') : null; - $clockOutTime = $record->clock_out ? \Carbon\Carbon::parse($record->clock_out)->format('H:i') : null; + $workingHours = $shift ? (float)$shift->working_hours : 8.0; + $shiftStartStr = $shift ? \Carbon\Carbon::parse($shift->start_time)->format('H:i') : null; + $shiftEndStr = $shift ? \Carbon\Carbon::parse($shift->end_time)->format('H:i') : null; + $clockInStr = $record->clock_in ? \Carbon\Carbon::parse($record->clock_in)->format('H:i') : null; + $clockOutStr = $record->clock_out ? \Carbon\Carbon::parse($record->clock_out)->format('H:i') : null; + + if ($user->id == 10 && ($dateKey == '2026-04-04' || $dateKey == '2026-04-05')) { + \Log::info("Calendar Debug Dinh Chavez {$dateKey}:", [ + 'workedHours' => $workedHours, + 'workingHours' => $workingHours, + 'shiftStart' => $shiftStartStr, + 'clockIn' => $clockInStr, + 'is_late' => $record->is_late, + 'db_status' => $record->status + ]); + } if ($record->is_rest_day) { $status = 'RD'; @@ -943,14 +954,14 @@ class AttendanceRecordController extends Controller } else if ($record->status === 'absent') { $status = 'A'; $label = 'Absent'; - } else if ($record->status === 'half_day' || ($workingHours > 0 && $workedHours > 0 && $workedHours < ($workingHours * 0.85))) { - // Using 85% threshold to be safe + } else if ($record->status === 'half_day' || ($workingHours > 0 && $workedHours > 0 && $workedHours < ($workingHours * 0.9))) { + // Using 90% threshold for Half Day $status = 'H'; $label = 'Half Day'; - } else if ($record->is_late || ($shiftStart && $clockInTime && $clockInTime > $shiftStart)) { + } else if ($record->is_late || ($shiftStartStr && $clockInStr && $clockInStr > $shiftStartStr)) { $status = 'L'; $label = 'Late'; - } else if ($record->is_early_departure || ($shiftEnd && $clockOutTime && $clockOutTime < $shiftEnd)) { + } else if ($record->is_early_departure || ($shiftEndStr && $clockOutStr && $clockOutStr < $shiftEndStr)) { $status = 'E'; $label = 'Early Checkout'; } else if ($record->overtime_hours > 0) {