# ⚙️ PT. INDOSAN - ERP Web - Modul Proses Produksi (Multi-Phase Manufacturing)

> [!IMPORTANT]
> **STATUS FITUR VARIAN: PENGGUNAAN SENTINEL (NON-VARIANT STANDAR)**
> Modul `produksiproses` saat ini beroperasi murni untuk produk non-variant di versi produksi/live PT. INDOSAN. Kode dual-write yang mengarah ke `stock_locker_variant` pada penyelesaian produk jadi (fase 4) secara live hanya menulis dengan nilai sentinel **`variant_id = 1`** karena feature flag `singleVariantStandard.enabled` bernilai `false`.

Aturan spesifik untuk pengembangan, alur WIP (Work in Progress), penanganan BOM (Bill of Materials), pencatatan stok per fase, dan penjurnalan biaya manufaktur multi-tahap PT. INDOSAN.

---

## 1. Kode Transaksi (`jenisTr`) & Alur Langkah

Modul ini mengelola proses manufaktur kompleks yang terbagi ke dalam perumusan bahan baku (BOM) dan empat fase produksi fisik terstruktur.

### 1.1 Inisialisasi Resep (BOM)
*   **`7776` / `7778` / `776` (BOM)**: Bill of Materials — Pendaftaran formula resep, alokasi kebutuhan bahan baku, dan pembuatan rencana produksi.

### 1.2 Tahapan Fase Produksi (PH-1 s/d PH-4)
*   **`7761` (PRODUKSI PH-1)**: Fase Produksi 1 — Pencampuran/pemotongan bahan baku awal menjadi barang setengah jadi fase 1.
*   **`7762` (PRODUKSI PH-2)**: Fase Produksi 2 — Pemrosesan barang setengah jadi fase 1 menjadi barang setengah jadi fase 2.
*   **`7763` (PRODUKSI PH-3)**: Fase Produksi 3 — Pemrosesan barang setengah jadi fase 2 menjadi barang setengah jadi fase 3.
*   **`7764` (PRODUKSI PH-4)**: Fase Produksi 4 — Tahap akhir (finishing, qc, & packaging) barang setengah jadi fase 3 menjadi barang jadi siap jual.

---

## 2. Alur Mutasi Persediaan (WIP) & Dual-Write Stock

### 2.1 Pelacakan Stok Barang Setengah Jadi (WIP)
*   Setiap fase produksi bertindak sebagai rantai pasokan internal: output dari Fase 1 menjadi input untuk Fase 2, dan seterusnya.
*   Stok intermediate (setengah jadi) dicatat secara terpisah di tabel stock locker dengan status khusus menggunakan komponen:
    *   **`LockerStockJadiPh1`**: Menyimpan persediaan hasil Fase 1.
    *   **`LockerStockJadiPh2`**: Menyimpan persediaan hasil Fase 2.
    *   **`LockerStockJadiPh3`**: Menyimpan persediaan hasil Fase 3.
    *   **`LockerStockJadiPh4`**: Tahap pelepasan barang setengah jadi menjadi produk jadi akhir (`active` di stock utama).
*   Setiap pembaruan persediaan produk harus ditulis ke `stock_locker` dan `stock_locker_variant` secara bersamaan melalui **`penulisan ganda stock locker`**.

### 2.2 Penyaluran Harga Pokok Produksi (HPP)
*   HPP ditransfer secara kumulatif antar-fase:
    *   Fase 1: Nilai bahan baku asal (dari **`FifoSuppliesProsesAssembly`**).
    *   Fase 2 s/d 4: Akumulasi nilai barang setengah jadi dari fase sebelumnya ditambah alokasi biaya overhead per fase (**`RekeningPembantuEfisiensiBiayaFase`**).

---

## 3. Penjurnalan Otomatis (Jurnal Akuntansi)

Pembukuan manufaktur menggunakan rekening penampung barang dalam proses (WIP):
*   **Saat Memulai Produksi (BOM / PH-1):**
    *   **Debet:** `1010030050` (Persediaan Barang Dalam Proses - WIP)
    *   **Kredit:** `1010030020` (Persediaan Bahan Baku / Supplies)
*   **Akumulasi Biaya Overhead / Tenaga Kerja per Fase:**
    *   **Debet:** `1010030050` (Persediaan Barang Dalam Proses - WIP)
    *   **Kredit:** Akun Hutang Gaji/Biaya Overhead Pabrik (`RekeningPembantuEfisiensiBiayaFase`)
*   **Saat Penyelesaian Produk Jadi (PH-4):**
    *   **Debet:** `1010030030` (Persediaan Produk Jadi)
    *   **Kredit:** `1010030050` (Persediaan Barang Dalam Proses - WIP)
*   Menggunakan komponen **`RekeningPembantuBiayaKomposisiProduksi`** untuk melacak detail komposisi biaya pembentuk harga pokok produk akhir.

---

## 🛠️ Lampiran Teknis (Hasil Audit Codebase)

### Berkas Konfigurasi Utama:
- `coTransaksiCore.php`

### Kode Transaksi (`jenisTr`) Terdaftar:
- **`776`**
- **`776_ORI`**
- **`7761`**
- **`7761a`**
- **`7761r`**
- **`7762`**
- **`7762a`**
- **`7762r`**
- **`7763`**
- **`7763a`**
- **`7763r`**
- **`7764`**
- **`7764a`**
- **`7764r`**
- **`776a`**
- **`776r`**
- **`776wip`**
- **`7776`**
- **`7776_gudang`**
- **`7778`**
- **`7778_singlegudang`**
- **`580`**

### Komponen Bisnis (`components`) Terlibat:
- `FifoAverage`
- `FifoAverageSupplies`
- `FifoAverageSuppliesAssembly`
- `FifoAverageSuppliesProsesAssembly`
- `FifoProdukJadi`
- `FifoProdukJadiRakitan`
- `FifoSupplies`
- `FifoSuppliesAssembly`
- `FifoSuppliesProses`
- `FifoSuppliesProsesAssembly`
- `Jurnal`
- `Jurnal_activity`
- `Jurnal_activityMain`
- `LockerStock`
- `LockerStockJadiPh1`
- `LockerStockJadiPh2`
- `LockerStockJadiPh3`
- `LockerStockJadiPh4`
- `LockerStockMutasi`
- `LockerStockMutasiSupplies`
- `LockerStockMutasiSuppliesProses`
- `LockerStockProduksi`
- `LockerStockSupplies`
- `LockerStockSuppliesProses`
- `ManufacturIdentity`
- `ProdukConversion`
- `ProdukSerialNumber`
- `Rekening`
- `RekeningPembantuBiayaKomposisiProduksi`
- `RekeningPembantuEfisiensiBiaya`
- `RekeningPembantuEfisiensiBiayaFase`
- `RekeningPembantuEfisiensiBiayaFaseMain`
- `RekeningPembantuEfisiensiBiayaMain`
- `RekeningPembantuGudang`
- `RekeningPembantuProduk`
- `RekeningPembantuRaw`
- `RekeningPembantuSupplies`
- `RekeningPembantuSuppliesProses`
- `RekeningTransaksiDebet`
- `RekeningTransaksiJenis`
- `RekeningTransaksiKredit`
- `RekeningTransaksiPembantu`
