@extends('layouts.user') @section('title', __('payrolls.payroll_details')) @section('page_title', __('payrolls.payroll_details')) @section('breadcrumb', __('payrolls.hr_payroll_short')) @section('content') @php $monthName = \Carbon\Carbon::createFromDate($payroll->payroll_year, $payroll->payroll_month, 1)->format('F'); $totalBasic = $payroll->items->sum(function ($item) { return (float) $item->gross_salary - (float) $item->overtime_amount; }); $totalDeduction = $payroll->items->sum('deduction_amount'); $totalOvertime = $payroll->items->sum('overtime_amount'); $totalGross = $payroll->items->sum('gross_salary'); $totalAdvance = $payroll->items->sum('advance_adjusted'); $totalNet = $payroll->items->sum('net_salary'); $totalPaid = $payroll->items->sum('paid_amount'); $totalDue = $payroll->items->sum('due_amount'); $statusClass = match ($payroll->status) { 'draft' => 'bg-amber-100 text-amber-700 border-amber-200', 'finalized' => 'bg-indigo-100 text-indigo-700 border-indigo-200', 'paid_partial' => 'bg-sky-100 text-sky-700 border-sky-200', 'paid_full' => 'bg-emerald-100 text-emerald-700 border-emerald-200', default => 'bg-slate-100 text-slate-700 border-slate-200', }; @endphp
{{-- Header --}}

{{ __('payrolls.payroll_details') }}

{{ $monthName }} {{ $payroll->payroll_year }} {{ __('payrolls.payroll') }}

{{ __('payrolls.payroll_date_label') }}: {{ \Carbon\Carbon::parse($payroll->payroll_date)->format('d M, Y') }} {{ __('payrolls.employees') }}: {{ $payroll->items->count() }}
{{ match ($payroll->status) { 'draft' => __('payrolls.draft'), 'finalized' => __('payrolls.finalized'), 'paid_partial' => __('payrolls.paid_partial'), 'paid_full' => __('payrolls.paid_full'), default => ucwords(str_replace('_', ' ', $payroll->status)), } }} ← {{ __('payrolls.back') }}
{{ __('payrolls.basic') }}
৳{{ number_format($totalBasic, 2) }}
{{ __('payrolls.deduction') }}
৳{{ number_format($totalDeduction, 2) }}
{{ __('payrolls.overtime') }}
৳{{ number_format($totalOvertime, 2) }}
{{ __('payrolls.gross') }}
৳{{ number_format($totalGross, 2) }}
{{ __('payrolls.advance') }}
৳{{ number_format($totalAdvance, 2) }}
{{ __('payrolls.paid') }}
৳{{ number_format($totalPaid, 2) }}
{{ __('payrolls.due') }}
৳{{ number_format($totalDue, 2) }}
{{-- Action bar --}}

{{ __('payrolls.generated_payroll_items') }}

@if($payroll->status === 'draft')
@csrf
@endif @if(in_array($payroll->status, ['draft', 'finalized']))
@csrf @method('DELETE')
@endif
{{-- Employee cards --}} @if($payroll->items->count())
@foreach($payroll->items as $item) @php $basicAmount = (float) $item->gross_salary - (float) $item->overtime_amount; $isMonthly = $item->employee_type === 'monthly'; $isDailyRoz = $item->employee_type === 'daily_roz'; $typeLabel = $isMonthly ? __('payrolls.monthly') : __('payrolls.daily_roz'); $canPay = in_array($payroll->status, ['finalized', 'paid_partial']) && (float) $item->due_amount > 0; $attendanceLeftCount = 2 + ($isMonthly ? 1 : 0); $attendanceRightHasValue = $isMonthly || $isDailyRoz; @endphp

{{ $item->employee->name ?? __('payrolls.deleted_employee') }}

{{ $item->employee->employee_code ?? __('payrolls.no_code') }}
@if(!empty($item->employee?->department?->name))
{{ $item->employee->department->name }}
@endif
{{ $typeLabel }}
{{-- Attendance --}}
{{ __('payrolls.attendance') }}
{{ __('payrolls.present') }} {{ number_format($item->total_present_days, 0) }}
{{ __('payrolls.absent') }} {{ number_format($item->total_absent_days, 0) }}
@if($isMonthly)
{{ __('payrolls.leave') }} {{ number_format($item->total_leave_days, 0) }}
@endif
{{ __('payrolls.holiday') }} {{ number_format($item->total_holiday_days, 0) }}
@if($isMonthly)
{{ __('payrolls.ot_hours') }} {{ number_format($item->total_overtime_hours, 2) }}
@endif @if($isDailyRoz)
{{ __('payrolls.roz') }} {{ number_format($item->total_roz, 2) }}
@endif @if(!$attendanceRightHasValue)
.
@endif @if($isDailyRoz && $attendanceLeftCount > 2)
.
@endif
{{-- Rates --}}
{{ __('payrolls.rates') }}
@if($isMonthly)
{{ __('payrolls.monthly_rate') }} ৳{{ number_format($item->rate_monthly_salary, 2) }}
@elseif($isDailyRoz)
{{ __('payrolls.per_roz') }} ৳{{ number_format($item->rate_per_roz, 2) }}
@endif
@if($isMonthly)
{{ __('payrolls.ot_rate') }} ৳{{ number_format($item->rate_overtime_rate, 2) }}
@else
.
@endif
{{-- Salary --}}
{{ __('payrolls.salary') }}
{{ __('payrolls.basic') }} ৳{{ number_format($basicAmount, 2) }}
{{ __('payrolls.deduction') }} ৳{{ number_format($item->deduction_amount, 2) }}
{{ __('payrolls.overtime') }} ৳{{ number_format($item->overtime_amount, 2) }}
{{ __('payrolls.gross') }} ৳{{ number_format($item->gross_salary, 2) }}
{{ __('payrolls.advance') }} ৳{{ number_format($item->advance_adjusted, 2) }}
{{ __('payrolls.paid') }} ৳{{ number_format($item->paid_amount, 2) }}
{{ __('payrolls.net_salary') }} ৳{{ number_format($item->net_salary, 2) }}
{{ __('payrolls.due') }} ৳{{ number_format($item->due_amount, 2) }}
{{-- Action --}}
@if($canPay) {{ __('payrolls.pay') }} @elseif((float) $item->due_amount <= 0) {{ __('payrolls.paid_status') }} @else {{ __('payrolls.locked') }} @endif
@endforeach
@else
📄

{{ __('payrolls.no_payroll_items_found') }}

{{ __('payrolls.no_generated_employee_salary_item') }}

@endif {{-- Bottom area --}}

{{ __('payrolls.payroll_payments') }}

{{ __('payrolls.payroll_payments_note') }}

@if($payroll->payments->count()) @foreach($payroll->payments as $payment) @php $payrollItem = $payroll->items->firstWhere('employee_id', $payment->employee_id); @endphp @endforeach
{{ __('payrolls.employee') }} {{ __('payrolls.date') }} {{ __('payrolls.method') }} {{ __('payrolls.reference') }} {{ __('payrolls.note') }} {{ __('payrolls.amount') }} {{ __('payrolls.action') }}
{{ $payment->employee->name ?? __('payrolls.na') }} {{ \Carbon\Carbon::parse($payment->payment_date)->format('d M, Y') }} {{ $payment->payment_method ?? '—' }} {{ $payment->reference_no ?? '—' }} {{ $payment->note ?? '—' }} ৳{{ number_format((float) $payment->amount, 2) }}
@if($payrollItem) {{ __('payrolls.payslip') }} @else {{ __('payrolls.na') }} @endif
@else
{{ __('payrolls.no_payroll_payment_found') }}
@endif

{{ __('payrolls.summary') }}

{{ __('payrolls.employees') }} {{ $payroll->items->count() }}
{{ __('payrolls.total_deduction') }} ৳{{ number_format($totalDeduction, 2) }}
{{ __('payrolls.total_overtime') }} ৳{{ number_format($totalOvertime, 2) }}
{{ __('payrolls.advance_adjusted') }} ৳{{ number_format($totalAdvance, 2) }}
{{ __('payrolls.net_salary') }} ৳{{ number_format($totalNet, 2) }}
{{ __('payrolls.paid_amount') }} ৳{{ number_format($totalPaid, 2) }}
{{ __('payrolls.due_amount') }} ৳{{ number_format($totalDue, 2) }}

{{ __('payrolls.status_note') }}

{{ __('payrolls.status_note_text') }}

@endsection