Estimator (Perhitungan Biaya)
Deskripsi Modul
Modul Estimator digunakan untuk membuat dan mengelola perhitungan biaya proyek atau produk sebelum dipakai pada proses penjualan. Setiap estimator memiliki nomor unik, kategori, dan struktur biaya berlapis yang mencakup resep (recipe), komponen biaya (budget), detail biaya, dan item detail.
Proses bisnis yang didukung meliputi penyusunan struktur biaya bertingkat, perhitungan grand total otomatis, penguncian estimator sebagai data final, serta penyalinan estimator untuk keperluan duplikasi atau penyesuaian.
Modul ini memiliki hubungan erat dengan modul Sales Order (estimator terkunci dapat dipilih pada SO), modul Material (pencarian material untuk item biaya), dan modul Master Komponen Biaya.
Hierarki Data
Estimator (Proyek)
└── Recipe / Resep (Estimasi)
└── Budget / Komponen Biaya
└── Detail Biaya
└── Item Detail (qty × harga)
Fitur Modul
| Fitur | Deskripsi |
|---|---|
| Tambah Perhitungan Biaya | Membuat estimator baru beserta recipe awal otomatis. |
| Edit Informasi Proyek | Mengubah nama, customer, deskripsi, dan lampiran (hanya saat unlocked). |
| Hapus Estimator | Menghapus estimator beserta seluruh struktur biaya (hanya saat unlocked). |
| Kunci (Lock) | Mengunci estimator agar tidak dapat diubah; diperlukan sebelum digunakan di Sales Order. |
| Buka Kunci (Unlock) | Membuka kembali estimator yang terkunci untuk diedit. |
| Salin (Copy) | Menduplikasi estimator beserta seluruh struktur biaya dengan nomor baru. |
| Tambah Estimasi Biaya | Menambah komponen budget pada recipe (saat unlocked). |
| Tambah Detail Biaya | Menambah sub-komponen biaya pada budget. |
| Tambah / Edit / Hapus Item | Mengelola baris item biaya (qty × harga). |
| Cari Material | Memilih material dari master data untuk mengisi item biaya material. |
| Tambah Estimasi Produk Regular | Mengimpor recipe dari estimator Regular ke estimator Custom. |
| Pencarian & Filter | Mencari berdasarkan nomor/nama dan memfilter customer, kategori, status. |
| Lihat Detail | Menampilkan informasi proyek dan struktur biaya lengkap. |
Penjelasan Field — Filter Daftar
| Field | Wajib | Deskripsi |
|---|---|---|
Pencarian (number) | Tidak | Pencarian cepat berdasarkan nomor atau nama estimator (partial match). |
Customer (customer_id) | Tidak | Filter berdasarkan pelanggan terkait. |
Kategori Estimasi (estimator_category_id) | Tidak | Filter Regular atau Custom. |
Status (is_locked) | Tidak | Filter Locked atau Un-Locked. |

Gambar 1. Halaman daftar Estimator dengan pencarian dan tabel data.
Penjelasan Field — Form Tambah / Edit Proyek
| Field | Wajib | Deskripsi | Validasi / Default |
|---|---|---|---|
Nama (name) | Ya | Nama proyek atau produk yang diestimasi. | Wajib diisi. |
Kategori (category_id) | Ya | Regular (template standar) atau Custom (per customer). | Wajib diisi; tidak dapat diubah saat edit. |
Nama Customer (customer_id) | Conditional | Pelanggan terkait; muncul hanya jika kategori Custom. | Wajib jika kategori = Custom. |
Deskripsi (description) | Tidak | Catatan tambahan proyek. | — |
Lampiran (attachment) | Tidak | File pendukung. | Format: pdf, doc, docx, xls, xlsx, jpg, jpeg, png. |

Gambar 2. Form tambah perhitungan biaya.
Penjelasan Field — Modal Tambah Biaya
| Field | Wajib | Deskripsi |
|---|---|---|
Komponen Biaya (component_budget_id) | Ya | Komponen biaya dari master (Material, Tenaga Kerja, Kirim & Akomodasi, Lain-Lain). |
Penjelasan Field — Modal Tambah Detail Biaya
| Field | Wajib | Deskripsi |
|---|---|---|
Komponen Detail Biaya (component_budget_detail_id) | Ya | Sub-komponen biaya yang difilter berdasarkan komponen budget induk. |
Penjelasan Field — Modal Tambah / Edit Item
| Field | Wajib | Deskripsi | Validasi / Default |
|---|---|---|---|
Nama (name) | Ya | Nama item biaya. | Wajib; terisi otomatis dari material jika dipilih. |
Qty (qty) | Ya | Jumlah item. | Numeric, wajib. Default 1 jika dari material. |
Unit (unit) | Ya | Satuan (dari master Unit). | Wajib. |
Harga (price) | Ya | Harga per unit. | Numeric, wajib. |
Catatan (note) | Tidak | Catatan item. | — |
Tombol Cari Material tersedia pada komponen budget bertipe material.
Penjelasan Field — Informasi Proyek (Detail)
| Field | Deskripsi |
|---|---|
| No. Estimator | Nomor otomatis format ESTyymm####. |
| Nama Proyek | Nama yang diinput pengguna. |
| Kategori | Regular atau Custom. |
| Nama Customer | Pelanggan terkait; menampilkan - jika Regular tanpa customer. |
| Status | Locked atau Unlocked. |
| Grand Total | Total biaya hasil kalkulasi otomatis. |
| Lampiran | Tautan file atau "Tidak ada lampiran". |
| Deskripsi | Catatan proyek. |

Gambar 3. Halaman detail estimator dengan informasi proyek dan struktur biaya.
Kategori Estimator
| Kategori | Karakteristik |
|---|---|
| Regular | Template produk standar; customer tidak wajib. |
| Custom | Proyek per customer; customer wajib; dapat menambah recipe dari produk Regular. |
Catatan Penting
- Nomor estimator dihasilkan otomatis saat penyimpanan pertama (format
EST+yymm+ 4 digit). - Recipe pertama dibuat otomatis dengan nama sama seperti nama proyek dan tidak dapat dihapus.
- Status Locked membuat seluruh struktur biaya bersifat read-only; hanya Unlock dan Copy yang tersedia.
- Estimator locked dapat dipilih pada modul Sales Order melalui modal pencarian.
- Grand total dihitung otomatis secara kaskade: item → detail → budget → recipe → estimator.
- Subtotal item = qty × harga; dihitung di backend dan frontend.
- Fitur Copy menghasilkan estimator baru dengan nama "Copy of {nama}", nomor baru, status unlocked, dan deep copy seluruh struktur.
- Estimator Custom dapat mengimpor recipe dari estimator Regular melalui modal pencarian.
- Modul ini tidak menyediakan fitur export atau cetak estimator.
- Permission yang diperlukan:
estimator.show,estimator.create,estimator.edit,estimator.destroy,estimator.lock,estimator.unlock,estimator.copy.