mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-17 10:36:31 +00:00
Merge pull request #57024 from aerele/backport-56923-version-16-hotfix
perf: avoid per-row Warehouse doc fetches in auto reorder job
This commit is contained in:
@@ -190,6 +190,10 @@ def get_item_warehouse_projected_qty(items_to_consider):
|
|||||||
item_warehouse_projected_qty = {}
|
item_warehouse_projected_qty = {}
|
||||||
items_to_consider = list(items_to_consider.keys())
|
items_to_consider = list(items_to_consider.keys())
|
||||||
|
|
||||||
|
warehouse_parent_map = frappe._dict(
|
||||||
|
frappe.get_all("Warehouse", fields=["name", "parent_warehouse"], as_list=True)
|
||||||
|
)
|
||||||
|
|
||||||
for item_code, warehouse, projected_qty in frappe.db.sql(
|
for item_code, warehouse, projected_qty in frappe.db.sql(
|
||||||
"""select item_code, warehouse, projected_qty
|
"""select item_code, warehouse, projected_qty
|
||||||
from tabBin where item_code in ({})
|
from tabBin where item_code in ({})
|
||||||
@@ -204,16 +208,14 @@ def get_item_warehouse_projected_qty(items_to_consider):
|
|||||||
if warehouse not in item_warehouse_projected_qty.get(item_code):
|
if warehouse not in item_warehouse_projected_qty.get(item_code):
|
||||||
item_warehouse_projected_qty[item_code][warehouse] = flt(projected_qty)
|
item_warehouse_projected_qty[item_code][warehouse] = flt(projected_qty)
|
||||||
|
|
||||||
warehouse_doc = frappe.get_doc("Warehouse", warehouse)
|
parent_warehouse = warehouse_parent_map.get(warehouse)
|
||||||
|
|
||||||
while warehouse_doc.parent_warehouse:
|
while parent_warehouse:
|
||||||
if not item_warehouse_projected_qty.get(item_code, {}).get(warehouse_doc.parent_warehouse):
|
if not item_warehouse_projected_qty.get(item_code, {}).get(parent_warehouse):
|
||||||
item_warehouse_projected_qty.setdefault(item_code, {})[warehouse_doc.parent_warehouse] = flt(
|
item_warehouse_projected_qty.setdefault(item_code, {})[parent_warehouse] = flt(projected_qty)
|
||||||
projected_qty
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
item_warehouse_projected_qty[item_code][warehouse_doc.parent_warehouse] += flt(projected_qty)
|
item_warehouse_projected_qty[item_code][parent_warehouse] += flt(projected_qty)
|
||||||
warehouse_doc = frappe.get_doc("Warehouse", warehouse_doc.parent_warehouse)
|
parent_warehouse = warehouse_parent_map.get(parent_warehouse)
|
||||||
|
|
||||||
return item_warehouse_projected_qty
|
return item_warehouse_projected_qty
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user