diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js index 4cb4583426bc..52c7f35a097c 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.js +++ b/erpnext/selling/doctype/sales_order/sales_order.js @@ -69,11 +69,17 @@ frappe.ui.form.on("Sales Order", { } } - // Stock Reservation > Unreserve/Reserved Stock button will be only visible if the SO has reserved stock. + // Stock Reservation > Unreserve button will be only visible if the SO has un-delivered reserved stock. if (frm.doc.__onload && frm.doc.__onload.has_reserved_stock) { frm.add_custom_button(__('Unreserve'), () => frm.events.cancel_stock_reservation_entries(frm), __('Stock Reservation')); - frm.add_custom_button(__('Reserved Stock'), () => frm.events.show_reserved_stock(frm), __('Stock Reservation')); } + + frm.doc.items.forEach(item => { + if (flt(item.stock_reserved_qty) > 0) { + frm.add_custom_button(__('Reserved Stock'), () => frm.events.show_reserved_stock(frm), __('Stock Reservation')); + return; + } + }); } if (frm.doc.docstatus === 0) { diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py index 57fa259fac5c..bd7bb6683676 100644 --- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py +++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py @@ -736,7 +736,7 @@ def has_reserved_stock(voucher_type: str, voucher_no: str, voucher_detail_no: st """Returns True if there is any Stock Reservation Entry for the given voucher.""" if get_stock_reservation_entries_for_voucher( - voucher_type, voucher_no, voucher_detail_no, fields=["name"] + voucher_type, voucher_no, voucher_detail_no, fields=["name"], ignore_status=True ): return True