# Standar Operasional Prosedur (SOP) Manajemen Data Bill of Materials (BOM)
**Standardisasi Kepatuhan: ISO 9001:2015 (Klausul 7.5 & 8.5.6) & ISO 13485**

---

## 1. Aturan Kebijakan Relasi Produk & BOM
Relasi antara produk target (Parent Item/SKU) dan komponen penyusunnya wajib dikendalikan secara ketat untuk menjamin konsistensi kualitas produksi, akurasi pembelian bahan baku, dan validitas laporan keuangan.

*   **Status PRODUKSI (Locked):** Setelah BOM melewati tahap persetujuan, relasi wajib dikunci total. Hak akses tim Produksi dan Pengadaan (*Purchasing*) diatur sebagai *Read-Only*. Sistem wajib menolak manipulasi data langsung pada BOM aktif.
*   **Status PENGEMBANGAN (Open):** Relasi terbuka hanya berlaku pada lingkungan *sandbox*, produk purwarupa (*prototype*), atau draf revisi baru di bawah kendali tim R&D / Teknik.

---

## 2. Matriks Hak Akses (Role-Based Access Control - RBAC)
Pembagian wewenang dalam pengelolaan data BOM diatur secara ketat berdasarkan peran jabatan pengguna untuk menghindari konflik kepentingan dan perubahan tanpa izin:

| Peran Jabatan (Role) | Hak Akses BOM Aktif | Hak Akses Draf/Revisi | Otoritas Persetujuan (Approval) |
| :--- | :--- | :--- | :--- |
| **R&D / Engineer** | Read-Only | Read, Write, Create | Mengajukan Perubahan (ECR) |
| **Engineering Manager**| Read-Only | Read, Write, Edit | Menyetujui Perubahan (ECO Approval) |
| **Production / PPIC** | Read-Only | Read-Only | Validasi Kebutuhan Lantai Produksi |
| **Procurement / Buyer**| Read-Only | Read-Only | Validasi Ketersediaan Material Vendor |
| **Finance / Costing** | Read-Only | Read-Only | Validasi Dampak Biaya (Cost Rollover) |
| **System Administrator**| Full System Access | Full System Access | Hanya untuk Keperluan Pemeliharaan IT |

---

## 3. Alur Perubahan BOM & Integrasi Audit Trail (ECO Workflow)
Perubahan material atau struktur komponen tidak boleh langsung menimpa (*overwrite*) data aktif. Setiap revisi wajib melalui dokumen *Engineering Change Order* (ECO) dengan perekaman jejak audit (*Audit Trail*) otomatis.

### Skema Alur Kerja:
[BOM Aktif: Rev A] (LOCKED)│▼ (User memicu ECR / Usulan Perubahan)── AUDIT TRAIL LOG: "User X membuat draf perubahan pada Jam Y"│▼[Buat Duplikat: Rev B] (STATUS: DRAFT / OPEN) ──► (Simulasi Biaya & Scrap Factor)│▼ (Validasi & Uji Coba Lintas Departemen)[Persetujuan/Approval ECO oleh Manager]│▼── AUDIT TRAIL LOG: "Manager Z menyetujui ECO-002 pada Jam Y"│▼ (Penerapan Tanggal Efektif / Effectivity Date)[Rev A di-Arsip] ──► [Rev B Menjadi Aktif] (LOCKED)

## 4. Parameter Lanjutan: Scrap Factor & Cost Rollover

### 4.1 Perhitungan Scrap / Yield Factor
Untuk material yang mengalami penyusutan, pemotongan, atau penguapan selama proses manufaktur, kuantitas BOM wajib memperhitungkan *Scrap Factor* agar PPIC tidak kekurangan bahan baku saat memesan ke vendor.

$$\text{Kuantitas Kebutuhan Total} = \frac{\text{Kuantitas Bersih Produk}}{1 - \text{Persentase Scrap}}$$

*   *Contoh:* Jika produk membutuhkan Kabel sepanjang **10 Meter**, dan estimasi sisa potongan terbuang (*scrap*) di lantai fabrikasi adalah **5% (0.05)**, maka kuantitas yang dimasukkan ke dalam BOM adalah:
    $$\text{Kuantitas BOM} = \frac{10}{1 - 0.05} = 10.53 \text{ Meter}$$

### 4.2 Mekanisme Perhitungan Biaya (Cost Rollover)
Setiap kali status **Rev B** bertransisi dari *Draft* menjadi *Active (Locked)*, sistem ERP wajib menjalankan fungsi *Cost Rollover*:
1.  Sistem membaca harga satuan terbaru dari master data material (*Standard/Moving Average Cost*).
2.  Sistem mengalikan harga dengan kuantitas komponen (termasuk *Scrap Factor*).
3.  Sistem mengakumulasikan total biaya komponen ditambah biaya sasi tenaga kerja (*Routing Cost*) untuk memperbarui Harga Pokok Produksi (HPP) produk target secara otomatis.

---

## 5. Struktur Standar Tabel Database BOM & Log Audit
Setiap tabel relasi BOM dalam sistem wajib menyediakan kolom kontrol dan metadata audit berikut:

| Kelompok Data | Nama Kolom | Jenis Data | Deskripsi | Contoh Parameter |
| :--- | :--- | :--- | :--- | :--- |
| **Data Utama** | Parent ID | Teks / Kode | ID unik produk target akhir | `PROD-XYZ-01` |
| | Component ID | Teks / Kode | ID unik komponen penyusun | `COMP-RES-10K` |
| | Net Qty | Desimal | Kuantitas bersih yang menempel di produk | `4.00` |
| | Scrap (%) | Desimal | Estimasi kehilangan material | `0.05` (Artinya 5%) |
| | Total Qty | Desimal | Kuantitas akhir di sistem (`Net Qty / (1 - Scrap)`) | `4.21` |
| | Satuan (UoM) | Pilihan | Unit pengukuran material | `pcs`, `meter`, `kg` |
| **Kontrol** | Status Relasi | Pilihan | Status penguncian data | `Locked` / `Open` |
| | Versi/Revisi | Teks | Identifikasi siklus iterasi BOM | `Rev B.01` |
| | Tanggal Efektif| Tanggal/Jam| Waktu aktivasi penggunaan BOM di pabrik | `2026-07-01 00:00:00` |
| **Audit Trail** | Diubah Oleh | Teks | Akun pengguna digital yang mengubah data | `budi.engineering` |
| *(Otomatis)* | Waktu Ubah | Timestamp | Tanggal & jam persis aktivitas modifikasi | `2026-06-26 11:15:00` |
| | Jenis Aksi | Pilihan | Operasi data yang terdeteksi database | `INSERT` / `UPDATE` / `LOCK` |
| | Nilai Lama | Teks/JSON | Data sebelum diubah (untuk kebutuhan *rollback*)| `{"Qty": 4.00}` |
| | Nilai Baru | Teks/JSON | Data setelah diubah | `{"Qty": 4.50}` |
| | Referensi ECO | Teks | Nomor dokumen dasar perubahan wajib diisi | `ECO-2026-009` |

---

## 6. Pemetaan Implementasi pada Sistem ERP Utama

### 6.1 Implementasi di Odoo ERP (Modul PLM & Manufacturing)
*   **Mekanisme Penguncian:** Odoo mengelola relasi ini menggunakan dokumen **ECO (Engineering Change Order)** pada modul PLM. Saat ECO dibuat, Odoo otomatis menduplikasi BOM asli menjadi versi *Draft* (v2). BOM versi produksi tetap terkunci (v1) hingga dokumen ECO divalidasi ke tahap *Effective*.
*   **Pencatatan Audit Trail:** Odoo mengandalkan fitur **Chatter Log** di bilah bawah dokumen. Setiap penambahan, penghapusan, atau perubahan baris material akan dicatat permanen dalam bentuk teks kronologis yang tidak dapat dimanipulasi oleh pengguna maupun administrator.

### 6.2 Implementasi di SAP ERP (Sistem S/4HANA / ECC)
*   **Mekanisme Penguncian:** SAP menerapkan kendali mutlak melalui **ECM (Engineering Change Management)** dengan penomoran dokumen pengendali (*Change Number* / Transaksi `CC01`). Tanpa memasukkan nomor perubahan yang valid, sistem database tabel `MAST` (Relasi Material ke BOM) dan `STPO` (Item BOM) akan menolak seluruh perintah modifikasi.
*   **Pencatatan Audit Trail:** SAP menggunakan tabel sistematis tingkat rendah (*low-level tables*) yaitu **CDHDR (Change Document Header)** dan **CDPOS (Change Document Position)**. Log audit merekam alamat IP terminal komputer, ID pengguna SAP, nilai mentah hex database lama vs baru, dan wajib menyertakan alasan penyesuaian fungsional secara forensik.

### 6.3 Implementasi di Sistem ERP Kustom (Aplikasi Lokal)
*   **Mekanisme Penguncian:** Sebelum melakukan penyimpanan komposisi BOM baru pada modal komponen, pengguna wajib memasukkan Nomor Dokumen ECO (Engineering Change Order) dan Alasan Perubahan melalui dialog kontrol perubahan terintegrasi.
*   **Pencatatan Audit Trail:** Jejak audit disimpan otomatis ke dalam tabel log `data__history` (`mdl_name = 'MdlProdukKomposisi'`, `label = 'komposisi'`). Sistem merekam snapshot perbandingan bahan (`old_content` & `new_content`) ter-encode via `blobEncode` dan menghasilkan teks kronologis diff perubahan bahan (dihapus/ditambah/diubah) secara human-readable beserta referensi ECO & Alasan Perubahan pada kolom `new_content_intext`. Data log audit ini secara dinamis disajikan di tab riwayat (`historiKomposisi`) untuk menjamin akurasi dan transparansi penuh.

---

## 7. Daftar Periksa (Checklist) Audit Kepatuhan (Compliance Audit)
Lakukan pengujian ini minimal satu kali per kuartal oleh tim Auditor Internal untuk menjamin kepatuhan standar ISO:

- [ ] **Uji Penetrasi Kunci:** Coba lakukan perubahan data BOM berstatus *Locked* menggunakan akun staf Produksi atau Gudang. Sistem harus memblokir tindakan tersebut dan memunculkan pesan kesalahan (*Error: Access Denied*).
- [ ] **Uji Imutabilitas Log:** Pastikan fungsi hapus (*Delete/Purge*) pada tabel log *Audit Trail* dimatikan total, termasuk untuk tingkat pengguna *Super Admin*.
- [ ] **Validasi Konsistensi Biaya:** Ambil sampel 5 produk aktif secara acak, jalankan simulasi *Cost Rollover*, dan pastikan nilai HPP sistem cocok dengan akumulasi harga pembelian riil dari komponen penyusun terbaru.
- [ ] **Verifikasi Scrap:** Evaluasi apakah selisih antara stok sistem dengan stok fisik di gudang diakibatkan oleh nilai *Scrap Factor* pada BOM yang terlalu rendah atau terlalu tinggi.
