github frappe/erpnext v16.53.0

2 hours ago

Features

  • Rebuilds BOM Creator as a design workspace for importing STEP or CSV files, organizing parts and quantities, and creating bills of materials with optional production operations; STEP designs can also be viewed in 3D. Adds tools to create and compare design revisions. (#62170)

Bug Fixes

  • Restores the v15 behavior of party-specific item rules: parties with rules can select and save only matching Item records, while parties without rules are unaffected; Customer Group and Supplier Group rules also apply to their members. (#61764)
  • Updates SMS Center recipient lists to use mobile numbers from Lead records, include Contact records that aren’t linked to other records, and avoid listing the same contact more than once; disabled Sales Person records and inactive Employee records are excluded. It also correctly reads phone numbers from the recipient list. (#61682)
  • 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. (#61805)
  • 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. (#61822)
  • The sales commission setting in Selling Settings now shows or hides the Commission and Sales Team sections in Sales Invoice, Sales Order, Delivery Note, and POS Invoice. (#61803)
  • 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. (#61852)
  • Updates the BOM warning for steps without raw materials to include the Output Item name and point users to "Add Raw Materials" in the Steps section; steps without an Output Item no longer show this warning. (#61831)
  • Checks Installation Note quantities against the related Delivery Note, excluding returned and non-stock quantities from the installation limit. (#61823)
  • 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. (#61880)
  • 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. (#61850)
  • 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. (#61845)
  • Corrects the Delivery Note credit-limit check so it counts uninvoiced amounts once, after discounts and conversion to company currency. (#61843)
  • Lets customer portal users view issues for their customer but change only the Issue records they raised. (#61750)
  • When snapshot mode is enabled, runs the "General Ledger", "Balance Sheet", "Profit and Loss", and "Trial Balance" reports on live data for users with permissions on GL Entry, applying those restrictions to opening and closing balances. (#61752)
  • When the Contact Us form is disabled, submissions no longer create a Lead or Opportunity; messages match a Customer only when the sender address matches the signed-in user’s email. (#61751)
  • Checks customer-specific item rules when users change items on submitted Sales Order records or add them to Opportunity records, and applies rules set for a customer group to its subgroups. (#61920)
  • Rounds remaining amounts to the Repair Cost precision in Asset Repair, allowing a repair to use the full amount left on a Purchase Invoice without rejection due to tiny rounding differences. (#61877)
  • Updates release settings so breaking changes on the stable branch do not trigger a major version bump. (#61979)
  • Allows Payment Terms Template calculations to accept date values for Posting Date and Bill Date, avoiding errors when documents pass dates directly. (#61989)
  • 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. (#61992)
  • Corrects how special characters appear in Task details and commenter email addresses on the task information page. (#62002)
  • 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. (#62027)
  • Updates Selling Settings so the Maintain Same Rate option is applied as configured, company monthly sales refresh daily or monthly, section toggles take effect on new and existing sites, and POS invoices hide the tax ID when enabled. (#61975)
  • Fixes internal transfer validation so it uses the rate rules and override permissions configured in Accounts Settings. (#62054)
  • Checks that users have permission to view a POS Profile or Item, and to update delivered quantities on a Purchase Order; Workstation job-card lists show only records users can access. The BOM Configurator safely displays values in its component tree. (#62095)
  • The activity heatmap on Item excludes cancelled stock movements, so they no longer inflate the displayed count. (#62018)
  • 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. (#62090)
  • Matches selected Sales Order rows individually when creating Purchase Orders, so repeated items go to their assigned suppliers and unselected rows are excluded. (#62088)
  • 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. (#62078)
  • Updates the advance payment status in Sales Order and Purchase Order to include payments recorded through Payment Entry, including payments in a different currency. (#61946)
  • 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. (#62080)
  • 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. (#62076)
  • 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. (#61958)
  • Allows changing the Default Valuation Method in Stock Settings when only cancelled Stock Ledger Entry records remain; active entries still block the change. (#62114)
  • Updates Delivery Schedule Item quantities, units, and warehouse details when a Sales Order item’s quantity or unit changes, and removes schedules when items or orders are deleted. (#62120)
  • Makes Delivery Schedule Item records read-only for Sales and System Manager roles while allowing Sales Order to create schedule entries. (#62141)
  • The Sales Person activity heatmap counts only submitted Sales Orders, Delivery Notes, and Sales Invoices, excluding drafts and cancelled documents. (#62056)
  • The Dunning dialog now fetches overdue payments from selected Sales Invoice records and includes only selected installments, while keeping create and read permission checks in place. (#61915)
  • 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. (#62181)
  • The upgrade now skips non-applicable tax rates when converting item-wise tax details, so they no longer cause the migration to fail. (#62190)
  • Releases a paused Job Card from On Hold when its required quantity is accounted for, allowing it to be submitted. (#62200)
  • Company default buying and selling terms are now applied only to draft transactions, so opening a submitted transaction no longer adds terms that can block permitted updates. (#62204)
  • Corrects totals and filters across financial statement, trial balance, ledger, profit, budget, and asset reports, including currency conversions, fiscal-year balances, and finance book entries. Reports also apply company and user access restrictions, and invalid ledger entries linked to canceled invoices or deleted vouchers are flagged. (#62174)
  • 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. (#62188)
  • Preserves Profit and Loss Summary and Balance Sheet Summary under their correct headings when users revisit a calculated node in Bisect Accounting Statements. (#62177)
  • Makes browser tax calculations follow the Round Tax Amount Row-wise setting, so recalculated taxes match server totals when updating submitted documents. (#62224)
  • Updates the "Stock Balance" report to show dimension-wise balances and balances set by adjustment entries in Stock Reconciliation, including when stock closing entries exist. The "Stock Ledger" report now respects the Batch No filter and shows batch values for older entries without a serial and batch bundle. (#62146)
  • 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. (#62239)
  • Shows the account-payee message and its border lines in Cheque Print Template previews and print formats only when Is Account Payable is enabled. (#62232)
  • Changing Qty in Stock Entry updates the transferred quantity and row amount immediately; rows drawing stock from a warehouse recalculate their rate unless it is manually set, while receipt rows keep their entered rate. (#62247)
  • Removes an unused Stock Entry component that could prevent ERPNext from installing or updating because it referenced unavailable parts. (#62255)
  • 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. (#62268)
  • 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. (#62246)
  • 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. (#62290)
  • Updates "Electronic Invoice Register", "UAE VAT 201", "VAT Audit Report", and "IRS 1099" to check company access and show corrected VAT and payment amounts, including reverse-charge VAT. Also updates South Africa VAT Settings, UAE VAT Settings, Lower Deduction Certificate, Import Supplier Invoice, Plaid Settings, Bulk Transaction Log, Code List, and Common Code to validate records, preserve supplier invoice details, and skip failed or ineligible transactions; bulk transaction logs also show counts and job results. (#62162)
  • Limits HR Users and HR Managers to linking, unlinking, or updating non-administrator User accounts through an Employee record; only System Managers can manage links to administrator accounts. (#61749)
  • Updates Call Log so summaries and transferred calls go to the right agent, calls match phone numbers despite formatting differences, and employees see only calls they’re permitted to access. Warranty Claim warns when a serial number was delivered to another customer or is still in stock, Issue tracks response and resolution times without a service agreement, and Service Level Agreement deadlines account for working hours; YouTube statistics refresh according to the chosen interval in Video Settings. (#62208)
  • Fixes sales, purchase, banking, tax, and ledger reports so they account for returns and related transactions, show currency and payment totals correctly, and apply relevant date and user-permission filters. (#62173)
  • Updates Product Bundle packing to use each component’s unit of measure, keeps packed items in sync when a component appears more than once, and rejects bundles that include themselves or other bundles. (#62165)
  • Makes 20 previously untranslated labels, dialog descriptions, and tour titles available for translation in ERPNext. (#62330)
  • Cheque print formats generated from Cheque Print Template now spell payment amounts using the company currency and its fractional unit. (#62341)
  • 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. (#62343)
  • Removes an account type unavailable in versions 15 and 16 from four Belgian chart of accounts, so Company setup can complete with those templates. (#62351)
  • Uses each operation’s Output Qty to calculate Job Card quantities, materials, time, and progress when a BOM produces items at intermediate steps. Books the Work Order’s additional operating cost only on the final item and preserves operation times when creating a BOM from a Work Order. (#62230)
  • 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. (#62387)
  • Chart of Accounts Importer now checks for incomplete rows, circular or missing parent accounts, and missing required account types before replacing existing accounts. (#62389)
  • Checks the target Asset before loading its tagged items from Purchase Receipt records for work-in-progress composite asset capitalization. (#62403)
  • 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. (#62385)
  • 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. (#62367)
  • 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. (#62259)
  • 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. (#62264)
  • 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. (#62378)
  • 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. (#62376)
  • Keeps manually entered item Rate values when a Pricing Rule is considered but not applied, instead of replacing them with the price list rate. (#62443)
  • Desk users see and manage only their own Voice Call Settings. (#61927)
  • 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. (#61929)
  • Limits appointment availability checks on the booking page to 60 requests per minute. (#61931)
  • 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. (#61933)
  • 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. (#61935)
  • Cleans file names for files attached during Code List imports and uses genericode.xml when no usable name remains. (#61937)
  • The Request for Quotation portal now embeds only the details needed to submit a Supplier Quotation, rather than the full request record. (#61939)
  • Links in Appointment verification emails now use the site's configured address, and verifying a booking no longer changes the visitor's login session. (#61941)
  • 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. (#62467)
  • Checks users’ permissions before loading details for selected target and consumed assets in Asset Capitalization. (#62446)
  • Fixes an error that prevents the BOM tree view from loading the full assembly structure during search. (#62449)
  • Landed Cost Voucher records can now be linked only to Manufacture or Repack Stock Entry records; other stock entry purposes are rejected. (#62447)
  • 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. (#62505)
  • 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. (#62461)
  • Accounting dimension validation messages now show translated labels for mandatory and invalid values, with a readable fallback name when a dimension field is missing. (#62488)
  • Keeps rates entered on the supplier portal, including zero, in the resulting Supplier Quotation instead of replacing them with price list or pricing rule rates. (#62301)
  • Corrects support report counts, averages, SLA totals, time periods, filters, and permission handling, and updates Issue workflows for splitting, assignments, status changes, and issues created from sent email; Support Settings also supports the default help page and requires SLA tracking for each record type that uses an SLA. Updates communication settings to skip disabled methods, use fallback groups, and handle overnight schedules, while allowing users to create their own Voice Call Settings; YouTube tracking requires an API key and update frequency, video links in more formats are recognized, cleared date filters remain open-ended, and the Rename Tool uses uploaded files and reports failed rows. (#62164)
  • In Subscription, invoices issued before a period starts are recognized by the period they cover, preventing duplicate invoices; billing periods no longer extend beyond End Date. (#62512)
  • Uses the posting date to age supplier invoices without a bill date and updates payment-term allocations, future-payment handling, ageing totals, and credit-note placement in the "Accounts Receivable" and "Accounts Payable" reports. Corrects ledger amounts and balances in the "Purchase Register" and "Sales Register", adds child groups to register filters, and updates the "Sales Payment Summary" to include payments from all sources, use company-currency amounts, and show only invoices users can access; the "Item-wise Sales Register" displays the related Delivery Note, and asset sale and return entries remain unchanged when records are reposted. (#62211)
  • Requires users to have read access to the outgoing Stock Entry before its items are added to a material-transfer stock-in entry. (#62502)
  • 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. (#62594)
  • A migration patch fills in Finished Good Qty on existing Stock Entry records for material transfers created from a Job Card’s Material Request, then updates the Job Card’s Transferred Qty and status. (#62595)
  • 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. (#62434)
  • 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. (#62592)
  • 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. (#62532)
  • 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. (#62485)
  • 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. (#62439)
  • Limits Bank Account Balance records to company bank accounts and one closing balance per account and date. When duplicates already exist, the update keeps the most recently changed balance. (#62437)
  • 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. (#62453)
  • Prevents Sales Invoice and consolidated POS Invoice documents from counting a coupon again when it was already used on a linked order or invoice. Returns preserve the coupon’s existing usage count, and linked invoices retain the discount. (#62609)
  • 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. (#62604)
  • 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. (#62436)
  • Updates Issue web forms to ignore submitted Customer and Status values and set Raised By to the submitting user for new issues. (#62674)
  • 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. (#62550)
  • 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. (#62688)
  • 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. (#62690)
  • Updates cheque print templates to display the Bank Account No from Payment Entry, including leading zeros. (#62692)
  • Updates Cheque Print Template to show Payment Entry amounts in the bank account’s currency in figures and words, using the selected print language. (#62702)
  • Blocks saving a Stock Reconciliation when users manually set Purpose to “Adjustment Entry,” and explains that this purpose is reserved for entries created through the "Stock Valuation Comparison" report. It also checks report-created adjustment entries against the posting date applied during saving. (#62676)
  • Rejects duplicate dates in Holiday List entries when a newly added date is entered as text but matches an existing holiday. (#62618)
  • 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. (#62620)
  • 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. (#62622)
  • 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. (#62699)
  • 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. (#62697)
  • 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. (#62662)
  • Checks Share Transfer amounts at the configured currency precision, allowing valid totals from fractional rates to pass validation after a draft is reloaded. (#62777)
  • Warehouse-specific stock details and quantity lookups now respect users’ Warehouse permissions: inaccessible default warehouses stay blank, and requests for restricted warehouses are rejected. (#62025)
  • Fixes Asset splitting so the remaining asset’s Purchase Amount matches its scaled Net Purchase Amount instead of being reduced twice. (#62657)
  • 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. (#62773)
  • Fixes an issue that prevented users from opening the Company Address list on Dunning records without items. (#62803)
  • Applies data masking in Stock Ledger Entry and GL Entry previews, so users without permission see masked values instead of actual ledger details. (#62813)
  • 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. (#62810)
  • Updates Production Plan calculations to use shared subassembly stock left after earlier rows, so later rows account for the remaining quantity. (#62804)
  • Uses the document’s buying or selling transaction type when applying price lists to item rows, so a row-level value does not change which pricing rules apply. (#62790)
  • 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. (#62828)
  • 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. (#62820)
  • 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. (#62867)
  • Updating items in a Quotation now refreshes its status and bundled products, and status calculations account for alternative items that have not been ordered. Only submitted Quotation records can be marked Lost, and Lost or expired quotations cannot be invoiced. (#62863)
  • 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. (#62882)

Performance Improvements

  • Groups repeated account, cost center, warehouse, stock, bin, and batch lookups across BOM, Work Order, and Sales Invoice processing, and recalculates transfers with additional costs once per repost instead of once per row. Adds an index for serial numbers in Serial and Batch Entry to speed up serial valuation searches. (#60762)

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. (#61962)

Authors: @Afsalsyed, @krishna-254, @nishkagosalia, @Sudharsanan11, @AdleenaLobo, @Shllokkk, @khushi8112, @rohitwaghchaure, @Pandiyan5273, @sokumon, @mihir-kandoi, @nabinhait, @diptanilsaha
Reviewers: @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.