@extends('layouts.app', ['class' => 'g-sidenav-show bg-gray-100']) {{-- section content --}} @section('content') @if (empty($selected_detail_month)) @include('layouts.navbars.auth.topnav', ['title' => '']) @endif
{{--
--}}
Komposisi ZSPR Berdasarkan Material Group
@if (!empty($selected_detail_month))
Data Bulan: {{ \Carbon\Carbon::createFromFormat('Y-m', $selected_detail_month)->translatedFormat('F Y') }}
@endif
{{-- PIE CHART --}}
{{-- TABEL MATERIAL GROUP --}}
@php $grandTotal = 0; @endphp @foreach ($zrawByMatkl as $matkl => $items) @php $matklId = Str::slug($matkl, '_'); $matklTotal = $items->sum('total_value'); $grandTotal += $matklTotal; @endphp @endforeach
Material Group Curr Total
{{ $matkl }} ({{ $items->count() }} item) IDR {{ number_format($matklTotal) }}
@foreach ($items as $row) @endforeach
- {{ $row->MAKTX }} {{ number_format($row->total_value) }}
Total IDR {{ number_format($grandTotal) }}
{{--
--}}
ZSPR - Ringkasan per Kelompok Divisi ({{ \Carbon\Carbon::createFromFormat('Ym', $yearMonth)->format('Y') }})
{{-- --}}
@foreach ($months as $m) @endforeach @php $order = ['Asset', 'Project', 'Sparepart', 'Dibiayakan']; $collapsible = ['Asset', 'Project', 'Sparepart']; $colspan = 2 + count($months) + 4; // Kelompok + Curr + (bulan...) + TotalYTD + AVGYTD + TotalPrev + Ratio // Akumulator grand total $grandTotalsPerMonth = array_fill_keys($months, 0); $grandTotalPrev = 0; @endphp @foreach ($order as $group) @php $monthValues = $zsprGroupedSummary[$group] ?? []; $totalAktif = collect($monthValues) ->filter(fn($v, $k) => $k <= $yearMonth) ->map(fn($v) => (float) $v) ->sum(); $totalSebelumnya = (float) ($groupedPrevYearData[$group] ?? 0); // 🔹 Hitung rata-rata YTD $monthsYTD = collect($months)->filter(fn($m) => $m <= $yearMonth)->count(); $avgYTD = $monthsYTD > 0 ? $totalAktif / $monthsYTD : 0; $ratio = $totalSebelumnya > 0 ? ($totalAktif / $totalSebelumnya) * 100 : null; // akumulasi grand total per bulan & prev year foreach ($months as $m) { $grandTotalsPerMonth[$m] += (float) ($monthValues[$m] ?? 0); } $grandTotalPrev += $totalSebelumnya; $rowId = 'grp-' . \Str::slug($group, '_'); $hasDetails = !empty($detailsByGroup[$group] ?? null) && in_array($group, $collapsible, true); @endphp {{-- ROW RINGKASAN --}} @foreach ($months as $m) @endforeach {{-- ROW DETAIL (hanya bulan aktif) --}} @if ($hasDetails) @foreach ($months as $m) @endforeach @php $grandTotalDetail = 0; @endphp @forelse ($detailsByGroup[$group] as $maktx => $valThisMonth) @php $val = (float) $valThisMonth; $grandTotalDetail += $val; @endphp @foreach ($months as $m) @if ($m == $yearMonth) @else @endif @endforeach @empty @endforelse @if ($grandTotalDetail > 0) @foreach ($months as $m) @if ($m == $yearMonth) @else @endif @endforeach @endif @endif @endforeach @php $grandTotalAktif = collect($grandTotalsPerMonth) ->filter(fn($v, $k) => $k <= $yearMonth) ->sum(); $monthsYTD = collect($months)->filter(fn($m) => $m <= $yearMonth)->count(); $grandAvgYTD = $monthsYTD > 0 ? $grandTotalAktif / $monthsYTD : 0; $grandRatio = $grandTotalPrev > 0 ? ($grandTotalAktif / $grandTotalPrev) * 100 : null; @endphp @foreach ($months as $m) @endforeach
Kelompok Curr {{ \Carbon\Carbon::createFromFormat('Ymd', $m . '01')->translatedFormat('F Y') }} Total YTD AVG YTD Total {{ $yearPrev }} Ratio YTD
@if ($hasDetails) â–¸ @endif {{ $group }} IDR {{ number_format($monthValues[$m] ?? 0) }} {{ number_format($totalAktif) }} {{ number_format($avgYTD, 0) }} {{ number_format($totalSebelumnya) }} {{ $ratio !== null ? number_format($ratio, 2) . '%' : '-' }}
Detail @if ($m == $yearMonth) {{ \Carbon\Carbon::createFromFormat('Ymd', $m . '01')->translatedFormat('F Y') }} @endif
- {{ $maktx }}{{ number_format($val) }}
Tidak ada data untuk bulan ini.
Total{{ number_format($grandTotalDetail) }}
TOTAL IDR {{ number_format($grandTotalsPerMonth[$m] ?? 0) }} {{ number_format($grandTotalAktif) }} {{ number_format($grandAvgYTD, 0) }} {{ number_format($grandTotalPrev) }} {{ $grandRatio !== null ? number_format($grandRatio, 2) . '%' : '-' }}
{{--
--}}
Tren Pemakaian {{ \Carbon\Carbon::createFromFormat('Ym', $yearMonth)->format('Y') }}
{{--
--}}
Sparepart {{ \Carbon\Carbon::createFromFormat('Ym', $yearMonth)->format('Y') }}
@php use Carbon\Carbon; try { $activeMonthLabel = Carbon::createFromFormat( 'Ymd', $yearMonth . '01', )->translatedFormat('F Y'); } catch (\Exception $e) { $activeMonthLabel = ''; } @endphp @foreach ($sparepartTable as $row) @php $isTotalRow = str_starts_with($row['label'], 'Total'); $isActiveMonthRow = $row['label'] === $activeMonthLabel; @endphp @endforeach
SPAREPART
Pembelian (GR) Pemakaian (GI)
{{ $row['label'] }} {{ number_format($row['gr']) }} {{ number_format($row['gi']) }}
Top Vendor (ZSPR)
@php $grandTotal = $topVendors->sum('total'); @endphp @foreach ($topVendors->take(5) as $vendor => $data) @php $vendorId = \Str::slug($vendor) @endphp @endforeach @if ($topVendors->count() > 5) @endif @foreach ($topVendors->slice(5) as $vendor => $data) @php $vendorId = \Str::slug($vendor) @endphp @endforeach {{-- Row Total --}}
Vendor Curr Total
{{ $vendor }} ({{ count($data['details']) }} item) IDR {{ number_format($data['total']) }}
@foreach ($data['details'] as $item) @endforeach
- {{ $item->MAKTX }} {{ number_format($item->total_value) }}
{{ $vendor }} ({{ count($data['details']) }} item) IDR {{ number_format($data['total']) }}
@foreach ($data['details'] as $item) @endforeach
- {{ $item->MAKTX }} {{ number_format($item->total_value) }}
TOTAL {{ number_format($grandTotal) }}
@endsection @push('js') @endpush