# Rencana Implementasi: 3 Kolom Finansial Wajib (HPP Modal, Harga Budget, Harga Jual Project)

Standarisasi tampilan seluruh antarmuka yang memuat rincian **Material** dan **Biaya / Jasa** di modul `master_project` (588) agar secara konsisten menampilkan 3 pilar angka finansial:
1. **`HPP Modal`**: Modal pokok pengadaan dari supplier / master data.
2. **`Harga Budget`**: Plafon / batas maksimal anggaran belanja internal proyek.
3. **`Harga Jual Project`**: Harga penawaran / tagihan resmi ke Klien (RAB Klien).

---

## User Review Required

> [!IMPORTANT]
> **Pembaruan Skema Database:**
> Untuk memastikan nilai `Harga Budget` tersimpan permanen dan tidak hilang saat beralih antar tahap transaksi, kita akan menambahkan kolom `harga_budget` (`DECIMAL(24,10) DEFAULT 0`) pada 4 tabel:
> - `project_komposisi`
> - `project_komposisi_workoder`
> - `project_komposisi_sub_workoder`
> - `project_komponen_biaya_details`

---

## Proposed Changes

```mermaid
flowchart TD
    subgraph Fase1["Fase 1: Database & Model"]
        DB["Alter Table (4 tabel: harga_budget)"] --> MDL["Update Model Mdls"]
    end

    subgraph Fase2["Fase 2: Shopping Cart (Penawaran)"]
        UI["coTransaksiUi.php (3 Kolom & AdditionalRows)"]
        CART["_shoppingCart.php & template/transaksi.html"]
        VIEW["views/shoppingCart.php"]
    end

    subgraph Fase3["Fase 3: FollowUp (Approval & Kickoff)"]
        FU_HEAD["FollowUp.php (Ringkasan Atas & Mini Table)"]
        FU_SAVE["FollowUp.php (Simpan harga_budget ke DB)"]
    end

    subgraph Fase4["Fase 4: MasterData (RAB Eksekusi)"]
        MD_TAB["MasterData.php (Tabel Material & Biaya)"]
        MD_FOOT["MasterData.php (Footer Summary)"]
        MD_EDIT["_projectItemEditor.php"]
    end

    Fase1 --> Fase2 --> Fase3 --> Fase4
```

---

### Fase 1: Fondasi Database & Model Bisnis

#### [MODIFY] Database Skema (Migration)
- Menambahkan kolom `harga_budget` pada tabel:
  - `project_komposisi`
  - `project_komposisi_workoder`
  - `project_komposisi_sub_workoder`
  - `project_komponen_biaya_details`

#### [MODIFY] [MdlProjectKomposisi.php](file:///w:/everest_29agus/application/models/Mdls/MdlProjectKomposisi.php)
- Daftarkan field `harga_budget` di `$fields` dan `$listedFields`.

#### [MODIFY] [MdlProjectKomposisiWorkorder.php](file:///w:/everest_29agus/application/models/Mdls/MdlProjectKomposisiWorkorder.php)
- Daftarkan field `harga_budget` di `$fields`, `$listedFields`, dan `lookUpKomposisiFase()`.

#### [MODIFY] [MdlProjectKomposisiWorkorderSub.php](file:///w:/everest_29agus/application/models/Mdls/MdlProjectKomposisiWorkorderSub.php)
- Daftarkan field `harga_budget` di `$fields`, `$listedFields`, dan `lookUpKomposisiFase()`.

#### [MODIFY] [MdlProjectKomponenBiayaDetails.php](file:///w:/everest_29agus/application/models/Mdls/MdlProjectKomponenBiayaDetails.php)
- Daftarkan field `harga_budget` di model biaya details.

---

### Fase 2: Shopping Cart / Penawaran Awal

#### [MODIFY] [coTransaksiUi.php](file:///w:/everest_29agus/application/modules/master_project/config/coTransaksiUi.php)
- **Tabel Material (`shoppingCartNumFields2` & `shoppingCartEditableFields2`)**:
  - `jml` => "Jumlah" *(Editable)*
  - `hpp_supplier` => "HPP Modal" *(Read-only)*
  - `harga_budget` => "Harga Budget" *(Editable)*
  - `harga` => "Harga Jual Project" *(Editable)*
  - `subtotal` => "Subtotal" *(Read-only)*
- **Tabel Biaya (`shoppingCartNumFields3` & `shoppingCartEditableFields3`)**:
  - `jml` => "Jumlah" *(Editable)*
  - `anggaran` => "HPP Biaya (Modal)" *(Read-only)*
  - `harga_budget` => "Budget Biaya" *(Editable)*
  - `harga` => "Harga Jual Project" *(Editable)*
  - `subtotal` => "Subtotal" *(Read-only)*
- **Ringkasan Bawah (`additionalRows`)**:
  - `total_anggaran`: "Total Modal / HPP Proyek"
  - `total_budget`: "Total Budget Anggaran Proyek"
  - `harga_non_ppn`: "Total Rincian Jual Barang"
  - `harga_jual_project`: "Harga Kontrak Project (Excl.PPN)"
  - `harga_jual_project_ppn`: "PPN (11%)"
  - `harga_jual_project_nppn`: "GrandTotal"
  - `perkiraan_rl_hpp`: "Estimasi Laba Kotor (Profit)"
  - `perkiraan_rl_ang`: "Selisih Kontrak vs Rincian"

#### [MODIFY] [_shoppingCart.php](file:///w:/everest_29agus/application/modules/master_project/controllers/_shoppingCart.php)
- Pastikan pembacaan dan penyimpanan `harga_budget` ke `$_SESSION[$cCode]['items2_sum']` dan `$_SESSION[$cCode]['items3_sum']` terjaga utuh.

---

### Fase 3: FollowUp (Review & Approval Proyek)

#### [MODIFY] [FollowUp.php](file:///w:/everest_29agus/application/modules/master_project/controllers/FollowUp.php)
1. **Ringkasan Eksekutif Atas**:
   - Kolom: `No` | `Project Desc` | `Qty` | `Total HPP (Modal)` | `Total Budget` | `Total Jual Project` | `Estimasi Profit` | `Margin %`.
2. **Mini Table Material & Biaya**:
   - Material: `No` | `Material` | `UoM` | `HPP Modal` | `Harga Budget` | `Harga Jual` | `Qty` | `Total HPP` | `Total Jual`.
   - Biaya: `No` | `Jasa` | `Cat` | `UoM` | `Ket` | `HPP Biaya` | `Budget Biaya` | `Harga Jual` | `Qty` | `Total HPP` | `Total Jual`.
3. **Penyimpanan Transaksi Sah (Approval to Master Project)**:
   - Menyimpan nilai `harga_budget` dari session ke tabel `project_komposisi`, `project_komposisi_workoder`, dan `project_komposisi_sub_workoder`.

---

### Fase 4: MasterData (RAB Eksekusi Proyek Berjalan)

#### [MODIFY] [MasterData.php](file:///w:/everest_29agus/application/modules/master_project/controllers/MasterData.php)
1. **Header & Tabel Komposisi Work Order (Material & Biaya)**:
   - Memastikan kolom `HPP Modal`, `Harga Budget`, dan `Harga Jual` ditampilkan pada tabel work order maupun sub-fase.
2. **Footer Summary**:
   - Menampilkan ringkasan: `Total HPP (Modal)`, `Total Budget`, `Total Jual (Excl. PPN)`, `Total Profit / Laba Kotor`, dan `Selisih Kontrak vs Rincian`.

#### [MODIFY] [_projectItemEditor.php](file:///w:/everest_29agus/application/modules/master_project/controllers/_projectItemEditor.php)
- Sinkronisasi modal editor agar mendukung input `Harga Budget`.

---

## Verification Plan

### Automated Tests / Syntax Checks
- Menjalankan PHP Lint (`php -l`) pada semua berkas yang dimodifikasi untuk memastikan kepatuhan PHP 5.6:
  ```bash
  php -l application/modules/master_project/config/coTransaksiUi.php
  php -l application/modules/master_project/controllers/_shoppingCart.php
  php -l application/modules/master_project/controllers/FollowUp.php
  php -l application/modules/master_project/controllers/MasterData.php
  php -l application/modules/master_project/controllers/_projectItemEditor.php
  ```

### Manual Verification
1. **Shopping Cart:** Buka modul `master_project`, buat transaksi penawaran baru, verifikasi tabel Material dan Biaya mengeluarkan 3 kolom (`HPP Modal`, `Harga Budget`, `Harga Jual Project`) beserta perhitungan live-nya.
2. **FollowUp Preview:** Buka preview dokumen draf penawaran, pastikan 3 kolom tampil rapi di ringkasan atas dan detail bawah.
3. **MasterData View:** Buka master project aktif, verifikasi bahwa tabel rincian komposisi dan summary bawah menampilkan perbandingan HPP vs Budget vs Jual secara akurat.
