Informasi: Perhitungan stok mencakup stok dari Gudang 1 dan Gudang 2. Logika transaksi: Pembelian (+), Penjualan (-), Retur Pembelian (tidak berubah), Retur Penjualan (+), Promo (-), Stok Opname (+).
@if ($tampilan == 'rekap') @else @endif @php $stok_per_barang = []; // Urutkan transaksi berdasarkan tanggal transaksi terlama ke terbaru $transaksi = $transaksi->sortBy(function($tran) { return $tran->transaksi->tanggal_faktur ?? '0000-00-00'; }); @endphp @foreach ($transaksi as $tran) @php $barang_id = $tran->barang_id; // Gunakan stok yang sudah dihitung dari controller jika tersedia if (isset($tran->stok_awal) && isset($tran->stok_akhir)) { $stok_awal = $tran->stok_awal; $stok_akhir = $tran->stok_akhir; } else { // Fallback calculation jika data dari controller tidak tersedia if (!isset($stok_per_barang[$barang_id])) { // Gunakan stok dari lokasi barang (gudang 1 + 2) sebagai stok awal $lokasi_barang = $tran->barang->lokasi_barang ?? null; $stok_per_barang[$barang_id] = $lokasi_barang ? (($lokasi_barang->stok_lokasi_1 ?? 0) + ($lokasi_barang->stok_lokasi_2 ?? 0)) : 0; } $stok_awal = $stok_per_barang[$barang_id]; $qty = $tran->jumlah; $jenis = $tran->transaksi->jenis ?? null; // Perbaikan logika sesuai permintaan klien: // 1 = Pembelian (+) // 2 = Penjualan (-) // 3 = Retur Pembelian (0 - tidak berubah karena barang keluar = barang masuk) // 4 = Retur Penjualan (+) // 5 = Promo (-) // 6 = Stok Opname (+) switch ($jenis) { case 1: // Pembelian - stok bertambah case 4: // Retur Penjualan - stok bertambah case 6: // Stok Opname - stok bertambah $stok_akhir = $stok_awal + $qty; break; case 2: // Penjualan - stok berkurang case 5: // Promo - stok berkurang $stok_akhir = $stok_awal - $qty; break; case 3: // Retur Pembelian - tidak berubah (barang keluar = barang masuk) $stok_akhir = $stok_awal; break; default: $stok_akhir = $stok_awal; } // Simpan stok akhir untuk transaksi berikutnya $stok_per_barang[$barang_id] = $stok_akhir; } @endphp @if ($tampilan == 'rekap') @else @endif @endforeach
No Nama BarangSatuan Stok Awal Stok Akhir Qty Pembelian Qty Penjualan Qty Stok Opname Qty Stok PromoTanggal Invoice Transaksi Customer/Supplier Jumlah Stok Awal Stok Akhir Keterangan Harga
{{ $loop->iteration }} {{ optional($tran->barang)->nama ?? '-' }}{{ optional($tran->barang)->satuan ?? '-' }} {{ number_format($stok_awal, 0, ',', '.') }} {{ number_format($stok_akhir, 0, ',', '.') }} {{ number_format($qty, 0, ',', '.') }} {{ number_format($qty, 0, ',', '.') }} {{ number_format($qty, 0, ',', '.') }} {{ number_format($qty, 0, ',', '.') }}{{ date('d/m/Y', strtotime($tran->transaksi->tanggal_faktur ?? '-')) }} {{ $tran->transaksi->no_faktur ?? '-' }} {{ $tran->jenis_transaksi }} @if ($tran->transaksi) @if ($tran->transaksi->supplier) Supplier {{ $tran->transaksi->supplier->nama_perusahaan }} @elseif($tran->transaksi->customer) Customer {{ $tran->transaksi->customer->nama }} @else - @endif @else - @endif @php $jumlah = $tran->jumlah; $promo_quantity = 0; // Cek jika ada promo if ($tran->transaksi && $tran->transaksi->jenis == 2 && $tran->barang) { $promo = $tran->barang->promos() ->where('start_date', '<=', $tran->transaksi->tanggal_faktur) ->where('end_date', '>=', $tran->transaksi->tanggal_faktur) ->first(); if ($promo) { if ($promo->is_multiplier) { $kelipatan = floor($jumlah / $promo->minimum_quantity); $promo_quantity = $kelipatan * $promo->promo_quantity; } else { $promo_quantity = $promo->promo_quantity; } } } $total_jumlah = $jumlah + $promo_quantity; $color = ''; // Tentukan warna berdasarkan jenis transaksi if ($tran->transaksi) { switch ($tran->transaksi->jenis) { case 1: // Pembelian case 4: // Retur Penjualan $color = 'color: green;'; break; case 2: // Penjualan case 3: // Retur Pembelian $color = 'color: red;'; break; } } @endphp {{ number_format($total_jumlah, 0, ',', '.') }} @if($promo_quantity > 0) ({{ number_format($jumlah, 0, ',', '.') }} + {{ number_format($promo_quantity, 0, ',', '.') }} promo) @endif {{ number_format($stok_awal, 0, ',', '.') }} {{ number_format($stok_akhir, 0, ',', '.') }} {{ $tran->transaksi->keterangan }} @php $harga = 0; if ($tran->transaksi) { switch ($tran->transaksi->jenis) { case 1: // Pembelian $harga = $tran->harga_beli * $tran->jumlah; break; case 2: // Penjualan $harga = $tran->harga_jual * $tran->jumlah; break; case 3: // Retur Pembelian $harga = $tran->harga_beli * $tran->jumlah; break; case 4: // Retur Penjualan $harga = $tran->harga_jual * $tran->jumlah; break; } } @endphp Rp {{ number_format($harga, 0, ',', '.') }}
@push('scripts') @endpush