@php $formatNumber = static fn($value) => rtrim(rtrim(number_format((float) $value, 3, ',', '.'), '0'), ','); $formatQuantity = static fn($value, $unit) => $formatNumber($value) . ' ' . $unit; $formatMoney = static fn($value) => 'Rp ' . number_format((float) $value, 0, ',', '.'); $period = ($dateFrom ? \Illuminate\Support\Carbon::parse($dateFrom)->format('d/m/Y') : '..') . ' s.d. ' . ($dateUntil ? \Illuminate\Support\Carbon::parse($dateUntil)->format('d/m/Y') : '..'); @endphp

Laporan Pergerakan Barang

{{ $tenantName }}

Periode: {{ $period }} Dicetak: {{ $printedAt }}
@foreach ($reports as $report) @endforeach
{{ $report['label'] }} {{ number_format($report['count'], 0, ',', '.') }} barang
@foreach ($reports as $key => $report)

{{ $report['label'] }}

@if ($key === 'fast') Barang dengan penjualan pada periode laporan. @elseif ($key === 'slow') Barang tanpa penjualan pada periode laporan, tetapi pernah terjual sebelumnya. @else Barang yang belum pernah terjual dan telah memiliki penerimaan stok. @endif

@forelse ($report['groups'] as $category => $rows)

Kategori: {{ $category }}

@if ($key === 'fast') @else @endif @foreach ($rows as $index => $row) @if ($key === 'fast') @else @endif @endforeach @if ($key === 'fast') @else @endif
No. SKU/Kode Nama barangQty Transaksi Nilai penjualan Terakhir terjualStok tersedia Terakhir terjual
{{ $index + 1 }} {{ $row->sku }} {{ $row->name }}{{ $formatQuantity($row->total_qty, $row->base_unit_code) }} {{ number_format((int) $row->transactions, 0, ',', '.') }} {{ $formatMoney($row->total_value) }} {{ $row->last_sold_at ? \Illuminate\Support\Carbon::parse($row->last_sold_at)->format('d/m/Y') : '-' }} {{ $formatQuantity($row->stock, $row->base_unit_code) }} {{ $row->last_sold_at ? \Illuminate\Support\Carbon::parse($row->last_sold_at)->format('d/m/Y') : '-' }}
Subtotal {{ $category }} {{ $rows->groupBy('base_unit_code')->map(fn($unitRows, $unit) => $formatQuantity($unitRows->sum('total_qty'), $unit))->implode(', ') }} {{ $formatMoney($rows->sum('total_value')) }} {{ $rows->groupBy('base_unit_code')->map(fn($unitRows, $unit) => $formatQuantity($unitRows->sum('stock'), $unit))->implode(', ') }}
@empty
Tidak ada barang pada kategori pergerakan ini.
@endforelse @if ($report['truncated'])

Daftar dibatasi hingga 1.000 barang untuk menjaga performa cetak.

@endif
@endforeach

Qty fast moving dihitung dalam satuan dasar produk. Slow moving dan dead moving hanya mencakup barang yang pernah diterima ke stok.

{{ $printedAt }} — Powered by SANYATA ERP