# Hasil UAT UI Hirarki Kas (2026-04-15)

Dokumen ini adalah hasil eksekusi dari `UAT_QUICKCHECK_UI_HIRARKI_KEUANGAN.md` untuk modul kas.

## 1. Identitas UAT
- Aplikasi: `san_15apr`
- Modul yang diuji: `Kas`
- URL: `Ledger/viewBalances_l1/RekeningPembantuKas/1010010010`
- Tanggal uji: `2026-04-15`
- Penguji: `Codex (static validation)` + `User (manual validation executed)`
- Role penguji: `manual desktop/mobile + cross-role executed`

## 2. Ringkasan Metode Uji
- Metode 1: validasi statis via inspeksi kode.
- Metode 2: syntax check PHP (`php -l`) untuk file yang diubah.
- Metode 3: uji manual browser desktop/mobile dan cross-role sudah dieksekusi.

## 3. Hasil Quickcheck

### 3.1 Prasyarat
- [x] Data saldo tersedia pada minimal 2 kategori kartu.
- [x] Role operasional bisa membuka halaman.
- [x] Role holding/management bisa membuka halaman.
- [x] Query string dasar siap dipakai (`?o=<cabang>&w=<gudang>`), dipertahankan oleh builder URL existing.

### 3.2 UAT Visual Ringkas
- [x] Panel hirarki tampil di atas tabel.
- [x] Kartu utama tampil sesuai mapping akun modul.
- [x] Nilai saldo utama terlihat dominan dan terbaca.
- [x] Badge total muncul dan konsisten dengan kartu aktif.
- [x] Catatan mode aktif muncul.
- [x] Layout tetap rapi pada desktop 1366x768.
- [x] Layout tetap usable pada viewport kecil 390x844.

Catatan:
- Verifikasi ulang mobile (390x844): lebar kartu antar kategori sudah konsisten.

### 3.3 UAT Interaksi Ringkas
- [x] Filter periode berubah dan URL ikut update (`periode`, `thn`, `bln`, `date`).
- [x] Search keyword berfungsi dan URL memuat parameter `q`.
- [x] Tombol reset keyword menghapus `q` tanpa merusak filter periode.
- [x] Klik kartu berpindah ke URL detail yang benar.
- [x] Tombol export/print tetap tampil sesuai hak role.
- [x] Sorting, paging, dan footer total tabel tetap normal.

Catatan:
- Secara statis, blok filter/search/export/DataTables tidak diubah secara fungsional.
- Verifikasi perilaku runtime desktop/mobile dinyatakan lolos.

### 3.4 UAT Cross-Role Ringkas
- [x] Role operasional: panel + tabel + tombol sesuai hak akses.
- [x] Role holding/management: panel + tabel + tombol sesuai hak akses.
- [x] Tidak ada error JS/PHP saat pindah role.
- [x] Tidak ada perbedaan anomali tampilan antar role.

## 4. Kriteria Lulus
- [x] Tidak ada error syntax pada file PHP yang diubah.
- [x] Tidak ada regresi fungsi tabel.
- [x] Tidak ada regresi query string filter.
- [x] Tidak ada layout break kritikal di desktop/mobile.
- [x] Bukti screenshot before/after tersedia.

## 5. Bukti Teknis
- [x] `php -l application/controllers/Ledger.php` -> no syntax errors.
- [x] `php -l application/views/ledger.php` -> no syntax errors.
- [x] Screenshot desktop sebelum. (evidence dari user, 2026-04-15)
- [x] Screenshot desktop sesudah. (evidence dari user, 2026-04-15)
- [x] Screenshot mobile sesudah. (evidence dari user, 2026-04-15)
- [x] Capture URL saat filter + search aktif: `https://demo.mayagrahakencana.com/san_15apr/Ledger/viewBalances_l1/RekeningPembantuKas/1010010010?o=1&periode=full&q=tunai`

## 6. Status Akhir
- Status akhir: `LULUS`.
- Catatan: implementasi UI-only kas lolos validasi manual, termasuk perbaikan keseragaman lebar kartu mobile.
- Update implementasi: perapihan CSS responsif kartu kas di `application/views/ledger.php` sudah terverifikasi pada mobile (390x844).
- Risiko tersisa: tidak ada risiko kritikal terbuka dari scope UI-only.
- Next action:
1. Arsipkan evidence UAT bersama dokumen implementasi.
2. Lanjutkan pola yang sama untuk modul berikutnya (hutang supplier/hutang ke konsumen).

## 7. Skrip Eksekusi Manual (Urutan Cepat)

Gunakan URL relatif berikut:
1. `Ledger/viewBalances_l1/RekeningPembantuKas/1010010010` (Kas Utama).
2. `Ledger/viewBalances_l1/RekeningPembantuKas/1010010040` (Pettycash).

Urutan uji (10-15 menit):
1. Buka URL Kas Utama.
2. Pastikan panel hirarki kas muncul di atas tabel.
3. Pastikan kartu `Kas Utama (1010010010)` dan `Pettycash (1010010040)` muncul.
4. Klik kartu `Pettycash`, pastikan pindah ke URL Pettycash.
5. Ganti filter periode ke `Tahunan`, klik `Terapkan`, pastikan URL memuat `periode=tahunan`.
6. Ganti filter periode ke `Bulanan`, set `thn` dan `bln`, klik `Terapkan`, pastikan URL memuat `periode=bulanan`.
7. Isi keyword pada search, submit, pastikan URL memuat `q=...`.
8. Klik tombol reset keyword, pastikan `q` hilang dan periode tetap.
9. Verifikasi sorting/paging/footer tabel tetap jalan.
10. Ulangi langkah inti pada role operasional dan role holding.
11. Ambil screenshot:
   - desktop sebelum/sesudah
   - mobile sesudah (390x844)
   - capture URL saat filter + search aktif

Expected result:
- Tidak ada error PHP/JS.
- Tidak ada layout pecah pada panel, filter, dan tabel.
- Hak akses tombol export/print sesuai role.
