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.id.substring(0,8) }} {{ trx.dateStr ? trx.dateStr.split(', ')[1] : '-' }}
{{ trx.customerName || 'Walk-in Customer' }}
{{ trx.paymentMethod || 'Tunai' }} 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 }}
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 PembayaranNo. InvoicePelangganNominal Masuk
{{ item.date }} {{ item.type }} {{ item.id }} {{ item.name }} Rp {{ formatNumber(item.amount) }}
Belum ada data pembayaran masuk pada tanggal ini.
Total Pengeluaran (Sesuai Filter)

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

METODE: {{ group.method }}
Total: Rp {{ formatNumber(group.total) }}
Waktu PembayaranNo. POSupplierNominal Keluar
{{ item.date }} {{ item.type }} {{ item.id }} {{ item.name }} Rp {{ formatNumber(item.amount) }}
Belum ada data pembayaran keluar pada tanggal ini.
Total Sisa Piutang (Tagihan di Luar)

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

No. InvoiceTgl InvoicePelangganTotal TagihanSudah DibayarSisa Piutang (AR)Aksi
{{ ar.id }} {{ ar.dateStr || '-' }} {{ getCustomerName(ar.customerId) || 'Umum' }} Rp {{ formatNumber(ar.total) }}
{{ ph.method }}: Rp {{ formatNumber(ph.amount) }}
Total: Rp {{ formatNumber(getActualPaid(ar)) }}
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 / InvoiceTgl POSupplierJatuh TempoTotal TagihanSudah DibayarSisa Hutang (AP)Aksi
{{ ap.id }} {{ (ap.dateStr || '').split(',')[0] }} {{ 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
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 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) || '-' }} {{ op.pic }} {{ op.note || '-' }} {{ op.status }}
Belum ada riwayat stok opname. Silakan buat dokumen opname baru.
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 Sisa Stok Batas Minimum Status
{{ alert.name }} {{ alert.sku }} {{ alert.currentStock }} {{ alert.minStock }} HABIS TOTAL SEGERA RESTOCK
Semua stok produk Anda dalam kondisi aman!
Tidak ada produk yang menyentuh batas minimum stok.
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 Harga (Rp) Stok Fisik Outlet {{ invOutletFilter ? 'Total Outlet Ini' : 'Total Keseluruhan' }}
HPP
(Otomatis/Manual)
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 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 Stok Awal Masuk (In) Keluar (Out) Stok Akhir Aksi / Rincian
{{ log.name }}
{{ log.variantName }}
{{ log.sku }} {{ log.displayDate }} {{ 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.
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.

No. Dokumen Tanggal Buat Rute Pengiriman PIC Status Aksi
{{ tf.id }} {{ tf.dateStr }} {{ getOutletName(tf.fromOutlet) }} {{ getOutletName(tf.toOutlet) }} {{ tf.pic || 'Admin' }} {{ tf.status }}
Belum ada riwayat transfer barang antar cabang.
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.
Distribusi Pendapatan per Kategori Produk
{{ c.name }}
Rp {{ formatNumber(c.omset) }}
Total Terjual: {{ c.qty }} Item
Belum ada data penjualan kategori.
Rekap Metode Pembayaran (Kasir)
{{ p.name }}
Rp {{ formatNumber(p.total) }}
Digunakan pada {{ p.count }} Transaksi
Belum ada riwayat metode pembayaran tercatat.
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)
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 }}
{{ item.qty }}x {{ item.name }} ({{ item.variantName }})
Pack
{{ fulfillmentOrders.pack.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 }})
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 || '-' }}
Completed
{{ fulfillmentOrders.completed.length }}
Kosong
{{ trx.id }}
{{ trx.fulfillmentUpdatedAt || trx.dateStr }}
{{ trx.customer }} {{ trx.customerPhone || '-' }}
{{ trx.trackingNumber }}