Skip to content

chore: release v15 - #57549

Merged
diptanilsaha merged 56 commits into
version-15from
version-15-hotfix
Jul 28, 2026
Merged

chore: release v15#57549
diptanilsaha merged 56 commits into
version-15from
version-15-hotfix

Conversation

@frappe-pr-bot

Copy link
Copy Markdown
Collaborator

Automated weekly release.

mihir-kandoi and others added 30 commits July 22, 2026 12:51
On cancel, update_entries_after replays every live SLE at the voucher's
posting datetime, but get_previous_sle_of_current_voucher seeded the
replay with the reversal SLE's creation, which resolves to the bucket's
own closing row. The bucket's net qty got double-counted into every
same-datetime row, so later submissions passed negative stock validation
against inflated balances, and the queued repost then rewrote correct
values with allow_negative_stock forced on, silently creating negative
stock. Backports the missing guard from eca71dc.
…ay-v15

fix: seed cancelled voucher replay from before its posting datetime (v15)
…save-button

fix: restore Save button on reverse journal entry
…57359)

* fix: respect selected BOM when creating work order for variant item

* fix: add type hints to make_work_order

(cherry picked from commit 1132eb1)
…-57359

fix: respect selected BOM when creating work order for variant item (backport #57359)
A batch is one valuation pool, so consumption is valued at the pooled
rate while slots may carry stale intra-batch detail (e.g. units
reconciled at zero and later merged). Consuming such a slot leaves a
negative value on positive qty. Spread the pool value across the
batch's slots when that happens; non-batchwise slots pool per
warehouse.
fix: check if item is variant when creating WO from MR (backport #51019)
…ol-rebalance-v15

fix: rebalance batch slot values at the pooled rate when driven negative (backport #57403)
…-57400

fix: guard against missing is_your_company_address custom field on ad… (backport #57400)
sort on (expiry is none, expiry) so a null expiry_date is never
order-compared against a datetime.date, which raised typeerror in
python 3 when a warehouse held both dated and never-expiring batches.

(cherry picked from commit 62c9f8e)
…-57413

fix: typeerror in get_batches_by_oldest for mixed batch expiry (backport #57413)
…st-v15

fix: map pick list customer to delivery note when no sales order
use frappe.get_list instead of frappe.get_all in get_dashboard_info so
the company list honors user permissions. previously, a party with
invoices across multiple companies would raise "User don't have
permissions to select/read this account" for users restricted to a
subset of companies, since get_party_account was called for companies
the user could not access.

fixes #57428

(cherry picked from commit 903c87b)
…-57435

fix(accounts): respect user permissions in party dashboard company list (backport #57435)
…-57466

fix: recalculate operating cost on hour rate change in routing (backport #57466)
(cherry picked from commit f13cd00)

# Conflicts:
#	erpnext/patches.txt
…subcontracting order

the bin reserved-qty recalc filtered out closed purchase orders but not
closed subcontracting orders, so closing a partially-received sco kept the
reservation for the unreceived qty and left projected qty understated.
apply the same closed-status filter to the subcontracting order path.

(cherry picked from commit db91a79)

# Conflicts:
#	erpnext/stock/doctype/bin/bin.py
…acting order

close a partially-received sco with a reserve warehouse and assert the
raw-material reservation is released and projected qty recovers.

(cherry picked from commit e4b8065)
…-57476

refactor: configurable date in reverse ERR journals (backport #57476)
Shllokkk and others added 14 commits July 27, 2026 16:41
…-57443

fix: rename misleading filter labels in AR/AP reports (backport #57443)
… lost (backport #57495) (#57497)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
…) (#57505)

fix(stock): narrow legacy serial ledger lookup by item (#57499)

Filter legacy Stock Ledger Entry lookups by item code so the existing
item and warehouse index can reduce rows scanned during serial valuation.

(cherry picked from commit 425191e)

Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
…an issue especially same posting datetime (backport #57380) (#57396)

* fix: Incorrect creation time at the time cancelling an entry causing an issue especially same posting datetime  (#57380)

* fix: shift same-timestamp sibling SLEs when cancelling an entry

update_qty_in_future_sle compared against the reversal SLE's own
creation and skipped same-posting_datetime siblings on cancel, leaving
their qty_after_transaction stale and causing false negative stock
errors.

* fix: revert update_qty_in_future_sle cancel tie-break, it double-counted

(cherry picked from commit 8c0ec3c)

# Conflicts:
#	erpnext/stock/doctype/stock_ledger_entry/test_stock_ledger_entry.py

* chore: fix conflicts

Fix test cases related to stock ledger entry cancellations and ensure correct handling of same timestamp entries.

* test: use named item in test_cancel_shifts_same_timestamp_delivery_notes

* chore: fix typo

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
…-57504

fix: update operating cost when propagating workstation hour rate to routing (backport #57504)
…nt title

Purchase Order, Sales Order and Subcontracting Order point title_field at
the party name field, so Document.set_title_field() never rendered their
title template and every new record stored the placeholder verbatim. On
Purchase Order the field is also mandatory, so the junk value is guaranteed.

Drop the dead defaults (and Purchase Order's reqd, which would otherwise
make an always-empty field mandatory) and backfill the affected rows.
#56561)

Reports like Sales Order Trends and Purchase Order Trends showed the global
default currency symbol instead of the transacting company's currency.

Threads the company currency through conditions["company_currency"] in
trends.get_columns and uses it for both the chart's currency and the Total
row. The chart now skips the grand-total row by its label instead of by a
falsy first periodic cell, so the already-summed Total row is not added into
the datapoints a second time.

Backport of #56561 (frappe/erpnext). Two parts of the original PR are not
included: the Landed Cost Report does not exist on this branch, and the
trends report test files do not exist either.
calculate_total_row tested each column with `"Link/Currency" in col`, but
based-on and group-by columns are dicts, so the test checked the dict's keys
and never matched. currency_col_idx stayed None and the grand-total row's
currency cell was left unset, so Total(Amt) rendered with the global default
currency instead of the company's.

Match the dict's fieldtype/options instead. Dict columns are never numeric
and string columns are never Link columns, so the two branches are now
mutually exclusive.
fix: use company currency instead of global default in report (backpo…
fix: stop storing "{supplier_name}" / "{customer_name}" as the document title
`calculate_rm_cost` skipped rate refresh whenever `bom_creator` was set,
so neither the Update Cost button nor the BOM Update Tool could ever
refresh those BOMs. Every BOM in a multi-level tree carries the field, so
whole trees stayed frozen at their creation rates.

The guard replaced the removed `rm_cost_as_per == "Manual"` check in
0b63dbf, on the assumption that BOM Creator rows hold manual rates. They
do not: BOM Creator recomputes every row from `rm_cost_as_per` on save.
…te-cost-v15

fix(manufacturing): update cost of BOMs created via BOM Creator (backport #57532)
@github-actions github-actions Bot added accounts stock skip-release-notes This PR should not be mentioned in the release notes labels Jul 28, 2026
@mergify

mergify Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

Shllokkk and others added 6 commits July 28, 2026 11:22
…lue Comparison (#57552)

fix: respect child warehouse account override in stock vs account value comparison
(cherry picked from commit 5fc20d6)
…Plan (backport #57553) (#57555)

fix(manufacturing): fall back to UOM Conversion Factor in Production Plan

Production Plan read the conversion factor straight off the item's own
UOM child table, so an item with a purchase UOM but no matching row threw
"UOM Conversion factor not found" while Stock Entry silently resolved it
from the item's variant template or the UOM Conversion Factor doctype.
Resolve it the same way, and keep returning None when nothing is
configured anywhere so the missing-setup error still fires.
…-57552

fix: respect child warehouse account override in Stock and Account Value Comparison (backport #57552)
…57550)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
… (backport #56944) (backport #56977) (#57106)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
@diptanilsaha
diptanilsaha merged commit d5b49cd into version-15 Jul 28, 2026
23 of 24 checks passed
@frappe-pr-bot

Copy link
Copy Markdown
Collaborator Author

🎉 This PR is included in version 15.118.2 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accounts released skip-release-notes This PR should not be mentioned in the release notes stock

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants