Koffi Logo
Koffi
Kaunter
PENGURUS

Kaunter Jualan

Pilih produk untuk tambah ke pesanan

Urus Produk

Tambah, edit atau padam item menu

Urus Ahli

Senarai ahli, baki mata, tier & progress cop stamp

Satu jalan sahaja — ahli mendaftar sendiri melalui OTP WhatsApp. Lihat Bot WhatsApp untuk tetapan.

Memaparkan 5 ahli teratas secara automatik. Data lain dimuatkan atas permintaan carian.
5 / 3 Ahli

Log Pendaftaran OTP & WhatsApp

0 / 0

Memaparkan 5 rekod terkini secara langsung. Muat turun fail untuk arkib penuh.

No. TelefonAktiviti / AliranKod PIN OTPStatusMasaJuruwang / Sumber

Urus Ganjaran Cop Stamp

Tetapkan mod perolehan cop stamp & produk ganjaran kad penuh

⚙️ Mod Perolehan Cop Stamp Pelanggan

Pilih kaedah bagaimana pelanggan layak menerima cop stamp semasa pesanan dibuat di kaunter.

🎁 Peraturan Ganjaran Penebusan Cop Stamp

Produk yang diberi percuma apabila pelanggan mencapai sasaran cop stamp penuh.

Iklan & Promosi

Muat naik gambar dan video untuk paparan promosi

Tekan untuk muat naik gambar / video

Boleh pilih beberapa fail sekali gus

Urus Tebus Ganjaran

Tetapkan kadar perolehan mata ganjaran & katalog item penebusan

⚙️ Mod & Kadar Perolehan Mata Ganjaran Ahli

Tetapkan jumlah perbelanjaan (RM) bagi melayakkan pelanggan menerima 1 Mata Ganjaran semasa pesanan dibuat.

🏷️ Jumlah RM = 1 Mata Ganjaran

Mata ganjaran dikira secara automatik mengikut jumlah perbelanjaan resit (cth: RM1.00 = 1 mata, RM2.00 = 1 mata, atau RM5.00 = 1 mata).

= 1 Mata
⚡ Contoh Pengiraan Langsung:
Pelanggan berbelanja RM 30.00 akan menerima 30 Mata.
* Pengiraan ini diguna pakai secara langsung semasa checkout di kaunter dan pendaftaran ahli.

🎁 Katalog Item & Diskaun Penebusan Ganjaran

Senarai ganjaran item atau diskaun yang boleh ditebus oleh ahli menggunakan mata terkumpul.

Kod Bertuah

Jana dan jejak kod cabutan bertuah

⚙️ Mod & Kadar Pemberian Kod Bertuah pada Resit

Pilih cara sistem mengira bilangan kod bertuah yang akan dicetak pada resit pesanan pelanggan

Simulasi: Pesanan dengan 3 item akan menerima 3 Kod Bertuah di resit.

Cetak Kod Bertuah pada Resit

Bila ON, satu kod bertuah baru dicetak pada setiap resit pelanggan

0
Jumlah Dijana
0
🟡 Belum Guna
0
🔵 Sudah Print (Resit)
0
🟢 Sudah Guna

🔒 Kunci Cabutan Bertuah (Event Countdown Lock)

Bila dihidupkan (ON), pelanggan di laman kad ahli hanya akan melihat paparan Countdown Acara. Sistem akan automatik dibuka semula apabila masa acara tiba.

Senarai Kod Bertuah Terkini

Urus Hadiah

Setiap hadiah disimpan akan diberi satu kod bertuah dari pool secara automatik

Papan Pemimpin

Senarai pemenang hadiah yang telah ditebus, terkini di atas

Nama / No. TelefonHadiah DimenangiKodTarikh Tebus

Rekod Jualan

Ringkasan prestasi jualan, cop stamp ditebus & laporan bulanan

RM0.00
Jumlah Jualan Kasar
RM0.00
Kos Bahan (COGS)
RM0.00
Kos Gaji Staf
RM0.00
Kos Marketing & Ganjaran
RM0.00
Untung Kasar Bersih
RM0.00
Jumlah SST (6%)
0
Bil. Transaksi Keseluruhan

Top 5 Item Terlaris

Mengikut kuantiti terjual bulan dipilih

Item Kurang Laku

Disusun daripada jualan paling rendah

Cop Stamp Ditebus

Jumlah ganjaran percuma yang dituntut pelanggan bulan dipilih

Semua Rekod Terjual

Paparan terhad 5 rekod setiap halaman mengikut tapisan bagi menjamin kelancaran sistem

5 rekod / halaman
Pintas:
No. Tarikh & Masa Juruwang / Staf Jenis Item & Customization Kos Modal Untung Bersih Bayaran Jumlah
Memaparkan 0 daripada 0 rekod
1 / 1

Syif & Imbangan Laci Tunai

Pengurusan modal apungan, rekod tunai masuk/keluar, dan laporan penutup syif (Laporan Z)

Syif Aktif: SFT-20260824-001

Juruwang: Akmal Hakim (STF-001) · Dibuka: 24 Ogo 2026, 08:30 pagi

RM0.00
Modal Apungan Awal
RM0.00
(+) Jualan Tunai
+RM0.00
(+) Duit Masuk
-RM0.00
(-) Duit Keluar
RM0.00
Baki Jangkaan Laci
RM0.00
Jualan QR & Kad

Sejarah Penutupan Syif & Laporan Z

Rekod imbangan wang tunai fizikal vs jangkaan sistem bagi setiap syif

Kod Syif Juruwang Masa Buka & Tutup Modal Apungan Jualan Tunai Jangkaan Laci Duit Dikira Varian (Beza) Status Tindakan
Memuatkan rekod syif...

🛡️ Jejak Audit Transaksi & Integriti Kaunter

Memaparkan 10 log terkini secara langsung. Muat turun laporan untuk melihat keseluruhan arkib log.

No. Masa & Tarikh Aktiviti / Tindakan No. Resit / Kod Syif Juruwang Jumlah (RM) Perincian & Nota
Memuatkan jejak audit...
⚡ Memaparkan 10 log terkini (0 log). Baki keseluruhan disimpan dalam arkib pangkalan data.

Tetapan Printer

Sambungkan printer Bluetooth & tetapkan format resit

Belum Disambung

Tiada printer dipasangkan lagi

Maklumat & Logo Kedai (Header Resit)

Nama kedai, alamat, nombor pendaftaran dan logo yang akan dicetak pada setiap resit

* Syarikat bermula 'C', Individu bermula 'IG'

Tekan untuk muat naik logo kedai

Kod QR Cop Stamp & Mata (Pada Resit)

Cetak kod QR dengan label notis khas supaya pelanggan boleh imbas dan semak kad cop stamp serta baki mata ganjaran mereka

Cetak Kod QR Semak Cop Stamp & Mata

Paparkan kod QR dengan label 'Semak Cop Stamp & Mata Anda' pada resit

Format Resit

Pilih saiz kertas yang digunakan printer anda

58mm
80mm
A4 (Browser)

Cetak Auto Selepas Bayaran

Resit akan tercetak sendiri sebaik pesanan disahkan

Pratonton Resit

Tetapan Bot WhatsApp & Webhook

Aliran pintar: Bot semak nombor telefon sebelum menghantar kod OTP

Status Sambungan Bot WhatsApp

Integrasi Gateway (Fonnte / Evolution / Waha / Meta Cloud API / Sandbox)

Tidak Disambung

🔌 Konfigurasi Webhook & API Endpoint (VPS Backend)

URL API untuk POS/Server menghantar mesej keluar ke gateway

Kunci keselamatan untuk mengesahkan panggilan API Gateway

Daftarkan URL ini di portal Gateway/Meta untuk menerima mesej masuk pelanggan

Token rahsia untuk pengesahan keselamatan webhook

Auto-simpan aktif (disegerakkan terus ke Supabase & Server)

🤖 Logik Respons Bot (3 Senario Aliran Sebenar)

Apabila pelanggan WhatsApp bot: Bot memadankan kata kunci "Request OTP" dan menyemak status permohonan aktif (sah 3 minit).

✓ KES 1: Ada Permintaan Aktif (< 3 Minit)
Gunakan {OTP} (PIN 4-digit) & {PHONE}
✕ KES 2: Tiada Permintaan / Luput (> 3 Minit)
Bot automatik balas ini jika nombor belum memohon di web/kaunter

🧪 Simulator Aliran Sebenar (Ujian Langsung Endpoint Backend)

Menguji panggilan terus ke POST /api/otp/request & POST /api/webhook/whatsapp

Live Backend Test

1. Mohon OTP (Web / Kaunter POS)

/api/otp/request
Permintaan Aktif Menunggu Mesej WhatsApp:

2. Pelanggan WhatsApp Bot (Inbound)

/api/webhook/whatsapp
Pilihan pantas:
💬 Log Respons Bot Terkini (Live Webhook Stream)
Sedia untuk ujian. Tekan butang di atas untuk melihat respon bot...

Log Pendaftaran & Webhook Inbound

Rekod status OTP dan percubaan mesej masuk daripada pelanggan

No. TelefonMesej MasukKod PIN OTPStatus SemakanMasaTindakan
💻 Lihat Contoh Kod Backend Webhook (Node.js Express & PHP) Sebenar
// CONTOH BACKEND WEBHOOK Koffi POS (Node.js / Express):
app.post(['/api/webhook/whatsapp', '/api/whatsapp/webhook'], async (req, res) => {
  const body = req.body || {};
  const sender = body.sender || body.from || body.phone || '';
  const message = (body.message || body.body || body.text || '').trim();

  const cleanPhone = normalizePhone(sender);
  const cleanMsg = message.toLowerCase().trim();

  // 1. Padankan Kata Kunci (Request OTP / Minta OTP / AHLI / OTP)
  const isOtpKeyword = cleanMsg.includes('request otp') || cleanMsg.includes('minta otp') || cleanMsg === 'otp' || cleanMsg.includes('ahli');

  if (!isOtpKeyword) {
    // KES 3: Kata kunci salah -> Panduan bersopan
    await sendWhatsApp(sender, '👋 Salam! Untuk meminta Kod PIN OTP, sila hantar mesej: 👉 *Request OTP*');
    return res.json({ status: 'guidance_sent' });
  }

  // 2. Semak Permintaan Aktif di Cache (Sah 3 Minit)
  const activeRequest = await cacheGet(`otp_request:${cleanPhone}`);

  if (activeRequest && activeRequest.otp) {
    // KES 1: Permintaan ditemui -> Hantar PIN OTP 4-Digit
    await sendWhatsApp(sender, `☕ *KOFFI KOPI*\n\n🔑 Kod PIN OTP anda: *${activeRequest.otp}*\n\n⏳ Sah 3 minit.`);
    return res.json({ status: 'sent', otp: activeRequest.otp });
  } else {
    // KES 2: Tiada permintaan aktif / Luput
    await sendWhatsApp(sender, `Salam! Nombor anda (*${cleanPhone}*) belum membuat permohonan OTP di web atau kod telah luput (sah 3 minit).`);
    return res.json({ status: 'no_request_found' });
  }
});

Urus Staf & Akses

Pengurusan profil juruwang/barista, kata laluan/PIN dan status aktif

Tetapan & Cas

Kawal cukai SST, caj rasmi kerajaan, dan bot webhook Telegram

Cukai Jualan & Perkhidmatan (SST)

Cukai perkhidmatan rasmi kerajaan Malaysia (LHDN)

Bila ON, cukai SST akan dikira secara automatik pada setiap transaksi di kaunter.

Eksport Consolidated e-Invois Bulanan LHDN Ready

Jana fail CSV mengikut format data transaksi LHDN untuk muat naik manual ke Portal MyInvois

ℹ️ Nota Pematuhan LHDN: Muat naik fail ini secara manual ke MyInvois Portal dalam tempoh 7 hari selepas bulan tamat. Ini BUKAN penghantaran automatik ke LHDN.

Caj Rasmi / Statutori Kerajaan

Caj-caj lain yang diwartakan oleh pihak berkuasa tempatan atau kementerian

Caj Tersuai Kedai (Custom Charges)

Tambah caj perkhidmatan, caj waktu puncak, caj pembungkusan, dsb.

Integrasi Bot Telegram (Login Pengurus) Aktif

Kebenaran log masuk MOD Pengurus & notifikasi sistem melalui Bot Telegram rasmi

ℹ️ Panduan Konfigurasi Bot Telegram:

Jika ruangan di bawah dibiarkan kosong, sistem secara automatik menggunakan tetapan rasmi developer di latar belakang untuk semua permohonan log masuk Pengurus. Untuk menggunakan bot peribadi, masukkan API Token & Chat ID, kemudian tekan Sahkan Sambungan dan tekan butang pengesahan yang dihantar oleh bot ke aplikasi Telegram anda.

Pratonton Pengiraan Bil (Simulasi Pesanan RM20.00)

Berjaya disimpan