Hotfixes on LS Central version 28.2.x.x
Tip: Partners can download the LS Central hotfixes directly from the LS Retail Portal (login required).
Expand All / Collapse All button:
LS Central hotfixes
89016 Retail Messages on Before event request
- New event, OnBeforeRunRequest was added to codeunit LSCRetailMessageGetActiveList/LSCRetailMSGGetActiveListUtil.
88470 CO Payment Line - Pre Auth not handled on POS Checkout
- There was an issue where a customer order paid with an e-commerce pre-authorization was treated as fully paid at POS checkout, even though the payment was never captured. The e-commerce integration now receives the capture request when you finish the sale, and the payment is recorded.
- This fix applies when you use an e-commerce integration without LS Commerce Server, which means Send LS Commerce Messages is off in Customer Order Setup.
- Action required by partners:
- None.
87132 Getting issue in fallback return case - hotfixes
- When a card payment reference refund was interrupted during the processing of the card the POS was recreating the payment line with the incorrect sign on the amount in the journal (the payment had a negative number instead of a positive number). This meant that the Balance amount in the POS was duplicated instead of calculated to 0. This was fixed.
89321 Sales History - start date Calculation
- New event OnBeforeGetFirstSalesDate on page LSC Sales History allows a start date to be set.
89147 on before show printer error event added
- Added the new event OnBeforeShowPrinterError_OnIsPrinterActive to codeunit LSC POS Transaction Events. It is raised before the No Printer is configured in Hardware profile error is shown in the POS (LSC POS Transaction Print codeunit).
89130 Make_SetBlockPromotionPrice_External
- Procedure SetBlockPromotionPrice in LSC Retail Price Utils codeunit is now public.
87583 Add an event to intercept item and shelf label printing
- You can now hook into item and shelf label printing with a new event, OnBeforeRunCodeunitItemLabel. Subscribe to it to run your own logic instead of the standard label codeunit — for a specific label code, or for all of them — without changing standard objects. If nothing subscribes, labels print exactly as before.
- Partners previously had to change the codeunit assigned to a label code to fully replace its logic. This event lets a subscriber intercept printing per label code, side by side with the standard fallback, so custom label logic can be layered in without redesigning the label function itself.
- Affected components: Item Label Print page (Print action), Item Label Quick Printing page, Shelf Label Quick Printing page, Store Inventory Management codeunit
- Integration touch points: New publisher event OnBeforeRunCodeunitItemLabel (parameters: label function, item label, IsHandled), raised before CODEUNIT.RUN on the label code's assigned codeunit
- Configuration / setup changes: None
- Breaking changes / upgrade impact: None — when no subscriber sets IsHandled, printing runs exactly as before. Also fixes a related issue where, in the two Quick Printing pages, one label code's IsHandled result could leak into the next label code printed in the same batch — each label code now evaluates independently
- Action required by partners:
- None to keep current behavior. To intercept printing, subscribe to OnBeforeRunCodeunitItemLabel and set IsHandled := true.
87519 Returning a transaction can have incorrect VAT on items if the VAT group has changed since original order
- You now get the correct VAT rate when refunding an item whose VAT group has changed since the original sale. Previously, a refund posted through a customer-account ("to account") sale could apply the item's current VAT rate instead of the rate that was actually charged at the time of the original sale.
84080 LineDisplay functions can have empty DeviceID
- Details not available.
83640 Scale with "Live Weight" Disabled should not be load into POS Add-in
- Details not available.
88998 Cancel Order option is not taking into account the "Processing Status Setup" in the pick phase or collect phase - With Webservices
- When a customer order cannot be canceled because the Customer Order Change Permissions setup does not allow it, the error message now tells you exactly which status combination is blocking it, and points you to Customer Order Change Permissions to fix it — instead of an unrelated, disconnected setup screen.
Action required by partners
- None.
88298 New event into SendWholeTmpTransaction function in the "LSC POS Trans. Server Utility"
- New integration event was added to POS Transaction Server Utility: OnAfterSendWholeTmpTransaction_TSSendTransaction.
88203 Excessive recursion in POS Trans. Line Quantity/Amount validate when collecting a partially-collected Customer Order
- You can now collect a customer order across multiple pickups without interruption, even when the order line's amount does not split evenly across its quantity — for example, a line with a discount or an amount-entered price. Previously, this could hang the POS with a hard error and no workaround, leaving the order stuck.
- Action required by partners:
- None.
88188 New event for the GetPostedTransaction function in the ""LSC POS Trans. Server Utility"
- New event was added, OnAfterGetPostedTransaction in Codeunit POS Transaction Server Utility.
88175 Bug Report: Statement-Post fails on return with "You cannot return more than the X units..." when the same item appears twice on the original receipt
- Refunding a receipt where the same item was rung up twice, at different quantities, no longer blocks the whole day's statement. Refunds like this used to fail with an error naming the wrong shipped quantity – now the return posts correctly, even when it cannot be pinned it to one exact original sale line.
- Action required by partners:
- None.
88171 added OnBeforeSkipRecord event to handle custom skipping logic
- New event OnBeforeSkipRecord was added on Schedule Batch Posting codeunit.
88170 Store Inventory Management - Event
- New event was added, OnBeforeInsertInStoreStockReqHeader in Codeunit Store Inventory Management.
87822 Request to add publisher event OnBeforeCalculateMemberPoints (with IsHandled) in codeunit 99009012 "LSC Upgr./Downgr. Management"
- New event, was added OnBeforeCalculateMemberPoints in codeunit 99009012.
87781 V28 Card Payment Only Attempting Once Instead of Three Attempts
- There was a bug where card payments at the POS were not retrying up to the configured number of attempts. This was fixed.
87652 Franchise Inbound Purchase Return Order Processing Error after upgrade to LS Central 28.2.4.4005
- Retail purchase return orders sent to a franchiser now process successfully when the return confirmation comes back from the franchiser. Previously, some of these inbound messages failed with an error saying you could not return more than a certain number of units, leaving the purchase return order stuck in an error state until support stepped in.
- Action required by partners:
- None. Purchase return orders already stuck in an error state from this issue can be reprocessed (Process Now) once the fix is installed.
87378 Issue when selecting a member card in POS on a different version than HO
-
Added a Legacy Field Compatibility page. Turning it on for the membership card number series lets an older point-of-sale version create member cards again.
86970 Job queue entries not working / Background session in V28 issue
- Job queues no longer stall when sending POS e-receipt emails.
- Sending e-receipt and customer-order emails from the back office no longer starts POS background sessions for every till in head office. Job queues that process these emails now run reliably instead of stalling.
- On busy head-office setups, processing pending email requests could spin up background sessions for each POS at once, exhausting available sessions and blocking the job queue — and other job queues under the same user — from running. This was most visible after upgrading to version 28. Emails now send without that overhead.
- Suppresses the POS background sessions (send transaction, Azure Storage replication, job-queue refresh) only while the back-office Process Pending Requests job runs; normal POS behavior is unchanged.
- Action required by partners:
- None — the fix applies automatically after upgrade.
85305 Customer Order Income/Expense Account
- When you edit a customer order at the POS and pay the balance with a voucher that's worth more than what's owed, LS Central now gives back a new voucher for the correct leftover amount (depends on the Tender Type setup in the Store-->"Change Tend. Code" ), and records the right amount against the order.
- Action required by partners:
- None.
82225 Printing A5 in version 27
- Reports sent to a hardware station printer now print with the paper kind you have actually set up for that printer.
- Previously, any printer not set to a custom paper kind defaulted to A4, so A5 and other non-default paper sizes printed on the wrong paper or failed outright.
- Action required by partners:
- None — printers already configured with a non-A4, non-custom paper kind print correctly again once the fix ships; no setup changes needed.
80915 Error on Posting of Statement if there is a Dimension Value that is mandatory on the GL for Income Expense
- Previously, statement posting failed for Income/Expense transactions when a G/L account required a mandatory dimension, but no default Dimension Value Code was defined; users can now specify the required dimension value, allowing the statement to post successfully.
88121 Integration Event for Codeunit LSC Replen. Calc. Child Jrnl.
- An integration event OnAddItemsToReplenJournalOnBeforeSetTableView has been added to the codeunit LSC Replen. Calc. Child Jrnl.
87887 Azure SAS token renewal on POS fix
- Fix renewal of azure SAS tokens on the POS.
87587 Kitchen Operation Profile Card Enhancement Request – Ability to Print All Routed Order Lines in a Single Docket
- Print Order Items — new print operation
- For stations using line-level routing (#LINEOPERATIONS), operators previously had to print every routed item one at a time, generating a separate print action per line.
- A new Print Order Items operation now prints all items from the same order that are routed to the station that triggered the operation, in one action — one ticket per item.
- Print Item — unchanged
- Continues to print only the single, selected item.
- Chit / Print Order — fixed
- Printing a Chit (order) now correctly prints only the items routed to the station that triggered the print, instead of the full order.
87564 Problems opening "Store Inventory Journal" Page 10001294 after last hotfix
- Extensions can once again find out which worksheet is open on the Store Inventory Journal page. A recent change to how LS Central stores that state accidentally blocked outside access, breaking extensions that adjust field visibility by worksheet type.
- Action required by partners:
- If your extension previously read the open worksheet's state from session storage on this page, call the new GetStoreInventoryWorksheet(var StoreInventoryWorksheet: Record "LSC Store Inventory Worksheet") procedure from your own OnOpenPage handling instead.
- It returns the currently open worksheet, including its sequence number and worksheet type.
87335 Variant No. assigned to the incorrect product during transaction, causing statement posting failure
- When you scan an item that requires variant selection on the POS web client, the barcode scanner no longer stays active while the variant selection panel is open.
- Previously, scanning a second item before choosing a variant on the panel could insert that second item into the transaction with the wrong variant code, leave the originally scanned item out of the transaction entirely, and later block end-of-day statement posting with an invalid Variant Code error.
- A concurrent scan while a variant selection is pending is now rejected, matching existing native-client behavior.
- Action required by partners:
- None.
87166 V28.3 POS PRICECH command does not show numpad as popup
- There was an issue where a POS Command with a Parameter, combined with a Post Command that had no Post Parameter, reused the parameter from the main command. This was fixed.
- Also fixed: when the scanned item triggered an automatic discount or offer, with a Post Command such as Change Price could act on the discount line instead of the item's own line and fail with a Price can only be changed on sales line error. It now filters out the discount line.
84930 Always print out receipts is payment is cash
- Details not available.
84051 Deal Modifier “Added Amount” Not Charging Per Selection
- Selecting a deal modifier item more than once now charges the added amount for each selection. Previously, choosing the same item twice only added the amount once, undercharging the total.
- Action required by partners:
- None.
88101 Remove UPDLOCK on "POS Card Entry" in Posting
- A small change was made to the way Replication Counter is updated in the POS Card Entry table, as a means to minimize table locks and deadlocks.
87217 Possibility to change Customer Balance Calculation
- New event OnAfterCalculateCBalanceOverLimit added in POS Functions.
88010 Coupon only applied to lowest cost item
- For coupons with Handling: Tender used in a transaction with two or more items, the coupon now consistently redeems for its full configured value.
- Previously, if a lower-value item happened to be evaluated before a higher-value one, the coupon could be shortchanged and redeem for less than its real value.
87703 Issue when using a Coupon as a tender in a transaction
- Coupons used as a payment tender, or scanned by their plain coupon code, now consistently redeem for the coupon's actual per-instance value instead of falling back to the coupon's default header value. This fixes payment lines and discount lines showing the wrong amount for coupons whose value is set per issued instance rather than as a single fixed amount on the coupon.
87428 LS Central Shopify Connector - Order Pull Filter, Sales Channels
- The Sales Channel filter on Shopify Order Pull now works correctly. Enter the Sales Channel Code shown on the Shopify Mapping page (populated by Get Sales Channels) to import orders from just that channel — for example, Online Store or POS.
- Action required by partners:
- If you already use the Sales Channels filter, re-run Get Sales Channels on the Shopify Mapping page, then re-enter the filter using the Sales Channel Code shown there. The filter no longer accepts a Shopify channel name typed directly, so any previous value needs to be re-entered this way.
87392 Test Connection to Web KDS Service fails with HTTP 400 - SalesType required on KOT item
- Test Connection to Web KDS Service failed with HTTP 400. This was fixed.
86169 Codeunit 10016666 "LSC CO Picking Panel" does not allow OPOS scanning, and using a replacement codeunit then does not work for manual entry of quantities!
- OPOS scanning was added to the CO Picking Panel. The CO scanning function was also fixed so it correctly searches for items when a barcode is scanned.
87089 Need ability to Skip IsBlockPurchaseCreate in Store Inventory Journal
- New Event, OnBeforeCheckBlockPurchaseCreate added in Store Inventory Line table in Item No. OnValidate.
- Note: In hotfix/latest (28.2) the ItemStatusLink parameter is a Item Status Link record. In develop this parameter is a Item Status Link 2 record and the Item Status Link table was obsoleted.
87080 LSC Retail PO Subpage (10000816) not working correctly if Item variant is connecting to item in Purchase Order
- Hook into the Variant Framework purchase order flow from your own extension. Four new publisher events let you act when LS Central creates a variant purchase line, converts a document line into a variant collection header, or validates a quantity on the Retail PO Subpage — without modifying LS Central code.
- The events cover both purchase and sales documents:
- OnBeforeInsertPurchLine — fires before the Variant Framework inserts a new purchase line for a variant.
- OnBeforeConvertSalesLineToCollectionHeader and OnBeforeConvertPurchLineToCollectionHeader — fire before a document line is converted into a variant collection header. Set IsHandled to replace that step with your own.
- OnBeforeValidateQty — fires before the quantity is validated on the Retail PO Subpage, so you can set a quantity without running validation.
- Action required by partners:
- None. Behavior is unchanged unless you subscribe to one of the events.
- If you subscribe to either collection-header event and set IsHandled, your code takes over converting the line into a collection header — zeroing the quantity, clearing the type and number, and storing the collection item number. Skip that step and LS Central adds variant lines beside a line that's still a normal item line, so the quantity is counted twice on the document.
86833 SAS Token generation issue in Sending Transaction using Storage Queue
- Expiration of SAS access tokens was fixed.
87059 Coupon with Handling::Tender cannot be used more than once in Transaction
- You can now redeem a tender coupon more than once in the same transaction, whether the eligible items sit on one line or are split across several lines. Previously, only one redemption applied unless all the eligible quantity was on a single line with a quantity greater than one.
- This fixes a regression introduced by the changes included in hotfix 28.2.4.
86777 Change in Z Report
- Z report shows denomination breakdown for every counted currency
- Work item: AB#86777 · Type: Fix · Affects version: 28.2
- Area: Backoffice — XZ Report
- The end-of-day (Z) report now prints the coin and note breakdown for every currency you count in the safe, not just one. Previously, when a register counted more than one currency (for example DKK and EUR), only the last currency's denomination breakdown appeared — the totals were correct, but the detailed breakdown for the other currencies was missing.
- Why it matters:
- Stores handling multiple currencies could not reconcile each currency's coins and notes from the Z report, making end-of-day cash counting harder to verify.
86768 Wish list items now become a customer order automatically
- When you add wish list items to a POS transaction, LS Central now marks the transaction — and the lines from that wish list — as a customer order automatically. You do not need to flag it by hand anymore.
- This removes a manual step for cashiers and closes a gap where a wish-list-driven sale could get missed as a customer order, so orders flow straight into fulfillment without extra clicks.
- Affected components: Wish List → POS transaction line creation (POS wish list add-to-basket flow)
- Integration touch points: POS transaction line and POS transaction customer-order flags; no external endpoints
- Configuration / setup changes: None
- Breaking changes / upgrade impact: None — additive behavior on the existing wish-list-to-POS flow
- Action required by partners:
- None.
85741 Exchange Function is not working on 28 Version
- Handling of Receipt Barcode was fixed.
80119 Not possible to scan GS1 barcode on POS using GS1 version 2
- Barcodes with leading zeros are now, correctly handled in GS1 barcode handling v2.
86876 Cancel item on CO with Prepayment Invoice
- Voiding a line on a fully prepaid, multi-line Customer Order now completes correctly.
- Previously, if another line on the same order was still open when a line was voided, finalizing the order could fail with There is nothing to post because the document does not contain a quantity or amount, because the system attempted to recreate a prepayment invoice for an order that was already fully invoiced.
- The Customer Order prepayment invoice logic (LSC CO Prepayment Invoice Mgt) now checks whether there is a genuine uninvoiced prepayment amount left before attempting to recreate the invoice, and skips it cleanly when there is none -- matching the credit-memo-side guard already shipped for this scenario.
- Action required by partners:
- None.
86585 Codeunit 99008906 "LSC POS Price Utility" needs corrected event "OnBeforeSelectMultibuy" in the "SelectMultibuy" function!
- Parameter ReturnValue: boolean added in OnBeforeSelectMultibuy in POS Price Utility.
86402 Changing quantity on deal including deal modifiers with added amount
- When you change the quantity of a deal that includes a deal modifier with an added amount, the price now correctly reflects that added amount at every quantity.
- Previously, increasing the quantity after choosing a paid modifier could quietly shrink or drop the added amount from the total.
- Action required by partners:
- None.
86165 SC-4636-Events needed in LS Central v25
- The OnBeforePrintLineFormatString event has new SectionID and NodeName parameters.
- New overload procedure PrintLine with SectionID and NodeName parameters.
- PrintTenderDeclSlip, PrintTenderDeclLines and PrintRemoveAddTenderLines now trigger new PrintLine overload.
- The OnBeforePrintInfoCodeLine event has new ICode and ISubCode parameters.
85285 Mobile POS replicates wrong staff permissions after full device resync (manager privileges denied)
- Staff with manager privileges can once again void transactions, process returns, and complete sales on Mobile POS. Previously, on a device that cleared its database and did a full resync, everyone in a store could be replicated with the wrong permissions — copied from a single staff record — so managers were wrongly told they don't have manager privileges. Now each staff member's own permissions replicate to the device correctly.
- Action required by partners
- Update to a build that includes this fix, then let devices replicate. Corrected permissions apply on the next sync — no manual cleanup needed.
- If a device was worked around by manually deleting rows from its local permission table, no further action is needed.
- Affected versions: 28.0 and 28.1 (also in latest).
85142 POS Return – Reason Infocode selection not triggered when returning by receipt / from transaction list
- Reason infocode now appears for receipt and transaction-list returns.
84501 Bugfix: do not use ItemUOMBuffer.Code when generating item labels
- Generating item labels through the scheduler no longer fails for items that lack the unit of measure last used during shelf label generation.
86952 Add OnClassifyDealLineForPriceReduction event to LSC Deal Pricing Functions
- Adds a new integration event, OnClassifyDealLineForPriceReduction, to codeunit LSC Deal Pricing Functions.
- It is raised once per deal child line during deal registration, letting partners classify a line for potential exclusion from proportional deal-price reduction in a future release.
- No behavior changes in this release - existing deal pricing is unaffected.
- Action required by partners: None.
86874 Membership upgrade/downgrade batch job upgrades members with zero points
- Membership upgrades and downgrades now count only the award points a member earns within the tier calculation period. Points earned outside that period — including points that have expired — no longer push a member into a higher tier.
- Date range filters on member statistics work correctly too, so point totals match the range you set.
- Action required by partners:
- None. Run the Upgrade/Downgrade batch job (or wait for the scheduled run) to re-evaluate members on the corrected logic.
86847 Add Events to InStore Stock Req Mgt Codeunit
- New events were added to InStore Stock Req Mgt:
- OnBeforeModifyPurchaseHeader_OnCreatePurchaseOrder
- OnBeforeInsertPurchaseLine_OnCreatePurchaseOrder
- OnBeforeModifyStockReqHeader_OnCreatePurchaseOrder
- OnBeforeModifyTransferHeader_OnCreateTransferOrder
- OnBeforeInsertTransferLine_OnCreateTransferOrder
- OnBeforeModifyStockReqHeader_OnCreateTransferOrder.
86807 PrintExtraSlip Error After Upgrade to BC/LS28
- Extra Print now works again for negative-amount lines that are not linked to a data entry, such as ordinary return items.
- After upgrading to LS Central v.28 these lines showed an error instead of printing; they now print as before.
- Voucher and gift card remaining-balance details introduced in LS Central 28 still work for the lines that have them.
86587 We need a new Event for abort neg. Quantity check
- New event was added, OnBeforeCheckNegativeQuantity_MarkSelectedLine.
86571 KDS crashes when KOT tickets are voided before Web KDS picks them up
- Web KDS order routing is now atomic and crash-resistant.
- Web KDS integration now reliably routes orders to the kitchen without sending duplicate kitchen tickets, even when order submissions overlap during high-volume service.
- Business Central claims each ticket atomically before sending it to Web KDS - if overlapping order events occur at the same time, only one push can claim a given ticket.
- If any ticket fails to send, it is automatically resubmitted on the next push attempt, so no order silently gets lost.
- Why it matters:
- A race condition in the previous push mechanism could send the same kitchen ticket multiple times when concurrent order operations happened at the same store. If the Web KDS endpoint received a duplicate ticket, it would reject the entire batch and crash the kitchen display, requiring manual database recovery. High-volume restaurants were affected most severely.
- This fix closes the concurrency window entirely.
- Action required by partners:
- None. This fix is applied automatically on upgrade and requires no configuration or setup. No schema/data changes and no breaking changes.
86566 Update and add integration event, add enum
- Added a new integration event, OnAfterAddMemberInfoToCustomerOrder, and extended two existing ones - OnBeforeSendContextOnMenuTenderTop and OnBeforeMenuTenderShow with additional parameters.
86481 Unable to Apply Store Coupon at POS When Zero-Price Item Exists in Transaction
- Tapping Total, rejected the coupon with Entered Coupons but not used and the customer paid full price.
- Coupons with Handling set to Tender, now apply when the transaction includes a line with a zero-price item.
86408 FindPromotion works very slow if there are Many Enabled offers with few items in them
- Event, OnAfterFilterPromotion was added to LSC Retail Price Utils.
85193 Member account downgraded with sufficient point balance
- Members are no longer moved to a lower scheme by the upgrade/downgrade job when their points still meet the downgrade limit. The member's scheme now stays unchanged.
84177 Scale Item is conflicting with UOM and asking for weigh when the UOM does not require it
- Details not available.
83315 Bug: POS Web Templates "brick" price ignores the UoM configured on the Retail Hierarchy node
- Details not available.
83015 Barcode not printed at receipt
- Details not available.
86325 Returning transaction based on transaction with both sales entry and income expense fails
- Returning a POS transaction that generated a Customer Order and a Sales Order, with both a sales entry and an income/expense entry no longer fails with The POS Trans. Line already exists error.
86214 Update and add integration event
- Added integration events:
- OnBeforeDelRecord (POS Trans. Lines)
- OnAfterSetVariantCode_OnItemLine (POS Transaction Events)
- and extended OnAfterTSDataEntries_TypeCreateDataEntry (POS Infocode Utility
- new ReturnValue parameter).
85603 Update access modifier and add new method
- Procedure GetConnectionLog was added in Request Handler codeunit to access ConnectionLog_g.
85373 Declare Tender as Currency
- Operators can now declare foreign-currency tenders and the keypad opens, fixing a silent failure that occurred when no currency setup rows existed for that tender type.
86121 KOT Line Qty had a different type from the table, making the KOTs route to be not routed
- Kitchen Order Tickets (KOTs) with item lines that had a decimal quantity failed to update their KOT status in LS Central. As a result, orders never reached served status and were not cleaned up from the Web KDS database. This was fixed.
85982 Subscribe to Web Service 250 character limit
- Details not available.
85732 Average Cost Issues in Recipes Due to Refund Postings
- Refunding a recipe item at the POS no longer throws off its average cost. Previously, refunding a recipe — whether to cash or to a customer account — could post the recipe and its ingredients with an inconsistent quantity, pushing the average cost calculation to an invalid value and sometimes causing a cost adjustment error.
- Refunds now post correctly, and average cost stays accurate.
- Action required by partners:
- None. This corrects postings going forward — it does not retroactively fix average cost on entries posted before upgrading; stores that hit the overflow error historically may want to review cost entries for those items.
85625 Skip "No routing" for item error message
- The POS no longer shows a routing error banner when an item is intentionally left without a kitchen route for a given sales type. You still see No Routing on the KOT and "NR" in the journal for these items, so you can confirm routing status without an interrupting popup.
- Action required by partners:
- None.
83950 [CAS-15533-Z5H7] POS SaaS - Deal Modifier Qty. per UOM Incorrect on POS Transaction Line, Sales Entries, and Item Ledger Entries
- Deal modifiers set up with a quantity per unit of measure greater than 1 now sell the full amount.
- Before, a modifier configured for example, 3 ounces of a spirit only recorded 1 unit on the receipt, so sales totals, tax, and inventory understated what was actually poured or used.
- Action required by partners:
- None. No setup change is needed after updating.
83793 CO Prepayment Invoice
- You can now reduce an item’s quantity — or remove it entirely — on a customer order at the POS when prepayment invoicing is turned on, without hitting an error. Prepayment invoices and credit memos stay in step with your change, so cancelling a whole order no longer posts a duplicate prepayment credit or invoice.
- Action required by partners:
- None. No setup or configuration changes are needed.
81440 EMAIL_C command not working
- Details not available.
79594 Store Coupon and Manufacture Coupon
- Previously, in Store Coupon and Manufacture Coupon code is not able to create new code by number series set in HO store. This was fixed.
85667 New Event-Publisher on TenderDeclaration #692
- A new integration event, OnBeforeValidateSafeAmount_OnSafePressed, is raised on the Tender Declaration when a safe amount is entered.
85577 Issue with call center
- Take an order in an offline Call Center and the selected restaurant's POS now opens, ready for you to enter items. Modifying the lines on an existing Call Center order works the same way. Previously both actions returned you to the Call Center main page without opening the POS.
- Action required by partners: None. Update to a build that includes this fix.
85528 make procedure GetSingleTableBuffersByItemDist in codeunit-i "LSC Commerce Req. Functions" publicly available.
- Made procedure GetSingleTableBuffersByItemDist in codeunit "LSC Commerce Req. Functions" publicly available.
85497 Update POS Post Utility #688
- Adds a new event that fires after the Trans. Payment Entry is inserted while writing the transaction to the database, in the POS Post Utility codeunit.
85300 Sales Type location not working in version 28
- Sales Type location is now respected when posting POS sales and refunds; returns against an original receipt still post to the store handling the return.
85150 Update access modifiers and add integration event #684
- Exposes a set of previously internal barcode, offer, coupon, POS and web-service procedures for external extensions, and adds an integration event that fires per line during POS statement posting.
84875 DIMENSION ERROR DURING RETAIL TRANSFER ORDER POST RECEIPT
- You can now post a retail transfer order receipt without a dimension error when the receiving store doesn't have its own default value for a dimension the item requires.
84710 Stores can view and modify other stores worksheets.
- A user working on a Store Inventory Journal can no longer access other stores' journals by changing or clearing filters. Also fixed an issue where duplicating the browser page, or changing the region on the My Settings page, opened a new browser window without filters.
84633 Deadlock on LSCSendSerialCoupon causes double transactions in database
- Fixed an issue where a failed serial coupon synchronization to Head Office during POS posting could cause the same receipt to be posted twice, creating duplicate transactions in the Transaction Register. Posting now rolls back cleanly on a synchronization failure, so a retry no longer creates a duplicate.
84499 Adding event on POS Transaction & Commission Entry #680
- New Events:
- OnBeforeGetBalanceInCurrencyKeyPressed, in the POS Transaction codeunit
- Several new events in Commission Entry
84176 RFID-Error message "Scanned item not found" during RFID return - the line has already been marked for refund so we should skip the message
- During an RFID return, scanning a tag whose line is already fully marked for refund no longer shows a "Scanned item not found" error. Previously, on some configurations this could also trigger a repeating error dialog that made the POS unresponsive during the return.
84014 Scheduler message text overflow
- Data Distribution scheduler jobs no longer stop with a string-length error when a source location is unreachable and the connection error message is long. Previously, when a job replicated from several source locations and one could not be reached over the network, an overly long connection error aborted the entire run before the remaining locations were processed. The error message is now shortened when it is too long to store, so the job records the failure for the affected location and continues replicating from the other locations as expected.
- Action required by partners: None.
83875 LS Central 28.0.8.3554 – Infocode Inputs Not Printed on Customer Order Receipts
- Infocode inputs now printed on Customer Order receipts. When an infocode is set to Print Input on Receipt, the value the cashier keys in now appears on the Customer Order receipt — just as it already does on a regular sales receipt.
- CustomerOrderGetV4 Web Service Updated.
83765 LSC Statement-Calculate: GetSerialLotSalesQty missing transaction Filters
- Fix on calculation of qty. on hand for lot/serial items during statement calculation / posting.
83588 Item lines not compressing on Store Inventory Journal
- Importing items into a Store Inventory Journal from a barcode file now fills in both the variant code and the unit of measure for every line, taken directly from the scanned barcode. With the variant code in place again, the compress lines function now works correctly.
- This affects only the file import path. Lines received from Inventory Mobile are not affected, including the safeguard that blocks an unwanted unit-of-measure change when changing the unit is not allowed.
80187 Scheduler job sets next check date to 2 days after running when Error Handling is set to Mark With Error and Retry
- A recurring Scheduler Job that has an Ending Time defined now schedules its next run on the correct day. Previously, a daily job with an Ending Time set and no Starting Time could push its next check date a full day too far, causing the following day to be skipped and scheduled work such as statement auto-calculation to be missed. The next check date and time are now kept within the configured run window without losing a day, and run windows that span midnight are handled correctly.
- Action required by partners: None.
Autotests hotfixes
89016 Retail Messages on Before event request
- New event, OnBeforeRunRequest was added to codeunit LSCRetailMessageGetActiveList/LSCRetailMSGGetActiveListUtil.
88470 CO Payment Line - Pre Auth not handled on POS Checkout
- There was an issue where a customer order paid with an e-commerce pre-authorization was treated as fully paid at POS checkout, even though the payment was never captured. The e-commerce integration now receives the capture request when you finish the sale, and the payment is recorded.
- This fix applies when you use an e-commerce integration without LS Commerce Server, which means Send LS Commerce Messages is off in Customer Order Setup.
- Action required by partners:
- None.
87519 Returning a transaction can have incorrect VAT on items if the VAT group has changed since original order
- You now get the correct VAT rate when refunding an item whose VAT group has changed since the original sale. Previously, a refund posted through a customer-account ("to account") sale could apply the item's current VAT rate instead of the rate that was actually charged at the time of the original sale.
88998 Cancel Order option is not taking into account the "Processing Status Setup" in the pick phase or collect phase - With Webservices
- When a customer order cannot be canceled because the Customer Order Change Permissions setup does not allow it, the error message now tells you exactly which status combination is blocking it, and points you to Customer Order Change Permissions to fix it — instead of an unrelated, disconnected setup screen.
- Action required by partners:
- None.
88203 Excessive recursion in POS Trans. Line Quantity/Amount validate when collecting a partially-collected Customer Order
- You can now collect a customer order across multiple pickups without interruption, even when the order line's amount does not split evenly across its quantity — for example, a line with a discount or an amount-entered price.
- Previously, this could hang the POS with a hard error and no workaround, leaving the order stuck.
- Action required by partners:
- None.
88175 Bug Report: Statement-Post fails on return with "You cannot return more than the X units..." when the same item appears twice on the original receipt
- Refunding a receipt where the same item was rung up twice, at different quantities, no longer blocks the whole day's statement. Refunds like this used to fail with an error naming the wrong shipped quantity – now the return posts correctly, even when it cannot be pinned to one exact original sale line.
- Action required by partners:
- None.
87378 Issue when selecting a member card in POS on a different version than HO
- A Legacy Field Compatibility page was added.
- Turning it on for the membership card number series lets an older point-of-sale version create member cards again.
85305 Customer Order Income/Expense Account
- When you edit a customer order at the POS and pay the balance with a voucher that's worth more than what's owed, LS Central now gives back a new voucher for the correct leftover amount (depends on the Tender Type setup in the Store-->"Change Tend. Code" ), and records the right amount against the order.
- Action required by partners:
- None
80915 Error on Posting of Statement if there is a Dimension Value that is mandatory on the GL for Income Expense
- Previously, statement posting failed for Income/Expense transactions when a G/L account required a mandatory dimension, but no default Dimension Value Code was defined; users can now specify the required dimension value, allowing the statement to post successfully.
87887 Azure SAS token renewal on POS fix
- Fix renewal of azure SAS tokens on the POS.
87587 Kitchen Operation Profile Card Enhancement Request – Ability to Print All Routed Order Lines in a Single Docket
- Print Order Items — new print operation
- For stations using line-level routing (#LINEOPERATIONS), operators previously had to print every routed item one at a time, generating a separate print action per line.
- A new Print Order Items operation now prints all items from the same order that are routed to the station that triggered the operation, in one action — one ticket per item.
- Print Item — unchanged
- Continues to print only the single, selected item.
- Chit / Print Order — fixed
- Printing a Chit (order) now correctly prints only the items routed to the station that triggered the print, instead of the full order.
87564 Problems opening "Store Inventory Journal" Page 10001294 after last hotfix
- Extensions can once again find out which worksheet is open on the Store Inventory Journal page. A recent change to how LS Central stores that state accidentally blocked outside access, breaking extensions that adjust field visibility by worksheet type.
- Action required by partners:
- If your extension previously read the open worksheet's state from session storage on this page, call the new GetStoreInventoryWorksheet(var StoreInventoryWorksheet: Record "LSC Store Inventory Worksheet") procedure from your own OnOpenPage handling instead.
- It returns the currently open worksheet, including its sequence number and worksheet type.
87166 V28.3 POS PRICECH command does not show numpad as popup
- There was an issue where a POS Command with a Parameter, combined with a Post Command that had no Post Parameter, reused the parameter from the main command. This was fixed.
- Also fixed: when the scanned item triggered an automatic discount or offer, with a Post Command such as Change Price could act on the discount line instead of the item's own line and fail with a Price can only be changed on sales line error. It now filters out the discount line.
84051 Deal Modifier “Added Amount” Not Charging Per Selection
- Selecting a deal modifier item more than once now charges the added amount for each selection. Previously, choosing the same item twice only added the amount once, undercharging the total.
- Action required by partners:
- None.
88010 Coupon only applied to lowest cost item
- For Coupons with Handling:Tender being used in a transaction with two or more items, it now consistently redeems for its full configured value.
- Previously, if a lower-value item happened to be evaluated before a higher-value one, the coupon could be shortchanged and redeem for less than its real value.
87703 Issue when using a Coupon as a tender in a transaction
- Coupons used as a payment tender, or scanned by their plain coupon code, now consistently redeem for the coupon's actual per-instance value instead of falling back to the coupon's default header value. This fixes payment lines and discount lines showing the wrong amount for coupons whose value is set per issued instance rather than as a single fixed amount on the coupon.
86833 SAS Token generation issue in Sending Transaction using Storage Queue
- Expiration of SAS access tokens was fixed.
87059 Coupon with Handling::Tender cannot be used more than once in Transaction
- You can now redeem a tender coupon more than once in the same transaction, whether the eligible items sit on one line or are split across several lines. Previously, only one redemption applied unless all the eligible quantity was on a single line with a quantity greater than one.
- This fixes a regression introduced by the changes included in hotfix 28.2.4.
86777 Change in Z Report
- Z report shows denomination breakdown for every counted currency
- Work item: AB#86777 · Type: Fix · Affects version: 28.2
- Area: Backoffice — XZ Report
- The end-of-day (Z) report now prints the coin and note breakdown for every currency you count in the safe, not just one. Previously, when a register counted more than one currency (for example DKK and EUR), only the last currency's denomination breakdown appeared — the totals were correct, but the detailed breakdown for the other currencies was missing.
- Why it matters:
- Stores handling multiple currencies could not reconcile each currency's coins and notes from the Z report, making end-of-day cash counting harder to verify.
85741 Exchange Function is not working on 28 Version
- Handling of Receipt Barcode was fixed.
80119 Not possible to scan GS1 barcode on POS using GS1 version 2
- Barcodes with leading zeros are now, correctly handled in GS1 barcode handling v2.
86402 Changing quantity on deal including deal modifiers with added amount
- When you change the quantity of a deal that includes a deal modifier with an added amount, the price now correctly reflects that added amount at every quantity.
- Previously, increasing the quantity after choosing a paid modifier could quietly shrink or drop the added amount from the total.
- Action required by partners:
- None.
85142 POS Return – Reason Infocode selection not triggered when returning by receipt / from transaction list
- Reason infocode now appears for receipt and transaction-list returns.
86952 Add OnClassifyDealLineForPriceReduction event to LSC Deal Pricing Functions
- Adds a new integration event, OnClassifyDealLineForPriceReduction, to codeunit LSC Deal Pricing Functions.
- It is raised once per deal child line during deal registration, letting partners classify a line for potential exclusion from proportional deal-price reduction in a future release.
- No behavior changes in this release - existing deal pricing is unaffected.
- Action required by partners: None.
86874 Membership upgrade/downgrade batch job upgrades members with zero points
- Membership upgrades and downgrades now count only the award points a member earns within the tier calculation period. Points earned outside that period — including points that have expired — no longer push a member into a higher tier.
- Date range filters on member statistics work correctly too, so point totals match the range you set.
- Action required by partners:
- None. Run the Upgrade/Downgrade batch job (or wait for the scheduled run) to re-evaluate members on the corrected logic.
86612 Signature invalid" error on offline POS (v27) after Central upgrade to 28.2.1.3960
- This is a temporary fix.
86571 KDS crashes when KOT tickets are voided before Web KDS picks them up
- Web KDS order routing is now atomic and crash-resistant.
- Web KDS integration now reliably routes orders to the kitchen without sending duplicate kitchen tickets, even when order submissions overlap during high-volume service.
- Business Central claims each ticket atomically before sending it to Web KDS - if overlapping order events occur at the same time, only one push can claim a given ticket.
- If any ticket fails to send, it is automatically resubmitted on the next push attempt, so no order silently gets lost.
- Why it matters:
- A race condition in the previous push mechanism could send the same kitchen ticket multiple times when concurrent order operations happened at the same store. If the Web KDS endpoint received a duplicate ticket, it would reject the entire batch and crash the kitchen display, requiring manual database recovery. High-volume restaurants were affected most severely.
- This fix closes the concurrency window entirely.
- Action required by partners:
- None. This fix is applied automatically on upgrade and requires no configuration or setup. No schema/data changes and no breaking changes.
86481 Unable to Apply Store Coupon at POS When Zero-Price Item Exists in Transaction
- Tapping Total, rejected the coupon with Entered Coupons but not used and the customer paid full price.
- Coupons with Handling set to Tender, now apply when the transaction includes a line with a zero-price item.
85193 Member account downgraded with sufficient point balance
- Members are no longer moved to a lower scheme by the upgrade/downgrade job when their points still meet the downgrade limit. The member's scheme now stays unchanged.
86325 Returning transaction based on transaction with both sales entry and income expense fails
- Returning a POS transaction that generated a Customer Order and a Sales Order, with both a sales entry and an income/expense entry no longer fails with The POS Trans. Line already exists error.
86121 KOT Line Qty had a different type from the table, making the KOTs route to be not routed
- Kitchen Order Tickets (KOTs) with item lines that had a decimal quantity failed to update their KOT status in LS Central. As a result, orders never reached served status and were not cleaned up from the Web KDS database. This was fixed.
85982 Subscribe to Web Service 250 character limit
- Details not available.
85732 Average Cost Issues in Recipes Due to Refund Postings
- Refunding a recipe item at the POS no longer throws off its average cost. Previously, refunding a recipe — whether to cash or to a customer account — could post the recipe and its ingredients with an inconsistent quantity, pushing the average cost calculation to an invalid value and sometimes causing a cost adjustment error.
- Refunds now post correctly, and average cost stays accurate.
- Action required by partners:
- None. This corrects postings going forward — it does not retroactively fix average cost on entries posted before upgrading; stores that hit the overflow error historically may want to review cost entries for those items.
85625 Skip "No routing" for item error message
- The POS no longer shows a routing error banner when an item is intentionally left without a kitchen route for a given sales type. You still see No Routing on the KOT and "NR" in the journal for these items, so you can confirm routing status without an interrupting popup.
- Action required by partners:
- None.
83950 [CAS-15533-Z5H7] POS SaaS - Deal Modifier Qty. per UOM Incorrect on POS Transaction Line, Sales Entries, and Item Ledger Entries
- Deal modifiers set up with a quantity per unit of measure greater than 1 now sell the full amount.
- Before, a modifier configured for example, 3 ounces of a spirit only recorded 1 unit on the receipt, so sales totals, tax, and inventory understated what was actually poured or used.
- Action required by partners:
- None. No setup change is needed after updating.
81440 EMAIL_C command not working
- Details not available.
85577 Issue with call center
- Take an order in an offline Call Center and the selected restaurant's POS now opens, ready for you to enter items. Modifying the lines on an existing Call Center order works the same way. Previously both actions returned you to the Call Center main page without opening the POS.
- Action required by partners: None. Update to a build that includes this fix.
85300 Sales Type location not working in version 28
- Sales Type location is now respected when posting POS sales and refunds; returns against an original receipt still post to the store handling the return.
84875 DIMENSION ERROR DURING RETAIL TRANSFER ORDER POST RECEIPT
- You can now post a retail transfer order receipt without a dimension error when the receiving store doesn't have its own default value for a dimension the item requires.
84176 RFID-Error message "Scanned item not found" during RFID return - the line has already been marked for refund so we should skip the message
- During an RFID return, scanning a tag whose line is already fully marked for refund no longer shows a "Scanned item not found" error. Previously, on some configurations this could also trigger a repeating error dialog that made the POS unresponsive during the return.
83875 LS Central 28.0.8.3554 – Infocode Inputs Not Printed on Customer Order Receipts
- Infocode inputs now printed on Customer Order receipts. When an infocode is set to Print Input on Receipt, the value the cashier keys in now appears on the Customer Order receipt — just as it already does on a regular sales receipt.
- CustomerOrderGetV4 Web Service Updated.
83765 LSC Statement-Calculate: GetSerialLotSalesQty missing transaction Filters
- Fix on calculation of qty. on hand for lot/serial items during statement calculation / posting.
83588 Item lines not compressing on Store Inventory Journal
- Importing items into a Store Inventory Journal from a barcode file now fills in both the variant code and the unit of measure for every line, taken directly from the scanned barcode. With the variant code in place again, the compress lines function now works correctly.
- This affects only the file import path. Lines received from Inventory Mobile are not affected, including the safeguard that blocks an unwanted unit-of-measure change when changing the unit is not allowed.
82526 Creating a Sandbox copy from Production - error
- The active license check now skips Microsoft base tables and defers the validation to the unit/field level if needed.
80187 Scheduler job sets next check date to 2 days after running when Error Handling is set to Mark With Error and Retry
- A recurring Scheduler Job that has an Ending Time defined now schedules its next run on the correct day. Previously, a daily job with an Ending Time set and no Starting Time could push its next check date a full day too far, causing the following day to be skipped and scheduled work such as statement auto-calculation to be missed. The next check date and time are now kept within the configured run window without losing a day, and run windows that span midnight are handled correctly.
- Action required by partners: None.
SCO hotfixes
86733 SCO Databar processing functionality not demanding keys 10, 17 and 21
- Scanning a GS1 barcode at the Self-Checkout POS could raise a runtime error when the parsed GS1 data did not contain the expected key or value.
- The value is now read safely and returns blank when the data is missing, so the scan completes without an error.
Shopify BC Connector hotfixes
88470 CO Payment Line - Pre Auth not handled on POS Checkout
- There was an issue where a customer order paid with an e-commerce pre-authorization was treated as fully paid at POS checkout, even though the payment was never captured. The e-commerce integration now receives the capture request when you finish the sale, and the payment is recorded.
- This fix applies when you use an e-commerce integration without LS Commerce Server, which means Send LS Commerce Messages is off in Customer Order Setup.
- Action required by partners:
- None.
87056 Create Customer Orders fails with a string length error when the Shopify payment gateway name is longer than 10 characters. No Customer Order is created
- Creating a customer order from a Shopify order no longer fails when the payment gateway name, credit card company, or a shipping address field is longer than the field it maps to in LS Central.
- Previously, a gateway such as Nets Easy Checkout caused the whole batch conversion to abort with a string-length error and no customer order was created; these values are now truncated to fit instead.
- Action required by partners:
- None.
86949 Shopify: removal of collections and items in collections
- Your Shopify collection sync now correctly batches item removals and confirms each batch succeeds before marking it as complete.
- When more than 200 item memberships are removed in one sync pass, they are sent in multiple requests instead of one oversized request that Shopify rejects. If a removal batch fails, it is automatically retried on the next sync — no more stuck items.
- Action required by partners:
- None. The collection sync now operates transparently with existing configurations.
86945 Shopify Connector - Multiple Payment Lines in CO
- Customer orders created through the Shopify connector no longer pick up duplicate payment lines when Shopify sends both a pending and a successful transaction for the same payment.
- LS Central now only counts the successful transaction, so the order’s payment balance stays accurate.
- Action required by partners:
- None — the fix applies automatically after upgrading.
86796 Shopify Connector - Extend LS Retail Inventory Calculation from a single shop-store sourced figure to a per-location sourced figure
- Enable different stock figures for each Shopify location on the same shop. When you set a location filter on a Shopify shop location, the stock sync now calculates inventory from that specific store's location instead of using the shop's default store.
- This lets you set up local pickup or fulfillment scenarios where different Shopify locations show different on-hand quantities.
- Action required by partners:
- Before upgrading, review any Shopify shop that uses the LSC Retail Calculation method and has a non-blank location filter set on one or more of its Shopify locations. After the upgrade, those locations will report stock from their filtered location instead of the shop's default location — the number may change.
- Shops without location filters configured will use default store from the Store card.
86077 Shopify BC connector for LS Central - Tax Sync Issues in NA Shopify Store
- Force Tax Validation was added on order lines in Shopify Shop Card.
- This is for Central NA version to send with Customer order to trigger Tax code correctly in Sales Order.
85306 Shopify is not sending Prices and Inventory tracking with items
- Fixed handling of items without variants that were missing a default option in Shopify.
System hotfixes
86612 Signature invalid" error on offline POS (v27) after Central upgrade to 28.2.1.3960
- This is a temporary fix.
85858 Add POS Tag to display the status of the RFID Device
- Tag that tracks the RFID status.
82861 SC-3946-POS Tag to Show RFID Reading is Enabled at POS or Not
- Tag that tracks the RFID status.
82526 Creating a Sandbox copy from Production - error
- The active license check now skips Microsoft base tables and defers the validation to the unit/field level if needed.