M MahirRMS What's New

What's New

Product updates and release notes — newest first.

Rider-Wise Sale Report Knows Which Day a Sale Belongs To

Improvement

Aug 30, 2026  ·  v2.30.304

A 1:30 AM delivery on a branch that opens at 5:00 belongs to yesterday’s business day — the rider report now says so, on screen and in Excel.

📅 Business Day Everywhere: • A new B.Day column on the table and in the export, derived from each branch’s own shop start time • Every time column (Prepared, Served, Rider Out, Delivered, Rider Enter) now carries the date as well as the clock — a multi-day export is no longer ambiguous

📥 One-Click Excel: • An Export Excel button on the filter bar streams the full file with the current filters, without rendering the table first • Past 10,000 rows the detail table is not drawn at all — the summaries (which always cover every order) stand alone with the download button

🛠️ A Served-Time Bug Fixed on the Way: • Served durations on historical exports were being computed against today’s date — they now anchor to the order’s own date, rolling correctly past midnight

Result: Rider performance is reported by the business day it happened in, with dates that can be trusted.

Fix a Wrong Declared Cash — and See Every Voucher

New Feature

Aug 29, 2026  ·  v2.30.302

Three additions that turn register-cash puzzles into one-click answers.

✏️ Correct a Declared Closing Cash: • A pencil button on each closed register opens a modal that shows the working first — cash in, expenses charged, what the till should hold, what was declared, the difference • Editing needs a new permission, demands a reason, appends to the closing note and is fully activity-logged • A register whose close already posted a cash-variation voucher is protected from editing — its figure lives in the ledger, and the modal says so.

🔗 Vouchers Open In Place: • Every expense voucher number on the register slip is now a link that opens the voucher — no hunting through the accounts module • The register's own closing voucher is one click away from the list and the slip toolbar • A register that posted no closing voucher says so plainly — which is itself the diagnostic.

🚩 Anomalies Flag Themselves: • A register with no sale, no cash in, but expenses charged is marked on its Cash Diff cell with a plain explanation — these read as missing-cash alarms today; now they read as something to correct.

Result: A wrong declared figure is correctable with a reason and a trail — and the voucher behind any number is one click away.

Cash In Hand Expenses Without Phantom Registers

New Feature

Aug 29, 2026  ·  v2.30.300

Some businesses pay cash expenses straight from the branch's Cash In Hand — an accountant posts the voucher, no drawer is involved. The system assumed the opposite: it attached every expense voucher to a cash register, opening phantom 'expense only' sessions for non-cashiers and showing cash differences of exactly twice the expense.

⚙️ Now a Business Setting: • A new checkbox in Business Settings — Expenses Paid From Cash In Hand • When on, a manual expense voucher opens no register and charges none; the voucher itself posts exactly as before • Off by default, so businesses where money really does leave the drawer are untouched.

👤 Cash Custodians Respected: • Even with the setting on, an expense paid from a cashier's own custody head is a real drawer movement — and still reaches their register • The rule keys off the credited head, so a business can run both models at once.

Result: Tell the system how your business pays expenses — and register reports stop alarming over money that never touched a till.

Meet Your AI Analyst — Just Ask Your Data

New Feature

Aug 28, 2026  ·  v2.30.289

The biggest thing we've ever added to your menu bar: a built-in AI assistant that answers questions about your own live business data — in plain language. Type 'how were sales yesterday', 'compare my branches this week', 'split yesterday by tender' — and get the answer in seconds, from the same trusted engine your reports run on. No filters, no exports, no waiting for someone to pull a report.

💬 Answers Like a Colleague, Numbers Like an Accountant: • Clean formatted answers and real tables, not raw data dumps • Tenders reported honestly — cash, card, bank transfer, each on its own line • One-click suggestion chips get you going instantly: sales today, yesterday, this week, tender split, branch comparison.

📅 It Thinks in YOUR Business Day: • Trade past midnight? So does the assistant — 'yesterday' means your full business day, late-night orders included, exactly as your day close counts it. Most chatbots answer the calendar; this one answers your restaurant.

🗂️ A Real Workspace, Not a Toy: • Conversations survive refreshes — the History panel keeps your last 30 threads ready to continue • Old threads tidy themselves away after a week • Access is permission-controlled per user, like every serious module — and this is only the beginning: the assistant's skills will keep growing release by release.

Result: Your numbers now speak your language. Ask — and know.

Loyalty & Wallet Redemptions Charged Right

Bug Fix

Aug 28, 2026  ·  v2.30.295

Delivery-app orders paid partly with loyalty points or wallet balance were being charged less than the platform quoted: the platform deducts those after tax, but the POS was treating them as a before-tax discount — shrinking the taxable base and under-recording the sale on every such order.

💳 Redemptions Get Their Own Lines: • Loyalty Redeemed and Wallet Paid now live as their own amounts on the order and the bill, deducted after tax and every charge — exactly as the platform computes them • A full redemption lands the payable on zero instead of the POS owing money • Ordinary discounts on other orders behave exactly as before.

🧾 Carried Through Everywhere: • The payment screen, every receipt layout, both register summary slips and the FBR payload all show the redemption as its own line and agree on the total • An automated check guards every layout so a future receipt cannot miss it.

Result: The POS charges exactly what the platform quoted, the sale is recorded in full, and every receipt explains the redemption on its own line.

Register Summary Learns Branches, Brands — and Adds Up

New Feature

Aug 28, 2026  ·  v2.30.293

The register summary report breaks out of the single branch: a branch dropdown and a brand filter join the report, respecting each user's allowed branches.

🏢 One Slip Per Branch, or One for Everything: • All branches renders one register slip per branch with activity, cleanly page-broken for thermal, PDF and WhatsApp • A brand narrows the run to that brand's branches • The new Cumulative view — now the default — folds every branch's registers into a single slip, combined at the source rather than re-added by hand • Each slip header names its actual branch.

⚖️ Proven Additive, Figure by Figure: • An automated proof walks every number on the slip and asserts branch A + branch B equals the cumulative figure — twenty figures that quietly reported one branch were caught and fixed • Found along the way and fixed everywhere: the summary's card-sale total was showing a single bill's amount instead of the branch total — wrong in every mode, right now.

Result: One slip for the whole business, one per branch, or one per brand — and every figure on it is proven to add up.

Ask Your Data — the AI Assistant Arrives

New Feature

Aug 28, 2026  ·  v2.30.289

A new AI assistant joins the menu: ask about your sales in plain language — 'how were sales yesterday', 'compare my branches this week' — and it answers from your own live data, through the same engine your reports use.

💬 Answers That Read Well: • Responses render as proper formatted text and real tables, not raw markup • Tenders report separately — cash, card, bank transfer — instead of everything non-cash lumped as 'card' • Five one-click suggestion chips get you started: sales today, yesterday, this week, tender split, branch comparison.

📅 It Knows Your Business Day: • Shops that trade past midnight get correct answers — 'yesterday' covers your whole business day, late-night orders included, not the calendar date's slice.

🗂️ Conversations That Keep: • Chats survive a refresh — a History panel reopens your last 30 threads to continue where you left off • Threads retire automatically after a week of inactivity • Access is permission-controlled per user, like every other module.

Result: Your sales numbers, one question away — in your words, on your business day, from your own data.

Rider-Wise Sales at Any Scale — With Excel

Improvement

Aug 28, 2026  ·  v2.30.283

A month of rider-wise sales across all branches used to die with a blank server error — the report was hauling every column of every order into memory. Now it runs lean and finishes.

🏍️ Big Ranges Just Work: • The report loads only the columns it actually shows, so a full month of all branches opens where it used to crash • Summaries and footer totals always cover every order in the range, no matter how large.

📥 Huge Reports Hand You Excel: • When the range is too big to render as a page (over 10,000 rows), the full report downloads automatically as a real .xlsx — every row plus a totals row • The on-page notice carries a re-download button • The export is built to stay fast at any size — 74,000 rows is not a problem.

Result: Ask the rider report for anything — a small day on screen, a giant month as Excel — and it delivers.

Online Orders Ring the Call Center

Bug Fix

Aug 25, 2026  ·  v2.30.280

Third-party orders from the delivery platforms could land silently: the call-center announcement lived only in the legacy notification path, one platform's notifier was broken outright, and the newer realtime system only ever told the order's own branch — whose screen hides pending online orders by default. Nobody heard the order arrive.

📢 The Right Screens Hear Every Order: • Online orders now announce to the covering call center, the branch, or both — per your online-order audience setting • No covering call center? The branch is told instead of nobody • Customer-app orders join the same fan-out, so the call center hears them land too.

🔄 Status Changes Refresh Live: • When a platform accepts, dispatches, delivers or rejects an order, open branch and call-center screens update on their own • And an order only announces once it is safely saved — a failed save can no longer ring phones for a phantom order.

Result: Every online order is heard the moment it truly exists — by exactly the screens that should hear it.

The Printed Bill Honors an Edited Service Charge

Bug Fix

Aug 25, 2026  ·  v2.30.279

Manually editing an order's service charge drove the payment screen — but not the printed bill. Three bill layouts kept recomputing the row from the branch default, so a charge edited from 7% to 15% still printed at 7%.

🧾 Every Layout Reads the Same Number: • The unpaid table view, the unified print view and the standard bill now all use the order's actual service charge • The bill, the payment screen and the grand total finally agree.

Result: What you set on the order is what the customer sees on paper.

Delivery Charges Lock While Editing a Placed Order

Improvement

Aug 24, 2026  ·  v2.30.275

The delivery-charge fields on the POS cart had no guard: anyone recalling a placed order could silently change the charge, bypassing the authorization that protects the bill-preview edit.

🔒 One Authorized Door: • Recalling a placed order now locks the delivery amount and the charges dropdown — the auth-guarded bill preview is the only place to change them • New orders and drafts stay fully editable, exactly as before.

🛠️ And the Recall Keeps the Saved Charge: • An older glitch surfaced by the lock is fixed too — recalling a delivery order no longer wipes its saved charge to 0 • The recalled order shows the real saved amount, the grand total includes it, and updating keeps it.

Result: Delivery charges change only where a named person authorizes them — and recalled orders keep the charge they were saved with.

The Menu Finally Opens on iPhones

Bug Fix

Aug 24, 2026  ·  v2.30.271

The horizontal menu's dropdowns simply never showed on iPhones — an iOS rendering quirk clipped them invisibly, which is why a separate mobile layout ever had to exist. That is fixed at the root.

📱 Full-Width Sheets on Small Screens: • On phones and small tablets, an opening menu becomes a full-width sheet under the navbar — mega menus fill the screen and scroll, small menus keep their natural height • The reports mega-menu's internal tabs work inside the sheet • Desktop behavior is completely untouched.

🔧 Polished Through Real-Device Testing: • Verified on actual iOS — where the pixels genuinely paint, not just in a desktop simulator • Opening a far-right menu no longer snaps the menu row back to the start — the tapped item stays highlighted where it was • The page can no longer pan sideways behind an open sheet.

Result: One menu that works on every device — iPhone included, at last.