# UAT Checklist — Merge Varian 2026-06-02

## Lingkup
File yg diubah: 204 backup di `_backup/` — seluruh module + shared engine overwritten DEV→LIVE.

---

## TC-1: Regression Non-Varian (Prioritas P0)

Semua flow yang sudah berjalan harus tetap normal — cek minimal 1 transaksi per modul.

| # | Modul | Flow | Step | Expected | OK? |
|---|-------|------|------|----------|:---:|
| 1 | pembelian | Create 466 | Pilih produk non-varian, set qty, proses, simpan | Transaksi tersimpan, stok bergerak normal | ☐ |
| 2 | pembelian | FollowUp | Approve PO | Status berubah, locker release | ☐ |
| 3 | penjualan | Create | Pilih produk non-varian, set qty, simpan | Transaksi tersimpan, stok hold | ☐ |
| 4 | penjualan | FollowUp | Approve penjualan | Status berubah, stok release | ☐ |
| 5 | pindahgudang | Create | Pindah stok non-varian antar gudang | Stok source turun, target naik | ☐ |
| 6 | konversi | Create 1334/334 | Konversi produk non-varian | HPP jalan, stok berubah | ☐ |
| 7 | distribusifg | Create | Distribusi non-varian ke cabang | Stok pusat turun, cabang naik | ☐ |
| 8 | opname | Create | Stok opname non-varian | Selisih tercatat | ☐ |
| 9 | requeststok | Create | Request stok non-varian | Request terkirim | ☐ |
| 10 | laporan | Outstanding/PenjualanCompare | Buka laporan | Data tampil benar | ☐ |

## TC-2: Varian Feature (Yang Baru Dari Merge)

| # | Area | Step | Expected | OK? |
|---|------|------|----------|:---:|
| 11 | Master Produk | Buka ProductVariantSettings, aktifkan varian utk produk | Guard cek open docs, form varian tampil | ☐ |
| 12 | Master Produk | Simpan varian (tambah SKU varian) | Varian tersimpan di `var_product_variants` | ☐ |
| 13 | Selector Item | Buka selector item di pembelian/penjualan untuk produk varian | Muncul opsi pilih varian (variant picker) | ☐ |
| 14 | Shopping Cart | Tambah produk varian ke cart | Cart key `variant:*`, qty per varian, total balance | ☐ |
| 15 | Shopping Cart | Edit qty varian inline | Update qty, total balance tetap | ☐ |
| 16 | Shopping Cart | Hapus varian dari cart | Item terhapus, locker release | ☐ |
| 17 | pembelian | Create PO dgn produk varian | Variant_id tersimpan di detail transaksi | ☐ |
| 18 | pembelian | FollowUp PO varian | Locker varian release, stok varian bertambah | ☐ |
| 19 | penjualan | Create SO dgn produk varian | Variant_id tersimpan, stok varian hold | ☐ |
| 20 | penjualan | FollowUp SO varian | Stok varian release | ☐ |
| 21 | konversi | Create dgn target varian (flow 7881) | Varian target masuk, fifo varian terisi | ☐ |
| 22 | pindahgudang | Pindah stok varian | Stok varian source/target berubah | ☐ |
| 23 | distribusifg | Distribusi varian ke cabang | Stok varian pusat turun, cabang naik | ☐ |
| 24 | opname | Stok opname varian | Selisih varian tercatat | ☐ |
| 25 | requeststok | Request stok varian | Request dgn varian terkirim | ☐ |

## TC-3: Data Integrity Varian

| # | Tabel | Check | OK? |
|---|-------|-------|:---:|
| 26 | `transaksi_data` | `produk_jenis = 'produk_target'` → `variant_id > 0` untuk item varian | ☐ |
| 27 | `transaksi_data` | `produk_id` TIDAK 0 untuk item varian (fix repair endpoint) | ☐ |
| 28 | `stock_locker_varian` | Ada entry active per variant_id setelah transaksi varian | ☐ |
| 29 | `stock_locker_mutasi_varian` | Mutasi varian tercatat | ☐ |
| 30 | `fifo_produk_jadi_varian` | FIFO varian terisi | ☐ |
| 31 | `rek_cache_persediaan_produk_varian_fifo` | Cache persediaan varian update | ☐ |

## TC-4: Mixed Varian + Non-Varian

| # | Step | Expected | OK? |
|---|------|----------|:---:|
| 32 | Satu transaksi: 1 item non-varian + 1 item varian | Kedua jenis item tersimpan benar | ☐ |
| 33 | Satu transaksi: 2 varian parent berbeda | Cart key tidak bentrok | ☐ |
| 34 | Satu transaksi: 2 item varian dari parent yg sama | Cart key `variant:ID` berbeda, tidak saling timpa | ☐ |

## TC-5: API / Service

| # | Endpoint | Check | OK? |
|---|----------|-------|:---:|
| 35 | `eusvc/Products` | Response varian-aware | ☐ |
| 36 | `eusvc/Customers` | Response stabil | ☐ |
| 37 | `eusvc/Webhook` | Webhook masih jalan | ☐ |

## TC-6: Helper / Format

| # | Helper | Check | OK? |
|---|--------|-------|:---:|
| 38 | `he_format_helper` | Format harga/quantity di view varian masih benar | ☐ |
| 39 | `he_value_builder_helper` | Value builder varian (produk_id fallback) | ☐ |
| 40 | `he_url_helper` | URL routing varian | ☐ |

---

## Summary

| Area | Status |
|------|:-----:|
| Regression Non-Varian (TC-1) | ☐ Pass / ☐ Fail |
| Varian Feature (TC-2) | ☐ Pass / ☐ Fail |
| Data Integrity Varian (TC-3) | ☐ Pass / ☐ Fail |
| Mixed Varian+Non-Varian (TC-4) | ☐ Pass / ☐ Fail |
| API / Service (TC-5) | ☐ Pass / ☐ Fail |
| Helper / Format (TC-6) | ☐ Pass / ☐ Fail |

**Tester:** _____________ **Date:** _____________
