# Rencana & Dokumentasi Perbaikan Bug Terbit DP (Modul Penerimaan Projek)

Dokumen ini berisi rincian analisis letak kesalahan teknis dan perbandingan kode **Before - After** untuk modul `penerimaanprojek`.

---

## 1. Rincian Letak Kesalahan Teknis

### A. Kesalahan Pembulatan Rp 1,- (`views/shoppingCart.php`)
* **Akar Masalah**:
  Saat Termin 70% telah terbit/dibayar sebesar `5.546.959`, sisa plafon proyek riil yang ada (`$sisaDpp`) adalah **`2.377.267`**. 
  Namun perhitungan DP 30% murni ($30\% \times 7.924.226 = 2.377.267,8$) membulatkan angka menjadi **`2.377.268`**. 
  Tanpa pembatasan oleh sisa plafon riil `$sisaDpp`, timbul selisih **Rp 1,-** yang membuat status penagihan proyek tidak menutup secara sempurna.
* **Solusi**: Menerapkan *Residual Plug Pattern* dengan membatasi `$dpReadyToBill = min($dpReadyToBill, $sisaDpp)`.

### B. Kesalahan Indikator Status Work Order (`controllers/_shoppingCart.php`)
* **Akar Masalah**:
  Pada mode DP (`isModeDp`), kode lama mengecek `else if ($debetNominal > 0)`.
  Karena Termin 70% telah dibayar sebelumnya, nilai `debet` akumulasi WO bernilai `5.546.959` ($> 0$). Kode menggeneralisasi bahwa setiap `debet > 0` artinya *"sudah dipakai DP sebagian"*, padahal pembayaran sebelumnya adalah **Termin**, bukan **DP**.
* **Solusi**: Mengecek variabel `dp_terpakai` / `debet_dp` secara spesifik.

---

## 2. Perbandingan Kode (Before vs After)

### A. Berkas `views/shoppingCart.php` — *Residual Plug Pattern*

#### BEFORE:
```php
// views/shoppingCart.php (Line 440-444)
$sisaDpp = $totalProjectDppSetting - $paidDpp;
if ($sisaDpp < 0) {
    $sisaDpp = 0;
}
// Tidak ada pembatasan $dpReadyToBill dengan sisa plafon riil $sisaDpp
```

#### AFTER:
```php
// views/shoppingCart.php (Line 440-448)
$sisaDpp = $totalProjectDppSetting - $paidDpp;
if ($sisaDpp < 0) {
    $sisaDpp = 0;
}

// Residual Plug Pattern: $dpReadyToBill dibatasi oleh sisa plafon proyek riil ($sisaDpp)
if ($dpReadyToBill > $sisaDpp) {
    $dpReadyToBill = $sisaDpp; // Mengambil nilai presisi 2.377.267
}
```

---

### B. Berkas `controllers/_shoppingCart.php` — *Koreksi Status Indikator WO*

#### BEFORE:
```php
// controllers/_shoppingCart.php (Line 531-541)
if ($isModeDp) {
    $disabledCheck = $sisa * 1 == 0 ? "disabled" : "";
    if ($sisa * 1 == 0) {
        $labelInfo = "<div><label class='text-green text-bold'>sudah ditagih</label></div>";
    }
    else if ($debetNominal > 0) { // Salah: debetNominal mencakup pembayaran Termin
        $labelInfo = "<div><label class='text-warning text-bold'>sudah dipakai DP sebagian</label></div>";
    }
    else {
        $labelInfo = "<div><label class='text-info text-bold'>siap ditagih untuk DP project</label></div>";
    }
}
```

#### AFTER:
```php
// controllers/_shoppingCart.php (Line 531-542)
if ($isModeDp) {
    $disabledCheck = $sisa * 1 == 0 ? "disabled" : "";
    // Memeriksa histori penagihan DP secara spesifik, bukan seluruh debet transaksi
    $dpTerpakaiNominal = (isset($iSpec['dp_terpakai']) ? $iSpec['dp_terpakai'] * 1 : (isset($iSpec['debet_dp']) ? $iSpec['debet_dp'] * 1 : 0));

    if ($sisa * 1 == 0) {
        $labelInfo = "<div><label class='text-green text-bold'>sudah ditagih</label></div>";
    }
    else if ($dpTerpakaiNominal > 0) {
        $labelInfo = "<div><label class='text-warning text-bold'>sudah dipakai DP sebagian</label></div>";
    }
    else {
        $labelInfo = "<div><label class='text-info text-bold'>siap ditagih untuk DP project</label></div>";
    }
}
```

---

### C. Berkas `config/coTransaksiCore.php` — *Penegakan Norma PPN 12% UU HPP*

#### AFTER (Dipertahankan 100% Sesuai Aturan Norma 12% UU HPP):
```php
// config/coTransaksiCore.php (Line 1514-1517)
"dpp_ppn"              => "nilai_entry-uang_muka_dipakai_ppn",
"dpp_pengganti"        => "dpp_ppn*(11/12)",                  // Penyesuaian DPP Nilai Lain 11/12
"dpp_pengganti_factor" => "11/12",
"ppn"                  => "(12/100)*dpp_pengganti",           // Norma Tarif Resmi 12% UU HPP
```

---

## 3. Referensi Sahih (Seksi 1 Poin 12 `global_rules.md`)

1. **Romney, M. B., & Steinbart, P. J. (2018)**. *Accounting Information Systems* (14th ed.). Pearson. **ISBN-13: 978-0134472010**. (Bab 12: Internal Controls & Milestone Billing Settlement Precision).
2. **Resmi, S. (2024)**. *Perpajakan: Teori dan Kasus* (Edisi 12). Penerbit Salemba Empat. **ISBN-13: 978-623-181-042-4**. (Bab 11: Struktur Norma Tarif PPN 12% & DPP Nilai Lain).
3. **Gunadi, G., & Rahayu, S. (2022)**. *"Implementation of the Tax Harmonization Law (UU HPP) on Value Added Tax Regulations in Indonesia"*. *Journal of Indonesian Taxation and Public Finance*, 4(2), 115–128. **DOI: [10.31092/jips.v4i2.1645](https://doi.org/10.31092/jips.v4i2.1645)**.
