﻿# Runbook Implementasi UI Hirarki Rekening Perpajakan (Strict Existing COA)

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

Kompatibilitas target:
- PHP 5.6
- CodeIgniter 3

## 1. Tujuan
Menerapkan tampilan hirarki perpajakan yang konsisten dengan standar akuntansi dan best practice, 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. Memisahkan visual pajak menjadi aset, liabilitas, dan beban.

## 2. Prinsip Strict Existing COA
Wajib:
- Ambil daftar akun dari master COA existing (acc_coa + alias yang sudah aktif).
- Gunakan nama/kode akun existing apa adanya.
- Jika akun best practice belum ada 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 pajak.
- Mengubah logic approval/validasi perpajakan existing.

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

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

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

## 5. Daftar Kandidat Akun Existing (Baseline `san_15apr`)
Daftar awal ini dipakai sebagai draft mapping UI. Final mapping tetap wajib divalidasi ke master COA aktif.

1. Kelompok aset (pajak dibayar di muka):
- `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`

2. Kelompok liabilitas (utang pajak):
- `hutang ppn`
- `ppn out`
- `ppn out sudah ada faktur`
- `hutang pph21`
- `hutang pph23`
- `hutang pph29`
- `hutang pph4 ayat 2`
- `pph25_29`

3. Kelompok beban pajak:
- `biaya pph21`

4. Contoh kode akun pajak yang sudah muncul pada config existing:
- `1010040050` (PPN masukan)
- `1010040070` (PPN masukan jasa)
- `2030060` (PPN keluaran belum faktur)
- `2030070` (PPN keluaran sudah faktur)

Catatan:
- `PPh 26` belum ditemukan pada baseline config saat ini, sehingga tidak boleh dipaksa sebagai akun aktif pada mode strict existing.

## 6. Output Akhir Yang Diharapkan
- Panel hirarki perpajakan tampil di halaman target.
- Kartu per kelompok akun pajak menampilkan saldo dan jumlah akun aktif.
- Total gabungan kelompok 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 halaman target yang menyiapkan data.
2. Cari view yang merender panel summary + tabel.
3. Catat helper formatter (uang/tanggal) dan script filter.
4. Catat titik reuse (template dipakai halaman lain).

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

### Step 2 - Validasi Master COA Existing
1. Cocokkan draft akun pajak 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 pajak strict existing per kelompok.

### Step 3 - Mapping Hirarki Data Untuk UI
1. Definisikan struktur array hirarki perpajakan di controller.
2. Tetapkan field minimal per kartu:
- `label`
- `note`
- `rekening`/`kode akun`
- `saldo`
- `count`
- `route_enabled`
- `hide_in_ui`
- `status`
3. Tetapkan object totals:
- total kategori aktif
- total semua (opsional)
- count agregat
- indikator legacy/planned hidden

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

### Step 4 - Implementasi Panel UI Hirarki Perpajakan
1. Tambahkan blok panel hirarki perpajakan di atas tabel.
2. Render kartu per kelompok:
- Pajak Dibayar di Muka (Aset)
- Utang Pajak (Liabilitas)
- Beban Pajak (Laba Rugi)
3. Render item akun per kelompok sesuai mapping strict existing.
4. Hide item `legacy/planned` sesuai kebijakan.
5. Pastikan link kartu menuju detail existing yang valid.

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

### Step 5 - Sinkronisasi Filter Dan Search
1. Pastikan filter periode tetap muncul.
2. Pastikan search keyword tetap berfungsi.
3. Pastikan tombol reset dan search submit 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. Samakan style header tabel bila dibutuhkan.
5. Verifikasi readability kontras warna.

Deliverable:
- Hasil visual konsisten dan mudah dibaca.

### Step 7 - Quality Check
1. Jalankan syntax check 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 halaman lain yang memakai template 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
Isi template ini tiap kali runbook dipakai:

- 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_PERPAJAKAN.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-15 menit per modul untuk validasi baseline.
