# BLUEPRINT CETAK BIRU MODUL: PEMBELIAN JASA (SERVICE PURCHASING & OUTSOURCING)
**Modul:** `pembelianjasa`  
**Workspace:** `new_san_variant`  
**Standard:** Single Variant Standard & Dual-Write Rollout  
**Tanggal Analisis:** 2026-07-29  

---

## 1. IDENTITAS MODUL

- **Nama Modul:** `pembelianjasa`
- **Pola Kompleksitas:** **Transaksi Kompleks** (Pembelian Jasa / Sub-kontrak Non-Stok, Pemotongan Pajak PPh 23 / PPh 21 via `_processSelectProductPpn`, Pembebanan Biaya Langsung ke Akun Perkiraan, & Journal AP Service).
- **Jenis Transaksi (`jenisTr` Utama):**
  - `463` : Pembelian Jasa / Tagihan Vendor Subkontraktor
  - `1463`: Retur / Pembatalan Tagihan Jasa
  - `1763`: Order Pembelian Jasa (Service PO)

---

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

### 2.1 Base Controller & Configuration

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

---

### 2.2 Entry Pembelian Jasa & Tax Engine

#### [_processSelectProduct.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianjasa/controllers/_processSelectProduct.php) & [_processSelectProductPpn.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianjasa/controllers/_processSelectProductPpn.php)
- **Fungsi Service Item Selector & Tax Processor**:
  - *Input*: Kode Jasa / Subkontrak, Nilai Fee Jasa, PPN 11%, Pemotongan PPh 23/21.
  - *Logic*: Berbeda dari Pembelian Barang fisik, Pembelian Jasa **tidak menyentuh Stock Locker** (no stock balance), melainkan langsung mengalokasikan Beban Jasa pada COA yang ditentukan.

#### [Create.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianjasa/controllers/Create.php)
- **Fungsi `index()`, `preview()`, `save()`**: Entry draf tagihan pembelian jasa dari vendor/supplier.

---

### 2.3 Executing & FollowUp Approval

#### [FollowUp.php](file:///c:/xampp/htdocs/new_san_variant/application/modules/pembelianjasa/controllers/FollowUp.php)
- **Fungsi `doFollowup()`** *(Execution Service Purchase)*:
  - *Query & Models*:
    1. **AP Non-Stock Update**: Mencatat pengakuan Hutang Dagang Jasa pada `transaksi_values`.
    2. **Jurnal Pembelian Jasa**: Memanggil `ComJurnal` mencatat Beban Jasa / Subkontrak (D) & PPN Masukkan (D) vs Hutang Jasa (K) & Utang PPh 23 (K).
    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 | **Non-Inventory Direct COA Allocation** | Mengabaikan persediaan barang dan menyalurkan nilai transaksi langsung ke akun beban perkiraan. |
| 2 | **PPh 23 Withholding Tax Engine (`_processSelectProductPpn`)** | Otomatisasi pemotongan pajak penghasilan pasal 23 atas imbalan jasa vendor. |

---

## 4. ARSITEKTUR KODE BARU (THE BLUEPRINT)

### 4.1 Struktur Controller Baru

```
application/modules/pembelianjasa/
├── config/
│   ├── coTransaksiCore.php
│   ├── coTransaksiUi.php
│   ├── coTransaksiLayout.php
│   └── coTransaksiValues.php
├── controllers/
│   ├── Modul_Controller.php       # Base controller
│   ├── Create.php                 # Form Service Purchase Entry
│   ├── FollowUp.php               # Approval & Execution Invoice
│   ├── Transaksi.php              # Service Invoice List
│   ├── ActivityReport.php         # Laporan Pembelian Jasa
│   ├── History.php                # Riwayat Tagihan Jasa
│   ├── Printing.php               # Cetak Voucher Tagihan Jasa
│   ├── ViewDetails.php            # Modal Detail View
│   ├── _processSelectProduct.php  # Service Item Selector
│   └── _shoppingCart.php          # Cart Manager
└── views/
    ├── transaksi_modul.php
    ├── shoppingCart.php
    └── printing.php
```

---

### 4.2 Panduan Langkah-demi-Langkah Developer

1. **Langkah 1: Gunakan Direct COA Allocation pada `_processSelectProduct.php`**
   - Memastikan tidak ada pemanggilan model stock locker fisik.

2. **Langkah 2: Integrasikan `ComJurnal` untuk Withholding Tax PPh 23**
   - Mencatat utang PPh 23 dan Hutang Vendor secara presisi di `FollowUp.php`.

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