@if (session('message'))
{{ session('message') }}
@endif @if ($opname && $this->locked()) {{-- ======================== TAMPILAN DOKUMEN BATAL ======================== --}}

Stok Opname {{ $opname->document_no }}

Batal
Kembali
@if ($applied)
Selisih opname ini telah dibuatkan Koreksi Stok: @foreach ($applied as $k) {{ $k['document_no'] }} @endforeach
@endif

No. Opname

{{ $opname->document_no }}

Tanggal

{{ $opname->document_date?->format('d/m/Y') }}

Gudang

{{ $opname->warehouse?->name ?? '-' }}

@if ($opname->remark)

Keterangan

{{ $opname->remark }}

@endif
@forelse ($opname->items as $it) @empty @endforelse
Kode Material Satuan Qty Sistem Qty Fisik Selisih
{{ $it->inventoryItem?->code ?? '-' }} {{ $it->inventoryItem?->name ?? '-' }} {{ $it->unit?->name ?? '-' }} {{ number_format((float) $it->system_qty, 2, ',', '.') }} {{ number_format((float) $it->physical_qty, 2, ',', '.') }} {{ ((float) $it->diff_qty > 0 ? '+' : '') . number_format((float) $it->diff_qty, 2, ',', '.') }}
Tidak ada item.

Dokumen batal tidak memengaruhi stok. Hapus permanen hanya tersedia untuk dokumen batal.

@else {{-- ======================== FORM (BARU / EDIT SAAT VALID) ======================== --}}

{{ $opname ? 'Edit Stok Opname ' . $opname->document_no : 'Stok Opname Baru' }}

Setara menu legacy "Stock Opname" — catat hitung fisik lalu bandingkan dengan Qty Sistem. Opname sendiri tidak mengubah stok; selisih diterapkan lewat Koreksi Stok.

Kembali
@if ($message)
{{ $message }}
@endif @error('_form')
{{ $message }}
@enderror @if ($applied)
Selisih opname ini sudah dibuatkan Koreksi Stok: @foreach ($applied as $k) {{ $k['document_no'] }} @endforeach — bila koreksi tersebut dibatalkan, tombol "Buat Koreksi Stok" aktif kembali.
@endif
@error('document_date')

{{ $message }}

@enderror
@error('warehouse_id')

{{ $message }}

@enderror

Detail Opname

@if ($stockRemaining > 0) @endif
@if ($warehouse_id && $stockTotal > 0)
@if ($stockRemaining > 0) Perhatian: grid baru memuat {{ number_format($stockLoaded, 0, ',', '.') }} dari {{ number_format($stockTotal, 0, ',', '.') }} material berstok gudang ini — {{ number_format($stockRemaining, 0, ',', '.') }} belum dimuat. Selisih material yang belum dimuat tidak ikut ke Koreksi Stok. Gunakan Muat Berikutnya / Muat Semua bila ingin mencakup seluruh gudang. @else Seluruh {{ number_format($stockTotal, 0, ',', '.') }} material berstok gudang ini sudah masuk grid. @endif
@endif
@forelse ($items as $i => $row) @php $sys = (float) $row['system_qty']; $fis = $row['physical_qty'] !== '' && $row['physical_qty'] !== null ? (float) $row['physical_qty'] : null; $diff = $fis !== null ? $fis - $sys : null; $hasDiff = $diff !== null && abs($diff) > 0.0001; @endphp @empty @endforelse
Material Satuan Qty Sistem Qty Fisik Selisih (±)
{{ number_format($sys, 2, ',', '.') }} @if ($diff === null) — @else {{ (($diff > 0) ? '+' : '') . number_format($diff, 2, ',', '.') }} @endif
Belum ada material. Pilih gudang lalu klik "Muat Stok Gudang", atau "Tambah Baris" untuk material temuan fisik.
@error('items')

{{ $message }}

@enderror @error('items.*.inventory_item_id')

Material wajib dipilih di setiap baris.

@enderror @error('items.*.physical_qty')

Qty fisik wajib diisi (angka ≥ 0) di setiap baris.

@enderror @php $cntDiff = 0; foreach ($items as $row) { if (! empty($row['inventory_item_id']) && $row['physical_qty'] !== '' && $row['physical_qty'] !== null && abs((float) $row['physical_qty'] - (float) $row['system_qty']) > 0.0001) { $cntDiff++; } } @endphp
{{ count($items) }} material terdaftar @if ($warehouse_id && $stockTotal > 0) Cakupan gudang: {{ number_format($stockLoaded, 0, ',', '.') }}/{{ number_format($stockTotal, 0, ',', '.') }} material berstok @endif {{ $cntDiff }} material dengan selisih (±) Qty Sistem diambil dari saldo saat grid dimuat — tekan Perbarui Qty Sistem bila ada mutasi stok setelahnya.
@if ($opname) Cetak Berita Acara @endif
@endif