# 🛒 PT. Everest - ERP Web - Modul Pembelian (Lokal)

Aturan spesifik untuk pengembangan, alur mutasi, dan penjurnalan modul `pembelian` lokal PT. Everest.

---

## 1. Kode Transaksi (`jenisTr`) & Alur Langkah

### 1.1 FG Purchasing (Pembelian Produk Lokal) — `466`
*   **Step 1 (`466r`):** PRE PURCHASE ORDER (Penyusunan pengajuan PO oleh Purchasing).
*   **Step 2 (`466`):** PURCHASE ORDER (Persetujuan PO oleh Purchasing Adm).
*   **Step 3 (`467r`):** PRE GOODS RECEIVED NOTE (Persiapan penerimaan barang oleh gudang. Serial number diekstrak menggunakan `ProdukSerialNumberExtractor`).
*   **Step 4 (`467`):** GOODS RECEIVED NOTE (Penerimaan barang fisik ke gudang oleh admin gudang. Stok bertambah).

### 1.2 Supplies Purchasing (Pembelian Perlengkapan) — `461`
*   **Step 1 (`461ro`):** SUPPLIES PURCHASE PRE ORDER.
*   **Step 2 (`461r`):** SUPPLIES PURCHASE ORDER (Persetujuan PO perlengkapan).
*   **Step 3 (`461`):** SUPPLIES GOODS RECEIVED (Barang masuk ke persediaan perlengkapan).

### 1.3 Transaksi Pendukung Lainnya
*   **`468` / `468r` / `468a`**: Trade-in Purchasing (Pembelian tukar tambah / barang bekas).
*   **`967` / `967r` / `967sc`**: FG Purchases Return (Retur pembelian produk lokal).

---

## 2. Alur Mutasi Persediaan & Validasi

### 2.1 Penerimaan Barang (GRN - Step 4)
*   **Finished Goods (FG):**
    *   Setiap produk masuk dicatat ke dalam persediaan produk riil (`8020` / `1010030030`) melalui komponen `RekeningPembantuProdukRiil` dan `RekeningPembantuProduk`.
    *   Gudang tujuan merujuk pada `gudangTujuanID`.
*   **Supplies (Perlengkapan):**
    *   Penerimaan barang supplies wajib diposting ke rekening pembantu perlengkapan menggunakan akun **`1010030010`** (bukan produk biasa).

### 2.2 Ekstraksi Serial Number
*   Pada langkah Pre-GRN (`467r`), sistem memanggil komponen `ProdukSerialNumberExtractor` untuk mendeteksi serial number barang yang dipindai dan menyiapkannya ke dalam bucket session (`items3_sum` -> `items7_sum`).

---

## 3. Penjurnalan Otomatis (GRN - `467`)

### 3.1 Jurnal Pembelian Standard (PPN Aktif)
*   **Debet:** `1010030030` (Persediaan Produk)
*   **Debet:** `1010040050` (PPN Masukan belum ada faktur)
*   **Kredit:** `2010010` (Hutang Dagang Supplier)
*   **Kredit:** `1010050030` (Pemakaian Uang Muka PO - jika menggunakan PO Target / Uang Muka)

### 3.2 Jurnal Diskon / Promo Supplier (Trade-In / Free Product)
*   **Debet:** `1010020030` (Piutang Supplier)
*   **Kredit:** `7010150` (Laba lain-lain / Selisih Persediaan)
