fix(ux): `Reserve Stock` button behaviour in SO
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 0a385c5..6b3826b 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -47,17 +47,7 @@
 		frm.set_df_property('packed_items', 'cannot_add_rows', true);
 		frm.set_df_property('packed_items', 'cannot_delete_rows', true);
 
-		frappe.db.get_single_value("Stock Settings", "enable_stock_reservation").then((value) => {
-			if (value) {
-				frappe.db.get_single_value("Stock Settings", "reserve_stock_on_sales_order_submission").then((value) => {
-					if (value) {
-						frm.set_value("reserve_stock", 1);
-					}
-				})
-			} else {
-				frm.set_df_property("reserve_stock", "read_only", 1);
-			}
-		})
+
 	},
 	refresh: function(frm) {
 		if(frm.doc.docstatus === 1 && frm.doc.status !== 'Closed'
@@ -72,8 +62,25 @@
 			});
 		}
 
-		if (frm.doc.docstatus === 0 && frm.doc.is_internal_customer) {
-			frm.events.get_items_from_internal_purchase_order(frm);
+		if (frm.doc.docstatus === 0) {
+			if (frm.doc.is_internal_customer) {
+				frm.events.get_items_from_internal_purchase_order(frm);
+			}
+
+			frappe.db.get_single_value("Stock Settings", "enable_stock_reservation").then((value) => {
+				if (value) {
+					frappe.db.get_single_value("Stock Settings", "reserve_stock_on_sales_order_submission").then((value) => {
+						if (value) {
+							frm.set_value("reserve_stock", 1);
+						} else {
+							frm.set_value("reserve_stock", 0);
+						}
+					})
+				} else {
+					frm.set_value("reserve_stock", 0);
+					frm.set_df_property("reserve_stock", "read_only", 1);
+				}
+			})
 		}
 	},