# Panduan & Checklist Manual UAT User (Pengujian Varian ERP)

**Panduan Pengujian Lapangan Kasus per Kasus, Step per Step, dan Skenario per Skenario**  
**Tanggal:** 2026-07-27  
**Sasaran Penguji:** User / Team QA / Tim Operasional  
**URL Sistem:** `https://192.168.5.33/new_san_variant/`

> [!TIP]
> **💻 DASHBOARD CHECKLIST INTERAKTIF (LOCALSTORAGE):**  
> Gunakan versi HTML interaktif yang dapat mencentang progress secara langsung di browser dan menyimpan status ke LocalStorage otomatis:  
> 👉 **[Buka Dashboard UAT Interaktif HTML](file:///c:/xampp/htdocs/new_san_variant/docs/panduan-uat-manual-user.html)** (`docs/panduan-uat-manual-user.html`)

---

## 📌 Pengantar UAT

Dokumen ini disusun khusus sebagai **Panduan Eksekusi UAT (User Acceptance Testing)** yang dapat dijalankan secara manual pada antarmuka web. Pengujian dibagi menjadi 3 bagian utama:
1. **Bagian 1:** Kasus per Kasus Pengujian Bug Issue (22 Bug Cases).
2. **Bagian 2:** Step-by-Step Pengujian 10 Modul Inventory Core.
3. **Bagian 3:** Skenario per Skenario Pengujian Controller di Luar Modul (Non-Module Endpoints).

---

## 📋 BAGIAN 1: Kasus per Kasus Pengujian Bug Issue (Bug Fix Cases)

Gunakan bagian ini untuk memverifikasi bahwa bug-bug kritis terdahulu **TIDAK TERJADI LAGI**:

### 🔹 Kasus 1.1: Pengujian Ghost Row `produk_id = 0` (Bug 1A)
- **Langkah Pengujian:**
  1. Buka modul transaksi (misal: Pembelian `/pembelian/Create/index/466`).
  2. Pilih barang bervarian (misal: `ALPEN B28D - Warna Merah | Ukuran XL`).
  3. Klik **Tambah ke Keranjang** (Add to Cart).
  4. Simpan Transaksi (Draft/Submit).
- **Ekspektasi UAT:**
  - [ ] Barang tersimpan di keranjang dengan ID produk yang valid.
  - [ ] Di tabel database `transaksi_data` **TIDAK ADA** baris kosong dengan `produk_id = 0`.

### 🔹 Kasus 1.2: Perubahan Harga & Kalkulasi Subtotal Keranjang (Bug 1C)
- **Langkah Pengujian:**
  1. Pilih produk bervarian pada form transaksi.
  2. Ubah nilai pada kolom **Harga Satuan** (misal dari Rp 100.000 menjadi Rp 120.000).
  3. Tekan **Enter** atau klik di luar field input.
- **Ekspektasi UAT:**
  - [ ] Subtotal item dan Total Transaksi langsung ter-update presisi mengikuti harga baru (Rp 120.000 x Qty).

### 🔹 Kasus 1.3: Pengujian Rilis Stok Locker Login/Logout (Bug 3C & 3D)
- **Langkah Pengujian:**
  1. Tambahkan produk bervarian ke keranjang (stok berada pada posisi `state = hold`).
  2. Lakukan **Logout** tanpa menyimpan transaksi.
  3. **Login** kembali dengan akun pengguna yang sama.
- **Ekspektasi UAT:**
  - [ ] Tidak terjadi Error Code 169 atau alert "Stok tidak cukup".
  - [ ] Stok barang di keranjang rilis kembali dari `hold` ke `active` secara otomatis dan bersih.

### 🔹 Kasus 1.4: Pengujian Overwrite Multi-Varian pada Cetakan Nota (Bug 4A & 4B)
- **Langkah Pengujian:**
  1. Buat transaksi yang berisi **2 atau lebih varian berbeda dari produk induk yang sama** (contoh: 1 unit Merah-XL dan 1 unit Biru-L dari `ALPEN B28D`).
  2. Simpan transaksi dan buka fitur **Cetak Nota / Printing** (`/Printing/viewProformaReceipt/...`).
- **Ekspektasi UAT:**
  - [ ] Seluruh varian yang dibeli **tercetak lengkap** pada nota (tidak ada baris yang hilang atau tertindih oleh varian lainnya).

### 🔹 Kasus 1.5: Pengujian Penutupan Transaksi Split PRE PO (Bug 5C)
- **Langkah Pengujian:**
  1. Buka transaksi PRE PO yang menggantung di menu **Follow Up** (`/pembelian/FollowUp/...`).
  2. Lakukan Approval / Terbitkan PO resmi dari PRE PO tersebut.
  3. Cek kembali daftar transaksi berjalan di menu Follow Up.
- **Ekspektasi UAT:**
  - [ ] PRE PO otomatis ditutup (`valid_qty = 0`) dan **langsung hilang** dari daftar transaksi menggantung.
  - [ ] Tidak ada transaksi ganda/split yang tersisa.

### 🔹 Kasus 1.6: Pengujian Modal Otorisasi Merah `itemStaging` (Bug 5G & 5H)
- **Langkah Pengujian:**
  1. Lakukan Approval transaksi bervarian di menu Follow Up.
  2. Perhatikan dialog pop-up konfirmasi approval.
- **Ekspektasi UAT:**
  - [ ] Tidak muncul modal otorisasi merah false-positive bertuliskan "Sistem mendeteksi adanya perubahan pada data...".
  - [ ] Tidak ada baris kosong bertuliskan `Produk: Nama (PID: )` pada bagian bawah modal.

---

## 📋 BAGIAN 2: Step-by-Step Pengujian 10 Modul Inventory Core

Jalankan skenario end-to-end berikut pada masing-masing modul inventory:

### 🔹 Skenario 2.1: Modul Pembelian (`pembelian`)
- [ ] **Step 1:** Buka `/pembelian/Create/index/466` $\rightarrow$ Tambah barang varian $\rightarrow$ Simpan Pre-PO.
- [ ] **Step 2:** Buka `/pembelian/FollowUp/index/466` $\rightarrow$ Approve Pre-PO menjadi PO Resmi.
- [ ] **Step 3:** Verifikasi barang PO terpotong/terkunci pada stok locker varian dengan benar.

### 🔹 Skenario 2.2: Modul Penjualan (`penjualan`)
- [ ] **Step 1:** Buka `/penjualan/Create/index/582` $\rightarrow$ Masukkan 2 barang bervarian ke keranjang SO.
- [ ] **Step 2:** Simpan SO $\rightarrow$ Lakukan Approval Invoice di `/penjualan/FollowUp/index/582`.
- [ ] **Step 3:** Verifikasi stok fisik barang bervarian terpotong dari locker `active`.

### 🔹 Skenario 2.3: Modul Transfer Stok / Pindah Gudang (`pindahgudang`)
- [ ] **Step 1:** Buka `/pindahgudang/Create/index/585` $\rightarrow$ Pilih Gudang Asal & Gudang Tujuan.
- [ ] **Step 2:** Masukkan barang bervarian $\rightarrow$ Submit pengiriman stok.
- [ ] **Step 3:** Buka akun Gudang Tujuan $\rightarrow$ Terima pengiriman stok varian $\rightarrow$ Verifikasi stok bertambah di gudang tujuan.

### 🔹 Skenario 2.4: Modul Stock Opname (`opname`)
- [ ] **Step 1:** Buka `/opname/Opname/viewOpnameAktive` $\rightarrow$ Buat sesi Opname baru.
- [ ] **Step 2:** Masukkan jumlah fisik barang bervarian (misal selisih +2 atau -1 unit).
- [ ] **Step 3:** Finalisasi Opname $\rightarrow$ Verifikasi stok di sistem menyesuaikan angka hasil fisik opname.

### 🔹 Skenario 2.5: Modul Konversi Stok (`konversi` & `konversi_varian`)
- [ ] **Step 1:** Buka `/konversi/Create/index/1334` $\rightarrow$ Masukkan barang bervarian sebagai *Bahan Asal*.
- [ ] **Step 2:** Masukkan barang bervarian sebagai *Hasil Konversi*.
- [ ] **Step 3:** Approve Konversi $\rightarrow$ Verifikasi stok Bahan Asal berkurang dan Hasil Konversi bertambah.

### 🔹 Skenario 2.6: Modul Distribusi Barang (`distribusifg`, `distribusiproduksi`, `distribusisupplies`)
- [ ] **Step 1:** Buat dokumen distribusi barang bervarian dari Pusat ke Cabang.
- [ ] **Step 2:** Approve & Terima Distribusi di Cabang.
- [ ] **Step 3:** Verifikasi pergerakan stok transit dan stok akhir cabang.

### 🔹 Skenario 2.7: Modul Produksi (`produksi` & `produksiproses`)
- [ ] **Step 1:** Buka `/produksi/Create/index/584` $\rightarrow$ Buat Perintah Produksi untuk produk bervarian.
- [ ] **Step 2:** Jalankan Proses Produksi $\rightarrow$ Selesaikan Hasil Produksi.
- [ ] **Step 3:** Verifikasi Finished Goods bervarian bertambah di gudang FG.

---

## 📋 BAGIAN 3: Skenario per Skenario Pengujian Controller di Luar Modul (Non-Module Endpoints)

Uji antarmuka dan endpoint di luar HMVC modules berikut:

### 🔹 Skenario 3.1: Hover QTip Rincian Transaksi (`/Addons/ViewDetails`)
- **Langkah UAT:**
  1. Buka daftar transaksi (misal: `/pembelian/Transaksi/index/466`).
  2. Arahkan kursor mouse (hover) di atas **Nomor Nota Transaksi** yang berisi produk bervarian.
- **Ekspektasi UAT:**
  - [ ] Pop-up QTip muncul dengan cepat.
  - [ ] Seluruh varian yang dibeli tampil lengkap dengan **Badge Biru SKU/Varian** (misal: `[B28D-WA1-UK12]`).

### 🔹 Skenario 3.2: Pencarian Keyword SKU pada Katalog (`/Katalog/viewProduk`)
- **Langkah UAT:**
  1. Buka Katalog Produk di `/Katalog/viewProduk`.
  2. Ketik **Kode SKU Varian** (misal: `B28D-WA1-UK12`) pada kolom pencarian.
- **Ekspektasi UAT:**
  - [ ] Sistem langsung menemukan dan menampilkan produk induk dari SKU varian tersebut.

### 🔹 Skenario 3.3: Master Data Viewer & Generator Varian (`/Data/view/Produk`)
- **Langkah UAT:**
  1. Buka Master Data Produk di `/Data/view/Produk`.
  2. Klik tombol **Tambah Produk / Edit Produk**.
- **Ekspektasi UAT:**
  - [ ] Centang opsi *Memiliki Varian* (has_variants).
  - [ ] Pilihan atribut (Warna, Ukuran) dapat dipilih dan kombinasi varian ter-generate otomatis.

### 🔹 Skenario 3.4: Cetak Stiker Barcode & QR Code SKU (`/addons/Qr/doPrint`)
- **Langkah UAT:**
  1. Buka menu Cetak Barcode di `/addons/Qr/index`.
  2. Pilih barang bervarian dan tentukan jumlah lembar cetak $\rightarrow$ Klik **Cetak**.
- **Ekspektasi UAT:**
  - [ ] Stiker barcode/QR Code yang ter-download/tercetak menampilkan **Label SKU Varian** `[SKU-VARIAN]` dan kode barcode fisik varian tersebut.

### 🔹 Skenario 3.5: Spreadsheet Matriks Harga Varian (`/Spread/index/produk/cabang/hargaProduk`)
- **Langkah UAT:**
  1. Buka Spreadsheet Harga Produk Cabang di `/Spread/index/produk/cabang/hargaProduk`.
- **Ekspektasi UAT:**
  - [ ] Matriks harga terbuka tanpa error.
  - [ ] Pengisian harga jual/beli per cabang dapat disimpan dengan presisi.

### 🔹 Skenario 3.6: Buku Besar Mutasi Stok FG (`/Ledger/viewMovementGroup/fg`)
- **Langkah UAT:**
  1. Buka Buku Besar Mutasi Stok di `/Ledger/viewMovementGroup/fg`.
  2. Cari pergerakan barang bervarian.
- **Ekspektasi UAT:**
  - [ ] Riwayat mutasi masuk/keluar tercatat secara presisi per varian barang.

---

## 📊 Lembar Checklist Ringkasan UAT User

| No | Kategori Pengujian | Jumlah Skenario | Status UAT User | Tanggal UAT | Catatan Penguji |
|:---:|:---|:---:|:---:|:---:|:---|
| 1 | Pengujian Bug Issue Cases (Kasus 1.1 - 1.6) | 6 Kasus | [ ] PASS / [ ] FAIL | _____ | |
| 2 | Pengujian Modul Inventory (Skenario 2.1 - 2.7) | 7 Modul | [ ] PASS / [ ] FAIL | _____ | |
| 3 | Pengujian Non-Module Controller (Skenario 3.1 - 3.6) | 6 Endpoint | [ ] PASS / [ ] FAIL | _____ | |

**Tanda Tangan / Persetujuan Penguji (UAT Sign-off):**  
**Nama Penguji:** ___________________________  
**Jabatan:** _______________________________  
**Status Akhir UAT:** [ ] **DISETUJUI (APPROVED)** / [ ] **PERLU PERBAIKAN**
