From d7fdab99cb6f5f9981f962a769254b194d6957f2 Mon Sep 17 00:00:00 2001 From: Rohit Waghchaure Date: Mon, 2 Mar 2026 16:30:43 +0530 Subject: [PATCH] fix: opening qty in stock balance --- .../report/stock_balance/stock_balance.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index c4c67c4abaf..ed0c31c07d9 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -230,9 +230,18 @@ class StockBalanceReport: .groupby(doctype.voucher_detail_no) ) - data = query.run(as_list=True) - if data: - self.stock_reco_voucher_wise_count = frappe._dict(data) + data = query.run(as_dict=True) + if not data: + return + + for row in data: + if row.count != 1: + continue + + current_qty = frappe.db.get_value( + "Stock Reconciliation Item", row.voucher_detail_no, "current_qty" + ) + self.stock_reco_voucher_wise_count[row.voucher_detail_no] = current_qty def prepare_new_data(self): if self.filters.get("show_stock_ageing_data"): @@ -312,7 +321,8 @@ class StockBalanceReport: if entry.voucher_type == "Stock Reconciliation" and ( not entry.batch_no or entry.serial_no or entry.serial_and_batch_bundle ): - if entry.serial_no and self.stock_reco_voucher_wise_count.get(entry.voucher_detail_no, 0) == 1: + if entry.serial_no and entry.voucher_detail_no in self.stock_reco_voucher_wise_count: + qty_dict.opening_qty -= self.stock_reco_voucher_wise_count.get(entry.voucher_detail_no, 0) qty_dict.bal_qty = 0.0 qty_diff = flt(entry.actual_qty) else: