@extends('layouts.app') @section('title','Payroll Batch') @section('page-title','Daily Labour Payroll') @section('content') @php $m = $payroll->status_meta; @endphp
All Payrolls {{ $m['label'] }}
{{-- Batch Header --}}
{{ $payroll->batch_number }}
{{ $payroll->work_date->format('l, d F Y') }}
{{ $payroll->project->name }}
{{ $payroll->submission_notes }}
Workers
{{ $payroll->worker_count }}
Total Due
GH₵ {{ number_format($payroll->total_amount,2) }}
@if($payroll->status==='paid')
PAID on {{ $payroll->payment_date?->format('d M Y') }}
@endif
{{-- LEFT: Worker Entries --}}
Workers @if(in_array($payroll->status,['draft','supervisor_rejected','pm_rejected'])) Edit @endif
@foreach($payroll->entries as $i => $e) @endforeach
#NameRoleAttendanceRateAmount DuePaid?
{{ $i+1 }} {{ $e->worker_name }} {{ $e->role }} {{ \App\Models\PayrollEntry::ATTENDANCE_LABEL[$e->attendance] ?? $e->attendance }} {{ number_format($e->daily_rate,2) }} GH₵ {{ number_format($e->amount_due,2) }} @if($e->is_paid)@else@endif
TOTAL GH₵ {{ number_format($payroll->total_amount,2) }}
{{-- RIGHT: Workflow + Action Panels --}}
{{-- Workflow timeline --}}
Approval Chain
@php $steps=[ ['label'=>'Inventory Officer Captured','done'=>true,'by'=>$payroll->submitter?->name,'at'=>$payroll->created_at,'color'=>'success'], ['label'=>'Submitted to Supervisor','done'=>$payroll->submitted_at!=null,'by'=>$payroll->submitter?->name,'at'=>$payroll->submitted_at,'color'=>'info'], ['label'=>'Supervisor Validated','done'=>in_array($payroll->status,['pending_pm','pm_approved','pm_rejected','pending_ceo','ceo_approved','ceo_rejected','paid']),'by'=>$payroll->supervisor?->name,'at'=>$payroll->supervisor_at,'note'=>$payroll->supervisor_notes,'color'=>'info','rejected'=>$payroll->status==='supervisor_rejected'], ['label'=>'Project Manager Approved','done'=>in_array($payroll->status,['pending_ceo','ceo_approved','ceo_rejected','paid']),'by'=>$payroll->pm?->name,'at'=>$payroll->pm_at,'note'=>$payroll->pm_notes,'color'=>'primary','rejected'=>$payroll->status==='pm_rejected'], ['label'=>'CEO Approved Payment','done'=>in_array($payroll->status,['ceo_approved','paid']),'by'=>$payroll->ceo?->name,'at'=>$payroll->ceo_at,'note'=>$payroll->ceo_notes,'color'=>'success','rejected'=>$payroll->status==='ceo_rejected'], ['label'=>'Payment Disbursed','done'=>$payroll->status==='paid','by'=>$payroll->paidByUser?->name,'at'=>$payroll->paid_at,'note'=>$payroll->payment_mode.' — '.$payroll->payment_notes,'color'=>'success'], ]; @endphp
@foreach($steps as $step) @php $rej=$step['rejected']??false; @endphp
@if($step['done'] && !$rej)@elseif($rej)@else@endif
@if(!$loop->last)
@endif
{{ $step['label'] }}
@if($step['done']&&isset($step['by'])&&$step['by'])
{{ $step['by'] }}@if(isset($step['at'])&&$step['at']) · {{ $step['at']->format('d M, H:i') }}@endif
@endif @if(isset($step['note'])&&$step['note'])
{{ $step['note'] }}
@endif
@endforeach
{{-- ACTION PANELS --}} {{-- Draft: Inventory officer submits --}} @if(in_array($payroll->status,['draft','supervisor_rejected','pm_rejected']) && auth()->user()->hasAnyRole(['store_keeper','super_admin']))
Submit for Supervisor Validation

Review the entries above, then submit to Site Supervisor for validation.

@csrf
@endif {{-- Supervisor validates --}} @if($payroll->status==='pending_supervisor' && auth()->user()->hasAnyRole(['site_supervisor','super_admin']))
Site Supervisor — Validate

Confirm all workers and amounts are correct for {{ $payroll->work_date->format('d M Y') }}.

@csrf @method('PATCH')
@csrf @method('PATCH')
@endif {{-- Project Manager approves --}} @if($payroll->status==='pending_pm' && auth()->user()->hasAnyRole(['project_manager','super_admin']))
Project Manager — Approve & Request Payment
GH₵ {{ number_format($payroll->total_amount,2) }} for {{ $payroll->worker_count }} workers — validated by Supervisor.
@csrf @method('PATCH')
@csrf @method('PATCH')
@endif {{-- CEO approves payment --}} @if($payroll->status==='pending_ceo' && auth()->user()->hasAnyRole(['ceo','super_admin']))
CEO — Approve Payment
PM requesting payment of GH₵ {{ number_format($payroll->total_amount,2) }} for {{ $payroll->worker_count }} daily workers.
@if($payroll->pm_notes)

PM Notes: {{ $payroll->pm_notes }}

@endif
@csrf @method('PATCH')
@csrf @method('PATCH')
@endif {{-- Inventory Officer records payment + receipt --}} @if($payroll->status==='ceo_approved' && auth()->user()->hasAnyRole(['store_keeper','super_admin']))
Disburse Payment & Upload Receipt
CEO approved. Pay GH₵ {{ number_format($payroll->total_amount,2) }} and upload the payment receipt.
@csrf
@endif {{-- Receipt link after paid --}} @if($payroll->status==='paid' && $payroll->payment_receipt)
Payroll Complete
Paid on {{ $payroll->payment_date?->format('d M Y') }} via {{ $payroll->payment_mode }}
View Payment Receipt
@endif
{{-- /col-md-5 --}}
{{-- /row --}} @endsection