@extends('layouts.app')
@section('title','Payroll run')
@section('content')
{{ $run->policy->name }} · Effective {{ $run->policy->effective_on->toDateString() }} · Monthly hours divisor {{ $run->policy->monthly_hours }} · Overtime {{ number_format($run->policy->overtime_basis_points/10000,4) }}× · Absence basis {{ $run->policy->absence_basis }} · Attendance {{ $run->policy->attendance_required?'required':'optional' }}
{{ $run->policy->jurisdiction_note }}
Configured pension: {{ number_format(($run->policy->rules['pension_basis_points']??0)/100,2) }}%
@foreach($run->policy->rules['tax_bands']??[] as $band)Monthly tax band from {{ \App\Domain\Payroll\Money::format($band['threshold_cents']) }}: {{ number_format($band['rate']/100,2) }}%
@endforeach| Employee | Gross | Deductions | Net | Payslip |
|---|---|---|---|---|
| {{ $item->snapshot['employee_number'] }} · {{ $item->snapshot['employee_name'] }} | {{ \App\Domain\Payroll\Money::format($item->gross_cents) }} | {{ \App\Domain\Payroll\Money::format($item->deduction_cents) }} | {{ \App\Domain\Payroll\Money::format($item->net_cents) }} | {{ $run->status==='released'?'Released payslip':'Review draft' }} |
A different authorized user must approve this run. Source data is hashed and checked again before approval and release. Release publishes payslips and consumes approved requests; it does not transfer money.
@can('payroll.manage')@if($run->status==='draft')@elseif(in_array($run->status,['pending','approved']))@endif @endcan @can('payroll.approve')@if($run->status==='pending')@endif @endcan @if($run->approval_note){{ $run->approval_note }} · Approver #{{ $run->approved_by }}
@endif @can('payroll.export')@if($run->status==='released')Generate validated-profile SIFRequires an independently approved bank-format profile, scanned validation evidence and bank details included in the released snapshot. Final acceptance and submission remain with your bank/agent.
@endif @endcan