fix(hr): robust HD detection and added debug logs
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user