@extends('docs.layout') @section('title', 'Barang Keluar (Usage)') @section('breadcrumb') @endsection @section('page_header') Modul Mutasi

Barang Keluar & Validasi Stok Fisik

Dokumentasi pencatatan pemakaian material lapangan (Usage), form mutasi multi-baris, serta mekanisme proteksi validasi stok fisik untuk mencegah saldo gudang minus.

@endsection @section('content')

1. Fungsi & Struktur Transaksi Barang Keluar

Modul Barang Keluar digunakan untuk mencatat material yang diambil dari gudang proyek untuk digunakan pada pekerjaan fisik di lapangan. Struktur data terbagi atas:

2. Algoritma Validasi Stok Fisik Ketat (Stock Validation)

Untuk menjaga akurasi pembukuan logistik dan mencegah pengambilan fiktif, UsageController@store dan UsageController@update menjalankan Validasi Ketersediaan Saldo Fisik:

Logika Evaluasi Stok di Backend

Sebelum transaksi pemakaian disimpan:

  1. Menghitung Total Barang Masuk: Sistem menjumlahkan seluruh pembelian item bersangkutan pada proyek ini $totalIn = PurchaseDetail::whereHas('purchase', fn($q) => $q->where('project_id', $project->id))->where('item_id', $itemId)->sum('kuantitas').
  2. Menghitung Total Barang Keluar: Menjumlahkan pemakaian sebelumnya $totalOut = UsageDetail::whereHas('usage', fn($q) => $q->where('project_id', $project->id))->where('item_id', $itemId)->sum('kuantitas').
  3. Menghitung Saldo Stok Tersedia: $availableStock = $totalIn - $totalOut.
  4. Evaluasi Skenario Tambah Baru:
    IF (Kuantitas_Keluar_Baru > Available_Stock) {
        DB::rollBack();
        // Gagalkan transaksi dan munculkan pesan error:
        // "Stok [Nama Material] tidak mencukupi! Tersedia: X, Diminta: Y"
    }
  5. Evaluasi Skenario Edit Transaksi:
    Stok_Efektif = Available_Stock + Kuantitas_Lama_Pada_Transaksi_Ini
    IF (Kuantitas_Keluar_Baru > Stok_Efektif) {
        DB::rollBack();
        // Gagalkan update dan tampilkan batas stok efektif
    }

3. Fitur Form Multi-Baris & Informasi Stok Real-Time

4. Pemetaan File Kode Terkait

Layer File / Direktori Fungsi
Controller app/Http/Controllers/Admin/UsageController.php Method index, create, store, show, edit, update, destroy.
Models app/Models/Usage.php
app/Models/UsageDetail.php
Relasi Eloquent ke Project, Item, Unit, dan ProjectFile.
Views resources/views/admin/usages/ Daftar transaksi (index), form input (create), form edit (edit), dan detail pengeluaran + lampiran (show).
Routes routes/web.php Nested routes: admin/projects/{project}/usages/...
@endsection