mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-31 23:33:43 +00:00
Merge pull request #56923 from aerele/fix/reorder-item-warehouse-lookup-perf
perf: avoid per-row Warehouse doc fetches in auto reorder job
This commit is contained in:
@@ -182,6 +182,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.get_all(
|
for item_code, warehouse, projected_qty in frappe.get_all(
|
||||||
"Bin",
|
"Bin",
|
||||||
filters={"item_code": ["in", items_to_consider], "warehouse": ["is", "set"]},
|
filters={"item_code": ["in", items_to_consider], "warehouse": ["is", "set"]},
|
||||||
@@ -194,16 +198,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