10. Multi-Kasir Sync
Multi-Kasir memungkinkan beberapa HP beroperasi bersamaan dalam satu toko, dengan data tersinkronisasi via WiFi lokal. Cocok untuk toko yang butuh lebih dari 1 kasir saat jam sibuk.
Kelebihan:
- Tidak perlu internet (sync di jaringan lokal via WiFi/Hotspot)
- Real-time: transaksi langsung masuk ke Server
- Produk, harga, customer dikelola terpusat dari Server
- Port default:
8765
Info dari aplikasi: "Fitur ini memungkinkan beberapa HP/tablet digunakan sebagai kasir secara bersamaan dalam satu toko. Satu perangkat menjadi Server (kasir utama) yang menyimpan semua data, dan perangkat lainnya menjadi Client yang terhubung ke server melalui jaringan WiFi/Hotspot lokal. Data produk, stok, dan transaksi akan tersinkronisasi secara otomatis antar perangkat."
A. Konsep: 3 Mode
Buka Pengaturan โ Multi-Kasir. Halaman menampilkan card "Apa itu Multi-Kasir?", Status Saat Ini (mode yang sedang aktif), 3 card Pilih Mode, dan info Cara Penggunaan.

1. Standalone
"Perangkat berjalan mandiri tanpa sync". Mode default. HP berdiri sendiri tanpa sync. Pilih ini kalau Anda hanya pakai 1 HP.
2. Server
"Perangkat ini sebagai server utama". HP yang dijadikan pusat data. Semua produk, customer, dan transaksi disimpan di sini.
Cocok untuk:
- HP utama pemilik toko
- Device dengan storage lebih besar
- Device yang tidak bergerak-gerak (stationary)
3. Client
"Terhubung ke server". HP kasir tambahan yang mengambil data master dari Server dan mengirim transaksi baru ke Server.
Cocok untuk:
- HP kasir kedua/ketiga
- Tablet di meja resto (order type)
- HP kasir outlet tambahan
B. Setup Server (HP Utama)
Persiapan:
- HP utama sudah aktivasi & setup selesai
- Sudah ada produk, kategori, metode pembayaran (HP Server adalah sumber data)
- HP terhubung ke WiFi (bisa dari router atau hotspot HP lain)
Langkah:
- Buka Pengaturan โ Multi-Kasir
- Baca card "Apa itu Multi-Kasir?" untuk orientasi
- Tap card Server Mode โ muncul dialog Aktifkan Server Mode dengan input Port (default
8765) - Tap Aktifkan โ server mulai berjalan
- Muncul QR Code di halaman utama Multi-Kasir โ ini yang akan di-scan oleh HP Client
- Status card "Status Saat Ini" berubah: "Perangkat ini sebagai server utama"

โ ๏ธ Penting:
- Server harus tetap ON & terhubung WiFi selama Client beroperasi
- Jangan matikan HP Server saat masih ada Client aktif
- Edit produk/pengaturan hanya bisa dari Server (Client read-only)
C. Setup Client (HP Kasir Tambahan)
Persiapan:
- HP Client sudah install KasGo & aktivasi device
- HP Client terhubung ke WiFi yang sama dengan HP Server
- HP Server sudah dalam mode Server & menampilkan QR Code
Langkah:
- Di HP Client, buka Pengaturan โ Multi-Kasir
- Tap card Client Mode โ muncul dialog Hubungkan ke Server
- Pilih salah satu cara:
- Scan QR Code Server (recommended) โ tap tombol biru, scan QR yang ditampilkan di HP Server
- Input manual โ isi IP Address server, Port (default 8765), & Nama Server (Opsional)
- Tap Hubungkan
- Tunggu proses koneksi. Status akan berubah:
- "Menghubungkan..."
- "Terhubung ke [nama server]" (sukses)
- "Terputus" atau "Error: [pesan]" (gagal)
- Setelah terhubung, Client bisa langsung dipakai untuk kasir. Produk, kategori, customer otomatis di-fetch dari Server.

โ ๏ธ Mode Client bersifat Read-Only untuk data master:
9 menu otomatis terkunci di Client (dilakukan dari Server):
- Produk, Kategori, Stok
- Supplier, Pembelian (Purchase Order), Konsinyasi, Catatan Harga
- Pengeluaran, Laporan
Menu yang aktif di Client:
- Kasir, Riwayat, Pelanggan, Pre-Order, Pengaturan
D. Cara Kerja Sync
Komunikasi Server โ Client lewat HTTP API di port 8765. Client melakukan request ke Server saat butuh data atau saat melakukan transaksi.
Server โ Client (data master, fetch on-demand):
- Produk (termasuk varian, multi-unit, batch)
- Kategori
- Pelanggan (data + statistik)
- Metode pembayaran
- Pengaturan toko (logo, nama, alamat) + pengaturan bisnis & pajak
- Pengaturan loyalty
- Riwayat transaksi & shift milik server
Client โ Server (transaksi & mutasi):
- Transaksi penjualan baru
- Refund
- Pembayaran piutang customer
- Buka / Tutup shift
- Tambah / Edit pelanggan dari kasir (CRUD customer)
Poin loyalty earning & redemption dihitung otomatis di server saat transaksi customer di-attach โ tidak perlu sync terpisah.
Stok & Stock Reservation:
Stok dikelola terpusat di Server. Saat Client menambah produk ke keranjang yang stok-nya tinggal sedikit, sistem melakukan stock reservation untuk slot waktu tertentu โ mencegah oversell kalau Server & Client lain juga menjual produk yang sama bersamaan.
- Reserve dilakukan otomatis saat add to cart di Client
- Release otomatis kalau item dihapus dari keranjang atau transaksi dibatalkan
- Commit saat transaksi berhasil โ stok aktual di Server berkurang
- Kalau stok habis di tengah transaksi (mis. Server jual lebih dulu), Client dapat error "Stok tidak mencukupi"
E. Troubleshooting Multi-Kasir
Client tidak bisa connect ke Server:
- Pastikan kedua HP di WiFi/hotspot yang sama (SSID identik)
- Matikan & nyalakan WiFi di kedua HP
- Restart mode Server di HP utama (pilih Standalone dulu, lalu Server lagi)
- Cek IP Address yang dimasukkan benar (tap Scan QR Code lebih akurat daripada manual)
- Firewall/router mungkin block port
8765โ coba pakai hotspot dari HP Server sebagai WiFi alternatif - Jarak antar HP terlalu jauh atau sinyal WiFi lemah
Koneksi sering putus-nyambung:
- Sinyal WiFi tidak stabil โ cek bar sinyal di Android settings
- HP Server masuk sleep mode โ nyalakan Keep Screen On di developer options atau pasang charger
- Power saving / battery optimizer Android sering bunuh koneksi background โ buka Settings โ Apps โ KasGo โ Battery โ set ke Unrestricted
Produk baru di Server tidak muncul di Client:
- Tutup & buka ulang menu Kasir di Client untuk force re-fetch dari Server
- Atau pull-to-refresh di daftar produk
- Pastikan produk di Server sudah di-Simpan (bukan masih draft)
Stok di Client beda dengan Server:
- Pull-to-refresh di Kasir untuk fetch stok terbaru
- Cek apakah ada Client lain yang sedang reserve stok produk tersebut (display di Client lain)
- Cek apakah ada penyesuaian stok di Server yang belum di-fetch
Error "Stok tidak mencukupi" padahal stok ada:
- Stok mungkin sudah di-reserve oleh Client lain yang belum checkout. Tunggu sebentar atau coba ulang.
- Cek di Server apakah ada Client lain yang transaksi-nya pending