@extends('mitra.layouts.app') @section('title', 'Monitoring - ' . $sppg->nama) @push('head') @vite('resources/js/monitoring-chart.js') @endpush @section('content') {{-- Header --}}
Kembali ke Daftar SPPG

Monitoring {{ $sppg->nama }}

Keuangan, kualitas menu, dan inventory barang

Edit Pengaturan
{{ strtoupper(substr($sppg->nama, 0, 2)) }}

{{ $sppg->nama }}

{{ $sppg->email }}

Lisensi {{ ucfirst($sppg->status_lisensi) }} {{ $sppg->status === 'active' ? 'Aktif' : 'Tidak Aktif' }} {{ $sppg->sabtu_libur ? '5 hari' : '6 hari' }} kerja

Modal Awal (Bangun SPPG)

Rp {{ number_format($modalAwal ?? 0, 0, ',', '.') }}

Nilai inventory barang

Uang Keluar

Rp {{ number_format($totalUangKeluar, 0, ',', '.') }}

Pembelian bahan menu (invoice vendor)

Uang Masuk

Rp {{ number_format($totalUangMasuk, 0, ',', '.') }}

Dana dari keuangan (pembayaran disetujui)

Tren Uang Keluar (6 Bulan Terakhir)

Pembelian bahan menu (invoice vendor)

Tren Uang Masuk (6 Bulan Terakhir)

Dana dari keuangan (pembayaran disetujui)

@php $tanggalMenuLabel = \Carbon\Carbon::parse($tanggalMenu)->locale('id')->translatedFormat('l, d F Y'); $zatGiziLabels = [ 'energi' => ['label' => 'Energi', 'unit' => 'kkal', 'decimals' => 0], 'protein' => ['label' => 'Protein', 'unit' => 'g', 'decimals' => 1], 'lemak' => ['label' => 'Lemak', 'unit' => 'g', 'decimals' => 1], 'kh' => ['label' => 'KH', 'unit' => 'g', 'decimals' => 1], 'serat' => ['label' => 'Serat', 'unit' => 'g', 'decimals' => 1], 'kalsium' => ['label' => 'Kalsium', 'unit' => 'mg', 'decimals' => 1], 'besi' => ['label' => 'Besi', 'unit' => 'mg', 'decimals' => 2], 'vit_c' => ['label' => 'Vit C', 'unit' => 'mg', 'decimals' => 1], ]; $zatGiziKeys = array_keys($zatGiziLabels); $zatGiziSummary = $zatGiziSummary ?? []; @endphp

Laporan Nilai Gizi per Menu

{{ $tanggalMenuLabel }} Hanya menu yang terjadwal di hari ini (bukan seluruh menu master). Klik ▼ untuk detail per bahan.

@if(empty($menuNilaiGizi))

Belum ada menu terjadwal pada tanggal {{ \Carbon\Carbon::parse($tanggalMenu)->translatedFormat('d F Y') }}

Silakan pilih tanggal lain atau cek planning menu dari tim Ahli Gizi.

@else {{-- Summary: Total Kandungan --}}
@foreach($zatGiziLabels as $key => $meta) @endforeach
Total Kandungan ({{ count($menuNilaiGizi) }} menu) {{ number_format($zatGiziSummary[$key] ?? 0, $meta['decimals'], ',', '.') }} {{ $meta['unit'] }}
{{-- Tabel Menu --}}
@foreach($zatGiziLabels as $key => $meta) @endforeach @foreach($menuNilaiGizi as $idx => $m) @foreach($zatGiziLabels as $key => $meta) @endforeach @if(!empty($perBahan)) @endif @endforeach
Menu Kategori{{ $meta['label'] }}
{{ $m['nama_menu'] }} {{ $m['kategori'] ?? '-' }} {{ isset($m[$key]) && $m[$key] > 0 ? number_format($m[$key], $meta['decimals'], ',', '.') : '–' }} @php $perBahan = $m['breakdown'] ?? []; @endphp @if(!empty($perBahan)) @endif

Nilai per porsi menu untuk {{ $tanggalMenuLabel }}. Zat gizi dihitung dari komposisi bahan (Mapping Bahan oleh Ahli Gizi). Klik ikon ▼ untuk melihat breakdown per bahan.

@endif

Stok Bahan Gudang

Posisi stok per {{ \Carbon\Carbon::parse($tanggalMenu)->translatedFormat('d F Y') }}

{{ number_format($jenisBahanGudang, 0, ',', '.') }} jenis bahan Total stok {{ number_format($totalStokGudang, 2, ',', '.') }}
@if(($stokGudangRows ?? collect())->isEmpty())
Belum ada data stok gudang harian untuk tanggal ini.
@else @foreach($stokGudangRows as $stok) @endforeach
Bahan Saldo Akhir Satuan Tanggal Catat
{{ $stok->bahan->nama_bahan ?? '-' }} {{ number_format((float) $stok->saldo_akhir, 2, ',', '.') }} {{ $stok->satuan ?? '-' }} {{ optional($stok->tanggal)->translatedFormat('d M Y') ?? '-' }}
@endif

Kebutuhan Bahan Harian

{{ \Carbon\Carbon::parse($tanggalMenu)->translatedFormat('l, d F Y') }}

{{ number_format($kebutuhanHarian['total_bahan'] ?? 0, 0, ',', '.') }} bahan • {{ number_format((float) ($kebutuhanHarian['total_kg'] ?? 0), 2, ',', '.') }} kg

@if(($kebutuhanHarian['items'] ?? collect())->isEmpty())

Belum ada planning menu pada hari ini.

@else
@foreach(($kebutuhanHarian['items'] ?? collect())->take(15) as $item)

{{ $item['nama_bahan'] }}

{{ $item['kategori_bahan'] ?? '-' }}

{{ number_format((float) $item['total_kg'], 2, ',', '.') }} kg

@endforeach
@endif

Kebutuhan Bahan Mingguan

{{ $awalMinggu->translatedFormat('d M Y') }} - {{ $akhirMinggu->translatedFormat('d M Y') }}

{{ number_format($kebutuhanMingguan['total_bahan'] ?? 0, 0, ',', '.') }} bahan • {{ number_format((float) ($kebutuhanMingguan['total_kg'] ?? 0), 2, ',', '.') }} kg

@if(($kebutuhanMingguan['items'] ?? collect())->isEmpty())

Belum ada planning menu pada minggu ini.

@else
@foreach(($kebutuhanMingguan['items'] ?? collect())->take(15) as $item)

{{ $item['nama_bahan'] }}

{{ $item['kategori_bahan'] ?? '-' }}

{{ number_format((float) $item['total_kg'], 2, ',', '.') }} kg

@endforeach
@endif

Inventory Barang SPPG

Barang inventaris untuk pemantauan praktis

@if(isset($inventoryStats) && ((float)($inventoryStats->baik ?? 0) + (float)($inventoryStats->rusak ?? 0) + (float)($inventoryStats->perlu_perbaikan ?? 0) + (float)($inventoryStats->lainnya ?? 0) > 0))
Baik: {{ number_format((float)($inventoryStats->baik ?? 0), 0) }} unit Perlu Perbaikan: {{ number_format((float)($inventoryStats->perlu_perbaikan ?? 0), 0) }} unit Rusak: {{ number_format((float)($inventoryStats->rusak ?? 0), 0) }} unit @if((float)($inventoryStats->lainnya ?? 0) > 0) Lainnya: {{ number_format((float)($inventoryStats->lainnya ?? 0), 0) }} unit @endif
@endif
Tambah Barang
@if(request()->hasAny(['inv_search', 'inv_kategori'])) Reset @endif
@if($inventoryBarang->isEmpty())

Belum ada barang di inventory.

Tambah barang pertama
@else @foreach($inventoryBarang as $item) @endforeach
Nama Kategori Harga Total Baik Rusak Perbaikan Aksi
{{ $item->nama }} @if($item->laporan_kerusakan_count > 0) Laporan @endif @if($item->kontak_wa_service) Lapor kerusakan @endif {{ $item->kategori ?? '-' }} Rp {{ $item->nilai_estimasi ? number_format($item->nilai_estimasi, 0, ',', '.') : '-' }} {{ number_format($item->total_qty ?? $item->jumlah, 0) }} {{ $item->satuan ?? 'unit' }} {{ number_format($item->qty_baik ?? 0, 0) }} {{ number_format($item->qty_rusak ?? 0, 0) }} {{ number_format($item->qty_perlu_perbaikan ?? 0, 0) }}
Edit
@csrf @method('DELETE')
@endif
@endsection