# 🚚 PT. INDOSAN - ERP Web - Modul Distribusi FG (Finished Goods)

Aturan spesifik untuk penanganan pemindaian QR/serial number dan pengelompokan part produk jadi pada modul `distribusifg`.

---

## 1. Bucket Session yang Digunakan
*   `items` - Master item / permintaan produk dasar.
*   `items3_sum` - Sumber serial number yang diharapkan untuk divalidasi.
*   `items5_sum` - Hasil pemindaian serial number yang lolos validasi.
*   `items6` - Peta kuota pemindaian per komponen/part.
*   `items7` - Registrasi serial number yang sudah dipindai per part.
*   `items2` - Registrasi sekunder/legacy yang masih digunakan di beberapa alur lama.

---

## 2. Validasi & Kecocokan 3-Way Matching
Pemindaian QR/barcode wajib divalidasi berdasarkan kecocokan 3-way matching:
1.  **Input scan** (data yang discan oleh user).
2.  **Data master / database** (apakah serial number terdaftar di rekening/locker).
3.  **State session / transaksi** (apakah serial number ada dalam target transaksi, kuota per part masih ada, dan bebas dari duplikasi).
*   Jika salah satu validasi gagal, kembalikan respon popup error yang jelas (`YES`, `NO`, atau `VOID`).

---

## 3. Penanganan Kompatibilitas Legacy
*   Terapkan deteksi mode transaksi: `legacy` atau `new`.
*   Pertahankan format session dan bucket lama (`items2`, `items6`, `items7`) untuk transaksi gantung yang sudah terlanjur berjalan agar tidak pecah di tengah jalan.
*   `produk_sku_part_nama` hanya digunakan sebagai label tampilan visual di UI. Logika pemrosesan data internal wajib menggunakan `produk_sku_part_id` yang stabil.

---

## 🛠️ Lampiran Teknis (Hasil Audit Codebase)

### Berkas Konfigurasi Utama:
- `coTransaksiCore.php`

### Kode Transaksi (`jenisTr`) Terdaftar:
- **`1983`**
- **`1983r`**
- **`1985`**
- **`583`**
- **`583r`**
- **`585`**
- **`773`**
- **`983`**
- **`983r`**
- **`985`**
### Komponen Bisnis (`components`) Terlibat:
- `FifoAverage`
- `FifoProdukJadi`
- `FifoProdukKomposit`
- `Jurnal`
- `Jurnal_activity`
- `Jurnal_activityMain`
- `KompositValues`
- `LockerStock`
- `LockerStockMutasi`
- `Rekening`
- `RekeningPembantuAntarcabang`
- `RekeningPembantuProduk`
- `TransaksiItemReturnUpdate`