From ac2402dd2a6ce89a54e73070c1959eaad464e510 Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Fri, 19 Dec 2025 12:11:04 +0530 Subject: [PATCH] fix(stock): ignore reserved stock while calculating batch qty (cherry picked from commit b23c6e2687af087702409d3cd669519da0565044) # Conflicts: # erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py --- erpnext/stock/doctype/batch/batch.py | 9 ++++++++- .../serial_and_batch_bundle/serial_and_batch_bundle.py | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/batch/batch.py b/erpnext/stock/doctype/batch/batch.py index 20dd94da906..ba9aaa6c48a 100644 --- a/erpnext/stock/doctype/batch/batch.py +++ b/erpnext/stock/doctype/batch/batch.py @@ -159,8 +159,13 @@ class Batch(Document): @frappe.whitelist() def recalculate_batch_qty(self): batches = get_batch_qty( - batch_no=self.name, item_code=self.item, for_stock_levels=True, consider_negative_batches=True + batch_no=self.name, + item_code=self.item, + for_stock_levels=True, + consider_negative_batches=True, + ignore_reserved_stock=True, ) + batch_qty = 0.0 if batches: for row in batches: @@ -240,6 +245,7 @@ def get_batch_qty( for_stock_levels=False, consider_negative_batches=False, do_not_check_future_batches=False, + ignore_reserved_stock=False, ): """Returns batch actual qty if warehouse is passed, or returns dict of qty by warehouse if warehouse is None @@ -269,6 +275,7 @@ def get_batch_qty( "for_stock_levels": for_stock_levels, "consider_negative_batches": consider_negative_batches, "do_not_check_future_batches": do_not_check_future_batches, + "ignore_reserved_stock": ignore_reserved_stock, } ) diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index e20363cec3a..238d6600830 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py @@ -2332,6 +2332,12 @@ def get_auto_batch_nos(kwargs): sre_reserved_batches = frappe._dict() if not kwargs.ignore_reserved_stock: sre_reserved_batches = get_reserved_batches_for_sre(kwargs) +<<<<<<< HEAD +======= + + if kwargs.against_sales_order and only_consider_batches: + kwargs.batch_no = kwargs.warehouse = None +>>>>>>> b23c6e2687 (fix(stock): ignore reserved stock while calculating batch qty) picked_batches = frappe._dict() if kwargs.get("is_pick_list"):