Koneksi Terputus (Mode Offline). Kasir tetap bisa digunakan, data akan disinkronkan otomatis nanti!

{{ viewTitles[currentView] }}

Akses: {{ userRole }}
Sistem Berhasil Diperbarui!
Queen POS Anda telah ditingkatkan ke versi terbaru v{{ currentAppVersion }}.
Ringkasan Bisnis
Pantau performa toko Anda secara real-time.
Omzet Hari Ini
Rp {{ formatNumber(dashData.omzetHariIni) }}
Transaksi Hari Ini
{{ dashData.transaksiHariIni }} Nota
Tagihan PO (Belum Lunas)
Rp {{ formatNumber(dashData.hutangPO) }}
Stok Menipis (Gudang)
{{ dashData.stokMenipis }} Item
Tren Penjualan (7 Hari Terakhir)
Produk Terlaris (Bulan Ini)
{{ index + 1 }}
{{ item.name }}
{{ item.qty }} Terjual
Belum ada data penjualan bulan ini.
Estimasi Laba Kotor
Hari Ini
Rp {{ formatNumber(dashData.labaHariIni) }}
Jam Teramai
{{ dashData.jamTeramai }}
Rata-Rata/Nota
Rp {{ formatNumber(dashData.rataRataTransaksi) }}
Pembayaran (Hari Ini)
5 Transaksi Terakhir
No. Nota Waktu Pelanggan Pembayaran Total
{{ trx.receiptNumber && trx.receiptNumber.length > 8 ? trx.receiptNumber : (trx.receiptNumber || 'INV') + '-' + String(trx.id || (index + 1)).padStart(3, '0').toUpperCase() }} {{ trx.dateStr ? trx.dateStr.split(', ')[1] : '-' }}
{{ trx.customerName || 'Walk-in Customer' }}
{{ trx.paymentMethod || 'Tunai' }} {{ trx.paymentStatus || (trx.sisaTagihan > 0 ? 'BELUM LUNAS' : 'LUNAS') }} Rp {{ formatNumber(trx.total) }}
Belum ada transaksi hari ini.
Laci Kasir Belum Aktif

Anda belum melakukan pembukaan shift atau laci kasir untuk cabang ini. Silakan masukkan uang modal awal terlebih dahulu untuk mulai berjualan.

Tampilkan Hasil Lainnya ({{ filteredProducts.length }} Produk)
Tidak ada produk atau varian yang sesuai.
Tidak ada produk yang sesuai.
{{ totalQty }}

Pengaturan Layar Pelanggan

Atur tampilan layar tablet yang menghadap ke pelanggan saat di meja kasir.

Buka Layar CDS
Media Promosi (Layar Kiri)
Tinggal copy-paste link YouTube promosi Anda di sini. Video akan otomatis diputar berulang tanpa suara (mute).
Pratinjau {{ pendingCdsFiles.length }} Gambar Terpilih
{{ index + 1 }}
Tips: Anda bisa mengunggah banyak gambar sekaligus atau mengambil file lama dari Galeri.
Pratinjau Video {{ pendingCdsFiles[0] ? pendingCdsFiles[0].name : '' }}
Maksimal 25MB untuk MP4.
Galeri Media Cloud

Memuat data dari server...

Belum ada foto yang tersimpan.

{{ formatBytes(file.size) }}

Belum ada video yang tersimpan.

{{ formatBytes(file.size) }}
Teks ini akan tampil berjalan (marquee) di bagian bawah layar pelanggan.
Cara Pasang di Tablet
  1. Siapkan Tablet/iPad. Hubungkan ke WiFi toko Anda.
  2. Buka Google Chrome/Safari di Tablet tersebut.
  3. Ketik/Salin URL komplit ini di browser Tablet Anda:
    {{ getSubdomainName() }}.queenpos.id/cds.html?company={{ getMyCompanyId ? getMyCompanyId() : '' }}&outlet={{ appSettings.selectedReceiptOutletId || 'global' }}
  4. Setelah halaman terbuka, jadikan Full Screen.
  5. Tablet otomatis akan terhubung dengan Kasir Anda secara nirkabel (Real-time).
Riwayat Pembelian & PO
No. Invoice / PO Tanggal Cabang PIC Supplier Status Barang Status Bayar Pembayaran Total Pembelian Aksi
{{ po.id }} {{ po.dateStr }} {{ getOutletName(po.outletId) || 'Gudang Pusat' }} {{ po.pic || po.userName || 'Sistem' }} {{ getSupplierName(po.supplierId) }} Telah Diterima Retur Sebagian Retur Full Menunggu Brg Tukar Menunggu Kedatangan {{ po.paymentStatus === 'LUNAS' ? 'Lunas' : 'Hutang / Belum Lunas' }}
Sisa: Rp {{ formatNumber(po.total - (po.paidAmount || 0)) }}
Rp {{ formatNumber(po.total) }}
Belum ada riwayat pembelian sesuai filter.
Manajemen Keuangan & Arus Kas
Total Pemasukan (Sesuai Filter)

Rp {{ formatNumber(financeSalesPayments.reduce((sum, g) => sum + g.total, 0)) }}

METODE: {{ group.method }}
Total: Rp {{ formatNumber(group.total) }}
Waktu Pembayaran No. Invoice Outlet Pelanggan Nominal Masuk
{{ item.date }} {{ item.type }} {{ item.id }} {{ getOutletName(item.outletId) || '-' }} {{ item.name }} Rp {{ formatNumber(item.amount) }}
Belum ada data pembayaran masuk pada filter ini.
Total Pengeluaran (Sesuai Filter)

Rp {{ formatNumber(financePurchasePayments.reduce((sum, g) => sum + g.total, 0)) }}

METODE: {{ group.method }}
Total: Rp {{ formatNumber(group.total) }}
Waktu Pembayaran No. PO Outlet Supplier Nominal Keluar
{{ item.date }} {{ item.type }} {{ item.id }} {{ getOutletName(item.outletId) || '-' }} {{ item.name }} Rp {{ formatNumber(item.amount) }}
Belum ada data pembayaran keluar pada filter ini.
Total Sisa Piutang (Tagihan di Luar)

Rp {{ formatNumber(financeARList.reduce((sum, ar) => sum + getSisaTagihan(ar), 0)) }}

No. Invoice Tgl Invoice Outlet Pelanggan Total Tagihan Sudah Dibayar Sisa Piutang (AR) Aksi
{{ ar.id }} {{ ar.dateStr || '-' }} {{ getOutletName(ar.outletId) || '-' }} {{ getCustomerName(ar.customerId) || 'Umum' }} Rp {{ formatNumber(ar.total) }}
{{ ph.method }}: Rp {{ formatNumber(ph.amount) }}
Total: Rp {{ formatNumber( getPaymentBreakdown(ar) .filter(p => !String(p.method).toUpperCase().includes('HUTANG')) .reduce((sum, p) => sum + Number(p.amount), 0) ) }}
Rp {{ formatNumber(getSisaTagihan(ar)) }}
Hore! Tidak ada pelanggan yang berhutang (Piutang Bersih).
Total Sisa Hutang ke Supplier

Rp {{ formatNumber(financeAPList.reduce((sum, ap) => sum + getSisaTagihan(ap), 0)) }}

No. PO / Invoice Tgl PO Outlet Supplier Jatuh Tempo Total Tagihan Sudah Dibayar Sisa Hutang (AP) Aksi
{{ ap.id }} {{ (ap.dateStr || '').split(',')[0] }} {{ getOutletName(ap.outletId) || '-' }} {{ getSupplierName(ap.supplierId) }} {{ ap.dueDate || 'Belum Diatur' }} Rp {{ formatNumber(ap.total) }}
{{ ph.method }}: Rp {{ formatNumber(ph.amount) }}
Total: Rp {{ formatNumber(getActualPaid(ap)) }}
Rp {{ formatNumber(getSisaTagihan(ap)) }}
Bagus! Toko Anda sedang tidak memiliki hutang ke Supplier manapun.

Pengaturan Register Kasir

Kelola modal awal, pengeluaran, dan tutup kasir per cabang.

Perangkat & Info Karyawan Cabang Modal Awal Pengeluaran Status Aksi
Belum ada riwayat shift kasir.
{{ reg.registerName || 'Kasir Utama' }}
{{ reg.cashierName }}
{{ reg.cashierEmail || '-' }}
{{ reg.cashierPhone || '-' }}
Buka: {{ reg.openTimeStr }}
Tutup: {{ reg.closeTimeStr }}
{{ getOutletName(reg.outletId) }}
Rp {{ formatNumber(reg.startingCash) }}
Rp {{ formatNumber(reg.totalExpenses || 0) }}
AKTIF DITUTUP
Semua riwayat shift telah ditampilkan.
Master Metode Pembayaran
Kelola Kas, Transfer, QRIS, EDC, VA beserta MDR & Surcharge
Nama Metode & Detail Kategori Potongan MDR Surcharge (Customer) Status Aksi
Belum ada metode pembayaran.
Klik tombol Tambah Metode untuk memulai.
Pengaturan Aturan Inventory (Stok)

Atur bagaimana sistem menangani dan membatasi penjualan barang berdasarkan ketersediaan stok fisik.

Negative Inventory (Penjualan Tanpa Stok)

Jika saklar ini DIHIDUPKAN, kasir di menu POS tetap bisa menginput dan menjual barang meskipun sisa stoknya 0. Sisa stok di sistem akan otomatis berubah menjadi minus (-).
Jika saklar ini DIMATIKAN, sistem akan memblokir kasir jika mencoba memasukkan barang yang stoknya sudah habis.

Pengaturan Penomoran Invoice Otomatis

Atur prefix/awalan dan pola penomoran untuk transaksi kasir (POS) maupun Purchase Order (PO).

Invoice POS (Penjualan)
Invoice PO (Pembelian)
Pengaturan Struk (Receipt) & Cetak

Atur tampilan cetakan, sosial media, marketplace, dan Syarat & Ketentuan (T&C).

Pilih nama cabang jika cabang tersebut memiliki Nomor WA, Instagram, atau Syarat & Ketentuan yang berbeda dari pusat.
Informasi & Logo Toko
Disarankan gambar hitam-putih (.jpg/.png) maksimal 1 MB.
Akan ditampilkan di sebelah kiri total tagihan pada Invoice A4.
Kontak & Marketplace
Sh
Tp
Lz
Bl
Catatan Kaki & Aturan (T&C)
Jika aktif, struk akan menampilkan QR Code yang bisa di-scan pelanggan pakai HP.
Promo Khusus E-Receipt (Digital)

Tampilkan banner dan diskon khusus ini hanya di halaman Struk Digital (E-Receipt) yang dilihat pelanggan dari HP mereka.

Live Preview ({{ appSettings.defaultPrintSize || '80mm' }})
{{ appSettings.storeName || 'NAMA TOKO ANDA' }}
{{ appSettings.storeAddress || 'Alamat Toko Belum Diisi' }}
Telp: {{ appSettings.storePhone }}
Inv: INV-20260604-1 04/06/2026 17:03
Kasir: Admin Plg: Herman
Baju Kaos Pria Motif Tanjiro
Varian: Maroon - M
5 pcs x 95.000 475.000
Subtotal475.000
PPN (Tax)52.250
TOTAL527.250
DIBAYAR527.250
KEMBALI0
INFO RETUR / REFUND
[RETUR] Baju Kaos... (1x) - Rp 95.000
TOTAL REFUND: - Rp 95.000
Syarat & Ketentuan:
{{ appSettings.termsAndConditions }}
Scan untuk e-Receipt
{{ appSettings.socialWa }}
{{ appSettings.socialIg }}
{{ appSettings.socialFb }}
{{ appSettings.socialTiktok }}
Tp: {{ appSettings.socialTokped }}
Sh: {{ appSettings.socialShopee }}
Lz: {{ appSettings.socialLazada }}
Bl: {{ appSettings.socialBlibli }}
{{ appSettings.receiptFooter || 'Dokumen ini dicetak otomatis oleh Sistem ERP Quinsah. Terima Kasih atas kepercayaan Anda.' }}
{{ appSettings.storeName || 'NAMA TOKO ANDA' }}
{{ appSettings.storeAddress || 'Alamat Toko Belum Diisi' }}
Telp: {{ appSettings.storePhone }}
INVOICE
# INV-20260604-61720
Tanggal: 4/6/2026, 17.03.15
DITERBITKAN OLEH:
Kasir: Admin
Cabang: Quinsah Seni Budaya
DITAGIHKAN KEPADA:
Herman
Telp: 081294114812
Alamat: -
No Deskripsi Produk SKU Qty Harga Satuan Total
1
Baju Kaos Pria Motif Tanjiro
Varian: Maroon - M
BKT001-MAROON-M 5 pcs Rp 95.000 Rp 475.000
Info Pembayaran:
{{ appSettings.storePaymentInfo }}
Subtotal Produk Rp 475.000
PPN (Tax) Rp 52.250
TOTAL TAGIHAN Rp 527.250
DIBAYAR (QRIS) Rp 527.250
Kembalian Rp 0
INFORMASI RETUR / REFUND
[RETUR] Baju Kaos Pria Motif Tanjiro (1 pcs)
Alasan: Tukar ukuran / Cacat
- Rp 95.000
TOTAL REFUND: - Rp 95.000
Syarat & Ketentuan:
{{ appSettings.termsAndConditions }}

Penerima / Pelanggan,

Herman
Scan untuk e-Receipt

Hormat Kami,

Quinsah Collection
{{ appSettings.receiptFooter || 'Dokumen ini dicetak otomatis oleh Sistem ERP Quinsah. Terima Kasih atas kepercayaan Anda.' }}
WA: {{appSettings.socialWa}} IG: {{appSettings.socialIg}} FB: {{appSettings.socialFb}} TikTok: {{appSettings.socialTiktok}} Shopee: {{appSettings.socialShopee}} Tokopedia: {{appSettings.socialTokped}} Lazada: {{appSettings.socialLazada}} Blibli: {{appSettings.socialBlibli}}
Pengaturan Hardware Printer

Hubungkan aplikasi kasir secara langsung ke mesin printer Bluetooth tanpa aplikasi tambahan.

Koneksi Printer Bluetooth (Thermal)
Status Perangkat: Terhubung: {{ printerDevice.name }} Belum Terhubung
Gunakan browser Chrome di Android/Tablet untuk menghubungkan printer secara langsung. Pastikan Bluetooth & GPS (Lokasi) sudah menyala.
Mendukung Panda PRJ-R80B dan ESC/POS lainnya
Pengaturan Metode HPP (Modal)

Pilih bagaimana sistem menghitung Harga Pokok Penjualan (HPP) saat terjadi transaksi. Metode ini menentukan besaran margin laba pada laporan penjualan Anda.

Master Satuan Produk (UOM)
Nama SatuanAksi
{{ u.name }}
Data kosong.
Master Tag Produk Khusus
Nama TagAksi
{{ t.name }}
Data kosong.
Master Grup Identifier (Modifier)

Buat grup opsi tambahan seperti Topping, Level Pedas, Packaging, dll.

Nama Grup Identifier Aksi
{{ ig.name }}
Belum ada Grup Identifier.
Klik "Tambah Grup" untuk mulai membuat Topping, Varian Rasa, dll.
Level Otorisasi Jabatan (Hak Akses)
{{ isEditingRole ? 'Edit Matriks Hak Akses' : 'Buat Level Akses Baru' }}
Modul Sistem Lihat (Read) Ubah/Hapus (Write)
{{ mod.name }}
IDNama JabatanAksi
#{{ role.id }} {{ role.name }}
Manajemen Kredensial User
{{ isEditingUser ? 'Edit Data User' : 'Registrasi User Baru' }}
Nama KaryawanEmailRole / JabatanAksi
{{ u.namaLengkap }} {{ u.email }} {{ getRoleName(u.roleId) }}
Daftar Induk Produk
Kode Produk Foto Nama Produk Daftar Varian (Klik Lihat Detail) HPP (Modal) Hrg Jual Aksi
{{ p.sku || 'N/A' }} {{ p.name || '-' }} Discontinue
{{ t }}
{{ getCategoryPath(p) }}
- Tanpa Varian -
{{ v.name || v.attributes }} ({{ v.variantSku || '-' }})
{{ getProductPriceRange(p, 'hpp') }}
{{ getProductPriceRange(p, 'sell') }}
Promo Induk Aktif
Tidak ada produk sesuai pencarian.
Database SKU Varian
FotoInduk & KategoriNama VarianKode VarianHPP (Modal)Harga Jual{{ catalogVariantOutletFilter ? 'Stok Outlet' : 'Stok Total' }}
{{ v.parentName }}
{{ v.categoryPath }}
{{ v.name }} {{ v.sku }} Rp {{ formatNumber(v.hpp) }}
Rp {{ formatNumber(v.base) }}
Rp {{ formatNumber(v.sell) }}
{{ getDisplayVariantStock(v) }}
Belum ada varian produk sesuai filter.
Struktur Pohon Kategori
KategoriLevelAksi
{{ cat.name }} Level {{ cat.treeLevel + 1 }}
Data kosong.
Konfigurasi Label Barcode
Produk Tgl Expired Jumlah Aksi
{{ item.name }}
{{ item.variantName }}
{{ item.sku }}
Belum ada antrean produk.
Live Preview Hasil Cetak
Tampilan pratinjau (sesuai ukuran asli) akan muncul di sini.
Riwayat Stok Opname
ID Dokumen Waktu Eksekusi Lokasi Cabang PIC (Petugas) Catatan Khusus Status Aksi
{{ op.id }} {{ op.dateStr }} {{ getOutletName(op.outletId) || 'Global' }} {{ op.pic }} {{ op.note || '-' }} {{ op.status }}
Data tidak ditemukan atau belum ada riwayat stok opname.
Form Penyesuaian Stok (Opname)

Samakan stok di sistem dengan fisik di gudang/toko.

Silakan Pilih Cabang / Outlet di atas terlebih dahulu untuk memunculkan dan mengisi Stok Fisik.
Produk / Nama Varian SKU Stok Sistem Stok Fisik Aktual Catatan / Keterangan
Tidak ada data produk yang sesuai filter.
Daftar Produk yang Membutuhkan Restock
Produk / Varian SKU {{ alertOutletFilter ? 'Sisa Stok Cabang' : 'Sisa Stok Global' }} Rincian per Cabang Batas Minimum Status
{{ alert.name }} {{ alert.sku }} {{ alert.currentStock }}
{{ out.name }} {{ (alert.outletStocks && alert.outletStocks[out.id]) ? alert.outletStocks[out.id] : 0 }}
{{ alert.minStock }} HABIS TOTAL SEGERA RESTOCK HAMPIR HABIS
Semua stok produk Anda dalam kondisi aman!
Tidak ada produk yang menyentuh batas minimum stok pada filter ini.
Total Aset (HPP)

Rp {{ formatNumber(totalAsetStok) }}

Menyesuaikan filter di bawah
Total Potensi Omset (Hrg Jual)

Rp {{ formatNumber(totalPotensiOmset) }}

Menyesuaikan filter di bawah
Produk / Nama Varian SKU Harga (Rp) Stok Fisik Outlet {{ invOutletFilter ? 'Total Outlet Ini' : 'Total Keseluruhan' }}
HPP
[ MODE: {{ appSettings.hppMethod }} ]
[ MODE: STANDARD ]
Jual {{ out.name }} -
Tidak ada data produk/varian yang sesuai filter.
Pilih Cabang Terlebih Dahulu

Fitur Alokasi Stok digunakan untuk memantau barang yang sedang berada di meja kasir. Silakan pilih spesifik 1 cabang pada filter di atas untuk melihat datanya.

Produk / Nama Varian SKU Outlet Analisa Alokasi Stok Outlet Terpilih
Stok Fisik (Asli Gudang) Ditahan (Masuk Kasir) Tersedia (Bisa Dijual)
Tidak ada data produk/varian yang sesuai filter.
Waktu Ref. Transaksi Cabang (Outlet) Nama Item (SKU) Qty Status User / PIC
{{ log.dateStr }} {{ log.refId }} {{ log.outletName || 'Gudang Pusat' }}
{{ log.productName }} {{ log.sku }}
{{ log.variantName }} {{ log.sku }}
{{ log.qtyChange > 0 ? '+'+log.qtyChange : log.qtyChange }} {{ log.type === 'OUT' ? 'KELUAR' : (log.type === 'ADJUST' ? 'SESUAI' : 'MASUK') }} {{ log.userName || log.cashierName || 'Sistem' }}
Belum ada riwayat mutasi / Sesuai filter.
Nama Produk & Varian SKU Tanggal Lokasi (Cabang) Stok Awal Masuk (In) Keluar (Out) Stok Akhir Aksi / Rincian
{{ log.name }}
{{ log.variantName }}
{{ log.sku }} {{ log.displayDate }} {{ stockCardOutlet ? (outlets.find(o => o.id === stockCardOutlet)?.name || 'Unknown') : 'Semua (Global)' }} {{ log.stokAwal }} {{ log.masuk }} {{ log.keluar }} {{ log.stokAkhir }} -
Tidak ada data produk/kartu stok sesuai filter.
Database Pelanggan
NamaKontak & AlamatMembership (Diskon)Aksi
{{ c.name }} {{ c.phone }}
{{ c.address || '-' }}
{{ getMembershipName(c.membershipId) }} ({{ getMembershipDiscount(c.membershipId) }}%)
Tidak ada pelanggan yang sesuai dengan pencarian Anda.
Tier Membership
Nama TierDiskon (%)Aksi
{{ m.tierName }}{{ m.discountPercent }}%
Database Supplier (Pemasok)
Nama PemasokNo. Telp/WAAlamat PemasokAksi
{{ s.name }} {{ s.phone }} {{ s.address || '-' }}
Tidak ada data supplier yang sesuai dengan pencarian Anda.
Semua Ulasan & Rating Pelanggan
Rata-rata Rating

{{ averageRating }}

Berdasarkan {{ totalReviews }} Ulasan
Distribusi Bintang
{{ star }}
{{ getRatingCount(star) }}
{{ review.customerName || 'Pelanggan' }}
{{ getCustomerPhone(review) }}
Inv: {{ review.invoiceId }}
{{ getOutletNameForReview(review) }}

"{{ review.review || 'Pelanggan hanya memberikan rating tanpa teks ulasan.' }}"

{{ review.date }}
Tidak ada data ditemukan

Belum ada ulasan atau tidak ada yang cocok dengan kriteria filter Anda.

Manajemen Outlet & Pajak
Kode Nama Outlet Pajak (PPN) Service Charge Desain Struk Aksi
{{ o.code }} {{ o.name }}
{{ o.location }}
{{ o.taxPercent || 0 }}% {{ o.serviceChargePercent || 0 }}%
Riwayat Transfer Barang

Pantau pergerakan stok antar cabang/gudang.

s/d
No. Dokumen Tanggal Buat Rute Pengiriman PIC Status Aksi
{{ tf.id }} {{ tf.dateStr }} {{ getOutletName(tf.fromOutlet) }} {{ getOutletName(tf.toOutlet) }} {{ tf.pic || 'Admin' }} {{ tf.status }}
Data tidak ditemukan atau belum ada riwayat transfer.
Draft Pengajuan Transfer
Silakan Pilih Cabang Asal dan Tujuan terlebih dahulu.
Produk / Nama Varian SKU Stok Tersedia Qty Diajukan
Laporan Keuangan
Analitik Omset, HPP, Laba Rugi, dan Performa Cabang
Omset Bersih
Rp {{ formatNumber(reportFinancialSummary.totalOmset) }}
{{ reportFinancialSummary.totalTrx }} Transaksi
Modal (HPP)
Rp {{ formatNumber(reportFinancialSummary.totalHpp) }}
Nilai stok keluar
Laba Kotor
Rp {{ formatNumber(reportFinancialSummary.labaBersih) }}
Omset dikurangi HPP
Margin
{{ reportFinancialSummary.marginRataRata.toFixed(1) }}%
Persentase untung
Rincian per Transaksi
Berdasarkan Filter
INVOICE & WAKTU CABANG OMSET BERSIH MODAL HPP LABA (PROFIT) MARGIN
{{ trx.id }}
{{ trx.dateStr }}
{{ getOutletName(trx.outletId) || 'Global' }} Rp {{ formatNumber(trx.omsetReport !== undefined ? trx.omsetReport : trx.total) }} Rp {{ formatNumber(trx.totalHppNota) }} Rp {{ formatNumber(trx.profit) }} {{ (trx.margin || 0).toFixed(1) }}%
Belum ada riwayat keuangan pada filter ini.
Top 10 Produk Paling Cepat Laku (Berdasarkan Qty)
#{{ index + 1 }} {{ p.name }}
{{ p.qty }} Terjual
Omset: Rp {{ formatNumber(p.omset) }}
Belum ada data penjualan produk.
Rank Nama Produk / Varian Qty Terjual Total Omset
#{{ index + 1 }} {{ p.name }} {{ p.qty }} Rp {{ formatNumber(p.omset) }}
Belum ada data penjualan.
Distribusi Pendapatan per Kategori Produk
{{ c.name }}
Rp {{ formatNumber(c.omset) }}
Total Terjual: {{ c.qty }} Item
Belum ada data penjualan kategori.
Rank Nama Kategori Qty Terjual Total Omset
#{{ index + 1 }} {{ c.name }} {{ c.qty }} Rp {{ formatNumber(c.omset) }}
Belum ada data kategori.
Rekap Metode Pembayaran (Kasir)
{{ p.name }}
Rp {{ formatNumber(p.total) }}
Digunakan pada {{ p.count }} Transaksi
Belum ada riwayat metode pembayaran tercatat.
Rank Metode Pembayaran Jumlah Transaksi (Struk) Total Nominal Masuk
#{{ index + 1 }} {{ p.name }} {{ p.count }}x Transaksi Rp {{ formatNumber(p.total) }}
Belum ada riwayat pembayaran.
Frekuensi Transaksi per Jam (00:00 - 23:59)
Jam {{ String(h.jam).padStart(2, '0') }}:00
{{ h.count }} Transaksi
Rp {{ formatNumber(h.omset) }}
{{ String(h.jam).padStart(2, '0') }}
Semakin tinggi tiang warna kuning, semakin padat jumlah transaksi di jam tersebut.
(Geser grafik ke kanan/kiri untuk melihat jam lainnya) (Arahkan kursor Anda ke tiang grafik untuk melihat detailnya)
Rentang Waktu (Jam) Jumlah Transaksi Total Omset
{{ String(h.jam).padStart(2, '0') }}:00 - {{ String(h.jam).padStart(2, '0') }}:59 {{ h.count }}x Rp {{ formatNumber(h.omset) }}
Belum ada data transaksi untuk dianalisis.
Top 20 Pelanggan Paling Loyal (Member)
Rank {{ index + 1 }} {{ c.name }} ( {{ c.phone }})
Rp {{ formatNumber(c.omset) }}
Kunjungan/Transaksi: {{ c.count }}x
Belum ada data pelanggan spesifik tercatat.
Rank Nama Pelanggan & Kontak Jumlah Kedatangan Total Belanja
#{{ index + 1 }}
{{ c.name }}
{{ c.phone }}
{{ c.count }}x Rp {{ formatNumber(c.omset) }}
Belum ada riwayat belanja pelanggan.
Total Promo / Diskon Diberikan

Rp {{ formatNumber(analyticsData.taxDiscount.totalDiskonItem + analyticsData.taxDiscount.totalDiskonGlobal) }}

Diberikan pada {{ analyticsData.taxDiscount.trxWithDiscount }} Transaksi
Total PPN / Pajak Terkumpul

Rp {{ formatNumber(analyticsData.taxDiscount.totalPajak) }}

Dipungut dari {{ analyticsData.taxDiscount.trxWithTax }} Transaksi
Daftar Transaksi dengan Promo atau Pajak
No. Invoice & Tanggal Pelanggan Diskon Diberikan Pajak Dipungut
{{ trx.id }}
{{ trx.dateStr }}
{{ trx.customer || 'Umum' }} Rp {{ formatNumber(Number(trx.discountAmt || 0) + Number(trx.globalDiscountAmt || 0)) }} Rp {{ formatNumber(trx.taxAmt || trx.taxAmount || 0) }}
Tidak ada transaksi yang dikenakan pajak atau promo diskon pada filter ini.
Riwayat Transaksi Penjualan (POS)
No. Inv Waktu Cabang Kasir / PIC Pelanggan Tipe / Kirim Status Pembayaran Total Aksi Lanjutan
{{ trx.id }} {{ trx.dateStr }} {{ getOutletName(trx.outletId) || 'Global/Pusat' }} {{ trx.cashierName || trx.cashier }} {{ trx.customer }}
Kirim PO Store
{{ trx.paymentStatus || 'LUNAS' }}
{{ trx.paymentMethod }}: Rp {{ formatNumber(trx.firstPayment !== undefined ? trx.firstPayment : trx.amountReceived) }}
{{ sp.method }}: Rp {{ formatNumber(sp.amount) }}
{{ pay.method }}: Rp {{ formatNumber(pay.amount) }}
Sisa: Rp {{ formatNumber(trx.total - trx.amountReceived) }}
Rp {{ formatNumber(trx.total) }}
Belum ada transaksi / Data tidak ditemukan sesuai filter.
Fulfillment & Pengiriman
{{ selectedOrders.length }} Terpilih
New
{{ fulfillmentOrders.new.length }}
Kosong
{{ trx.id }}
{{ trx.fulfillmentUpdatedAt || trx.dateStr }}
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ getServiceTime(trx.fulfillmentUpdatedAt || trx.dateStr).label }}
{{ item.qty }}x {{ item.name }} ({{ item.variantName }})
Pick
{{ fulfillmentOrders.pick.length }}
Kosong
{{ trx.id }}
{{ trx.fulfillmentUpdatedAt || trx.dateStr }}
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ getServiceTime(trx.fulfillmentUpdatedAt || trx.dateStr).label }}
CEK BARANG (SEDANG DISIAPKAN) :
{{ item.qty }}x {{ item.name }} ({{ item.variantName }})
Ada barang kosong, hubungi pelanggan lalu Tunda (Hold).
Pack
{{ fulfillmentOrders.pack.length }}
Kosong
{{ trx.id }}
{{ trx.fulfillmentUpdatedAt || trx.dateStr }}
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ getServiceTime(trx.fulfillmentUpdatedAt || trx.dateStr).label }}
BARANG DIPACKING :
{{ item.qty }}x {{ item.name }} ({{ item.variantName }})
Ship
{{ fulfillmentOrders.ship.length }}
Kosong
{{ trx.id }}
{{ trx.fulfillmentUpdatedAt || trx.dateStr }}
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ trx.courierName }}: {{ trx.trackingNumber }}
{{ getServiceTime(trx.fulfillmentUpdatedAt || trx.dateStr).label }}
{{ item.qty }}x {{ item.name }} ({{ item.variantName }})
Hold
{{ fulfillmentOrders.hold ? fulfillmentOrders.hold.length : 0 }}
Kosong
{{ trx.id }}
Tertunda
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ item.qty }}x {{ item.name }} ({{ item.variantName }})
Alasan: {{ trx.holdNote }}
Completed
{{ fulfillmentOrders.completed.length }}
Kosong
{{ trx.id }}
{{ trx.fulfillmentUpdatedAt || trx.dateStr }}
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ trx.trackingNumber }}