# Fase 2 UAT Rekening Pembantu Varian

Dokumen ini fokus untuk verifikasi posting accounting saat item varian diproses di pembelian dan penjualan.

## Tujuan

- Memastikan transaksi item varian menulis ke rekening pembantu varian.
- Memastikan posting rekening pembantu produk master tetap ada sebagai rollup.
- Memastikan jalur non-varian tidak ikut rusak.

## Scope

- Modul `pembelian` (terutama flow PO -> GRN).
- Modul `penjualan` (jual + retur sesuai skenario UAT).
- Verifikasi tabel mutasi/cache rekening pembantu produk master dan varian.

## Prasyarat

- Tabel sudah tersedia:
  - `_rek_pembantu_produk_varian_cache`
  - `_rek_pembantu_produk_varian`
- Kontrak data varian transaksi sudah aktif (`variant_id`, `variant_label`, dll).
- Sudah ada minimal 1 transaksi varian untuk pembelian/penjualan.

## Skenario UAT Minimum

1. Jalur pembelian varian:
   - Buat transaksi pembelian varian sampai GRN.
   - Simpan nomor dokumen dan `transaksi_id`.
2. Jalur penjualan varian:
   - Buat transaksi penjualan varian sampai tersimpan.
   - Simpan nomor dokumen dan `transaksi_id`.
3. Jalur non-varian kontrol:
   - Buat 1 transaksi non-varian.
   - Pastikan tidak ada posting ke tabel rekening pembantu varian.

## Kriteria Lulus

- Untuk item varian:
  - ada mutasi di `_rek_pembantu_produk_varian` dengan pasangan `extern2_id=produk_id master` dan `extern_id=variant_id`.
  - ada mutasi di `_rek_pembantu_produk` untuk `extern_id=produk_id master` (rollup tetap hidup).
- Untuk item non-varian:
  - tidak muncul mutasi noise di rekening pembantu varian (`extern_id=0` / `variant_id` kosong).
- Nilai net qty dan net nilai pada mutasi varian masuk akal terhadap arah transaksi (masuk/keluar).

## SQL Verifikasi

- Jalankan: `docs/sql/20260412_rekening_varian_uat_smoke.sql`
- Isi parameter di bagian atas skrip (`@TRX_ID`, `@PRODUK_ID`, `@VARIANT_ID`, `@REKENING`).

## Evidence yang Disimpan

- URL dokumen transaksi.
- `transaksi_id` dan nomor dokumen.
- Hasil query smoke-check.
- Status `PASS/FAIL` per skenario.
