perf: batch status check for on-hold/closed documents, remove N+1 queries (backport #54798) (#55573)

* perf: batch status check for on-hold/closed documents, remove N+1 queries (#54798)

(cherry picked from commit 5074597d00)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.py

* chore: resolve conflicts

---------

Co-authored-by: Shubh Doshi <124681920+shubhdoshi21@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
This commit is contained in:
mergify[bot]
2026-06-03 16:00:54 +00:00
committed by GitHub
parent 6a503f834c
commit 0274afe560
9 changed files with 62 additions and 66 deletions

View File

@@ -11,7 +11,6 @@ from frappe.utils import cint, flt, get_link_to_form, getdate, nowdate
import erpnext
from erpnext.accounts.utils import get_account_currency
from erpnext.buying.utils import check_on_hold_or_closed_status
from erpnext.controllers.subcontracting_controller import SubcontractingController
from erpnext.setup.doctype.brand.brand import get_brand_defaults
from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults
@@ -215,9 +214,7 @@ class SubcontractingReceipt(SubcontractingController):
self.create_raw_materials_supplied_or_received()
def validate_closed_subcontracting_order(self):
for item in self.items:
if item.subcontracting_order:
check_on_hold_or_closed_status("Subcontracting Order", item.subcontracting_order)
self.check_for_on_hold_or_closed_status("Subcontracting Order", "subcontracting_order")
def update_job_card(self):
for row in self.get("items"):