@extends('layouts.app') @section('title','Attendance & roster') @section('content')

Attendance register

@php($uiRows1=\App\Support\ListView::rows($entries,'attendance_entries'))
@forelse($uiRows1 as $entry)@empty@endforelse
EmployeeWork dateIn / out (company time)Minutes / approved OTStatus
{{ $entry->employee->employee_number }} · {{ $entry->employee->full_name }}{{ $entry->work_date->toDateString() }}{{ $entry->clock_in?->timezone(\App\Domain\Operations\Operations::timezone())->format('d M H:i') }} / {{ $entry->clock_out?->timezone(\App\Domain\Operations\Operations::timezone())->format('d M H:i') }}{{ $entry->worked_minutes }} / {{ $entry->approved_overtime_minutes }}{{ $entry->status }}
{{ $entry->source }}
No attendance records in this month.
@can('attendance.manage')

Verify attendance or absence

@csrf

Shift templates & roster

@foreach($shifts as $s){{ $s->name }} · {{ $s->starts_at }}–{{ $s->ends_at }} · {{ $s->break_minutes }}m break@endforeach
Create a shift template
@csrf

Working weekdays

@foreach(['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] as $i=>$day)@endforeach
@csrf
View roster@php($uiRows2=\App\Support\ListView::rows($rosters,'work_rosters'))
@foreach($uiRows2 as $r)@endforeach
DateEmployeeShift
{{ $r->work_date->toDateString() }}{{ $r->employee->full_name }}{{ $r->shift->name }}

Holidays & device import

Company holidays exclude scheduled leave days. Add holidays before submitting leave. Biometric CSV imports require operator review; import grants no overtime automatically.

@csrf
@foreach($holidays as $h){{ $h->name }} · {{ $h->work_date->toDateString() }}@endforeach
@csrf

Header: employee_number,work_date,clock_in,clock_out. Times: YYYY-MM-DDTHH:MM in company time. Maximum 1,000 rows; the entire import rolls back on an invalid row.

@endcan @endsection