{{-- resources/views/payroll/employee-payrolls.blade.php --}} @extends('layouts.app') @section('content')

{{ __('payroll.employee_payrolls.page_title', ['name' => $employee->name]) }}

{{ __('payroll.create.employee_info') }}

{{ __('payroll.create.employee_number') }} {{ $employee->employee_id }}

{{ __('payroll.create.department') }} {{ $employee->department?->name ?? __('payroll.not_available') }}

{{ __('payroll.create.position') }} {{ $employee->position?->name ?? __('payroll.not_available') }}

{{ __('payroll.create.basic_salary') }} {{ number_format($employee->salary, 2) }} {{ get_currency_code() }}

{{ __('payroll.create.incentives') }} {{ number_format($employee->incentives, 2) }} {{ get_currency_code() }}

@php // احسب مجموع المكونات الإضافية من العلاقة وفي الحقول الثابتة (component_1..component_7) $relComponents = $employee->relationLoaded('salaryComponents') ? $employee->salaryComponents->sum(fn($c) => (float) ($c->pivot->value ?? 0)) : (float) ($employee->salaryComponents()->sum('employee_salary_components.value') ?? 0); $fixedComponents = 0; for ($i = 1; $i <= 7; $i++) { $fixedComponents += (float) ($employee->{"component_$i"} ?? 0); } $componentsTotalEmployee = $relComponents + $fixedComponents; $employeeTotalSalary = ($employee->salary ?? 0) + ($employee->incentives ?? 0) + $componentsTotalEmployee; @endphp

{{ __('payroll.create.additional_components_total', [], null) ?: 'مجموع المكونات الإضافية' }} {{ number_format($componentsTotalEmployee, 2) }} {{ get_currency_code() }}

{{ __('payroll.create.total_salary_combined', [], null) ?: 'إجمالي الراتب (الأساسي + الحوافز + المكونات)' }} {{ number_format($employeeTotalSalary, 2) }} {{ get_currency_code() }}

{{ __('payroll.create.leave_balance') }} {{ $employee->getAvailableBalanceAttribute() }} {{ __('payroll.employee_payrolls.days') }}

{{ __('payroll.employee_payrolls_page.all_payrolls', ['name' => $employee->name]) }}
{{ __('payroll.employee_payrolls_page.create_new') }}
@if($payrolls->isEmpty())

{{ __('payroll.employee_payrolls_page.no_payrolls_message') }}

@else
@foreach($payrolls as $payroll) @php // جلب مكونات الراتب (محملة أو عبر استعلام) $components = $payroll->relationLoaded('payrollSalaryComponents') ? $payroll->payrollSalaryComponents : $payroll->payrollSalaryComponents()->get(); // مجموع المكونات الإيجابية (عناصر دخل مثل Allowances, Overtime) $earningsTotal = $components->filter(fn($c) => ($c->value ?? 0) > 0)->sum('value'); // إجمالي الراتب الخام (الأساسي + الحوافز + مكونات موجبة) $grossRaw = ($payroll->basic_salary ?? 0) + ($payroll->incentives ?? 0) + $earningsTotal; // أوفرتايم: اجمع مكونات الاوفر تايم (meta.type == 'overtime' أو الاسم 'Overtime') $overtimeTotal = $components->filter(function($c) { $meta = $c->meta ?? null; return (!empty($meta) && isset($meta['type']) && $meta['type'] === 'overtime') || (($c->name ?? '') === 'Overtime'); })->sum('value'); // تعديل الحضور (خصم) — مكونات نوع 'underworked' تكون قيمتها سالبة $attendanceAdjustment = $components->filter(function($c) { $meta = $c->meta ?? null; return (!empty($meta) && isset($meta['type']) && $meta['type'] === 'underworked') || str_contains($c->name ?? '', 'Underworked') || str_contains($c->name ?? '', 'نقصان'); })->sum('value'); $attendanceAdjustmentDisplay = $attendanceAdjustment < 0 ? -1 * $attendanceAdjustment : $attendanceAdjustment; // إجمالي الاستقطاعات الأخرى: اجمع كل المكونات السالبة ما عدا تعديل الحضور وخصم الإجازة (التي تُعرض في عمود منفصل) $otherNegatives = $components->filter(function($c) { $val = $c->value ?? 0; if ($val >= 0) return false; $meta = $c->meta ?? null; if (!empty($meta) && isset($meta['type']) && $meta['type'] === 'underworked') return false; $name = $c->name ?? ''; if (str_contains($name, 'إجازة') || str_contains(strtolower($name), 'unpaid') ) return false; return true; })->sum('value'); $totalOtherDeductions = $otherNegatives < 0 ? -1 * $otherNegatives : 0; $loanInstallments = $payroll->loan_installments ?? 0; $leaveDeduction = $payroll->leave_deduction ?? 0; @endphp @endforeach
{{ __('payroll.index.month') }} {{ __('payroll.index.year') }} {{ __('payroll.index.gross_salary') }} {{ __('payroll.show.payment_status') }} {{ __('payroll.index.actions') }}
{{ \Carbon\Carbon::createFromDate($payroll->year, $payroll->month, 1)->translatedFormat('F') }} {{ $payroll->year }} {{ number_format($grossRaw, 2) }} {{ get_currency_code() }} @switch($payroll->status) @case('pending') {{ __('payroll.show.status_pending') }} @break @case('paid') {{ __('payroll.show.status_paid') }} @break @case('cancelled') {{ __('payroll.show.status_cancelled') }} @break @default {{ $payroll->status }} @endswitch @can('update', $payroll) @if($payroll->status === 'pending') @else @endif @endcan @can('pay', $payroll) @if($payroll->status === 'pending')
@csrf
@else @endif @endcan @can('delete', $payroll) @if($payroll->status === 'pending')
@csrf @method('DELETE')
@else @endif @endcan
{{ $payrolls->links() }} @endif
@endsection