@extends('base.layout') @section('content')

SMART-REAGEN STOK

@livewire('gudang-pos')

Barang Masuk (Stok Opname)

Kode internal barang (bukan barcode). Otomatis terisi jika pilih barang dari list.
Barcode dibedakan: satuan besar vs satuan kecil (nilai barcode berbeda).
Scan akan otomatis memilih barang & set satuan (besar/kecil) sesuai barcode.

Daftar Barang Masuk

Kode Barang Qty Satuan Expired Aksi
Belum ada item.
Catatan: sistem akan menyimpan per-item menjadi baris transaksi (mirip stok opname).

Stok Opname Barang Hilang

Scan akan otomatis memilih barang & set satuan (besar/kecil) sesuai barcode.

Daftar Barang Hilang

Kode Barang Keterangan Qty Satuan Aksi
Belum ada item.
Catatan: item di daftar ini akan mengurangi stok sebagai hasil opname barang hilang.
Report Transaksi

Statistik Harian (Base Unit)
Masuk: {{ number_format($stat_harian_masuk ?? 0, 0, '.', ',') }}
Keluar: {{ number_format($stat_harian_keluar ?? 0, 0, '.', ',') }}

@forelse($stat_perjenis_harian ?? [] as $row) @empty @endforelse
JenisMasukKeluarSisa Stok
{{ $row['jenis'] }}{{ number_format($row['masuk'],0,'.',',') }}{{ number_format($row['keluar'],0,'.',',') }}{{ number_format($row['sisa'] ?? 0,0,'.',',') }}
Belum ada transaksi
Statistik Bulanan (Base Unit)
Masuk: {{ number_format($stat_bulanan_masuk ?? 0, 0, '.', ',') }}
Keluar: {{ number_format($stat_bulanan_keluar ?? 0, 0, '.', ',') }}

@forelse($stat_perjenis_bulanan ?? [] as $row) @empty @endforelse
JenisMasukKeluarSisa Stok
{{ $row['jenis'] }}{{ number_format($row['masuk'],0,'.',',') }}{{ number_format($row['keluar'],0,'.',',') }}{{ number_format($row['sisa'] ?? 0,0,'.',',') }}
Belum ada transaksi
Statistik Tahunan (Base Unit)
Masuk: {{ number_format($stat_tahunan_masuk ?? 0, 0, '.', ',') }}
Keluar: {{ number_format($stat_tahunan_keluar ?? 0, 0, '.', ',') }}

@forelse($stat_perjenis_tahunan ?? [] as $row) @empty @endforelse
JenisMasukKeluarSisa Stok
{{ $row['jenis'] }}{{ number_format($row['masuk'],0,'.',',') }}{{ number_format($row['keluar'],0,'.',',') }}{{ number_format($row['sisa'] ?? 0,0,'.',',') }}
Belum ada transaksi

Warning Barang Segera Habis

@if(isset($warningstok) && count($warningstok) > 0) @foreach($warningstok as $w)
{{ $w['jenis'] }} tersisa {{ $w['saldo'] }}. Stok minimum: {{ number_format($w['minimum'], 0, '.', ',') }} {{ $w['satuan_kecil'] }}.
@endforeach @else
Semua stok masih aman.
@endif

Barang Mendekati Expired (H-30)

@if(isset($expiringSoon) && count($expiringSoon) > 0)
@foreach($expiringSoon as $e) @endforeach
Jenis Deskripsi Tanggal Masuk Masa Expired Jumlah Satuan Sisa Hari
{{ $e['jenis'] }} {{ $e['deskripsi'] }} {{ $e['tanggal_masuk'] }} {{ $e['masa_expired'] }} {{ number_format($e['qty'], 0, '.', ',') }} {{ strtoupper($e['satuan']) }} {{ $e['sisa_hari'] }} hari
@else
Tidak ada barang yang mendekati masa expired dalam 30 hari ke depan.
@endif
Master Barang / Stok

@foreach(($jenisRows ?? []) as $row) @php($kode = ($row['kodejenis'] ?? '') ?: preg_replace('/\s+/', '', (string) ($row['jenis'] ?? ''))) @php($hasBreakdown = trim((string)($row['satuan_kecil'] ?? '')) !== '' && (int)($row['konversi_kecil'] ?? 1) > 1) @endforeach
Kode Jenis Satuan Satuan Kecil Konversi Stok Min Sisa Warning Barcode Detail Edit
{{ $kode }} {{ $row['jenis'] }} {{ $row['satuan'] }} {{ $row['satuan_kecil'] }} {{ number_format($row['konversi_kecil'], 0, '.', ',') }} {{ number_format($row['stok_minimum'], 0, '.', ',') }} {{ $row['saldo'] }} {{ $row['warning'] }} @if($hasBreakdown) @endif
@endsection @push('script') @endpush