v0.1.9
Latest 31 Aug 2026 · 99.0 MB
Download
Invoices Monitoring Feature
In This release, you can see all possible invoices of current register.
Offline Mode
1. Pairing (no internet needed)
Admin downloads Metadata.zip from the website (Users Management) and imports it on the desktop app.
The zip carries the shop key, user, business info, and full product/menu dataset — verified by a checksum so it can't be tampered with.
The app is now "offline-paired": no server session, but fully usable for selling.
2. Selling offline
Every order (open/edit/complete/cancel) is saved locally and added to an upload queue (state.queue) — nothing touches the server yet.
Opening a register offline creates a local register (register.local = true) tracked entirely on-device.
3. Closing a register
Closing bakes that session's sales into a LocalRegisterRecord (opening/closing balance, items sold, and which queued tasks belong to it) and lists it on the Register Sell page, marked unpublished.
4. Publish (the part we just built)
Pressing Publish on a closed register sends its register data + queued tasks directly to the server (register/publish), instead of exporting a zip file.
The server verifies the shop key, rejects duplicates (by a unique export id), then replays each task through the normal order-create/confirm logic — creating a real cash_registers row (open → sales → close) and real sales, exactly as if they'd happened online.
On success: register marked "Published" and its tasks drop out of the local queue. On failure: the exact reason is shown in a highlighted red message so it's obvious something needs attention.
5. Timezone correctness
The desktop always exports true UTC timestamps. The importer converts the register's open/close time and each sale's actual time into the business's configured timezone (Asia/Karachi etc.) before saving — so the times shown on the website match what the desktop showed locally, both for the register and for each sold item's date, instead of showing the moment it happened to be published.