perf: memory consumption for the stock balance report (#39626)
This commit is contained in:
parent
955098c4c0
commit
b70f3de16b
@ -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,8 @@ class StockBalanceReport(object):
|
|||||||
|
|
||||||
_func = itemgetter(1)
|
_func = itemgetter(1)
|
||||||
|
|
||||||
self.item_warehouse_map = self.get_item_warehouse_map()
|
del self.sle_entries
|
||||||
|
|
||||||
sre_details = self.get_sre_reserved_qty_details()
|
sre_details = self.get_sre_reserved_qty_details()
|
||||||
|
|
||||||
variant_values = {}
|
variant_values = {}
|
||||||
@ -143,15 +143,22 @@ class StockBalanceReport(object):
|
|||||||
item_warehouse_map = {}
|
item_warehouse_map = {}
|
||||||
self.opening_vouchers = self.get_opening_vouchers()
|
self.opening_vouchers = self.get_opening_vouchers()
|
||||||
|
|
||||||
for entry in self.sle_entries:
|
if self.filters.get("show_stock_ageing_data"):
|
||||||
group_by_key = self.get_group_by_key(entry)
|
self.sle_entries = self.sle_query.run(as_dict=True)
|
||||||
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)
|
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):
|
for entry in self.sle_entries:
|
||||||
del self.opening_data[group_by_key]
|
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():
|
for group_by_key, entry in self.opening_data.items():
|
||||||
if group_by_key not in item_warehouse_map:
|
if group_by_key not in item_warehouse_map:
|
||||||
@ -252,7 +259,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)
|
||||||
@ -305,7 +313,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()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user