Selby Cafe Logo

Selby Cafe

Point of Sale System

{{ loginError }}

Yebeka Digital

SaaS - Expert

Selby Cafe Logo

Selby Cafe

COFFEE 'N PASTRY

{{ userRole }}
Product
Habis

{{ product.name }}

Rp {{ formatPrice(product.price) }}

Pesanan Saat Ini

#ORD-{{ orderNumber }}

Printer: {{ printerSettings.name || 'Belum disetel' }} • {{ printerSettings.ip }}:{{ printerSettings.port }} • Auto-print ON

Belum ada item

{{ item.name }}

Rp {{ formatPrice(item.price) }}

{{ item.qty }}

Rp {{ formatPrice(item.price * item.qty) }}

Subtotal Rp {{ formatPrice(cartTotal) }}
Pajak (10%) Rp {{ formatPrice(cartTotal * 0.1) }}
Total Rp {{ formatPrice(cartTotal * 1.1) }}

Dashboard CRM Owner

Ringkasan penjualan, pembayaran, produk, kategori, dan jam ramai.

CRM Owner View

Cashflow & Penjualan Utama

Data mengikuti filter tanggal di atas.

Total Omzet

Rp {{ formatPrice(totalRevenue) }}

{{ pay.label }} {{ pay.percent }}%

Rp {{ formatPrice(pay.total) }}

{{ pay.count }} transaksi

Grafik Omzet Harian

{{ dailySalesChart.length }} hari

{{ day.label.slice(0,5) }}
Belum ada data omzet

Grafik Metode Bayar

{{ pay.label }} {{ pay.percent }}%

Best Seller

{{ bestProduct?.name || '-' }}

{{ bestProduct?.qtySold || 0 }} item

Kategori Kuat

{{ topCategory?.name || '-' }}

{{ topCategory?.percent || 0 }}% kontribusi

Jam Ramai

{{ peakHours[0]?.label || '-' }}

{{ peakHours[0]?.count || 0 }} transaksi

Periode

{{ filteredOrders.length }}

Total Order

Omzet

Rp {{ formatPrice(totalRevenue) }}

Total Pendapatan

{{ totalItems }}

Total Item Terjual

{{ averageOrder }}

Rata-rata Order/Hari

Grafik Omzet Harian

{{ dateFrom }} - {{ dateTo }}
{{ day.label }}
Rp {{ formatPrice(day.total) }}
Belum ada omzet pada periode ini

Breakdown Pembayaran

{{ pay.label }} {{ pay.count }} trx

Rp {{ formatPrice(pay.total) }}

{{ pay.percent }}% dari omzet

{{ pay.label }}
{{ pay.percent }}%

Produk Terlaris & Lemah

Best Seller

{{ bestProduct?.name || '-' }}

{{ bestProduct?.qtySold || 0 }} item • Rp {{ formatPrice(bestProduct?.totalRevenue || 0) }}

Slow Moving

{{ weakProduct?.name || '-' }}

{{ weakProduct?.qtySold || 0 }} item • Rp {{ formatPrice(weakProduct?.totalRevenue || 0) }}

Kategori Terlaris

{{ cat.name }}
{{ cat.percent }}%

Kategori paling kuat

{{ topCategory?.name || '-' }}

Jam Ramai

{{ hour.label }}
{{ hour.count }} trx
Jam transaksi akan muncul setelah order baru masuk

CRM Penjualan per Produk & Persentase

{{ dateFrom }} - {{ dateTo }}

Produk Terjual

{{ totalItemsSoldDetail }}

Total Penjualan Produk

Rp {{ formatPrice(totalRevenueDetail) }}

Produk Kontribusi Terbesar

{{ topSellingItems[0]?.name || '-' }}

{{ topSellingItems[0]?.revenuePercent || 0 }}% dari penjualan

No Produk Kategori Qty Terjual Harga Satuan Total Pendapatan Persentase
{{ index + 1 }}
{{ item.name }}
{{ getCategoryName(item.categoryId) }} {{ item.qtySold }} Rp {{ formatPrice(item.price) }} Rp {{ formatPrice(item.totalRevenue) }}
{{ item.revenuePercent }}%
Kontribusi dari total penjualan produk

Belum ada data penjualan pada periode ini

TOTAL {{ totalItemsSoldDetail }} Rp {{ formatPrice(totalRevenueDetail) }} 100%

Transaksi Terbaru

Order ID Tanggal Items Total Metode
#{{ order.orderNumber }} {{ order.date }} {{ order.items }} item Rp {{ formatPrice(order.total) }} {{ order.paymentType || order.method }}

Manajemen Bahan Baku

SKU Bahan Baku Satuan Stok Saat Ini Max Stok Status Aksi
{{ item.sku || generateSku('BB', item.id) }} {{ item.name }} {{ item.unit }}
{{ item.maxStock }} {{ item.stock < 10 ? 'Stok Rendah' : item.stock < 30 ? 'Stok Sedang' : 'Aman' }}

CRUD Resep & Komposisi

Kelola resep per produk: tambah bahan, edit qty, hapus bahan, dan simpan otomatis ke database.

{{ product.name }}

SKU: {{ product.sku || generateSku('PRD', product.id) }}

{{ getCategoryName(product.categoryId) }}

Bahan Baku:

  • {{ getIngredientName(entry.id) }}{{ getIngredientSku(entry.id) }} {{ entry.qty }} {{ getIngredientUnit(entry.id) }}
  • Belum ada bahan resep.

Kategori Produk

Tambah kategori baru untuk menu Selby Coffee. Kategori otomatis muncul di filter POS dan form produk.

{{ cat.name }}

ID: {{ cat.id }}

{{ products.filter(p => p.categoryId === cat.id).length }} produk

Manajemen Produk

Upload CSV Produk dari Luar

Gunakan kolom urutan, sku, name, categoryId, price, image, dan recipe_json. Saat import, urutan produk di POS mengikuti nomor urutan atau urutan baris CSV. SKU yang sama akan mempertahankan ID/recipe lama bila kolom recipe_json dikosongkan.

Gambar SKU Nama Produk Kategori Harga Aksi
{{ product.sku || generateSku('PRD', product.id) }} {{ product.name }} {{ getCategoryName(product.categoryId) }} Rp {{ formatPrice(product.price) }}

Riwayat Transaksi

Order ID Tanggal Items Total Metode Aksi
#{{ order.orderNumber }} {{ order.date }} {{ order.items }} item Rp {{ formatPrice(order.total) }} {{ order.paymentType || order.method }}

Belum ada riwayat transaksi

Pilih Metode Pembayaran

Scan QR Code di bawah ini untuk pembayaran

QRIS Code

Total: Rp {{ formatPrice(cartTotal * 1.1) }}

Menunggu Scan Kartu

Silakan proses {{ paymentMethod === 'CC' ? 'kartu kredit / CC' : 'kartu debit' }} pada mesin EDC

Rp {{ formatPrice(cartTotal * 1.1) }}
Kembalian: Rp {{ formatPrice(cashReceived - (cartTotal * 1.1)) }}

Pembayaran Berhasil!

Order #{{ lastOrderNumber }} telah diproses.

Setting Printer / Struk 58mm

POS web tidak bisa scan printer langsung. Pilih printer 58mm dari dialog print perangkat setelah printer sudah terpasang/ter-pairing.

POS web memakai dialog print bawaan browser, jadi nama printer tidak bisa dicari otomatis dari website. Jika printer 58mm tidak muncul: pairing/install dulu di Android/iOS/Windows, set sebagai printer/default, lalu saat dialog print pilih paper/roll 58mm. Mode IP di sini hanya catatan, bukan kirim RAW ESC/POS langsung.

{{ editingInventory ? 'Edit' : 'Tambah' }} Bahan Baku

SKU harus unik. Boleh dikosongkan, sistem akan membuat otomatis.

{{ editingProduct ? 'Edit' : 'Tambah' }} Produk

SKU harus unik. Boleh dikosongkan, sistem akan membuat otomatis.

{{ editingCategory ? 'Edit' : 'Tambah' }} Kategori

Boleh dikosongkan saat tambah; sistem akan buat otomatis dari nama.

CRUD Resep: {{ editingRecipe?.name }}

SKU Produk: {{ editingRecipe?.sku || generateSku('PRD', editingRecipe?.id) }}

{{ getIngredientName(ingId) }}

{{ getIngredientSku(ingId) }} • {{ getIngredientUnit(ingId) }}

{{ getIngredientUnit(ingId) }}
Belum ada bahan di resep ini.

+ Tambah Bahan ke Resep