@extends('docs.layout') @section('title', 'Barang Masuk (Purchasing)') @section('breadcrumb') @endsection @section('page_header') Modul Pengadaan

Barang Masuk & Validasi Anggaran

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')

1. Fungsi & Struktur Transaksi Purchasing

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:

2. Algoritma Validasi Anggaran Ketat (Budget Validation)

Fitur keamanan paling krusial pada modul ini adalah Pencegahan Belanja Overbudget yang berjalan di dalam PurchaseController@store dan PurchaseController@update:

Logika Evaluasi Anggaran di Backend

Sebelum transaksi disimpan ke database:

  1. Menghitung Total Pagu RAB Material: Sistem mengambil nilai $rabBudget = $rab->total_material (atau total agregat SUM(total_harga_material) dari rab_details proyek ini).
  2. Menghitung Realisasi Belanja: Menjumlahkan seluruh pembelian sebelumnya $totalPurchased = Purchase::where('project_id', $project->id)->sum('total_biaya').
  3. Evaluasi Sisa Anggaran (Skenario Tambah Baru):
    Sisa_Anggaran = Total_RAB_Material - Total_Pembelian_Sebelumnya
    IF (Total_Belanja_Baru > Sisa_Anggaran) {
        DB::rollBack();
        // Gagalkan transaksi dan kembalikan pesan error interaktif
    }
  4. Evaluasi Sisa Anggaran (Skenario Edit Transaksi):
    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
    }

3. Fitur Form Multi-Baris & Tagging Otomatis

4. Pemetaan File Kode Terkait

Layer File / Direktori Fungsi
Controller app/Http/Controllers/Admin/PurchaseController.php Method index, create, store, show, edit, update, destroy.
Models app/Models/Purchase.php
app/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/...
@endsection