Restoran & POS
Sistem restoran lengkap: kasir sentuh yang cepat, layar dapur, papan pengambilan dan pengiriman, manajemen lantai dan meja, menu dengan modifier, serta pencetakan terarah ke printer stasiun.
POS (layar kasir)
Rute: Restoran › POS — /rest/pos (kiosk layar penuh)

Fungsi: layar utama pengambilan pesanan, dirancang untuk sentuhan cepat. Gunakan untuk setiap penjualan: tiket makan di tempat yang dikirim ke dapur, penjualan bawa pulang yang dibayar langsung, dan pesanan antar yang terikat pada pelanggan. Layar berjalan penuh (kiosk); kasir hanya keluar lewat tombol Keluar pada bilah bawah.
Tata letak layar
| Elemen | Fungsinya |
|---|---|
| Cari produk… | Filter teks bebas atas ubin item (nama Arab/Inggris atau kode). Tanda × menghapusnya. |
| Ikon printer (di samping pencarian) | Status agen cetak lokal: hijau = pencetakan jaringan aktif, abu-abu = agen offline, pencetakan beralih ke dialog cetak browser. |
| Chip kategori | Semua ditambah satu chip berwarna per kategori aktif, sesuai urutan tampil kategori. Ketuk untuk memfilter ubin. |
| Ubin item | Foto/warna item, nama dan harga. Lencana menunjukkan berapa banyak item tersebut yang sudah ada di keranjang. Ubin abu-abu bertanda Tidak tersedia berarti item sedang "86" (habis) dan tidak dapat ditambahkan. |
| Navigasi halaman (‹ 1 / 2 ›) | Muncul saat satu kategori memiliki lebih dari 18 ubin. |
| Pemilih stasiun | Stasiun POS terminal ini (diingat per browser; stasiun bawaan pada profil pengguna diutamakan). Memilih stasiun otomatis menetapkan kotak kas terminal. |
| Bilah shift | Status shift + Buka shift / Tutup shift, plus dua ikon: Mutasi kas dan Laporan X. Ditampilkan setelah stasiun dipilih. |
| Tombol jenis pesanan | Bawa pulang (bawaan) / Makan di tempat / Antar. |
| Bilah alat pesanan | Menu (hapus filter kategori dan pencarian), Void (kosongkan seluruh tiket yang belum terkirim), Diskon, Lainnya. |
| Baris keranjang | Item, modifier yang dipilih, harga satuan, tombol kuantitas − / +, total baris, dan tombol sampah untuk menghapus baris. |
| Strip total | Subtotal, diskon, PPN, biaya layanan, biaya tambahan, tip, dan total keseluruhan. |
| Tombol aksi | Bergantung pada jenis pesanan — lihat tabel di bawah. |
| Bilah bawah | Beranda (dasbor restoran) · Pesanan · Meja (denah lantai) · Baru (kosongkan dan mulai tiket baru) · Keluar. |
Jenis pesanan dan kebutuhannya masing-masing
| Jenis | Kolom tambahan | Tombol aksi |
|---|---|---|
| Bawa pulang | Tidak ada. | Tahan (terbuka) — simpan tiket tanpa pembayaran · Bagi — pecah pembayaran ke beberapa metode · Bayar — selesaikan sekarang. |
| Makan di tempat | Meja + pelayan (dropdown dengan pencarian). | Hanya Kirim ke dapur — tiket tetap Terbuka dan diselesaikan kemudian (panggil ulang → Bayar, atau ikon bayar pada layar Pesanan). |
| Antar | Tombol Pelanggan antar → telepon (mencari buku pelanggan saat Anda mengetik, min. 3 digit), nama dan alamat. Telepon + nama wajib. | Tahan (terbuka) (lazim untuk bayar di tempat/COD) · Bagi · Bayar. |
Dialog modifier
Mengetuk item yang memiliki grup modifier membuka pemilih sebelum item masuk ke keranjang:
- Grup bertanda Wajib (min ≥ 1) harus memiliki pilihan — Tambah ke pesanan menolak jika belum.
- Grup yang menampilkan Pilih hingga N membatasi jumlah pilihan; pada grup pilihan tunggal, mengetuk opsi lain menggantikan opsi sebelumnya.
- Opsi dengan biaya tambahan menampilkan +jumlah; harga pada tombol diperbarui langsung (harga item + biaya tambahan terpilih).
- Item yang sama dengan kombinasi modifier berbeda menjadi baris keranjang terpisah.
Diskon (diatur oleh izin)
- Dengan item di keranjang, ketuk Diskon pada bilah alat.
- Pilih chip preset: 5% · 10% · 15% · 25% · Comp 100% (Comp = gratis sepenuhnya).
- Alasan diskon / comp menjadi wajib — pilih preset (jamuan, karyawan, keluhan pelanggan, promo pemasaran, comp manajemen) atau ketik sendiri. Pesanan tidak dapat dibuat tanpanya.
- Jika pengguna Anda tidak memiliki wewenang diskon, pembuatan pesanan mengembalikan "Perlu persetujuan manajer" — manajer mengetikkan nama pengguna dan kata sandinya dalam dialog dan pesanan pun diproses. Persetujuan tercatat bersama pesanan.
PPN diturunkan sebanding dengan diskon, sehingga pajak dikenakan atas jumlah yang benar-benar dibayar.
Menu "Lainnya" (atribut pesanan)
| Aksi | Efek |
|---|---|
| Tambah catatan | Catatan teks bebas yang tersimpan pada pesanan (mis. "tanpa bawang, alergi"). Juga tercetak sebagai konteks untuk dapur. |
| Tambah tag | Kata kunci untuk filter/pelaporan (ketik + Enter, boleh beberapa). |
| Atur tamu | Jumlah tamu pada tiket. |
| Tambah biaya | Jumlah tambahan dengan deskripsinya sendiri (mis. "Ongkos antar"). Ditambahkan di atas total, tidak dikenai pajak. |
| Tambah tip | Gratifikasi — ditambahkan pada jumlah yang dibayar pelanggan dan dibukukan ke akun utang tip (kewajiban, bukan pendapatan). |
| Tambah nama panggil | Nama yang diserukan saat pesanan siap — juga tampil di papan pengambilan di bawah nomor pesanan. |
Tahan, panggil ulang, dan menambah item ke tiket terbuka
Pesanan yang disimpan tanpa pembayaran (Tahan atau Kirim ke dapur) berstatus Terbuka. Panggil ulang ke POS dari layar Pesanan (ikon panggil ulang), atau dengan mengetuk mejanya di denah lantai. Dialog panggil ulang menampilkan tiket dan menawarkan aksi sesuai status:
| Status | Aksi yang tersedia |
|---|---|
| Terbuka | Batalkan (pembatalan terkontrol — alasan wajib, persetujuan manajer bila diperlukan) · Tambah item · Bayar. |
| Dibayar | Cetak struk (cetak ulang) · Tutup. |
| Dibatalkan / Direfund | Hanya lihat. |
Tambah item (mode penambahan): spanduk menampilkan "Menambah ke ORD-xxxxx", item tiket yang sudah ada ditampilkan hanya-baca beserta total saat ini, dan keranjang hanya menampung item baru. Strip total menampilkan total item baru dan total pesanan setelah penambahan. Ketuk Tambah ke pesanan untuk menyimpan (baris baru juga tercetak ke dapur), atau tanda × pada spanduk untuk keluar tanpa menyimpan. Diskon tingkat pesanan dan atribut "Lainnya" disembunyikan selama penambahan — keduanya milik seluruh tiket, bukan milik penambahan.
Pembayaran terbagi (beberapa metode, satu tiket)
- Ketuk Bagi (tiket bawa pulang/antar dengan item di keranjang).
- Ketuk sebuah metode pembayaran (kotak kas stasiun, bank/kartu…) — metode itu menjadi tender aktif.
- Ketik jumlahnya pada papan angka. C menghapus, ⌫ mundur satu digit, dan tombol Sisa mengisi tender dengan seluruh jumlah yang belum terbayar.
- Ulangi untuk metode berikutnya. Setiap tender dapat dihapus dengan tanda ×-nya. Jumlah dibatasi sehingga total tender tidak pernah melampaui total tagihan.
- Bayar hanya aktif saat Sisa = 0,00 — pesanan diselesaikan dan dibukukan dengan semua tender tercatat.
Contoh — total 115,00: ketuk Kartu, ketik 80 → ketuk Tunai, tekan Sisa → 35,00 terisi, sisa menunjukkan 0,00 → Bayar.
Dialog struk pembayaran
Setelah Bayar, pratinjau bergaya termal untuk Faktur Pajak Sederhana terbuka. Pratinjau dapat digulir sementara tombol tetap terpaku di bagian bawah dialog. Isinya: logo dan nama perusahaan, NPWP/No. PPN, kota, nomor/tanggal/jenis pesanan, meja, pelanggan antar (nama, telepon, alamat), pelayan, tamu, nama panggil, setiap baris sebagai qty × harga satuan — modifier, lalu subtotal, diskon, biaya layanan, biaya tambahan, PPN, tip dan total, serta baris kaki struk yang dapat dikonfigurasi.
- Uang diterima — alat bantu kasir di bawah pratinjau: ketik jumlah yang diserahkan pelanggan dan kembalian dihitung otomatis (diterima − total). Tidak ikut tercetak.
- Saat agen cetak aktif dan stasiun memiliki printer jaringan, struk tercetak otomatis dan dialog menampilkan "Mencetak ke: <printer> (printer jaringan)". Tombol Cetak mencetak ulang; tanpa agen, tombol membuka dialog cetak browser (tata letak 80 mm).
Shift: buka, Laporan X, mutasi kas, tutup
- Buka shift: setelah stasiun dipilih, ketuk Buka shift dan masukkan modal awal (tunai). Selama stasiun dipilih dan belum ada shift terbuka, penjualan diblokir — dialog buka-shift muncul sebagai gantinya.
- Mutasi kas (ikon uang kertas): catat Kas masuk (penambahan laci) atau Kas keluar (perlengkapan, setoran bank, pengeluaran kecil) dengan jumlah dan alasan yang wajib diisi. Tersedia preset.
- Laporan X (ikon grafik): ringkasan shift yang sama, dibaca di tengah shift tanpa menutup — penjualan sejauh ini, rincian pembayaran dan perkiraan isi laci.
- Tutup shift: memerlukan izin
REST.Shifts.Close(jika tidak, bilah menampilkan "Penutupan adalah tindakan supervisor"). Masukkan kas terhitung yang secara fisik ada di laci — laporan Z terbuka (dan otomatis tercetak ke printer jaringan saat agen aktif).
Mode offline
- Menu, meja, pelayan dan metode pembayaran disimpan dalam cache lokal — POS tetap tampil dan menjual jika server terputus.
- Pesanan yang dibuat saat terputus diantrekan secara lokal: lencana merah menampilkan "Offline — penjualan berlanjut secara lokal"; begitu koneksi kembali, lencana berubah kuning ("Menunggu sinkronisasi (n)") dan antrean terkirim otomatis.
- Ketuk lencana untuk membuka antrean: setiap pesanan tertunda menampilkan jenis, jumlah item, waktu dan total, dengan Sinkronkan sekarang dan tombol buang per pesanan. Referensi klien menjamin pengiriman ulang tidak pernah menggandakan pesanan.
Contoh lengkap — meja makan di tempat, dari awal sampai akhir
- Stasiun CASH-01 terpilih, shift terbuka. Ketuk Makan di tempat, pilih meja T-05 dan pelayan Ahmed.
- Ketuk Ayam Panggang (27,00). Dialog modifier terbuka — pada grup "Saus" pilih Saus pedas +3,00 → Tambah ke pesanan. Baris masuk seharga 30,00; tekan + pada baris keranjang → qty 2, total baris 60,00.
- Ketuk Salad Keluarga (28,00) — tanpa modifier, langsung ditambahkan.
- Total: subtotal 88,00 · PPN 15% 13,20 · total 101,20. Ketuk Kirim ke dapur (tombol menampilkan 3 item dan 101,20).
- Pesanan ORD-00045 tercipta dengan status Terbuka: meja T-05 berubah merah di denah lantai, kartunya muncul di layar dapur, dan tiket dapur tercetak pada printer kategori.
- Para tamu kemudian memesan jus: pada denah lantai ketuk T-05 (atau Pesanan → ikon panggil ulang) → Tambah item → ketuk Jus Jeruk (12,00) → Tambah ke pesanan. Item baru 12,00 + PPN 1,80 = 13,80; total pesanan setelah penambahan: 115,00.
- Para tamu ingin membayar 60/40: layar Pesanan → ikon pecah bon pada ORD-00045 → jumlah bon: 2 → tetapkan dua ayam ke bon 1, salad dan jus ke bon 2. Total langsung: bon 1 69,00 (60%), bon 2 46,00 (40%) → konfirmasi. Bon 1 tetap sebagai ORD-00045; bon 2 menjadi pesanan terbuka baru (mis. ORD-00046).
- Selesaikan bon 1: panggil ulang ORD-00045 → Bayar → 69,00 masuk ke kotak kas stasiun dan struk terbuka. Tamu menyerahkan 70,00 — ketik pada Uang diterima → Kembalian 1,00.
- Selesaikan bon 2 dengan cara yang sama: total 46,00, diterima 50,00 → kembalian 4,00. Meja T-05 kembali hijau.
Contoh lengkap — satu hari shift dengan modal awal 500
- 09.00 — pilih stasiun CASH-01 → Buka shift → modal awal 500,00. Shift SH-00012 tampil di bilah shift.
- 11.30 — beli perlengkapan dapur dari laci: Mutasi kas → Kas keluar · 150,00 · alasan "Beli perlengkapan".
- 15.00 — Laporan X untuk melihat penjualan sejauh ini. Laci tetap terbuka.
- 23.00 — hari berakhir dengan 42 pesanan: penjualan bersih 3.000,00 + PPN 450,00 = kotor 3.450,00; pembayaran: tunai 2.150,00, kartu 1.300,00.
- Seorang supervisor mengetuk Tutup shift dan menghitung laci: 2.495,00.
- Laporan Z terbuka: kas diharapkan = 500,00 (modal awal) + 2.150,00 (penjualan tunai) − 150,00 (kas keluar) = 2.500,00; terhitung 2.495,00 → selisih −5,00 tampil merah (kekurangan). Laporan mencantumkan rincian pembayaran dan setiap mutasi kas dengan alasannya, serta otomatis tercetak saat agen tersambung.
| Baris laporan Z | Arti |
|---|---|
| Pesanan | Jumlah pesanan yang diselesaikan selama shift. |
| Penjualan bersih | Penjualan setelah diskon, sebelum PPN. |
| PPN / Total | Pajak terkumpul dan total kotor. |
| Rincian pembayaran | Jumlah diterima per metode (kotak kas, tiap akun bank/kartu). |
| Modal awal / Kas masuk / Kas keluar | Kas awal laci dan mutasi selama shift. |
| Kas diharapkan | Modal awal + penjualan tunai + kas masuk − kas keluar. |
| Kas terhitung / Selisih | Jumlah yang dihitung secara fisik, dan terhitung − diharapkan (negatif = kekurangan, tampil merah). |
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Mengapa tombol Bayar tidak ada pada tiket makan di tempat? | Secara desain, pesanan makan di tempat dikirim ke dapur terlebih dahulu dan tetap Terbuka; pembayaran dilakukan kemudian lewat panggil ulang → Bayar atau ikon bayar pada layar Pesanan. |
| Mengapa dialog buka-shift muncul saat saya menekan Bayar? | Stasiun terpilih tetapi belum ada shift terbuka — penjualan diblokir sampai Anda membukanya (masukkan modal awal, 0 diperbolehkan). |
| Bisakah saya mengganti akun pembayaran? | Dengan stasiun terpilih, kotak kas berasal dari definisi stasiun. Gunakan Bagi untuk menerima pada metode lain (kartu/bank), atau kosongkan pilihan stasiun untuk menampilkan pemilih akun manual. |
| Bagaimana menghapus satu baris yang salah sebelum mengirim? | Gunakan tombol sampah pada baris keranjang (berapa pun kuantitasnya), atau − untuk mengurangi. Void pada bilah alat mengosongkan seluruh tiket yang belum terkirim. |
Layar dapur
Rute: Restoran › Dapur — /rest/kitchen

Fungsi: antrean langsung para juru masak. Setiap pesanan terbuka yang dikirim dari POS tampil sebagai kartu; dapur mengerjakannya, mencentang baris satu per satu, dan menyingkirkan (bump) pesanan saat selesai. Berjalan di layar atau tablet mana pun dalam jaringan — tanpa printer. Menyegarkan diri setiap 15 detik.
| Elemen | Arti |
|---|---|
| Kepala kartu | Nomor pesanan + penghitung menit langsung sejak pesanan dibuat. |
| Warna kartu | Lama menunggu: hijau < 5 mnt · kuning 5–10 mnt · merah ≥ 10 mnt. |
| Sub-baris | Jenis pesanan (Makan di tempat / Bawa pulang) dan meja bila ada. |
| Baris item | qty × item. Ketuk sebuah baris untuk mencentangnya sudah siap (✓) — ketuk lagi untuk membatalkan centang. |
| Tombol Siap | Menyingkirkan seluruh pesanan dari papan. Tombol menyala setelah semua baris tercentang, tetapi dapat ditekan kapan saja. |
- Kartu baru muncul (paling lambat 15 detik setelah POS mengirimnya).
- Juru masak mencentang tiap baris begitu selesai disajikan.
- Siap → kartu menghilang; nomor pesanan berpindah ke kolom "Siap" pada papan pengambilan, dan pesanan antar menampilkan lencana Siap pada papan pengiriman.
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Saya menekan Siap tanpa sengaja — bisakah kartu dikembalikan? | Tidak dari KDS. Pesanannya sendiri tidak terpengaruh (tetap Terbuka di Pesanan) — periksa kembali barisnya di sana dan lanjutkan memasak; hanya kartu papan yang tersingkir. |
| Apakah pesanan antar tampil di sini? | Ya — baris setiap pesanan terbuka sampai ke dapur; menyingkirkan satu pesanan mengubah lencananya dari "Sedang disiapkan" menjadi "Siap" di papan pengiriman. |
| Apakah mencentang baris mencetak sesuatu? | Tidak. Tiket dapur tercetak saat pesanan dibuat (per printer kategori); centang di KDS hanyalah alur kerja di layar. |
Papan pengambilan
Rute: Restoran › Papan Pengambilan — /rest/pickup (menghadap pelanggan)

Fungsi: layar dinding/kiosk yang ditonton pelanggan selama menunggu. Dua kolom nomor pesanan besar: Siap diambil (hijau) dan Sedang disiapkan (kuning), dengan nama perusahaan dan jam langsung pada kepala layar. Menyegarkan setiap 10 detik; nomor yang baru saja siap berdenyut agar menarik perhatian.
- Nomor besar adalah bagian angka akhir nomor pesanan (ORD-00091 tampil sebagai 91).
- Jika nama panggil diatur pada pesanan, nama tampil di bawah nomor.
- "Siap" mencantumkan pesanan yang disingkirkan dapur dalam 30 menit terakhir — pesanan yang sudah diambil hilang dengan sendirinya, tanpa ketukan tambahan.
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Bagaimana sebuah nomor berpindah dari Sedang disiapkan ke Siap? | Dapur menekan Siap pada kartu KDS pesanan itu — tidak ada yang perlu dilakukan pada papan itu sendiri. |
| Nomor yang siap menghilang — kenapa? | Nomor siap kedaluwarsa otomatis 30 menit setelah disingkirkan dapur agar papan membersihkan dirinya sendiri. |
| Bisakah menampilkan nama pelanggan alih-alih nomor? | Atur nama panggil pada pesanan (POS → Lainnya → Tambah nama panggil); nama tampil di bawah nomor. |
Papan pengiriman (antar)
Rute: Restoran › Papan Pengiriman — /rest/delivery

Fungsi: layar petugas pengiriman. Tiga kolom mengikuti perjalanan setiap pesanan antar —
Siap dikirim → Sedang diantar → Terkirim — ditambah strip kurir di atas yang memantau
pertanggungjawaban kas tiap kurir secara real time. Menyegarkan setiap 15 detik. Data kurir (kode, nama, telepon,
aktif) dikelola di Kurir Pengiriman — /rest/drivers.
| Area | Isi / aksi |
|---|---|
| Strip kurir | Per kurir: keluar (pesanan yang sedang dibawanya) · membawa (kas COD yang secara fisik ada di sakunya — sudah dikirim dan belum dibayar) · disetor hari ini. Kartu menyala selama kurir membawa kas. |
| Siap dikirim | Pesanan antar dengan nama/telepon/alamat pelanggan dan total. Lencana: Siap (dapur selesai) atau Sedang disiapkan, dan Dibayar jika sudah dilunasi di muka. Tombol: Kirim dengan kurir → pilih dari kurir aktif. |
| Sedang diantar | Penghitung perjalanan per kartu (kuning ≥ 25 mnt, merah ≥ 45 mnt), nama kurir, dan tombol: Terkirim serta panah pembatalan (Kembalikan dari kurir — kembali ke Siap, mis. salah pilih kurir). |
| Terkirim | Durasi perjalanan dan, untuk pesanan bayar di tempat (COD), tombol Setor kas sampai kurir menyerahkan uangnya; setelah itu lencana Dibayar. |
Contoh lengkap — pengantaran COD dari awal sampai akhir
- POS: jenis pesanan Antar → Pelanggan antar → ketik telepon 0551234567; tidak ada yang cocok, jadi masukkan nama "Mohammed Al-Harbi" dan alamat "Distrik Al-Nakheel, Jl. King Fahd" → Selesai (pelanggan tersimpan ke buku bersama pesanan).
- Tambah Pizza Margherita 35,00 dan Cola 5,00 → subtotal 40,00 + PPN 6,00 = 46,00.
- Bayar di tempat (COD) → ketuk Tahan (terbuka). Pesanan tetap Terbuka (belum dibayar) dan tiket dapurnya tercetak. (Jika pelanggan sudah membayar dengan kartu, Anda akan mengetuk Bayar.)
- Kartu tampil di Siap dikirim dengan lencana Sedang disiapkan; ketika dapur menyingkirkannya, lencana berubah menjadi Siap.
- Kirim dengan kurir → pilih Saad. Kartu berpindah ke Sedang diantar; strip menampilkan Saad: 1 keluar, membawa 46,00.
- Pelanggan mengonfirmasi penerimaan → ketuk Terkirim. Kartu berpindah ke Terkirim dengan menit perjalanannya; masih belum dibayar, jadi tombol Setor kas tetap ada.
- Saad kembali dan menyerahkan 46,00 → ketuk Setor kas. Pembayaran dibukukan di kas (jurnal terposting), lencana berubah Dibayar, dan strip menampilkan Saad: membawa 0,00 · disetor hari ini 46,00.
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Bisakah mengirim sebelum dapur selesai? | Bisa — "Sedang disiapkan" hanya informasi; pengiriman tidak diblokir. Sebagian besar restoran menunggu lencana Siap. |
| Saya salah memilih kurir. | Gunakan panah pembatalan (Kembalikan dari kurir) pada kartu yang sedang diantar — pesanan kembali ke Siap dan kas keluar dari "membawa" kurir tersebut. |
| Pemilih menampilkan "Tidak ada kurir aktif". | Buat/aktifkan kurir di Kurir Pengiriman — hanya kurir aktif yang ditawarkan. |
| Ke mana Setor kas memasukkan uangnya? | Menjalankan alur pembayaran normal ke kas — pesanan menjadi Dibayar dan jurnalnya terposting, sama seperti penjualan di konter. |
Pesanan
Rute: Restoran › Pesanan — /rest/orders

Fungsi: log terpusat setiap tiket. Kolom: nomor pesanan, tanggal, jenis (Makan di tempat / Bawa pulang / Antar),
meja, subtotal, PPN dan total (dengan jumlah per kolom), serta status. Gunakan filter tabel untuk mencari pada kolom mana pun.
Pemegang izin REST.Orders.ViewAll mendapat sakelar Pesanan saya / Semua kasir; tampilan semua-kasir
menambahkan kolom Kasir yang menunjukkan pembuat tiap tiket.
| Status | Arti |
|---|---|
| Terbuka | Tersimpan/terkirim tetapi belum dibayar (tiket ditahan, makan di tempat di meja, antar COD di jalan). |
| Dibayar | Diselesaikan dan dibukukan — ada jurnal dan stok resep sudah terpotong. |
| Dibatalkan | Dibatalkan dengan alasan tercatat (dan penyetuju, bila diperlukan). |
| Direfund | Tiket yang sudah dibayar lalu direfund — jurnal dibalik, stok dikembalikan. |
Aksi per baris (sesuai status)
| Ikon | Tersedia untuk | Fungsinya |
|---|---|---|
| Panggil ulang di kasir | Semua status | Membuka tiket pada dialog panggil ulang POS (aksi sesuai status). |
| Bayar | Terbuka | Membuka POS dan langsung menyelesaikan tiket — struk kasir tampil/tercetak di sana. |
| Pecah bon | Terbuka | Memecah tiket menjadi bon terpisah per item — lihat di bawah. |
| Batalkan | Terbuka | Pembatalan terkontrol: alasan wajib (preset: pesanan keliru, duplikat, pelanggan pergi, item habis, pesanan berubah). Jika Anda tidak memiliki wewenang void, kolom nama pengguna + kata sandi manajer muncul. |
| Jurnal | Dibayar | Menampilkan jurnal terposting dari penjualan tersebut. |
| Refund | Dibayar, dengan REST.Orders.Refund | Setelah konfirmasi: membalik jurnal dan mengembalikan stok yang terpotong. Tidak dapat dibatalkan. |
Pecah bon (bon terpisah per item)
- Ketuk ikon pecah bon pada pesanan Terbuka.
- Atur jumlah bon (2–6) dengan − / +.
- Setiap baris mulai pada bon 1 — ketuk nomor bon di samping tiap baris untuk menetapkannya. Total per bon tampil langsung di bagian bawah.
- Konfirmasi (aktif setelah minimal satu baris berada di bon selain 1). Bon 1 tetap pada pesanan asal; setiap bon lain menjadi pesanan terbuka baru, masing-masing dibayar terpisah.
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Mengapa saya tidak bisa melihat pesanan rekan saya? | Cakupan bawaan adalah "Pesanan saya". Tampilan semua-kasir memerlukan izin REST.Orders.ViewAll. |
| Bisakah mengedit pesanan yang sudah dibayar? | Tidak — pesanan yang dibayar sudah dibukukan. Refund pesanan itu (perlu izin) lalu buat ulang yang benar. |
| Bisakah bon yang dipecah digabung kembali? | Bisa — setiap bon adalah pesanan terbuka biasa; gunakan Gabung/Pindah item pada denah lantai, atau bayar saja secara terpisah. |
Denah lantai
Rute: Restoran › Denah Lantai — /rest/floor

Fungsi: keadaan langsung ruang makan. Kepala layar menghitung meja Kosong dan Terisi (dengan tombol segarkan manual). Setiap ubin menampilkan nama meja dan jumlah kursi; ubin yang terisi menambahkan penghitung durasi okupansi, nomor pesanan terbuka dan total saat ini.
- Ketuk meja kosong (hijau) → POS terbuka dengan tiket makan di tempat baru yang sudah terpasang pada meja itu.
- Ketuk meja terisi (merah) → POS terbuka dengan pesanan meja itu dipanggil ulang (tambah item / bayar / batalkan).
Operasi meja (tombol pada ubin terisi)
| Tombol | Fungsinya |
|---|---|
| Pindah | Memindahkan pesanan terbuka ke meja kosong (tamu pindah tempat duduk). Pilih tujuan dari daftar. |
| Gabung | Menggabungkan pesanan meja ini ke dalam pesanan meja terisi lain: item berpindah ke tujuan dan pesanan ini ditutup. Satu tagihan gabungan. |
| Item (Pindah item) | Centang baris tertentu dari pesanan ini dan pindahkan ke pesanan meja terisi lain — total kedua pesanan dihitung ulang. |
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Pindah menampilkan "Tidak ada meja kosong". | Pindah hanya menargetkan meja kosong. Kosongkan satu meja dulu, atau gunakan Gabung ke meja yang terisi. |
| Meja tetap merah setelah tamu pergi. | Pesanannya masih Terbuka — panggil ulang lalu Bayar (atau Batalkan dengan alasan). Pembayaran mengembalikan meja menjadi hijau. |
| Di mana meja didefinisikan? | Meja Makan — /rest/tables: kode, nama dan jumlah kursi (1–40); nonaktifkan meja yang tidak lagi dipakai. |
Persiapan operasional: pelayan, stasiun, printer

| Layar | Kolom & fungsi |
|---|---|
Pelayan /rest/waiters | Kode (otomatis) + nama + aktif. Pesanan makan di tempat dikaitkan ke pelayannya (tampil pada tiket dan struk) untuk pemantauan kinerja. |
Stasiun POS /rest/pos-stations | Kode + nama + kotak kas (akun kas tempat uang tunai terminal ini masuk) + printer struk + aktif. Kasir memilih stasiun sekali pada POS; pilihan diingat per browser, dan stasiun bawaan pada profil pengguna diutamakan. |
Printer /rest/printers | Kode + nama + alamat IP + port (biasanya 9100). Satu catatan per printer jaringan ESC/POS fisik — dirujuk oleh stasiun (struk) dan kategori (tiket dapur). |
Tanya jawab
| Pertanyaan | Jawaban |
|---|---|
| Dua terminal kasir — bagaimana caranya? | Buat dua stasiun, masing-masing dengan kotak kas dan printer struknya sendiri. Setiap terminal memilih stasiunnya sendiri; shift dan laporan Z per stasiun. |
| Apakah pelayan harus login? | Tidak — pelayan hanyalah atribusi dropdown pada tiket makan di tempat, bukan login. |
| Port berapa yang dipakai printer termal? | Hampir selalu 9100 (raw TCP). Beri setiap printer IP tetap di jaringan lokal. |
Cara kerja pencetakan
Fungsi: memahami kertas mana keluar dari printer mana, dan mengapa — sebelum menyalahkan perangkat keras.
Dua peran printer
| Peran | Diatur di mana | Mencetak |
|---|---|---|
| Printer kasir (struk) | Pada stasiun POS. | Struk pelanggan (Faktur Pajak Sederhana) dan laporan Z shift. |
| Printer stasiun (dapur) | Pada tiap kategori menu; printer dapur bawaan di pengaturan menjadi cadangan. | Tiket dapur — baris pesanan dikelompokkan per printer (baris panggangan ke bagian panggang, minuman ke bar…), tiap tiket berkepala nomor pesanan, jenis, meja dan pelayan, dengan modifier di bawah tiap baris. |
Apa yang tercetak dan kapan
| Peristiwa | Keluaran |
|---|---|
| Bayar (atau bayar terbagi) | Struk otomatis tercetak ke printer stasiun (agen tersambung) + tiket dapur untuk baris-barisnya. |
| Kirim ke dapur / Tahan | Hanya tiket dapur — tanpa struk (belum ada pembayaran). |
| Tambah item ke tiket terbuka | Tiket dapur untuk baris baru saja. |
| Panggil ulang pesanan dibayar → Cetak struk | Cetak ulang struk. |
| Tutup shift | Laporan Z otomatis tercetak (agen tersambung); tombol Cetak pada dialog mencetak ulang kapan saja. |
Agen cetak lokal
- Browser tidak dapat membuka koneksi TCP mentah, sehingga KEMTOVA ERP Print Agent yang kecil berjalan di PC kasir
(alamat lokal
127.0.0.1:18731) dan meneruskan tugas cetak langsung ke printer jaringan (IP:port) — tanpa dialog cetak Windows. - POS memeriksa agen kira-kira setiap 20 detik — ikon printer di samping kotak pencarian berwarna hijau saat tersambung.
- Agen mati atau printer tidak dikonfigurasi → struk beralih ke dialog cetak browser (tata letak 80 mm). Tiket dapur memerlukan agen — baris yang kategorinya tidak menemukan printer dilewati tanpa pemberitahuan.
- Satu printer dapur yang gagal tidak pernah memblokir printer lain maupun penjualan.
Operasi yang dibatasi izin
Fungsi: tindakan POS yang sensitif dan siapa yang boleh melakukannya. Segala yang mengurangi uang (diskon, void, refund) dibatasi izin atau memerlukan persetujuan manajer di tempat.
| Operasi | Persyaratan | Catatan |
|---|---|---|
| Buka shift | Kasir mana pun | Masukkan modal awal. |
| Tutup shift (Z) | REST.Shifts.Close | Tanpanya, bilah shift menampilkan "Penutupan adalah tindakan supervisor". |
| Diskon / Comp 100% | Wewenang diskon, jika tidak persetujuan manajer | Alasan selalu wajib. Tanpa wewenang, dialog "Perlu persetujuan manajer" meminta nama pengguna + kata sandi manajer lalu mencoba ulang. |
| Void / batalkan pesanan terbuka | Wewenang void, jika tidak persetujuan manajer | Alasan selalu wajib (preset tersedia); alasan dan penyetuju tersimpan pada pesanan. |
| Refund pesanan yang dibayar | REST.Orders.Refund | Dialog konfirmasi; membalik jurnal dan mengembalikan stok. |
| Melihat pesanan semua kasir | REST.Orders.ViewAll | Mengaktifkan sakelar "Semua kasir" + kolom Kasir pada layar Pesanan. |
Pemecahan masalah
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Pesanan tidak muncul di layar dapur | KDS menyegarkan tiap 15 dtk — atau kartunya terlanjur ditekan Siap — atau pesanan dibuat saat offline dan masih di antrean. | Tunggu satu siklus penyegaran; pastikan pesanan masih Terbuka di Pesanan; periksa lencana offline POS dan tekan Sinkronkan sekarang. |
| Tiket dapur tidak tercetak | Agen offline (ikon abu-abu), atau kategori item tidak punya printer dapur dan bawaan belum diatur, atau IP printer salah. Kegagalan cetak dapur memang tanpa pemberitahuan. | Jalankan agen (ikon menjadi hijau); atur printer dapur kategori atau bawaan di pengaturan; verifikasi IP:port (9100) dan bahwa printer ada di jaringan lokal. |
| Struk tidak keluar / "Printer jaringan gagal" | Printer mati, IP tak terjangkau, atau agen berhenti. | POS sudah beralih ke dialog browser sehingga pelanggan tetap mendapat struk. Lalu periksa daya/IP printer dan agen; cetak ulang lewat panggil ulang → Cetak struk. |
| Shift tidak bisa ditutup | Tidak memiliki REST.Shifts.Close. | Minta supervisor — bilahnya sendiri menyebut "Penutupan adalah tindakan supervisor". |
| Setiap kali menekan Bayar dialog buka-shift muncul | Stasiun terpilih tanpa shift terbuka — penjualan sengaja diblokir. | Buka shift (modal awal boleh 0), atau kosongkan pilihan stasiun untuk menjual tanpa stasiun. |
| Item tidak bisa ditambahkan ("sedang tidak tersedia") | Item sedang di-86. | Daftar item menu → Tandai tersedia pada item tersebut. |
| Pesanan antar tidak bisa dibuat | Telepon + nama pelanggan wajib untuk pesanan antar. | Dialog pelanggan terbuka sendiri — isi telepon (≥ 5 digit) dan nama. |
| Diskon ditolak dengan "Perlu persetujuan manajer" | Kasir tidak memiliki wewenang diskon. | Manajer memasukkan kredensialnya di dialog — atau berikan wewenang lewat izin peran. |
| Lencana "Offline" merah pada keranjang | Server tidak terjangkau; pesanan diantrekan secara lokal. | Lanjutkan menjual. Saat lencana menguning, ketuk → Sinkronkan sekarang. Jangan pernah menghapus data situs browser selama pesanan masih di antrean. |
| Selisih laporan Z negatif | Kas terhitung < diharapkan (modal awal + penjualan tunai + kas masuk − kas keluar). | Hitung ulang; pastikan setiap gerakan laci tercatat sebagai mutasi kas dengan alasannya. |
Pertanyaan umum
Bagaimana menyiapkan menu?
Buat kategori dan item menu dengan harga; tambah grup modifier (mis. ukuran, ekstra) agar kasir bisa menyesuaikan pesanan di POS.
Bagaimana alur pesanan POS?
Buka pesanan (meja/bawa pulang/antar), tambah item dan modifier, kirim ke dapur, lalu selesaikan pembayaran.
Bisakah mengelola meja dan pelayan?
Ya. Meja, pelayan, dan pengantar adalah data master; pesanan terhubung ke meja/pelayan untuk melacak layanan.
Apakah modul restoran memengaruhi stok?
Item menu bisa didukung item stok sehingga menjual hidangan mengurangi bahannya, menjaga persediaan makanan akurat.

