Merge pull request #39732 from frappe/mergify/bp/version-15-hotfix/pr-39626
perf: memory consumption for the stock balance report (backport #39626)
This commit is contained in:
commit
66661d0649
@ -90,8 +90,7 @@ class StockBalanceReport(object):
|
||||
self.opening_data.setdefault(group_by_key, entry)
|
||||
|
||||
def prepare_new_data(self):
|
||||
if not self.sle_entries:
|
||||
return
|
||||
self.item_warehouse_map = self.get_item_warehouse_map()
|
||||
|
||||
if self.filters.get("show_stock_ageing_data"):
|
||||
self.filters["show_warehouse_wise_stock"] = True
|
||||
@ -99,7 +98,8 @@ class StockBalanceReport(object):
|
||||
|
||||
_func = itemgetter(1)
|
||||
|
||||
self.item_warehouse_map = self.get_item_warehouse_map()
|
||||
del self.sle_entries
|
||||
|
||||
sre_details = self.get_sre_reserved_qty_details()
|
||||
|
||||
variant_values = {}
|
||||
@ -143,15 +143,22 @@ class StockBalanceReport(object):
|
||||
item_warehouse_map = {}
|
||||
self.opening_vouchers = self.get_opening_vouchers()
|
||||
|
||||
for entry in self.sle_entries:
|
||||
group_by_key = self.get_group_by_key(entry)
|
||||
if group_by_key not in item_warehouse_map:
|
||||
self.initialize_data(item_warehouse_map, group_by_key, entry)
|
||||
if self.filters.get("show_stock_ageing_data"):
|
||||
self.sle_entries = self.sle_query.run(as_dict=True)
|
||||
|
||||
self.prepare_item_warehouse_map(item_warehouse_map, entry, group_by_key)
|
||||
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)
|
||||
|
||||
if self.opening_data.get(group_by_key):
|
||||
del self.opening_data[group_by_key]
|
||||
for entry in self.sle_entries:
|
||||
group_by_key = self.get_group_by_key(entry)
|
||||
if group_by_key not in item_warehouse_map:
|
||||
self.initialize_data(item_warehouse_map, group_by_key, entry)
|
||||
|
||||
self.prepare_item_warehouse_map(item_warehouse_map, entry, group_by_key)
|
||||
|
||||
if self.opening_data.get(group_by_key):
|
||||
del self.opening_data[group_by_key]
|
||||
|
||||
for group_by_key, entry in self.opening_data.items():
|
||||
if group_by_key not in item_warehouse_map:
|
||||
@ -252,7 +259,8 @@ class StockBalanceReport(object):
|
||||
.where(
|
||||
(table.docstatus == 1)
|
||||
& (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)
|
||||
.limit(1)
|
||||
@ -305,7 +313,7 @@ class StockBalanceReport(object):
|
||||
if 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:
|
||||
inventory_dimension_fields = self.get_inventory_dimension_fields()
|
||||
|
Loading…
x
Reference in New Issue
Block a user