# BLUEPRINT CETAK BIRU MODUL: KONVERSI STOK & SATUAN
**Modul:** `konversi`  
**Workspace:** `new_san_variant`  
**Standard:** Single Variant Standard & Dual-Write Rollout  
**Tanggal Analisis:** 2026-07-29  

---

## 1. IDENTITAS MODUL

- **Nama Modul:** `konversi`
- **Pola Kompleksitas:** **Transaksi Kompleks** (Konversi Unit / Satuan Produk via `_processSelectProductConvertionSatuan`, Re-packing Barang, Conversi Produk A ke Produk B, Rebalance HPP & FIFO via `ComFifoProdukJadiVarian`, & Dual-Write Stock Locker).
- **Jenis Transaksi (`jenisTr`):**
  - `334`  : Konversi Satuan Barang (Unit Conversion e.g. Dus -> Pcs)
  - `335`  : Repacking / Pengemasan Ulang Produk
  - `1334` : Konversi Produk A ke Produk B
  - `2334` : Konversi Supplies / Bahan Penolong

---

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

### 2.1 Base Controller & Configuration

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

---

### 2.2 Entry Konversi & Conversion Engine

#### [_processSelectProductConvertion.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/konversi/controllers/_processSelectProductConvertion.php) & [_processSelectProductConvertionSatuan.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/konversi/controllers/_processSelectProductConvertionSatuan.php)
- **Fungsi Conversion Handlers**:
  - *Logic*: Pengurangan barang asal (sumber) dan pembentukan barang hasil konversi (target) dengan memperhitungkan faktor konversi unit & `variant_id`.
  - Mengunci stok barang asal pada `hold` state di `ComLockerStockDualWrite`.

#### [Create.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/konversi/controllers/Create.php)
- **Fungsi `index()`, `preview()`, `save()`**: Entry draf transaksi konversi stok & kalkulasi rasio HPP.

---

### 2.3 Executing & FollowUp Approval

#### [FollowUp.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/konversi/controllers/FollowUp.php)
- **Fungsi `doFollowup()`** *(Execution Conversion Rebalancing)*:
  - *Query & Models*:
    1. **Dual-Write Stock Rebalancing**: Memanggil `ComLockerStockDualWrite::pair()` untuk pengurangan stok barang asal (`-active`) dan penambahan stok barang hasil konversi (`+active`) secara atomik.
    2. **FIFO Entry Target**: Memanggil `ComFifoProdukJadiVarian` untuk mencatat lot FIFO HPP hasil konversi.
    3. **Jurnal Konversi**: Memanggil `ComJurnal` mencatat Persediaan Hasil Konversi (D) vs Persediaan Barang Asal (K).
    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 | **Unit Conversion Engine (`_processSelectProductConvertionSatuan.php`)** | Perkalian/pembagian faktor konversi satuan (misal: 1 Dus = 12 Pcs) dengan HPP proporsional. |
| 2 | **FIFO Re-batching (`ComFifoProdukJadiVarian`)** | Pembuatan lot FIFO baru untuk barang hasil konversi dengan HPP yang disesuaikan. |
| 3 | **Dual-Write Rebalancing (`ComLockerStockDualWrite`)** | Mutasi stok barang asal -> barang hasil konversi via `ComLockerStockDualWrite`. |

---

## 4. ARSITEKTUR KODE BARU (THE BLUEPRINT)

### 4.1 Struktur Controller Baru

```
application/modules/konversi/
├── config/
│   ├── coTransaksiCore.php
│   ├── coTransaksiUi.php
│   ├── coTransaksiLayout.php
│   └── coTransaksiValues.php
├── controllers/
│   ├── Modul_Controller.php       # Base controller
│   ├── Create.php                 # Form Stock Conversion Entry
│   ├── FollowUp.php               # Approval & Execution Conversion
│   ├── Transaksi.php              # Conversion Order List
│   ├── ActivityReport.php         # Laporan Konversi Stok
│   ├── History.php                # Riwayat Konversi
│   ├── Printing.php               # Cetak Voucher Konversi
│   ├── ViewDetails.php            # Modal Detail (Multi-Variant Safe)
│   ├── _processSelectProductConvertion.php # Product Conversion Engine
│   ├── _processSelectProductConvertionSatuan.php # Unit Ratio Engine
│   └── _shoppingCart.php          # Cart Rebalancer Manager
└── views/
    ├── transaksi_modul.php
    ├── shoppingCart.php
    └── printing.php
```

---

### 4.2 Panduan Langkah-demi-Langkah Developer

1. **Langkah 1: Gunakan `ComLockerStockDualWrite` pada Conversion Processors**
   - Gunakan `ComLockerStockDualWrite::pair()` untuk pengurangan stok barang asal dan penambahan barang hasil konversi.

2. **Langkah 2: Integrasikan `ComFifoProdukJadiVarian` pada `FollowUp.php`**
   - Pastikan batch HPP barang hasil konversi tercatat rapi di model FIFO.

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