github frappe/erpnext v15.124.2

latest release: v16.53.0
2 hours ago

Bug Fixes

  • Updates SMS Center recipient lists to include unlinked Contact records, list contacts linked to multiple records only once, and exclude disabled Sales Person and inactive Employee records. It also uses Lead Mobile No values and correctly extracts phone numbers from recipient entries. (#61683)
  • Fixes stock and order handling, including item-price selection, warehouse and weight updates, links between Sales Orders and Purchase Orders, and customer shipping addresses on drop-ship Purchase Orders. Also fixes an accounting default issue and removes comments, versions, and attachments when old logs are deleted. (#60744)
  • The item barcode scanning dialog now shows an error and plays the configured failure sound when a scanned barcode, batch, or serial number does not match the selected item. (#61804)
  • When you disassemble a manufactured Stock Entry in multiple partial entries, each later entry skips serial numbers used by earlier disassemblies of the same source. (#61821)
  • Adjusts the Must Be Whole Number check to account for small rounding differences in unit conversions, so quantities that round to a whole number aren’t rejected as fractional. (#61853)
  • Partial disassembly now allocates whole quantities for components with whole-number units, accounting for earlier entries and assigning the remainder to the entry that completes the source; batch quantities are also taken from what remains. (#61851)
  • Checks Installation Note quantities against the related Delivery Note, excluding returned and non-stock items from the installation limit. (#61824)
  • Updates Item Price to use the selected Customer for Reference when a price list is enabled for both buying and selling; when no customer is selected, it uses the Supplier. (#61849)
  • Limits portal users to editing or deleting only Issue records they raised, while allowing them to view other issues linked to their customer. (#61754)
  • Runs the "General Ledger," "Balance Sheet," "Profit and Loss," and "Trial Balance" reports on live data instead of snapshots when a user has company-based restrictions on GL Entry, so the results reflect their permissions. (#61756)
  • When Contact Us is disabled, submissions no longer create Lead or Opportunity records; they link to a Customer only when the sender’s email matches the signed-in user’s email, regardless of capitalization. (#61755)
  • Checks customer-specific item restrictions on Opportunity items and when updating items on submitted transactions. Allows Party Specific Item rules to be edited without flagging themselves as duplicates. (#61921)
  • Updates release settings so breaking changes on the stable branch do not trigger a major version bump. (#61978)
  • Corrects how special characters appear in Task details and commenter email addresses on the task information page. (#62001)
  • Displays task, project, and assignee names as plain text in the Task Gantt popup and uses the correct links to open Task and Project records. (#61991)
  • Users can view stock-item valuation rates only for warehouses they’re permitted to access, including when the warehouse comes from the item’s defaults. (#62026)
  • Corrects how rate-maintenance rules apply to buying and selling transactions and refreshes company monthly sales totals on the configured daily or monthly schedule. The Hide Tax ID setting now also hides the tax ID on POS Invoice. (#61977)
  • Applies Party Specific Item rules set for an item template to its variants, so customer-specific restrictions also affect which variants customers can find and use in sales transactions. (#61879)
  • The activity heatmap on Item excludes cancelled stock movements, so they no longer inflate the displayed count. (#62017)
  • Journal Entry records created from a Payment Order now use the order’s company, and Payment Order references use the request’s outstanding amount in the supplier’s account currency. Payment Orders accept only enabled bank accounts belonging to their company, while Payment Requests accept enabled accounts belonging to their company or the specified party. (#61957)
  • Treats billing percentages at the completion threshold as 100% when updating statuses, so a nearly fully billed Sales Order can progress to the correct delivery status. (#62077)
  • Matches selected Sales Order rows individually when creating Purchase Orders, so repeated items go to their assigned suppliers and unselected rows are excluded. (#62087)
  • Converts the default fee in a Dunning Type to the invoice currency and generates Dunning letters after calculating totals and interest. Rejects overdue payment entries that reference the wrong Sales Invoice or payment schedule, exceed the outstanding balance, or are not yet due. (#62089)
  • Allows automatically calculated component quantities in disassembly Stock Entry records to pass validation when unit conversion rounding causes a small difference, while still rejecting quantities that exceed the expected amount. (#62079)
  • Adds a finished-good row to Stock Entry records made from a Work Order even when no serial numbers are available, so the entry can report a missing Serial Number Series instead of failing because the row is absent. Shows the serial/batch reset message only when a serial number or batch was selected. (#62075)
  • The Sales Person activity heatmap counts only submitted Sales Orders, Delivery Notes, and Sales Invoices, excluding drafts and cancelled documents. (#62055)
  • Allows changing the Default Valuation Method in Stock Settings when only cancelled Stock Ledger Entry records remain; active entries still block the change. (#62113)
  • Checks user access before showing POS Profile and Item details, updating BOM costs, or listing Job Card records for a Workstation. The BOM configurator displays tree values as text instead of interpreting them as page content. (#62096)
  • Allows users to change an Item’s Default Unit of Measure when only cancelled stock ledger entries remain and no outstanding quantities prevent the change. (#62180)
  • When naming an Account or Cost Center, displays a clear error identifying a company that is missing or has no abbreviation instead of a type error. (#62187)
  • Preserves Profit and Loss Summary and Balance Sheet Summary under their correct headings when users revisit a calculated node in Bisect Accounting Statements. (#62176)
  • Makes browser tax calculations follow the Round Tax Amount Row-wise setting, so recalculated taxes match server totals when updating submitted documents. (#62223)
  • Allows users with the required role access to select a party in Payment Entry when Ignore User Permissions is enabled for the party field, even if individual user permissions would otherwise block it. (#62238)
  • Shows the account-payee message and its border lines in Cheque Print Template previews and print formats only when Is Account Payable is enabled. (#62231)
  • Removes an unused Stock Entry component that could cause ERPNext installation or update checks to fail. (#62266)
  • Accounting dimension fields in Stock Entry, Asset, and Asset Repair appear in the accounting dimensions section instead of the Connections tab. (#62271)
  • Preserves discounts from Pricing Rule records when item quantities change on selling transactions, keeping the discounted rate and amount in place. (#62272)
  • Clears Source Warehouse from Material Request rows when the purpose is not Material Transfer, so a hidden warehouse value that matches Target Warehouse does not block saving. (#62267)
  • When updating an item's Last Purchase Rate, the lookup skips return Purchase Receipt and Purchase Invoice records, including when buyers use "Get Last Purchase Rate" on a Purchase Order. (#62245)
  • Restricts Recalculate Valuation Rate in Repost Item Valuation to transaction-based reposts for Purchase Receipt, Purchase Invoice records with Update Stock, and non-transfer Stock Entry records; the option is rejected for stock transfers and other repost types. (#62291)
  • Updates "Get Outstanding Order" in Payment Entry to split each fetched order by its payment schedule and show the correct amount for every installment. (#62270)
  • HR User and HR Manager roles can link, unlink, and update regular User accounts through Employee records, but only System Managers can manage links to accounts with administrative access. (#61753)
  • Makes 20 previously untranslated labels, dialog descriptions, and tour titles available for translation in ERPNext. (#62329)
  • Cheque print formats generated from Cheque Print Template now spell payment amounts using the company currency and its fractional unit. (#62340)
  • When stock transfers are reposted, the receiving side now uses the value recorded for stock leaving the source warehouse, preventing rounding differences from being posted as stock adjustments. (#62342)
  • Removes an account type unavailable in versions 15 and 16 from four Belgian chart of accounts, so Company setup can complete with those templates. (#62355)
  • Corrects the Delivery Note credit-limit check so it counts uninvoiced amounts once, after discounts and conversion to company currency. (#61842)
  • Chart of Accounts Importer now checks for incomplete rows, circular or missing parent accounts, and missing required account types before replacing existing accounts. (#62388)
  • The Chart of Accounts Importer now respects links when replacing a chart, so accounts still used by other records block the replacement. It also deletes tax templates with their tax rows and lets Accounts Managers replace charts without Purchase Master Manager permissions. (#62384)
  • Updates Product Bundle packing to use each component’s unit of measure, reject self-referencing or nested bundles, and keep packed rows in sync when a component appears more than once. (#62168)
  • Preserves valid purchase-row links for Asset records when they are saved or split, preventing them from being replaced by another matching row. When no valid link exists, Asset creation uses a row for the same item with enough unassigned quantity, and canceled Assets release that quantity. (#62375)
  • Restricts Process Payment Reconciliation Log records so Accounts Users and Accounts Managers can view or delete them, but cannot create, edit, or share them. Before processing, payment reconciliation checks saved allocations against current invoice balances and rejects amounts that exceed the balance owed. (#62366)
  • Changes Subscription timing so an unpaid invoice becomes overdue the day after its due date, and the subscription gets the full configured grace period before it is marked unpaid or cancelled. Clarifies in Subscription Settings that Grace Period is counted from the invoice due date. (#62258)
  • In Bank Clearance, updates are limited to submitted vouchers users can view and edit, clearance dates cannot precede posting or cheque dates, and dates cannot be changed while vouchers are allocated to submitted bank transactions. Invoice amounts are displayed in the bank account’s currency. (#62263)
  • Budget checks for Purchase Orders and purchase-type Material Requests now count outstanding commitments across all items using the same budget account and dimension, so submissions that exceed the budget are rejected. (#62377)
  • Material Requests from Production Plan now use the saved item rows, and creating them requires edit access to the plan. (#62394)
  • Keeps manually entered item Rate values when a Pricing Rule is considered but not applied, instead of replacing them with the price list rate. (#62442)
  • The Request for Quotation portal now embeds only the details needed to submit a Supplier Quotation, rather than the full request record. (#61938)
  • Desk users see and manage only their own Voice Call Settings. (#61926)
  • Updates Call Log to send missed and ended call updates to agents assigned to the called number, so an open call popup closes even if the agent’s scheduled availability ends during the call. (#61928)
  • Limits appointment availability checks on the booking page to 60 requests per minute. (#61930)
  • Requires users to have permission to edit a document before resetting its service-level agreement, and permission to view a payment document before checking its references. (#61932)
  • Removes HTML tags from the Contact Us form’s Subject before saving it as an Opportunity title or Communication subject, so these fields contain plain text. (#61934)
  • Cleans file names for files attached during Code List imports and uses genericode.xml when no usable name remains. (#61936)
  • Links in Appointment verification emails now use the site's configured address, and verifying a booking no longer changes the visitor's login session. (#61940)
  • The "Item-wise Sales History" report uses the default company when no company is selected and returns no results if none is set, so the Selling dashboard chart displays an empty state instead of an error. (#62466)
  • Checks the target Asset before loading its tagged items from Purchase Receipt records for work-in-progress composite asset capitalization. (#62480)
  • Fixes an error that prevents the BOM tree view from loading the full assembly structure during search. (#62448)
  • Updates the "Stock Analytics" report to show opening stock in periods without transactions, place transactions in the correct week, and include periods through the selected end date. It also limits results to warehouses the user is allowed to view. (#62129)
  • The duplicate-entry check for Stock Entry includes a Work Order’s configured overproduction allowance, allowing additional manufacturing entries while the total remains within that limit. (#62506)
  • When Make Serial No / Batch from Work Order is enabled, submitting a Work Order now reports when a serialized item lacks Serial Number Series or a batch item lacks Automatically Create New Batch, so users can correct the item setup or disable the setting before manufacturing. For overproduction, a Stock Entry can add a finished-good row and create a new batch after the Work Order’s existing batches are used. (#62460)
  • Checks users’ permissions before loading details for selected target and consumed assets in Asset Capitalization. (#62509)
  • Keeps supplier-quoted rates, including zero rates, in Supplier Quotation records created through the Request for Quotation portal, without replacing them with buying pricing rule rates. (#62300)
  • Requires users to have read access to the outgoing Stock Entry before its items are added to a material-transfer stock-in entry. (#62501)
  • Prevents direct edits to share balances in Shareholder records; balances can only be changed through Share Transfer. It also blocks changing a shareholder’s company assignment or company-shareholder status, or deleting the record, when shares or submitted transfers are linked. (#62386)
  • Allows HR users to upload an image on an Employee record linked to a User without write access to User; the image also updates the linked user’s profile image. (#62593)
  • Cancels the linked exchange gain or loss Journal Entry when a return is fully unreconciled, preventing the same exchange difference from being booked again when the return is reconciled. (#62433)
  • Validates that payments applied to a Dunning match its customer, company, income account, and charge amount, and requires a valid exchange rate and income account when charges apply. A Dunning cannot be cancelled while linked payments remain active, and draft or cancelled records display the matching status. (#62435)
  • Checks the decimal total of allocation percentages in Cost Center Allocation, avoiding false rejections when the percentages add up to 100% while still rejecting totals that differ. (#62591)
  • Refreshes Status on the original Sales Invoice or Purchase Invoice when a linked return is submitted or cancelled, so a paid invoice shows “Credit Note Issued” or “Debit Note Issued” as applicable. (#62531)
  • Limits external currency-rate lookups to users with system access, checks currency names and dates, and stops provider requests that exceed a time limit. Changing Currency Exchange Settings clears cached rates, and invalid provider responses are reported instead of being saved as zero. (#62484)
  • Updates Stock Reconciliation to check only non-cancelled stock entries for the selected company when validating Difference Account, so entries in other companies or cancelled entries do not allow a Profit and Loss account for opening stock. (#62603)
  • Updates customer credit-limit calculations to deduct returned goods from outstanding standalone Delivery Note amounts, including when the return is credited through a Sales Invoice. (#62438)
  • Displays the Message to Show from Cheque Print Template as literal text in previews and generated cheque print formats, so HTML and template-like text are not rendered or evaluated. Updates existing formats when their message matches the saved template and leaves unmatched custom content unchanged. (#62452)
  • The "Profitability Analysis" report now shows only Cost Center, Project, and Accounting Dimension values users can view; cost centers appear at the top level when their parent is not accessible. Reports by accounting dimension also require permission to view the selected Company. (#62549)
  • Updates the "Trial Balance for Party" and "Customer/Supplier Ledger Summary" reports to check users’ access to the selected company and show only ledger entries they’re permitted to view. (#62589)
  • Validates that each child Cost Center in a Cost Center Allocation belongs to the selected Company and identifies the offending row when it does not. (#62687)
  • Updates cheque print templates to display the Bank Account No from Payment Entry, including leading zeros. (#62691)
  • The Chart of Accounts Importer selects default receivable and payable accounts in the company’s currency, leaving the default unset if no matching account exists. (#62689)
  • When a site is updated, the system copies Posting Datetime from Stock Ledger Entry to Serial and Batch Bundle records in batches. This limits the amount processed at once on sites with large stock histories. (#62663)
  • Rejects duplicate dates in Holiday List entries when a newly added date is entered as text but matches an existing holiday. (#62617)
  • Call popups now use the current user account for active employees in Employee Group records, rather than outdated saved details. Employee Group lists show full employee names and prevent adding the same employee more than once. (#62619)
  • Lets users save a Vehicle with only one insurance date entered, while still rejecting dates where the start is later than the end. The Vehicle dashboard shows Vehicle Log only when it is available and continues to show Delivery Trip. (#62621)
  • Checks that a Driver is active and has a valid licence on the departure date before a Delivery Trip can be submitted, and rejects licence expiry dates earlier than issue dates. Updates Driver records to clear the linked user when an Employee is removed, preserve a manually selected user when the Employee has no user, and limit employee email access to users who can view that Employee; Fleet Managers can also create, edit, and delete Driver records. (#62698)
  • Sales target variance reports now limit actual sales to the selected company, include sales from descendants in group targets, and count matching sales only once when target entries overlap. Negative target amounts and quantities are rejected when saving Territory, Sales Person, and Sales Partner. (#62696)
  • Checks Share Transfer amounts at the configured currency precision, allowing valid totals from fractional rates to pass validation after a draft is reloaded. (#62776)
  • Warehouse-specific stock details and quantity lookups now respect users’ Warehouse permissions: inaccessible default warehouses stay blank, and requests for restricted warehouses are rejected. (#62024)
  • When all payments are cancelled, a foreign-currency Payment Request returns to Initiated for outgoing requests or Requested for incoming requests instead of showing Partially Paid. (#61844)
  • Preserves manually entered discounts and their discount basis when no coupon is selected, instead of clearing them because a coupon-based Pricing Rule matches the invoice. When a coupon is removed, clears its previously applied discount while retaining manual discount changes, including on older invoices. (#62772)
  • Updates Cheque Print Template to show Payment Entry amounts in the bank account’s currency in figures and words, using the selected print language. (#62701)
  • Accounting dimension validation messages now show translated labels for mandatory and invalid values, with a readable fallback name when a dimension field is missing. (#62487)
  • Fixes an issue that prevented users from opening the Company Address list on Dunning records without items. (#62802)
  • Limits ledger previews on draft stock transactions to users who can view the corresponding GL Entry or Stock Ledger Entry records; users without access no longer see the preview buttons or ledger details. (#62809)
  • Setting an Employee’s Status back to Active re-enables the linked User only if you can edit user accounts or the Employee status change disabled that user; otherwise, the User stays disabled and a message explains why. (#62827)
  • Adds an Incoming Rate (Costing) field to standalone returns in POS Invoice and asks for a rate when the return is saved; POS Closing Entry carries that rate into the consolidated return. The missing-rate message now points users to this field instead of the Item master. (#62821)
  • Updates batch filtering in the Serial and Batch selector for Stock Entry to follow whether an item row is incoming or outgoing, making empty batches available for incoming items even before a purpose is selected. (#62866)
  • Sales returns for product bundles now use serial and batch numbers from Delivery Note records without a Serial and Batch Bundle and value returned stock using the original delivery rate. When a new document is created from an existing one, packed components keep their serial and batch details with the correct bundle item. (#62765)
  • Only submitted Quotation records can be marked as lost, and lost or expired quotations cannot be invoiced. "Update Items" now recalculates quotation status, including alternative item sets that have not been ordered, and refreshes bundled items. (#62864)
  • Uses the first scheduled time slot to set an operation’s Planned Start Time in a Work Order. Clears a Job Card’s Actual Start Date and Actual End Date when all time logs are removed. (#62881)

Performance Improvements

  • Saving accounting and stock documents now happens faster thanks to cached budget checks, pricing rules, and stock quantities. The update also removes redundant database lookups, reducing wait times during submission. (#62296)

Reverts

  • When stock transactions are recalculated, purchase returns for Moving Average items use the current average cost rather than the original purchase rate, with any difference recorded as an expense. (#61963)

Authors: @Jatin3128, @barredterra, @ankush, @Afsalsyed, @krishna-254, @nishkagosalia, @Sudharsanan11, @kaulith, @Shllokkk, @rohitwaghchaure, @Pandiyan5273, @sokumon, @khushi8112, @mihir-kandoi, @nabinhait, @diptanilsaha
Reviewers: @ruthra-kumar, @nareshkannasln, @frappe-guard[bot], @khushi8112, @mihir-kandoi, @diptanilsaha

AI content

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:

  • skip-release-notes

Changes with the following types were excluded:

  • ci
  • refactor
  • build
  • style
  • docs
  • chore
  • test

Don't miss a new erpnext release

NewReleases is sending notifications on new releases.