# PLAN EKSEKUSI FINAL - VARIANT CUTOVER SUBSIDIARY

## Scope
- Workspace: `W:\san_sarana_staging`
- Modul target: `application/modules/variant_cutover`
- Prinsip: struktur/adaptor `distribusi` dipertahankan, flow bisnis aktif dialihkan ke variant cutover (`881/7881`).
- Standar mutu wajib: `application/modules/variant_cutover/STANDAR_MODUL_VARIANT_CUTOVER_ISO25010.md`

## Status Eksekusi Saat Ini (Sudah Dijalankan)
1. Blueprint baseline holding selesai.
2. Blueprint GAP holding vs subsidiary selesai dan diperketat (kontrak adapter distribusi tidak dihapus).
3. Konfigurasi transaksi aktif di subsidiary sudah mengandung `881` dan `7881`.
4. Processor cutover aktif: `_processSelectProductConvertion.php`.
5. Jalur varian aktif: `items2_sum`, `recordItemColumnVarian`, dan sinkron gate terkait.
6. Guard validasi utama terdeteksi di `Transaksi.php`:
   - validasi open document,
   - validasi parent stock,
   - override parent stock (`override_stok_parent`).
7. Lifecycle conversion terdeteksi di `FollowUp.php`:
   - `IN_PROGRESS`, `COMPLETED`, `ROLLED_BACK`.
8. Adapter distribusi dipertahankan kembali:
   - `models/MdlDistribusiTransaksi.php`
   - `controllers/_processSelectProductStock.php`
   - `views/followUp.php`
   - `views/variant_picker.php`
   - `models/Coms/*Distribusi*.php`

## Rencana Eksekusi Teknis Tanpa Tanya Ulang

### Fase 1 - Lock Blueprint dan Kontrak File (DONE)
- Dokumen acuan sudah final:
  - `W:\san_sarana_staging\docs\blueprint-gap-variant-cutover-holding-vs-subsidiary.md`

### Fase 2 - Stabilkan Mapping Konfigurasi (DONE)
- `coTransaksiUi.php` dan `coTransaksiCore.php` sudah terpasang alur `881/7881`.
- Flow distribusi lama tidak menjadi flow aktif pada jalur cutover.

### Fase 3 - Stabilkan Controller Chain (DONE)
- Chain create/transaksi/followup/shoppingcart sudah berorientasi cutover.
- Adapter distribusi tetap ada untuk kompatibilitas call chain lama.

### Fase 4 - Hardening Pra-UAT (BEST STOP)
- Karena limit sesi hampir habis, titik berhenti terbaik adalah pra-UAT dengan bukti konfigurasi + guard aktif.
- Tahap lanjut yang disarankan setelah ini adalah UAT transaksi nyata per cabang/gudang.

## Daftar File Kritis Yang Harus Dikunci
1. `application/modules/variant_cutover/config/coTransaksiUi.php`
2. `application/modules/variant_cutover/config/coTransaksiCore.php`
3. `application/modules/variant_cutover/controllers/Transaksi.php`
4. `application/modules/variant_cutover/controllers/FollowUp.php`
5. `application/modules/variant_cutover/controllers/_shoppingCart.php`
6. `application/modules/variant_cutover/controllers/_processSelectProductConvertion.php`
7. `application/modules/variant_cutover/models/MdlDistribusiTransaksi.php`
8. `application/modules/variant_cutover/STANDAR_MODUL_VARIANT_CUTOVER_ISO25010.md`

## Checklist UAT Ringkas (Langsung Pakai)
1. Buat request `881` dan `7881` dengan item parent + varian.
2. Coba submit saat parent stock tidak nol => harus terblokir (kecuali override sah).
3. Coba submit saat ada open document bentrok => harus terblokir.
4. Pastikan qty parent vs total varian tidak equal => harus terblokir.
5. Approve followup sukses => status `COMPLETED`.
6. Revert/reject => status `ROLLED_BACK`.
7. Cek mutasi stok parent turun dan varian naik sesuai alokasi.
8. Cek jurnal/rekening tidak selisih.

## Risiko Tersisa
1. Data riil master produk/varian per cabang bisa menimbulkan edge case yang tidak muncul di data dummy.
2. Kemungkinan referensi lama ke jalur distribusi di luar modul ini (external caller) masih perlu validasi end-to-end.
3. Tanpa eksekusi UAT live, status saat ini masih "siap-uji", belum "go-live proven".
