Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-MST-011 |
| Deskripsi | Master formula produksi (resep atau bill of material): menyusun resep barang hasil jadi beserta bahan baku, bahan pendukung, dan biaya langsung, mengelola versi, draft dan final, serta arsip formula yang dipakai oleh transaksi produksi dengan formula |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar formula produksi dengan kolom nama formula, nomor versi, nomor invoice BOM, tanggal, status, dan estimasi durasi.
- User memfilter formula berdasarkan nomor invoice (kode BOM), rentang tanggal, nama bahan jadi, dan status draft atau final.
- User membuat formula dengan barang hasil jadi, nama formula, tanggal formula, estimasi hasil jadi, cluster, estimasi durasi, dan keterangan.
- User dapat membuat formula untuk beberapa produk varian sekaligus dengan pembagian HPP per hasil jadi.
- User mengisi rincian bahan baku, bahan pendukung, dan biaya langsung, lalu menyimpan formula sebagai draft atau final.
- User mengedit atau menghapus formula draft, mencetak formula, menonaktifkan formula final, memperbarui formula final menjadi versi baru, dan mengembalikan formula final ke draft.
- User memulihkan formula yang dinonaktifkan dari arsip.
- Formula final menjadi pilihan pada Produksi dengan Formula dan Perintah Produksi.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar formula aktif secara bertahap (30 baris per muat) dengan nomor versi berformat mayor.minor |
| FR-02 | Sistem menyediakan filter nomor invoice, rentang tanggal, nama bahan jadi, dan status (draft draf atau selesai final) |
| FR-03 | User dengan hak dasar formula dapat membuat formula dengan hasil jadi, tanggal, dan cluster wajib diisi |
| FR-04 | Nama formula bersifat opsional dan diisi otomatis dari nama barang hasil jadi |
| FR-05 | Bila opsi buat produk varian aktif, user mengisi beberapa hasil jadi dengan persentase HPP yang totalnya 100% saat final |
| FR-06 | Formula memuat bahan baku (wajib), bahan pendukung, dan biaya langsung (akun dan nominal per BOM) sesuai hak akses |
| FR-07 | Sistem menyediakan Simpan draft dan Simpan final, dan setelah final langsung membuka modal cetak |
| FR-08 | Formula draft dapat diedit, dicetak, dan dihapus |
| FR-09 | Formula final dapat dilihat, dicetak, dinonaktifkan, diperbarui sebagai versi baru, dan dikembalikan ke draft |
| FR-10 | User dengan hak arsip dapat melihat formula nonaktif dan memulihkannya |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat dan memfilter daftar formula produksi |
| UC-02 | Membuat formula produksi |
| UC-03 | Mengedit formula draft |
| UC-04 | Memperbarui formula final menjadi versi baru |
| UC-05 | Mengembalikan formula final ke draft |
| UC-06 | Menonaktifkan formula final |
| UC-07 | Menghapus formula draft |
| UC-08 | Melihat dan mencetak formula |
| UC-09 | Memulihkan formula dari arsip |
4. Use Case Scenario
UC-01 : Melihat dan memfilter daftar formula produksi
| Aktor | User produksi |
| Deskripsi | User melihat daftar formula aktif dan mempersempitnya dengan filter |
| Prekondisi | User sudah login dan memilih brand |
| Alur utama | 1. User membuka menu Master, Produksi, Formula Produksi. 2. Sistem menampilkan daftar formula aktif. 3. User klik Filter dan mengisi nomor invoice, rentang tanggal, nama bahan jadi, atau status. 4. Sistem memuat ulang daftar dari halaman pertama. |
| Alur negatif | - Jika gagal memuat, daftar dikosongkan dan tampil "Formula Produksi Kosong". |
| Bisnis rule | - Status final tampil dengan badge hijau, draf dengan badge abu-abu.- Formula nonaktif tidak tampil di daftar utama. - Filter dipulihkan dari query URL. |
| Postkondisi | Daftar formula tampil |
| Trigger | User membuka halaman atau menerapkan filter |
| Kode FR | FR-01 FR-02 |
UC-02 : Membuat formula produksi
| Aktor | User dengan hak dasar formula |
| Deskripsi | User menyusun resep baru untuk barang hasil jadi |
| Prekondisi | User punya hak #bill-of-material basic |
| Alur utama | 1. User klik Buat Formula Resep (atau tombol plus pada keyboard). 2. User memilih nomor invoice otomatis atau manual. 3. User memilih barang hasil jadi, mengisi nama formula, tanggal formula, estimasi hasil jadi, cluster, estimasi durasi, dan keterangan. 4. Bila perlu, user mengaktifkan Buat Produk Varian dan mengisi tab hasil jadi. 5. User mengisi bahan baku, bahan pendukung, dan biaya langsung. 6. User memilih Simpan draft atau Simpan final. 7. Sistem menyimpan formula; bila final, sistem membuka modal cetak, bila draft kembali ke daftar. |
| Alur negatif | - Jika header tidak lengkap, muncul "Tolong Isi form dengan benar!". - Jika bahan baku tidak valid, muncul "Form Bahan Baku Wajib Diisi". - Jika bahan pendukung tidak valid, muncul "Oops ada yang salah di form Bahan Pendukung!". - Jika biaya langsung tidak valid, muncul "Oops ada yang salah di form Biaya Langsung!". - Jika hasil jadi varian tidak valid, muncul "Form Bahan Jadi Wajib Diisi". - Jika final dan total HPP varian bukan 100%, muncul "Total Pembagian HPP Bahan Jadi harus = 100%! Total HPP Anda = X%". - Jika simpan gagal, muncul pesan error dari BE. |
| Bisnis rule | - Status draft disimpan sebagai draf, final sebagai final.- Tanpa produk varian, hasil jadi tunggal disimpan dengan persentase HPP 100% dan satuan terkecil barang. - Dengan produk varian, field hasil jadi utama dan estimasi hasil jadi tidak dipakai. - Estimasi hasil jadi wajib jika fitur estimasi durasi aktif untuk user. - Tab bahan pendukung, biaya langsung, dan produk varian hanya tampil sesuai hak akses. |
| Postkondisi | Formula tersimpan |
| Trigger | User klik opsi simpan |
| Kode FR | FR-03 FR-04 FR-05 FR-06 FR-07 |
UC-03 : Mengedit formula draft
| Aktor | User dengan hak dasar formula |
| Deskripsi | User mengubah formula yang masih draft |
| Prekondisi | Formula berstatus draft |
| Alur utama | 1. User memilih Edit pada menu baris. 2. Sistem memuat detail formula, bahan, biaya, dan hasil. 3. User mengubah data. 4. User memilih Simpan draft atau Simpan final. 5. Sistem memperbarui formula dan menampilkan "Berhasil Simpan Final atau Draft Invoice Formula". |
| Alur negatif | - Validasi sama seperti saat membuat. |
| Bisnis rule | - Bila formula sudah memiliki beberapa hasil jadi, opsi produk varian dikunci aktif. |
| Postkondisi | Formula terbarui |
| Trigger | User klik opsi simpan pada form edit |
| Kode FR | FR-08 |
UC-04 : Memperbarui formula final menjadi versi baru
| Aktor | User dengan hak dasar formula |
| Deskripsi | User merevisi resep formula final sehingga tercatat sebagai versi baru |
| Prekondisi | Formula berstatus final |
| Alur utama | 1. User memilih Perbaharui Formula pada menu baris. 2. Sistem membuka form edit dengan penanda versi baru. 3. User mengubah resep lalu menyimpan. 4. Sistem menyimpan revisi sebagai versi baru formula. |
| Alur negatif | - Validasi sama seperti saat membuat. |
| Bisnis rule | - Penanda versi baru dikirim ke BE dan nomor versi mayor.minor diperbarui oleh BE. |
| Postkondisi | Formula memiliki versi baru |
| Trigger | User menyimpan form Perbaharui Formula |
| Kode FR | FR-09 |
UC-05 : Mengembalikan formula final ke draft
| Aktor | User dengan hak dasar formula |
| Deskripsi | User membuka kunci formula final agar dapat diedit sebagai draft |
| Prekondisi | Formula berstatus final |
| Alur utama | 1. User memilih Ubah ke Simpan Draft. 2. Sistem membuka kunci formula. 3. Status baris berubah menjadi draft dan muncul notifikasi berhasil. |
| Alur negatif | - Jika gagal, daftar dikosongkan dan perlu dimuat ulang. |
| Bisnis rule | - Pesan sukses yang tampil saat ini adalah "Berhasil Menghapus Formula Produksi" walaupun aksinya unlock. |
| Postkondisi | Formula kembali draft |
| Trigger | User memilih Ubah ke Simpan Draft |
| Kode FR | FR-09 |
UC-06 : Menonaktifkan formula final
| Aktor | User dengan hak dasar formula |
| Deskripsi | User menonaktifkan formula final agar tidak dipakai lagi |
| Prekondisi | Formula berstatus final |
| Alur utama | 1. User memilih Non-Aktifkan Formula. 2. Sistem menandai formula nonaktif. 3. Baris hilang dari daftar dan muncul "Behasil Menonaktifkan Formula". |
| Alur negatif | - Jika gagal, muncul pesan error dari BE. |
| Bisnis rule | - Formula nonaktif dipindahkan ke arsip dan dapat dipulihkan. |
| Postkondisi | Formula nonaktif |
| Trigger | User memilih Non-Aktifkan Formula |
| Kode FR | FR-09 |
UC-07 : Menghapus formula draft
| Aktor | User dengan hak dasar formula |
| Deskripsi | User menghapus formula draft |
| Prekondisi | Formula berstatus draft |
| Alur utama | 1. User memilih Hapus. 2. Sistem menghapus formula dan menampilkan "Berhasil Menghapus Formula Produksi". |
| Alur negatif | - Jika gagal, daftar dikosongkan dan perlu dimuat ulang. |
| Bisnis rule | - Hapus hanya untuk formula draft dan tanpa konfirmasi tambahan. |
| Postkondisi | Formula draft terhapus |
| Trigger | User memilih Hapus |
| Kode FR | FR-08 |
UC-08 : Melihat dan mencetak formula
| Aktor | User dengan hak lihat atau dasar formula |
| Deskripsi | User melihat detail formula dan mencetaknya |
| Prekondisi | Formula tersedia di daftar |
| Alur utama | 1. User memilih Lihat untuk membuka detail formula. 2. User memilih Print pada menu baris. 3. Sistem memuat detail formula, satuan, dan kategori barang. 4. Sistem membuka modal cetak dan user mencetak. |
| Alur negatif | - Jika data gagal diambil, muncul "Kesalahan dalam pengambilan data. error: ...". |
| Bisnis rule | - Lihat butuh hak #bill-of-material view, Print butuh hak basic. |
| Postkondisi | Detail tampil atau formula tercetak |
| Trigger | User memilih Lihat atau Print |
| Kode FR | FR-08 FR-09 |
UC-09 : Memulihkan formula dari arsip
| Aktor | User dengan hak arsip formula |
| Deskripsi | User mengaktifkan kembali formula yang dinonaktifkan |
| Prekondisi | User punya hak #bill-of-material archive |
| Alur utama | 1. User klik Arsip. 2. Sistem menampilkan formula nonaktif. 3. User memilih formula lalu memulihkan. 4. Sistem mengaktifkan formula terpilih dan menampilkan "Berhasil memulihkan Formula terpilih". |
| Alur negatif | - Jika gagal, muncul pesan error dari BE. |
| Bisnis rule | - Pemulihan dilakukan per formula terpilih secara paralel. |
| Postkondisi | Formula aktif kembali |
| Trigger | User klik pulihkan di halaman arsip |
| Kode FR | FR-10 |
5. Data Flow Diagram
DFD-01
6. Sequence Diagram
SD-01 — UC-01 : Melihat dan memfilter daftar formula produksi
SD-02 — UC-02 : Membuat formula produksi
SD-03 — UC-03 : Mengedit formula draft
SD-04 — UC-04 : Memperbarui formula final menjadi versi baru
SD-05 — UC-05 : Mengembalikan formula final ke draft
SD-06 — UC-06 : Menonaktifkan formula final
SD-07 — UC-07 : Menghapus formula draft
SD-08 — UC-08 : Melihat dan mencetak formula
SD-09 — UC-09 : Memulihkan formula dari arsip
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-bom | existing | - |
GET /invoice-bom/:id | existing | - |
POST /invoice-bom/create-all | existing | - |
PUT /invoice-bom/update-all/:id | existing | - |
PUT /invoice-bom/:id | existing | - |
PUT /invoice-bom/unlock/:id | existing | - |
DELETE /invoice-bom/:id | existing | - |
GET /cluster/:id | existing | - |