# BLUEPRINT CETAK BIRU MODUL: KAS & BANK (CASH & BANK MUTATION)
**Modul:** `kas`  
**Workspace:** `new_san_variant`  
**Standard:** Single Variant Standard & Dual-Write Rollout  
**Tanggal Analisis:** 2026-07-29  

---

## 1. IDENTITAS MODUL

- **Nama Modul:** `kas`
- **Pola Kompleksitas:** **Transaksi Kompleks** (Mutasi Transfer Kas <-> Bank, Transfer Inter-Bank, Penyetoran Tunai, Penarikan Tunai, Transfer Valas / Foreign Currency via `_processSelectValas`, Selisih Kas, & Journal Mutasi).
- **Jenis Transaksi (`jenisTr` Utama):**
  - `759` : Transfer Kas Ke Bank (Cash Deposit)
  - `758` : Transfer Bank Ke Kas (Bank Withdrawal)
  - `464` : Transfer Bank Ke Bank (Inter-Bank Transfer)
  - `453` : Adjust / Penyesuaian Saldo Kas (Selisih Lebih / Kurang)
  - `7759`: Transfer Kas/Bank Valas

---

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

### 2.1 Base Controller & Configuration

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

---

### 2.2 Entry Transfer Kas & Valas Selector

#### [_processSelectValas.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/kas/controllers/_processSelectValas.php)
- **Fungsi Foreign Currency Engine**:
  - *Input*: Currency ID (USD, EUR, SGD), Kurs Transaksi, Nominal Valas.
  - *Logic*: Menghitung konversi Rupiah berdasarkan kurs mutasi kas/bank.

#### [Create.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/kas/controllers/Create.php)
- **Fungsi `index()`, `preview()`, `save()`**: Entry draf mutasi kas/bank (Akun Sumber -> Akun Tujuan), nominal transfer, & bukti pendukung.

---

### 2.3 Executing & FollowUp Approval

#### [FollowUp.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/kas/controllers/FollowUp.php)
- **Fungsi `doFollowup()`** *(Execution Cash Mutation)*:
  - *Query & Models*:
    1. **Cash/Bank Balance Rebalancing**: Update saldo kas/bank sumber (`-saldo`) dan kas/bank tujuan (`+saldo`).
    2. **Jurnal Mutasi**: Memanggil `ComJurnal` mencatat Rekening Bank Tujuan (D) vs Kas/Bank Sumber (K) & Biaya Transfer Bank (D jika ada).
    3. **Registry Update**: Log step registrasi di `transaksi_registry`.

---

## 3. IDENTIFIKASI PERBEDAAN DENGAN MOCKUP GLOBAL

| No | Komponen / Fitur Unik | Deskripsi & Perbedaannya dengan Mockup Standar |
|:--:|:----------------------|:------------------------------------------------|
| 1 | **Dual-Account Cash Balance Rebalancer** | Mengubah saldo 2 akun Kas/Bank sekaligus secara simetris di buku besar. |
| 2 | **Valas Currency Converter (`_processSelectValas`)** | Sub-controller khusus untuk transaksi mutasi kas/bank dalam mata uang asing. |

---

## 4. ARSITEKTUR KODE BARU (THE BLUEPRINT)

### 4.1 Struktur Controller Baru

```
application/modules/kas/
├── config/
│   ├── coTransaksiCore.php
│   ├── coTransaksiUi.php
│   ├── coTransaksiLayout.php
│   └── coTransaksiValues.php
├── controllers/
│   ├── Modul_Controller.php       # Base controller
│   ├── Create.php                 # Form Cash Mutation Entry
│   ├── FollowUp.php               # Approval & Execution Transfer
│   ├── Transaksi.php              # Cash Mutation List
│   ├── ActivityReport.php         # Laporan Mutasi Kas & Bank
│   ├── History.php                # Riwayat Mutasi
│   ├── Printing.php               # Cetak Voucher Transfer Kas/Bank
│   ├── ViewDetails.php            # Modal Detail View
│   ├── _processSelectValas.php    # Foreign Currency Converter
│   └── _shoppingCart.php          # Cart Manager
└── views/
    ├── transaksi_modul.php
    ├── shoppingCart.php
    └── printing.php
```

---

### 4.2 Panduan Langkah-demi-Langkah Developer

1. **Langkah 1: Gunakan `_processSelectValas.php` untuk Mutasi Mata Uang Asing**
   - Pastikan kalkulasi kurs valas ke Rupiah tercatat presisi di `transaksi_values`.

2. **Langkah 2: Integrasikan `ComJurnal` pada `FollowUp.php`**
   - Mencatat perpindahan dana antar-rekening kas/bank.

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 `kas` diselesaikan.
  2. File [blueprint_kas.md](file:///c:/xampp/htdocs/new_san_variant/blueprint_kas.md) dan `dev-jurnal.md` diterbitkan.
