pref: reduce count of db calls from n to 2

This commit is contained in:
Devin Slauenwhite 2022-07-14 18:09:08 -04:00
parent d7446fd3ae
commit 73ade04dcf

View File

@ -30,26 +30,23 @@ 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", "stock_value"],
filters={"warehouse": ["IN", warehouses], "stock_value": [">", 0]},
warehouses = [x for x in warehouses if not (x.get("balance") == None)] 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,