@extends('layouts.app') @section('title','Payroll run') @section('content') Payroll workspace
@foreach(['gross_cents'=>'Gross earnings','deduction_cents'=>'Deductions','net_cents'=>'Net payable'] as $key=>$label)
{{ $label }}{{ \App\Domain\Payroll\Money::format($run->$key) }}{{ $run->currency }} · Reconciled in minor units
@endforeach

Calculation policy

{{ $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 reconciliation

@php($uiRows1=\App\Support\ListView::rows($run->items()->with('employee')->paginateList(20, ['*'], 'payroll_items_page'),'payroll_items'))
@foreach($uiRows1 as $item)@endforeach
EmployeeGrossDeductionsNetPayslip
{{ $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' }}

Approval & release

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')
@csrf
@elseif(in_array($run->status,['pending','approved']))
@csrf@if($run->status==='approved')@endif
@endif @endcan @can('payroll.approve')@if($run->status==='pending')
@csrf@endif @endcan @if($run->approval_note)

{{ $run->approval_note }} · Approver #{{ $run->approved_by }}

@endif @can('payroll.export')@if($run->status==='released')Generate validated-profile SIF

Requires 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
@endsection