# 🔨 PT. INDOSAN - ERP Web - Modul Produksi (Assembling)

> [!IMPORTANT]
> **STATUS FITUR VARIAN: PENGGUNAAN SENTINEL (NON-VARIANT STANDAR)**
> Modul `produksi` saat ini beroperasi murni untuk produk non-variant di versi produksi/live PT. INDOSAN. Kode dual-write yang mengarah ke `stock_locker_variant` pada perakitan produk jadi secara live hanya menulis dengan nilai sentinel **`variant_id = 1`** karena feature flag `singleVariantStandard.enabled` bernilai `false`.

Aturan spesifik untuk pengembangan, alur mutasi bahan mentah, perakitan barang, dan penjurnalan biaya perakitan pada modul `produksi` PT. INDOSAN.

---

## 1. Kode Transaksi (`jenisTr`) & Alur Langkah

Modul ini menangani perakitan barang jadi (*finished goods*) dari gabungan beberapa komponen perlengkapan atau persediaan (*supplies/components*):
*   **`776`**: Product Assembling — Aktivitas perakitan barang standar berdasarkan skema formula yang ditentukan.

---

## 2. Alur Mutasi Persediaan & Dual-Write Stock

### 2.1 Alur Pengurangan Bahan & Penambahan Produk Jadi
1.  **Draft (Step 1):** Kuantitas bahan mentah/supplies yang akan dikonsumsi dipindahkan ke status `hold` menggunakan **`penulisan ganda stock locker`** agar tidak digunakan oleh transaksi lain.
2.  **Otorisasi (Step 2 - Selesai):**
    *   **Konsumsi Bahan:** Mengurangi stok supplies asal dari status `hold` menjadi `moved` (stok berkurang permanen).
    *   **Hasil Perakitan:** Menambahkan produk rakitan baru secara langsung ke status `active` di gudang tujuan.
    *   Menggunakan komponen **`LockerStockProduksi`** dan **`LockerStockSupplies`** untuk memproses kunci stok.

### 2.2 Penentuan Harga Pokok (HPP) Perakitan
*   Sistem menghitung HPP barang rakitan yang dihasilkan dengan menjumlahkan total nilai perolehan bahan mentah yang dikonsumsi (dievaluasi lewat **`FifoSuppliesAssembly`** atau **`FifoAverage`**) ditambah dengan porsi efisiensi biaya overhead/tenaga kerja (**`RekeningPembantuEfisiensiBiaya`**).

---

## 3. Penjurnalan Otomatis (Jurnal Akuntansi)

Modul ini mengapitalisasi biaya bahan mentah dan overhead menjadi nilai persediaan barang jadi rakitan:
*   **Debet:** `1010030030` (Persediaan Produk Jadi - Hasil Assembling)
*   **Kredit:** `1010030020` (Persediaan Bahan Baku / Supplies)
*   **Kredit:** `6020000000` (Beban Overhead Pabrik / Biaya Upah Perakitan - jika ada komponen biaya tambahan)
*   Menggunakan komponen **`Jurnal`**, **`Rekening`**, and **`RekeningPembantuBiayaKomposisiProduksi`** untuk memetakan alokasi biaya per bahan.

---

## 🛠️ Lampiran Teknis (Hasil Audit Codebase)

### Berkas Konfigurasi Utama:
- `coTransaksiCore.php`

### Kode Transaksi (`jenisTr`) Terdaftar:
- **`776`**
- **`776a`**
- **`776_old`**
- **`776r`**

### Komponen Bisnis (`components`) Terlibat:
- `FifoAverage`
- `FifoAverageSuppliesAssembly`
- `FifoAverageSuppliesProsesAssembly`
- `FifoProdukJadiRakitan`
- `FifoSuppliesAssembly`
- `FifoSuppliesProses`
- `FifoSuppliesProsesAssembly`
- `Jurnal`
- `Jurnal_activity`
- `Jurnal_activityMain`
- `LockerStockMutasi`
- `LockerStockMutasiSupplies`
- `LockerStockMutasiSuppliesProses`
- `LockerStockProduksi`
- `LockerStockSupplies`
- `LockerStockSuppliesProses`
- `ManufacturDataSerial`
- `Rekening`
- `RekeningPembantuBiayaKomposisiProduksi`
- `RekeningPembantuEfisiensiBiaya`
- `RekeningPembantuEfisiensiBiayaMain`
- `RekeningPembantuLRLainlain`
- `RekeningPembantuProduk`
- `RekeningPembantuSupplies`
- `RekeningPembantuSuppliesProses`
