@can('hrm.staff.view') Staff directory @endcan @can('hrm.attendance.view') @if (Route::has('hr.attendance.index')) Attendance @endif @endcan @can('hrm.self') @if (Route::has('hr.self.index')) My HR @endif @endcan
Supervisor-approved requests still need HR sign-off; new requests wait on their supervisor. @if ($pendingLeave->isEmpty()) Every leave request has been decided. @else
@foreach ($pendingLeave as $leave) @endforeach
Staff Type Period Days Status
{{ $leave->user?->name ?? '—' }} {{ $leave->user?->employee_no }} {{ $leave->leaveType?->name }} {{ $leave->start_date?->format('d M') }} – {{ $leave->end_date?->format('d M Y') }} {{ rtrim(rtrim((string) $leave->days, '0'), '.') }}
@endif
Fixed-term contracts ending within 60 days — renew, convert or close them. @if ($expiringContracts->isEmpty()) Nothing fixed-term expires in the next two months. @else
@foreach ($expiringContracts as $contract) @endforeach
Staff Contract Ends Salary Action
{{ $contract->user?->name ?? '—' }} {{ $contract->user?->employee_no }} {{ $contract->title }} {{ $contract->contract_no }} {{ $contract->end_date?->format('d M Y') }} {{ $contract->end_date?->diffForHumans() }} {{ money($contract->basic_salary, false) }} Open file
@endif
Inductions, policy acknowledgements and equipment handovers not yet cleared. @if ($onboarding->isEmpty()) No onboarding task is outstanding. @else
    @foreach ($onboarding as $task)
  • {{ $task->title }}

    {{ $task->user?->name ?? '—' }} @if ($task->user?->employee_no) · {{ $task->user->employee_no }} @endif

    @if ($task->due_date) Due {{ $task->due_date->format('d M') }} @endif @can('hrm.onboarding.manage') @if (Route::has('hr.checklists.index')) Open list @endif @endcan
  • @endforeach
@endif
@if ($vacancies->isEmpty()) Recruitment is idle — open a post when a role needs filling. @else
    @foreach ($vacancies as $vacancy)
  • {{ $vacancy->title }}

    {{ $vacancy->vacancy_no }} · {{ $vacancy->applicants_count }} applicant{{ $vacancy->applicants_count === 1 ? '' : 's' }}

    @if ($vacancy->closes_at)

    Closes {{ $vacancy->closes_at->format('d M Y') }}

    @endif
  • @endforeach
@endif
@if (! $latestRun) @else
Employees {{ number_format($latestRun->employee_count) }}
Gross / net {{ money($latestRun->gross_total, false) }} / {{ money($latestRun->net_total, false) }}
@if ((float) $latestRun->employer_nssf + (float) $latestRun->employer_housing + (float) $latestRun->nita_levy > 0)
Employer statutory {{ money((float) $latestRun->employer_nssf + (float) $latestRun->employer_housing + (float) $latestRun->nita_levy, false) }}
@endif
@endif
@can('hrm.staff.view') Staff directory @endcan @can('payroll.view') Payroll runs @endcan @can('hrm.loans.view') @if (Route::has('hr.loans.index')) Loans & advances @endif @endcan @can('hrm.claims.view') @if (Route::has('hr.claims.index')) Staff claims @endif @endcan