# BLUEPRINT CETAK BIRU MODUL: PEMBAYARAN (ACCOUNTS PAYABLE & SETTLEMENTS)
**Modul:** `pembayaran`  
**Workspace:** `new_san_variant`  
**Standard:** Single Variant Standard & Dual-Write Rollout  
**Tanggal Analisis:** 2026-07-29  

---

## 1. IDENTITAS MODUL

- **Nama Modul:** `pembayaran`
- **Pola Kompleksitas:** **Transaksi Kompleks** (Pelunasan Hutang Dagang / AP Settlement, Multi-Invoice Matching via `_processSelectNota`, Pembayaran Varian Giro/Mundur, Pengalokasian Potongan Diskon Pelunasan, & Auto Reversal Overdue Pass).
- **Jenis Transaksi (`jenisTr` Utama):**
  - `489` : Pelunasan Hutang Pembelian (Accounts Payable Payment)
  - `462` : Pembayaran Hutang Biaya / Utang Giro
  - `487` : Pembayaran Biaya Transaksi & Freight
  - `4447`: Pembayaran Potongan Pajak & Retensi
  - `682` : Pelunasan Piutang Penjualan

---

## 2. DAFTAR FUNGSI & LOGIKA BISNIS (REVERSE ENGINEERING)

### 2.1 Base Controller & Configuration

#### [Modul_Controller.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembayaran/controllers/Modul_Controller.php)
- **Fungsi `__construct()`**: Load config `coTransaksiUi`, `coTransaksiCore`, `coTransaksiLayout`, `coTransaksiValues`, initialize session & table mappings.

---

### 2.2 Entry Pembayaran & Multi-Invoice Matcher

#### [_processSelectNota.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembayaran/controllers/_processSelectNota.php) & [_processSelectNota2.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembayaran/controllers/_processSelectNota2.php)
- **Fungsi Multi-Invoice Matcher**:
  - *Input*: `POST` ID Vendor / Supplier (`pihakID`), Nomor Faktur / Transaksi.
  - *Logic*: Menampilkan seluruh sisa faktur hutang yang belum lunas (outstanding AP), memungkinkan pembayaran parsial atau pelunasan sekaligus untuk banyak nota dalam 1 bukti bayar.

#### [Create.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembayaran/controllers/Create.php)
- **Fungsi `index()`, `preview()`, `save()`**: Form Step 1 pencarian vendor & nota, Step 2 preview alokasi Kas/Bank/Giro & diskon pelunasan, Save draft transaksi pembayaran.

---

### 2.3 Executing & FollowUp Approval

#### [FollowUp.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembayaran/controllers/FollowUp.php)
- **Fungsi `doFollowup()`** *(Execution AP Settlement)*:
  - *Query & Models*:
    1. **AP Rebalancing**: Mengurangi nilai saldo sisa hutang pada `transaksi_values` faktur pembelian yang dilunasi.
    2. **Jurnal Pelunasan**: Memanggil `ComJurnal` mencatat Hutang Dagang (D) vs Kas/Bank/Utang Giro (K) & Potongan Pelunasan (K).
    3. **Overdue Pass Check**: Memanggil `MdlOverDuePass` jika pelunasan melewati tenggat waktu toleransi kredit.
    4. **Registry Update**: Log step registrasi di `transaksi_registry`.

---

## 3. IDENTIFIKASI PERBEDAAN DENGAN MOCKUP GLOBAL

| No | Komponen / Fitur Unik | Deskripsi & Perbedaannya dengan Mockup Standar |
|:--:|:----------------------|:------------------------------------------------|
| 1 | **Multi-Invoice AP Matcher (`_processSelectNota`)** | Sub-controller khusus untuk memilih multiple faktur pembelian yang akan dilunasi dalam 1 transaksi pembayaran. |
| 2 | **Giro / Cheque Clearing Management** | Penanganan pembayaran menggunakan Giro Mundur (pencatatan status cair/tolak). |
| 3 | **Overdue Pass & Settlement Discount** | Verifikasi otorisasi toleransi keterlambatan bayar dan alokasi diskon pelunasan cepat (early settlement discount). |

---

## 4. ARSITEKTUR KODE BARU (THE BLUEPRINT)

### 4.1 Struktur Controller Baru

```
application/modules/pembayaran/
├── config/
│   ├── coTransaksiCore.php
│   ├── coTransaksiUi.php
│   ├── coTransaksiLayout.php
│   └── coTransaksiValues.php
├── controllers/
│   ├── Modul_Controller.php       # Base controller
│   ├── Create.php                 # Form AP Settlement Entry
│   ├── FollowUp.php               # Approval & Payment Execution
│   ├── Transaksi.php              # Payment List
│   ├── Pembayaran.php             # Payment Engine
│   ├── ActivityReport.php         # Laporan Pembayaran Hutang
│   ├── History.php                # Riwayat Pembayaran
│   ├── Printing.php               # Cetak Bukti Pembayaran / Voucher Kas Keluar
│   ├── ViewDetails.php            # Modal Detail View
│   ├── _processSelectNota.php     # Multi-Invoice AP Matcher
│   └── _shoppingCart.php          # Cart Manager
└── views/
    ├── transaksi_modul.php
    ├── shoppingCart.php
    └── printing.php
```

---

### 4.2 Panduan Langkah-demi-Langkah Developer

1. **Langkah 1: Optimalkan Multi-Invoice Matcher pada `_processSelectNota.php`**
   - Memastikan pembaruan saldo outstanding faktur akurat per nota.

2. **Langkah 2: Integrasikan `ComJurnal` pada `FollowUp.php`**
   - Mencatat pengeluaran Kas/Bank/Giro dan pengurangan Hutang Dagang secara presisi.

3. **Langkah 3: Verifikasi PHP 5.6 & Update UAT Checklist**
   - Lakukan linting `C:\xampp\php\php.exe -l` dan update `docs/uat-checklist.md`.

---

### 5. KESIMPULAN & STATUS EKSEKUSI

- 🟢 **Pekerjaan Selesai (Completed & Verified)**:
  1. Blueprint modul `pembayaran` diselesaikan.
  2. File [blueprint_pembayaran.md](file:///c:/xampp/htdocs/new_san_variant/blueprint_pembayaran.md) dan `dev-jurnal.md` diterbitkan.
