Gambaran Umum

Manajemen meja adalah denyut nadi dari operasional restoran bertipe dine-in. Modul Denah Meja & Area di Temuya dirancang secara spesifik untuk memvisualisasikan kondisi ruangan restoran Anda di dalam layar mesin kasir, memberikan pandangan mata burung (bird’s-eye view) atas seluruh lalu lintas pelanggan.

Mari gunakan skenario sebuah kafe besar yang memiliki tiga area berbeda: area Indoor ber-AC yang nyaman untuk bekerja, area Balkon untuk bersantai sore, dan area VIP di lantai dua. Saat jam makan malam tiba, tamu mulai berdatangan dengan cepat. Tanpa sistem yang memetakan tata letak meja, pramusaji sering kebingungan mengingat meja mana yang masih kosong, mana yang sedang menunggu makanan, dan mana yang sudah saatnya ditagih pembayaran. Kesalahan pesanan akibat salah mengidentifikasi meja kerap terjadi, berujung pada komplain pelanggan.

Melalui fitur ini, pemilik restoran bisa mereplika desain ruangan secara digital. Setiap meja dikelompokkan ke dalam “Area” dan diberikan indikator warna yang secara cerdas berubah seiring berjalannya transaksi. Warna hijau berarti meja siap digunakan. Saat tamu duduk dan memesan, warna berubah merah (terisi). Ketika pelanggan meminta tambahan kursi, sistem memungkinkan staf untuk “menggabungkan meja” (merge tables) secara digital tanpa merusak struktur bon pembayaran. Fitur pindah meja juga terakomodasi dengan mulus: saat pelanggan di luar kehujanan dan ingin pindah ke dalam, kasir cukup menggeser tagihan ke meja baru dalam hitungan detik.

Pendekatan visual ini tidak sekadar mempercantik antarmuka; ia memotong waktu koordinasi antara penyambut tamu (greeter), pramusaji, dan kasir hingga lebih dari separuhnya.

Alur Kerja

Status sebuah meja tidak statis; meja terus berubah fungsi dari ruang kosong menjadi tempat layanan penuh, hingga kembali menjadi ruang kosong. Sistem mengelola alur ini dengan status deterministik (state machine).

stateDiagram-v2
    [*] --> Kosong
    
    Kosong --> Direservasi: Pelanggan booking (via telepon/app)
    Direservasi --> Terisi: Pelanggan tiba & mulai pesan
    Direservasi --> Kosong: Pelanggan tidak datang (batal)
    
    Kosong --> Terisi: Tamu walk-in duduk & pesan
    
    Terisi --> MenungguMakanan: Pesanan dikirim ke dapur
    MenungguMakanan --> Terisi: Pesanan selesai disajikan
    
    Terisi --> MintaTagihan: Pelanggan minta bill
    MintaTagihan --> SedangDibayar: Kasir proses pembayaran
    
    SedangDibayar --> Kotor: Transaksi selesai
    Kotor --> Kosong: Staf selesai membersihkan (bussing)

Alur penggunaan fungsional di sistem:

  1. Administrator mengatur denah dengan membuat Area (misalnya: Indoor).
  2. Meja-meja ditambahkan (misal: Meja 1, Meja 2, Meja VIP).
  3. Saat restoran buka, semua meja ditandai “Kosong”.
  4. Staf mencatat pesanan dari tamu dan menautkannya ke Meja 1. Status meja langsung menjadi “Terisi”.
  5. Jika pelanggan dari Meja 1 ingin bergabung dengan temannya di Meja 2, kasir menggunakan fitur “Gabung Meja” dan memindahkan tagihan ke satu entitas gabungan.
  6. Saat pesanan dibayar lunas, meja dapat diatur langsung menjadi Kosong atau beralih ke status Kotor (butuh pembersihan) tergantung pada pengaturan alur restoran.

Teknologi & Infrastruktur

Modul ini memerlukan rekayasa sinkronisasi yang ketat, terutama di lingkungan di mana banyak perangkat tablet kasir dan smartphone pramusaji beroperasi serentak.

Komponen TeknisPenjelasan Fungsi
Real-time WebSocketBertanggung jawab memancarkan perubahan status meja (misal dari Kosong ke Terisi) ke semua perangkat secara instan tanpa perlu memuat ulang halaman.
Layar Render CanvasUntuk visualisasi denah, menggunakan pemetaan koordinat (X, Y) jika menggunakan fitur layout kustom, atau menggunakan grid CSS untuk mode sederhana.
Penggabungan OrderLogika backend yang merangkai dua kumpulan ID pesanan yang terpisah menjadi satu payung tagihan besar saat fitur ‘Merge Table’ digunakan.

Tabel Data Utama:

Nama TabelFungsi UtamaKolom Penting
AreasMengelompokkan meja secara fisik.store_id, name, order_index
TablesData individual setiap titik layanan.area_id, name, capacity, status, current_order_id
Table_TransfersLog audit pemindahan meja.order_id, from_table_id, to_table_id, transferred_by

Keterkaitan dengan Fitur Lain

  • Sistem Pembayaran / Point of Sale: Meja adalah “keranjang belanja” fisik dalam industri FnB. Sebuah tagihan (bill) terikat langsung dengan entitas Meja.
  • Kitchen Display System (KDS): Staf dapur melihat pesanan yang diurutkan bukan berdasarkan nama pelanggan, melainkan berdasarkan nomor meja, memudahkan runners mengantar makanan yang matang.
  • Pengaturan Bisnis: Modul ini secara eksklusif hanya muncul jika tipe bisnis toko pada menu Pengaturan diset menjadi “Food & Beverage (FnB)”. Jika bisnisnya adalah Retail (misal toko baju), menu denah meja ini akan disembunyikan total dari antarmuka.

Hal Penting yang Perlu Diketahui

  1. Pemindahan Tagihan yang Aman: Saat memindahkan meja, sistem tidak hanya memindahkan angka total akhir, melainkan memindahkan setiap baris item secara struktural. Hal ini memastikan laporan penjualan per item tetap akurat.
  2. Kapasitas vs Realitas: Walau setiap meja bisa diatur batas maksimal kapasitas kursinya (misalnya 4 orang), sistem tidak akan memblokir transaksi secara kaku jika kenyataannya ada 5 orang yang duduk, memberikan fleksibilitas operasional bagi staf.
  3. Konflik Sinkronisasi: Karena mengandalkan protokol realtime, sangat disarankan restoran memiliki koneksi intranet lokal atau jaringan Wi-Fi yang stabil. Jika koneksi terputus, perangkat akan menyimpan transaksi lokal, yang bisa menyebabkan dua pramusaji menempatkan pesanan pada meja kosong yang sama (race condition). Sistem backend Temuya memiliki mekanisme penolakan ganda untuk mencegah tabrakan data tersebut saat koneksi pulih.
  4. Indikator Durasi: Fitur lanjutan pada modul meja akan memperlihatkan sebuah timer kecil di sudut ikon meja, memberitahukan staf sudah berapa lama pelanggan menduduki meja tersebut (penting untuk restoran berkonsep All You Can Eat atau tempat dengan perputaran meja tinggi).