# Runbook Implementasi UI Hirarki Persediaan (PSAK 14, Strict Existing COA)

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

Kompatibilitas target:
- PHP 5.6
- CodeIgniter 3

## Status Eksekusi Saat Ini (Update 2026-04-16)
- Status implementasi: `DRAFT` (siap dipakai untuk implementasi/penyelarasan berikutnya).
- Referensi implementasi saat ini: `IMPLEMENTASI_HIRARKI_PERSEDIAAN.md`.
- Catatan penting: perubahan tetap wajib strict existing COA dan non-intrusif ke jurnal.

## 1. Tujuan
Menerapkan tampilan hirarki persediaan yang selaras dengan PSAK 14 dan best practice operasional persediaan, dengan prinsip:
1. Hanya memakai akun yang sudah ada di sistem (`Strict Existing COA`) untuk status aktif.
2. Tidak membuat akun/jurnal baru pada fase UI-only.
3. Menampilkan kategori best practice yang belum tersedia sebagai `planned` (disembunyikan default, opsional ditampilkan via toggle).
4. Menjaga kompatibilitas perilaku halaman detail, filter, search, dan export.

## 2. Prinsip Strict Existing COA
Wajib:
- Ambil akun aktif dari COA existing dan alias aktif.
- Pemetaan kartu aktif hanya ke relasi yang sudah ada endpoint detailnya.
- Akun best practice yang belum ada endpoint/akun final diberi status `planned`.

Dilarang:
- Menambah akun baru ke database.
- Mengubah posting jurnal persediaan.
- Mengubah business rule transaksi stok.

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

Dilarang:
- Perubahan struktur database.
- Perubahan engine COA/jurnal.
- Perubahan proses approval transaksi.

## 4. Input Wajib Sebelum Mulai
- Daftar akun persediaan existing (kode + nama + alias).
- Daftar endpoint detail per akun (route `RekeningPembantu*`).
- Keputusan status akun per item: `active` atau `planned`.
- Acuan visual panel hirarki persediaan yang disepakati.

## 5. Baseline Mapping COA Persediaan (Strict Existing)

### 5.1 Kategori Active (Route Tersedia)
- `1010030030` - Produk Dijual
- `1010030070` - Produk Rakitan (WIP)
- `1010030010` - Bahan Baku & Supplies
- `1010030050` - Bahan Baku Dalam Proses
- `1010030040` - Produk Riil (Kontrol)
- `1010030020` - Supplies Riil (Kontrol)

### 5.2 Kategori Planned (Display Plan)
- `INV-TRANSIT` - Persediaan Dalam Perjalanan
- `INV-KONSINYASI` - Persediaan Konsinyasi
- `INV-OBSOLETE` - Persediaan Usang/Slow Moving
- `INV-ALLOWANCE` - Penyisihan Penurunan Nilai (LCNRV)

### 5.3 Catatan Standar PSAK 14
- Penilaian persediaan: biaya atau NRV, mana yang lebih rendah.
- Metode biaya yang dipakai sistem: `FIFO`/`weighted average` sesuai kebijakan entitas.
- Laporan wajib dapat menunjukkan klasifikasi persediaan yang relevan untuk entitas.

## 6. Output Akhir Yang Diharapkan
- Panel hirarki persediaan tampil stabil di atas tabel detail.
- Kartu active menampilkan saldo + jumlah item.
- Kategori planned disembunyikan default, bisa ditampilkan via tombol toggle.
- Badge ringkasan minimal:
- `Total Persediaan`
- `Dimensi Aktif`
- Filter merek (`chip`/`dropdown`) tetap aktif.
- Filter periode/search/export tetap aktif.

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

### Step 1 - Discovery Lokasi Kode
1. Identifikasi controller penyusun data hirarki persediaan.
2. Identifikasi view panel persediaan + tabel detail.
3. Catat helper formatter dan query string filter yang dipakai.
4. Catat perilaku existing mode normal agar tidak regresi.

Deliverable:
- Daftar file target implementasi.

### Step 2 - Validasi COA Existing & Alias
1. Cocokkan semua akun aktif dengan COA existing.
2. Verifikasi alias akun agar deteksi route stabil.
3. Pisahkan akun best practice yang belum siap ke status `planned`.

Deliverable:
- Mapping final `active` vs `planned`.

### Step 3 - Mapping Hirarki Data Untuk UI
1. Definisikan struktur array hirarki persediaan di controller.
2. Tetapkan field minimal per kartu:
- `label`
- `note`
- `route_rel`
- `route_rekening`
- `summary_rel`
- `query_candidates`
- `status`
- `route_enabled`
- `count_label`
- `saldo`
- `count`
3. Tetapkan total summary:
- `all`
- `item_count`

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

### Step 4 - Implementasi Panel UI Hirarki Persediaan
1. Tambahkan panel hirarki di atas tabel.
2. Render kartu active secara default.
3. Render kartu planned sebagai hidden default.
4. Tambahkan tombol toggle planned (`Tampilkan/Sembunyikan`).
5. Pastikan hanya kartu active yang bisa klik route detail.

Deliverable:
- Panel persediaan usable di desktop/mobile.

### Step 5 - Integrasi Filter Merek
1. Pertahankan mode `chip` dan `dropdown`.
2. Pastikan link/filter merek menjaga query string periode/search.
3. Pastikan clear filter merek mengembalikan list default.

Deliverable:
- Filter merek stabil dan sinkron dengan tabel detail.

### Step 6 - Sinkronisasi Filter Dan Search
1. Verifikasi periode (`full/tahunan/bulanan/harian`) tetap berfungsi.
2. Verifikasi search keyword (`q`) tetap berfungsi.
3. Verifikasi reset keyword tidak merusak state filter lain.
4. Verifikasi export/print tetap sesuai role.

Deliverable:
- Interaksi user tidak berubah selain struktur panel.

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

Deliverable:
- Bukti validasi teknis dan fungsional.

### Step 8 - Dokumentasi Dan Handover
1. Catat file yang diubah.
2. Catat keputusan mapping final active/planned.
3. Simpan screenshot evidence.
4. Catat known limitation.
5. Finalisasi checklist status.

Deliverable:
- Paket handover siap audit.

## 8. Template Catatan Per Eksekusi
- Aplikasi:
- Modul/Halaman:
- Scope UI-only:
- Mapping akun active:
- Mapping akun planned:
- 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 jejak perubahan jelas.
- Hindari rollback massal tanpa review.

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