v15.113.0
Breaking Changes
- Adds a Frappe CRM sync toggle in CRM Settings and a Frappe CRM Allowed User list for controlling who can send data from Frappe CRM to ERPNext. Turning the setting on adds the related
crm_dealfields on Quotation and Customer, and turning it off removes them. (#56383)
Features
- Adds an Allow Negative Stock for Batch option in Batch, so you can allow negative stock for selected batches without enabling it for all batches in Stock Settings. If the batch option is not set, the existing Stock Settings setting still applies. (#56080)
Bug Fixes
- Limits the stock ageing reset in the "Stock Ageing" report to items with serial numbers. Items without serial numbers keep their age breakdown during Stock Reconciliation. (#56044)
- Updates Material Request Transfer Status to track both direct transfers and transfers through a transit warehouse. Mixed transfers are marked Completed once all quantities are moved. (#56052)
- Adds missing support for special characters in some displayed text, so affected names and labels appear correctly. (#55580)
- In Serial No, the Work Order field now excludes cancelled Work Orders from search results. (#56116)
- Renaming an Item Attribute value updates existing Item variants that use it. This avoids errors when saving those Item variants. (#56065)
- Unchecks Is Debit Note when creating a sales return from a Sales Invoice, so the return isn't marked as a debit note. (#56114)
- Fixes Payment Entry tax calculations when entries are created through the API and the payment amount already includes tax. Missing tax amounts are treated as zero, so the tax total and remaining amount are filled in. (#56122)
- The Customer and Supplier dashboards now use the customer or supplier type when matching related records. This reduces cases where records with the same name show under the wrong dashboard. (#56035)
- Bank Guarantee now lets you choose Reference Document Type from Sales Order or Purchase Order. It shows the Customer field for Sales Order and the Supplier field for Purchase Order. (#56158)
- Adds a permission check in Exchange Rate Revaluation before it shows Account details. Removes public access from a gross margin report function. (#56193)
- Applies the rounding precision used in Stock Entry to additional cost amounts, which helps prevent small rounding differences from appearing in Stock Adjustment entries. (#56248)
- When Stock Reconciliation is reposted, the system now uses the original Valuation Rate from the linked Stock Reconciliation Item instead of the rounded value already saved. (#56262)
- Allows you to transfer part of the raw materials from a Work Order instead of the full quantity at once. (#56264)
- Profile pictures in project summary emails and project pages now display correctly when the image link contains special characters. (#56270)
- Removes payment entries from non-POS return Sales Invoices when they are saved, so old payment details do not appear in bank reconciliation. (#56169)
- Adds tests that check only users who can edit an Issue can change its Status. (#56298)
- Adds a "Partially Transferred" status to Job Card when only some of the required materials are transferred. The Job Card form now shows "Material Request" and "Material Transfer" for partially transferred cards and keeps "Start" hidden until all required materials are transferred. (#56287)
- Passes the current document to regional round-off rules so they can use its details when choosing the round-off account. (#55770)
- Adds missing Margin Type, Margin Rate or Amount, and Rate With Margin fields to Supplier Quotation Item. This prevents an error when you add items to a Supplier Quotation. (#56354)
- The cards on the Accounting Dashboard now use your company's fiscal year instead of the calendar year, so the figures shown there are based on that fiscal year. (#55548)
- Makes Item Code mandatory in Job Card Item, so each row is linked to an item before the job card is saved. (#56373)
- Updates Customer and Supplier dashboards to show advance balances as "Total Advance Paid" or "Total Advance Received" instead of "Total Unpaid". The amount is shown without a minus sign. (#56385)
- The Budget error message now explains that a budget cannot be assigned to an account whose Root Type is not Income or Expense. (#56391)
- In Payment Entry, changing the exchange rate keeps the foreign-currency amount you entered unchanged while recalculating the amount in your company currency. (#56397)
- Removes a custom change handler from POS Opening Entry, so edited Opening Amount values stay in the current row instead of resetting to 0. (#56402)
Authors: @Shllokkk, @mihir-kandoi, @rohitwaghchaure, @Sudharsanan11, @vorasmit, @barredterra, @ankush, @Jatin3128, @diptanilsaha, @ljain112, @nareshkannasln, @khushi8112, @ravibharathi656, @Pandiyan5273, @iamkhanraheel
Reviewers: @ps173, @ruthra-kumar, @mihir-kandoi, @rohitwaghchaure, @vorasmit, @sagarvora, @ankush, @diptanilsaha
AI content
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:
- test
- ci
- build
- chore
- refactor
- docs
- style