What changed in ERPNext from 15 to 16
12 releases numbered after v15.121.0 up to and including v16.34.1, stable releases only. v15.121.0 and v16.34.1 are the newest stable releases of 15 and 16 we track; this page follows them as new ones ship.
- 2 mention breaking changes
- 1 removes or deprecates something
141 changes across 12 releases · 3 landed on more than one version
- Add validation to Financial Report Template records to prevent invalid report configurations from being saved
- Add an Entity filter to Purchase Analytics and Sales Analytics reports to limit displayed rows and chart data to selected suppliers, customers, items, or groups
- Add Transaction Currency, Exchange Rate, and buying or selling price lists to Blanket Order, fetching item prices from the selected price list and carrying details into related Sales Order, Quotation, and Purchase Order records
- Add a Valuation Type field for secondary items in BOM, Stock Entry, and Subcontracting Receipt with Valuation Rate as default and options for percentage-based or manual costing
- Add separate sections for General Ledger and AP/AR reports in Accounts Settings with a Disable Consider Accounting Dimension Filter option
- Add support for custom tax charge types that calculate taxes from alternative values such as an item's MRP instead of its selling price
- Add four Belgian charts of accounts for commercial entities and associations or foundations available in French and Dutch
- Add a check to Purchase Invoice records linked to Purchase Receipt records to block saving or submitting when stock items use different exchange rates in the same currency and Set Landed Cost Based on Purchase Invoice Rate is disabled
- Add a Status filter to the Supplier Quotation Comparison report defaulting to Submitted quotations
- Add a tooltip to the Allow Stale Exchange Rates setting in Accounts Settings explaining its behavior
- Add a confirmation prompt when quantities entered in the batch selector differ from Qty to Fetch
- Add the crm_deal field to Customer and Quotation when Enable Frappe CRM Data Synchronization is turned on and remove these fields when synchronization is off if they contain no data
- Add submission checks to Period Closing Voucher that compare stock account balances with the Stock Ledger report, require a completed company-wide Stock Closing Entry for the period-end date, and reject outdated stock snapshots
- Add a Sync Serial No Status button to the Stock Qty vs Serial No Count report that updates listed Serial No records' Status and Warehouse based on their latest stock movement
- Add a Stock UOM field to Job Card, populated from the finished good or final product and filled in for existing records
- Work Order Gantt view now shows each bar in a color that matches its status
- Subscription form automatically fills Cost Center and other accounting fields from the chosen plan, with fallback to linked Item fields
- Material Request with items from different suppliers can create separate Purchase Orders per supplier with supplier selection per item
- Territory filter in Accounts Receivable report now supports multi-select
- Make Cost Center on Shipping Rule optional, so shipping charges use the company's default Cost Center and copy the rule's Project to the shipping charge line when left blank
- Add optional Overdue Limit check on Customer that blocks Sales Invoice submission when customer's overdue balance exceeds the limit, with bypass allowed for permitted users and limit optionally sourced from Customer Group
- Add accounting entries for stock-related expenses in Stock Entry, Stock Reconciliation, and Purchase Receipt to record these costs separately, excluding landed cost from purchase expense entries
- Add an "On hold" option to the Status field in Project
- Automatically link a matching Contact to a Customer or Supplier when a portal user is added
- Add missing stock quantity sort options to Stock Summary report
- Add Reserved Stock column to the Stock Projected Qty report
- Update the Philippines chart of accounts with revised account names and numbers, including an Intangible Assets section with accumulated amortization accounts and new income and expense accounts for exchange gains and losses, gains and losses on asset disposal, and other expense items
- Add the Auto Repost Incorrect Valuation Entries (Weekly) option in Stock Reposting Settings to automatically repost incorrect stock valuation entries weekly
- Update validation messages in Financial Report Template so their standard wording is translated before account-specific details are added
- Update the Is Frozen descriptions in Customer and Supplier to clarify that freezing blocks new transactions and ledger entries
- Rename the Restrict Customer Over Billing checkbox in Accounts Settings to Prevent Sales Invoice when Customer is Overdue
- Rename "Recalculate Bin Qty" button to "Recalculate Values" in Bin form and update Valuation Rate and Stock Value from latest stock record
- The General Ledger, Trial Balance, Balance Sheet, and Profit and Loss reports now use a faster data source on supported sites
- Update the BOM Stock Analysis report so its BOM selector lists only submitted BOM records, excluding draft and cancelled records
- Include deductions from Payment Entry records, such as discounts, in the balances shown by the Sales Register and Purchase Register ledger views instead of displaying them as outstanding customer or supplier amounts
- Prevent single and child-table document types from being selected as accounting dimensions and reject existing invalid configurations with a clear message
- Prevent issuing a serialized item from an Inventory Dimension where its serial number is not available, including when negative stock validation is disabled
- Preserve links between Stock Entry items and their source Pick List so partially transferred items retain their transferred quantities
- Prevent direct deletion of the company set in the Demo Company field of Global Defaults and direct users to the Delete Demo Data action instead
- Add validation when a Material Request is created from a Sales Order, rejecting requests whose Company or linked item details no longer match the source order
- Show the existing internal Customer or Supplier as a clickable link in duplicate-record errors and tell users to disable it before marking another record as internal
- Update Job Card quantity checks to exclude Pending Quantity from the original card, allowing a follow-up Job Card for the remaining units
- Update Material Request transfers against a Job Card so the resulting Stock Entry calculates FG Completed Qty from the materials included in the transfer
- Fix Work Order Transferred Qty values by adding transfers for a required item and its alternate instead of replacing one with the other
- Filter cancelled Sales Invoice records out when the customer portal determines which Timesheet entries a customer can access
- Translate the source DocType name in the message shown when users select items from the same source more than once
- Classify items without a bill of materials as purchase items in the Material Requirements Planning report so they appear correctly in Type of Material
- Limit POS Profile selection and automatic assignment on invoices to profiles the current user is permitted to access
- Check a user's edit permission before marking a Quotation as Lost, preventing requests from users without access from changing the quotation or related records
- Fix Stock Entry recalculation with Additional Costs so redistributed costs are saved on all affected item rows instead of only one row
- Fix automatic batch number selection before saving Sales Invoice and Purchase Invoice records when Update Stock is enabled
- Update the non-bucket chart in the Material Requirements Planning Report to show the full selected date range and use each delivery date correctly instead of stopping after 10 dates
- Update Asset Capitalization to split FIFO/LIFO valuation rates across repeated stock-item rows for the same item and warehouse
- Apply Sales Person user permissions to the Accounts Receivable report so clearing the Sales Person filter does not expand results beyond the user's permitted records
- Fix an issue where adding an item to a Material Request did not fetch the item's Qty and UOM valuesalso inv16.32.3
- Limit material transfer quantities in Stock Entry and Work Order processing to the amount covered by the included raw materials
- Fix an issue that prevents users from creating a Purchase Order from the MRP report when the India compliance app is installed
- Allow Purchase Receipt and Purchase Invoice returns against a closed Purchase Order while continuing to block new receipts against it
- Allow stock to be issued from a batch when an earlier negative balance has since recovered while still rejecting issues that would make the batch balance negative
- Block users from reversing a Journal Entry that is already a reversal by hiding the Reverse Journal Entry button
- Fix an issue that could omit items when creating a Sales Invoice from a Sales Orderalso inv16.32.2
- Allow stock to be issued from batches with old negative periods that later recover, while still blocking an issue if it would make the batch balance negative at that point or afterward
- Fix stock valuation for batches when multiple stock entries share the same posting date and time by using the time each entry is posted
- Prevent a cancelled Subscription from being reactivated when its status is refreshed, including after its outstanding invoice is paid
- Fix the Stock Ledger report so its opening balance includes stock from all selected items, rather than only one item
- Preserve the hidden setting configured in Customize Form for Update Stock in Sales Invoice so the field does not reappear when the form refreshes
- Fix the Create Purchase Orders by Supplier dialog in Material Request so submitting it can create purchase orders without failing on a check for existing draftsalso inv16.31.1
- Update purchase returns from Purchase Receipt documents for batch-wise valued batches to use the batch's current average rate when stock remains
- Round material request quantities in Production Plan after purchase-unit conversion, reducing unnecessary decimal values
- Use the optimized item search for Item Code in Product Bundle item rows, reducing oversized search results and UI freezes
- Skip reconciliation table cleanup when a table is not yet available during an update, preventing an error in that situation
- Set Conversion Factor fields in transaction items to nine decimal places and round calculated values to match
- Update the Stock Ledger Invariant Check report so Moving Average items no longer display FIFO queue differences that do not apply to them
- Update Repost Item Valuation to use the current stock valuation rate when recalculating multi-line returns with Moving Average valuation
- Fix the validation message shown in Journal Entry when a Purchase Invoice is blocked and has no release date
- Restrict the data and actions available to templates used for shipping addresses, Payment Request, Request for Quotation, Contract Template, Email Campaign, and Delivery Trip notifications
- Update Timesheet to set Employee and Company only when both values are found for the current user, instead of treating an empty lookup result as valid
- Add a permission check when a web form creates a Task or changes its Project, blocking users who lack access to that project
- Update Sales Order validation to accept sales team Allocated Percentage totals of 100% when minor decimal rounding differences make the calculated sum slightly different
- Electronic invoicing is skipped for opening Sales Invoice documents in Italy
- Purchase Receipt cancellation now uses the same linked-document check as other forms
- Users with edit access can remove items from Update Items in Sales Order without needing cancel or delete access
- Australian standard chart of accounts now includes Accrued Manufacturing Expenses account group and marks account 115 as a bank account
- Items produced from zero-cost materials remain at zero cost instead of using the item's own cost or Bill of Materials cost
- Asset created from purchase document now uses Net Purchase Amount from item's Valuation Rate and quantity instead of purchase line total
- Item Group root is reused during ERPNext setup to keep built-in item groups under one main group
- Correct inventory account is selected instead of randomly picking one when multiple accounts are set up
- Period Closing Voucher cannot be submitted or cancelled for a frozen accounting date
- Stock Entry with purpose Receive from Customer leaves Target Warehouse blank for new item rows when no matching row exists
- Projects marked On hold no longer appear when choosing a project in Task and Timesheet
- Stock and Account Value Comparison report includes only child warehouses whose account matches the parent warehouse
- Accounts Receivable and Accounts Receivable Summary filtering by Sales Partner now uses the partner set on each Sales Invoice
- Return documents in Delivery Note and Sales Invoice use the original item linked in Packed Item when the direct item link is missing
- Payment Entry form fills Received Amount using the exchange rate for its own Posting Date instead of the source document's date
- Use quantity precision from Serial and Batch Entry with System Settings as fallback in reserved batch checks instead of always using 6 decimal places
- Keep selected BOM when creating Work Order for variant item instead of replacing it with default BOM
- Update stock levels correctly after cancelling one stock entry when several share the same date and time
- Spread a batch's value across its rows in Stock Ageing report for items with batch numbers when one row shows negative value
- Handle missing is_your_company_address field in Address so saving or importing Address records no longer fails
- Clean up Repost Item Valuation by removing attached data file and clearing Reposting Data File field
- Place batches without Expiry Date at end of list in Batch selection to avoid error when Warehouse contains both expiring and non-expiring batches
- Copy Customer from Pick List to Delivery Note when creating delivery note without Sales Order
- Show summary information on Customer and Supplier dashboards only for companies current user can access
- Turn on Include Zero Stock Items by default in Stock Balance report so items with no stock appear when report opens
- Update Operating Cost for operation in Routing when Hour Rate changes
- Rename Posting Date to Report Date and Calculate Ageing With to Age as on with Today Date shortened to Today in Accounts Receivable, Accounts Payable, and their summary reports
- Distribute Batch value across age groups in Stock Ageing report on every run instead of only when age group goes below zero
- Release remaining raw-material reservation tied to closed Subcontracting Order so warehouse stock count reflects freed material
- Treat cancelled and expired Quotations as inactive and count partially ordered Quotations as ordered when setting Opportunity status
- Clarify message when marking Opportunity as lost if active Quotation exists
- Limit search through older stock records to same item when valuing serial numbers to reduce records checked
- Carry over comments and communications from linked Opportunity to submitted Quotation when CRM Settings option is enabled
- Add missing currency setting to Supplier Quotation Item Net Rate field
- Make Job Card field in Purchase Order Item read-only and exclude it from copied and printed records
- Allow Delivery Note submission when the same batch is reserved by more than one Sales Order if enough stock remains for other reservations
- Allow people added to a Project to access that project without the Projects User role
- Open accounting and stock ledger previews without loading every detail first to avoid permission errors
- Make Production Plan purchase and transfer flow respect Consider Minimum Order Qty when stock comes from multiple warehouses
- Recalculate remaining value of items in Stock Ageing using moving average at current rate and newest stock first for LIFO items
- Strip leading and trailing spaces from Account Number in Chart of Accounts Importer
- Prevent Dunning Type from being saved when selected Income Account or Cost Center does not belong to the same company or is disabled
- Limit Process Statement of Accounts templates to standard placeholders when generating email subject, message, and PDF name
- Auto-fill Material Request Buying Price List only with accessible Price Lists and clear field if selected Price List is not a buying price list
- Fix parallel stock reposting to start the next pending task after one finishes
- Auto-fill Material Request Date in Production Plan Material Request from Transaction Date of linked Material Request
- Prevent Transferred Qty from Work Order from being copied into Pick List
- Fix misspelled allow_negative_stock option in Stock and Account Value Comparison and Stock Ledger Invariant Check reports
- Default letterheads now skip loading the company logo when a document has no company details so those documents still print and export to PDF
- Payment Entry now fills in the outstanding and total amounts when you manually choose a Journal Entry in another currency
- The Budget Variance Report chart now shows monthly actual amounts under the correct month instead of one month earlier
- In Pick List, barcode scans add a new line when Pick Manually is turned on, and repeated scans increase the picked quantity instead of being limited to the default quantity
- Show Qty (Company) and Qty (Warehouse) on line items in Sales Order, Quotation, Sales Invoice, and Delivery Note
- Add access checks for Terms and Conditions templates before they are used in documents and limit the text to the supported template features
- Use currency rounding when matching depreciation schedule rows in Asset to the linked Journal Entry to help prevent duplicate postings caused by small decimal differences
- Allow Asset Repair records to be created for assets that are fully depreciated and add an Asset Repair button on the Asset form
- Transferred Stock Reservation Entry records now copy the original Stock UOM from the item instead of leaving it blank or using a different unit of measure
- Fix a case where submitting a Stock Entry for items with serial numbers can fail when there are many Serial and Batch Bundle records
- Add permission checks when showing balances in the chart of accounts so users only see balances for accounts they can view
- Keep the transferred quantity on Work Orders that use Job Cards when updating required items
- Allow a Purchase Order created from a Material Request to use the same requested item in more than one row
- Remove the unused get_last_interaction CRM endpoint
Original release notes, newest first
The list above is our reading of these notes; the originals from Frappe are here, one fold per release.
v16.34.1
Breaking Changes
- Adds validation to Financial Report Template records to prevent invalid report configurations from being saved. (https://github.com/frappe/erpnext/pull/58704)
Bug Fixes
- Updates the "BOM Stock Analysis" report so its BOM selector lists only submitted BOM records, excluding draft and cancelled records. (https://github.com/frappe/erpnext/pull/58693)
- Includes deductions from Payment Entry records, such as discounts, in the balances shown by the "Sales Register" and "Purchase Register" ledger views instead of displaying them as outstanding customer or supplier amounts. (https://github.com/frappe/erpnext/pull/58680)
- Updates validation messages in Financial Report Template so their standard wording is translated before account-specific details are added. (https://github.com/frappe/erpnext/pull/58487)
Authors: @ervishnucs, @krishna-254, @Abdeali099, @sagarvora Reviewers: @diptanilsaha, @sagarvora, @barredterra, @mihir-kandoi
For these release notes, we used an LLM (OpenAI gpt-5.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
- style
- build
- docs
- test
- refactor
- chore
v16.34.0
Features
- Adds an Entity filter to the "Purchase Analytics" and "Sales Analytics" reports so users can limit the displayed rows and chart data to selected suppliers, customers, items, or groups. The filter follows the selected Tree Type and resets when it changes. (https://github.com/frappe/erpnext/pull/58429)
- Adds Transaction Currency, Exchange Rate, and buying or selling price lists to Blanket Order, and fetches item prices from the selected price list. Carries the agreed currency and pricing details into related Sales Order, Quotation, and Purchase Order records without applying Pricing Rules to the Blanket Order. (https://github.com/frappe/erpnext/pull/58630)
- Adds a Valuation Type field for secondary items in BOM, Stock Entry, and Subcontracting Receipt, with Valuation Rate as the default and options for percentage-based or manual costing. The selected method determines how the secondary item cost is deducted from material costs, while percentage costing uses the amount remaining after items with their own costs are deducted. (https://github.com/frappe/erpnext/pull/58632)
Bug Fixes
- Prevents single and child-table document types from being selected as accounting dimensions through the Reference Document Type field, and rejects existing invalid configurations with a clear message. Skips incompatible dimension values when creating ledger entries so these configurations do not block submission. (https://github.com/frappe/erpnext/pull/58414)
- Prevents issuing a serialized item from an Inventory Dimension where its serial number is not available, including when negative stock validation is disabled. (https://github.com/frappe/erpnext/pull/58419)
- Updates the Is Frozen descriptions in Customer and Supplier to clarify that freezing blocks new transactions and ledger entries, and that only users with the role configured in Roles Allowed to Set and Edit Frozen Account Entries can transact. (https://github.com/frappe/erpnext/pull/58422)
- Preserves the links between Stock Entry items and their source Pick List, so partially transferred items retain their transferred quantities and only the remaining quantities are offered in later stock entries. Hides the "Get Items" option for stock entries created from a Pick List and checks read access before creating them. (https://github.com/frappe/erpnext/pull/58405)
- Prevents direct deletion of the company set in the Demo Company field of Global Defaults and directs users to the "Delete Demo Data" action instead. (https://github.com/frappe/erpnext/pull/58427)
- Adds validation when a Material Request is created from a Sales Order, rejecting requests whose Company or linked item details—Item Code, UOM, or Conversion Factor—no longer match the source order. (https://github.com/frappe/erpnext/pull/58470)
- Shows the existing internal Customer or Supplier as a clickable link in duplicate-record errors and tells users to disable it before marking another record as internal for the same company. (https://github.com/frappe/erpnext/pull/58475)
- Updates Job Card quantity checks to exclude Pending Quantity from the original card, allowing a follow-up Job Card for the remaining units. (https://github.com/frappe/erpnext/pull/58467)
- Updates Material Request transfers against a Job Card so the resulting Stock Entry calculates FG Completed Qty from the materials included in the transfer, including partial and selected transfers. (https://github.com/frappe/erpnext/pull/58499)
- Fixes Work Order Transferred Qty values by adding transfers for a required item and its alternate instead of replacing one with the other. (https://github.com/frappe/erpnext/pull/58502)
- Filters cancelled Sales Invoice records out when the customer portal determines which Timesheet entries a customer can access. It returns no entries if the customer has neither a non-cancelled invoice nor a Project relationship. (https://github.com/frappe/erpnext/pull/58504)
- Translates the source DocType name in the message shown when users select items from the same source more than once. (https://github.com/frappe/erpnext/pull/58517)
- Classifies items without a bill of materials as purchase items in the "Material Requirements Planning" report, so they appear correctly in Type of Material and can be processed with "Make Purchase / Work Order". (https://github.com/frappe/erpnext/pull/58513)
- Limits POS Profile selection and automatic assignment on invoices to profiles the current user is permitted to access. (https://github.com/frappe/erpnext/pull/58519)
- Checks a user's edit permission before marking a Quotation as Lost, preventing requests from users without access from changing the quotation or related records. (https://github.com/frappe/erpnext/pull/58495)
- Fixes Stock Entry recalculation with Additional Costs so redistributed costs are saved on all affected item rows instead of only one row. (https://github.com/frappe/erpnext/pull/58533)
- Fixes automatic batch number selection before saving Sales Invoice and Purchase Invoice records when Update Stock is enabled. (https://github.com/frappe/erpnext/pull/58539)
- Checks write permission before allowing users to edit notes on Lead and Opportunity records. (https://github.com/frappe/erpnext/pull/58544)
- Fixes the "Available Serial No" report so it loads its filters and data instead of showing a blank page. (https://github.com/frappe/erpnext/pull/58562)
- Fixes Work Order Delivery Date selection by using the linked Sales Order row when the same item appears multiple times. (https://github.com/frappe/erpnext/pull/58526)
- Updates Work Order creation to match packed items with their parent Sales Order row and use its Delivery Date for the Expected Delivery Date, including when product bundle rows are repeated. (https://github.com/frappe/erpnext/pull/58570)
- Prevents users who cannot view a source Project from duplicating it and copying its linked tasks. (https://github.com/frappe/erpnext/pull/58592)
- Adds permission checks for POS Profile, Sales Invoice, and, when applicable, POS Invoice before invoices are retrieved for a POS Closing Entry. (https://github.com/frappe/erpnext/pull/58597)
- Adds a permission check before retrieving available payment schedules, restricting access to users who can view the referenced document. (https://github.com/frappe/erpnext/pull/58595)
- Skips automatically adding taxes to invoices created through the opening invoice tool, because opening entries already include their tax amounts. (https://github.com/frappe/erpnext/pull/58602)
- Updates the "Get Items From" action to avoid adding the same source item row twice when copying items between documents, while still adding any remaining quantity. (https://github.com/frappe/erpnext/pull/58619)
- Adds server-side validation to POS Settings so Invoice Fields match the selected invoice type and Search Fields use valid, searchable, non-excluded Item fields without duplicate field names. Search-field choices now show the label and field name together, while saved invoice fields that do not match the selected type are flagged instead of being silently removed. (https://github.com/frappe/erpnext/pull/58620)
- Adds a permission check before loading a Contract Template, preventing users without access from retrieving it. (https://github.com/frappe/erpnext/pull/58623)
- Translates Posting / Transaction Date, Company, and Lead / Customer / Supplier labels in party validation messages. (https://github.com/frappe/erpnext/pull/58626)
- Updates missing-field messages when loading party details or applying taxes, identifying whether Company, Customer/Supplier, or Posting Date/Transaction Date is missing and telling users to set it before selecting the triggering field again. On Quotation, validation now clears the Party Name field. (https://github.com/frappe/erpnext/pull/58628)
- Fixes duplicate-item validation in BOM Creator so adding the same item more than once under a parent displays the correct parent in the error message instead of causing a server error. (https://github.com/frappe/erpnext/pull/58616)
- Pre-fills the Allowed Roles table in SMS Settings with available Sales, Purchase, Stock, and Accounts user and manager roles during migration. (https://github.com/frappe/erpnext/pull/58637)
- Fixes a browser error that appears when creating a new BOM and selecting an item; price list and currency updates now use the current BOM details. (https://github.com/frappe/erpnext/pull/58639)
- Adds permission checks before creating Payment Entry or Journal Entry from another document and prevents the new entry from opening when access is denied. (https://github.com/frappe/erpnext/pull/58644)
- Rounds opening, within-period, and closing party balances in the "Trial Balance for Party" report to the company currency’s precision, so tiny residual amounts appear as zero in the report and Excel export and are removed by the Exclude Zero Balance filter. (https://github.com/frappe/erpnext/pull/58649)
- Restricts Project and Timesheet results in timesheet-related actions to records the current user can access. (https://github.com/frappe/erpnext/pull/58577)
- Adds required permission checks to actions in Ledger Merge, Payment Order, Process Period Closing Voucher, Repost Payment Ledger, Project, and Delivery Note. Limits bulk transaction retries to users with the System Manager role. (https://github.com/frappe/erpnext/pull/58654)
- Requires users to have read access to a Sales Order before creating Work Order records from it. (https://github.com/frappe/erpnext/pull/58497)
- Ignores cancelled batch entries when calculating available quantity for Stock Entry submissions, so cancelled stock movements no longer reduce the batch quantity available for a new manufacture. (https://github.com/frappe/erpnext/pull/58660)
- Adds email validation for Contact recipients in Email Campaign, showing an error before saving when the contact has no primary email address. (https://github.com/frappe/erpnext/pull/58672)
- Updates Request for Quotation creation from a Material Request to exclude fully ordered items and include only the remaining quantities for partially ordered items. (https://github.com/frappe/erpnext/pull/58535)
- Prevents a Landed Cost Voucher from cancelling linked exchange gain/loss Journal Entry records when it updates a stock-updating Purchase Invoice. (https://github.com/frappe/erpnext/pull/58675)
- Uses each raw material’s configured default warehouse for its Source Warehouse in Work Orders created from a Production Plan, instead of applying the sub-assembly warehouse to every required item. Keeps the plan’s Sub-assembly Warehouse as the generated work order’s FG Warehouse. (https://github.com/frappe/erpnext/pull/58665)
- Updates Payment Request to derive subscription status and Subscription Plans from any linked document with a Subscription field, including Purchase Invoice. Restricts these subscription details to users with read access to the linked document. (https://github.com/frappe/erpnext/pull/58450)
Other Changes
- Checks for an existing active Stock Ledger Entry before resetting an item's warehouse balance, instead of counting all matching entries. (https://github.com/frappe/erpnext/pull/58521)
- Populates Subscription Plans in Payment Request records created from subscription-based Sales Invoices and clears existing entries before adding plans to prevent duplicates. (https://github.com/frappe/erpnext/pull/58430)
Authors: @ljain112, @kaulith, @barredterra, @Jatin3128, @mihir-kandoi, @diptanilsaha, @Henil666, @AarDG10, @Shllokkk, @khushi8112, @Afsalsyed, @ervishnucs, @Pandiyan5273, @Sudharsanan11 Reviewers: @barredterra, @rohitwaghchaure, @Jatin3128, @diptanilsaha, @mihir-kandoi, @nishkagosalia, @AarDG10, @Shllokkk, @vorasmit, @Sudharsanan11
For these release notes, we used an LLM (OpenAI gpt-5.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:
- chore
- style
- refactor
- test
- build
- docs
- ci
v16.33.0
Breaking Changes
- Removes the unused
get_last_interactionCRM endpoint. (https://github.com/frappe/erpnext/pull/58216)
Features
- Updates Accounts Settings with separate sections for the "General Ledger" and AP/AR reports, and adds a Disable "Consider Accounting Dimension" Filter option that hides the Consider Accounting Dimension filter in the "General Ledger" report when enabled. (https://github.com/frappe/erpnext/pull/58158)
- Adds support for custom tax charge types that calculate taxes from alternative values, such as an item's MRP instead of its selling price. (https://github.com/frappe/erpnext/pull/58161)
- Adds four Belgian charts of accounts for commercial entities and associations or foundations, available in French and Dutch with account numbers and classifications for company setup. (https://github.com/frappe/erpnext/pull/58186)
- Adds a check to Purchase Invoice records linked to Purchase Receipt records: when stock items use different exchange rates in the same currency and Set Landed Cost Based on Purchase Invoice Rate is disabled, saving or submitting the invoice is blocked with a message naming the mismatched receipt and available remedies. (https://github.com/frappe/erpnext/pull/58190)
- Adds a Status filter to the "Supplier Quotation Comparison" report, defaulting to Submitted quotations and allowing users to view Draft quotations or both statuses. (https://github.com/frappe/erpnext/pull/58208)
Bug Fixes
- Updates the non-bucket chart in the "Material Requirements Planning Report" to show the full selected date range and use each delivery date correctly, instead of stopping after 10 dates or placing entries under today’s date. Matching dates from different years now appear in separate chart columns. (https://github.com/frappe/erpnext/pull/58090)
- Updates Asset Capitalization to split FIFO/LIFO valuation rates across repeated stock-item rows for the same item and warehouse, so each row receives its corresponding Valuation Rate and Amount. (https://github.com/frappe/erpnext/pull/58089)
- Applies Sales Person user permissions to the "Accounts Receivable" report, so clearing the Sales Person filter does not expand results beyond the user's permitted Customer and Sales Invoice records. (https://github.com/frappe/erpnext/pull/58104)
- Fixes an issue where adding an item to a Material Request did not fetch the item's Qty and UOM values. (https://github.com/frappe/erpnext/pull/58118)
- Limits material transfer quantities in Stock Entry and Work Order processing to the amount covered by the included raw materials. Adds a repair for affected Work Order records while skipping completed or cancelled orders. (https://github.com/frappe/erpnext/pull/58115)
- Fixes an issue that prevents users from creating a Purchase Order from the "MRP" report when the India compliance app is installed by filling in required fields before the order is created. (https://github.com/frappe/erpnext/pull/58027)
- Adds a tooltip to the Allow Stale Exchange Rates setting in Accounts Settings, explaining that it uses the latest saved rate on or before the transaction date, while clearing it ignores rates older than Stale Days and fetches a new rate from the exchange rate provider. (https://github.com/frappe/erpnext/pull/58122)
- Adds a confirmation prompt when the quantities entered in the batch selector differ from Qty to Fetch, warning that proceeding changes the item quantity before creating the bundle. (https://github.com/frappe/erpnext/pull/58125)
- Adds the
crm_dealfield to Customer and Quotation when Enable Frappe CRM Data Synchronization is turned on. During an update, removes these fields when synchronization is off and neither Customer nor Quotation contains data in them. (https://github.com/frappe/erpnext/pull/58143) - Allows Purchase Receipt and Purchase Invoice returns against a closed Purchase Order, while continuing to block new receipts against it. (https://github.com/frappe/erpnext/pull/58139)
- Allows stock to be issued from a batch when an earlier negative balance has since recovered, while still rejecting issues that would make the batch balance negative at or after the transaction time. (https://github.com/frappe/erpnext/pull/58151)
- Blocks users from reversing a Journal Entry that is already a reversal, preventing the original transaction from being posted again; the "Reverse Journal Entry" button is hidden and users are directed to cancel the reversal instead. (https://github.com/frappe/erpnext/pull/58155)
- Fixes an issue that could omit items when creating a Sales Invoice from a Sales Order. (https://github.com/frappe/erpnext/pull/58163)
- Renames the Restrict Customer Over Billing checkbox in Accounts Settings to Prevent Sales Invoice when Customer is Overdue, clarifying that it blocks new sales invoices for overdue customers. (https://github.com/frappe/erpnext/pull/58166)
- Adds validation for Task dates against the linked Project's Expected Start Date, rejecting dates before the project starts; validation against the Expected End Date remains in place. (https://github.com/frappe/erpnext/pull/58171)
- Updates the description of Prevent Sales Invoice when Customer is Overdue in Accounts Settings to clarify that it blocks new Sales Invoice creation when a customer’s overdue limit is set and their overdue amount exceeds it. (https://github.com/frappe/erpnext/pull/58174)
- Updates the batch selector to use the Pick Serial / Batch Based On setting in Stock Settings for Fetch Based On, instead of defaulting to FIFO. (https://github.com/frappe/erpnext/pull/58182)
- Checks access permissions before showing an Email Digest message, so users without access cannot view its contents. (https://github.com/frappe/erpnext/pull/58200)
- Removes the obsolete Restaurant reference from the Sales Taxes and Charges Template dashboard, so the form can load without the Hospitality app installed. (https://github.com/frappe/erpnext/pull/58211)
- Adds a permission check before displaying the import status for Bank Statement Import records. (https://github.com/frappe/erpnext/pull/58219)
- Adds access checks to Bank Statement Import actions, requiring write access to convert statements or start imports and permission to preview templates or download error templates and import logs. (https://github.com/frappe/erpnext/pull/58224)
- Corrects the Item Group name used by the Item Tax Template Connections dashboard, allowing the form to load its linked records. (https://github.com/frappe/erpnext/pull/58213)
- Adds item-group default warehouses as fallbacks for the component Source Warehouse and Work Order Target Warehouse; company, work order, and item-specific warehouse settings continue to take priority. (https://github.com/frappe/erpnext/pull/58237)
- Keeps a submitted Work Order in “Not Started” when only Skip Material Transfer to WIP Warehouse is enabled, changing it to “In Process” after material is transferred. (https://github.com/frappe/erpnext/pull/58245)
- Updates the "Gross Profit" report to allocate drop-ship purchase costs according to the quantity on each Sales Invoice, so partial invoices and returns show only their corresponding share of the linked Purchase Invoice cost. (https://github.com/frappe/erpnext/pull/58263)
- Updates the "Gross Profit" report to match returns to their source Sales Invoice item rows, using the correct purchase rate when the same item appears across multiple orders. Prevents oversized returns from being counted twice and preserves the buying amount for rows without returns. (https://github.com/frappe/erpnext/pull/58264)
- Limits the completed quantity in Job Card to the quantity completed in earlier operations and prevents process loss from being recorded twice for partial manufacturing entries. The Work Order finish dialog now shows process loss recorded against operations and the resulting finished goods quantity. (https://github.com/frappe/erpnext/pull/58262)
- Handles special characters in item, warehouse, user, project, and document values used in portal pages, print formats, form grids, dashboards, and client-side templates. This keeps links and displayed content from being rendered incorrectly when those values contain special characters. (https://github.com/frappe/erpnext/pull/58278)
- Escapes the production-status image shown for Workstation records so its contents are displayed as text rather than interpreted as HTML. (https://github.com/frappe/erpnext/pull/58281)
- Displays free-text values in portal, partner, support, and desk pages as text rather than webpage markup, including party names, item previews, project and task names, addresses, help articles, and event subjects. Safely embeds Request for Quotation data in its page script. (https://github.com/frappe/erpnext/pull/58288)
- Updates the privacy configuration for Lead and Opportunity to use the current data-protection settings. Their records use Email Id or Contact Email to identify matching data, while specified personal details can be redacted. (https://github.com/frappe/erpnext/pull/58283)
- New non-standalone sales documents now refresh item cost rates when created, including when a rate is already present. (https://github.com/frappe/erpnext/pull/58295)
- Updates Customer overdue amount checks to use payment allocations instead of general ledger tags, so invoices fully settled through Payment Reconciliation are not counted toward the overdue limit when Restrict Customer Over Billing is enabled. (https://github.com/frappe/erpnext/pull/58026)
- The Employee form now adds or removes the assigned user’s access to Employee and Company records even when permission checks would normally block the change. (https://github.com/frappe/erpnext/pull/57760)
- Fixes
TimestampMismatchErrorwhen submitting a Payment Entry for a Sales Invoice with multiple overdue installments in the same Dunning, allowing the payment to submit and the Dunning Status to change to Resolved. (https://github.com/frappe/erpnext/pull/57771) - Updates Stock Reconciliation so "Fetch Items from Warehouse" displays each item's Stock UOM instead of applying the default Stock UOM to every row. (https://github.com/frappe/erpnext/pull/58291)
- Blocks disabled or frozen Customer records from being saved as the party on an Opportunity, and disabled or frozen Supplier records from being added to a Request for Quotation. Disabled customers and suppliers are also hidden from their selection lists. (https://github.com/frappe/erpnext/pull/58035)
- Keeps the Currency and Price List section open in sales and purchase transactions when the transaction currency differs from the company currency, so Exchange Rate is visible without an extra click. The section remains collapsed when the currencies match. (https://github.com/frappe/erpnext/pull/58113)
- Preserves a manually entered Conversion Factor for each unit of measure in Item instead of replacing it with the global value; blank values still use the global conversion factor. Clears the unit-of-measure entries when Stock UOM changes because their conversion factors no longer apply. (https://github.com/frappe/erpnext/pull/58304)
- Updates the "Material Requirements Planning" report to skip selected items whose needs are already covered by stock or existing orders, while still creating purchase or work orders for other selected items. When all selected items are covered, it displays a message instead of attempting to create orders. (https://github.com/frappe/erpnext/pull/58312)
- Corrects doubled Working Hours, Billing Hours, and Billing Amount totals in the "Timesheet Billing Summary" report when using the Group By filter. Keeps group labels visible and combines entries from the same day when grouping by Start Date. (https://github.com/frappe/erpnext/pull/58315)
- Updates the "Timesheet Billing Summary" report to include timesheet entries recorded throughout the selected To Date, rather than stopping at its start. (https://github.com/frappe/erpnext/pull/58318)
- Updates the "Timesheet Billing Summary" report to calculate totals only from Project records the user can access and show totals separately from the report rows. Filters, sorting, and charts no longer treat the total as an individual entry. (https://github.com/frappe/erpnext/pull/58322)
- Updates the "Timesheet Billing Summary" report to filter logs by their start date, so logs ending at midnight or continuing into the next day appear under the day they begin. (https://github.com/frappe/erpnext/pull/58357)
- Updates the "Stock Qty vs Serial No Count" report so selecting a parent Warehouse shows the combined serial number count and stock quantity from its child warehouses. (https://github.com/frappe/erpnext/pull/58366)
- Hides the Status indicator for Request for Quotation entries in the supplier portal, so suppliers no longer see the request marked as “Submitted.” (https://github.com/frappe/erpnext/pull/58372)
- Displays the content from the company’s default Terms and Conditions in printed sales and purchase documents when the document uses the company default instead of a manually selected template. (https://github.com/frappe/erpnext/pull/58361)
- Filters the "Available Batch Report" by the selected Company so it shows batches from that company only. (https://github.com/frappe/erpnext/pull/58077)
- Fixes Italian e-invoice generation when a Sales Invoice item's Price List Rate is empty, preventing an error during submission. (https://github.com/frappe/erpnext/pull/58370)
- Hides the supplier name from the supplier-facing Request for Quotation page. (https://github.com/frappe/erpnext/pull/58376)
- Blocks portal users from creating another Supplier Quotation for a Request for Quotation that already has one and hides the "Make Quotation" button in that case. (https://github.com/frappe/erpnext/pull/58384)
- Resets Actual Qty, Valuation Rate, and Stock Value in Bin to zero when an item has no remaining stock transactions in a warehouse, including after its last transaction is cancelled, deleted, or reposted. (https://github.com/frappe/erpnext/pull/58391)
- Applies the selected Supplier Group filter in the "Accounts Payable" report when Party Type is set to Supplier, so suppliers from other groups are not listed. (https://github.com/frappe/erpnext/pull/58353)
- Displays currency amounts without decimal places when Currency Precision in System Settings is set to 0, while using the configured number format when the setting is blank. (https://github.com/frappe/erpnext/pull/58399)
- Sends automatic reorder emails from Material Request to all Purchase and Stock Managers in a single-company setup, even when they do not have an explicit Company User Permission. (https://github.com/frappe/erpnext/pull/58407)
Other Changes
- Displays formatted content in the Item Description field of Item Price records instead of showing the underlying HTML code. (https://github.com/frappe/erpnext/pull/58102)
- Fixes return quantity validation on Sales Invoice and Purchase Invoice when UOM differs from Stock UOM, so subsequent partial returns are not incorrectly rejected because quantities are compared in different units. (https://github.com/frappe/erpnext/pull/58364)
Authors: @Pandiyan5273, @Sudharsanan11, @Shllokkk, @ljain112, @harisansari008, @nishkagosalia, @akhtarmohsin, @diptanilsaha, @deepeshgarg007, @Jatin3128, @vorasmit, @krishna-254, @maasanto, @khushi8112, @ervishnucs, @Henil666, @rohitwaghchaure, @mihir-kandoi Reviewers: @Sudharsanan11, @Shllokkk, @diptanilsaha, @Jatin3128, @vorasmit, @khushi8112, @rohitwaghchaure, @mihir-kandoi
For these release notes, we used an LLM (OpenAI gpt-5.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
- style
- build
- refactor
- chore
- docs
- test
v16.32.3
Bug Fixes
- Fixes an issue where adding an item to a Material Request did not fetch the item's Qty and UOM values. (https://github.com/frappe/erpnext/pull/58266)
Authors: @Henil666 Reviewers: @mihir-kandoi
For these release notes, we used an LLM (OpenAI gpt-5.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:
- chore
- test
- ci
- build
- style
- docs
- refactor
v16.32.2
Bug Fixes
- Fixes an issue that could omit items when creating a Sales Invoice from a Sales Order. (https://github.com/frappe/erpnext/pull/58258)
Authors: @mihir-kandoi
For these release notes, we used an LLM (OpenAI gpt-5.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:
- docs
- style
- chore
- refactor
- build
- test
- ci
v16.32.1
Bug Fixes
- Allows stock to be issued from batches with old negative periods that later recover, while still blocking an issue if it would make the batch balance negative at that point or afterward. (https://github.com/frappe/erpnext/pull/58153)
Authors: @rohitwaghchaure Reviewers: @rohitwaghchaure
For these release notes, we used an LLM (OpenAI gpt-5.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:
- chore
- docs
- ci
- build
- test
- style
- refactor
v16.32.0
Features
- Adds submission checks to Period Closing Voucher that compare stock account balances with the "Stock Ledger" report, require a completed company-wide Stock Closing Entry for the period-end date, and reject outdated stock snapshots.
After closing, it blocks creating or cancelling stock ledger entries dated on or before the closing date, locks the supporting Stock Closing Entry, and starts batch valuation from the closing balance. (https://github.com/frappe/erpnext/pull/57816) - Adds a "Sync Serial No Status" button to the "Stock Qty vs Serial No Count" report that updates listed Serial No records’ Status and Warehouse based on their latest stock movement. The sync changes serial number records only, leaving stock quantities, ledger entries, and valuation unchanged. (https://github.com/frappe/erpnext/pull/57864)
- Adds a Stock UOM field to Job Card, populated from the finished good or final product and filled in for existing records. Quantity messages and completion dialogs now show the applicable unit alongside each quantity, including comparisons between operations and raw-material transfers. (https://github.com/frappe/erpnext/pull/57937)
Bug Fixes
- Fixes stock valuation for batches when multiple stock entries share the same posting date and time by using the time each entry is posted. This keeps stock values in the correct order after backdated or amended transactions. (https://github.com/frappe/erpnext/pull/57797)
- Prevents a cancelled Subscription from being reactivated when its status is refreshed, including after its outstanding invoice is paid. Corrects period-end cancellation when End Date is empty or a billing period rolls over, preventing unintended invoice generation. (https://github.com/frappe/erpnext/pull/57778)
- Fixes the "Stock Ledger" report so its opening balance includes stock from all selected items, rather than only one item, and subsequent quantity and value balances start from the combined total. (https://github.com/frappe/erpnext/pull/57796)
- Preserves the hidden setting configured in Customize Form for Update Stock in Sales Invoice, so the field does not reappear when the form refreshes. (https://github.com/frappe/erpnext/pull/57819)
- Fixes the "Create Purchase Orders by Supplier" dialog in Material Request so submitting it can create purchase orders without failing on a check for existing drafts. (https://github.com/frappe/erpnext/pull/57833)
- Updates purchase returns from Purchase Receipt documents for batch-wise valued batches to use the batch’s current average rate when stock remains, preventing leftover stock value when the batch quantity reaches zero. Returns use the original receipt rate when the batch has no remaining balance. (https://github.com/frappe/erpnext/pull/57836)
- Rounds material request quantities in Production Plan after purchase-unit conversion, reducing unnecessary decimal values passed to Material Request and raw-material exports. (https://github.com/frappe/erpnext/pull/57852)
- Uses the optimized item search for Item Code in Product Bundle item rows, reducing oversized search results and UI freezes. (https://github.com/frappe/erpnext/pull/57870)
- Skips reconciliation table cleanup when a table is not yet available during an update, preventing an error in that situation. (https://github.com/frappe/erpnext/pull/57882)
- Sets Conversion Factor fields in transaction items to nine decimal places and rounds calculated values to match, so unit-of-measure conversions retain accuracy in derived stock quantities and rates even when the site's general number precision is lower. (https://github.com/frappe/erpnext/pull/57884)
- Updates the "Stock Ledger Invariant Check" report so Moving Average items no longer display FIFO queue differences that do not apply to them. The "Show Incorrect Entries" option now also lists entries with mismatched FIFO queue quantities or values when a queue is maintained. (https://github.com/frappe/erpnext/pull/57889)
- Updates Repost Item Valuation to use the current stock valuation rate when recalculating multi-line returns with Moving Average valuation, rather than a rate from another line in the same return. Reposting these returns repeatedly now keeps valuation rates consistent and avoids related stock-value overflow failures. (https://github.com/frappe/erpnext/pull/57890)
- Fixes the validation message shown in Journal Entry when a Purchase Invoice is blocked and has no release date. (https://github.com/frappe/erpnext/pull/57896)
- Restricts the data and actions available to templates used for shipping addresses, Payment Request, Request for Quotation, Contract Template, Email Campaign, and Delivery Trip notifications. This limits templates to the information needed to generate addresses, documents, and emails. (https://github.com/frappe/erpnext/pull/57902)
- Updates Timesheet to set Employee and Company only when both values are found for the current user, instead of treating an empty lookup result as valid. (https://github.com/frappe/erpnext/pull/57905)
- Adds a permission check when a web form creates a Task or changes its Project, blocking users who lack access to that project. (https://github.com/frappe/erpnext/pull/57908)
- Updates Sales Order validation to accept sales team Allocated Percentage totals of 100% when minor decimal rounding differences make the calculated sum slightly different. (https://github.com/frappe/erpnext/pull/57913)
- Adds a Warehouse field to the "Update Items" dialog in Sales Order, allowing users to choose a warehouse when adding an item without a default warehouse. (https://github.com/frappe/erpnext/pull/57910)
- Automatically refreshes open Purchase Receipt, Delivery Note, Stock Entry, and Job Card forms when a related Quality Inspection is submitted, cancelled, or deleted, so unchanged forms do not require a manual reload before saving or submitting. Forms with unsaved changes still show a conflict message. (https://github.com/frappe/erpnext/pull/57919)
- Allows negative Grand Total values in Sales Order and Purchase Order when Allow Negative Rates for Items is enabled in the relevant Selling Settings or Buying Settings; negative Quantity values remain blocked. (https://github.com/frappe/erpnext/pull/57923)
- Renames Italy-specific Customer fields from
first_nameandlast_nametoitaly_customer_first_nameanditaly_customer_last_name, preventing duplicate-field errors when customizing Customer records. Existing values are copied to the renamed fields, and Italian e-invoices use them. (https://github.com/frappe/erpnext/pull/57922) - Requires quantities from earlier operations to be actually produced before the next Job Card operation can proceed when a Work Order tracks semi-finished goods. Work orders without semi-finished-goods tracking continue to use the operation’s recorded completed quantity. (https://github.com/frappe/erpnext/pull/57931)
- Updates Job Card completion to apply the Qty to Manufacture entered for the current cycle while retaining quantities completed in earlier cycles and preventing the remaining quantity from being incorrectly recorded as process loss. (https://github.com/frappe/erpnext/pull/57935)
- Updates Job Card status and manufacturing entries to exclude quantities handed to another job card; the card advances and the entry covers only the quantity it still needs to produce. (https://github.com/frappe/erpnext/pull/57936)
- Prevents inconsistent completion splits in Job Card entries when Completed Qty, Pending Qty, and Process Loss Qty cannot add up to Qty to Manufacture; the completion dialogs reject conflicting values before saving, and submission errors identify each quantity separately. (https://github.com/frappe/erpnext/pull/57933)
- Fixes Track Semi Finished Goods manufacturing so process loss recorded on one Job Card no longer reduces the output of another operation’s "Manufacture" Stock Entry. It also requires the necessary finished-good and work-in-progress warehouse details and limits each entry’s finished goods and raw materials to the Job Card’s remaining quantities. (https://github.com/frappe/erpnext/pull/57930)
- Updates the "Sales Register" ledger view to include credits applied directly to an invoice’s receivable, including POS payments, loyalty redemptions, and POS write-offs. Fully paid POS invoices now show matching debit and credit amounts instead of an outstanding balance. (https://github.com/frappe/erpnext/pull/57946)
- Escapes HTML entered in Customer Details when creating a Lead from an Appointment, so the lead’s notes display it as text rather than interpreting it as markup. (https://github.com/frappe/erpnext/pull/57949)
- Recalculates Downtime in Asset Repair from Failure Date and Completion Date when the repair status or either date changes, including when the record is saved. (https://github.com/frappe/erpnext/pull/57953)
- Prevents a division-by-zero error when reposting a serial-and-batch item in Stock Reconciliation with zero current quantity by setting its incoming rate to zero. (https://github.com/frappe/erpnext/pull/57957)
- Rechecks later stock transactions before queuing a Repost Item Valuation, so a backdated Stock Entry submitted while a newer transaction is added is included in valuation reposting. (https://github.com/frappe/erpnext/pull/57961)
- Clears Service Start Date, Service End Date, Service Stop Date, and Deferred Revenue Account or Deferred Expense Account from Sales Invoice and Purchase Invoice items when Enable Deferred Revenue or Enable Deferred Expense is unchecked. (https://github.com/frappe/erpnext/pull/57831)
- Checks access to the linked document and validates requested fields when retrieving Stock Reservation Entry records. (https://github.com/frappe/erpnext/pull/57970)
- Preserves custom Title values supplied when creating new Journal Entry records, rather than replacing them with automatically generated titles. (https://github.com/frappe/erpnext/pull/57989)
- Keeps the source document’s Rate, Discount, and Margin when item details are refreshed with Maintain Same Rate Throughout the Purchase Cycle enabled, instead of replacing them with the latest Item Price. (https://github.com/frappe/erpnext/pull/57792)
- Keeps an item's Item Code searchable in BOM when it matches another item's Barcode, so the item-code match remains available for selection. (https://github.com/frappe/erpnext/pull/58002)
- Updates the "BOM Explorer" report to accumulate quantities across nested BOM levels and convert child quantities when BOMs use different output quantities or stock units. Displays each component quantity in the unit specified on its BOM item. (https://github.com/frappe/erpnext/pull/58007)
- For work orders that transfer materials against a Job Card, starting or completing the card is blocked until the required material transfer is recorded; the "Start Job" and "Complete Job" actions are also hidden while the transfer is pending. Corrective job cards, cards set to skip material transfers, and work orders that transfer materials against the work order remain unaffected. (https://github.com/frappe/erpnext/pull/58014)
- Updates Sales Invoice creation from a Sales Order to calculate billable quantities after deliveries, returns, re-deliveries, and previous invoices. Re-delivered items now appear with the remaining quantity instead of showing zero, while fully billed items are excluded. (https://github.com/frappe/erpnext/pull/58012)
- Uses the selected operation’s original Work Order entry when recreating a Job Card, preventing materials from another operation from appearing in its Raw Materials table. (https://github.com/frappe/erpnext/pull/58017)
- Updates Driver to populate the Address field from the selected Transporter’s default Address, including when Supplier uses naming series. (https://github.com/frappe/erpnext/pull/58023)
- Prevents Purchase Order billed amounts from being duplicated across linked Purchase Receipts. Purchase Receipts created from a Purchase Invoice retain their billed amount instead of being incorrectly marked as needing billing again. (https://github.com/frappe/erpnext/pull/58043)
- Adds validation for new non-group Warehouse records when perpetual inventory is enabled, including inheritance of a valid inventory account from the parent. Warehouse account checks now show a clear validation message when a required account is missing instead of displaying an internal error. (https://github.com/frappe/erpnext/pull/58040)
- Refreshes item-specific details when an item changes in a Sales Order, clearing stale values from the previous item such as UOM, Conversion Factor, Weight, Barcode, and pricing rules. It preserves Quantity, Warehouse, Delivery Date, and any explicitly selected UOM. (https://github.com/frappe/erpnext/pull/58053)
- Corrects account and section labels in the "Cash Flow" report and calculates filtered totals correctly when some period values are missing. (https://github.com/frappe/erpnext/pull/58056)
- Updates Customer overdue amount checks to use payment allocations instead of general ledger tags, so invoices fully settled through Payment Reconciliation are not counted toward the overdue limit when Restrict Customer Over Billing is enabled. (https://github.com/frappe/erpnext/pull/58057)
- Allows users without administrator access to import a chart of accounts through Chart of Accounts Importer without permission errors for related Party Account, Mode of Payment Account, and Tax Withholding Account records. (https://github.com/frappe/erpnext/pull/58060)
- Corrects rounding for document-level discounts distributed across items, so the recorded item discounts add up to the document discount and match each item’s net amount. When discount accounting is enabled, the adjustment no longer reduces the income amount recorded in the ledger. (https://github.com/frappe/erpnext/pull/58055)
- Adds checks to Chart of Accounts Importer for the uploaded account file and access to existing accounts before replacing them. It blocks imports for companies with existing transactions or when the user cannot access all existing accounts. (https://github.com/frappe/erpnext/pull/58066)
Authors: @mihir-kandoi, @ervishnucs, @Sudharsanan11, @harisansari008, @Henil666, @rohitwaghchaure, @krishna-254, @Shllokkk, @diptanilsaha, @kaulith, @barredterra, @nishkagosalia, @Jatin3128, @Pandiyan5273 Reviewers: @mihir-kandoi, @khushi8112, @rohitwaghchaure, @diptanilsaha, @Jatin3128, @ruthra-kumar
For these release notes, we used an LLM (OpenAI gpt-5.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:
- style
- build
- ci
- refactor
- docs
- chore
- test
v16.31.1
Bug Fixes
- Fixes the "Create Purchase Orders by Supplier" dialog in Material Request so submitting it can create purchase orders without failing on a check for existing drafts. (https://github.com/frappe/erpnext/pull/57834)
Authors: @mihir-kandoi Reviewers: @mihir-kandoi
For these release notes, we used an LLM (OpenAI gpt-5.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:
- refactor
- build
- style
- chore
- docs
- test
- ci
v16.31.0
Features
- The Work Order Gantt view now shows each bar in a color that matches its status instead of the default color. (https://github.com/frappe/erpnext/pull/57636)
- On the Subscription form, choosing a plan automatically fills in Cost Center and other accounting fields from the plan. When a field is missing from the plan, it comes from the linked Item, and any values you already entered stay in place. (https://github.com/frappe/erpnext/pull/57622)
- When a Material Request has items from different suppliers, creating a Purchase Order now lets you choose the Supplier for each item. The system creates one Purchase Order per supplier. (https://github.com/frappe/erpnext/pull/57698)
Bug Fixes
- The system skips electronic invoicing for opening Sales Invoice documents in Italy. (https://github.com/frappe/erpnext/pull/57590)
- Makes Purchase Receipt cancellation use the same linked-document check as other forms, so a submitted Purchase Invoice blocks a direct cancel. The "Cancel All Documents" action still cancels the invoice first and then the receipt. (https://github.com/frappe/erpnext/pull/57597)
- Allows users with edit access to remove items from "Update Items" in Sales Order without needing cancel or delete access on the order. Item lines with ordered, received, delivered, or billed quantities still cannot be removed. (https://github.com/frappe/erpnext/pull/57601)
- Adds a new Accrued Manufacturing Expenses account group to the Australian standard chart of accounts and marks the 115 account group as a bank account. (https://github.com/frappe/erpnext/pull/57608)
- Items produced from materials that cost nothing stay at zero cost instead of using the item's own cost or the cost from the Bill of Materials. This keeps the finished item at zero cost in those cases. (https://github.com/frappe/erpnext/pull/57513)
- When you create an Asset from a purchase document, the Net Purchase Amount now comes from the item’s Valuation Rate and quantity instead of the purchase line total. (https://github.com/frappe/erpnext/pull/57620)
- Uses the existing Item Group root when ERPNext is set up, so the built-in item groups stay under one main group instead of splitting into two top-level groups. Merges any duplicate "All Item Groups" entry into that root on update. (https://github.com/frappe/erpnext/pull/57630)
- Uses the correct inventory account instead of picking one at random when more than one is set up. (https://github.com/frappe/erpnext/pull/57632)
- Prevents Period Closing Voucher from being submitted or cancelled for a frozen accounting date. (https://github.com/frappe/erpnext/pull/57641)
- In Stock Entry with purpose Receive from Customer, adding an item row now leaves Target Warehouse blank when no matching row is available to copy from. When a matching row exists, the field is copied into the new row. (https://github.com/frappe/erpnext/pull/57638)
- Projects marked
On holdno longer appear when choosing a project in Task and Timesheet. The "Project Summary" report now includesOn holdin the status filter. (https://github.com/frappe/erpnext/pull/57243) - The "Stock and Account Value Comparison" report now includes only child warehouses whose account matches the parent warehouse. Warehouses with a different account are no longer grouped under the parent account. (https://github.com/frappe/erpnext/pull/57557)
- Filtering "Accounts Receivable" and "Accounts Receivable Summary" by Sales Partner uses the partner set on each Sales Invoice, so invoices assigned directly to a partner appear in the results. The Sales Partner column shows the partner from the invoice, and returns are grouped with the original invoice. (https://github.com/frappe/erpnext/pull/57648)
- Return documents in Delivery Note and Sales Invoice now use the original item linked in Packed Item when the direct item link is missing. Those returns use the original rate instead of zero. (https://github.com/frappe/erpnext/pull/57511)
- Adds multi-select to the Territory filter in the "Accounts Receivable" report, so you can view receivables for several territories at once. (https://github.com/frappe/erpnext/pull/57346)
- The Payment Entry form now fills Received Amount using the exchange rate for its own Posting Date instead of the date from the document it comes from. This reduces cases where a Difference Amount appears as soon as the form opens. (https://github.com/frappe/erpnext/pull/57663)
- Updates Stock Entry validation for material transfers to use the item’s quantity precision. This avoids blocking a transfer when only a tiny rounding difference remains. (https://github.com/frappe/erpnext/pull/57658)
- Updates Stock Reconciliation to skip batch-related stock balance checks when a row is missing, avoiding an error in some batch-tracked item lookups. (https://github.com/frappe/erpnext/pull/57655)
- Adds permission checks to the stock summary in Plant Floor so users only see stock data for Warehouse, Item, and Item Group records they can access. (https://github.com/frappe/erpnext/pull/57670)
- Carries over the conversation history from the linked Opportunity to a new Quotation as soon as it is created, instead of only after submission. (https://github.com/frappe/erpnext/pull/57643)
- Purchase Invoice now records stock value differences in the company’s Default Expense Account when it is set. If that setting is missing, it falls back to the stock or asset receipt account, or the item’s Expense Account on returns. (https://github.com/frappe/erpnext/pull/57656)
- Updates the Stock Reservation Entry warning to omit the row number when it is not available, instead of showing "Row #None". The message still lists the item and warehouse that cannot be reserved. (https://github.com/frappe/erpnext/pull/57672)
- The Item Inventory dashboard now excludes transferred and consumed quantities from reserved stock totals. (https://github.com/frappe/erpnext/pull/57683)
- Users now need permission to view stock and warehouse details in the Asset Capitalization form and to create multiple variants for an Item.
"Resend Payment Email" in the Payment Request form now works only for submitted inward payment requests that can still receive a payment link, and it ignores repeat clicks while the email is being sent. (https://github.com/frappe/erpnext/pull/57692) - When only part of the stock is available, the reservation now keeps the full requested amount, so it shows as Partially Reserved instead of Reserved. (https://github.com/frappe/erpnext/pull/57694)
- Keeps unit conversions exact on line items. This reduces quantity changes when an item is bought in one unit and stored in another. (https://github.com/frappe/erpnext/pull/57697)
- Fixes Shipping Rule so applying or saving one without a Cost Center does not add duplicate shipping charges. Existing Cost Center values remain unchanged. (https://github.com/frappe/erpnext/pull/57701)
- The Quality Inspection form now reads numeric readings using the number format shown to the user. Values that do not match that format now show an error instead of being read as a different number. (https://github.com/frappe/erpnext/pull/57726)
- Returns in Purchase Invoice, Purchase Receipt, and Subcontracting Receipt now require at least one item with a negative quantity. Returns where every item has a quantity of zero can't be submitted. (https://github.com/frappe/erpnext/pull/57722)
- The setting in Stock Settings that allows extra delivery or receipt quantities now applies only to delivery and receipt documents. Other order documents still use their own quantity limits. (https://github.com/frappe/erpnext/pull/57728)
- Returns from Sales Invoice, Delivery Note, and POS Invoice now require at least one item with a negative quantity, so returns where every item quantity is zero are rejected. (https://github.com/frappe/erpnext/pull/57730)
- The company list now shows only the companies you can access instead of all companies. If the list cannot be loaded, it shows an error message. (https://github.com/frappe/erpnext/pull/57739)
- Updates POS Profile to use the selected Item Group names directly when filtering items. This avoids an empty item list when a profile limits which item groups are available. (https://github.com/frappe/erpnext/pull/57673)
- Existing variants can still be saved after an Item Attribute is disabled, as long as the Attribute Value stays unchanged. Changing that Attribute Value still shows an error. (https://github.com/frappe/erpnext/pull/57750)
- Updates Stock Entry so secondary item costs follow the share set in the Bill of Materials instead of using their own rate in some cases. It also stops stock entries that do not create secondary items from skipping Quality Inspection. (https://github.com/frappe/erpnext/pull/57755)
- The Repost Accounting Ledger form skips deferred invoice checks when no sales or purchase invoices are selected, so saving does not time out. (https://github.com/frappe/erpnext/pull/57753)
- Special characters in Workstation and Item names, along with image links, now display correctly across the plant floor, item selector, and stock summary views. This keeps names and image links from changing how the page appears. (https://github.com/frappe/erpnext/pull/57770)
- The toolbar in BOM Configurator now keeps all of its actions available, so you can add and convert items again. (https://github.com/frappe/erpnext/pull/57779)
- Skips loading the invoice dashboard on Customer and Supplier records when the user does not have access to the related Sales Invoice or Purchase Invoice documents, so the record opens without a permission error. (https://github.com/frappe/erpnext/pull/57785)
- Prevents saving an Opportunity when any item Quantity is zero or less. (https://github.com/frappe/erpnext/pull/57789)
- Corrects exchange gain/loss entries in Payment Reconciliation for supplier Payment Entry records in foreign currency, so the adjustment posts in the right direction. (https://github.com/frappe/erpnext/pull/57798)
Other Changes
- Reversal Journal Entry forms keep Remark and Custom Remark editable. This lets you add your own note when you reverse an entry. (https://github.com/frappe/erpnext/pull/57767)
Authors: @Jatin3128, @diptanilsaha, @Pandiyan5273, @Shllokkk, @Henil666, @mihir-kandoi, @krishna-254, @nikkothari22, @kaulith, @rohitwaghchaure, @Sudharsanan11, @ervishnucs Reviewers: @Jatin3128, @diptanilsaha, @nabinhait, @R-Jayaraman, @Shllokkk, @mihir-kandoi, @ruthra-kumar, @rohitwaghchaure
For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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:
- chore
- ci
- refactor
- style
- docs
- build
- test
v16.30.0
Features
- Makes the Cost Center on Shipping Rule optional. When it is left blank, shipping charges use the company’s default Cost Center and copy the rule’s Project to the shipping charge line. (https://github.com/frappe/erpnext/pull/57385)
- Adds an optional Overdue Limit check and blocks Sales Invoice submission when a customer's overdue balance is above it. Users allowed to bypass the restriction can still submit, and the limit can also come from Customer Group. (https://github.com/frappe/erpnext/pull/57438)
- Adds accounting entries for stock-related expenses in Stock Entry, Stock Reconciliation, and Purchase Receipt, so these costs are recorded separately. Excludes landed cost from purchase expense entries. (https://github.com/frappe/erpnext/pull/57503)
Bug Fixes
- Reserved batch checks now use the quantity precision from Serial and Batch Entry, with System Settings as a fallback, instead of always using 6 decimal places. (https://github.com/frappe/erpnext/pull/57354)
- When creating a Work Order for a variant item, ERPNext keeps the selected BOM instead of replacing it with the default one. (https://github.com/frappe/erpnext/pull/57359)
- When several stock entries share the same date and time, cancelling one now updates the entries that were created after it, so stock levels stay correct after the cancellation. (https://github.com/frappe/erpnext/pull/57397)
- Updates the "Stock Ageing" report for items with batch numbers, spreading a batch’s value across its rows when one row shows a negative value. This makes the row values add up to the batch’s total value in those cases. (https://github.com/frappe/erpnext/pull/57404)
- Updates Address to handle a missing
is_your_company_addressfield. Saving or importing Address records no longer stops with an error in that case. (https://github.com/frappe/erpnext/pull/57408) - Fixes cleanup for Repost Item Valuation so its attached data file is removed and the Reposting Data File field is cleared. (https://github.com/frappe/erpnext/pull/57250)
- The Batch selection now puts batches without an Expiry Date at the end of the list. This avoids an error when a Warehouse contains both expiring and non-expiring batches. (https://github.com/frappe/erpnext/pull/57415)
- Copies the Customer from Pick List to Delivery Note when creating a delivery note without a Sales Order. (https://github.com/frappe/erpnext/pull/57420)
- The dashboard on Customer and Supplier forms now shows summary information only for companies the current user can access. This avoids permission errors when a customer or supplier has activity in companies the user cannot access. (https://github.com/frappe/erpnext/pull/57440)
- The "Stock Balance" report turns on Include Zero Stock Items by default, so items with no stock appear when the report opens. (https://github.com/frappe/erpnext/pull/57460)
- When you change Hour Rate in Routing, Operating Cost updates for that operation. (https://github.com/frappe/erpnext/pull/57468)
- In "Accounts Receivable", "Accounts Payable", and their summary reports, Posting Date is renamed to Report Date, and Calculate Ageing With is renamed to Age as on with "Today Date" shortened to "Today" so the labels match how the reports work. Existing saved filters are updated automatically to match the new labels. (https://github.com/frappe/erpnext/pull/57473)
- The "Stock Ageing" report now distributes the value of a Batch across its age groups on every run, instead of only after one age group goes below zero. This changes the amounts shown in each age group when a batch includes receipts at different prices, while the total stays the same. (https://github.com/frappe/erpnext/pull/57487)
- A closed Subcontracting Order now releases any remaining raw-material reservation tied to it. The warehouse stock count reflects the freed material instead of keeping it reserved under the closed order. (https://github.com/frappe/erpnext/pull/57481)
- Treats cancelled and expired Quotations as inactive when setting the status of an Opportunity. Partially ordered Quotations now count as ordered, so an Opportunity can move to Converted. (https://github.com/frappe/erpnext/pull/57491)
- Clarifies the message shown when you try to mark an Opportunity as lost if an active Quotation exists. (https://github.com/frappe/erpnext/pull/57498)
- Limits the search through older stock records to the same item when valuing serial numbers, reducing the number of records checked. (https://github.com/frappe/erpnext/pull/57506)
- When you submit a Quotation linked to an Opportunity, the comments and communications from the linked Opportunity are carried over to the Quotation if the option in CRM Settings is enabled. (https://github.com/frappe/erpnext/pull/57509)
- Updates the Operating Cost for operations in Routing when a Workstation Hour Rate changes. (https://github.com/frappe/erpnext/pull/57504)
- Moves the Title field for Subcontracting Order and Subcontracting Inward Order into the Other Info tab and stops filling it with placeholder text on new records. Older records that still contain the placeholder are updated to show the related supplier or customer name instead. (https://github.com/frappe/erpnext/pull/57517)
- Trend reports now show the company’s currency in the chart and total row instead of the global default currency. The chart no longer counts the total row twice. (https://github.com/frappe/erpnext/pull/57523)
- The BOM Creator now keeps repeated sub-assemblies separate, so each copy shows only its own raw materials. Deleting one copy no longer affects the others. (https://github.com/frappe/erpnext/pull/57530)
- For Work Orders that track semi-finished goods, the completed quantity now adds up across all submitted Job Cards for the same operation instead of using only the most recent one. Corrective Job Cards do not count toward this total, and the Work Order is marked completed when the full quantity is done. (https://github.com/frappe/erpnext/pull/57529)
- Skips stock expense entries for items that are not kept in stock in Purchase Invoice, Purchase Receipt, Stock Entry, and Stock Reconciliation. This prevents empty accounting lines for those items. (https://github.com/frappe/erpnext/pull/57518)
- Allows BOMs created using BOM Creator to have their cost updated. (https://github.com/frappe/erpnext/pull/57536)
- Filters the Default WIP Warehouse, Default Finished Goods Warehouse, and Default Scrap Warehouse fields on the Company form so they only list warehouses for this company. Warehouse groups no longer appear in these lists. (https://github.com/frappe/erpnext/pull/57542)
- MT940 bank statement imports now use the reference from each transaction in the Reference Number column when available, instead of repeating the same reference for every transaction. The Description column also shows the transaction details when available. (https://github.com/frappe/erpnext/pull/57429)
- Adds a permission check to
get_item_details, so only users with access can view item details. (https://github.com/frappe/erpnext/pull/57551) - Production Plan now uses unit conversion rates from the item, its variant template, or UOM Conversion Factor when it lists raw materials for purchase. If no conversion rate is set anywhere, it still shows the missing setup message. (https://github.com/frappe/erpnext/pull/57554)
- You can now cancel a POS Closing Entry if its Status is Failed. (https://github.com/frappe/erpnext/pull/57572)
- Updates the help text in the Item form so Enable Deferred Revenue and Enable Deferred Expense show the correct descriptions. The income and expense guidance now appears under the matching checkbox. (https://github.com/frappe/erpnext/pull/57568)
Authors: @Pandiyan5273, @krishna-254, @kaulith, @diptanilsaha, @Sudharsanan11, @rohitwaghchaure, @Jatin3128, @khushi8112, @mihir-kandoi, @Shllokkk, @barredterra Reviewers: @rohitwaghchaure, @diptanilsaha, @mihir-kandoi, @Shllokkk, @barredterra
For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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:
- refactor
- docs
- test
- chore
- ci
- style
- build
v16.29.0
Features
- Adds an "On hold" option to the Status field in Project. Projects marked "On hold" stay in that status when their progress changes. (https://github.com/frappe/erpnext/pull/57173)
- Automatically links a matching Contact to a Customer or Supplier when a portal user is added, so the portal user can see the related records. Existing links stay unchanged, so duplicate links are not created. (https://github.com/frappe/erpnext/pull/57211)
- Adds the missing stock quantity sort options to "Stock Summary", so items with stock only in those quantities still appear when you sort by them. Adds the Reserved Stock column to the "Stock Projected Qty" report. (https://github.com/frappe/erpnext/pull/57304)
- The Bin form renames the "Recalculate Bin Qty" button to "Recalculate Values" and now also updates Valuation Rate and Stock Value from the latest stock record. For items using Standard Cost, Stock Value follows the standard rate, and those fields reset to zero when there is no stock record. (https://github.com/frappe/erpnext/pull/57302)
Bug Fixes
- Adds the missing
currencysetting to Supplier Quotation Item Net Rate, so the field shows the correct currency symbol in multi-currency supplier quotations. (https://github.com/frappe/erpnext/pull/57168) - Makes the Job Card field in Purchase Order Item read-only and keeps it out of copied and printed records. (https://github.com/frappe/erpnext/pull/57166)
- Allows a Delivery Note to be submitted when the same batch is reserved by more than one Sales Order, as long as enough stock remains for the other reservations. It still blocks deliveries when the batch would not have enough stock left for those reservations. (https://github.com/frappe/erpnext/pull/57170)
- People added to a Project can now access that project even without the Projects User role. (https://github.com/frappe/erpnext/pull/57181)
- Opens the accounting and stock ledger previews without loading every detail first, which avoids permission errors in some cases. (https://github.com/frappe/erpnext/pull/57184)
- The Production Plan purchase and transfer flow now respects Consider Minimum Order Qty when some stock comes from other warehouses and the rest is purchased. The amount left to buy does not fall below the item's Minimum Order Qty. (https://github.com/frappe/erpnext/pull/57208)
- "Stock Ageing" now recalculates the remaining value of items using moving average at the current rate. It also uses the newest stock first for LIFO items, so the report shows stock value and average age based on each item's valuation method. (https://github.com/frappe/erpnext/pull/57017)
- Strips leading and trailing spaces from Account Number in Chart of Accounts Importer before adding it to the account name. Imported account names do not include unwanted spaces from the number. (https://github.com/frappe/erpnext/pull/57219)
- Prevents Dunning Type from being saved when the selected Income Account or Cost Center does not belong to the same company or is disabled, and only one Dunning Type can be set as the default for each company. It also blocks duplicate Language entries in the letter text, lets only one language be set as the default, and checks Body Text and Closing Text for template errors. (https://github.com/frappe/erpnext/pull/57227)
- Limits Process Statement of Accounts templates to standard placeholders when generating the email subject, message, and PDF name. (https://github.com/frappe/erpnext/pull/57232)
- Material Request now auto-fills the Buying Price List only with a Price List you have access to, and it clears the field if the selected Price List is not a buying price list. Changing the Buying Price List refreshes the item prices and totals for items with a matching price. (https://github.com/frappe/erpnext/pull/57247)
- Fixes parallel stock reposting so it starts the next pending task after one finishes, instead of waiting for the next automatic run. (https://github.com/frappe/erpnext/pull/57248)
- The Material Request Date in Production Plan Material Request now fills automatically from the Transaction Date of the linked Material Request. (https://github.com/frappe/erpnext/pull/57252)
- The Transferred Qty from a Work Order is no longer copied into a Pick List, so the new Pick List does not carry over quantities already transferred on the order. (https://github.com/frappe/erpnext/pull/57257)
- Fixes a misspelled
allow_negative_stockoption in the "Stock and Account Value Comparison" and "Stock Ledger Invariant Check" reports, so they use the correct stock setting. (https://github.com/frappe/erpnext/pull/57282) - Makes % Complete editable in Project when % Complete Method is set to Manual, so the progress value can be entered directly instead of being calculated.
Adds a check that manually entered % Complete values stay between 0 and 100. (https://github.com/frappe/erpnext/pull/57276) - Fixes the "Timesheet Billing Summary" report so it can group entries even when some fields are missing, and the report still opens with the grouped totals. (https://github.com/frappe/erpnext/pull/57297)
- Prevents changing the Account Type of an Account from Stock once stock transactions have been recorded against it. (https://github.com/frappe/erpnext/pull/57285)
- Shows the payment currency symbol in the "Select Payment Schedule" dialog and the Payment Reference table on Payment Request. The Amount fields now show the payment currency symbol instead of the company currency symbol. (https://github.com/frappe/erpnext/pull/57312)
- Recalculates stock ageing values after Stock Reconciliation so the "Stock Ageing" report reflects the updated stock rate. This helps prevent negative bucket values from appearing after a revaluation. (https://github.com/frappe/erpnext/pull/57317)
- In Stock Entry, Process Loss Percentage now recalculates when Finished Goods Qty changes, using Process Loss Qty if it is already filled in. (https://github.com/frappe/erpnext/pull/57321)
- Adds a check that prevents payment features from being used when the Payments app is not installed and shows a message that the Payments app is missing. (https://github.com/frappe/erpnext/pull/57344)
Other Changes
- The Project page shows the task and timesheet sections again. (https://github.com/frappe/erpnext/pull/57178)
Authors: @rohitwaghchaure, @nishkagosalia, @Pandiyan5273, @Henil666, @mihir-kandoi, @diptanilsaha, @Sudharsanan11, @Shllokkk Reviewers: @mihir-kandoi, @rohitwaghchaure, @Jatin3128, @ruthra-kumar, @diptanilsaha, @Shllokkk
For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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
- style
- chore
- build
- docs
- refactor
- test
v16.28.0
Features
- Updates the Philippines chart of accounts with revised account names and numbers. Adds an Intangible Assets section with accumulated amortization accounts and new income and expense accounts for exchange gains and losses, gains and losses on asset disposal, and other expense items. (https://github.com/frappe/erpnext/pull/57085)
- Adds the Auto Repost Incorrect Valuation Entries (Weekly) option in Stock Reposting Settings to automatically repost incorrect stock valuation entries weekly. When enabled, it uses "Stock Ledger Variance" and "Stock and Account Value Comparison" to find entries to repost for the current financial year, skips Journal Entry documents, and notifies System Managers when a mismatch cannot be corrected automatically. (https://github.com/frappe/erpnext/pull/56700)
- The "General Ledger", "Trial Balance", "Balance Sheet", and "Profit and Loss" reports now use a faster data source on supported sites, so they load faster. (https://github.com/frappe/erpnext/pull/57098)
Bug Fixes
- Default letterheads now skip loading the company logo when a document has no company details, so those documents still print and export to PDF. The grey letterhead also sets fixed widths for the logo and table on printed pages. (https://github.com/frappe/erpnext/pull/57080)
- Payment Entry now fills in the outstanding and total amounts when you manually choose a Journal Entry in another currency. (https://github.com/frappe/erpnext/pull/57083)
- The "Budget Variance Report" chart now shows monthly actual amounts under the correct month instead of one month earlier. The Budget Against field is excluded from the chart's month labels, so the chart matches the table. (https://github.com/frappe/erpnext/pull/57081)
- In Pick List, barcode scans add a new line when Pick Manually is turned on, and repeated scans increase the picked quantity instead of being limited to the default quantity. Scans also keep the unit already on the line when the barcode uses another unit. (https://github.com/frappe/erpnext/pull/57103)
- Shows Qty (Company) and Qty (Warehouse) on line items in Sales Order, Quotation, Sales Invoice, and Delivery Note. When the Warehouse on a line item changes, both values update. (https://github.com/frappe/erpnext/pull/57105)
- Adds access checks for Terms and Conditions templates before they are used in documents and limits the text to the supported template features. (https://github.com/frappe/erpnext/pull/56977)
- Uses currency rounding when matching depreciation schedule rows in Asset to the linked Journal Entry, which helps prevent duplicate postings caused by small decimal differences. (https://github.com/frappe/erpnext/pull/56966)
- Allows Asset Repair records to be created for assets that are fully depreciated and adds an “Asset Repair” button on the Asset form. For these repairs, Capitalize Repair Cost cannot be edited and the repair does not add to the asset’s value or life. (https://github.com/frappe/erpnext/pull/57077)
- Transferred Stock Reservation Entry records now copy the original Stock UOM from the item, instead of leaving it blank or using a different unit of measure. This avoids validation errors when submitting Work Orders in affected cases. (https://github.com/frappe/erpnext/pull/57113)
- Fixes a case where submitting a Stock Entry for items with serial numbers can fail when there are many Serial and Batch Bundle records. The serial numbers are now checked differently for larger lists. (https://github.com/frappe/erpnext/pull/57118)
- Adds permission checks when showing balances in the chart of accounts, so users only see balances for accounts they can view. (https://github.com/frappe/erpnext/pull/57122)
- Keeps the transferred quantity on Work Orders that use Job Cards. Updating required items no longer replaces it with the quantity from stock transfer records. (https://github.com/frappe/erpnext/pull/57126)
- Allows a Purchase Order created from a Material Request to use the same requested item in more than one row. This lets users split the quantity across rows when they need different prices for each line. (https://github.com/frappe/erpnext/pull/57136)
Authors: @Pandiyan5273, @harisansari008, @venkat102, @Sudharsanan11, @diptanilsaha, @ssakthivelmurugan, @SandraFrappe, @ruthra-kumar, @khushi8112, @mihir-kandoi, @rohitwaghchaure, @iamejaaz Reviewers: @ruthra-kumar, @khushi8112, @shreyanshj, @mihir-kandoi
For these release notes, we used an LLM (OpenAI gpt-5.4-mini) 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:
- build
- chore
- ci
- refactor
- docs
- test
- style