pref: reduce count of db calls from n to 2
diff --git a/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py b/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py
index dbf6cf0..4245d7d 100644
--- a/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py
+++ b/erpnext/stock/dashboard_chart_source/warehouse_wise_stock_value/warehouse_wise_stock_value.py
@@ -30,26 +30,23 @@
warehouse_filters.append(["company", "=", filters.get("company")])
warehouses = frappe.get_list(
- "Warehouse", fields=["name"], filters=warehouse_filters, order_by="name"
+ "Warehouse", pluck="name", filters=warehouse_filters, order_by="name"
)
- for wh in warehouses:
- balance = get_stock_value_from_bin(warehouse=wh.name)
- wh["balance"] = balance[0][0]
-
- warehouses = [x for x in warehouses if not (x.get("balance") == None)]
+ warehouses = frappe.get_list(
+ "Bin",
+ fields=["warehouse", "stock_value"],
+ filters={"warehouse": ["IN", warehouses], "stock_value": [">", 0]},
+ order_by="stock_value DESC",
+ limit_page_length=10
+ )
if not warehouses:
return []
- sorted_warehouse_map = sorted(warehouses, key=lambda i: i["balance"], reverse=True)
-
- if len(sorted_warehouse_map) > 10:
- sorted_warehouse_map = sorted_warehouse_map[:10]
-
- for warehouse in sorted_warehouse_map:
- labels.append(_(warehouse.get("name")))
- datapoints.append(warehouse.get("balance"))
+ for warehouse in warehouses:
+ labels.append(_(warehouse.get("warehouse")))
+ datapoints.append(warehouse.get("stock_value"))
return {
"labels": labels,