mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-22 11:44:11 +00:00
perf: memory consumption for the stock balance report (#39626)
(cherry picked from commit b70f3de16b)
# Conflicts:
# erpnext/stock/report/stock_balance/stock_balance.py
This commit is contained in:
@@ -90,8 +90,7 @@ class StockBalanceReport(object):
|
|||||||
self.opening_data.setdefault(group_by_key, entry)
|
self.opening_data.setdefault(group_by_key, entry)
|
||||||
|
|
||||||
def prepare_new_data(self):
|
def prepare_new_data(self):
|
||||||
if not self.sle_entries:
|
self.item_warehouse_map = self.get_item_warehouse_map()
|
||||||
return
|
|
||||||
|
|
||||||
if self.filters.get("show_stock_ageing_data"):
|
if self.filters.get("show_stock_ageing_data"):
|
||||||
self.filters["show_warehouse_wise_stock"] = True
|
self.filters["show_warehouse_wise_stock"] = True
|
||||||
@@ -99,7 +98,13 @@ class StockBalanceReport(object):
|
|||||||
|
|
||||||
_func = itemgetter(1)
|
_func = itemgetter(1)
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
self.item_warehouse_map = self.get_item_warehouse_map()
|
self.item_warehouse_map = self.get_item_warehouse_map()
|
||||||
|
=======
|
||||||
|
del self.sle_entries
|
||||||
|
|
||||||
|
sre_details = self.get_sre_reserved_qty_details()
|
||||||
|
>>>>>>> b70f3de16b (perf: memory consumption for the stock balance report (#39626))
|
||||||
|
|
||||||
variant_values = {}
|
variant_values = {}
|
||||||
if self.filters.get("show_variant_attributes"):
|
if self.filters.get("show_variant_attributes"):
|
||||||
@@ -139,6 +144,13 @@ class StockBalanceReport(object):
|
|||||||
item_warehouse_map = {}
|
item_warehouse_map = {}
|
||||||
self.opening_vouchers = self.get_opening_vouchers()
|
self.opening_vouchers = self.get_opening_vouchers()
|
||||||
|
|
||||||
|
if self.filters.get("show_stock_ageing_data"):
|
||||||
|
self.sle_entries = self.sle_query.run(as_dict=True)
|
||||||
|
|
||||||
|
with frappe.db.unbuffered_cursor():
|
||||||
|
if not self.filters.get("show_stock_ageing_data"):
|
||||||
|
self.sle_entries = self.sle_query.run(as_dict=True, as_iterator=True)
|
||||||
|
|
||||||
for entry in self.sle_entries:
|
for entry in self.sle_entries:
|
||||||
group_by_key = self.get_group_by_key(entry)
|
group_by_key = self.get_group_by_key(entry)
|
||||||
if group_by_key not in item_warehouse_map:
|
if group_by_key not in item_warehouse_map:
|
||||||
@@ -236,7 +248,8 @@ class StockBalanceReport(object):
|
|||||||
.where(
|
.where(
|
||||||
(table.docstatus == 1)
|
(table.docstatus == 1)
|
||||||
& (table.company == self.filters.company)
|
& (table.company == self.filters.company)
|
||||||
& ((table.to_date <= self.from_date))
|
& (table.to_date <= self.from_date)
|
||||||
|
& (table.status == "Completed")
|
||||||
)
|
)
|
||||||
.orderby(table.to_date, order=Order.desc)
|
.orderby(table.to_date, order=Order.desc)
|
||||||
.limit(1)
|
.limit(1)
|
||||||
@@ -289,7 +302,7 @@ class StockBalanceReport(object):
|
|||||||
if self.filters.get("company"):
|
if self.filters.get("company"):
|
||||||
query = query.where(sle.company == self.filters.get("company"))
|
query = query.where(sle.company == self.filters.get("company"))
|
||||||
|
|
||||||
self.sle_entries = query.run(as_dict=True)
|
self.sle_query = query
|
||||||
|
|
||||||
def apply_inventory_dimensions_filters(self, query, sle) -> str:
|
def apply_inventory_dimensions_filters(self, query, sle) -> str:
|
||||||
inventory_dimension_fields = self.get_inventory_dimension_fields()
|
inventory_dimension_fields = self.get_inventory_dimension_fields()
|
||||||
|
|||||||
Reference in New Issue
Block a user