fix: slowness in reposting dependent vouchers. (#42282)
(cherry picked from commit b17696a8ae)
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
@@ -203,6 +203,8 @@ def repost_future_sle(
|
|||||||
"posting_time": args[i].get("posting_time"),
|
"posting_time": args[i].get("posting_time"),
|
||||||
"creation": args[i].get("creation"),
|
"creation": args[i].get("creation"),
|
||||||
"distinct_item_warehouses": distinct_item_warehouses,
|
"distinct_item_warehouses": distinct_item_warehouses,
|
||||||
|
"items_to_be_repost": args,
|
||||||
|
"current_index": i,
|
||||||
},
|
},
|
||||||
allow_negative_stock=allow_negative_stock,
|
allow_negative_stock=allow_negative_stock,
|
||||||
via_landed_cost_voucher=via_landed_cost_voucher,
|
via_landed_cost_voucher=via_landed_cost_voucher,
|
||||||
@@ -486,11 +488,20 @@ class update_entries_after:
|
|||||||
self.distinct_item_warehouses[key] = val
|
self.distinct_item_warehouses[key] = val
|
||||||
self.new_items_found = True
|
self.new_items_found = True
|
||||||
else:
|
else:
|
||||||
|
# Check if the dependent voucher is reposted
|
||||||
|
# If not, then do not add it to the list
|
||||||
|
if not self.is_dependent_voucher_reposted(dependant_sle):
|
||||||
|
return
|
||||||
|
|
||||||
existing_sle_posting_date = self.distinct_item_warehouses[key].get("sle", {}).get("posting_date")
|
existing_sle_posting_date = self.distinct_item_warehouses[key].get("sle", {}).get("posting_date")
|
||||||
|
|
||||||
dependent_voucher_detail_nos = self.get_dependent_voucher_detail_nos(key)
|
dependent_voucher_detail_nos = self.get_dependent_voucher_detail_nos(key)
|
||||||
|
|
||||||
if getdate(dependant_sle.posting_date) < getdate(existing_sle_posting_date):
|
if getdate(dependant_sle.posting_date) < getdate(existing_sle_posting_date):
|
||||||
|
if dependent_voucher_detail_nos and dependant_sle.voucher_detail_no in set(
|
||||||
|
dependent_voucher_detail_nos
|
||||||
|
):
|
||||||
|
return
|
||||||
|
|
||||||
val.sle_changed = True
|
val.sle_changed = True
|
||||||
dependent_voucher_detail_nos.append(dependant_sle.voucher_detail_no)
|
dependent_voucher_detail_nos.append(dependant_sle.voucher_detail_no)
|
||||||
val.dependent_voucher_detail_nos = dependent_voucher_detail_nos
|
val.dependent_voucher_detail_nos = dependent_voucher_detail_nos
|
||||||
@@ -504,6 +515,27 @@ class update_entries_after:
|
|||||||
val.dependent_voucher_detail_nos = dependent_voucher_detail_nos
|
val.dependent_voucher_detail_nos = dependent_voucher_detail_nos
|
||||||
self.distinct_item_warehouses[key] = val
|
self.distinct_item_warehouses[key] = val
|
||||||
|
|
||||||
|
def is_dependent_voucher_reposted(self, dependant_sle) -> bool:
|
||||||
|
# Return False if the dependent voucher is not reposted
|
||||||
|
|
||||||
|
if self.args.items_to_be_repost and self.args.current_index:
|
||||||
|
index = self.args.current_index
|
||||||
|
while index < len(self.args.items_to_be_repost):
|
||||||
|
if (
|
||||||
|
self.args.items_to_be_repost[index].get("item_code") == dependant_sle.item_code
|
||||||
|
and self.args.items_to_be_repost[index].get("warehouse") == dependant_sle.warehouse
|
||||||
|
):
|
||||||
|
if getdate(self.args.items_to_be_repost[index].get("posting_date")) > getdate(
|
||||||
|
dependant_sle.posting_date
|
||||||
|
):
|
||||||
|
self.args.items_to_be_repost[index]["posting_date"] = dependant_sle.posting_date
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
index += 1
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def get_dependent_voucher_detail_nos(self, key):
|
def get_dependent_voucher_detail_nos(self, key):
|
||||||
if "dependent_voucher_detail_nos" not in self.distinct_item_warehouses[key]:
|
if "dependent_voucher_detail_nos" not in self.distinct_item_warehouses[key]:
|
||||||
self.distinct_item_warehouses[key].dependent_voucher_detail_nos = []
|
self.distinct_item_warehouses[key].dependent_voucher_detail_nos = []
|
||||||
|
|||||||
Reference in New Issue
Block a user