Peta POS & Resep (BOM)
Panduan lengkap admin mengelola Peta & Resep — model berpikirnya, alur lengkap dari menu baru sampai stok terpotong otomatis, lalu cara mengisi Resep/BOM (satu menu sekali simpan), Sub-Resep yang dipakai ulang, Peta Menu POS, Peta Modifier (tambahan/varian) dengan pemilih item, dan membaca laporan Cakupan.
Menu Peta & Resep adalah tempat Anda mengajari sistem apa isi setiap menu — supaya saat laporan POS mencatat sebuah menu terjual, sistem tahu bahan apa yang terpakai dan bisa mengurangi stok secara otomatis. Hanya Admin dan Owner yang bisa membuka dan mengubah halaman-halaman ini.
Navigasi cepat
Baru pertama kali? Baca dari atas — mulai dari model berpikir lalu alur lengkap. Sudah paham dan hanya butuh satu halaman? Loncat langsung:
- 🚀 Alur lengkap (end-to-end) — satu contoh nyata melewati keempat halaman
- 📥 Impor & Ekspor massal (Excel/xlsx) — isi puluhan menu sekaligus, dalam urutan yang benar
- 📖 Halaman 1 — Resep (BOM) — daftar bahan per porsi + Sub-Resep
- ⚖️ Yield Factor — bahan yang menyusut saat dimasak — kapan & berapa angkanya, contoh Ayam Gepuk
- 🗺️ Halaman 2 — Peta Menu — nama POS → Menu Key
- 🎛️ Halaman 3 — Peta Modifier — arti tambahan/varian dari POS
- 🎯 Halaman 4 — Cakupan — cek mana yang belum lengkap
- ⚙️ Tingkat Cakupan (Scope) — Tenant vs Warung
Di sidebar kiri, kelompok menu Peta & Resep punya empat halaman terpisah:
| Menu di sidebar | Gunanya |
|---|---|
| Resep (BOM) | Daftar bahan + jumlah per porsi tiap menu. Di sini juga Anda membuat Sub-Resep. |
| Peta Menu | Menghubungkan nama menu persis dari laporan POS dengan Menu Key internal. |
| Peta Modifier | Mengklasifikasikan tambahan/varian dari POS (pedas, potongan, tambahan, kemasan). |
| Cakupan | Laporan: berapa banyak menu yang sudah siap, dan mana yang masih kurang. |
💡 Dulu keempatnya ada di satu halaman panjang; sekarang masing-masing punya halaman sendiri agar lebih ringan dan fokus. Membuka link lama (
/dashboard/peta-pos) otomatis diarahkan ke halaman Resep (BOM).
🎓 Pahami dulu: model berpikir Peta & Resep
Analogi sederhana
Bayangkan struk kasir POS mencatat "Nasi Goreng Special" terjual 30 porsi. Sistem tidak tahu otomatis bahwa satu porsi butuh 150 gr nasi + 50 gr ayam + 20 gr bumbu — kecuali Anda mengajarinya lewat Peta Menu dan Resep BOM.
Tanpa itu, laporan stok & HPP tidak bisa menghitung bahan apa yang terpakai dari penjualan tersebut.
Empat halaman = empat pertanyaan yang dijawab sistem
| Halaman | Menjawab pertanyaan |
|---|---|
| Resep (BOM) | "Satu porsi menu ini butuh bahan apa saja, berapa banyak?" |
| Peta Menu | "Nama di laporan POS ini sebenarnya menu yang mana (kode)?" |
| Peta Modifier | "Tambahan/varian di POS ini menambah/mengganti bahan apa?" |
| Cakupan | "Mana yang sudah siap, mana yang masih kurang?" |
Bagaimana semuanya tersambung saat menu terjual
Inilah inti model berpikirnya. Saat Anda mengunggah laporan POS, untuk tiap bill sistem menjalankan rantai ini secara otomatis:
Jadi Resep, Peta Menu, dan Peta Modifier adalah "bahan persiapan"; potongan stok yang sesungguhnya terjadi nanti, otomatis, saat laporan POS diunggah — bukan saat Anda menyimpan resep/modifier. (Mengisi halaman-halaman ini tidak langsung mengubah stok.)
Apa itu Menu Key
Menu Key adalah kode internal singkat yang Anda tentukan — misalnya NASI_GORENG —
yang menghubungkan nama POS dengan resep. Satu Menu Key boleh dipakai banyak nama POS
(mis. "Nasi Goreng", "Nasi Goreng Special", "Nasi Goreng Kombo" memakai resep sama jika
bahannya identik).
Urutan paling praktis: isi resepnya dulu di Resep (BOM), lalu petakan nama POS-nya di Peta Menu. Tapi keduanya boleh dikerjakan dalam urutan apa pun — petunjuk ✓/⚠ di tiap halaman mengingatkan bagian yang belum lengkap.
Apa itu Sub-Resep (dan kenapa memudahkan hidup Anda)
Sebuah Sub-Resep adalah resep yang dipakai sebagai bahan di resep lain — biasanya bumbu, saus, atau bahan dasar yang muncul di banyak menu.
Contoh: bumbu rendang Anda dipakai di Rendang Daging, Rendang Ayam, dan Nasi Rendang. Daripada mengetik ulang 8 bahan bumbu di tiga resep, Anda cukup:
Aturan penamaan: Menu Key Sub-Resep harus diawali SR_ — mis. SR_BUMBU_RENDANG,
SR_SAUS_KACANG. Itulah cara sistem mengenali bahwa sebuah kode adalah Sub-Resep, bukan
menu jual biasa. Di form Resep (BOM), cukup pilih tab Sub-Resep pada kolom Menu Key —
awalan SR_ otomatis terkunci, jadi Anda hanya mengetik sisanya.
Sub-Resep hanya boleh satu tingkat. Sebuah Sub-Resep (
SR_…) boleh berisi bahan biasa (Item), tapi tidak boleh berisi Sub-Resep lain. JadiSR_SAUStidak bisa menunjukSR_BUMBU. Kalau dicoba, sistem menolak: "SR tidak boleh menunjuk SR — nesting maksimal 1 level".
Dua jenis "belum siap" — beda penanganannya
| Status | Artinya | Yang perlu dilakukan |
|---|---|---|
| Menu Belum Terpeta | Nama POS belum ada di Peta Menu | Tambah baris di Peta Menu |
| Resep Kosong | Nama POS sudah dipetakan, tapi resepnya masih kosong | Isi bahan di Resep (BOM) |
Sistem tidak boleh mengira resep kosong = resep nol bahan — itu akan mengacaukan laporan stok. Selama resep masih kosong, stok untuk menu itu tidak dihitung.
Sumber belajar
Alur lengkap: dari menu baru sampai stok terpotong
Bagian ini menyatukan keempat halaman dalam satu contoh nyata — ikuti berurutan untuk membuat satu menu siap hitung dari nol. Kita pakai contoh: menu "Ayam Bakar" yang punya tambahan "Extra Tahu" di POS.
Langkah 1 — Buat resep menunya di Resep (BOM)
Buka Resep (BOM). Isi Menu Key AYAM_BAKAR, tumpuk
bahan-bahannya (mis. 1 pc Ayam, 150 gr Beras) ke Daftar Bahan, lalu Simpan Resep.
👉 Detail langkahnya di Halaman 1.
Punya bumbu yang dipakai di banyak menu? Buat dulu sebagai Sub-Resep (
SR_…) sebelum dipakai di sini.
Langkah 2 — Hubungkan nama POS-nya di Peta Menu
Buka Peta Menu. Salin nama persis dari laporan POS
(mis. Ayam Bakar) ke Nama Menu POS, isi Menu Key AYAM_BAKAR (sama dengan
Langkah 1), lalu Simpan Peta Menu. Petunjuk ✓ "Resep sudah ada (N baris)" menandakan
keduanya sudah nyambung.
Langkah 3 — Beri arti tambahannya di Peta Modifier
Kalau di POS ada tambahan seperti "Extra Tahu", buka
Peta Modifier. Isi Modifier = Extra Tahu, pilih
Kelas = ADDON, lalu pada "Item yang ditambah" pilih Tahu dari dropdown. Simpan.
Sekarang sistem tahu: setiap bill ber-"Extra Tahu" memotong 1 Tahu ekstra di atas resep.
👉 Arti tiap kelas modifier ada di Halaman 3.
Langkah 4 — Unggah laporan POS → stok terpotong otomatis
Inilah saat potongan stok benar-benar terjadi. Buka menu
Laporan POS dan unggah file .xlsx-nya. Untuk
tiap bill, sistem menjalankan rantai di model berpikir:
resep dasar dipotong, lalu modifier menambah/mengganti bahan. Banner hasil menampilkan
"… Stok teoretis: N bill dikurangi".
Contoh hasil untuk 1 bill "Ayam Bakar + Extra Tahu": stok Ayam −1, Beras −150 gr (dari resep), Tahu −1 (dari modifier ADDON).
Langkah 5 — Pastikan tidak ada yang bolong di Cakupan
Buka Cakupan, pilih warung & periode, Perbarui Cakupan. Pastikan tidak ada menu di ember Menu Belum Terpeta / Resep Kosong / Modifier Belum Terklasifikasi. Target: "Semua menu sudah terpeta dan memiliki resep. 🎉"
✅ Checklist satu menu siap: (1) resep terisi di Resep BOM · (2) nama POS terpetakan di Peta Menu · (3) semua modifier menu itu terklasifikasi di Peta Modifier · (4) muncul di potongan stok setelah unggah POS · (5) bersih di Cakupan.
Impor & Ekspor massal (file Excel/xlsx)
Mengisi satu per satu lewat formulir cocok untuk menambah sedikit. Kalau Anda harus
memasukkan puluhan menu sekaligus — misalnya saat menyiapkan outlet baru — pakai
impor file Excel (.xlsx). Setiap halaman (Peta Menu, Resep, Peta Modifier)
punya tiga tombol di kotak atas:
| Tombol | Gunanya |
|---|---|
| Unduh Template | Mengunduh file Excel kosong dengan kolom yang benar + sheet contoh (Item, Outlet, dll). |
| Ekspor | Mengunduh data yang sekarang sudah ada (untuk diperiksa, diedit, atau dicadangkan). |
| Impor | Mengunggah file Excel yang sudah diisi — sistem memeriksa lalu menyimpan baris demi baris. |
🎓 Pahami dulu: kerjakan dalam urutan ini
Kenapa ada urutan
Ketiga halaman saling merujuk lewat Menu Key. Resep dan Modifier baru bermakna kalau Menu Key-nya sudah dikenal dari Peta Menu. Jadi isi Peta Menu lebih dulu, baru Resep, baru Modifier — persis seperti di alur lengkap, hanya saja kali ini lewat file Excel.
Kotak panduan di tiap halaman juga menulis urutan ini — Anda akan lihat "Langkah 1 dari 3" di Peta Menu, "Langkah 2 dari 3" di Resep, dan "Langkah 3 dari 3" di Peta Modifier.
Begini tampilan kotak tombolnya (contoh di Peta Menu — perhatikan teks "Langkah 1 dari 3"):
Langkah 1 dari 3 — petakan nama menu POS ke Menu Key lebih dulu; Resep & Modifier
merujuk ke Menu Key ini.
Unduh template yang benar
Di halaman yang ingin Anda isi, tekan Unduh Template. File Excel berisi baris judul kolom yang harus tetap ada, plus sheet bantuan (mis. daftar Kode Item dan Outlet) supaya Anda mengisi kode yang valid. Jangan menghapus atau mengganti nama kolom — kalau judul kolom berubah, sistem menolak seluruh file dan memberi tahu kolom mana yang hilang.
Isi datanya di Excel
Ketik data Anda di sheet Data, satu baris per entri. Untuk Resep, beberapa baris dengan Menu Key yang sama otomatis dianggap satu resep (semua bahannya).
Unggah lewat tombol Impor
Pilih file lewat Impor file .xlsx, tekan Impor. Sistem memeriksa dulu, baru menyimpan, lalu menampilkan ringkasan seperti "✅ 5 baris diterapkan. 2 baris ditolak. Baris 4: …" — nomor barisnya sesuai nomor baris di Excel sehingga mudah Anda perbaiki.
Aman diulang
Mengimpor file yang sama dua kali tidak menggandakan data — baris yang sudah ada akan ditolak sebagai duplikat, hanya baris baru yang ditambahkan. Jadi kalau ragu, impor ulang saja; tidak akan merusak data.
💡 Untuk Resep: kalau satu baris dalam satu Menu Key salah (mis. kode bahan tidak dikenal), seluruh resep menu itu dibatalkan — sama seperti aturan "satu menu sekali simpan" di Halaman 1. Perbaiki baris itu di Excel, lalu impor ulang.
🔒 Impor/ekspor menulis ke katalog saja — sama seperti mengisi formulir, ini tidak mengubah angka food cost / HPP. Stok baru terpotong nanti saat laporan POS diunggah.
Halaman 1 — Resep (BOM)
Buka menu Peta & Resep → Resep (BOM) di sidebar. Di sinilah Anda mengisi bahan-bahan (dan jumlahnya per porsi) untuk setiap Menu Key.
Cara kerjanya sekali jalan: Anda menumpuk dulu semua baris bahan ke dalam sebuah daftar (Daftar Bahan), baru menekan satu tombol Simpan Resep — seluruh bahan tersimpan bersamaan dalam satu kali simpan. Kalau ada satu baris yang salah, seluruh resep itu batal (tidak ada yang setengah tersimpan), dan sistem menyebut baris ke berapa yang bermasalah.
A. Mengisi resep biasa (bahan dari katalog)
Tentukan Tingkat dan Menu Key
- Tingkat — pilih Tenant (global) agar berlaku di semua outlet (paling umum), atau Warung kalau satu outlet punya resep berbeda. (Lihat Tingkat Cakupan di bawah.)
- Menu Key — ketik kode yang Anda pakai (misal
NASI_GORENG). Huruf otomatis jadi KAPITAL. Di bawah kolom muncul petunjuk: ✓ "Sudah dipetakan di Peta Menu POS" kalau pasangannya ada, atau ⚠️ "Belum dipetakan" kalau belum. Untuk sub-resep (kodeSR_…) muncul ℹ️ "Sub-resep — tidak perlu dipetakan di Peta Menu POS". - Nama Menu & Tipe (opsional) — nama tampilan dan jenis (Makanan/Minuman).
Tambahkan baris bahan satu per satu ke Daftar Bahan
Untuk tiap bahan: pilih jenis & item, isi Qty/Porsi, lalu tekan
. Baris langsung masuk ke Daftar Bahan di atas — belum tersimpan, masih bisa diubah.
Daftar Bahan (2 baris)
ITEM
Ayam Fillet (gr)50.000 grITEM
Beras (gr)150.000 gr
- Jenis Bahan — pilih Item Bahan untuk bahan dari katalog Data Master.
- Pilih Item — dropdown berisi item dari Data Master. Satuannya (gr/ml/…) otomatis terkunci mengikuti item.
- Qty/Porsi — jumlah bahan untuk satu porsi menu, sampai 3 desimal (misal
150.000). - Yield Factor — faktor susut (default
1.000= tidak ada susut). Naikkan bila bahan menyusut saat dimasak. Belum yakin angkanya? Baca Yield Factor — bahan yang menyusut saat dimasak (lengkap dengan contoh Ayam Gepuk). - Salah menambah baris? Tekan ikon sampah () di baris itu untuk membuangnya dari Daftar Bahan sebelum menyimpan.
Tekan Simpan Resep — semua baris tersimpan sekaligus
Setelah semua bahan masuk ke Daftar Bahan, tekan
.
Tombol ini mati selama Daftar Bahan masih kosong, dan menyala begitu ada minimal satu baris. Muncul ✅ Resep tersimpan., Daftar Bahan dikosongkan, dan resepnya langsung muncul di tabel Resep Tersimpan di bawah.
⚠️ Kalau ada baris yang salah, seluruh resep batal. Misalnya satu bahan bentrok dengan baris yang sudah ada, muncul pesan seperti "Baris ke-1: baris resep yang sama sudah ada" dan tidak ada baris yang tersimpan. Perbaiki baris itu, lalu Simpan Resep lagi. Ini sengaja — resep selalu utuh, tidak pernah setengah tersimpan.
Yield Factor — bahan yang menyusut saat dimasak
Yield Factor adalah angka kecil di tiap baris bahan yang menjawab satu pertanyaan praktis:
"Berapa bahan mentah yang harus saya beli supaya, setelah dimasak/dibersihkan, tersisa
sebanyak yang tertulis di resep?" Nilai bawaannya 1.000 — artinya tidak ada susut:
yang Anda tulis di Qty/Porsi = persis yang terpakai. Anda menaikkannya hanya untuk bahan yang
berkurang beratnya antara saat dibeli dan saat disajikan.
💡 Inti yang harus dipahami: Qty/Porsi adalah berat matang/bersih yang masuk ke piring; Yield Factor adalah pengali yang mengubahnya jadi berat mentah yang benar-benar Anda keluarkan dari stok. Stok dipotong sebesar Qty/Porsi × Yield Factor per porsi — jadi makin besar susutnya, makin besar Yield Factor-nya.
Sekilas — kapan pakai angka berapa:
| Nilai Yield | Kapan dipakai | Contoh nyata |
|---|---|---|
| = 1.000 | Tidak ada susut, atau Qty sudah berat netto/matang | Minyak yang terserap, sambal dari Sub-Resep matang |
| > 1.000 | Bahan menyusut saat dimasak/dibersihkan (kasus umum) | Ayam goreng 1.250, lalapan dipotong 1.100 |
| < 1.000 | Jangan dipakai — ini berlaku untuk bahan yang mengembang | Beras → nasi: pakai Gaya B, bukan Yield < 1 |
⚖️ Yield Factor di MBS selalu ≥ 1.000. Sistem memakainya untuk susut — stok dipotong Qty/Porsi × Yield, jadi angka di bawah 1 akan mengurangi potongan stok dan menyembunyikan biaya. Untuk bahan yang justru mengembang (nasi, mie rebus), jangan turunkan Yield ke bawah 1 — isi Qty/Porsi dengan berat mentahnya dan biarkan Yield
1.000(lihat catatan beras di contoh Ayam Gepuk).
🎓 Pahami dulu: kenapa ada Yield Factor & cara menghitungnya
Kenapa berat mentah ≠ berat matang
Banyak bahan menyusut saat diproses — air menguap saat digoreng, lemak meleleh, kulit & tulang dibuang, sayur layu. Yang Anda beli dan simpan di stok adalah berat mentah; yang masuk ke porsi pelanggan adalah berat matang/bersih yang lebih kecil. Kalau resep hanya mencatat berat matang, stok Anda akan terpotong terlalu sedikit dan laporan food cost jadi lebih murah dari kenyataan.
Yield Factor menjembatani keduanya:
Rumusnya — pakai angka asli dapur
Cara termudah menemukan Yield Factor: timbang sebelum & sesudah, lalu
Yield Factor = Berat Mentah ÷ Berat Matang
Contoh: 100 gr ayam mentah → setelah digoreng tersisa 80 gr.
Yield Factor = 100 ÷ 80 = 1.250
Artinya: untuk menyajikan 80 gr ayam matang, stok dipotong 80 × 1.250 = 100 gr mentah. ✔
⚖️ Selalu ≥ 1.000. Karena bahan menyusut (mentah selalu ≥ matang), Yield Factor tidak pernah di bawah 1. Kalau Anda menghitung angka di bawah 1, kemungkinan besar berat mentah & matang tertukar.
Dua cara memakainya — pilih salah satu, jangan dua-duanya
Ada dua gaya mengisi resep, dan keduanya benar asal konsisten:
| Gaya | Qty/Porsi diisi… | Yield Factor | Cocok kalau… |
|---|---|---|---|
| A. Tulis berat matang + Yield | berat matang/bersih | angka susut (>1) | Anda menimbang porsi jadi (mis. 80 gr ayam) |
| B. Tulis berat mentah langsung | berat mentah | biarkan 1.000 | Anda sudah tahu takaran belanja mentahnya |
⚠️ Jangan campur. Kalau Qty/Porsi sudah Anda isi berat mentah, jangan lagi menaikkan Yield Factor — nanti stok terpotong dobel dan food cost melonjak palsu.
Contoh nyata: menu Ayam Gepuk Pak Gembus
Pakai Gaya A (tulis berat matang + Yield). Untuk satu porsi Ayam Gepuk (AYAM_GEPUK),
operator menimbang porsi matang lalu mengisi Yield Factor dari rasio susut tiap bahan:
lihat catatan ↓
Cara membaca tiap baris — dari pengalaman dapur, bukan rumus baku (timbang sendiri untuk angka warung Anda):
- Ayam —
1.250. Digoreng kering ala gepuk: 100 gr mentah jadi ±80 gr matang (air & lemak hilang). 100 ÷ 80 = 1.250. Inilah bahan yang paling penting diberi Yield Factor — porsinya besar dan harganya mahal, jadi salah sedikit langsung menggeser food cost. - Minyak —
1.000. Yang benar-benar terserap ke ayam (mis. 15 ml) sudah Anda timbang sebagai pemakaian bersih. Minyak penggorengan yang dipakai berulang bukan per porsi — jangan masukkan seluruh wajan ke satu porsi. Jadi biarkan1.000. - Sambal —
1.000. Sudah dihitung sebagai Sub-Resep matang (SR_SAMBAL_BAWANG) — susutnya, kalau ada, sebaiknya ada di dalam resep sambal itu, bukan di sini. Cukup1.000. - Lalapan —
1.100. Kol & timun dibuang sebagian (bonggol, ujung). 44 gr beli untuk sajikan 40 gr bersih → ±1.100. Kecil, tapi konsisten. - Beras → nasi — kasus khusus. Beras justru mengembang (bukan menyusut) saat jadi nasi. Lihat catatan di bawah.
🍚 Bahan yang MENGEMBANG (nasi, mie rebus) — jangan pakai Yield < 1 di sini. Yield Factor di MBS dirancang untuk susut (selalu ≥ 1). Untuk beras, pilih Gaya B: isi Qty/Porsi = berat beras mentah yang benar-benar Anda keluarkan dari stok per porsi (mis.
90 grberas untuk sepiring nasi) dan biarkan Yield1.000. Tulis nilai matang hanya sebagai catatan, jangan dijadikan Yield < 1 — itu akan mengurangi potongan stok dan menyembunyikan biaya beras Anda. (Baris0.450di tabel atas sengaja ditandai "lihat catatan" supaya Anda tidak menyalinnya mentah-mentah.)
🧪 Cek cepat sebelum simpan: kalikan Qty/Porsi × Yield di kepala — apakah hasilnya masuk akal sebagai belanja mentah per porsi? Untuk ayam: 80 × 1.25 = 100 gr mentah → wajar. Kalau hasilnya aneh (mis. 320 gr ayam mentah per porsi), berarti Yield-nya kebablasan.
B. Membuat & memakai Sub-Resep
Sub-Resep dibuat di form yang sama — bedanya cuma di tab Menu Key (pilih
Sub-Resep, yang mengunci awalan SR_) dan urutan pengerjaannya. Selalu simpan
Sub-Resep dulu, baru pakai di menu lain (sistem hanya mau memakai Sub-Resep yang sudah
tersimpan).
Langkah 1 — Pilih tab Sub-Resep, lalu ketik nama tanpa SR_
Di kolom Menu Key, ganti tab dari Menu jual ke Sub-Resep. Awalan
SR_ langsung terkunci di depan kolom — Anda cukup mengetik sisanya (mis.
BUMBU_RENDANG), dan sistem menyimpannya sebagai SR_BUMBU_RENDANG. Lalu tumpuk hanya Item
Bahan (bumbu, minyak, dst) ke Daftar Bahan dengan Tambah baris, baru Simpan Resep.
SR_
Awalan SR_ terkunci — ketik sisanya saja, mis.
BUMBU_RENDANG →
SR_BUMBU_RENDANG.
Tumpuk semua bahan bumbu sebagai baris-baris terpisah, lalu Simpan Resep sekali. Pastikan Jenis Bahan = Item Bahan untuk setiap baris — ingat, Sub-Resep tidak boleh berisi Sub-Resep lain.
Langkah 2 — Pakai Sub-Resep di resep menu
Isi Menu Key menu jualnya (misal RENDANG_DAGING). Pilih Jenis Bahan → Sub-Resep.
Kolom di sebelahnya berubah jadi "Pilih Sub-Resep (SR…)" yang berisi semua Sub-Resep yang
sudah Anda simpan. Tambahkan sebagai baris, lalu Simpan Resep:
- Pilih Sub-Resep (SR…) — dropdown ini hanya menampilkan Sub-Resep yang sudah tersimpan. Kalau yang Anda cari tidak muncul, berarti Anda belum menyimpannya (kembali ke Langkah 1).
- Qty/Porsi — berapa banyak Sub-Resep itu dipakai per porsi menu (misal
30.000gr bumbu). - Satuan — untuk Sub-Resep, satuan diketik manual (misal
gr/ml), karena Sub-Resep tidak punya satu satuan dasar tetap.
Langkah 3 — Ubah cukup sekali
Kalau resep bumbu berubah, Anda cukup mengubah Sub-Resep SR_BUMBU_RENDANG. Semua menu
yang memakainya otomatis ikut berubah — tidak perlu mengedit satu per satu.
Mengapa harus
SR_? Sistem memakai awalanSR_untuk mengenali sebuah kode sebagai Sub-Resep. Tanpa awalan itu, kode dianggap menu biasa dan tidak akan muncul di dropdown "Pilih Sub-Resep".
Membaca tabel Resep Tersimpan (kelompok per menu)
Di bawah form ada tabel Resep Tersimpan. Tabel ini dikelompokkan per Menu Key — satu baris untuk satu menu, bukan satu baris untuk satu bahan. Tiap baris menampilkan Menu Key, jumlah bahan (mis. 3 bahan), dan Scope.
3 bahan
tenantITEM
Daging Sapi · RM012
120.000 grSUBRECIPE
Bumbu Rendang · SR_BUMBU_RENDANG
30.000 gr
5 bahan
tenant- Tekan di kiri sebuah baris untuk membuka dan melihat daftar bahannya; tekan untuk menutup lagi.
- Saat dibuka, tiap bahan tampil dengan nama jelasnya (mis. Daging Sapi · RM012, Bumbu Rendang · SR_BUMBU_RENDANG) — bukan kode acak — beserta jumlah per porsinya.
- Untuk menghapus satu bahan, tekan ikon sampah () di baris bahan tersebut.
- Kotak pencarian di atas tabel mencari berdasarkan Menu Key, nama menu, atau kode/nama bahan. Anda juga bisa mengurutkan lewat kepala kolom Menu Key / Bahan, dan berpindah halaman di bawah tabel.
Halaman 2 — Peta Menu
Buka menu Peta & Resep → Peta Menu. Di sinilah Anda menghubungkan nama menu persis dari laporan POS dengan Menu Key internal. Nama POS harus diketik sama persis seperti yang muncul di laporan POS (termasuk huruf besar-kecilnya).
Isi nama menu POS dan Menu Key
- Nama Menu POS — salin persis dari kolom nama menu di laporan POS Anda.
- Menu Key — kode singkat KAPITAL yang Anda tentukan, misal
NASI_GORENG. Ini harus sama dengan Menu Key yang Anda pakai di Resep (BOM). Petunjuk di bawah kolom menunjukkan apakah resepnya sudah ada (✓ "Resep sudah ada (N baris)") atau masih kosong (⚠️ "Resep masih kosong"). - Default Spice (opsional) — tingkat pedas bawaan, kalau menu ini punya. Ini dipakai bersama modifier SPICE (lihat Halaman 3).
- Catatan (opsional) — keterangan bebas.
Tekan Simpan Peta Menu
Muncul ✅ Peta menu tersimpan. dan baris baru tampil di tabel Peta Menu Tersimpan di bawah (dengan pencarian + urutan + halaman, sama seperti tabel lainnya).
Untuk menghapus peta menu yang salah, tekan ikon sampah () di baris yang bersangkutan.
Satu Menu Key bisa dipakai banyak nama POS. Misalnya "Nasi Goreng", "Nasi Goreng Biasa", dan "Nasi Goreng Special (tanpa cabai)" semuanya bisa dipetakan ke
NASI_GORENGkalau resep bahannya sama persis.
Halaman 3 — Peta Modifier
Buka menu Peta & Resep → Peta Modifier. Laporan POS sering punya modifier (varian/tambahan) di belakang nama menu — misalnya "pedas sedang", "potong dada", "Extra Tahu", "bungkus". Di halaman ini Anda memberi tahu sistem arti tiap modifier, supaya saat menu terjual, modifiernya ikut menambah atau mengganti bahan dengan benar.
🧠 Ingat model berpikirnya: menyimpan modifier tidak langsung memotong stok. Potongannya terjadi otomatis saat laporan POS diunggah, sebagai bagian dari rantai explosion.
Lima kelas modifier — pilih yang benar
Tiap modifier diberi satu Kelas. Kelas inilah yang menentukan apa yang diisi di kolom berikutnya:
| Kelas | Artinya | Yang dipilih di kolom Aksi | Contoh |
|---|---|---|---|
| ADDON | Menambah bahan | Item yang ditambah | Extra Tahu, extra telur |
| PACKAGING | Kemasan terpakai | Item kemasan | bungkus, dus, kresek |
| CUT | Potongan ayam tertentu | Item pengisi slot AYAM_CUT | potong dada, potong paha |
| SPICE | Mengganti sambal/bumbu | Sub-Resep sambal pengganti | pedas sedang, extra sambal |
| NOISE | Diabaikan (tak berpengaruh ke bahan) | — (tidak ada kolom) | tanpa sendok, catatan kasir |
💡 Kolom "Aksi" berubah mengikuti Kelas. Untuk ADDON/PACKAGING/CUT muncul pemilih Item (langsung nama bahan — bukan kode). Untuk SPICE muncul pemilih Sub-Resep. Untuk NOISE kolom itu hilang karena memang tidak perlu. Anda tidak perlu lagi menempel kode/ID mentah seperti dulu.
Isi teks modifier dari POS
- Modifier (teks dari POS) — tulis persis seperti yang tertulis di laporan POS
(mis.
Extra Tahu). Sistem mencocokkannya sama-persis dengan teks modifier di bill, jadi salah ketik = tidak cocok. - Label tampilan (opsional) — nama yang lebih enak dibaca, kalau perlu.
Pilih Kelas — kolom Aksi menyesuaikan otomatis
Contoh ADDON (menambah 1 Tahu). Pilih Kelas = ADDON, lalu pada "Item yang ditambah" pilih bahannya dari dropdown:
Di bawah kolom Aksi ada petunjuk singkat artinya — mis. "Stok item ini ikut terpotong tiap modifier ini muncul di bill."
Contoh SPICE (mengganti sambal). Pilih Kelas = SPICE, lalu pada "Sub-resep sambal
pengganti" pilih Sub-Resepnya (kode SR_… yang sudah Anda buat di
Halaman 1):
Untuk NOISE, tidak ada kolom Aksi — muncul keterangan "Modifier ini diabaikan saat hitung stok — tidak perlu item." Gunakan NOISE untuk catatan kasir yang tidak mengubah bahan (mis. "tanpa sendok").
Tekan Simpan Peta Modifier
Muncul ✅ Peta modifier tersimpan. dan baris baru tampil di tabel Peta Modifier Tersimpan. Tabel menampilkan kolom Aksi (item / sub-resep) yang sudah menerjemahkan kode jadi nama — mis. modifier "Extra Tahu" tampil aksinya "Tahu", bukan kode acak.
🔧 Modifier yang belum diklasifikasi akan muncul di ember Modifier Belum Terklasifikasi pada halaman Cakupan — itu daftar PR Anda di sini.
Halaman 4 — Cakupan
Buka menu Peta & Resep → Cakupan. Halaman ini menampilkan seberapa banyak menu POS yang sudah terpetakan dan terisi resepnya, sekaligus menunjukkan mana yang masih belum lengkap. Inilah papan periksa Anda — kerjakan sampai bersih.
Pilih Warung dan Periode, lalu tekan Perbarui Cakupan
Baca persentase cakupan
Di atas daftar ada persentase cakupan (berapa persen bill POS yang sudah ter-resep) beserta labelnya:
- ✅ memenuhi target — cakupan baik, hampir semua menu sudah siap.
- ⚠️ di bawah target — masih ada banyak menu yang belum terpetakan atau resepnya kosong.
Baca tiga ember laporan
Laporan menampilkan tiga kelompok masalah — masing-masing menunjuk ke halaman perbaikannya:
| Ember | Artinya | Tindakan |
|---|---|---|
| 🗺️ Menu Belum Terpeta | Nama POS belum ada di Peta Menu | Tambah di Peta Menu |
| 📋 Resep Kosong | Menu Key sudah dipetakan tapi belum ada barisnya | Isi di Resep (BOM) |
| 🔧 Modifier Belum Terklasifikasi | Modifier POS belum ada di Peta Modifier | Isi di Peta Modifier |
Tiap baris di ember "Menu Belum Terpeta" dan "Resep Kosong" juga menampilkan Jumlah Bill — semakin tinggi angkanya, semakin sering menu itu terjual, jadi prioritaskan yang besar dulu.
Isi yang masih kosong, lalu perbarui
Kerjakan dari atas ke bawah: petakan nama POS dulu, lalu isi resep bahannya, lalu klasifikasi modifiernya (pindah antar halaman lewat menu sidebar). Klik Perbarui Cakupan lagi untuk melihat kemajuannya. Saat semua beres, muncul "Semua menu sudah terpeta dan memiliki resep. 🎉".
Tingkat Cakupan (Scope)
Semua baris di halaman-halaman ini (resep, peta menu, peta modifier) bisa diatur di tingkat Tenant (berlaku semua outlet) atau Warung tertentu. Pilih di kolom Tingkat di tiap formulir sebelum menyimpan.
- Tenant (global) — paling umum. Satu resep berlaku di semua outlet.
- Warung — buat hanya kalau resep di satu outlet berbeda. Outlet mewarisi pengaturan tenant otomatis; baris tingkat Warung akan menggantikan baris tenant untuk menu itu (bukan menggabung) — jadi salin ulang seluruh bahan menu itu kalau Anda meng-override per outlet.
Mengelola Data Master (Outlet, Grup, Item, Vendor & Kas)
Cara admin menambah outlet (warung) baru, mengganti nama, memindahkan grup, menonaktifkan, dan menghapus outlet di MBS Food Cost — plus mengelola katalog item/bahan dan rantai satuan (UOM), katalog vendor & vendor pilihan per item, kategori biaya, kontak notifikasi, serta rekening deposit dan pemegang kas per outlet.
Pengaturan Override (Tenant → Grup → Outlet)
Cara admin/owner mengatur nilai default di tingkat tenant, grup, atau outlet lewat bagian Pengaturan (override cascade) di Data Master — target dashboard, harga standar, reorder par, kontak, dan konstanta (§4.14). Outlet yang tidak punya override otomatis mewarisi nilai dari grup atau default tenant, tanpa menyalin baris.