SIMAK POS
Ikhtisar SIMAK POS
Aplikasi desktop kasir dan stok apotek: sinkron JWT ke SIMAK, cache SQLite, cetak struk ESC/POS, dan kerja offline.
SIMAK POS adalah aplikasi desktop (Electron) untuk kasir penjualan dan stok apotek. Ia berbicara ke SIMAK lewat REST + JWT, menyimpan katalog di SQLite lokal, dan mencetak struk ESC/POS dari proses utama.
Kapan memakai POS, bukan kasir web?
Pakai POS di meja obat bebas / counter apotek yang butuh pindai barcode, cetak struk thermal, dan tetap bisa menjual saat jaringan putus. Pembayaran kunjungan pasien tetap di kasir web SIMAK.
Peran yang boleh masuk
- Kasir — penjualan OTC, shift kasir, lihat stok, sinkronisasi, perangkat
- Apoteker — semua layar kasir plus barang datang, surat pesanan, mutasi, opname, void, buang antrian mati
- Admin — seluruh menu. Semua peran, termasuk Admin, wajib membuka shift sebelum checkout
Role di luar ketiga itu ditolak saat masuk.
Persiapan pertama
- Jalankan SIMAK (web) dan pastikan migrasi
047_pos_sync_client_uuid.sqlsudah diterapkan. - Buka SIMAK POS, isi URL dasar SIMAK (
http://localhost:3000atau URL cloud klinik). - Masuk sebagai Kasir, Apoteker, atau Admin. Setelah berhasil, POS menampilkan Menyiapkan katalog… dan menarik katalog sendiri.
- Jika tarikan gagal, pilih Coba lagi atau Lanjut tanpa katalog. Di Kasir yang kosong ada tombol Sinkronkan sekarang.
- Saat masuk online pertama, buat PIN 4–6 digit untuk perangkat ini.
- Buka Perangkat: printer USB terdeteksi otomatis (termasuk port COM di Windows untuk printer seperti Cashcow K31A). Jaringan (
host:9100) atau simpan ke berkas hanya cadangan.
Jendela minimum 1024 px. Aplikasi ini khusus desktop.
Layar
| Menu | Rute | Peran | Fungsi |
|---|---|---|---|
| Kasir | / | Kasir / Apoteker / Admin | Penjualan OTC, promo, kupon, poin, hold F6, void, cetak struk |
| Shift Kasir | /shift | sama | Buka/tutup shift, rekonsiliasi kas, hitungan cetak ulang |
| Stok Obat | /stok | sama | Katalog lokal, lot, badge ED |
| Barang Datang | /barang-datang | Apoteker / Admin | Terima lot ke cache (pool resep/otc), lalu dorong |
| Surat Pesanan | /surat-pesanan | Apoteker / Admin | PO, cetak 2 salinan, nomor faktur server |
| Mutasi Stok | /mutasi | Apoteker / Admin | Pindah lot resep ↔ OTC (total stok tetap) |
| Stok Opname | /opname | Apoteker / Admin | Hitung fisik per lot; konflik jika lot usang |
| Sinkronisasi | /sinkronisasi | semua | Outbox FIFO, konflik, tarik/dorong |
| Perangkat | /perangkat | semua | URL SIMAK, stasiun, printer, scanner |
Mode offline
Jika masuk online gagal karena jaringan dan PIN sudah ada, layar menampilkan kolom PIN. Lima kali salah mengunci PIN sampai masuk online lagi.
Dalam mode offline, penjualan tetap tersimpan lokal. Sinkronisasi ditahan. Indikator menampilkan Mode offline, bukan Online. Keluar akun tidak menutup shift di perangkat ini.
POS hanya menjual dari lot OTC lokal (FEFO). Penjualan, barang datang, mutasi, SP, dan opname masuk outbox lalu didorong FIFO saat online. Setelah katalog ditarik, lot buatan lokal dihapus lalu operasi yang belum tersinkron diputar ulang sekali, lalu saldo obat dihitung ulang dari lot. Opname yang tidak cocok dengan qty lot server ditandai konflik, bukan ditimpa. Penjualan yang ditolak server mengembalikan stok dari lot yang terpakai.
Menyiapkan diagram…
Paket instalasi
npm run build memakai electron-builder untuk macOS (host default), Windows NSIS, dan Linux AppImage.