PharmaDesk logo

PharmaDesk

Changelog

Release history for PharmaDesk — pharmacy management software for Windows. Newest first.

This log starts at 2.0.0, the rebuilt PharmaDesk. Everything before it belongs to a different application that shared the name; there is no data migration path from it, so its history is not carried forward here.

Version 2.1.0

Latest 9 September 2026

Off-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 panadol found nothing when the catalogue said Panadol, 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.

Version 2.0.2

22 July 2026

Built but never submitted to the Store — 2.0.1 remained the published version until 2.1.0. Its fixes ship inside 2.1.0.

Fixed

  • The sign-in rate limiter was hardened — bounded memory use and normalised network addresses.
  • A server that cannot claim its port now says so instead of hanging on the splash screen forever.
  • Money arithmetic in reports corrected, and sales bucketed by the local day rather than a universal clock.
  • Sale returns, stock adjustments and payments are validated properly.
  • Date defaults and expiry arithmetic in the browser use local dates.

Version 2.0.1

20 July 2026

Fixed

  • Date-only fields displayed a day early for anyone west of the UK/Europe time zones.

Added

  • Sign-in attempts are rate-limited per network address.

Version 2.0.0

20 July 2026

PharmaDesk rebuilt from the ground up: a server window on the shop machine that runs the service in-process, and the full counter served to any browser on the network. It is a complete rewrite of the earlier application, and there is no data migration path from it — a version 2 installation starts with a new database.

Added — the counter

  • The salesman/cashier split: a bill is raised unpaid and settled separately from the Pending Bills queue, with item discounts at bill time and a capped, reasoned cashier discount at payment time recorded separately from them.
  • Batch-level stock with expiry dates, and automatic selection of the earliest-expiring batch that is still valid when a medicine is added to a bill.
  • Sales returns tied to the original bill, purchase returns that reduce what you owe a supplier, and stock adjustments for damage, theft, expiry and count corrections.

Added — management

  • Four roles — administrator, salesman, cashier and pharmacist — enforced on the server rather than by hiding menu items.
  • The medicine catalogue with generic name, form, strength, shelf location and multiple pack sizes; the supplier directory; and deletion rules that deactivate anything already used in a transaction so past reports keep adding up.
  • Nine reports — sales summary, profit and margin, stock valuation, purchase summary, payables ageing, customer debtors, sales by salesman, stock movement and discounts given — each printable and exportable to CSV.

Added — the server window

  • Start and stop the service, see the address to give to staff, and set ports, listening addresses, HTTPS with your own or a generated certificate, and firewall rules by address.
  • Create, import, switch and back up databases, with the initial administrator login set at creation time.