diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 353b86f052e..aeb3425400d 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -1317,16 +1317,15 @@ class WorkOrder(Document): data = query.run(as_dict=1) or [] transferred_items = frappe._dict({d.original_item or d.item_code: d.qty for d in data}) + row_wise_serial_batch = frappe._dict({}) + if self.reserve_stock: + row_wise_serial_batch = get_row_wise_serial_batch(self.name) + for row in self.required_items: transferred_qty = transferred_items.get(row.item_code) or 0.0 row.db_set("transferred_qty", transferred_qty, update_modified=False) - - if not self.reserve_stock: - return - - row_wise_serial_batch = get_row_wise_serial_batch(self.name) - for row in self.required_items: - self.update_qty_in_stock_reservation(row, transferred_qty, row_wise_serial_batch) + if self.reserve_stock: + self.update_qty_in_stock_reservation(row, transferred_qty, row_wise_serial_batch) def update_qty_in_stock_reservation(self, row, transferred_qty, row_wise_serial_batch): if names := frappe.get_all( 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 eb13e784649..8bc19a1ef63 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 @@ -2087,6 +2087,7 @@ def get_reserved_serial_nos_for_sre(kwargs) -> list: (sre.docstatus == 1) & (sre.item_code == kwargs.item_code) & (sre.delivered_qty < sre.reserved_qty) + & (sb_entry.delivered_qty < sb_entry.qty) & (sre.reservation_based_on == "Serial and Batch") ) )