# 09. Hirarki Keuangan, COA dan Standar PSAK

## Subjudul
Sintesis Terpadu Cluster Checklist, Runbook, UAT dan Blueprint untuk 10 Area Keuangan pada Aplikasi `san_15apr` (PHP 5.6 + CodeIgniter 3)

**Basis Sumber:** 37 file markdown pada direktori `file_md_san` (10 Checklist area, 10 Runbook area, 1 Indeks runbook, 2 Template universal, 6 UAT Hasil, 1 UAT Quickcheck, 1 Referensi implementasi Persediaan, 1 Referensi struktur COA-BI, 5 Blueprint modul).
**Aplikasi Target:** `san_15apr` (URL demo: `https://demo.mayagrahakencana.com/san_15apr`).
**Rentang Pelaksanaan UI-Only:** 2026-04-15 s.d. 2026-04-16. **Rentang Analisis Blueprint:** 2026-07-29.
**Workspace Blueprint:** `new_san_variant` (standar Single Variant Standard & Dual-Write Rollout).

---

## 1. Ringkasan Eksekutif
Cluster dokumen ini mendokumentasikan satu inisiatif tunggal: **menyusun panel ringkasan hirarki rekening (summary hierarchy) pada halaman `Ledger`** untuk 10 area keuangan, secara **murni tampilan (UI-only)** tanpa menyentuh database, engine COA, posting jurnal, maupun business rule transaksi. Pendekatan yang dipakai adalah **Strict Existing COA**, yaitu|displaykan ulang akun-akun yang sudah ada di master COA (`acc_coa`) beserta alias aktifnya, dan meng-klasifikasikan akun yang belum siap ke status `planned/inactive` atau `legacy` alih-alih membuat akun baru.

**Pola arsitektur yang konsisten di seluruh 10 area:**

- **Controller target tunggal:** `application/controllers/Ledger.php` (entry point `viewBalances_l1` dan `viewBalances_periode`).
- **View target tunggal:** `application/views/ledger.php` (serving banyak mode `Ledger`, sehingga risiko *template reuse*XeWaysifi tinggi dan wajib dijaga lewat *guard condition* per modul).
- **Helper/formatter:** `he_mass_table` di `Ledger.php` dan `formatField` di `ledger.php`.
- **Konfigurasi akuntansi:** `application/config/heAccounting.php` (mapping akun ke relasi `RekeningPembantu*`).
- **Alias akun dari DB:** `application/helpers/he_accounting_helper.php` (fungsi `fetchAccountStructureAlias`) dan `application/models/Mdls/MdlAccounts.php`.
- **Menu:** `application/config/heMenu.php`.
- **Deteksi posisi saldo:** `detectRekDefaultPosition()` — dipakai untuk menormalkan arah saldo kartu agar konsisten dengan tabel detail, tanpa *hardcode* `debet-kredit` atau `kredit-debet`.

**Status FUNCIONAL 10 area:**

| Status | Jumlah | Area |
|---|---|---|
| LULUS (UAT manual + cross-role + evidence lengkap) | 5 | Kas, Piutang PSAK 71, Piutang Pembelian, Hutang Dagang Supplier, Uang Muka Supplier |
| LULUS (UAT manual + cross-role + evidence lengkap, rel multi-akun) | 1 | Liabilitas |
| LULUS DENGAN CATATAN (regresi & quality gate parsial) | 1 | Perpajakan |
| Belum diimplementasikan (rennable template) | 1 | Hutang ke Konsumen |
| Berstatus DRAFT pada checklist/runbook, namun punya bukti UAT parsial | 1 | Persediaan |
| Modul pendukung berbasis blueprint (bukan panel UI `Ledger`) | 5 | Kas & Bank, Banking, Deviden, Valas, Taxes |

**Temuan utama (ringkas):**

1. **Seluruh UAT yang selesai Prove consistently** berupa validasi statis (`php -l`) + inspeksi kode + uji manual browser oleh user; tidak ada pengujian otomatis/unit test yang terdokumentasikan.
2. **Terdapat satu divergensi COA mayor** antara nomenklatur COA operasional (kode 10 digit, mis. `1010020010`) dan nomenklatur COA untuk BI (`vw_bi_sales_monthly`, kode 4 digit baru, mis. `4010`, `5010`, ditambah teks historis). Kedua nomenklatur hidup berdampingan.
3. **Terdapat kontradiksi pemetaan akun Persediaan** antara `IMPLEMENTASI_HIRARKI_PERSEDIAAN.md` dan `RUNBOOK/CHECKLIST_UI_HIRARKI_PERSEDIAAN_PSAK14.md` pada label akun `1010030010`, `1010030020`, dan `1010030050`.
4. **Kebijakan `legacy` hide/show tidak seragam** antar area (hide pada Piutang & Liabilitas & Pajak; show pada Piutang Pembelian, Hutang Supplier, Uang Muka, Kas).
5. **Tiga area tidak memiliki dokumen UAT Hasil tersendiri**, sehingga statusnya tidak dapat diverifikasi ulang dari bukti.

---

## 2. Prinsip Hirarki Keuangan & Standar Akuntansi (PSAK 14, 71, IFRS, COA)
### 2.1 Prinsip Lintas-Modul (Terdapat di Seluruh Runbook/Checklist)
**Wajib (Wajib Dijalankan):**

- Perubahan hanya pada `view`, CSS, JS, dan **mapping data tampilan di controller**.
- Perhitungan saldo tetap memakai sumber data existing (tanpa mengubah rumus backend).
- Ambil daftar akun dari master COA existing (`acc_coa`) + alias aktif.
- Gunakan kode/nama akun existing apa adanya.
- Pisahkan status akun: `active`, `legacy`, `planned`.
- Total utama dihitung **hanya dari akun `active`**.
- Pertahankan perilaku `filter`, `search`, `export`/`print` yang sudah ada.
- Valid untuk PHP 5.6 (tanpa sintaks PHP 7+) dan CodeIgniter 3.
- Tidak menambahkan *dependency* front-end modern yang tidak ada di proyek.
- Tetap kompatibel dengan plugin tabel existing (DataTables/komponen internal).
- Uji minimal 2 role: operasional + holding/management.

**Dilarang:**

- Menambah akun baru di database.
- Mengubah struktur database.
- Mengubah posting jurnal, mapping jurnal, atau aturan posting.
- Mengubah core business rule / logic approval / validasi transaksi existing.
- Mengubah endpoint API utama.
- Mengubah perhitungan saldo existing (hanya cara tampil yang boleh berubah).
- *Rollback* massal tanpa review perubahan (harus *rollback* per file agar mudah ditelusuri).

### 2.2 PSAK 71 — Piutang Usaha (Area Piutang)
- Prinsip: pemisahan **Piutang Usaha** vs **Piutang Non-Usaha**, serta menyiapkan placeholder untuk pendekatan ECL.
- **CKPN** (Cadangan Kerugian Penurunan Nilai) kepada sumber sebagai `planned`, menunggu akun + route final, dengan `route_enabled = false`.
- **Piutang Retensi** dan **Piutang Pajak Restitusi** ditempatkan `planned` selama route aktif belum final. Catatan penting: Piutang Pajak Restitusi **tetap berada pada domain perpajakan** sampai route final siap — ini batas domain antar area yang harus dihormati.
- **Piutang Usaha Marketplace (`1010020090`)**: `legacy`, default `hide` (satu-satunya akun legacy piutang yang disembunyikan).
- Normalisasi saldo: `debet - kredit` untuk akun dengan default posisi debet.
- Aturan summary: `Total Piutang Aktif` = penjumlahan subtotal `Piutang Usaha` + `Piutang Non-Usaha`.

### 2.3 PSAK 14 — Persediaan (Area Persediaan)
- Prinsip: **penilaian persediaan pada biaya atau NRV, mana yang lebih rendah**.
- Metode biaya yang dipakai sistem: **FIFO** atau *weighted average* sesuai kebijakan entitas (sumber tidak menetapkan secara spesifik mana yang dipakai; tertulis "sesuai kebijakan entitas").
- Laporan wajib dapat menampilkan klasifikasi persediaan yang relevan untuk entitas.
- Kategori best practice non-existing ditampilkan sebagai `planned` (default disembunyikan, opsional via tombol toggle `Tampilkan/Sembunyikan`), dan **tidak boleh influence total active default**.
- Persis seperti area lain: tidak menambah akun, tidak mengubah *business rule* transaksi stok/proses approval.

### 2.4 Klasifikasi Liabilitas (PSAK 1 — Liabilitas / IFRS IAS 1)
- Kewajiban diklasifikasikan menjadi **Kewajiban Lancar** dan **Kewajiban Tidak Lancar**; pemisahan ini mempertahankan kompatibilitas klasifikasi laporan posisi keuangan.
- **Posisi normal akun kewajiban adalah kredit**, sehingga rumus saldo kartu liabilitas adalah `kredit - debet` (dibtei piutang/aset yang `debet - kredit`). Kesalahan arah ini sempat menjadi temuan dan telah dikoreksi pada modul Hutang Dagang Supplier.
- Akun *best practice* yang belum tersedia di COA (obligasi, imbalan kerja, pajak tangguhan, bagian jangka pendek dari hutang jangka panjang) tetap `planned/inactive` dengan route nonaktif.

### 2.5 Konvensi COA Dua Nomenklatur (Temuan Penting)
COA dalam cluster ini menggunakan **dua nomenklatur yang hidup berdampingan**:

**A. Nomenklatur COA Operasional (dipakai panel `Ledger`) — kode 10 digit, berbasis prefix kelompok:**

| Digit ke-1 | Kelompok | Contoh Kode | Nama Rekening |
|---|---|---|---|
| 1 | Aset | `1010010010` | Rekening Kas Utama |
| 1 | Aset | `1010010040` | Rekening Pettycash |
| 1 | Aset | `1010020010` | Piutang Usaha Lokal |
| 1 | Aset | `1010020030` | Piutang Pembelian (Credit Note) |
| 1 | Aset | `1010030010`-`1010030070` | Persediaan (berbagai) |
| 1 | Aset | `1010040050`/`1010040070` | PPN Masukan / PPN Masukan Jasa |
| 1 | Aset | `1010050010`/`1010050020` | Uang Muka Supplier (IDR/Valas) |
| 1 | Aset | `1010060010`-`1010060040` | Piutang Non-Usaha |
| 2 | Liabilitas | `2010010`-`2010100` | Kewajiban Lancar |
| 2 | Liabilitas | `2020010`-`2020030` | Kewajiban Tidak Lancar |
| 2 | Liabilitas | `2030060`/`2030070` | PPN Keluaran Belum/Sudah Faktur |
| 2 | Liabilitas | `2040010`/`2040020` | Intercompany ke Pusat |
| 4 | Penghasilan | `4010` (kode BI) | Penjualan Utama |
| 5 | Beban | `5010` (kode BI) | HPP |

**B. Nomenklatur COA untuk BI (`vw_bi_sales_monthly`) — kode 4 digit baru + teks historis:**

- Pendapatan: `4010` (Penjualan Utama), `penjualan` (teks historis), `penjualan projek` (teks historis), pengurang pendapatan `return penjualan`, pendapatan lain-lain `jasa kirim`, `laba lain lain`, `keutungan kurs`.
- HPP: `5010`, `hpp`, `hpp projek`.
- Biaya operasional: kolom `kategori` bernilai `biaya`, dengan pengecualian `hpp`, `hpp projek`, `5010`, dan `return penjualan` (sudah masuk komponen A dan B).

**Rumus BI yang terdokumentasikan:**

- Penjualan Netto = Penjualan Utama + Jasa Kirim + Return Penjualan (biasanya debet/minus).
- Laba Kotor (Gross Margin) = Penjualan Netto − Total HPP.
- Laba Bersih (Net Margin) = Laba Kotor − Total Biaya.

**Konsekuensi bagi hirarki keuangan:** panel `Ledger` bekerja pada kode 10 digit, sedangkan pelaporan BI memetakan ke kode 4 digit/teks historis. Bridge antara keduanya **tidak dispesifikasikan di sumber** — ini gap dokumentasi yang perlu ditutup sebelum rekonsiliasi panel vs laporan BI.

### 2.6 Pemetaan Master Modul untuk BI (`vw_activity_detail`)
Transaksi dikelompokkan ke modul berdasarkan kode `jenis_master` dari tabel transaksi:

| Modul | Kode `jenis_master` |
|---|---|
| Penjualan (Sales) | `582`, `382`, `1582`, `982` |
| Pembelian (Purchasing) | `466`, `461`, `460`, `463` |
| Distribusi (Distribution) | `583`, `585`, `3583`, `3585` |
| Biaya (Expenses) | `675`, `676`, `677` |
| Konversi (Conversion) | `1334`, `334` |
| Lainnya | Kode master di luar daftar di atas |

Tujuannya: integrasi konsisten antara pelaporan finansial (Rugi Laba) dan pelaporan aktivitas operasional (Pivot Personil).


## 3. Matriks 10 Area Keuangan
| Area | Standar (PSAK) | Dokumen Checklist | Dokumen Runbook | Hasil UAT | Status |
|---|---|---|---|---|---|
| 1. Kas | PSAK 7 (Kas & Bank) | CHECKLIST_UI_HIRARKI_KAS.md | RUNBOOK_UI_HIRARKI_KAS.md | UAT_HASIL_UI_HIRARKI_KAS_2026-04-15.md | LULUS |
| 2. Piutang Dagang | PSAK 71 (Piutang Usaha), PSAK 55 | CHECKLIST_UI_HIRARKI_PIUTANG.md | RUNBOOK_UI_HIRARKI_PIUTANG_DAGANG.md | UAT_RESULT_UI_HIRARKI_PIUTANG_PSAK71_2026-04-16.md | LULUS |
| 3. Piutang Pembelian (Credit Note Supplier) | PSAK (Piutang Lain-lain) | CHECKLIST_UI_HIRARKI_PIUTANG_PEMBELIAN.md | RUNBOOK_UI_HIRARKI_PIUTANG_PEMBELIAN.md | UAT_HASIL_UI_HIRARKI_PIUTANG_PEMBELIAN_2026-04-16.md | LULUS |
| 4. Hutang Dagang Supplier | PSAK 1 (Kewajiban Lancar) | CHECKLIST_UI_HIRARKI_HUTANG_DAGANG_SUPPLIER.md | RUNBOOK_UI_HIRARKI_HUTANG_DAGANG_SUPPLIER.md | UAT_HASIL_UI_HIRARKI_HUTANG_DAGANG_SUPPLIER_2026-04-16.md | LULUS |
| 5. Hutang ke Konsumen | PSAK (Utang Lain-lain) | CHECKLIST_UI_HIRARKI_HUTANG_KE_KONSUMEN.md | RUNBOOK_UI_HIRARKI_HUTANG_KE_KONSUMEN.md | tidak dispesifikasikan di sumber | tidak dispesifikasikan di sumber |
| 6. Liabilitas (Kewajiban) | PSAK 1 (Klasifikasi Liabilitas) | CHECKLIST_UI_HIRARKI_HUTANG_LIABILITAS.md | RUNBOOK_UI_HIRARKI_HUTANG_LIABILITAS.md | UAT_HASIL_UI_HIRARKI_HUTANG_LIABILITAS_2026-04-16.md | LULUS |
| 7. Uang Muka Supplier | PSAK (Aset/Kewajiban Advance) | CHECKLIST_UI_HIRARKI_UANG_MUKA_SUPPLIER.md | RUNBOOK_UI_HIRARKI_UANG_MUKA_SUPPLIER.md | UAT_HASIL_UI_HIRARKI_UANG_MUKA_SUPPLIER_2026-04-16.md | LULUS |
| 8. Perpajakan | PSAK 46 (Perpajakan), PPh/PPN | CHECKLIST_UI_HIRARKI_PERPAJAKAN.md | RUNBOOK_UI_HIRARKI_PERPAJAKAN.md | tidak dispesifikasikan di sumber | LULUS DENGAN CATATAN |
| 9. Persediaan | PSAK 14 | CHECKLIST_UI_HIRARKI_PERSEDIAAN_PSAK14.md | RUNBOOK_UI_HIRARKI_PERSEDIAAN_PSAK14.md | tidak dispesifikasikan di sumber | tidak dispesifikasikan di sumber |
| 10. Banking & Deviden (Pendukung) | PSAK (Pinjaman Bank & Dividen) | blueprint_banking.md, blueprint_deviden.md | tidak dispesifikasikan di sumber | tidak dispesifikasikan di sumber | tidak dispesifikasikan di sumber |


## 4. Detail per Area
### 4.1 Kas
- Level Hirarki (UI): Level 1: Kas & Bank; Level 2: Kas Utama, Pettycash; Level 3: Dimensi organisasi (cabang/unit sesuai parameter existing); Level 4: Rekening kas detail (subledger RekeningPembantuKasItem).
- Kode Akun Terkait: 1010010010 (Kas Utama), 1010010040 (Pettycash).
- Temuan UAT: LULUS (2026-04-15). Bukti: filter periode/search/export/link kartu berfungsi, query string terjaga.
- Poin Implementasi: UI-only, PHP 5.6/CI3, tema kas berdasarkan flag, tidak mengubah perhitungan saldo.

### 4.2 Piutang Dagang
- Level Hirarki (UI): Level 1: Piutang; Section: Piutang Usaha, Piutang Non-Usaha.
- Kode Akun Aktif (Piutang Usaha): 1010020010, 1010020080, 1010020050, piutang valas.
- Kode Akun Aktif (Piutang Non-Usaha): piutang lain, 1010060010, 1010060030, 1010060040, 1010060020.
- Planned/Legacy: 1010020090 (Marketplace) legacy default hide; CKPN, piutang retensi, piutang pajak restitusi planned/inactive (route disabled).
- Standar: PSAK 71. Pemisahan usaha/non-usaha; normalisasi saldo berbasis detectRekDefaultPosition (debet-kredit untuk default debet).
- Temuan UAT: LULUS (2026-04-16).
- Poin Implementasi: Strict Existing COA, totals active/all/usaha/non_usaha/dimension_count.

### 4.3 Piutang Pembelian (Credit Note Supplier)
- Level Hirarki (UI): Level 1: Piutang Pembelian (1 kategori aktif).
- Kode Akun Terkait: 1010020030 (RekeningPembantuSupplier).
- Pemisahan Modul: Terpisah dari Uang Muka Supplier (1010050010/1010050020).
- Temuan UAT: LULUS (2026-04-16).
- Poin Implementasi: UI-only, saldo mengikuti detectRekDefaultPosition(), tema tetap Piutang Pembelian.

### 4.4 Hutang Dagang Supplier
- Level Hirarki (UI): Level 1: Hutang Dagang Supplier; Level 2: Reguler/Project; Level 4: supplier/subledger.
- Kode Akun Aktif: 2010010 (Hutang Usaha), 2010020 (Hutang Sewa), 2010030 (Hutang Aktiva Tetap), 2010040 (Hutang Biaya ke supplier).
- Temuan UAT: LULUS (2026-04-16). Koreksi posisi normal (kredit-debet) untuk menyelaraskan nilai kartu dengan tabel.
- Poin Implementasi: Theme hutang; filter/search/export/link kartu terjaga.

### 4.5 Hutang ke Konsumen
- Level Hirarki (UI): Level 1: Hutang Ke Konsumen; Level 2: Reguler/Project; Level 4: konsumen/pihak terkait.
- Contoh Kasus: uang muka customer harus direalisasi, refund customer, retur/kompensasi.
- Kode Akun: tidak dispesifikasikan di sumber (template reusable tersedia).
- Temuan UAT: tidak dispesifikasikan di sumber.
- Poin Implementasi: Runbook/checklist reusable siap digunakan.

### 4.6 Liabilitas (Kewajiban)
- Level Hirarki (UI): Level 1: Kewajiban (Liabilitas); Level 2: Kewajiban Lancar, Kewajiban Tidak Lancar.
- Aktif Lancar: 2010010, 2010040, 2030060, 2030070, hutang pph23, hutang pph4 ayat 2, 2010050, 2010100, 2040010, 2040020.
- Aktif Tidak Lancar: 2020020, hutang jangka panjang, 2010020, 2010030, 2020010, 2020030, hutang biaya bunga.
- Hidden/Planned: hutang pph21, hutang pph29, LIAB-BAGIAN-JP, LIAB-OBLIGASI, LIAB-IMBALAN-KERJA, LIAB-PAJAK-TANGGUHAN (default hide).
- Temuan UAT: LULUS (2026-04-16). Panel liabilitas menggantikan panel lama saat mode aktif, total section tervalidasi.
- Poin Implementasi: Strict Existing COA, posisi normal kredit-debet untuk kewajiban.

### 4.7 Uang Muka Supplier
- Level Hirarki (UI): Level 1: Uang Muka Supplier; Level 2: IDR, Valas.
- Kode Akun: 1010050010 (IDR, RekeningPembantuUangMuka), 1010050020 (Valas, RekeningPembantuUangMukaMain).
- Temuan UAT: LULUS (2026-04-16).
- Poin Implementasi: Terpisah dari Piutang Pembelian; saldo mengikuti detectRekDefaultPosition().

### 4.8 Perpajakan
- Level Hirarki (UI): Level 1: Perpajakan; Level 2: Pajak Dibayar di Muka (Aset), Utang Pajak (Liabilitas), Beban Pajak (Laba Rugi).
- Aset Aktif: 1010040050, 1010040070, pph25, pph23 dibayar di muka, pph22 dibayar dimuka.
- Liabilitas Aktif: 2030060, 2030070, hutang pph23, hutang pph4 ayat 2.
- Hidden/Planned: hutang pph21, hutang pph29, biaya pph21; PPh 26 tidak ditemukan pada baseline (tidak dipaksakan).
- Temuan UAT: LULUS DENGAN CATATAN (reset keyword, export/print, role operasional, regresi lintas halaman belum lengkap).
- Poin Implementasi: Strict Existing COA; Piutang Pajak Restitusi tetap domain perpajakan.

### 4.9 Persediaan (PSAK 14)
- Mode: kartu aktif default, planned hidden default dengan opsi toggle.
- Aktif: 1010030030, 1010030070, 1010030010, 1010030050, 1010030040, 1010030020.
- Planned: INV-TRANSIT, INV-KONSINYASI, INV-OBSOLETE, INV-ALLOWANCE (LCNRV).
- PSAK 14: biaya atau NRV (mana lebih rendah); metode biaya FIFO/weighted average sesuai kebijakan entitas.
- Implementasi: mode hirarki vs legacy (legacy default via view_mode=hirarki eksplisit); filter merek chip/dropdown; sinkronisasi total kartu-tabel; optimasi fallback periode.
- Status: DRAFT (checklist/runbook); UAT tidak dispesifikasikan di sumber.

### 4.10 Banking & Deviden (Pendukung)
- Banking: types 444,445,446,757; engine _processSelectPlafonHutangBank, _processSelectBank; jurnal utang/bunga vs kas/bank; Completed & Verified (blueprint).
- Deviden: types 8888,6666; engine _processSelectRekening; alokasi proporsional + PPh 4(2) Final 10%; jurnal laba ditahan vs utang dividen/kas-bank & utang PPh; Completed & Verified.
- Valas: types 383,384; _processSelectValas; realized/unrealized FX; jurnal selisih kurs.
- Taxes: types 681,110,5681; _processSelectNota/_processSelectProductPpn; e-Faktur NSFP matcher, netting PPN; Completed & Verified.
## 5. Template Reusable (Checklist & Runbook Universal)

### 5.1 Struktur Runbook Universal

Runbook template universal (RUNBOOK_TEMPLATE_UNIVERSAL_UI_HIRARKI_KEUANGAN.md) menyediakan 12 bagian: Tujuan, Prinsip Universal, Scope Implementasi, Input Wajib Sebelum Coding, Template Mapping COA (tabel), Kontrak Data UI, Kontrak Tampilan UI, Urutan Eksekusi Universal, Quality Gate Universal, Quick Rollback Plan, Template Catatan Implementasi, Referensi.

**Placeholder wajib:** {{APP_NAME}}, {{MODULE_NAME}}, {{TARGET_URL}}, {{TARGET_CONTROLLER}}, {{TARGET_VIEW}}, {{COA_GROUP_NAME}}, {{PIC_IMPL}}, {{DATE_PLAN}}, {{PIC_REVIEWER}}. Alur pemakaian: duplikasikan menjadi RUNBOOK_UI_HIRARKI_<MODUL>_<APP>.md, isi seluruh placeholder, sesuaikan mapping COA, jalankan step, sinkronkan dengan checklist universal.

**Urutan Eksekusi Universal (6 tahap):**

1. Step 1 Discovery: identifikasi controller/view/helper, query string, dependency tabel/filter. Deliverable: daftar file target dan risiko regresi.
2. Step 2 Finalisasi Mapping COA: validasi akun active vs existing COA, tandai legacy/planned, putuskan hide/show. Deliverable: mapping final yang disepakati user bisnis.
3. Step 3 Implementasi Controller: bentuk array hierarchy links, bentuk totals summary, jaga compatibility key lama. Deliverable: data siap render tanpa mengubah bisnis inti.
4. Step 4 Implementasi View: render panel/kartu/badge, terapkan status badge active/planned, jaga interaksi filter/search/export. Deliverable: UI hirarki stabil desktop/mobile.
5. Step 5 Quality Check: syntax check, uji desktop+mobile, uji minimal 2 role, verifikasi tidak ada regresi lintas halaman.
6. Step 6 Dokumentasi & Handover: finalisasi checklist, simpan screenshot, tulis risiko tersisa, tetapkan status akhir.

### 5.2 Struktur Checklist Universal

Checklist template universal (CHECKLIST_TEMPLATE_UNIVERSAL_UI_HIRARKI_KEUANGAN.md) Status awal: DRAFT, dengan 12 bagian: 0 Metadata, 1 Scope & Guardrail, 2 Discovery Teknis, 3 Mapping COA, 4 Kontrak Data Controller, 5 Kontrak UI View, 6 Interaksi & Filter, 7 Validasi Data Ringkasan, 8 Visual & Responsif, 9 Regression, 10 Quality Gate, 11 Dokumentasi Hasil, 12 Template Ringkasan Eksekusi.

### 5.3 Definisi Status Akun

- active: tampil default, dapat diklik (jika route tersedia).
- legacy: boleh dihitung, default hide dari panel utama.
- planned: default hide, route disabled (route_enabled = false).

### 5.4 Kontrak Data UI per Kartu (Field Minimal)

Field minimal per kartu: label, note, summary_rel, query_candidates, status, section (opsional sesuai modul), route_enabled, count_label, hide_in_ui, saldo, count.

Pada implementasi Piutang PSAK 71, field dipecah menjadi dua lapis: field route (
oute_rel, 
oute_rekening) dan field agregat (saldo, count). Field tambahan pada Piutang/Liabilitas: section, group, status, count_label.

Template total summary: active, all, section totals (opsional sesuai modul), dimension_count / item_count / entity_count, legacy_hidden.

### 5.5 Kontrak Tampilan UI

- Panel muncul di atas tabel detail.
- Kartu active ditampilkan default.
- Kartu legacy/planned mengikuti kebijakan hide/show.
- Badge summary minimal: Total aktif, Total semua (opsional jika tidak hide), Dimensi aktif, Subtotal per section (opsional), Catatan mode aktif tampil jelas.
- Link kartu active menuju route detail yang valid.

### 5.6 Standar Rekaman & Handover

- Evidence wajib: screenshot desktop sebelum & sesudah, screenshot mobile sesudah, capture URL saat filter+search aktif, catatan bug/limitasi.
- Status akhir: LULUS / LULUS DENGAN CATATAN / TUNDA.
- Quick Rollback Plan: revert file view yang diubah, revert mapping panel di controller, jalankan ulang syntax check, verifikasi halaman kembali ke baseline. Lakukan rollback per file; hindari rollback massal tanpa review.

## 6. UAT Quickcheck 10-15 Menit

Uji cepat (10-15 menit) untuk validasi pascaperubahan UI-only, mengikuti UAT_QUICKCHECK_UI_HIRARKI_KEUANGAN.md.

**Identitas UAT (yang wajib diisi):** Aplikasi, Modul yang diuji (Kas / Piutang Dagang / Hutang Supplier / Hutang ke Konsumen), URL, Tanggal uji, Penguji, Role penguji.

**Prasyarat (1 menit):** Data saldo tersedia minimal 2 kategori kartu; role operasional bisa membuka halaman; role holding/management bisa membuka halaman; query string dasar siap (?o=<cabang>&w=<gudang>).

**UAT Visual Ringkas (3 menit):** Panel hirarki tampil di atas tabel; kartu utama tampil sesuai mapping akun modul; nilai saldo utama terlihat dominan dan terbaca; badge total muncul dan konsisten dengan kartu aktif; catatan mode aktif muncul (mis. legacy hidden); layout rapi pada desktop 1366x768; layout usable pada viewport kecil 390x844.

**UAT Interaksi Ringkas (4 menit):** Filter periode berubah dan URL ikut update (periode, thn, bln, date); search keyword berfungsi dan URL memuat parameter q; tombol reset keyword menghapus q tanpa merusak filter periode; klik kartu berpindah ke URL detail yang benar; tombol export/print tetap tampil sesuai hak role; sorting, paging, dan footer total tabel tetap normal.

**UAT Cross-Role Ringkas (3-5 menit):** Role operasional: panel + tabel + tombol sesuai hak akses; role holding/management: panel + tabel + tombol sesuai hak akses; tidak ada error JS/PHP saat pindah role; tidak ada perbedaan anomali tampilan antar role.

**Kriteria Lulus:** Tidak ada error syntax/runtime; tidak ada regresi fungsi tabel; tidak ada regresi query string filter; tidak ada layout break kritikal di desktop/mobile; bukti screenshot before/after tersedia.

**Metode Uji yang Konsisten dipakai (3 metode):** (1) validasi statis via inspeksi kode; (2) syntax check PHP (php -l) untuk file yang diubah; (3) uji manual browser desktop/mobile dan cross-role.
## 7. Struktur COA & Pemetaan Modul BI

### 7.1 Ringkasan COA Operasional per Area (Kode 10 Digit)

| Kelompok | Kode Akun | Nama Rekening / Keterangan | Area |
|---|---|---|---|
| Aset - Kas & Bank | 1010010010 | Rekening Kas Utama | Kas |
| Aset - Kas & Bank | 1010010040 | Rekening Pettycash | Kas |
| Aset - Piutang Usaha | 1010020010 | Piutang Usaha Lokal | Piutang |
| Aset - Piutang Usaha | 1010020050 | Piutang Usaha Jasa | Piutang |
| Aset - Piutang Usaha | 1010020080 | Piutang Usaha Project | Piutang |
| Aset - Piutang Usaha | 1010020090 | Piutang Usaha Marketplace (legacy, hide) | Piutang |
| Aset - Piutang Usaha (valas) | piutang valas | Piutang Usaha Valas | Piutang |
| Aset - Piutang Non-Usaha | 1010060010 | Piutang Cabang | Piutang |
| Aset - Piutang Non-Usaha | 1010060020 | Piutang Aktiva Tetap Cabang | Piutang |
| Aset - Piutang Non-Usaha | 1010060030 | Piutang Ke Pusat | Piutang |
| Aset - Piutang Non-Usaha | 1010060040 | Piutang Biaya Cabang | Piutang |
| Aset - Piutang Non-Usaha (teks) | piutang lain | Piutang Lain-lain | Piutang |
| Aset - Piutang Pembelian | 1010020030 | Piutang Pembelian (Credit Note Supplier) | Piutang Pembelian |
| Aset - Persediaan | 1010030010 | Bahan Baku & Supplies / persediaan supplies | Persediaan (kontradiksi label) |
| Aset - Persediaan | 1010030020 | Supplies Riil (Kontrol) / persediaan supplies riil | Persediaan (kontradiksi label) |
| Aset - Persediaan | 1010030030 | Produk Dijual / persediaan produk | Persediaan |
| Aset - Persediaan | 1010030040 | Produk Riil (Kontrol) / persediaan produk riil | Persediaan |
| Aset - Persediaan | 1010030050 | Bahan Baku Dalam Proses / persediaan supplies proses | Persediaan (kontradiksi label) |
| Aset - Persediaan | 1010030070 | Produk Rakitan (WIP) / persediaan produk rakitan | Persediaan |
| Aset - Pajak Dibayar di Muka | 1010040050 | PPN Masukan | Perpajakan |
| Aset - Pajak Dibayar di Muka | 1010040070 | PPN Masukan Jasa | Perpajakan |
| Aset - Uang Muka | 1010050010 | Uang Muka Supplier (IDR) | Uang Muka |
| Aset - Uang Muka | 1010050020 | Uang Muka Supplier (Valas) | Uang Muka |
| Liabilitas - Lancar | 2010010 | Hutang Usaha (supplier) | Hutang Supplier / Liabilitas |
| Liabilitas - Lancar | 2010020 | Hutang Sewa | Hutang Supplier / Liabilitas |
| Liabilitas - Lancar | 2010030 | Hutang Aktiva Tetap | Hutang Supplier / Liabilitas |
| Liabilitas - Lancar | 2010040 | Hutang Biaya (ke supplier) | Hutang Supplier / Liabilitas |
| Liabilitas - Lancar | 2010050 | Hutang ke Konsumen | Liabilitas |
| Liabilitas - Lancar | 2010100 | Hutang Valas ke Konsumen | Liabilitas |
| Liabilitas - Tidak Lancar | 2020010 | Hutang ke Pemegang Saham | Liabilitas / Deviden |
| Liabilitas - Tidak Lancar | 2020020 | Hutang Bank | Liabilitas / Banking |
| Liabilitas - Tidak Lancar | 2020030 | Hutang ke Pihak Lain | Liabilitas |
| Liabilitas - Tidak Lancar | hutang jangka panjang | Hutang Jangka Panjang | Liabilitas |
| Liabilitas - Tidak Lancar | hutang biaya bunga | Hutang Biaya Bunga | Liabilitas |
| Liabilitas - Utang Pajak | 2030060 | PPN Keluaran Belum Faktur | Perpajakan / Liabilitas |
| Liabilitas - Utang Pajak | 2030070 | PPN Keluaran Sudah Faktur | Perpajakan / Liabilitas |
| Liabilitas - Intercompany | 2040010 | Hutang ke Pusat | Liabilitas |
| Liabilitas - Intercompany | 2040020 | Hutang Biaya ke Pusat | Liabilitas |
| Penghasilan (BI) | 4010 | Penjualan Utama (kode baru BI) | COA-BI |
| Beban/HPP (BI) | 5010 | HPP (kode baru BI) | COA-BI |

### 7.2 Konvensi Penomoran (Pola COA Operasional yang Teramati)

- Digit ke-1: kelompok besar - 1 (Aset), 2 (Liabilitas), 4 (Penghasilan), 5 (Beban/HPP).
- Digit ke-2-3: subkelompok - 101 (Kas & Bank), 102 (Piutang Usaha), 103 (Persediaan), 104 (Pajak), 105 (Uang Muka), 106 (Piutang Non-Usaha), 201/202 (Kewajiban), 203 (Utang Pajak), 204 (Intercompany).
- Digit ke-4-5: sub-subkelompok, contoh 0010 (Lokal), 0020 (Sewa/Non-Usaha), 0030 (Pembelian/Proyek), 0040 (Biaya), 0050 (Jasa/Proses), 0060, 0070, 0080 (Project), 0090 (Marketplace/legacy).
- Digit ke-6-7: subklasifikasi/penanda (contoh 00 pada piutang usaha, 10 pada piutang/hutang valas). Tidak semua akun memiliki kedalaman yang sama - misalnya hutang usaha hanya 7 digit (2010010) sedangkan piutang usaha 10 digit (1010020010).

### 7.3 Akun Berbasis Alias Teks (Bukan Kode Numerik)

Sejumlah akun direferensikan lewat alias teks, bukan kode numerik, antara lain:

- Piutang: piutang valas, piutang lain.
- Piutang planned: CKPN / CKPN-PIUTANG (Cadangan Kerugian Penurunan Nilai), piutang retensi, piutang pajak restitusi.
- Liabilitas: hutang jangka panjang, hutang biaya bunga, hutang pph23, hutang pph4 ayat 2, hutang pph21, hutang pph29, beban harus dibayar, hutang pph23, hutang pph4 ayat 2.
- Liabilitas planned: LIAB-OBLIGASI, LIAB-PAJAK-TANGGUHAN, LIAB-IMBALAN-KERJA, LIAB-BAGIAN-JP.
- Persediaan planned: INV-TRANSIT, INV-KONSINYASI, INV-OBSOLETE, INV-ALLOWANCE.
- Pajak aset baseline: ppn in, ppn in jasa, ppn in realisasi, ppn in jasa realisasi, pib, pph22, pph22 dibayar dimuka, pph 23 dibayar di muka, pph25, pph 25 dibayar di muka, pph4 ayat 2, pph29, ppn dibayar bendahara negara, deposit pajak.
- Pajak liabilitas baseline: hutang ppn, ppn out, ppn out sudah ada faktur, pph25_29.
- Pajak beban baseline: biaya pph21.

Deteksi akun teks ini bergantung pada fungsi etchAccountStructureAlias (dari pplication/helpers/he_accounting_helper.php) dan model pplication/models/Mdls/MdlAccounts.php.

### 7.4 Pemetaan Modul BI (Berdasarkan w_activity_detail)

Transaksi dikelompokkan ke modul berdasarkan kode jenis_master dari tabel transaksi:

| Modul | Kode jenis_master |
|---|---|
| Penjualan (Sales) | 582, 382, 1582, 982 |
| Pembelian (Purchasing) | 466, 461, 460, 463 |
| Distribusi (Distribution) | 583, 585, 3583, 3585 |
| Biaya (Expenses) | 675, 676, 677 |
| Konversi (Conversion) | 1334, 334 |
| Lainnya | Kode master di luar daftar di atas |

### 7.5 Rumus Laporan Rugi Laba BI (Berdasarkan w_bi_sales_monthly)

- Penjualan Netto = Penjualan Utama + Jasa Kirim + Return Penjualan (biasanya debet/minus).
- Laba Kotor (Gross Margin) = Penjualan Netto - Total HPP.
- Laba Bersih (Net Margin) = Laba Kotor - Total Biaya.
- Kriteria biaya operasional: kolom kategori bernilai biaya; pengecualian hpp, hpp projek, 5010, dan return penjualan.

### 7.6 Konvensi Akses Halaman (Route)

Seluruh area diakses melalui route Ledger dengan subledger RekeningPembantu*:

- RekeningPembantuKas/1010010010, RekeningPembantuKasItem/1010010010, RekeningPembantuKas/1010010040.
- RekeningPembantuCustomer/1010020010, RekeningPembantuSupplier/1010020030, RekeningPembantuSupplier/1010040070.
- RekeningPembantuSupplier/2010010, RekeningPembantuSupplier/2010020, RekeningPembantuSupplier/2010030, RekeningPembantuSupplier/2010040.
- RekeningPembantuCustomer/2010050, RekeningPembantuBank/2020020, RekeningPembantuHutangJangkaPanjang/hutang jangka panjang, RekeningPembantuHutangSaham/2020010, RekeningPembantuHutangPihakLain/2020030.
- RekeningPembantuUangMuka/1010050010, RekeningPembantuUangMukaMain/1010050020.
- RekeningPembantuProduk/1010030030 (untuk persediaan, via iewBalances_periode).

Entry point: Ledger/viewBalances_l1/RekeningPembantuKas/1010010010. Parameter query string yang dijaga: periode, thn, bln, date, q, o (cabang), w (gudang).
## 8. Modul Keuangan Pendukung: Kas/Bank, Deviden, Valas, Pajak

Kelima blueprint berikut berada di workspace 
ew_san_variant dengan standar Single Variant Standard & Dual-Write Rollout, tanggal analisis 2026-07-29, dan status eksekusi **Completed & Verified**. Kelimanya memakai pola arsitektur identik: folder pplication/modules/<modul>/ berisi config/ (coTransaksiCore, coTransaksiUi, coTransaksiLayout, coTransaksiValues), controllers/ (Modul_Controller, Create, FollowUp, Transaksi, ActivityReport, History, Printing, ViewDetails, sub-controller _processSelect*, _shoppingCart), dan iews/ (transaksi_modul.php, shoppingCart.php, printing.php). Semua|Modul_Controller::__construct() memuat keempat config tersebut.

### 8.1 Modul Kas & Bank (Mutasi Kas/Bank)

- Pola Kompleksitas: Transaksi Kompleks - Mutasi Transfer Kas<->Bank, Transfer Inter-Bank, Penyetoran Tunai, Penarikan Tunai, Transfer Valas/Foreign Currency via _processSelectValas, Selisih Kas, dan 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).
- Komponen Unik: (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 mutasi kas/bank dalam mata uang asing.
- Alur Jurnal (FollowUp.php -> doFollowup): (1) Cash/Bank Balance Rebalancing - update saldo kas/bank sumber (-saldo) dan kas/bank tujuan (+saldo); (2) Jurnal Mutasi - ComJurnal mencatat Rekening Bank Tujuan (D) vs Kas/Bank Sumber (K) dan Biaya Transfer Bank (D jika ada); (3) Registry Update - log step registrasi di 	ransaksi_registry.
- Relevansi COA: terhubung dengan akun 1010010010 (Kas Utama) dan 1010010040 (Pettycash) pada panel Ledger.

### 8.2 Modul Banking (Pinjaman & Kredit Bank)

- Pola Kompleksitas: Transaksi Kompleks - Pengelolaan Pinjaman/Kredit Bank via _processSelectPlafonHutangBank, Pembayaran Angsuran Pokok & Bunga, Biaya Administrasi Bank, Rekonsiliasi Bank, dan Journal Rebalancing.
- Jenis Transaksi (jenisTr) Utama: 444 (Pencairan Pinjaman/Kredit Bank), 445 (Pembayaran Angsuran Pokok Pinjaman Bank), 446 (Pembayaran Bunga & Admin Bank), 757 (Rekonsiliasi/Adjust Rekening Bank).
- Komponen Unik: (1) Bank Loan Limit & Amortization Manager (_processSelectPlafonHutangBank) - input ID Bank, Nomor Fasilitas Kredit, Limit Plafon, Sisa Utang Bank; menghitung saldo sisa utang bank, jadwal angsuran pokok, dan alokasi beban bunga; (2) Bank Reconciliation Processor (_processSelectBank.php) - pencocokan mutasi koran bank dengan buku kas internal.
- Alur Jurnal (FollowUp.php -> doFollowup): (1) Bank Loan Balance Update - mengurangi sisa utang pokok bank (445) atau menambah saldo kas/bank dari pencairan kredit (444); (2) Jurnal Perbankan - ComJurnal mencatat Utang Bank/Bunga (D) vs Kas/Bank (K); (3) Registry Update - log di 	ransaksi_registry.
- Relevansi COA: terhubung dengan akun 2020020 (Hutang Bank) pada kelompok Kewajiban Tidak Lancar.

### 8.3 Modul Deviden (Distribusi Dividen & Laba Ditahan)

- Pola Kompleksitas: Transaksi Kompleks - Deklarasi Pembagian Dividen dari Saldo Laba Ditahan/Retained Earnings, Pembayaran Dividen Pemegang Saham via _processSelectRekening, Pemotongan Pajak Dividen PPh 4(2)/23, dan Journal Deviden.
- Jenis Transaksi (jenisTr) Utama: 8888 (Deklarasi Utang Dividen / Dividend Declaration), 6666 (Pembayaran Dividen Pemegang Saham / Dividend Payout Voucher).
- Komponen Unik: (1) Shareholder Equity Allocator (_processSelectRekening) - input nama pemegang saham, persentase saham, nominal dividen gross, pemotongan PPh 4(2) Final 10% untuk OP; mengalokasikan dividen per lembar saham yang dimiliki pemegang saham terdaftar; (2) PPh Final Dividend Tax Withholding (10%) - pemotongan otomatis PPh Pasal 4(2) Final atas dividen wajib pajak orang pribadi.
- Alur Jurnal (FollowUp.php -> doFollowup): (1) Retained Earnings Update - mengurangi saldo Laba Ditahan/Equity pada 	ransaksi_values; (2) Jurnal Dividen - ComJurnal mencatat Laba Ditahan (D) vs Utang Dividen/Kas-Bank (K) dan Utang PPh Dividen (K); (3) Registry Update - log di 	ransaksi_registry.
- Relevansi COA: terhubung dengan akun 2020010 (Hutang ke Pemegang Saham) dan integrasi pemotongan pajak dengan hutang pph4 ayat 2 pada modul Perpajakan.

### 8.4 Modul Valas (Foreign Currency & Exchange Revaluation)

- Pola Kompleksitas: Transaksi Kompleks - Revaluasi Kurs Mata Uang Asing via _processSelectValas, Pengakuan Laba/Rugi Selisih Kurs Realized/Unrealized FX Gain Loss, Adjustment Saldo Valas, dan Journal Valas.
- Jenis Transaksi (jenisTr) Utama: 383 (Selisih Kurs/Revaluasi Valas - FX Gain & Loss Revaluation), 384 (Adjust/Penyesuaian Saldo Rekening Valuta Asing).
- Komponen Unik: (1) Multi-Currency Revaluation Calculator (_processSelectValas) - input kode valas (USD, EUR, SGD, JPY), Kurs Penutupan Akhir Bulan (Closing Rate), Kurs Pembukuan; menghitung selisih kurs atas saldo kas/bank valas dan sisa utang/piutang dalam valuta asing; (2) Realized vs Unrealized FX Gain/Loss Integration - pemisahan jurnal keuntungan/kerugian selisih kurs terealisasi dan belum terealisasi.
- Alur Jurnal (FollowUp.php -> doFollowup): (1) Valas Balance Update - update nilai Ekuivalen Rupiah pada akun valas di 	ransaksi_values; (2) Jurnal Selisih Kurs - ComJurnal mencatat Laba Selisih Kurs (K) atau Rugi Selisih Kurs (D) vs Akun Valas/AP/AR (D/K); (3) Registry Update - log di 	ransaksi_registry.
- Relevansi COA: terhubung dengan akun piutang valas (Piutang Usaha Valas), 1010050020 (Uang Muka Supplier Valas), dan 2010100 (Hutang Valas ke Konsumen). Akun keutungan kurs tercatat pada kelompok pendapatan lain-lain dalam COA-BI.
- Catatan: modul alas bersifat terpisah dari _processSelectValas yang ada di dalam modul kas - keduanya memakai nama sub-controller identik namun konteks berbeda (mutasi valas vs revaluasi valas).

### 8.5 Modul Taxes (Perpajakan & E-Faktur)

- Pola Kompleksitas: Transaksi Kompleks - Pengelolaan Setor/Kompensasi PPN Kurang/Lebih Bayar, Penyetoran PPh 21/23/Final, Rekonsiliasi e-Faktur via _processSelectNota, dan Journal Tax Settlement.
- Jenis Transaksi (jenisTr) Utama: 681 (Pelunasan/Setor Pajak PPN / VAT Payment), 110 (Pembayaran Utang Pajak PPh 21/23/4(2)), 5681 (Rekonsiliasi PPN Masukkan & Keluaran).
- Komponen Unik: (1) e-Faktur NSFP Reconciler (_processSelectNota) - input Nomor Seri Faktur Pajak (NSFP), masa pajak, nominal PPN Masukkan/PPN Keluaran; menyandingkan faktur pajak keluar dan masuk untuk menghitung PPN Kurang Bayar (KB) atau Lebih Bayar (LB); (2) Withholding & Netting Tax Manager - penyelesaian netting PPN Keluaran vs PPN Masukkan pada akhir masa pajak. Terdapat pula _processSelectProductPpn.php sebagai Tax Invoice & e-Faktur Matcher.
- Controller tambahan: Taxes.php (Tax Engine Processor) - tidak ada di modul lain.
- Alur Jurnal (FollowUp.php -> doFollowup): (1) Tax Liability Settlement - update saldo utang pajak pada 	ransaksi_values; (2) Jurnal Penyetoran Pajak - ComJurnal mencatat Utang PPN/Utang PPh (D) vs Kas/Bank (K); (3) Registry Update - log di 	ransaksi_registry.
- Relevansi COA: terhubung dengan akun 2030060 (PPN Keluaran Belum Faktur), 2030070 (PPN Keluaran Sudah Faktur), 1010040050 (PPN Masukan), 1010040070 (PPN Masukan Jasa), serta akun pajak berbasis teks (hutang ppn, ppn out, pib, deposit pajak, ppn dibayar bendahara negara).
- Catatan: blueprint 	axes_handle transaksi operational pajak, sedangkan panel Perpajakan pada Ledger menampilkan saldo/posisi pajak. Keduanya harus konsisten namun tidak ada dokumen yang secara eksplisit menghubungkan keduanya.

### 8.6 Pola Jurnal Umum Kelima Modul (Konsistensi Terobservasi)

Seluruh modul pendukung mengikuti pola tiga langkah yang sama dalam FollowUp.php::doFollowup():
1. Update nilai transaksi di 	ransaksi_values (update saldo/rebalancing).
2. Panggilan ComJurnal untuk pencatatan jurnal (dengan perbedaan debit/kredit per modul).
3. Log step registrasi di 	ransaksi_registry.
## 9. Temuan Lintas-Dokumen & Kontradiksi

### 9.1 Kontradiksi dan Ketidakselarasan

**K1. Kontradiksi Pemetaan Akun Persediaan (Temuan Paling Material).**
IMPLEMENTASI_HIRARKI_PERSEDIAAN.md dan RUNBOOK_UI_HIRARKI_PERSEDIAAN_PSAK14.md memberikan label yang berbeda untuk akun dan pengelompokan yang sama:

| Kode | Label di IMPLEMENTASI_HIRARKI_PERSEDIAAN.md | Label di RUNBOOK/CHECKLIST_PSAK14.md |
|---|---|---|
| 1010030010 | persediaan supplies (dikelompokkan dalam "Persediaan Bahan Baku") | Bahan Baku & Supplies |
| 1010030020 | persediaan supplies riil (dikelompokkan dalam "Persediaan Bahan Baku") | Supplies Riil (Kontrol) |
| 1010030050 | persediaan supplies proses/produksi (dikelompokkan dalam "Persediaan Supplies") | Bahan Baku Dalam Proses |
| 1010030040 | persediaan produk riil (dikelompokkan dalam "Persediaan Produk Dijual") | Produk Riil (Kontrol) |
| 1010030030 | persediaan produk (dikelompokkan dalam "Persediaan Produk Dijual") | Produk Dijual |

Struktur grup pun berbeda: IMPLEMENTASI membentuk 5 grup (Produk Dijual, Produk Rakitan/WIP, Supplies, Bahan Baku, Lainnya) dengan total 7 akun; RUNBOOK/CHECKLIST memakai label per-akun tanpa grup. Konsekuensi: nilai "Dimensi Aktif" dan subtotal per grup potentially berbeda antar dokumen, sehingga angka panel tidak dapat direkonsiliasi tanpa keputusan final. Sumber: IMPLEMENTASI_HIRARKI_PERSEDIAAN.md lines 19-31, RUNBOOK_UI_HIRARKI_PERSEDIAAN_PSAK14.md lines 50-56.

**K2. Kontradiksi Route Persediaan.**
`IMPLEMENTASI_HIRARKI_PERSEDIAAN.md` memiliki target URL Ledger/viewBalances_periode/RekeningPembantuProduk/1010030030, sedangkan seluruh checklist/runbook area lain (termasuk CHECKLIST_PSAK14 yang menyebut viewBalances_l1) menggunakan entry point viewBalances_l1. Dua entry point berbeda untuk domain persediaan. Selain itu Tahap 2 pada dokumen implementasi justru menambahkan panel pada viewBalances_l1, sehingga satu dokumen memuat dua target.

**K3. Status Persediaan Tidak Konsisten antar Dokumen.**
CHECKLIST_UI_HIRARKI_PERSEDIAAN_PSAK14.md menyatakan "Status saat ini: DRAFT (siap dipakai untuk implementasi dan UAT)" dengan seluruh checkbox (0-12) kosong. Sementara IMPLEMENTASI_HIRARKI_PERSEDIAAN.md menandai 21 item checklist sebagai [x] (selesai), termasuk "UAT mode bulanan dan harian di browser (PASS, 2026-04-15)". Jadi implementasi sudah berjalan dan UAT parsial sudah PASS, namun checklist resmi masih DRAFT dan tidak ada dokumen UAT Hasil tersendiri. Status riil persediaan = **implementasi sebagian selesai dengan bukti UAT parsial, tapi dokumentasi checklist/UAT belum.spy**.

**K4. Mode Default Persediaan Bertentangan dengan Prinsip Modul Lain.**
Stabilization note 2026-04-15: default route sementara diarahkan ke legacy, dan mode hirarki diaktifkan eksplisit via ?view_mode=hirarki. Prinsip di seluruh modul lain justru mengharuskan mode baru tampil default. Ini pengecualian yang tidak dicatat di checklist/runbook persediaan.

**K5. Status UAT Perpajakan Tidak Terverifikasi Ulang.**
CHECKLIST_UI_HIRARKI_PERPAJAKAN.md menyatakan "Status saat ini: LULUS DENGAN CATATAN" dengan 8 checkbox Quality Gate/regression yang masih kosong: reset keyword, export/print, regression halaman bertemplate sama, sorting/paging/footer, role operasional, screenshot before. Namun bagian 12 menyatakan "Risiko tersisa: Belum uji klik reset keyword, export/print, role operasional, regression lintas halaman" - dan dokumen UAT Hasil terpisah untuk Perpajakan **tidak ada** dalam 37 file sumber. Status LULUS DENGAN CATATAN thus tidak dapat diverifikasi ulang lewat bukti.

**K6. Inkonsistensi Kebijakan Legacy hide/show.**
- Hide: Piutang (1010020090 Marketplace), Liabilitas (6 akun planned), Perpajakan (hutang pph21, hutang pph29, iaya pph21), Persediaan (4 akun planned).
- Show: Kas (mode hidden default tapi legacy mode disembunyikan dari ringkasan jika ada item legacy), Piutang Pembelian (mode show, 1 kategori aktif), Hutang Supplier (mode show, 4 akun aktif), Uang Muka Supplier (mode show, 2 kategori aktif).
Dampak: badge "Total Aktif" vs "Total Semua" memiliki makna berbeda antar modul. Pada modul show, keduanya identik (seperti dikonfirmasi UAT Uang Muka: "Total aktif terlihat konsisten dengan total semua (mode legacy show, tanpa kategori tersembunyi)").

**K7. Inkonsistensi Prefix Nama File UAT.**
Enam dokumen UAT memakai dua prefix berbeda: UAT_HASIL_* (Kas, Piutang Pembelian, Hutang Supplier, Liabilitas, Uang Muka) dan UAT_RESULT_* (Piutang PSAK 71). Selain itu RUNBOOK_INDEX_UI_HIRARKI_KEUANGAN.md hanya mendaftarkan 2 dari 6 dokumen UAT yang benar-benar ada (UAT_QUICKCHECK dan UAT_RESULT_PIUTANG_PSAK71), sehingga indeks tidak lengkap dan sudah basi.

**K8. Inkonsistensi Penamaan File Piutang Dagang.**
Runbook bernama RUNBOOK_UI_HIRARKI_PIUTANG_DAGANG.md (memuat kata "DAGANG") sementara checklist pasangannya bernama CHECKLIST_UI_HIRARKI_PIUTANG.md (tanpa "DAGANG"). Additionally ada CHECKLIST_UI_HIRARKI_PIUTANG_PSAK71.md sebagai dokumen terpisah untuk area yang sama.

**K9. Divergensi Nomenklatur COA Operasional vs COA-BI.**
COA operasional pada panel Ledger memakai kode 10 digit (mis. 1010020010) dan/atau alias teks (mis. hpp, penjualan). COA untuk BI (w_bi_sales_monthly) memakai kode 4 digit baru (4010, 5010) plus teks historis. Tidak ada tabel bridge yang memetakan kode operasional ke kode BI di sumber. Konsekuensi: rekonsiliasi angka panel Ledger versus laporan Rugi Laba BI belum dapat diaudit otomatis.

**K10. Divergensi Kedalaman Kode Akun dalam Satu Kelompok.**
Akun piutang usaha berformat 10 digit (1010020010) sementara akun hutang usaha berformat 7 digit (2010010), hutang bank 7 digit (2020020). Kedua kelompok berada pada domain "Kewajiban Lancar/Tidak Lancar" yang seharusnya konsisten. Possible legacy artifact yang tidak dinormalisasi.

**K11. Kode 1010040070 Direferensikan dengan Dua Nama.**
Di RUNBOOK_UI_HIRARKI_PERPAJAKAN.md kode 1010040070 adalah "PPN masukan jasa"; di CHECKLIST_UI_HIRARKI_PERPAJAKAN.md dan CHECKLIST_UI_HIRARKI_HUTANG_LIABILITAS.md akun yang sama muncul sebagai route RekeningPembantuSupplier/1010040070 (rel supplier, bukan rel pajak). Rel RekeningPembantuSupplier untuk akun pajak aset adalah anomali yang layak dikonfirmasi.

**K12. Kode Akun Liabilitas pada Dua Baseline yang Berbeda.**
Baseline liabilitas (CHECKLIST section 3A) tidak memasukkan 2010050 ke daftar "kelompok lancar terdeteksi" secara eksplisit di baris yang sama dengan 2010010... sebenarnya 2010050 tercantum. Namun eban harus dibayar (akun berawalan "beban") dikelompokkan di bawah Kewajiban Lancar, dan 2010020/2010030 (Hutang Sewa, Hutang Aktiva Tetap) dikelompokkan di bawah Kewajiban Tidak Lancar pada baseline liabilitas, sementara keduanya juga menjadi kartu **aktif** pada modul Hutang Dagang Supplier. Jadi satu akun (2010020, 2010030) Appears di dua area dengan klasifikasi lancar/tidak lancar yang berbeda - perlu konfirmasi klasifikasi PSAK yang benar.

**K13. Coverage Quality Gate UAT Tidak Seragam.**
- UAT Kas, Piutang Pembelian, Hutang Supplier, Liabilitas, Uang Muka: memuat 3 metode uji + 4 sub-bagian quickcheck lengkap + cross-role + evidence URL.
- UAT Piutang PSAK 71: 9 sub-bagian (Visual, Interaksi, Data Ringkasan, Quality Gate Teknis, Evidence) tetapi **tidak** memuat sub-bagian Cross-Role eksplisit, meski header menyatakan "Role penguji: Operasional + Holding".
- UAT Piutang Pembelian dan Uang Muka: tidak menyebut dimensi desktop 1366x768 maupun viewport 390x844 secara spesifik (hanya "desktop"/"viewport kecil").
- Checklist Piutang Dagang (reusable): sebagian besar checkbox [ ] kosong, hanya 3 baris "Catatan Implementasi san_15apr (2026-04-15)" yang terisi.

**K14. Kepatuhan terhadap Input Wajib Template Tidak Konsisten.**
Runbook template mensyaratkan input wajib termasuk "Contoh data uji (saldo > 0, saldo = 0, multi-dimensi)" dan "Daftar endpoint detail yang valid". Dokumen UAT hanya mendokumentasikan "Data saldo tersedia pada minimal 2 kategori kartu" - kasus saldo nol dan skenario multi-dimensi tidak pernah diuji secara eksplisit di dokumen mana pun. Karena ada koreksi arah saldo pada Hutang Supplier (kredit-debet), skenario saldo negatif adalah kasus yang paling rawan - namun tidak ada UAT khusus untuk itu.

**K15. "Tidak Ada Risiko Kritikal" Dinyatakan Seragam Seluruh Modul.**
Muncul di hampir semua dokumen (Kas, Piutang PSAK 71, Piutang Pembelian, Hutang Supplier, Liabilitas, Uang Muka) dengan redaksi identik "Risiko tersisa: tidak ada risiko kritikal terbuka pada scope UI-only", termasuk modul Perpajakan yang secara eksplisit punya 6 item regresi pending. Redaksi ini tampak seragam (template) dan bukan hasil analisis per modul - perlu ditinjau agar tidak mereduksikan urgensi temuan.

**K16. Data URL Environment Tidak Seragam.**
Beberapa dokumen UAT mencantumkan URL absolut https://demo.mayagrahakencana.com/san_15apr/... dengan bukti query (mis. ?o=1&periode=full&q=tunai untuk Kas, ?o=-1&periode=full&q=bubut untuk Piutang Pembelian, ?o=-1&periode=bulanan&thn=2026&bln=4&q=booil%20safes untuk Hutang Supplier, ?o=-1&periode=full&q=gunawan untuk Liabilitas, q=ridwan/q=ali untuk Uang Muka, ?o=-1&periode=full&q=indo untuk Piutang PSAK 71). Namun dokumen lain (Persediaan, Perpajakan, Hutang ke Konsumen) tidak menyertakan URL environment, sehingga lingkungan uji tidak dapat dipastikan sama.

**K17. Parameter o Berbeda Nilai antara Bukti UAT.**
Nilai o=1 (kas) versus o=-1 (semua UAT lainnya). Jika o adalah parameter cabang/unit, perbedaan ini berarti pengujian dilakukan pada cakupan organisasi berbeda - perlu konfirmasi apakah ini disengaja.

**K18. Rincian URL Kandidat UAT Liabilitas Lebih Lengkap dari Checklist-nya.**
UAT_HASIL_UI_HIRARKI_HUTANG_LIABILITAS_2026-04-16.md mencantumkan 6 URL kandidat termasuk RekeningPembantuHutangSaham/2020010 dan RekeningPembantuHutangPihakLain/2020030, sementara CHECKLIST_UI_HIRARKI_HUTANG_LIABILITAS.md hanya mencantumkan 4 URL. Dua URL tambahan hanya ada di dokumen UAT - inkonsistensi kelengkapan antar dokumen area yang sama.

**K19. Pernyataan "Panel Lama Dinonaktifkan" pada Modul Liabilitas.**
UAT Liabilitas mencatat "Panel Hutang Supplier lama dinonaktifkan ketika mode liabilitas aktif agar tidak dobel". Ini berarti modul Liabilitas dan modul Hutang Supplier saling menimpa pada route yang sama (RekeningPembantuSupplier/2010010 ada di kedua dokumen). Risiko: report atau UAT manapun yang dijalankan pada route tersebut bisa melihat panel yang berbeda tergantung flag aktif. Ini coupling antar area yang tidak di Pointer di checklist.

**K20. Blueprint Clustering Tidak Terhubung dengan Panel Ledger.**
Kelima blueprint (kas, banking, deviden, valas, taxes) berada di workspace berbeda (
ew_san_variant, analisis 2026-07-29) dengan tanggal ~3 bulan setelah UAT panel (2026-04). Tidak ada dokumen yang menjelaskan hubungan, urutan, atau dependensi antara implementasi panel Ledger di san_15apr (2026-04) dengan implementasi modul 
ew_san_variant (2026-07). Bridge COA antar dua workspace tidak terdokumentasi.

### 9.2 Temuan Konsistensi Positif (Yang Perlu Dipertahankan)

- Seluruh modul yang diimplementasikan konsisten exempted dari perubahan database, posting jurnal, dan business rule (pure UI-only).
- Normalisasi saldo berbasis detectRekDefaultPosition() diterapkan konsisten di Piutang, Piutang Pembelian, Uang Muka Supplier, dan Liabilitas.
- Seluruh file yang diubah secara konsisten terbatas pada pplication/controllers/Ledger.php dan pplication/views/ledger.php (beberapa modul juga menyertakan dokumen .md) dalam daftar file).
- Seluruh modul yang diimplementasikan lulus syntax check php -l untuk kedua file yang diubah, dengan hasil "no syntax errors".
- Normalisasi query string konsisten across all modules: periode, 	hn, ln, date, q, o, w dipertahankan; tidak ada satu pun UAT yang melaporkan regresi query string.
- Standar kompatibilitas PHP 5.6 + CodeIgniter 3 dijaga konsisten di seluruh 37 dokumen.
- Sibling module disekat secara tegas: Piutang Pembelian (1010020030) dan Uang Muka Supplier (1010050010/1010050020) tidak dicampur; Piutang (1010020010) tidak memasukkan 1010020030.
- Bukti UAT selalu menyertakan screenshot before/after, screenshot mobile, dan capture URL - standar evidence yang konsisten.
- Skrip eksekusi manual 10-15 menit terdokumentasi di setiap dokumen UAT Hasil, dengan urutan langkah yang seragam.
- Struktur blueprint 5 modul pendukung benar-benar identik (config/controllers/views), yang menunjukkan disiplin arsitektur yang baik.

### 9.3 Rekomendasi Tindak Lanjut (Prioritas)

| Prioritas | Tindakan | Area |
|---|---|---|
| Tinggi | Putuskan kontradiksi mapping akun Persediaan (K1) dan route (K2), lalu selaraskan checklist PSAK 14 dengan implementasi riil | Persediaan |
| Tinggi | Buat dokumen UAT Hasil untuk Perpajakan, atau turunkan status menjadi TUNDA sampai 6 item regresi selesai | Perpajakan |
| Medium | Tetapkan satu kebijakan legacy hide/show global, atau didokumentasikan pengecualian per modul secara eksplisit | Seluruh area |
| Medium | Susun tabel bridge COA operasional (10 digit) ke COA-BI (4 digit) untuk rekonsiliasi panel vs laporan | Seluruh area / BI |
| Medium | Tutup UAT Persediaan (UAT mode hirarki via ?view_mode=hirarki, kasus saldo nol, filter merek chip/dropdown) dan naikkan status dari DRAFT | Persediaan |
| Medium | Perbarui RUNBOOK_INDEX_UI_HIRARKI_KEUANGAN.md agar mencantumkan seluruh 6 dokumen UAT dan konvensi prefix nama | Indeks |
| Rendah | Dokumentasikan coupling flag panel Liabilitas vs Hutang Supplier pada route yang sama (K19) | Liabilitas / Hutang Supplier |
| Rendah | T-harmonisasi penamaan file Piutang Dagang dan awalan UAT (K7, K8) | Piutang |
| Rendah | Tambah skenario UAT saldo nol dan saldo negatif (terutama untuk akun kewajiban) | Seluruh area |
| Rendah | Klarifikasi konsistensi parameter o antar bukti UAT (K17) | Seluruh area |
## 10. Lampiran: Daftar File Sumber

| No | Nama File | Ukuran (byte) | Topik H1 | Peran |
|---|---|---|---|---|
| 1 | CHECKLIST_UI_HIRARKI_HUTANG_DAGANG_SUPPLIER.md | 5948 | Checklist UI Hirarki Hutang Dagang Supplier (Reusable) | Checklist area Hutang Supplier (LULUS, 2026-04-16) |
| 2 | CHECKLIST_UI_HIRARKI_HUTANG_KE_KONSUMEN.md | 5122 | Checklist UI Hirarki Hutang Ke Konsumen (Reusable) | Checklist template area Hutang Konsumen (belum diisi) |
| 3 | CHECKLIST_UI_HIRARKI_HUTANG_LIABILITAS.md | 7716 | Checklist UI Hirarki Hutang (Liabilitas) (Strict Existing COA) | Checklist area Liabilitas (LULUS, 2026-04-16) |
| 4 | CHECKLIST_UI_HIRARKI_KAS.md | 6938 | Checklist UI Hirarki Rekening Kas (Reusable) | Checklist area Kas (LULUS, 2026-04-15) |
| 5 | CHECKLIST_UI_HIRARKI_PERPAJAKAN.md | 7264 | Checklist UI Hirarki Rekening Perpajakan (Strict Existing COA) | Checklist area Pajak (LULUS DENGAN CATATAN, 2026-04-16) |
| 6 | CHECKLIST_UI_HIRARKI_PERSEDIAAN_PSAK14.md | 4142 | Checklist UI Hirarki Persediaan (PSAK 14, Strict Existing COA) | Checklist area Persediaan (DRAFT, 2026-04-16) |
| 7 | CHECKLIST_UI_HIRARKI_PIUTANG.md | 2929 | Checklist UI Hirarki Piutang (Reusable) | Checklist area Piutang (sebagian terisi) |
| 8 | CHECKLIST_UI_HIRARKI_PIUTANG_PEMBELIAN.md | 6392 | Checklist UI Hirarki Piutang Pembelian (Reusable) | Checklist area Piutang Pembelian (LULUS, 2026-04-16) |
| 9 | CHECKLIST_UI_HIRARKI_PIUTANG_PSAK71.md | 6321 | Checklist UI Hirarki Piutang (PSAK 71, Strict Existing COA) | Checklist area Piutang PSAK 71 (DONE, 2026-04-16) |
| 10 | CHECKLIST_UI_HIRARKI_UANG_MUKA_SUPPLIER.md | 6187 | Checklist UI Hirarki Uang Muka Supplier (Reusable) | Checklist area Uang Muka (LULUS, 2026-04-16) |
| 11 | RUNBOOK_UI_HIRARKI_HUTANG_DAGANG_SUPPLIER.md | 4713 | Runbook Implementasi UI Hirarki Hutang Dagang Supplier (Reusable) | Runbook area Hutang Supplier |
| 12 | RUNBOOK_UI_HIRARKI_HUTANG_KE_KONSUMEN.md | 4868 | Runbook Implementasi UI Hirarki Hutang Ke Konsumen (Reusable) | Runbook template area Hutang Konsumen |
| 13 | RUNBOOK_UI_HIRARKI_HUTANG_LIABILITAS.md | 7212 | Runbook Implementasi UI Hirarki Hutang (Liabilitas) (Strict Existing COA) | Runbook area Liabilitas |
| 14 | RUNBOOK_UI_HIRARKI_KAS.md | 5071 | Runbook Implementasi UI Hirarki Rekening Kas (Reusable) | Runbook area Kas |
| 15 | RUNBOOK_UI_HIRARKI_PERPAJAKAN.md | 7054 | Runbook Implementasi UI Hirarki Rekening Perpajakan (Strict Existing COA) | Runbook area Pajak |
| 16 | RUNBOOK_UI_HIRARKI_PERSEDIAAN_PSAK14.md | 6534 | Runbook Implementasi UI Hirarki Persediaan (PSAK 14, Strict Existing COA) | Runbook area Persediaan (DRAFT) |
| 17 | RUNBOOK_UI_HIRARKI_PIUTANG_DAGANG.md | 4262 | Runbook Implementasi UI Hirarki Piutang Dagang (Reusable) | Runbook area Piutang Dagang |
| 18 | RUNBOOK_UI_HIRARKI_PIUTANG_PEMBELIAN.md | 5332 | Runbook Implementasi UI Hirarki Piutang Pembelian (Reusable) | Runbook area Piutang Pembelian |
| 19 | RUNBOOK_UI_HIRARKI_PIUTANG_PSAK71.md | 8349 | Runbook Implementasi UI Hirarki Piutang (PSAK 71, Strict Existing COA) | Runbook area Piutang PSAK 71 (DONE) |
| 20 | RUNBOOK_UI_HIRARKI_UANG_MUKA_SUPPLIER.md | 4804 | Runbook Implementasi UI Hirarki Uang Muka Supplier (Reusable) | Runbook area Uang Muka |
| 21 | RUNBOOK_INDEX_UI_HIRARKI_KEUANGAN.md | 1499 | Index Runbook UI Hirarki Keuangan (Reusable) | Indeks seluruh runbook/checklist/UAT cluster |
| 22 | RUNBOOK_TEMPLATE_UNIVERSAL_UI_HIRARKI_KEUANGAN.md | 5728 | Runbook Template Universal UI Hirarki Keuangan (Reusable Antar Aplikasi) | Template runbook lintas aplikasi |
| 23 | CHECKLIST_TEMPLATE_UNIVERSAL_UI_HIRARKI_KEUANGAN.md | 3611 | Checklist Template Universal UI Hirarki Keuangan (Reusable Antar Aplikasi) | Template checklist lintas aplikasi (DRAFT) |
| 24 | UAT_HASIL_UI_HIRARKI_HUTANG_DAGANG_SUPPLIER_2026-04-16.md | 5489 | Hasil UAT UI Hirarki Hutang Dagang Supplier (2026-04-16) | Bukti UAT area Hutang Supplier (LULUS) |
| 25 | UAT_HASIL_UI_HIRARKI_HUTANG_LIABILITAS_2026-04-16.md | 5918 | Hasil UAT UI Hirarki Hutang (Liabilitas) (2026-04-16) | Bukti UAT area Liabilitas (LULUS) |
| 26 | UAT_HASIL_UI_HIRARKI_KAS_2026-04-15.md | 4771 | Hasil UAT UI Hirarki Kas (2026-04-15) | Bukti UAT area Kas (LULUS) |
| 27 | UAT_HASIL_UI_HIRARKI_PIUTANG_PEMBELIAN_2026-04-16.md | 4771 | Hasil UAT UI Hirarki Piutang Pembelian (2026-04-16) | Bukti UAT area Piutang Pembelian (LULUS) |
| 28 | UAT_HASIL_UI_HIRARKI_UANG_MUKA_SUPPLIER_2026-04-16.md | 5343 | Hasil UAT UI Hirarki Uang Muka Supplier (2026-04-16) | Bukti UAT area Uang Muka (LULUS) |
| 29 | UAT_RESULT_UI_HIRARKI_PIUTANG_PSAK71_2026-04-16.md | 2986 | UAT Result UI Hirarki Piutang PSAK71 (2026-04-16) | Bukti UAT area Piutang PSAK 71 (LULUS) |
| 30 | UAT_QUICKCHECK_UI_HIRARKI_KEUANGAN.md | 2323 | UAT Quickcheck UI Hirarki Keuangan (10-15 Menit, Reusable) | Skrip UAT cepat universal |
| 31 | IMPLEMENTASI_HIRARKI_PERSEDIAAN.md | 3145 | Implementasi Hirarki Persediaan (Tampilan Saja) | Referensi implementasi riil area Persediaan |
| 32 | coa_structure_bi.md | 2537 | Struktur Chart of Accounts (COA) & Pemetaan Modul BI | Referensi struktur COA dan rumus BI |
| 33 | blueprint_kas.md | 4631 | BLUEPRINT CETAK BIRU MODUL: KAS & BANK (CASH & BANK MUTATION) | Blueprint modul kas/mutasi (Completed & Verified) |
| 34 | blueprint_banking.md | 4673 | BLUEPRINT CETAK BIRU MODUL: BANKING & KREDIT BANK | Blueprint modul pinjaman bank (Completed & Verified) |
| 35 | blueprint_deviden.md | 4613 | BLUEPRINT CETAK BIRU MODUL: DEVIDEN (DIVIDEND DISTRIBUTION & RETAINED EARNINGS) | Blueprint modul dividen (Completed & Verified) |
| 36 | blueprint_valas.md | 4591 | BLUEPRINT CETAK BIRU MODUL: VALAS (FOREIGN CURRENCY & EXCHANGE REVALUATION) | Blueprint modul valuta asing (Completed & Verified) |
| 37 | blueprint_taxes.md | 4662 | BLUEPRINT CETAK BIRU MODUL: TAXES (PERPAJAKAN & E-FAKTUR) | Blueprint modul pajak/e-faktur (Completed & Verified) |

**Total file sumber dibaca: 37 file.**

**Komposisi cluster (37 file):**

| Kategori | Jumlah | Keterangan |
|---|---|---|
| Checklist per area | 10 | Satu per area keuangan |
| Runbook per area | 10 | Satu per area keuangan |
| Indeks runbook | 1 | RUNBOOK_INDEX_UI_HIRARKI_KEUANGAN.md |
| Template universal | 2 | 1 runbook template, 1 checklist template |
| UAT Hasil / UAT Result | 6 | 5 UAT_HASIL + 1 UAT_RESULT |
| UAT Quickcheck (skrip) | 1 | UAT_QUICKCHECK_UI_HIRARKI_KEUANGAN.md |
| Referensi implementasi | 1 | IMPLEMENTASI_HIRARKI_PERSEDIAAN.md |
| Referensi COA & BI | 1 | coa_structure_bi.md |
| Blueprint modul | 5 | kas, banking, deviden, valas, taxes |

**Cakupan UAT:** 6 dari 10 area memiliki dokumen UAT Hasil tersendiri (Kas, Piutang PSAK 71, Piutang Pembelian, Hutang Dagang Supplier, Liabilitas, Uang Muka Supplier). Area tanpa dokumen UAT tersendiri: Hutang ke Konsumen, Perpajakan, Persediaan - serta 5 modul pendukung berbasis blueprint (Kas/Banking, Banking, Deviden, Valas, Taxes).

**Rentang tanggal UAT yang tercatat:** 2026-04-15 (Kas) dan 2026-04-16 (Piutang PSAK 71, Piutang Pembelian, Hutang Supplier, Liabilitas, Uang Muka). Tanggal analisis blueprint: 2026-07-29.

**PIC yang tercatat:** Implementasi - Codex (pairing dengan user) atau Codex + User; Reviewer - User (final sign-off untuk Liabilitas). Penguji UAT - Codex (static validation) + User (manual validation executed), kecuali UAT Piutang PSAK 71 yang mencatat penguji sebagai Tim internal / PIC modul.
