From 73ade04dcf8a4ab31fc803f12a430e417da6967a Mon Sep 17 00:00:00 2001 From: Devin Slauenwhite Date: Thu, 14 Jul 2022 18:09:08 -0400 Subject: [PATCH 1/3] pref: reduce count of db calls from n to 2 --- .../warehouse_wise_stock_value.py | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) 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 dbf6cf05e79..4245d7d4103 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 @@ def get( 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, From bc3023318ec329b243ec231f190865e4d91e8723 Mon Sep 17 00:00:00 2001 From: Devin Slauenwhite Date: Thu, 14 Jul 2022 18:09:52 -0400 Subject: [PATCH 2/3] chore: remove unused import --- .../warehouse_wise_stock_value/warehouse_wise_stock_value.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 4245d7d4103..5bb6446101c 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 @@ -6,8 +6,6 @@ import frappe from frappe import _ from frappe.utils.dashboard import cache_source -from erpnext.stock.utils import get_stock_value_from_bin - @frappe.whitelist() @cache_source @@ -38,7 +36,7 @@ def get( fields=["warehouse", "stock_value"], filters={"warehouse": ["IN", warehouses], "stock_value": [">", 0]}, order_by="stock_value DESC", - limit_page_length=10 + limit_page_length=10, ) if not warehouses: From 1e20358c28d3929dd862feb05025ee566a4e2285 Mon Sep 17 00:00:00 2001 From: Devin Slauenwhite Date: Thu, 14 Jul 2022 18:53:50 -0400 Subject: [PATCH 3/3] fix: sum stock_value and group by warehouse --- .../warehouse_wise_stock_value/warehouse_wise_stock_value.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 5bb6446101c..d488150eef3 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 @@ -33,8 +33,9 @@ def get( warehouses = frappe.get_list( "Bin", - fields=["warehouse", "stock_value"], + fields=["warehouse", "sum(stock_value) stock_value"], filters={"warehouse": ["IN", warehouses], "stock_value": [">", 0]}, + group_by="warehouse", order_by="stock_value DESC", limit_page_length=10, )