# 🧪 INSTRUMEN UAT: RIWAYAT TRANSAKSI PEMBELIAN (SERVER-SIDE DATATABLES)
**Modul:** Pembelian (`pembelian`)  
**Metode:** Golden Circle (Why, How, What) & 5W + 1H  
**Versi Sistem:** 1.1 (Server-Side DataTables + Onboarding LocalStorage)

---

## 🎯 I. WHY (Lingkaran Inti — Tujuan & Urgensi)

### 1. *Why* — Mengapa Pengujian Ini Dilakukan?
* **Eliminasi Latensi & Beban Memori:** Menghilangkan keluhan sistem macet (*browser lag/freeze*) saat staf pengadaan dan gudang membuka riwayat pembelian yang berisi puluhan ribu PO dan Surat Jalan Masuk (GRN).
* **Integritas Rantai Pasok & Hutang Dagang (Procure-to-Pay):** Menjamin seluruh data pembelian (Nama Supplier, Nomor PRE-PO, Nomor PO, Nomor GRN, Gudang Penerimaan, Referral Invoice Vendor, Diskon, PPN Masukan, dan Total Nilai) tampil akurat tanpa adanya kolom kosong saat barang diterima bertahap.
* **Perlindungan Valuta Asing & Transaksi Khusus:** Memastikan cetak nota valas (*foreign currency*) dan data mentah per tahapan (Pre-PO, PO, Pre-GRN, GRN) dapat diakses dengan cepat untuk rekonsiliasi akuntansi hutang dagang.
* **Manajemen Perubahan Ramah Pengguna:** Memberikan edukasi visual kepada staf pengadaan melalui banner peningkatan sistem di peramban, serta memberikan jaminan tombol beralih kembali ke mode lama jika menemukan kendala.

### 2. *Who* — Siapa Aktor Penguji?
* **Penguji Utama:** Staf Purchasing / Procurement & Admin Gudang Penerimaan (menguji pembuatan PO, pencarian nomor surat jalan supplier, filter tahapan GRN, dan verifikasi barang masuk).
* **Penguji Pendukung:** Bagian Hutang / Accounts Payable (AP) & Finance (menguji kebenaran total tagihan hutang, PPN masukan, referral invoice vendor, dan ekspor data mentah per step).
* **Verifikator Teknis:** QA / Developer (memeriksa network payload AJAX, query binding database, dan log konsol).

### 3. *When* — Kapan Pengujian Dijalankan?
* Dijalankan pada tahap verifikasi rilis modul `pembelian` setelah implementasi 12 pilar arsitektur Server-Side DataTables selesai diterapkan.

---

## ⚙️ II. HOW (Lingkaran Proses — Metodologi & Lingkup)

### 4. *Where* — Di Mana Pengujian Berlangsung?
* **URL Pengujian:** `[base_url]/pembelian/History/viewHistory/466` (FG Purchasing), `461` (Supplies Purchasing), atau `463` (Service Purchasing).
* **Lingkungan Uji:** Peramban Desktop (Google Chrome / Mozilla Firefox / Microsoft Edge) dengan DevTools aktif.

### 5. *How* — Bagaimana Skenario Pengujian Dijalankan?
Pengujian dilakukan melalui 7 zona observasi terstruktur:
1. **Zona Onboarding Pengguna Baru:** Uji respon default mode baru dan interaksi banner via `localStorage`.
2. **Zona Toggle Mode:** Uji peralihan dua arah (Mode Baru ↔ Mode Lama).
3. **Zona Filter Tanggal AJAX:** Uji filter tanggal tanpa refresh halaman.
4. **Zona Tahapan Transaksi (Step Buttons):** Uji filtrasi Pre PO, PO, Pre GRN, dan GRN.
5. **Zona Pencarian & Fail-Safe Data Kosong:** Uji banner interaktif saat data 0.
6. **Zona Ekspor & Cetak:** Uji unduh tabel, unduh data mentah per step, dan cetak dokumen.
7. **Zona Integritas Data Kolom Pasangan & Valas:** Uji data registry `item_fields`, nama supplier, referral invoice vendor, dan valas (`print_nvalas`).

---

## 📋 III. WHAT (Lingkaran Hasil — Matriks Skenario UAT 5W+1H)

| ID | *What* (Fitur yang Diuji) | *Why* (Alasan Pengujian) | *How* (Langkah & Ekspektasi Hasil) | Status |
|:---|:---|:---|:---|:---:|
| **UAT-PBL-01** | **Default Mode & Banner Onboarding (Pengguna Baru)** | Memastikan staf pembelian yang baru membuka langsung diarahkan ke sistem server-side yang cepat dengan panduan edukasi. | 1. Bersihkan storage (`localStorage.clear()`).<br>2. Buka riwayat pembelian `[base_url]/pembelian/History/viewHistory/466`.<br>➔ **Hasil:** Langsung terbuka **Mode Baru**. Muncul banner biru di atas tabel: *"Pemberitahuan Peningkatan Sistem..."* dengan tombol `[Paksa Kembali Ke Mode Lama]` dan `[Saya Mengerti]`. | [ ] |
| **UAT-PBL-02** | **Dismiss Banner Onboarding (`localStorage`)** | Memastikan banner tidak mengganggu pengguna yang sudah mengerti pembaruan. | 1. Klik tombol `[Saya Mengerti]`.<br>➔ **Hasil:** Banner tertutup (slide up).<br>2. Refresh halaman peramban.<br>➔ **Hasil:** Banner tetap tidak muncul (`history_new_mode_notice_dismissed = 1`). | [ ] |
| **UAT-PBL-03** | **Paksa Revert ke Mode Lama via Banner** | Memberi jalan keluar instan jika staf operasional ingin kembali ke tata letak lama. | 1. Klik `[Paksa Kembali Ke Mode Lama]` pada banner.<br>➔ **Hasil:** Muncul konfirmasi; setelah disetujui, halaman reload ke mode lama (tab navigasi konvensional & filter tanggal lama muncul kembali). | [ ] |
| **UAT-PBL-04** | **Toggle Mode Manual di Header** | Memberikan fleksibilitas beralih mode kapan saja dari header. | 1. Klik tombol hijau `[Coba Tampilan History Baru]`.<br>➔ **Hasil:** Beralih ke mode baru.<br>2. Klik tombol kuning `[Kembali Ke Tampilan History Lama]`.<br>➔ **Hasil:** Beralih ke mode lama. | [ ] |
| **UAT-PBL-05** | **Filter Rentang Tanggal Murni AJAX** | Mengganti rentang waktu transaksi pembelian tanpa refresh seluruh halaman. | 1. Pilih rentang tanggal pada `filter_date1` dan `filter_date2`.<br>2. Klik `[Terapkan]`.<br>➔ **Hasil:** Data tabel ter-update via AJAX tanpa reload browser URL.<br>3. Klik `[Semua Tanggal]`.<br>➔ **Hasil:** Input tanggal kosong, badge "Semua Tanggal" aktif, data seluruh periode tampil. | [ ] |
| **UAT-PBL-06** | **Filter Step Tahapan Pembelian** | Memfilter pengadaan berdasarkan tahapan (Pre PO, PO, Pre GRN, GRN). | 1. Klik tombol step `[Semua]`, `[PRE PURCHASE ORDER]`, `[PURCHASE ORDER]`, `[PRE GOODS RECEIVED NOTE]`, `[GOODS RECEIVED NOTE]`.<br>➔ **Hasil:** Tombol aktif berwarna biru, baris tabel terfilter instan sesuai tahapan tersebut via AJAX. | [ ] |
| **UAT-PBL-07** | **Unduh Data Mentah Pembelian Per-Step** | Memastikan rekap pengadaan per step dapat diunduh untuk rekonsiliasi hutang & audit. | 1. Klik dropdown `[Unduh Data Mentah ▾]`.<br>➔ **Hasil:** Muncul opsi download sesuai step modul (contoh: *Download Data Mentah Step 1*, *Step 2*, dst).<br>2. Klik salah satu opsi.<br>➔ **Hasil:** Berkas spreadsheet Excel terunduh utuh. | [ ] |
| **UAT-PBL-08** | **Unduh Tabel Aktif & Cetak Dokumen** | Ekspor cepat tampilan data yang sedang tampil di layar. | 1. Klik `[Unduh Tabel]`.<br>➔ **Hasil:** Berkas Excel sesuai data aktif terunduh via `fnExcelReport`.<br>2. Klik `[Cetak]`.<br>➔ **Hasil:** Jendela print browser terbuka rapi dengan format cetak tabel. | [ ] |
| **UAT-PBL-09** | **Pencarian Bertingkat & Dialog Cerdas Saat 0 Data** | Memastikan staf tidak bingung saat nomor PO/GRN yang dicari tidak muncul akibat filter tanggal/step aktif. | 1. Masukkan kata kunci sembarang (contoh: `PO-SUPPLIER-TIDAK-ADA-999`).<br>➔ **Hasil:** Muncul alert box kuning bertuliskan *"Data tidak ditemukan..."* dengan tombol pintasan `[Cari di Semua Tahapan]`, `[Cari di Semua Tanggal]`, dan `[Cari di Seluruh Data Global]`.<br>2. Klik tombol pintas reset.<br>➔ **Hasil:** Filter terkait ter-reset otomatis dan tabel me-reload pencarian global. | [ ] |
| **UAT-PBL-10** | **Dual Pagination (Atas & Bawah)** | Efisiensi navigasi halaman tanpa harus menggulir kursor ke bagian bawah tabel. | 1. Pindah halaman lewat pagination atas.<br>➔ **Hasil:** Halaman berpindah dan pagination bawah tersinkronisasi.<br>2. Ganti panjang halaman (10, 20, 50, 100).<br>➔ **Hasil:** Jumlah baris berubah seketika. | [ ] |
| **UAT-PBL-11** | **Sorting Multi-Kolom Database** | Mengurutkan transaksi pembelian berdasarkan tanggal, nomor, atau supplier. | 1. Klik header `Tanggal`, `Nomor`, `Supplier`.<br>➔ **Hasil:** Urutan baris terurut (ASC/DESC) tanpa error SQL database. | [ ] |
| **UAT-PBL-12** | **Kelengkapan Kolom Registry & Identitas Dokumen** | Memastikan dokumen turunan (GRN/Surat Jalan Masuk) tidak kehilangan identitas supplier dan nomor PO induk. | 1. Periksa baris transaksi Goods Received Note (GRN / 467).<br>➔ **Hasil:** Kolom nama supplier, PRE PO number, PO number, gudang penerimaan, dan referral invoice vendor tetap terisi lengkap berkat fallback ke transaksi induk (`id_top`). | [ ] |
| **UAT-PBL-13** | **Tampilan Rincian Item Barang (Detail View)** | Memastikan rincian SKU barang, kuantitas, harga satuan, dan diskon pembelian tampil rapi. | 1. Klik lihat detail pada kolom *isi* / rincian item transaksi.<br>➔ **Hasil:** Tabel rincian muncul dengan format `compact` dan ukuran font 10px yang rapi, tidak merusak lebar kontainer tabel utama. | [ ] |

---

## 🏁 IV. Kriteria Penerimaan UAT (Exit Criteria)
1. Seluruh 13 skenario pengujian di atas berstatus **PASSED**.
2. Pengguna baru otomatis masuk ke mode baru dengan banner pemberitahuan yang ramah.
3. Tidak ada error JavaScript pada console browser.
4. Tim purchasing dan pergudangan menyatakan nyaman menggunakan sistem riwayat pembelian yang baru.
