# BLUEPRINT CETAK BIRU MODUL: PEMBELIAN IMPORT
**Modul:** `pembelianimport`  
**Workspace:** `new_san_variant`  
**Standard:** Single Variant Standard & Dual-Write Rollout  
**Tanggal Analisis:** 2026-07-29  

---

## 1. IDENTITAS MODUL

- **Nama Modul:** `pembelianimport`
- **Pola Kompleksitas:** **Transaksi Kompleks** (Pembelian Barang Impor, Kurs Foreign Currency / Valas, Bea Masuk, PPh 22 Impor, Landed Cost Distribution ke HPP Varian Produk, Dual-Write Stock Locker Entry).
- **Jenis Transaksi (`jenisTr`):**
  - `461` : Pembelian Impor Reguler (Import Purchase Order / Commercial Invoice)
  - `466` : Down Payment Import (DP Valas)
  - `487` : Landed Cost Allocation (Biaya Freight & Bea Cukai)
  - `961` : Retur Pembelian Impor

---

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

### 2.1 Base Controller & Configuration

#### [Modul_Controller.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianimport/controllers/Modul_Controller.php)
- **Fungsi `__construct()`**:
  - *Input*: `URI segment(4)` -> `$this->jenisTr`, `URI segment(1)` -> `$this->modul`.
  - *Validasi*: Login session & access rights.
  - *Config Loaded*: `coTransaksiUi`, `coTransaksiCore`, `coTransaksiLayout`, `coTransaksiValues`.
  - *State Mapping*: `$this->mongoTableList`.

---

### 2.2 Entry Transaksi & Landed Cost Engine

#### [Create.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianimport/controllers/Create.php)
- **Fungsi `index()`**: Entry form supplier luar negeri, mata uang (USD, EUR, RMB), kurs pajak, & barang impor bervarian.
- **Fungsi `preview()`**: Preview Landed Cost (FOB + Freight + Insurance + Bea Masuk) per varian barang.
- **Fungsi `save()`**: Save draft transaksi impor ke database.

#### [_processSelectProductException.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianimport/controllers/_processSelectProductException.php)
- **Fungsi Landed Cost Distribution**:
  - *Logic*: Distribusi alokasi biaya pengiriman (freight), asuransi, dan bea masuk secara proporsional ke HPP landed cost masing-masing varian produk.

---

### 2.3 Executing & FollowUp Approval

#### [FollowUp.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianimport/controllers/FollowUp.php)
- **Fungsi `doFollowup()`** *(Core Execution Import)*:
  - *Input*: `POST` ID transaksi impor.
  - *Query & Models*:
    1. **Status Update**: State `transaksi` -> `completed`.
    2. **Jurnal Impor & Valas**: Mencatat Jurnal Persediaan Impor (D), Selisih Kurs / Landed Cost (D), PPh 22 Impor (D), dan Hutang Impor Valas (K).
    3. **Dual-Write Stock Entry**: Memanggil `ComLockerStockDualWrite::pair()` untuk stok fisik penerimaan impor (`+active`) pada `stock_locker` dan `stock_locker_variant`.
    4. **FIFO Entry**: Memanggil `ComFifoProdukJadiVarian` untuk mendaftarkan batch landed HPP per varian produk.

---

## 3. IDENTIFIKASI PERBEDAAN DENGAN MOCKUP GLOBAL

| No | Komponen / Fitur Unik | Deskripsi & Perbedaannya dengan Mockup Standar |
|:--:|:----------------------|:------------------------------------------------|
| 1 | **Multi-Currency & Landed Cost Engine** | Penanganan mata uang asing (Valas), Kurs Pajak vs Kurs Bank, serta alokasi Bea Masuk & Freight ke HPP Varian. |
| 2 | **Import Tax Handling (PPh 22 & PPN Import)** | Pencatatan pajak impor khusus (API / Non-API PPh 22) yang terhubung ke Jurnal Akuntansi. |
| 3 | **Dual-Write Stock Import Entry** | Penambahan stok fisik impor bervarian via `ComLockerStockDualWrite` secara atomik. |

---

## 4. ARSITEKTUR KODE BARU (THE BLUEPRINT)

### 4.1 Struktur Controller Baru

```
application/modules/pembelianimport/
├── config/
│   ├── coTransaksiCore.php
│   ├── coTransaksiUi.php
│   ├── coTransaksiLayout.php
│   └── coTransaksiValues.php
├── controllers/
│   ├── Modul_Controller.php       # Base controller
│   ├── Create.php                 # Form Commercial Invoice / Purchase Import
│   ├── FollowUp.php               # Approval & Customs Clearing Reception
│   ├── Transaksi.php              # Import Order List
│   ├── ActivityReport.php         # Laporan Impor
│   ├── History.php                # Riwayat Transaksi Impor
│   ├── Printing.php               # Cetak Commercial Invoice & Landed Summary
│   ├── ViewDetails.php            # Detail View (Multi-Variant Safe)
│   ├── _processSelectProductException.php # Landed Cost Distribution Engine
│   └── _shoppingCart.php          # Cart Manager
└── views/
    ├── transaksi_modul.php
    ├── shoppingCart.php
    └── printing.php
```

---

### 4.2 Panduan Langkah-demi-Langkah Developer

1. **Langkah 1: Terapkan Dual-Write Stock Import Entry (`ComLockerStockDualWrite`)**
   - Gunakan `ComLockerStockDualWrite::pair()` untuk stok barang & varian impor.

2. **Langkah 2: Alokasi Landed Cost Per Varian (`_processSelectProductException`)**
   - Pastikan rumus kalkulasi (FOB + Freight + Bea Cukai) terbagi presisi per `variant_id`.

3. **Langkah 3: Integrasi FIFO Batch Landed HPP (`ComFifoProdukJadiVarian`)**
   - Catat landed cost HPP ke batch FIFO varian.

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