Skip to content

What we fixed

We reviewed the parts of Kadenio that were already in use and repaired the small issues that could cause wrong money, wrong stock, incorrect dates or access to another shop's data.

This was a safety and correctness pass. It did not add the larger features that are still listed in the product backlog.

In simple words

  • Money and refunds: refunds now update the related points, vouchers and gift-card balances in a controlled way. An unused gift card created by a refunded gift-card sale is voided. A gift card that has already been used cannot be silently refunded.
  • Stock: stock changes now follow the shop's out-of-stock setting. A free or warranty sale can be completed without a payment row when its total is zero. Receiving a serialized bicycle also updates its stock balance.
  • Workshop: a repair cannot be changed after an active POS settlement has started, so newly added parts cannot disappear from the bill. Cancelling a repair returns its recorded parts to stock and writes a stock-history entry.
  • Rewards: voucher limits are checked again at payment time, and a refund restores the voucher use. Gift cards can be issued to a walk-in customer without attaching a customer record.
  • Shop boundaries: user counts, sales, branches and repair actions are checked against the signed-in user's authorized shop and location. A request cannot choose another shop or location just by changing an ID.
  • Dates and reports: sales history, daily totals, report charts, exports and default report dates use the shop's configured time zone instead of UTC.
  • Reliability: workshop status changes are protected against two people advancing the same ticket at the same time. New sale and repair numbers no longer depend on the current millisecond, and reminders reclaim stuck jobs and stop after five attempts.

What this means for the shop team

You can continue using Checkout, Workshop, Inventory, Loyalty, Rewards and Reports as before. The main difference is that Kadenio now refuses or corrects risky actions instead of leaving partial stock, reward or payment records behind.

Before the first live sale, the platform administrator still needs to enter the shop's confirmed last receipt or invoice number. Do not guess this number. A Danish accountant should also confirm VAT, receipt numbering, gift-card and refund treatment before live bookkeeping.

Still planned

This review did not complete the larger replacement and launch backlog. Import tools, full invoices and credit notes, cash close and Z-reports, receipt reprinting, card-terminal references, repair approval evidence, enforced subscriptions, encrypted off-site backups, full audit coverage, GDPR workflows, MFA and production security headers, deliverability controls, CI and several later Danish-market features remain separate work.

The engineering record with the exact fix list and test evidence is in docs/audits/GAP-AUDIT-20261019-FIX-REPORT.md in the project repository.