Bug Fixes
- Updates Stock Reconciliation to exclude serial numbers with no remaining stock when fetching historical availability, so delivered serials don’t inflate the quantity. (#62564)
- Calculates stock adjustment amounts for Purchase Invoice using the full valuation rate instead of a rounded rate, reducing differences between invoice and stock values. (#62937)
- Updates inventory handling for batch- and serial-tracked items, transfers, returns, and stock adjustments so quantities and values are recorded against the relevant batch and warehouse. Updates "Stock Ageing" and "Batch-Wise Balance History" to reflect warehouse-specific stock details. (#60743)
- Applies the Price Not UOM Dependent setting in Price List to item rates in sales and purchase transactions and BOM costing: rates stay the same across units when enabled and scale by the unit conversion when disabled. (#60094)
- Uses accounting dimension defaults and required settings only from the company on the Asset or Asset Value Adjustment, while retaining dimension values explicitly set on the document. (#60085)
- Applies Asset access restrictions to Asset Activity lists and reports, limiting visible activity to assets each user can access. (#60053)
- Updates the "Inactive Sales Items" report to include items and sales in child item groups and territories, and to ignore credit notes when finding an item's last sale. Users with the Auditor role can run the report for group territories without Territory access. (#60083)
- Restores the "Split" action on Issue timelines, allowing users to create a new Issue from a selected communication. (#62529)
- Rejects Share Transfer issues when their share-number ranges overlap shares already issued for the same company and share type, including when a new range contains an existing range. (#62998)
- Allows users without the System Manager role to run affected reports, including "General Ledger", by removing the extra access requirement from columns that display document types. (#63059)
- Blocks saving an Asset Repair for an Asset with Status set to Capitalized, preventing the repair from changing the asset’s status. (#63087)
- Restricts data-changing actions to POST requests; scripts that call them with GET must switch to POST. The "Pay" button on the Sales Order portal page continues to work with the updated request method. (#62520)
- Website users and web-form submitters cannot set an Issue’s Customer or Status through submitted values; new issues start as Open, and web-form issues use the signed-in user as Raised By. (#62666)
- Fixes cancellation of Asset Value Adjustment so the asset’s salvage value is restored and its depreciation schedule is rebuilt using the restored value. (#63076)
- When a batch-tracked item is added again in Point of Sale, batch selection opens so it can be added from a different batch instead of increasing the first batch’s quantity. POS Invoice returns release batch reservations for returned stock. (#62948)
- Checks combined allocations in Payment Entry against the amount still due on an invoice or payment term, rejecting allocations that exceed the balance. Dunning accounts for earlier payments not assigned to payment terms when calculating the amount still due. (#62950)
- Splits transaction-currency amounts among the cost centers in a Cost Center Allocation, so the "General Ledger" shows each cost center’s share instead of repeating the full amount. Amounts follow the currency’s decimal precision, with rounding differences carried forward across the split. (#62952)
- Prevents the "Create Print Format" action in Cheque Print Template from overwriting an unrelated Print Format with the same name; it updates only formats previously generated for that cheque template. (#62954)
- Updates automatic email scheduling in Process Statement Of Accounts so emails start on the configured date, resume after missed runs, and keep their next send date when unrelated fields are edited. Bases the ageing summary on the statement period end date. (#62956)
- Blocks users from opening an Asset Activity record when they lack permission to view its linked Asset. (#62958)
- Preserves fixed-amount and percentage discounts, along with their discount dates, when payment schedules are fetched from orders or quotations. (#63010)
- Updates Payment Reconciliation to list Employee journal entries as invoices or payments based on the selected account type, and remove fully settled entries from outstanding items. Employee reconciliations now allow both Receivable and Payable accounts, with exchange adjustments posted in the appropriate direction. (#63012)
- Updates coupon handling in sales documents so changing a coupon recalculates discounts and free items, and each coupon applies its linked Pricing Rule. Gift Card use is restricted to its assigned customer, Quotation checks coupon dates, usage limits, and customer ownership, and generated Coupon Code values omit spaces and avoid existing codes. (#63021)
- Updates Dunning payments to use the receivable account’s currency and account for earlier payments across overdue installments, so generated payments reflect the remaining amount due when invoice and bank currencies differ. (#62996)
- When creating a Sales Invoice from a Sales Order, each line now carries the item's Enable Deferred Revenue setting. (#63164)
- Updates item checks in Purchase Material Requests so items copied from different customers’ Sales Orders aren’t all checked against the same customer’s restrictions. (#63253)
- When a Purchase Order uses an item’s Last Purchase Rate because no submitted purchase is available, it now converts the rate to the item’s selected unit and the order’s currency, including when using "Update Rate as per Last Purchase". (#63264)
- Excludes delivered serial numbers from reserved stock counts, allowing returned items to be reserved or picked again. (#63272)
- Refreshes ordered quantities on Blanket Orders when their rows are removed using "Update Items". (#63266)
- Corrects Item and BOM searches so users can find permitted records when a company or item group name contains
%. (#63255) - Prevents closing a Sales Order while stock is reserved and keeps reservations when "Update Items" changes only item rates. Updates Returned Qty when a return Delivery Note is submitted without reloading, and checks the order’s status before applying status changes. (#63308)
- A Pick List now skips serial numbers reserved for other orders when selecting stock, reducing submission failures caused by picking those reserved serials. (#63336)
- Checks Pricing Rule conditions before choosing which rule takes priority, so a rule that does not match no longer blocks another eligible rule from applying. (#62805)
- Allows users to create a Purchase Invoice from a Purchase Order line when its quantity is fully billed but part of its amount remains, supporting progressive billing for lump-sum services. (#63347)
- Updates "Update Items" to retain the Price List Rate and record the difference from the entered Rate as a discount or margin on new rows in Sales Order, Purchase Order, Quotation, and Supplier Quotation; changing a new row’s UOM also refreshes its price list rate. (#63350)
- Fixes an error when adding Additional Costs to Stock Entry, Subcontracting Order, or Subcontracting Receipt by handling the exchange rate in the correct table. (#63393)
- When suppliers create a Purchase Invoice from the portal, rows with a quantity of zero are omitted so the invoice can be saved with the remaining items. (#63389)
- Excludes item templates from both the Item filter and results in the "Inactive Sales Items" report. (#63484)
- Uses the system time zone for Timesheet timer start and end times, so differences between browser and system time zones do not distort recorded durations. (#63486)
- Updates Call Log handling so agents can save their own call summaries, transferred calls are assigned to the new agent, timeline entries respect access permissions, and calls match contacts and leads by phone-number digits. Corrects Warranty Claim handling so Resolved By records the service person’s user, warns when a serial number was not delivered to the claim customer, and keeps completed claims closed after partial visit changes; updates Issue and Service Level Agreement tracking to select the most specific agreement active on the current date, count pauses using working time, and record response, resolution, and overdue statuses based on deadlines. (#63475)
- The Bank Reconciliation Tool now loads its summary cards before displaying the reconciliation table, so the cards appear when an account is selected while the tool is still loading. (#63499)
- Updates Payment Entry to record payment-term discounts only when they are deducted, so later payments include only the remaining invoice balance. (#63325)
- Rounds Unallocated Amount in Payment Entry after converting it to the party account’s currency, using that currency’s decimal precision. It also includes transaction-currency values when updating an existing deduction to the Round Off account, preventing mismatches between company- and transaction-currency balances. (#63204)
- Calculates rejected-item values on Purchase Receipts in the company’s currency, so foreign-currency receipts use the converted amount when valuing rejected stock. (#63237)
- Manufacturing now uses company-currency amounts for non-stock item and operating costs in foreign-currency BOMs, so converted costs are reflected in finished-goods valuation and additional-cost entries. (#63235)
- Limits the portal "Pay" button to submitted Sales Order and Sales Invoice documents with an amount due that the linked customer is authorized to pay; purchase documents and users without the required access no longer see it. Checkout now uses a protected form. (#63231)
- Requires a submitted Period Closing Voucher and blocks duplicate or repeated processing in Process Period Closing Voucher to prevent duplicate closing entries. Processing remains in progress until the closing entries are posted. (#63057)
- Keeps the accounting entries for asset sales and returns unchanged when they are reposted with the "Repost Accounting Ledger" report. For purchase debit notes, reverses tax withheld at the original invoice’s Lower Deduction Certificate rate for the amount previously deducted at that rate, even if the certificate has expired or reached its limit; any remaining amount uses the tax category rate. (#63519)
- Allows loyalty points earned on one invoice type to be redeemed on another, including between POS Invoice and Sales Invoice, and deducts the redeemed points from the customer’s balance. (#62450)
- In Point of Sale, hides the invoice discount control and prevents users from opening its editor when Allow User to Edit Discount is disabled in POS Profile. (#63217)
- Requires the Increment in numeric Item Attribute settings to be greater than zero; positive fractional increments remain allowed. (#63213)
- Updates Last Purchase Rate in Purchase Order rows to reflect the current unit of measure and conversion factor when the order is saved or its items are updated. (#63554)
- The "Gross Profit" report now uses each undelivered invoice’s posting date and time, stock batch details, and quantity to calculate its buying amount. (#62811)
- Allows separate Authorization Rule entries to share an approver when their company, customer or item, or approval limit differs, while still blocking exact duplicates. Limits discount rules to 0–100% and checks that the selected customer, item, or item group matches the rule. (#62613)
- Requires at least one lost reason before a Quotation can be marked Lost, and lets Sales Users and Sales Managers create Quotation Lost Reason records without granting them permission to edit or delete them. (#62743)
- Saving Global Defaults no longer overwrites the rounding setting in POS Profile records when Disable Rounded Total has not changed. The Disable In Words setting now also hides In Words fields in Payment Entry and Subcontracting Receipt. (#62736)
- Clears Incoterm and Named Place when creating a supplier Purchase Order from a Sales Order, so customer delivery terms are not copied to the supplier order. (#62738)
- Validates that parties in Payment Entry and Journal Entry use a registered Party Type with a matching Account Type, and displays custom parties using their configured title. Accounts Managers and System Managers can create and edit Party Type records, but cannot change Account Type after ledger entries exist. (#62741)
- Allows a returned serial number to be reserved again when it was delivered from a partially fulfilled stock reservation. (#63258)
- When creating a Delivery Note or stock-updating Sales Invoice from a Sales Order, reserved serial numbers are used first for the matching order row, and any remaining quantity comes from unreserved stock. (#63368)
- Allows older Cheque Print Template records to update their generated Print Format after layout changes, while protecting customized or unrelated formats. The form refreshes after an update so further edits can be saved without manually reloading. (#63624)
- Updates Point of Sale so repeated clicks on a batch-tracked item increase the existing cart line, and adds an "Add Another Batch" option for selecting another batch. Keeps items with selected serial numbers separate from items awaiting serial selection, so serial scans update the appropriate cart line. (#63643)
- When you amend or duplicate a Bank Transaction, its draft Status now resets to Pending instead of carrying over Cancelled or Reconciled from the original. (#63233)
- Updates over-billing checks for returns: returns that do not increase an order’s billed amount no longer trigger the limit check, while returns that increase it remain subject to the limit. (#63556)
- Counts transferred materials on Job Card in stock units, so transfers entered in another unit are compared with the required quantity on the same basis. (#63229)
- Fixed-amount taxes are now divided only among items they apply to; if those items have a zero combined net total, the full amount goes to the last applicable item. Taxes calculated from an earlier tax row now use this corrected split. (#63023)
- Checks an item's maximum discount for discounts entered as a fixed amount or through a reduced price, as well as a percentage, and rejects sales documents that exceed the limit. (#63210)
- A Delivery Note created from a Pick List now includes only the undelivered quantities of product bundles, rather than repeating quantities from earlier deliveries. The Pick List asks whether to continue if draft Delivery Notes already exist, before creating another one. (#62978)
- Adds Journal Entry to the connections shown on Payment Entry, making it easier to find linked exchange gain or loss entries. (#62973)
- Caps payment-term allocations in Payment Entry at the invoice’s remaining balance when currency rounding would otherwise make them exceed it, allowing affected foreign-currency payments to be saved. (#63628)
- Marks earlier Dunning notices as resolved when a later payment covers their charges, preventing those fees or interest from being collected again. Cancelling the payment reopens notices that were resolved automatically. (#63626)
- When a Payment Entry references a Journal Entry, it uses the exchange rate recorded in that entry to calculate currency differences instead of looking up a rate for the posting date. (#63215)
- Limits editing POS Settings to Accounts Managers and System Managers; Sales Users and Accounts Users retain read access. Requires fields marked mandatory in POS Settings to contain a value before a POS Invoice can be submitted. (#63620)
- Fixes an error that prevented cashiers from using "Add Another Batch" in Point of Sale to add a second batch of an item to the cart. (#63823)
- Posts accounting entries when a zero-priced item changes stock value in a Purchase Receipt or a Purchase Invoice with Update Stock enabled, recording the change in the accounts. (#63806)
- Updates stock valuation and accounting for returned Purchase Receipts, including when Set Valuation Rate for Rejected Materials is disabled. (#63534)
- Skips stock valuation reposting when cancelling a Purchase Receipt that did not affect inventory, so receipts containing only non-stock items can be cancelled even when their posting date falls in a closed period. (#62980)
- When a Work Order is disassembled more than once, earlier returns are deducted from available batch quantities so the same material isn’t returned twice. Batch quantities are rounded to the allowed precision, and batches with no usable quantity are skipped. (#63038)
- Recalculates grand-total discounts after a shipping rule changes the shipping charge, so totals reflect the updated charge, including on documents without taxes. (#63850)
- Changing the date or exchange rate on a multicurrency Sales Invoice or Quotation keeps the item rates and tax amounts you entered. The amounts shown in your company currency still update with the new rate. (#63770)
- Allows Sales Orders to remove a rate Pricing Rule that no longer applies when an item has no saved price; if no replacement price is available, the current rate is kept. (#63839)
Performance Improvements
- The "Warehouse Wise Stock Balance" report calculates warehouse levels and parent balances in fewer passes, reducing processing time for large warehouse lists. (#63219)
- Speeds up Repost Item Valuation by reusing already loaded stock entries and avoiding repeated reordering as related items are added, while keeping the same processing order. (#63667)
- When stock entries are reposted, Stock Reconciliation refreshes only the affected row instead of every row, reducing processing for reconciliations with many items. (#63669)
Authors: @Shllokkk, @Pandiyan5273, @khushi8112, @nishkagosalia, @nabinhait, @rohitwaghchaure, @mihir-kandoi, @ervishnucs, @Sudharsanan11, @krishna-254, @Afsalsyed For these release notes, we used an LLM (OpenAI gpt-6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt here.
Changes with the following labels were excluded:
Changes with the following types were excluded:
Reviewers: @Pandiyan5273, @nareshkannasln, @khushi8112, @nabinhait, @rohitwaghchaure, @mihir-kandoi, @diptanilsaha
AI content