Skip to content

Store Schema (SQLite)

Store Router menggunakan SQLite (WAL mode) sebagai database lokal. File database tunggal (store.db) berisi semua data operasional toko.

Migration Files

Store schema dibangun dari 26 migration files (migrations/store/001 - 026). Berikut tabel-tabel kunci.

Event Log (001_eventlog.sql)

event_log -- Event Sourcing

Tabel paling penting di Store Router. Setiap perubahan data dicatat di sini dan di-sync ke Cloud Hub.

ColumnTypeDeskripsi
idINTEGER PKAuto-increment local ID
event_idTEXT UNIQUEUUIDv7 global unique
originTEXTSource identifier (e.g. "pos-01")
origin_typeTEXTpos, store-admin, mobile
store_idTEXTStore ID
typeTEXTEvent type (sale.completed, stock.adjusted)
sequenceINTEGERPer-origin sequence number
payloadTEXTJSON event data
crc32INTEGERIntegrity checksum
syncedINTEGER0=pending, 1=synced
sync_batch_idTEXTBatch ID saat claimed for sync

sequence_tracker -- Sequence per Origin

Tracking nomor sequence terakhir per origin untuk mendeteksi gaps.

POS Tables (004_pos.sql)

sessions -- Shift Kasir

ColumnTypeDeskripsi
session_idTEXT UNIQUEShift ID
store_idTEXTStore ID
pos_idTEXTPOS terminal ID
cashier_idTEXTCashier user ID
statusTEXTopen, closed
starting_cashREALKas awal
counted_cashREALKas akhir (blind count)
system_cashREALKas akhir (kalkulasi sistem)
cash_differenceREALSelisih kas

transactions -- Header Transaksi

ColumnTypeDeskripsi
transaction_idTEXT UNIQUEFormat: TXN-{STORE}-{DATE}-
session_idTEXT FKShift yang aktif
member_idTEXTMember ID (nullable)
statusTEXTopen, completed, cancelled
subtotalREALTotal sebelum diskon
discount_amountREALTotal diskon
discount_typeTEXTauto_promo, voucher, points, tier
total_amountREALsubtotal - discount
total_paidREALTotal yang dibayar
change_amountREALKembalian
rounding_amountREALPembulatan

transaction_items -- Line Items

Detail item per transaksi termasuk scan_method (barcode, rfid, manual) dan rfid_epc untuk tracking.

payments -- Multi-Payment

ColumnTypeDeskripsi
payment_idTEXT UNIQUEPayment ID
transaction_idTEXT FKHeader transaksi
methodTEXTcash, debit, credit, qris, ewallet
amountREALJumlah bayar
bank_nameTEXTBCA, Mandiri, BNI, etc
edc_photo_idTEXTFK ke foto bukti EDC
statusTEXTrecorded, verified, settled, reconciled, acknowledged

edc_photos -- Bukti Pembayaran Non-Tunai

Foto struk EDC/QRIS yang diambil saat transaksi.

transaction_flags -- Operational Flags

Flag seperti stock_minus, wrong_location, rfid_fallback, manual_entry untuk audit trail.

Inventory (003_inventory.sql)

reservations -- Stock Reservations

Reservation stok saat transaksi sedang berjalan (belum dibayar) untuk mencegah overselling.

SKU & Member Cache (004_pos.sql)

sku_cache -- Cache Produk Lokal

ColumnTypeDeskripsi
skuTEXT PKSKU produk
nameTEXTNama produk
priceREALHarga jual
categoryTEXTKategori
barcodeTEXTBarcode utama
stockINTEGERStok saat ini
locationTEXTfloor, warehouse

Cache ini di-update oleh Sync Agent saat menerima command product.sync dari Cloud Hub.

member_cache -- Cache Member Lokal

Data member yang di-cache untuk lookup cepat saat transaksi offline.

Cash Operations (007_cashops.sql)

TabelFungsi
petty_cashTransaksi kas kecil
bank_depositsSetoran ke bank
settlementSettlement akhir hari
cash_denominationsPecahan uang saat hitung kas

Reconciliation (005_reconciliation.sql)

reconciliation

3-way reconciliation: POS system cash vs physical count vs EDC/bank statements.

Transfer (009_transfer.sql)

TabelFungsi
transfer_ordersHeader transfer stok
transfer_itemsDetail item transfer

Receiving (011_receiving.sql)

TabelFungsi
receiving_ordersHeader penerimaan barang
receiving_itemsDetail item yang diterima

Store Session (012_store_session.sql)

Buka/tutup toko per hari. Harus ada store session aktif sebelum kasir bisa buka shift.

Opname (013_opname.sql)

TabelFungsi
opname_sessionsHeader stock opname
opname_itemsDetail count per SKU
opname_discrepanciesSelisih stok yang ditemukan

Idempotency (015_idempotency.sql)

idempotency_keys

Menyimpan idempotency keys untuk mencegah duplikasi request dari POS Electron.

Audit (017_audit.sql)

audit_log

Local audit log untuk semua operasi penting di toko.

RetailOS - Sistem ERP Retail Modern untuk Indonesia