diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index ccc5ba62b01..701035d8187 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -203,9 +203,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 get_sre_reserved_qty_details(self) -> dict: from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import ( @@ -227,7 +236,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: