# ERPNext v15.118.2 - Product: ERPNext (https://whatsnew.fyi/product/erpnext) - Vendor: Frappe - Date: 2026-07-28 - Version: v15.118.2 - Original notes: https://github.com/frappe/erpnext/releases/tag/v15.118.2 - Permalink: https://whatsnew.fyi/product/erpnext/releases/v15.118.2 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — When several Stock Entry documents share the same Posting Date and Posting Time, canceling one now starts from the balance before that time instead of counting the canceled quantity twice - **fixed** — Reversing a Journal Entry keeps the form locked and restores the Save button - **fixed** — When creating a Work Order for a variant item, ERPNext keeps the selected BOM instead of replacing it with the default one - **fixed** — Creating a Work Order from a Material Request now recognises item variants and automatically uses the parent template BOM when the variant lacks its own, preventing the No BOM found error and keeping the request linked to its Work Order - **fixed** — 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 - **fixed** — Address now handles a missing is_your_company_address field without stopping with an error when saving or importing Address records - **fixed** — The Batch selection now puts batches without an Expiry Date at the end of the list to avoid an error when a Warehouse contains both expiring and non-expiring batches - **fixed** — Copies the Customer from a Pick List to the Delivery Note Customer field when there is no Sales Order and the field is blank - **fixed** — The dashboard on Customer and Supplier forms now shows summary information only for companies the current user can access - **fixed** — The Stock Balance report turns on Include Zero Stock Items by default, so items with no stock appear when the report opens - **fixed** — When you change Hour Rate in Routing, Operating Cost updates for that operation - **fixed** — 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 - **fixed** — A closed Subcontracting Order now releases any remaining raw-material reservation tied to it - **fixed** — Treats cancelled and expired Quotations as inactive when setting the status of an Opportunity, allowing Opportunity to move to Converted - **changed** — 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 - **fixed** — Clarifies the message shown when you try to mark an Opportunity as lost if an active Quotation exists - **fixed** — Limits the search through older stock records to the same item when valuing serial numbers, reducing the number of records checked - **fixed** — 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 - **fixed** — Updates the Operating Cost for operations in Routing when a Workstation Hour Rate changes - **fixed** — Trend reports now display amounts in the company's currency instead of the default currency and skip the total row ##### Bug Fixes * When several **Stock Entry** documents share the same _Posting Date_ and _Posting Time_, canceling one now starts from the balance before that time instead of counting the canceled quantity twice. (https://github.com/frappe/erpnext/pull/57347) * Reversing a **Journal Entry** keeps the form locked and restores the "Save" button. (https://github.com/frappe/erpnext/pull/57379) * 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/57394) * Creating a "Work Order" from a **Material Request** now recognises item variants and automatically uses the parent template BOM when the variant lacks its own, preventing the previous “No BOM found” error and keeping the request linked to its Work Order. (https://github.com/frappe/erpnext/pull/57401) * 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/57405) * Updates **Address** to handle a missing `is_your_company_address` field. Saving or importing **Address** records no longer stops with an error in that case. (https://github.com/frappe/erpnext/pull/57407) * 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/57414) * Copies the _Customer_ from a **Pick List** to the **Delivery Note** _Customer_ field when there is no **Sales Order** and the field is blank. (https://github.com/frappe/erpnext/pull/57422) * 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/57439) * 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/57458) * When you change _Hour Rate_ in **Routing**, _Operating Cost_ updates for that operation. (https://github.com/frappe/erpnext/pull/57467) * 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/57486) * 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/57480) * Treats cancelled and expired **Quotation**s as inactive when setting the status of an **Opportunity**. Partially ordered **Quotation**s now count as ordered, so an **Opportunity** can move to Converted. (https://github.com/frappe/erpnext/pull/57490) * 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/57472) * Clarifies the message shown when you try to mark an **Opportunity** as lost if an active **Quotation** exists. (https://github.com/frappe/erpnext/pull/57497) * 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/57505) * When several stock entries share the same date and time, c _[Truncated at 4000 characters — full notes: https://github.com/frappe/erpnext/releases/tag/v15.118.2]_