{{-- Header --}}

{{ $tersedia ? 'Mutasi Stok Tersedia' : 'Laporan Mutasi Stok' }}

@if ($tersedia) Mutasi seluruh barang yang pernah dikirim ke proyek selama periode — hanya kartu dengan saldo akhir positif (stok tersedia), lengkap dengan ringkasan per material & detil per mutasi. @else Mutasi seluruh barang yang pernah dikirim ke proyek selama periode — ringkasan per material & detil per mutasi, plus rekomendasi stok menipis/negatif. @endif

Cetak
{{-- Mode: Ringkasan / Detil --}}
@if ($tersedia)
Hanya kartu dengan saldo akhir > 0 (stok tersedia)
@else
@endif @if ($mode === 'ringkas')
{{ number_format($totals['rows'], 0, ',', '.') }} barang × gudang Masuk {{ \App\Support\MutasiProyekReport::num($totals['in']) }} Keluar {{ \App\Support\MutasiProyekReport::num($totals['out']) }} Ke Proyek {{ \App\Support\MutasiProyekReport::num($totals['project_out']) }} @if ($totals['attention'] > 0) Rekomendasi: {{ $totals['attention'] }} barang perlu perhatian (negatif/menipis) @else Tidak ada stok negatif/menipis ✓ @endif
@else
Baris mutasi terdeteksi: {{ number_format($paginator->total(), 0, ',', '.') }} (halaman ini {{ count($rows) }})
@endif
@if ($date_from || $date_to || $warehouse_id || $project_id || $group_id || $search || ! $only_sent) @endif
{{-- ============ RINGKASAN PER MATERIAL ============ --}} @if ($mode === 'ringkas') @php $th = 'px-4 py-3 font-semibold'; $thr = 'px-4 py-3 text-right font-semibold'; @endphp @forelse ($rows as $i => $s) @php $st = $statusOf((float) $s['ending'], (float) $s['min_stock']); @endphp @empty @endforelse @if ($rows) @endif
No Grup Satuan Gudang Stok Awal Status
{{ (($paginator->currentPage() - 1) * $perPage) + $i + 1 }} {{ $s['code'] }} {{ $s['name'] }} {{ $s['group'] }} {{ $s['unit'] }} {{ $s['warehouse'] }} {{ \App\Support\MutasiProyekReport::num($s['in']) }} {{ \App\Support\MutasiProyekReport::num($s['out']) }} {{ $s['project_out'] > 0 ? \App\Support\MutasiProyekReport::num($s['project_out']) : '-' }} {{ \App\Support\MutasiProyekReport::num($s['beginning']) }} {{ \App\Support\MutasiProyekReport::num($s['ending']) }} @if ($st === 'negatif') NEGATIF @elseif ($st === 'menipis') MENIPIS @else OK @endif
Tidak ada mutasi untuk periode & filter ini.
TOTAL {{ \App\Support\MutasiProyekReport::num($totals['in']) }} {{ \App\Support\MutasiProyekReport::num($totals['out']) }} {{ \App\Support\MutasiProyekReport::num($totals['project_out']) }} {{ \App\Support\MutasiProyekReport::num($totals['ending']) }}
{{-- ============ DETIL PER MUTASI ============ --}} @else @forelse ($rows as $i => $m) @empty @endforelse
No Tanggal No. Referensi Jenis Kode Nama Material Gudang Proyek / Tujuan Masuk Keluar Saldo
{{ (($paginator->currentPage() - 1) * $perPage) + $i + 1 }} {{ $m['date'] }} {{ $m['ref'] }} {{ $m['type_label'] }} {{ $m['code'] }} {{ $m['name'] }} {{ $m['warehouse'] }} {{ $m['project'] }} {{ (float) $m['qty'] > 0 ? \App\Support\MutasiProyekReport::num($m['qty']) : '' }} {{ (float) $m['qty'] < 0 ? \App\Support\MutasiProyekReport::num(abs((float) $m['qty'])) : '' }} {{ \App\Support\MutasiProyekReport::num($m['balance']) }}
Tidak ada baris mutasi untuk periode & filter ini.
@endif

Catatan: Stok Awal = Saldo Akhir − (Masuk − Keluar) pada periode; Saldo Akhir bersumber dari kartu stok terkini. Kolom "Ke Proyek" = qty keluar dari pemakaian (barang/solar) dengan Jenis Pemakaian "Antar Proyek"; kolom "Keluar" = keluar lainnya (jenis pemakaian lain, transfer keluar, koreksi negatif).