@php $groupData = collect($finalHeaders)->groupBy('type'); @endphp S.No. {{-- Static Headers --}} @foreach ($groupData->get('headers', []) as $sequence) @php $val = explode('...', $sequence['value']); $label = $sequence['alias'] ?? ($val[1] ?? $val[0]); @endphp {{ $label }} @endforeach {{-- Dynamic Monthly Data --}} @foreach ($monthData as $m) {{-- Attendance & Leave Types --}} @foreach ($groupData->get('att_summary', collect())->merge($groupData->get('leave_types', collect())) as $sequence) @php $val = explode('...', $sequence['value']); $label = $sequence['alias'] ?? ($val[1] ?? $val[0]); @endphp {{ $label }} @endforeach {{-- Rate (if enabled) --}} @if ($templateData->rate == '1') @foreach ($groupData->get('components', []) as $sequence) @php $val = explode('...', $sequence['value']); $label = $sequence['alias'] ?? ($val[1] ?? $val[0]); @endphp @if (($sequence['calculationType'] ?? null) == 'PaidDays') {{ $label }} (Rate) @endif @endforeach @endif {{-- Salary + Arrear --}} @foreach ($groupData->get('components', []) as $sequence) @php $val = explode('...', $sequence['value']); $label = $sequence['alias'] ?? ($val[1] ?? $val[0]); @endphp {{ $label }} (Salary) @if ($templateData->arrear == '1') {{ $label }} (Arrear) @endif @endforeach {{-- Summary Fields --}} @foreach ($groupData->get('summary', []) as $sequence) @php $val = explode('...', $sequence['value']); $label = $sequence['alias'] ?? ($val[1] ?? $val[0]); @endphp {{ $label }} @endforeach @endforeach {{-- Static Header Fields --}} @foreach ($groupData->get('headers', []) as $sequence) @endforeach {{-- Monthly Dynamic Data --}} @foreach ($monthData as $m) {{-- Attendance + Leave Types --}} @foreach ($groupData->get('att_summary', []) as $sequence) {{ App\Helpers\GeneralHelper::formatDate($m) }} @endforeach @foreach ($groupData->get('leave_types', []) as $sequence) {{ App\Helpers\GeneralHelper::formatDate($m) }} @endforeach {{-- Salary + Arrear --}} @foreach ($groupData->get('components', []) as $sequence) {{ App\Helpers\GeneralHelper::formatDate($m) }} {{ App\Helpers\GeneralHelper::formatDate($m) }} @if ($templateData->arrear == '1') {{ App\Helpers\GeneralHelper::formatDate($m) }} @endif @endforeach {{-- Summary Fields --}} @foreach ($groupData->get('summary', []) as $sequence) {{ App\Helpers\GeneralHelper::formatDate($m) }} @endforeach @endforeach @php $componentTotal = []; @endphp @foreach ($employeeData as $emp) @php $data = $emp['record']; @endphp {{ $loop->iteration }} {{-- Static Header Fields --}} @foreach ($groupData->get('headers', []) as $sequence) @php $val = explode('...', $sequence['value'])[0]; @endphp @if (in_array($val, ['department', 'designation', 'workstation', 'category', 'contractor', 'state', 'shift'])) {{ @$data->employee->{$val}->name }} @elseif ($val == 'locations') {{ @$data->employee->{$val}->pluck('name')->implode(',') }} @else {{ ucwords(@$data->employee->{$val}) }} @endif @endforeach {{-- Monthly Dynamic Data --}} @foreach ($monthData as $m) {{-- Attendance + Leave Types --}} @foreach ($groupData->get('att_summary', []) as $sequence) @php $key = explode('...', $sequence['value'])[0]; $val = @$emp['items'][$m]['attendance_info'][$key] ?? 0; @endphp {{ $val }} @endforeach @foreach ($groupData->get('leave_types', []) as $sequence) @php $key = explode('...', $sequence['value'])[0]; $val = @$emp['items'][$m]['leave_info'][$key] ?? 0; @endphp {{ $val }} @endforeach {{-- Rate --}} @if ($templateData->rate == '1') @foreach ($groupData->get('components', []) as $sequence) @php $compId = explode('...', $sequence['value'])[0]; $rate = 0; $logs = @$emp['items'][$m]['salary_info']->slipLogs ?? []; foreach ($logs as $log) { if ($log->type_id == $compId) { $rate = round($log->actual_salary, 2); break; } } @endphp @if (($sequence['calculationType'] ?? null) == 'PaidDays') {{ $rate }} @endif @endforeach @endif {{-- Salary + Arrear --}} @foreach ($groupData->get('components', []) as $sequence) @php $compId = explode('...', $sequence['value'])[0]; $salary = $arrear = 0; $logs = @$emp['items'][$m]['salary_info']->slipLogs ?? []; foreach ($logs as $log) { if ($log->type_id == $compId) { $salary = round($log->calculate_salary, 2); $arrear = round($log->arrear_salary, 2); $componentTotal[$m][$compId] = ($componentTotal[$m][$compId] ?? 0) + $salary; break; } } @endphp {{ $salary }} @if ($templateData->arrear == '1') {{ $arrear }} @endif @endforeach {{-- Summary Fields --}} @foreach ($groupData->get('summary', []) as $sequence) @php $key = explode('...', $sequence['value'])[0]; $val = @$emp['summary'][$key] ?? 0; @endphp {{ $val }} @endforeach @endforeach @endforeach Total: {{-- Empty placeholders for static headers --}} @foreach ($groupData->get('headers', []) as $sequence) @endforeach {{-- Monthly Dynamic Totals --}} @foreach ($monthData as $m) {{-- Attendance + Leave --}} @foreach ($groupData->get('att_summary', []) as $sequence) @endforeach @foreach ($groupData->get('leave_types', []) as $sequence) @endforeach {{-- Rate (not totaled) --}} @if ($templateData->rate == '1') @foreach ($groupData->get('components', []) as $sequence) @if (($sequence['calculationType'] ?? null) == 'PaidDays') @endif @endforeach @endif {{-- Salary + Arrear Totals --}} @foreach ($groupData->get('components', []) as $sequence) @php $compId = explode('...', $sequence['value'])[0]; $totalSalary = $componentTotal[$m][$compId] ?? 0; $totalArrear = 0; if ($templateData->arrear == '1') { foreach ($employeeData as $emp) { $logs = @$emp['items'][$m]['salary_info']->slipLogs ?? []; foreach ($logs as $log) { if ($log->type_id == $compId) { $totalArrear += round($log->arrear_salary, 2); break; } } } } @endphp {{ $totalSalary }} @if ($templateData->arrear == '1') {{ $totalArrear }} @endif @endforeach {{-- Summary Totals --}} @foreach ($groupData->get('summary', []) as $sequence) @php $key = explode('...', $sequence['value'])[0]; $summaryTotal = 0; foreach ($employeeData as $emp) { $summaryTotal += @$emp['summary'][$key] ?? 0; } @endphp {{ $summaryTotal }} @endforeach @endforeach