# Blueprint Alur Bisnis Modul Master Project

Modul `master_project` merupakan bagian dari ekosistem ERP Enterprise skala besar. Modul ini didesain untuk menangani keseluruhan siklus hidup (*lifecycle*) sebuah *project*, yang dibagi menjadi 5 tahapan (*steps*) utama yang saling berkesinambungan.

Berikut adalah definisi, hak akses, dan proses bisnis untuk setiap tahapan:

## Step 1: Pre-Quotation
- **Aktor Utama:** Sales (dengan hak akses penjualan project).
- **Deskripsi Proses:**
  Tahap inisiasi di mana bagian penjualan (Sales) menginputkan data perencanaan awal dari *project* baru.
- **Hasil (Output):** Terbentuknya transaksi awal yang berstatus **Step 1**.

## Step 2: Quotation
- **Aktor Utama:** SPV Sales Project (dengan hak akses *approval* rencana project).
- **Deskripsi Proses:**
  Supervisor melakukan pengecekan mendalam terhadap data yang diinput pada Step 1. Tujuannya adalah memastikan kelengkapan dokumen pendukung dan kesesuaian nominal awal *project*. Setelah tervalidasi, SPV akan memberikan *approval*.
- **Hasil (Output):** Transaksi naik statusnya menjadi **Step 2**.

## Step 3: Started Project
- **Aktor Utama:** SPV Sales Project (dengan hak akses *approval* dan *kickoff project*).
- **Deskripsi Proses:**
  Tahap persiapan eksekusi dan logistik. Berdasarkan dokumen pada Step 2, SPV mulai menyusun Rencana Anggaran Biaya (RAB) pada domain *project*. RAB ini memegang peranan vital untuk mengatur alur distribusi material dari **Gudang Pusat** ➔ **Gudang Cabang** ➔ **Pelaksana Project yang ditunjuk**.
- **Prasyarat (Condition):** 
  - RAB dipastikan sudah sesuai dan disimpan.
  - Pemeriksaan administrasi Uang Muka (apabila *project* menggunakan sistem DP) telah diselesaikan.
- **Hasil (Output):** Transaksi naik statusnya menjadi **Step 3** (*Kickoff* / Berjalan).

## Step 4: Serah Terima Tahap 1
- **Aktor Utama:** SPV Sales Project (dengan hak akses mengawasi jalan pelaksanaan project).
- **Deskripsi Proses:**
  Ini adalah fase eksekusi lapangan (*production phase*). Meliputi:
  - Pembuatan Surat Perintah Kerja (SPK).
  - Pemenuhan kebutuhan distribusi material untuk masing-masing SPK kepada pihak pelaksana.
  - Pengawasan ketepatan waktu pengerjaan.
  - Pelaksanaan *Quality Control* (QC) setelah pihak pelaksana melakukan *posting* penyelesaian SPK.
  - Manajemen logistik tambahan: menangani permintaan penambahan material, pengembalian (*return*) material sisa, serta material rusak kembali ke Gudang Cabang Project.
- **Prasyarat (Condition):**
  - Seluruh SPK dalam *project* tersebut telah melalui proses *Quality Control* (QC) dengan baik.
  - Seluruh biaya-biaya (*costs*) telah di-posting oleh SPV.
  - Gudang telah melakukan proses penerimaan barang *return* dari pelaksana.
  - Seluruh penerbitan tagihan/termin telah diselesaikan.
- **Hasil (Output):** Transaksi dilanjutkan dan naik menjadi **Step 4** (Serah Terima 1).

## Step 5: Serah Terima Tahap 2 (Finish Closing Project)
- **Aktor Utama:** SPV atau Manager Project (dengan hak akses *closing project*).
- **Deskripsi Proses:**
  Fase penutupan final (*closing*). Fokus pada penyelesaian aspek retensi dan finansial.
- **Prasyarat (Condition):**
  - Dilakukan pemeriksaan terhadap status retensi *project*.
  - Dipastikan masa garansi/retensi telah berakhir.
  - Pemeriksaan administrasi kelengkapan finansial: Cek Uang Muka lunas, Penerimaan dari Termin beres, dan Penerimaan Pencairan Retensi sudah masuk.
- **Hasil (Output):** Transaksi dilanjutkan ke **Step 5** dan *project* dinyatakan resmi **Selesai (Closed)**.

---

## Arsitektur Khusus: Controller MasterData (Fase Operasional: Step 3 - Step 5)

Mulai dari **Step 3 dan seterusnya**, alur bisnis diambil alih secara intensif oleh sebuah *controller* khusus bernama `MasterData.php`. *Controller* ini bekerja paralel namun terpisah dari fungsi *Create* dan *FollowUp* reguler. Ia menyediakan **UI terpisah (Project Dashboard/Workspace)** untuk mengontrol secara mikro eksekusi lapangan dari sebuah *project*.

### Cakupan Fungsi Operasional MasterData:
1.  **Manajemen Anggaran & Struktur Pekerjaan:**
    - Pembuatan dan *Edit* RAB (Rencana Anggaran Biaya).
    - Pembuatan, *Edit*, dan Hapus (*Delete*) paket *Work Order* (WO).
2.  **Manajemen SPK (Surat Perintah Kerja):**
    - Pembuatan SPK Reguler.
    - Pembuatan SPK Tambahan.
    - *Edit* & Hapus SPK.
    - *Approval* (Persetujuan) dari penambahan SPK Tambahan.
3.  **Manajemen Logistik Lapangan:**
    - Distribusi material (FG & *Supplies*) ke masing-masing SPK (Reguler maupun Tambahan).
    - Pencatatan eksekusi/pelaksanaan oleh pelaksana proyek yang ditunjuk di SPK.
    - Proses pengembalian (*Return*) material sisa atau rusak dari pelaksana kembali ke Gudang Cabang Project.
4.  **Kontrol Kualitas & Biaya:**
    - Proses *Quality Control* (QC) terhadap hasil pengerjaan SPK.
    - Penerbitan (posting) biaya-biaya pendukung yang telah di-*approve* oleh SPV/Manager Project.

### Catatan Kesesuaian (*Codebase Alignment*)
Dari hasil validasi silang dengan *codebase* saat ini, *controller* `MasterData.php` terbukti sudah dirancang untuk mengakomodasi seluruh fungsi di atas. 

Secara arsitektural (*Clean Code*), file `MasterData.php` bertindak sebagai *Façade/Router* cerdas yang mendelegasikan beban operasional ini kepada sistem mesin (*Engines*) berbasis HMVC Models, seperti:
- `ComProjectWorkOrderEngine.php` (menangani komposisi & *Work Order*).
- `ComProjectExecutionEngine.php` (menangani penerbitan SPK, distribusi, *return*, penugasan, dan eksekusi QC).
- `ComProjectFinanceEngine.php` (menangani agregasi biaya-biaya dan anggaran).
- Terdapat fungsi spesifik seperti `editBom()`, `saveBom()`, `authorizeBom()` yang digunakan khusus untuk manipulasi RAB.

**Status:** Keseluruhan perancangan alur bisnis MasterData di atas **TELAH SESUAI** dan terdukung sepenuhnya oleh fungsionalitas (*function hooks*) di dalam *codebase* tanpa ada yang tertinggal atau hilang secara fungsional kerangka kerjanya.
