# Runbook Implementasi UI Hirarki Hutang (Liabilitas) (Strict Existing COA)

Runbook ini adalah panduan eksekusi langkah demi langkah untuk menerapkan hirarki rekening hutang/liabilitas pada level tampilan (UI-only), tanpa mengubah logic transaksi/jurnal.

Kompatibilitas target:
- PHP 5.6
- CodeIgniter 3

## 1. Tujuan
Menerapkan tampilan hirarki hutang/liabilitas yang konsisten dengan best practice akuntansi dan struktur COA existing, dengan prinsip:
1. Hanya memakai akun yang sudah ada di sistem (`Strict Existing COA`).
2. Tidak membuat akun/jurnal baru pada fase UI-only.
3. Menyusun hirarki berdasarkan kelompok `Kewajiban Lancar` dan `Kewajiban Tidak Lancar`.

## 2. Prinsip Strict Existing COA
Wajib:
- Ambil daftar akun dari master COA existing (`acc_coa` + alias aktif).
- Gunakan kode/nama akun existing apa adanya.
- Jika akun best practice belum tersedia di COA, tampilkan sebagai `planned/inactive` (opsional), tanpa posting dan tanpa manipulasi saldo.

Dilarang:
- Menambah akun baru di database.
- Mengubah mapping jurnal atau aturan posting.
- Mengubah logic approval/validasi transaksi existing.

## 3. Batasan Implementasi
Wajib:
- Perubahan dibatasi pada `view`, CSS, JS, dan mapping data tampilan di controller.
- Perhitungan saldo tetap memakai sumber data existing.

Dilarang:
- Mengubah struktur database.
- Mengubah posting jurnal.
- Mengubah core business rule transaksi.

## 4. Input Wajib Sebelum Mulai
Siapkan data berikut sebelum coding:
- Daftar akun hutang/liabilitas existing (kode + nama) dari master COA aktif.
- Keputusan status akun per item: `active`, `legacy`, atau `planned/inactive`.
- Halaman target (controller + view) untuk mode hirarki.
- Acuan visual panel hirarki yang akan dipakai.

## 5. Baseline Mapping COA Hutang (Draft `san_15apr`)
Daftar ini adalah draft awal untuk implementasi UI dan wajib divalidasi ke master COA aktif sebelum coding.

### 5.1 Kewajiban Lancar (Candidate Active)
- `2010010` - Hutang Usaha (supplier)
- `2010040` - Hutang Biaya
- `2030060` - PPN Keluaran Belum Faktur
- `2030070` - PPN Keluaran Sudah Faktur
- `hutang pph23` - Utang PPh 23
- `hutang pph4 ayat 2` - Utang PPh 4(2)
- `2010050` - Hutang ke Konsumen
- `2010100` - Hutang Valas ke Konsumen
- `2040010` - Hutang ke Pusat
- `2040020` - Hutang Biaya ke Pusat

### 5.2 Kewajiban Tidak Lancar (Candidate Active)
- `2020020` - Hutang Bank
- `hutang jangka panjang` - Hutang Jangka Panjang
- `2010020` - Hutang Sewa
- `2010030` - Hutang Aktiva Tetap
- `2020010` - Hutang ke Pemegang Saham
- `2020030` - Hutang ke Pihak Lain
- `hutang biaya bunga` - Hutang Biaya Bunga

### 5.3 Candidate Planned/Inactive
- Bagian jangka pendek dari hutang jangka panjang (split tenor belum terpisah pada COA).
- Hutang obligasi.
- Kewajiban imbalan pasca kerja.
- Kewajiban pajak tangguhan.
- `hutang pph21` dan `hutang pph29` (jika belum siap pemetaan subledger final).

## 6. Output Akhir Yang Diharapkan
- Panel hirarki hutang/liabilitas tampil pada halaman target.
- Kartu per kelompok utama menampilkan saldo dan jumlah dimensi aktif.
- Total gabungan akun aktif tampil.
- Filter periode/search/export existing tetap normal.
- Akun `legacy`/`planned` mengikuti kebijakan tampil yang disepakati.

## 7. Urutan Eksekusi (End-to-End)

### Step 1 - Discovery Lokasi Kode
1. Cari controller yang menyiapkan data halaman target.
2. Cari view yang merender panel summary + tabel detail.
3. Catat helper formatter (uang/tanggal) dan script filter.
4. Catat titik reuse template yang dipakai halaman lain.

Deliverable:
- Daftar file target (controller/view/CSS/JS).

### Step 2 - Validasi Master COA Existing
1. Cocokkan draft akun hutang dengan master COA aktif.
2. Tandai item yang benar-benar aktif dan dipakai transaksi.
3. Tandai item yang belum ada/legacy untuk mode `planned` atau `hide`.

Deliverable:
- Mapping final akun hutang strict existing per kelompok.

### Step 3 - Mapping Hirarki Data Untuk UI
1. Definisikan struktur array hirarki hutang di controller.
2. Tetapkan field minimal per kartu:
- `label`
- `note`
- `route_rel`
- `route_rekening`
- `section` (`lancar` / `tidak_lancar`)
- `group`
- `status`
- `count_label`
- `route_enabled`
- `hide_in_ui`
- `saldo`
- `count`
3. Tetapkan object totals:
- total akun aktif
- total semua akun
- count agregat dimensi (supplier/customer/objek/akun)
- indikator `legacy_hidden`

Deliverable:
- Data siap render di view tanpa mengubah query bisnis inti.

### Step 4 - Implementasi Panel UI Hirarki Hutang
1. Tambahkan blok panel hirarki di atas tabel.
2. Render kartu berdasarkan `section`:
- Kewajiban Lancar
- Kewajiban Tidak Lancar
3. Render item akun sesuai mapping strict existing.
4. Hide item `legacy/planned` sesuai kebijakan.
5. Pastikan link kartu menuju detail existing yang valid.

Deliverable:
- Panel hirarki hutang tampil stabil di desktop/mobile.

### Step 5 - Sinkronisasi Filter Dan Search
1. Pastikan filter periode tetap muncul dan berfungsi.
2. Pastikan search keyword tetap berfungsi.
3. Pastikan tombol reset keyword tetap berfungsi.
4. Pastikan export/print tetap aktif sesuai role.

Deliverable:
- Interaksi user tidak berubah (hanya tampilan/hirarki).

### Step 6 - Fine-Tuning Visual
1. Samakan warna panel dengan acuan desain.
2. Samakan tipografi nilai saldo (lebih dominan dari label).
3. Rapikan spacing panel, filter, dan tabel.
4. Verifikasi readability kontras warna.

Deliverable:
- Hasil visual konsisten dan mudah dibaca.

### Step 7 - Quality Check
1. Jalankan syntax check untuk file PHP yang diubah.
2. Uji desktop (Chrome/Edge).
3. Uji mobile/tablet viewport.
4. Uji minimal 2 role user (operasional + holding).
5. Cek tidak ada regresi pada halaman lain bertemplate sama.

Deliverable:
- Bukti lulus validasi teknis dan fungsional.

### Step 8 - Dokumentasi Dan Handover
1. Catat daftar file yang diubah.
2. Catat keputusan status akun (`active/legacy/planned`).
3. Simpan screenshot before/after.
4. Catat known limitation.
5. Lampirkan checklist status final.

Deliverable:
- Paket handover implementasi siap audit.

## 8. Template Catatan Per Eksekusi
- Aplikasi:
- Modul/Halaman:
- Scope UI-only:
- Kelompok akun aktif:
- Kelompok akun legacy/planned:
- Mapping COA final dipakai:
- File diubah:
- Hasil syntax check:
- Hasil test fungsi:
- Hasil test visual:
- Risiko tersisa:
- Next action:

## 9. Quick Rollback Plan
Jika hasil UI tidak sesuai:
1. Revert file view yang diubah.
2. Revert mapping panel di controller.
3. Jalankan ulang syntax check.
4. Verifikasi halaman kembali ke baseline.

Catatan:
- Lakukan rollback per file agar mudah ditelusuri.
- Hindari rollback massal tanpa review perubahan.

## 10. Referensi Pendamping
Gunakan bersama:
- `CHECKLIST_UI_HIRARKI_HUTANG_LIABILITAS.md`
- `UAT_QUICKCHECK_UI_HIRARKI_KEUANGAN.md`

## 11. Eksekusi UAT Cepat (Wajib Sebelum Handover)
Setelah coding selesai, jalankan quickcheck ini:
1. Isi identitas uji pada `UAT_QUICKCHECK_UI_HIRARKI_KEUANGAN.md`.
2. Jalankan blok `UAT Visual Ringkas`.
3. Jalankan blok `UAT Interaksi Ringkas`.
4. Jalankan blok `UAT Cross-Role Ringkas`.
5. Simpan evidence screenshot dan ringkasan status (`LULUS` / `LULUS DENGAN CATATAN` / `TUNDA`).

Target waktu:
- 10-20 menit per modul untuk validasi baseline.
