Combo & Paket Hemat
Bundling beberapa produk menjadi paket kombo dengan harga khusus dan pilihan item yang dapat dikustomisasi.
Gambaran Umum
Salah satu strategi pemasaran tertua dan paling efektif dalam bisnis ritel maupun F&B adalah melakukan bundling atau pemaketan produk. Modul “Combo & Paket Hemat” dirancang khusus untuk mengakomodasi strategi ini. Paket kombo memungkinkan pemilik bisnis untuk menggabungkan beberapa barang yang sudah ada di katalog menjadi sebuah entitas baru dengan harga jual yang jauh lebih menarik daripada jika barang-barang tersebut dibeli secara terpisah.
Bayangkan skenario bisnis di restoran cepat saji. Mereka menjual “Nasi Putih” (Rp 5.000), “Ayam Goreng” (Rp 15.000), dan “Es Teh Manis” (Rp 5.000). Total jika dibeli terpisah adalah Rp 25.000. Untuk menarik pelanggan di jam makan siang, restoran membuat “Paket Makan Siang Hemat” yang berisi ketiga item tersebut dan dijual dengan harga hanya Rp 20.000.
Namun, bisnis nyata tidak se-statis itu. Terkadang pelanggan menginginkan sedikit fleksibilitas, misalnya mereka ingin mengganti Es Teh Manis dengan Air Mineral, atau mengganti Dada Ayam dengan Paha Atas. Sistem kombo Temuya POS dirancang agar cukup cerdas dalam menangani pilihan alternatif (substitusi) di dalam paket tanpa merusak perhitungan stok masing-masing komponen dasar.
Alur Kerja
Pembuatan menu kombo membutuhkan ketelitian saat setup di dashboard admin, namun akan sangat mempercepat kerja kasir di lapangan.
Pertama, pengelola restoran masuk ke menu pembuatan produk, namun kali ini ia memilih tipe produk “Paket/Combo” bukan “Produk Standar”. Ia menamai kombo tersebut “Paket Mantap”. Ia mematok harga jual akhir paket tersebut: Rp 35.000.
Selanjutnya adalah proses merakit isi (komponen) dari paket tersebut. Pengelola mendefinisikan Slot atau grup pilihan:
- Slot 1 (Makanan Utama): Ia memasukkan pilihan “Nasi Goreng” atau “Mie Goreng”. Pelanggan wajib memilih satu.
- Slot 2 (Minuman): Ia memasukkan pilihan “Es Teh” atau “Es Jeruk”. Pelanggan wajib memilih satu.
- Slot 3 (Camilan): Ia memasukkan “Kerupuk” sebagai item wajib mati (tidak ada pilihan alternatif).
Saat jam operasional, kasir menekan tombol “Paket Mantap” di layar POS. Karena kombo ini memiliki pilihan alternatif (Slot 1 & 2), layar pop-up dinamis muncul meminta kasir menanyakan ke pelanggan: “Mau nasi atau mie? Minumnya teh atau jeruk?”. Setelah kasir mengonfirmasi pilihan, satu kesatuan “Paket Mantap” masuk ke keranjang belanja seharga Rp 35.000.
Di dapur, pesanan dicetak dengan jelas menjabarkan isi paket agar tim produksi menyiapkan makanan yang benar. Dan yang terpenting, secara otomatis di latar belakang, sistem inventori memotong stok dari barang dasar (misalnya memotong 1 porsi piring Nasi Goreng, 1 gelas Es Teh, dan 1 bungkus Kerupuk).
flowchart TD
A[Setup: Buat Produk Tipe Combo] --> B[Tentukan Nama & Harga Paket Khusus]
B --> C[Buat Slot Komponen 1: Makanan Utama]
B --> D[Buat Slot Komponen 2: Minuman]
C --> E[Isi Alternatif: Nasi Goreng ATAU Mie Goreng]
D --> F[Isi Alternatif: Es Teh ATAU Es Jeruk]
E --> G[Simpan Konfigurasi Paket ke Database]
F --> G
G --> H[Operasional Kasir: Pilih 'Paket Mantap']
H --> I[Pop-up: Pilih Komponen untuk Tiap Slot]
I --> J[Kasir Pilih: Mie Goreng + Es Jeruk]
J --> K[Keranjang: Tambah Paket Rp 35.000]
K --> L[Transaksi Selesai / Checkout]
L --> M[Sistem Inventori: Kurangi stok Mie Goreng]
L --> N[Sistem Inventori: Kurangi stok Es Jeruk]
Teknologi & Infrastruktur
Secara arsitektur, kombo bisa dianggap sebagai “Produk Virtual”. Produk ini memiliki ID dan harga jual tersendiri di tabel products (ditandai dengan tipe khusus, misalnya kolom product_type = 'COMBO'), tetapi ia tidak memiliki stok independen. Stok produk kombo sepenuhnya ditentukan dan dibatasi oleh ketersediaan komponen terdalamnya. Jika stok Nasi Goreng dan Mie Goreng habis, maka “Paket Mantap” otomatis menjadi Out of Stock (Habis) di kasir.
Relasi kombo disusun berjenjang. Entitas utama products (tipe kombo) memiliki relasi One-to-Many dengan combo_groups (slot pilihan). Masing-masing combo_groups merujuk ke tabel combo_items, yang berisi referensi balik ke tabel products asli (produk reguler yang menjadi anggota).
Struktur JSON digunakan saat menyimpan riwayat transaksi. Pada tabel transaction_items, saat produk kombo terjual, kita menyimpan struktur bersarang yang merekam persis pilihan substitusi apa yang diambil pelanggan. Hal ini penting untuk audit ulang perhitungan pemotongan bahan baku di kemudian hari.
Tabel Database Terkait
| Nama Tabel | Deskripsi | Kolom Penting |
|---|---|---|
products | Tabel utama, berperan ganda sebagai bungkus kombo dan barang reguler. | id, name, product_type (REGULAR / COMBO), selling_price |
combo_groups | Mewakili slot pilihan dalam kombo (misal: “Pilih Minuman”). | id, combo_product_id, name, selection_count (wajib pilih berapa item) |
combo_items | Produk nyata alternatif di dalam grup tersebut. | id, combo_group_id, regular_product_id (FK ke produk asli) |
Endpoint API
| Metode | Endpoint | Fungsi dan Kegunaan |
|---|---|---|
POST | /api/v1/combos | Membuat produk tipe kombo beserta grup slot dan isi komponennya dalam satu payload (transaksi database utuh). |
GET | /api/v1/combos/:id | Mengambil detail struktur kombo untuk render pilihan alternatif di UI frontend kasir. |
POST | /api/v1/transactions/checkout | Endpoint pembayaran. Saat menerima item kombo, backend merekonstruksi pilihan, memvalidasi apakah pilihan sesuai aturan combo_groups, lalu menjalankan mutasi stok. |
Keterkaitan dengan Fitur Lain
- Sistem Inventori (Stok Dinamis): Keterkaitan terkuat kombo adalah dengan mesin kalkulasi inventori. Mesin stok harus berjalan secara rekursif; saat kombo terjual, ia tidak memotong stok ID kombo, melainkan memotong stok dari setiap
regular_product_idyang dipilih kasir pada transaksi tersebut. - Laporan Penjualan (HPP / COGS): Perhitungan Harga Pokok Penjualan (HPP/Modal) sebuah kombo tidak di-input manual. Sistem merelasikan HPP kombo secara real-time berdasarkan total modal barang dasar pembentuknya. Jika pelanggan mengambil pilihan alternatif yang lebih mahal, HPP kombo untuk transaksi tersebut secara dinamis akan lebih tinggi, memengaruhi margin profit laporan.
- Kitchen Display System (KDS): Sistem dapur menerima dekonstruksi dari kombo. Koki tidak memasak “Paket Mantap”, koki memasak komponen spesifik (Mie Goreng dan Es Jeruk) sesuai pilihan.
Hal Penting yang Perlu Diketahui
- Pengecekan Ketersediaan (Availability Check): Perhitungan apakah menu kombo “tersedia” di kasir sangat berat secara performa jika dihitung saat itu juga. Bayangkan mengecek stok 5 komponen berbeda setiap kali kasir membuka layar. Oleh karena itu, kita sering mengimplementasikan strategi sistem Event Listener; ketika stok salah satu barang reguler mencapai angka 0, sistem mengirim sinyal (event) untuk mematikan status aktif (disable) semua kombo yang sangat bergantung padanya.
- Upcharge / Biaya Tambahan dalam Kombo: Dalam skenario mahir, komponen kombo alternatif bisa memiliki tambahan biaya (misal, ganti Es Teh ke Frappucino nambah Rp 10.000). Atribut
price_adjustmentsering ditambahkan ke tabelcombo_itemsuntuk menangani tambahan harga pada tingkat slot ini.
erDiagram
PRODUCTS_COMBO ||--|{ COMBO_GROUPS : "memiliki slot (ex: Pilih Minuman)"
COMBO_GROUPS ||--|{ COMBO_ITEMS : "memiliki pilihan (ex: Teh / Jeruk)"
COMBO_ITEMS }o--|| PRODUCTS_REGULAR : "merujuk pada barang asli"
PRODUCTS_COMBO {
string id PK
string name "Paket Mantap"
string type "COMBO"
}
COMBO_GROUPS {
string id PK
string combo_id FK
string slot_name "Pilih 1 Minuman"
}
COMBO_ITEMS {
string id PK
string group_id FK
string regular_product_id FK "Rujukan Barang Asli"
}