@extends('docs.layout') @section('title', 'Barang Masuk (Purchasing)') @section('breadcrumb')
Dokumentasi transaksi pengadaan material masuk (Purchasing), form dinamis multi-baris, pembuatan master on-the-fly, serta bedah algoritma validasi batas pagu anggaran RAB Material.
@endsection @section('content')Modul Barang Masuk digunakan oleh Staf Purchasing untuk mencatat seluruh nota pembelian material dari vendor/toko ke proyek tertentu. Transaksi terbagi menjadi dua level relasi:
purchases): Menyimpan nomor_po (Nomor Bukti/Invoice), tanggal_pembelian, vendor_id, total_biaya akumulasi, dan keterangan.purchase_details): Menyimpan baris-baris item yang dibeli, mencakup item_id (material), unit_id (satuan), kuantitas, harga_satuan, dan subtotal.Fitur keamanan paling krusial pada modul ini adalah Pencegahan Belanja Overbudget yang berjalan di dalam PurchaseController@store dan PurchaseController@update:
Sebelum transaksi disimpan ke database:
$rabBudget = $rab->total_material (atau total agregat SUM(total_harga_material) dari rab_details proyek ini).$totalPurchased = Purchase::where('project_id', $project->id)->sum('total_biaya').Sisa_Anggaran = Total_RAB_Material - Total_Pembelian_Sebelumnya
IF (Total_Belanja_Baru > Sisa_Anggaran) {
DB::rollBack();
// Gagalkan transaksi dan kembalikan pesan error interaktif
}
Sisa_Efektif = Total_RAB_Material - (Total_Pembelian_Sebelumnya - Nilai_Transaksi_Lama_Ini)
IF (Total_Belanja_Baru > Sisa_Efektif) {
DB::rollBack();
// Gagalkan update dan tampilkan selisih overbudget
}
purchases/create.blade.php dan purchases/edit.blade.php) memungkinkan staf memasukkan puluhan jenis material sekaligus dalam satu nomor nota/PO.purchases/show.blade.php), staf dapat mengunggah foto nota, kwitansi, atau PDF surat jalan sebagai bukti audit (Level 3 Attachment).| Layer | File / Direktori | Fungsi |
|---|---|---|
| Controller | app/Http/Controllers/Admin/PurchaseController.php |
Method index, create, store, show, edit, update, destroy. |
| Models | app/Models/Purchase.phpapp/Models/PurchaseDetail.php |
Relasi Eloquent ke Project, Vendor, Item, Unit, dan ProjectFile. |
| Views | resources/views/admin/purchases/ |
Daftar transaksi (index), form input (create), form edit (edit), dan detail nota + lampiran (show). |
| Routes | routes/web.php |
Nested routes: admin/projects/{project}/purchases/... |