Merge pull request #31717 from frappe/mergify/bp/version-13-hotfix/pr-31601
perf: reduce db calls for warehouse wise stock value chart (backport #31601)
This commit is contained in:
@@ -6,8 +6,6 @@ import frappe
|
|||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils.dashboard import cache_source
|
from frappe.utils.dashboard import cache_source
|
||||||
|
|
||||||
from erpnext.stock.utils import get_stock_value_from_bin
|
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
@cache_source
|
@cache_source
|
||||||
@@ -30,26 +28,24 @@ def get(
|
|||||||
warehouse_filters.append(["company", "=", filters.get("company")])
|
warehouse_filters.append(["company", "=", filters.get("company")])
|
||||||
|
|
||||||
warehouses = frappe.get_list(
|
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:
|
warehouses = frappe.get_list(
|
||||||
balance = get_stock_value_from_bin(warehouse=wh.name)
|
"Bin",
|
||||||
wh["balance"] = balance[0][0]
|
fields=["warehouse", "sum(stock_value) stock_value"],
|
||||||
|
filters={"warehouse": ["IN", warehouses], "stock_value": [">", 0]},
|
||||||
warehouses = [x for x in warehouses if not (x.get("balance") == None)]
|
group_by="warehouse",
|
||||||
|
order_by="stock_value DESC",
|
||||||
|
limit_page_length=10,
|
||||||
|
)
|
||||||
|
|
||||||
if not warehouses:
|
if not warehouses:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
sorted_warehouse_map = sorted(warehouses, key=lambda i: i["balance"], reverse=True)
|
for warehouse in warehouses:
|
||||||
|
labels.append(_(warehouse.get("warehouse")))
|
||||||
if len(sorted_warehouse_map) > 10:
|
datapoints.append(warehouse.get("stock_value"))
|
||||||
sorted_warehouse_map = sorted_warehouse_map[:10]
|
|
||||||
|
|
||||||
for warehouse in sorted_warehouse_map:
|
|
||||||
labels.append(_(warehouse.get("name")))
|
|
||||||
datapoints.append(warehouse.get("balance"))
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"labels": labels,
|
"labels": labels,
|
||||||
|
|||||||
Reference in New Issue
Block a user