From 0f252542c30d4de64965fbba7ad3b8d92733b373 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 181c57577c9..e880e8db9b9 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -306,6 +306,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, @@ -408,7 +409,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 @@ -418,7 +418,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)