@php $fmt = static function ($v) { $v = (float) $v; return number_format($v, abs($v - round($v)) > 0.0001 ? 2 : 0, ',', '.'); }; @endphp @if (session('message'))
{{ session('message') }}
@endif @if ($mt && $this->locked()) {{-- ======================== TAMPILAN DOKUMEN BATAL ======================== --}}

Transfer {{ $mt->document_no }}

Batal
Kembali

No. Transfer

{{ $mt->document_no }}

Tanggal

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

Dari Gudang

{{ $mt->fromWarehouse?->name ?? '-' }}

Ke Gudang

{{ $mt->toWarehouse?->name ?? '-' }}

PIC

{{ $mt->pic?->name ?? '-' }}

No. Kendaraan

{{ $mt->vehicle_no ?? '-' }}

@if ($mt->remark)

Keterangan

{{ $mt->remark }}

@endif
@forelse ($mt->items as $it) @empty @endforelse
Kode Material Satuan Qty Transfer Dari SPB
{{ $it->inventoryItem?->code ?? '-' }} {{ $it->inventoryItem?->name ?? '-' }} {{ $it->unit?->name ?? '-' }} {{ $fmt($it->quantity) }} {{ $items[$loop->index]['spb_no'] ?? '-' }}
Tidak ada item.
Kembali ke Daftar

Dokumen ini dibatalkan — efek stok & SPB sudah dikembalikan. Hapus hanya tersedia pada status ini.

@error('_form')

{{ $message }}

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

{{ $mt ? 'Edit Transfer ' . $mt->document_no : 'Transfer Material Baru' }}

Setara menu legacy "Transfer Material" — kirim material antar gudang (dari SPB atau manual). Menyimpan dokumen = stok pindah (keluar dari gudang asal, masuk gudang tujuan).

Kembali
@if ($message)
{{ $message }}
@endif @error('_form')
{{ $message }}
@enderror @if ($mt)
{{ $this->statusLabel() }} Total qty {{ $fmt(collect($items)->sum('quantity')) }} {{ count($items) }} baris material
@endif {{-- Muat dari SPB (parity legacy "Tambah SPB" / Open pick) --}}

Muat item dari SPB (sisa belum dikirim)

@error('document_date')

{{ $message }}

@enderror
@error('from_warehouse_id')

{{ $message }}

@enderror
@error('to_warehouse_id')

{{ $message }}

@enderror

Detail Item

@forelse ($items as $i => $row) @php $inv = $inventory->firstWhere('id', $row['inventory_item_id'] ?? null); $bound = ! empty($row['spb_item_id']); @endphp @empty @endforelse
Material Satuan Stok Asal Qty Transfer Dari SPB
@if ($bound)
{{ $inv?->code . ' — ' . $inv?->name }}
@else @endif
{{ $row['spb_no'] ?: '-' }}
Belum ada item. Muat dari SPB di atas, atau klik "Tambah Baris Manual".
@error('items')

{{ $message }}

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

Material wajib dipilih di setiap baris.

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

Qty wajib diisi dan harus lebih dari 0.

@enderror

Menyimpan = stok langsung bergerak: keluar dari gudang asal (TRANSFER_OUT) & masuk ke gudang tujuan (TRANSFER_IN); sisa SPB otomatis berkurang.

Edit dokumen aktif akan membatalkan & menerapkan ulang efeknya (repost). Qty baris SPB tidak boleh melebihi sisa SPB; stok gudang asal tidak boleh negatif.

Dokumen yang sudah dibatalkan bisa diaktifkan kembali atau dihapus permanen (lihat halaman Batal).

@if ($mt) Cetak SJ @endif
@endif