@php /** * Partial: Salary Histories management * Variables: * - $employee (Employee) * - $histories (Collection) optional * - $history (optional) when editing */ // ✅ جلب آخر سجل تعويض لملء النموذج تلقائياً عند الإضافة $lastHistory = null; if (!isset($history)) { $lastHistory = $employee->salaryHistories()->orderByDesc('effective_from')->first(); } // ✅ إذا لم يكن هناك سجل تعويض سابق، استخدم بيانات الموظف الأساسية if (!isset($history) && !$lastHistory) { // إنشاء كائن افتراضي يحتوي على بيانات الموظف $defaultHistory = new stdClass(); $defaultHistory->base_salary = $employee->salary ?? 0; $defaultHistory->incentives = $employee->incentives ?? 0; $defaultHistory->overtime_rate = $employee->overtime_hourly_rate ?? null; $defaultHistory->monthly_leave_entitlement = $employee->monthly_leave_days_allowed ?? null; $defaultHistory->annual_leave_entitlement = $employee->annual_entitlement ?? null; $defaultHistory->note = null; // تحويل hire_date إلى Carbon إذا كان موجوداً if ($employee->hire_date) { $defaultHistory->effective_from = $employee->hire_date instanceof \Carbon\Carbon ? $employee->hire_date : \Carbon\Carbon::parse($employee->hire_date); } else { $defaultHistory->effective_from = \Carbon\Carbon::now(); } // ✅ جمع المكونات الإضافية من العلاقة salaryComponents $components = []; if ($employee->relationLoaded('salaryComponents')) { foreach ($employee->salaryComponents as $comp) { if (!empty($comp->name) && ($comp->pivot->value ?? 0) > 0) { $components[$comp->name] = (float) $comp->pivot->value; } } } else { // إذا لم تكن العلاقة محمّلة، قم بتحميلها $employee->load('salaryComponents'); foreach ($employee->salaryComponents as $comp) { if (!empty($comp->name) && ($comp->pivot->value ?? 0) > 0) { $components[$comp->name] = (float) $comp->pivot->value; } } } // ✅ إضافة المكونات من الحقول الثابتة (component_1 إلى component_7) for ($i = 1; $i <= 7; $i++) { $nameField = "component_name_$i"; $valueField = "component_$i"; $name = $employee->{$nameField}; $value = (float) ($employee->{$valueField} ?? 0); if (!empty($name) && $value > 0) { $components[$name] = $value; } } $defaultHistory->components = $components; } else { // إذا كان هناك $history (تعديل)، استخدمه، وإلا استخدم $lastHistory $defaultHistory = $history ?? $lastHistory; } @endphp
{{ __('employees.salary_histories.title') }} - {{ $employee->name }}
@if(session('success'))
{{ session('success') }}
@endif @if(isset($histories) && $histories->count())
@foreach($histories as $h) @endforeach
{{ __('employees.salary_histories.table.effective_from') }} {{ __('employees.salary_histories.table.base_salary') }} {{ __('employees.salary_histories.table.incentives') }} {{ __('employees.salary_histories.table.overtime_rate') }} {{ __('employees.salary_histories.table.monthly_leave') }} {{ __('employees.salary_histories.table.annual_leave') }} {{ __('employees.salary_histories.table.components') }} {{ __('employees.salary_histories.table.note') }} {{ __('employees.salary_histories.table.actions') }}
{{ optional($h->effective_from)->toDateString() }} {{ number_format($h->base_salary,2) }} {{ number_format($h->incentives ?? 0,2) }} {{ $h->overtime_rate ?? '-' }} {{ $h->monthly_leave_entitlement ?? '-' }} {{ $h->annual_leave_entitlement ?? '-' }} @if(is_array($h->components) && count($h->components) > 0)
    @foreach($h->components as $name => $value)
  • {{ $name }}: {{ number_format($value, 2) }}
  • @endforeach
@else - @endif
{{ Str::limit($h->note ?? '', 50) }} {{ __('employees.show.actions.edit') }}
@csrf @method('DELETE')
@else

{{ __('employees.salary_histories.no_records') }}

@endif
@if(isset($history)) {{ __('employees.salary_histories.edit_record') }} @else {{ __('employees.salary_histories.add_new') }} @endif
@csrf @if(isset($history)) @method('PUT') @endif
@php $effectiveFromValue = ''; if ($defaultHistory && isset($defaultHistory->effective_from)) { if (is_object($defaultHistory->effective_from) && method_exists($defaultHistory->effective_from, 'toDateString')) { $effectiveFromValue = $defaultHistory->effective_from->toDateString(); } elseif ($defaultHistory->effective_from instanceof \Carbon\Carbon) { $effectiveFromValue = $defaultHistory->effective_from->toDateString(); } elseif (is_string($defaultHistory->effective_from)) { $effectiveFromValue = $defaultHistory->effective_from; } else { $effectiveFromValue = \Carbon\Carbon::parse($defaultHistory->effective_from)->toDateString(); } } @endphp {{ __('employees.salary_histories.form.effective_from_hint') }}
@php // ✅ استخدام $defaultHistory بدلاً من $history فقط $existingComponents = old('component_names', $defaultHistory && is_array($defaultHistory->components) ? array_keys($defaultHistory->components) : []); $existingValues = old('component_values', $defaultHistory && is_array($defaultHistory->components) ? array_values($defaultHistory->components) : []); @endphp @if(count($existingComponents) > 0) @foreach($existingComponents as $index => $name)
@endforeach @endif
@push('scripts') @endpush