# Checklist UI Hirarki Hutang (Liabilitas) (Strict Existing COA)

Checklist ini khusus perubahan tampilan (UI-only) untuk implementasi hirarki rekening hutang/liabilitas, kompatibel dengan PHP 5.6 dan CodeIgniter 3.

Status saat ini: `LULUS` (implementasi, lint, dan UAT manual desktop/mobile/cross-role sudah ditutup).

## 0. Metadata Implementasi
- [x] Nama aplikasi: `san_15apr`
- [x] Nama modul/halaman: `Ledger -> viewBalances_l1 (multi rel untuk liabilitas)`
- [x] URL halaman:
  - `Ledger/viewBalances_l1/RekeningPembantuSupplier/2010010`
  - `Ledger/viewBalances_l1/RekeningPembantuCustomer/2010050`
  - `Ledger/viewBalances_l1/RekeningPembantuBank/2020020`
  - `Ledger/viewBalances_l1/RekeningPembantuHutangJangkaPanjang/hutang%20jangka%20panjang`
- [x] Mode implementasi: `Strict Existing COA`
- [x] Tanggal persiapan dokumen: `2026-04-16`
- [x] PIC dokumen: `Codex (pairing dengan user)`
- [x] PIC reviewer: `User (final sign-off)`

## 1. Scope & Guardrail
- [x] Perubahan dibatasi pada `view`, CSS, dan JS (mapping data tampilan boleh di controller).
- [x] Tidak mengubah struktur database.
- [x] Tidak mengubah posting jurnal, COA engine, atau logic transaksi.
- [x] Tidak mengubah endpoint API utama.
- [x] Tidak mengubah perhitungan saldo existing (hanya cara tampil).
- [x] Tidak menambah akun hutang baru pada fase UI-only.
- [x] Status akun non-existing ditetapkan sebagai `planned/inactive` atau `hide`.

## 2. Kompatibilitas Teknis
- [x] Valid untuk PHP 5.6 (tanpa syntax PHP 7+).
- [x] Valid untuk CodeIgniter 3 (struktur controller/view/helper CI3).
- [x] Tidak menambahkan dependency front-end modern yang tidak ada di proyek.
- [x] Tetap kompatibel dengan plugin tabel existing (DataTables/komponen internal).

## 3. Discovery File
- [x] Identifikasi controller target hirarki existing (`application/controllers/Ledger.php`).
- [x] Identifikasi view utama (`application/views/ledger.php`).
- [x] Identifikasi source config akuntansi (`application/config/heAccounting.php`).
- [x] Identifikasi source alias akun dari DB (`application/helpers/he_accounting_helper.php`, `application/models/Mdls/MdlAccounts.php`).
- [x] Identifikasi final route halaman hutang yang akan dipakai pada implementasi.

## 3A. Baseline Akun Hutang Existing (Draft)
- [x] Kelompok lancar terdeteksi: `2010010`, `2010040`, `2030060`, `2030070`, `hutang pph23`, `hutang pph4 ayat 2`, `2010050`, `2010100`, `2040010`, `2040020`, `beban harus dibayar`.
- [x] Kelompok tidak lancar terdeteksi: `2020020`, `hutang jangka panjang`, `2010020`, `2010030`, `2020010`, `2020030`, `hutang biaya bunga`.
- [x] Kelompok planned/inactive: `hutang pph21`, `hutang pph29`, `LIAB-OBLIGASI`, `LIAB-PAJAK-TANGGUHAN`, `LIAB-IMBALAN-KERJA`, `LIAB-BAGIAN-JP`.
- [x] Validasi final daftar akun aktif terhadap source existing (`heAccounting` + alias COA) dilakukan sebelum coding UI.

## 4. Definisi Hirarki Hutang (UI)
- [x] Tetapkan Level 1: `Kewajiban (Liabilitas)`.
- [x] Tetapkan Level 2: `Kewajiban Lancar`, `Kewajiban Tidak Lancar`.
- [x] Tetapkan Level 3: kelompok akun per section (`usaha`, `akrual`, `pajak`, `konsumen`, `intercompany`, `pinjaman`, `lainnya`).
- [x] Tetapkan Level 4: akun existing per kelompok (tanpa akun baru).
- [x] Tetapkan aturan summary: total utama hanya dari akun `active`.
- [x] Tetapkan kebijakan tampilan akun `legacy/planned` (show/hide) sebelum implementasi.

## 4A. Mapping Keputusan Implementasi (Diisi Saat Eksekusi)
- [x] Mapping final kewajiban lancar:
  - `2010010`, `2010040`, `beban harus dibayar`, `2030060`, `2030070`, `hutang pph23`, `hutang pph4 ayat 2`, `2010050`, `2010100`, `2040010`, `2040020`.
- [x] Mapping final kewajiban tidak lancar:
  - `2020020`, `hutang jangka panjang`, `2010020`, `2010030`, `2020010`, `2020030`, `hutang biaya bunga`.
- [x] Daftar akun yang di-hide:
  - `hutang pph21`, `hutang pph29`, `LIAB-BAGIAN-JP`, `LIAB-OBLIGASI`, `LIAB-IMBALAN-KERJA`, `LIAB-PAJAK-TANGGUHAN`.
- [x] Daftar akun planned/inactive:
  - sama dengan daftar akun yang di-hide.
- [x] Catatan route/subledger yang belum siap:
  - akun planned tidak di-link (`route_enabled=false`) dan hanya sebagai referensi hirarki.

## 5. Komponen UI yang Harus Ada
- [x] Panel ringkasan hirarki hutang/liabilitas.
- [x] Kartu per kelompok utama hutang.
- [x] Nilai saldo besar (visual priority) pada setiap kartu.
- [x] Meta count dimensi aktif per kelompok.
- [x] Badge total gabungan kelompok aktif.
- [x] Catatan mode aktif (strict existing COA) ditampilkan.

## 6. Filter & Interaksi
- [x] Filter periode tetap tersedia (reuse mekanisme existing).
- [x] Search keyword tetap tersedia (reuse mekanisme existing).
- [x] Tombol reset keyword tetap tersedia (reuse mekanisme existing).
- [x] Tombol export/print existing tetap tersedia (reuse mekanisme existing).
- [x] Link klik kartu menuju detail yang sesuai tervalidasi manual di semua rel.

## 7. Aturan Visual (Pixel-Perfect)
- [x] Warna panel mengikuti acuan desain modul hutang/liabilitas.
- [x] Komposisi layout kartu konsisten.
- [x] Tipografi mengikuti hierarchy visual (judul, angka, meta).
- [x] Spacing konsisten antar panel/filter/tabel.
- [x] Kontras teks dan background cukup terbaca.
- [x] Tampilan mobile tervalidasi manual pada viewport kecil.

## 8. Validasi Data Ringkasan
- [x] Rumus saldo kartu liabilitas mengikuti posisi normal akun (`kredit - debet` untuk default kredit).
- [x] Total gabungan kategori aktif dihitung dari akun non-hidden.
- [x] Jumlah dimensi aktif dihitung agregat per akun aktif.
- [x] Akun legacy/planned mengikuti aturan hide pada tampilan awal.
- [x] Nilai saldo per kartu vs tabel detail tervalidasi manual pada sample data produksi.
- [x] Tabel detail tetap menampilkan data sesuai filter existing (validasi runtime manual).

## 9. Regression Checklist
- [x] Tidak merusak halaman lain yang memakai template sama (validasi runtime lintas modul).
- [x] Tidak merusak sorting, paging, dan footer total di tabel (validasi runtime).
- [x] Tidak merusak akses role berbeda (operasional, supervisor, holding).
- [x] Tidak merusak state query string (periode, keyword, cabang, gudang) secara statis.

## 10. Quality Gate
- [x] Lulus `php -l` untuk semua file yang diubah.
- [x] Uji manual desktop (Chrome/Edge).
- [x] Uji manual mobile/tablet viewport.
- [x] Uji minimal 1 akun role operasional.
- [x] Uji minimal 1 akun role holding/management.

## 11. Dokumentasi Hasil
- [x] Catat daftar file yang diubah.
- [x] Catat keputusan status akun (`active/legacy/planned`).
- [x] Simpan screenshot sebelum dan sesudah.
- [x] Simpan catatan known limitation (tidak ada limitation kritikal terbuka).
- [x] Dokumen hasil UAT dibuat (sesuai tanggal implementasi).

## 12. Template Catatan Implementasi
- [x] Scope perubahan: `UI-only hierarchy hutang/liabilitas + mapping data tampilan pada controller Ledger`.
- [x] Kelompok akun yang ditampilkan: `Kewajiban Lancar + Kewajiban Tidak Lancar (strict existing COA)`.
- [x] Akun legacy/planned yang di-hide: `hutang pph21`, `hutang pph29`, `LIAB-BAGIAN-JP`, `LIAB-OBLIGASI`, `LIAB-IMBALAN-KERJA`, `LIAB-PAJAK-TANGGUHAN`.
- [x] Daftar file yang diubah:
  - `application/controllers/Ledger.php`
  - `application/views/ledger.php`
  - `RUNBOOK_UI_HIRARKI_HUTANG_LIABILITAS.md`
  - `CHECKLIST_UI_HIRARKI_HUTANG_LIABILITAS.md`
  - `RUNBOOK_INDEX_UI_HIRARKI_KEUANGAN.md`
  - `UAT_HASIL_UI_HIRARKI_HUTANG_LIABILITAS_2026-04-16.md`
- [x] Hasil uji fungsi: `lint lulus; blok filter/search/export tetap reuse mekanisme existing`.
- [x] Hasil uji visual: `panel liabilitas + kartu section lancar/tidak lancar sudah ter-render`.
- [x] Risiko tersisa: `tidak ada risiko kritikal terbuka pada scope UI-only`.
- [x] Rencana tahap berikutnya: `arsipkan evidence UAT ke paket handover`.
