Merge pull request #36221 from s-aga-r/FIX-ISS-23-24-02079

perf: use `LEFT JOIN` instead of `NOT EXISTS`
This commit is contained in:
s-aga-r 2023-07-28 17:51:24 +05:30 committed by GitHub
commit d9ac7f9b87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 6 deletions

View File

@ -93,6 +93,7 @@ class BOMUpdateLog(Document):
else: else:
frappe.enqueue( frappe.enqueue(
method="erpnext.manufacturing.doctype.bom_update_log.bom_update_log.process_boms_cost_level_wise", method="erpnext.manufacturing.doctype.bom_update_log.bom_update_log.process_boms_cost_level_wise",
queue="long",
update_doc=self, update_doc=self,
now=frappe.flags.in_test, now=frappe.flags.in_test,
enqueue_after_commit=True, enqueue_after_commit=True,

View File

@ -157,12 +157,19 @@ def get_next_higher_level_boms(
def get_leaf_boms() -> List[str]: def get_leaf_boms() -> List[str]:
"Get BOMs that have no dependencies." "Get BOMs that have no dependencies."
return frappe.db.sql_list( bom = frappe.qb.DocType("BOM")
"""select name from `tabBOM` bom bom_item = frappe.qb.DocType("BOM Item")
where docstatus=1 and is_active=1
and not exists(select bom_no from `tabBOM Item` boms = (
where parent=bom.name and bom_no !='')""" frappe.qb.from_(bom)
) .left_join(bom_item)
.on((bom.name == bom_item.parent) & (bom_item.bom_no != ""))
.select(bom.name)
.where((bom.docstatus == 1) & (bom.is_active == 1) & (bom_item.bom_no.isnull()))
.distinct()
).run(pluck=True)
return boms
def _generate_dependence_map() -> defaultdict: def _generate_dependence_map() -> defaultdict: