Panduan MBS Food Cost
Admin / Keuangan / Owner

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.

Untuk:AdminOwner / Pemilik

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.

Baru pertama kali? Baca dari atas — mulai dari model berpikir lalu alur lengkap. Sudah paham dan hanya butuh satu halaman? Loncat langsung:

Di sidebar kiri, kelompok menu Peta & Resep punya empat halaman terpisah:

Menu di sidebarGunanya
Resep (BOM)Daftar bahan + jumlah per porsi tiap menu. Di sini juga Anda membuat Sub-Resep.
Peta MenuMenghubungkan nama menu persis dari laporan POS dengan Menu Key internal.
Peta ModifierMengklasifikasikan tambahan/varian dari POS (pedas, potongan, tambahan, kemasan).
CakupanLaporan: 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

HalamanMenjawab 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:

Laporan POS masukNama menu + modifier per bill
Cocokkan nama → Menu Keylewat Peta Menu
Ambil resep menulewat Resep BOM
Terapkan modifiertambah/ganti bahan
Stok terpotongbahan berkurang 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:

Buat Sub-Resep sekaliSR_BUMBU_RENDANG = 8 bahan
Pakai ulang sebagai 1 bahanResep menu cukup tulis: SR_BUMBU_RENDANG
Ubah sekali, berlaku semuaResep bumbu berubah → semua menu ikut

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. Jadi SR_SAUS tidak bisa menunjuk SR_BUMBU. Kalau dicoba, sistem menolak: "SR tidak boleh menunjuk SR — nesting maksimal 1 level".

Dua jenis "belum siap" — beda penanganannya

StatusArtinyaYang perlu dilakukan
Menu Belum TerpetaNama POS belum ada di Peta MenuTambah baris di Peta Menu
Resep KosongNama POS sudah dipetakan, tapi resepnya masih kosongIsi 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.

1. Resep BOMAyam Bakar = bahan + porsi
2. Peta Menu"Ayam Bakar" → AYAM_BAKAR
3. Peta Modifier"Extra Tahu" = +Tahu
4. Unggah POSstok terpotong otomatis
5. Cek Cakupanpastikan 100% siap

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:

TombolGunanya
Unduh TemplateMengunduh file Excel kosong dengan kolom yang benar + sheet contoh (Item, Outlet, dll).
EksporMengunduh data yang sekarang sudah ada (untuk diperiksa, diedit, atau dicadangkan).
ImporMengunggah 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.

1. Peta MenuTetapkan Menu Key — fondasi yang dirujuk dua halaman lain
2. Resep (BOM)Susun bahan per porsi untuk Menu Key tadi
3. Peta ModifierBeri arti tambahan/varian, terakhir

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"):

Peta Menu — kotak impor/ekspor

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

Resep (BOM) — bagian atas
  • 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 (kode SR_…) 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 + pembuat baris

Daftar Bahan (2 baris)

  • ITEM

    Ayam Fillet (gr)50.000 gr
  • ITEM

    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 YieldKapan dipakaiContoh nyata
= 1.000Tidak ada susut, atau Qty sudah berat netto/matangMinyak yang terserap, sambal dari Sub-Resep matang
> 1.000Bahan menyusut saat dimasak/dibersihkan (kasus umum)Ayam goreng 1.250, lalapan dipotong 1.100
< 1.000Jangan dipakai — ini berlaku untuk bahan yang mengembangBeras → 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:

Berat mentahyang Anda beli & simpan di stok
Dimasak / dibersihkanmenyusut: air, lemak, tulang
Berat matangyang masuk ke porsi (Qty/Porsi)

Rumusnya — pakai angka asli dapur

Cara termudah menemukan Yield Factor: timbang sebelum & sesudah, lalu

Rumus Yield Factor

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:

GayaQty/Porsi diisi…Yield FactorCocok kalau…
A. Tulis berat matang + Yieldberat matang/bersihangka susut (>1)Anda menimbang porsi jadi (mis. 80 gr ayam)
B. Tulis berat mentah langsungberat mentahbiarkan 1.000Anda 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:

Resep AYAM_GEPUK — contoh pengisian Yield Factor
BahanQty/PorsiYieldDipotong dari stok
Ayam (dada/paha)80 gr1.250100 gr
Beras (jadi nasi)200 gr0.450

lihat catatan ↓

Minyak goreng15 ml1.00015 ml
Sambal (SR_SAMBAL_BAWANG)30 gr1.00030 gr
Kol + timun (lalapan)40 gr1.10044 gr

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 biarkan 1.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. Cukup 1.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 gr beras untuk sepiring nasi) dan biarkan Yield 1.000. Tulis nilai matang hanya sebagai catatan, jangan dijadikan Yield < 1 — itu akan mengurangi potongan stok dan menyembunyikan biaya beras Anda. (Baris 0.450 di 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.

Buat Sub-Resep — tab Sub-Resep, SR_ terkunci
Menu jualSub-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:

Pakai Sub-Resep di RENDANG_DAGING
  • 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.000 gr 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 awalan SR_ 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 Keysatu baris untuk satu menu, bukan satu baris untuk satu bahan. Tiap baris menampilkan Menu Key, jumlah bahan (mis. 3 bahan), dan Scope.

Resep Tersimpan (kelompok per Menu Key)
Menu KeyBahanScope
RENDANG_DAGING

3 bahan

tenant
  • ITEM

    Daging Sapi · RM012

    120.000 gr
  • SUBRECIPE

    Bumbu Rendang · SR_BUMBU_RENDANG

    30.000 gr
NASI_GORENG

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

Peta Menu POS
  • 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_GORENG kalau 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:

KelasArtinyaYang dipilih di kolom AksiContoh
ADDONMenambah bahanItem yang ditambahExtra Tahu, extra telur
PACKAGINGKemasan terpakaiItem kemasanbungkus, dus, kresek
CUTPotongan ayam tertentuItem pengisi slot AYAM_CUTpotong dada, potong paha
SPICEMengganti sambal/bumbuSub-Resep sambal penggantipedas sedang, extra sambal
NOISEDiabaikan (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

Peta Modifier — identitas modifier
  • 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:

Peta Modifier — ADDON (pemilih Item)

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):

Peta Modifier — SPICE (pemilih Sub-Resep)

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

Cakupan POS
W01 · BENOWO

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:

EmberArtinyaTindakan
🗺️ Menu Belum TerpetaNama POS belum ada di Peta MenuTambah di Peta Menu
📋 Resep KosongMenu Key sudah dipetakan tapi belum ada barisnyaIsi di Resep (BOM)
🔧 Modifier Belum TerklasifikasiModifier POS belum ada di Peta ModifierIsi 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.

On this page

Navigasi cepatAnalogi sederhanaEmpat halaman = empat pertanyaan yang dijawab sistemBagaimana semuanya tersambung saat menu terjualApa itu Menu KeyApa itu Sub-Resep (dan kenapa memudahkan hidup Anda)Dua jenis "belum siap" — beda penanganannyaSumber belajarAlur lengkap: dari menu baru sampai stok terpotongLangkah 1 — Buat resep menunya di Resep (BOM)Langkah 2 — Hubungkan nama POS-nya di Peta MenuLangkah 3 — Beri arti tambahannya di Peta ModifierLangkah 4 — Unggah laporan POS → stok terpotong otomatisLangkah 5 — Pastikan tidak ada yang bolong di CakupanImpor & Ekspor massal (file Excel/xlsx)Kenapa ada urutanUnduh template yang benarIsi datanya di ExcelUnggah lewat tombol ImporAman diulangHalaman 1 — Resep (BOM)A. Mengisi resep biasa (bahan dari katalog)Tentukan Tingkat dan Menu KeyTambahkan baris bahan satu per satu ke Daftar BahanTekan Simpan Resep — semua baris tersimpan sekaligusYield Factor — bahan yang menyusut saat dimasakKenapa berat mentah ≠ berat matangRumusnya — pakai angka asli dapurDua cara memakainya — pilih salah satu, jangan dua-duanyaContoh nyata: menu Ayam Gepuk Pak GembusB. Membuat & memakai Sub-ResepLangkah 1 — Pilih tab Sub-Resep, lalu ketik nama tanpa SR_Langkah 2 — Pakai Sub-Resep di resep menuLangkah 3 — Ubah cukup sekaliMembaca tabel Resep Tersimpan (kelompok per menu)Halaman 2 — Peta MenuIsi nama menu POS dan Menu KeyTekan Simpan Peta MenuHalaman 3 — Peta ModifierLima kelas modifier — pilih yang benarIsi teks modifier dari POSPilih Kelas — kolom Aksi menyesuaikan otomatisTekan Simpan Peta ModifierHalaman 4 — CakupanPilih Warung dan Periode, lalu tekan Perbarui CakupanBaca persentase cakupanBaca tiga ember laporanIsi yang masih kosong, lalu perbaruiTingkat Cakupan (Scope)