Version 2.1.0
Latest 9 September 2026Off-site backup, three screens the counter was missing, and a run of fixes that each cost somebody real time at the till — a case-sensitive medicine search, a blank printed slip, a saved change that reappeared as the old value.
Added — backup
- Automatic backup to Google Drive. Connect the pharmacy’s own Google account and keep a copy of the active database in its Drive — hourly, daily, weekly or monthly — with older copies rotated out after each successful upload, keeping however many you asked for. If the computer was switched off when a backup was due, it runs shortly after the application next starts and says it was late rather than pretending it was on time. Database tab → Auto Backup…
- Said plainly, because it should not be buried: a copy of the whole database leaves the building. It goes to an account the pharmacy owns and controls, PharmaDesk asks only for access to the files it creates itself so it can see nothing else in that Drive, and the stored sign-in never leaves the machine — it is locked to the signed-in Windows user.
- Restore from Drive. Lists every backup in the folder and brings one back as an additional database. The database in use is never touched; switching to a restored copy stays a separate, deliberate act on the Database tab. Someone restoring a backup is usually in the middle of a bad day, and a button that silently overwrote the live data would be one keystroke from making it much worse.
- The backup outcome is reported on the Service tab, in red if it failed. An unnoticed failure is how a pharmacy discovers at the worst possible moment that it has no backups.
Added — at the counter
- A search box on the Sales screen — find a bill by receipt number or customer name. The screen previously offered only two date pickers and a pending filter, so looking up a receipt meant paging through a day, on the very screen the cashier’s “Find a Receipt” tile lands on.
- Collect Payment on each pending bill on the dashboard. The cashier’s queue listed the bills waiting for payment and offered no way to act on any of them.
- A Today’s Takings breakdown. The cashier’s tile now opens a per-bill list split by payment mode with a total — what is actually needed when the cash drawer disagrees with the screen.
Changed
- Editing an unpaid bill is no longer restricted to the administrator. Every counter role may correct a bill nobody has been paid for. A settled bill stays frozen for everyone, the administrator included — adjusting one is still what a sale return is for. Deleting a bill remains administrator-only.
- The Sales and Pending Bills screens now treat Edit and Delete as separate permissions rather than one.
- The dashboard’s shortcut tiles are grouped under a heading, Everyday tasks.
Fixed
- Medicine search was case-sensitive. Typing
panadolfound nothing when the catalogue saidPanadol, on both the New Sale and New Purchase screens. Every search box in the product had the same fault — medicines, sales, stock, suppliers and users — and all are fixed. - Print Slip produced a blank page after saving a sale, and Print on a past receipt printed the sales list instead of the receipt. Both now print a proper slip for the bill, which states clearly when a bill has not been paid, so a hand-over docket cannot be mistaken for a receipt.
- A saved change could be followed by the screen showing the old value. On list screens a slow background refresh could land after a save and repaint stale data over it — most visibly on Suppliers, where “Supplier updated.” appeared above a card still showing the previous details.
- A backup file stayed locked after it was written, so the next thing to touch it — the Drive upload, or simply moving the file — failed with “the process cannot access the file because it is being used by another process”. It went unnoticed for as long as every caller wrote a backup and walked away; the manual backup on the Database tab was affected too, and the file it produced could not be moved or deleted until PharmaDesk was closed.
- Importing a database used a plain file copy, which is unsafe for a database in use: the most recent transactions can sit in a companion file, so the copy opened cleanly while quietly missing the newest rows. Import now takes a proper consistent copy, and refuses a database written by a newer version of PharmaDesk rather than opening it and misbehaving.
Packaging
- The package is now self-contained — PharmaDesk no longer needs anything installed on the machine first. Every release up to 2.0.2 needed a separate runtime to already be present, which a Store package cannot bring with it; on a clean Windows machine the app failed at launch, and that reaches a pharmacy as “it will not open” and nothing more. The download grows from about 7 MB to about 83 MB, which is the right trade for software installed once on a counter machine and then left alone.