From ed855c3823d2590c1b15850362c3e7a4e0cfe69c Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Tue, 21 Jul 2026 14:34:08 +0530 Subject: [PATCH] fix: resolve float precision before streaming stock ledger entries get_single_value inside _revalue_reconciled_batch_slots runs while rows stream through the unbuffered cursor on MariaDB, killing the active iterator. Resolve it once in generate() with the other prefetches. --- erpnext/stock/report/stock_ageing/stock_ageing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index c8757b78187..666d54c240b 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -308,6 +308,7 @@ class FIFOSlots: # prepare single sle voucher detail lookup self.prepare_stock_reco_voucher_wise_count() + self.float_precision = get_float_precision() if stock_ledger_entries is None: # streaming path: nested queries invalidate the streaming cursor below, @@ -421,7 +422,6 @@ class FIFOSlots: slot[FIFO_VALUE_INDEX] = flt(slot[FIFO_QTY_INDEX] * flt(row.valuation_rate)) def _revalue_reconciled_batch_slots(self, fifo_queue: list, batch_nos: list) -> None: - precision = get_float_precision() for batch_no, _use_batchwise_valuation, qty, stock_value_difference in batch_nos: if not flt(qty): continue @@ -431,7 +431,7 @@ class FIFOSlots: for slot in fifo_queue if is_batch_slot(slot) and slot[BATCH_SLOT_BATCH_INDEX] == batch_no ] - if flt(sum(flt(slot[BATCH_SLOT_QTY_INDEX]) for slot in slots) - flt(qty), precision): + if flt(sum(flt(slot[BATCH_SLOT_QTY_INDEX]) for slot in slots) - flt(qty), self.float_precision): continue rate = flt(stock_value_difference) / flt(qty)