@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.

Proses Racikan

Update Expired Barang Terbuka

Daftar Bahan Racikan

Kode Bahan Qty Satuan Expired Dibuka Aksi
Belum ada bahan.

Hasil Racikan

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