Kembali

Stock Opname

@if (! $isLocked) @canany(['inventory.opnames.create', 'inventory.opnames.edit', 'inventory.opnames.manage', 'inventory.manage']) @if (($stockOpnameId ? $canEdit : $canCreate)) @endif @endcanany @canany(['inventory.opnames.refresh_system_stocks', 'inventory.opnames.manage', 'inventory.manage']) @if (($stockOpnameId ? $canEdit : $canCreate) && $canRefresh) @endif @endcanany @canany(['inventory.opnames.post', 'inventory.opnames.manage', 'inventory.manage']) @if ($canPost) @endif @endcanany @canany(['inventory.opnames.cancel', 'inventory.opnames.manage', 'inventory.manage']) @if ($stockOpnameId && $canCancel) @endif @endcanany @endif

Tujuan

Sinkronkan stok sistem dengan stok fisik hasil hitung.

Kapan dipakai

Koreksi berkala (mingguan/bulanan). Kejadian harian seperti rusak/expired/staff meal gunakan Pergerakan Stok.

Finalisasi

Saat difinalisasi, sistem membuat penyesuaian stok berdasarkan selisih.

@php $itemsCount = count($items); $adjustmentCount = 0; $sumPositive = 0.0; $sumNegative = 0.0; foreach ($items as $row) { $variance = (float) (\App\Support\Number\QuantityParser::parse($row['counted_qty'] ?? null) ?? 0) - (float) ($row['system_qty'] ?? 0); if (abs($variance) >= 0.0005) { $adjustmentCount++; if ($variance > 0) { $sumPositive += $variance; } else { $sumNegative += abs($variance); } } } @endphp
Total item: {{ number_format($itemsCount, 0, ',', '.') }}
Item selisih: {{ number_format($adjustmentCount, 0, ',', '.') }}
Total penyesuaian: +{{ \App\Support\Number\QuantityFormatter::format($sumPositive) }} / -{{ \App\Support\Number\QuantityFormatter::format($sumNegative) }}
@forelse ($items as $i => $row) @php $ingredientId = (int) ($row['ingredient_id'] ?? 0); $unit = '-'; $name = ''; foreach ($ingredients as $ingredient) { if ((int) $ingredient['id'] === $ingredientId) { $unit = $ingredient['unit']; $name = (string) $ingredient['name']; break; } } $systemQty = (float) ($row['system_qty'] ?? 0); $countedQty = (float) (\App\Support\Number\QuantityParser::parse($row['counted_qty'] ?? null) ?? 0); $variance = $countedQty - $systemQty; $hasVariance = abs($variance) >= 0.0005; @endphp

Item {{ number_format($i + 1, 0, ',', '.') }}

@if (! $isLocked) @endif

Stok Sistem

{{ \App\Support\Number\QuantityFormatter::format($systemQty) }} {{ $unit }}

Selisih

@if ($ingredientId === 0)

-

@else

{{ $hasVariance ? ($variance > 0 ? '+' : '') : '' }}{{ \App\Support\Number\QuantityFormatter::format($variance) }} {{ $unit }}

@endif
@empty

Belum ada item opname. Klik “Tambah Item”.

@endforelse
@if (!$isLocked) @canany(['inventory.opnames.create', 'inventory.opnames.edit', 'inventory.opnames.manage', 'inventory.manage']) @if (($stockOpnameId ? $canEdit : $canCreate)) @endif @endcanany @endif @if ($postConfirmOpen && ! $isLocked) @endif @if ($cancelConfirmOpen && ! $isLocked) @endif