# BLUEPRINT CETAK BIRU MODUL: OPEN BALANCE (SALDO AWAL SISTEM)
**Modul:** `openbalance`  
**Workspace:** `new_san_variant`  
**Standard:** Single Variant Standard & Dual-Write Rollout  
**Tanggal Analisis:** 2026-07-29  

---

## 1. IDENTITAS MODUL

- **Nama Modul:** `openbalance`
- **Pola Kompleksitas:** **Transaksi Kompleks** (Inisialisasi Saldo Awal Akuntansi / Initial Trial Balance, Opening Stock Bervarian, Saldo Awal Hutang & Piutang, CLI Batch Transaksi via `CliTransaksi.php`, & Setup Ledger Initial Balance).
- **Peran Sistem:** Penetapan Saldo Awal (Cut-off Date Initial Balances) untuk Go-Live Sistem ERP.

---

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

### 2.1 Base Controller & Configuration

#### [Modul_Controller.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/openbalance/controllers/Modul_Controller.php)
- **Fungsi `__construct()`**: Load config & inisialisasi session otorisasi administrator/akuntan.

---

### 2.2 CLI Batch & Initial Setup Engine

#### [CliTransaksi.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/openbalance/controllers/CliTransaksi.php)
- **Fungsi Batch Setup Saldo Awal**:
  - *Input*: File Excel / JSON payload saldo awal COA, stok barang bervarian, piutang customer, & hutang supplier.
  - *Logic*: Memproses inisialisasi saldo awal secara massal via CLI / Background Task, menulis entri awal ke `com_jurnal`, `transaksi_values`, dan Dual-Write Stock Locker (`ComLockerStockDualWrite`).

#### [Create.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/openbalance/controllers/Create.php)
- **Fungsi `index()`, `preview()`, `save()`**: Form UI input saldo awal per-akun perkiraan (COA balance initialization).

---

### 2.3 Executing & FollowUp Approval

#### [FollowUp.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembayaran/controllers/FollowUp.php)
- **Fungsi `doFollowup()`** *(Execution Initial Balance)*:
  - *Query & Models*:
    1. **Initial Stock Locker Rebalance**: Menulis stok awal barang & varian ke `stock_locker` dan `stock_locker_variant` (`+active`).
    2. **Jurnal Saldo Awal**: Memanggil `ComJurnal` mencatat Modal / Ekuitas Saldo Awal (K) vs Aktiva / Persediaan / Piutang Saldo Awal (D).
    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 | **CLI Batch Ingestion (`CliTransaksi.php`)** | Sub-controller khusus berbasis CLI / Command Line untuk impor saldo awal massal dari file migrasi data lama. |
| 2 | **Initial Balance Opening Ledger Rebalance** | Menyeimbangkan seluruh Modal Awal (Equity Cut-off) dengan Aktiva, Stok, AP, dan AR saat migrasi. |

---

## 4. ARSITEKTUR KODE BARU (THE BLUEPRINT)

### 4.1 Struktur Controller Baru

```
application/modules/openbalance/
├── config/
│   ├── coTransaksiCore.php
│   ├── coTransaksiUi.php
│   ├── coTransaksiLayout.php
│   └── coTransaksiValues.php
├── controllers/
│   ├── Modul_Controller.php       # Base controller
│   ├── Create.php                 # Form Opening Balance Entry
│   ├── FollowUp.php               # Approval & Ledger Cut-off Execution
│   ├── Transaksi.php              # Opening Balance List
│   ├── CliTransaksi.php           # CLI Batch Data Ingestion Engine
│   ├── ActivityReport.php         # Laporan Audit Saldo Awal
│   ├── History.php                # Riwayat Setup Saldo Awal
│   ├── Printing.php               # Cetak Laporan Saldo Awal Go-Live
│   └── ViewDetails.php            # Modal Detail View
└── views/
    ├── transaksi_modul.php
    ├── shoppingCart.php
    └── printing.php
```

---

### 4.2 Panduan Langkah-demi-Langkah Developer

1. **Langkah 1: Optimalkan `CliTransaksi.php` untuk Impor Massal Data Migrasi**
   - Pastikan impor stok awal memasukkan `variant_id` ke `stock_locker_variant`.

2. **Langkah 2: Integrasikan `ComJurnal` pada `FollowUp.php`**
   - Mencatat penyeimbang saldo awal ke akun Ekuitas / Modal Awal Go-Live.

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