@extends('layouts.app') @section('title', 'Staff Payroll') @section('styles') @endsection @section('content') @include('hr.partials.ft-staff-tabs', ['active' => 'payroll-runs']) {{-- Action Tabs (2) --}}
Statutory Remittances
{{-- ═══════════ PAYROLL TAB (Overview + Runs + Generate merged) ═══════════ --}}
{{-- Generate New Run — full width. Outstanding Remittances tile removed; the same data is one click away on the Statutory Remittances tab. --}}

Generate Monthly Payroll

@csrf
{{-- All Runs Table --}}

Payroll Runs

{{ $runs->count() }} run(s)
@forelse($runs as $r) @empty @endforelse
Run No. Month Status Staff Gross PAYE Net Employer Cost Prepared By
{{ $r->run_number }} {{ $r->month_label }}@if($r->is_revision) Revision@endif {{ $r->status }} {{ $r->employee_count }} {{ number_format($r->total_gross) }} {{ number_format($r->total_paye) }} {{ number_format($r->total_net) }} {{ number_format($r->total_employer_cost) }} {{ $r->preparedBy->name ?? '-' }} View →
No payroll runs yet. Use the form above to generate the first one.
{{-- ═══════════ STAFF PAYROLL PROFILES TAB ═══════════ --}}

Staff Payroll Profiles

@foreach(\App\Models\StaffRecord::with('department')->where('status','active')->orderBy('first_name')->get() as $s) @php $errs = \App\Services\PayrollCalculator::validateStaff($s); @endphp @endforeach
Employee No. Name Department Designation Basic Salary Status
{{ $s->employee_number }} {{ $s->full_name }} {{ $s->department->name ?? '-' }} {{ $s->designation ?? '-' }} {{ number_format($s->salary) }} @if(empty($errs)) Payable @else Blocked @endif View Profile Edit Profile →
@endsection