fix: item-wh reposting, code cleanup

(cherry picked from commit e0ca34ae39)
This commit is contained in:
Rohit Waghchaure
2026-03-30 13:23:36 +05:30
committed by Mergify
parent f01f7e7974
commit 8d2c4da931

View File

@@ -601,7 +601,7 @@ class update_entries_after:
def initialize_reposting(self):
self._sles = []
self.distinct_sles = set()
self.distinct_dependant_sle = set()
self.distinct_dependant_item_wh = set()
self.prev_sle_dict = frappe._dict({})
def get_item_wh_wise_last_posted_sle(self):
@@ -642,20 +642,15 @@ class update_entries_after:
if item_wh_key not in self.prev_sle_dict:
self.prev_sle_dict[item_wh_key] = get_previous_sle_of_current_voucher(sle)
if (
sle.dependant_sle_voucher_detail_no
and sle.dependant_sle_voucher_detail_no not in self.distinct_dependant_sle
):
self._sles.append(sle)
self.distinct_dependant_sle.add(sle.dependant_sle_voucher_detail_no)
self.include_dependant_sle_in_reposting(sle)
continue
self.repost_stock_ledger_entry(sle)
# To avoid duplicate reposting of same sle in case of multiple dependant sle
self.distinct_sles.add(sle.name)
if sle.dependant_sle_voucher_detail_no:
self.include_dependant_sle_in_reposting(sle)
self.update_item_wh_wise_last_posted_sle(sle)
if i % 1000 == 0:
self.update_data_in_repost(len(self._sles), i)
@@ -669,16 +664,28 @@ class update_entries_after:
)
def include_dependant_sle_in_reposting(self, sle):
repost_dependant_sle = False
if sle.voucher_type == "Stock Entry" and is_repack_entry(sle.voucher_no):
repack_sles = self.get_sles_for_repack(sle)
for repack_sle in repack_sles:
if (repack_sle.item_code, repack_sle.warehouse) in self.distinct_dependant_item_wh:
continue
repost_dependant_sle = True
self.distinct_dependant_item_wh.add((repack_sle.item_code, repack_sle.warehouse))
self._sles.extend(self.get_future_entries_to_repost(repack_sle))
else:
dependant_sles = get_sle_by_voucher_detail_no(sle.dependant_sle_voucher_detail_no)
for depend_sle in dependant_sles:
if (depend_sle.item_code, depend_sle.warehouse) in self.distinct_dependant_item_wh:
continue
repost_dependant_sle = True
self.distinct_dependant_item_wh.add((depend_sle.item_code, depend_sle.warehouse))
self._sles.extend(self.get_future_entries_to_repost(depend_sle))
self._sles = deque(self.sort_sles(self._sles))
if repost_dependant_sle:
self._sles = deque(self.sort_sles(self._sles))
def repost_stock_ledger_entry(self, sle):
if self.args.item_code != sle.item_code or self.args.warehouse != sle.warehouse: