diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index bd6b1f1..bab6bb7 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -2784,16 +2784,16 @@
 	parent.update_billing_percentage()
 	parent.set_status()
 
+	# Cancel and Recreate Stock Reservation Entries.
 	if parent_doctype == "Sales Order":
 		from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
 			cancel_stock_reservation_entries,
 			has_reserved_stock,
-			reserve_stock_against_sales_order,
 		)
 
 		if has_reserved_stock(parent.doctype, parent.name):
 			cancel_stock_reservation_entries(parent.doctype, parent.name)
-			reserve_stock_against_sales_order(parent.name)
+			parent.create_stock_reservation_entries()
 
 
 @erpnext.allow_regional
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index a4578bc..37c2294 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -46,8 +46,6 @@
 
 		frm.set_df_property('packed_items', 'cannot_add_rows', true);
 		frm.set_df_property('packed_items', 'cannot_delete_rows', true);
-
-
 	},
 	refresh: function(frm) {
 		if(frm.doc.docstatus === 1 && frm.doc.status !== 'Closed'
@@ -71,13 +69,11 @@
 				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);
-							}
+							// If `Reserve Stock on Sales Order Submission` is enabled in Stock Settings, set Reserve Stock to 1 else 0.
+							frm.set_value("reserve_stock", value ? 1 : 0);
 						})
 					} else {
+						// If `Stock Reservation` is disabled in Stock Settings, set Reserve Stock to 0 and read only.
 						frm.set_value("reserve_stock", 0);
 						frm.set_df_property("reserve_stock", "read_only", 1);
 					}
@@ -292,11 +288,12 @@
 				this.frm.page.set_inner_btn_group_as_primary(__('Create'));
 			}
 
-			// Stock Reservation
+			// Stock Reservation > Reserve button will be only visible if the SO has unreserved stock.
 			if (this.frm.doc.__onload && this.frm.doc.__onload.has_unreserved_stock) {
-				this.frm.add_custom_button(__('Reserve'), () => this.reserve_stock_against_sales_order(), __('Stock Reservation'));
+				this.frm.add_custom_button(__('Reserve'), () => this.create_stock_reservation_entries(), __('Stock Reservation'));
 			}
 
+			// Stock Reservation > Unreserve button will be only visible if the SO has reserved stock.
 			if (this.frm.doc.__onload && this.frm.doc.__onload.has_reserved_stock) {
 				this.frm.add_custom_button(__('Unreserve'), () => this.cancel_stock_reservation_entries(), __('Stock Reservation'));
 			}
@@ -339,14 +336,15 @@
 		this.order_type(doc);
 	}
 
-	reserve_stock_against_sales_order() {
+	create_stock_reservation_entries() {
 		frappe.call({
-			method: "erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry.reserve_stock_against_sales_order",
+			doc: this.frm.doc,
+			method: 'create_stock_reservation_entries',
 			args: {
-				sales_order: this.frm.docname
+				notify: true
 			},
 			freeze: true,
-			freeze_message: __("Reserving Stock..."),
+			freeze_message: __('Reserving Stock...'),
 			callback: (r) => {
 				this.frm.doc.__onload.has_unreserved_stock = false;
 				this.frm.refresh();
@@ -356,13 +354,13 @@
 
 	cancel_stock_reservation_entries() {
 		frappe.call({
-			method: "erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry.cancel_stock_reservation_entries",
+			method: 'erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry.cancel_stock_reservation_entries',
 			args: {
 				voucher_type: this.frm.doctype,
 				voucher_no: this.frm.docname
 			},
 			freeze: true,
-			freeze_message: __("Unreserving Stock..."),
+			freeze_message: __('Unreserving Stock...'),
 			callback: (r) => {
 				this.frm.doc.__onload.has_reserved_stock = false;
 				this.frm.refresh();
diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json
index d09f7c5..47bb37c 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.json
+++ b/erpnext/selling/doctype/sales_order/sales_order.json
@@ -1641,17 +1641,20 @@
   },
   {
    "default": "0",
+   "description": "If checked, Stock Reservation Entries will be created on <b>Submit</b>",
    "fieldname": "reserve_stock",
    "fieldtype": "Check",
-   "label": "Reserve Stock on Submit",
-   "no_copy": 1
+   "label": "Reserve Stock",
+   "no_copy": 1,
+   "print_hide": 1,
+   "report_hide": 1
   }
  ],
  "icon": "fa fa-file-text",
  "idx": 105,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-03-31 13:04:36.653260",
+ "modified": "2023-04-04 10:39:34.129343",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order",
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index b24e481..9ed57df 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -30,6 +30,9 @@
 from erpnext.selling.doctype.customer.customer import check_credit_limit
 from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults
 from erpnext.stock.doctype.item.item import get_item_defaults
+from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
+	get_sre_reserved_qty_details_for_voucher,
+)
 from erpnext.stock.get_item_details import get_default_bom, get_price_list_rate
 from erpnext.stock.stock_balance import get_reserved_qty, update_bin_qty
 
@@ -44,7 +47,7 @@
 	def __init__(self, *args, **kwargs):
 		super(SalesOrder, self).__init__(*args, **kwargs)
 
-	def onload(self):
+	def onload(self) -> None:
 		if frappe.get_cached_value("Stock Settings", None, "enable_stock_reservation"):
 			from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
 				has_reserved_stock,
@@ -254,11 +257,7 @@
 			update_coupon_code_count(self.coupon_code, "used")
 
 		if self.get("reserve_stock"):
-			from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
-				reserve_stock_against_sales_order,
-			)
-
-			reserve_stock_against_sales_order(self)
+			self.create_stock_reservation_entries()
 
 	def on_cancel(self):
 		self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Payment Ledger Entry")
@@ -504,34 +503,118 @@
 					).format(item.item_code)
 				)
 
-	def has_unreserved_stock(self):
-		from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
-			get_sre_reserved_qty_details_for_voucher_detail_no,
-		)
+	def has_unreserved_stock(self) -> bool:
+		"""Returns True if there is any unreserved item in the Sales Order."""
 
-		for item in self.items:
+		reserved_qty_details = get_sre_reserved_qty_details_for_voucher("Sales Order", self.name)
+
+		for item in self.get("items"):
 			if not item.get("reserve_stock"):
 				continue
 
-			reserved_qty_details = get_sre_reserved_qty_details_for_voucher_detail_no(
-				"Sales Order", self.name, item.name
-			)
-
-			existing_reserved_qty = 0.0
-			if reserved_qty_details:
-				existing_reserved_qty = reserved_qty_details[1]
-
-			unreserved_qty = (
-				item.stock_qty
-				- flt(item.delivered_qty) * item.get("conversion_factor", 1)
-				- existing_reserved_qty
-			)
-
+			unreserved_qty = get_unreserved_qty(item, reserved_qty_details)
 			if unreserved_qty > 0:
 				return True
 
 		return False
 
+	@frappe.whitelist()
+	def create_stock_reservation_entries(self, notify=True):
+		"""Creates Stock Reservation Entries for Sales Order Items."""
+
+		from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
+			get_available_qty_to_reserve,
+			validate_stock_reservation_settings,
+		)
+
+		validate_stock_reservation_settings(self)
+
+		allow_partial_reservation = frappe.db.get_single_value(
+			"Stock Settings", "allow_partial_reservation"
+		)
+
+		sre_count = 0
+		reserved_qty_details = get_sre_reserved_qty_details_for_voucher("Sales Order", self.name)
+		for item in self.get("items"):
+			if not item.get("reserve_stock"):
+				continue
+
+			unreserved_qty = get_unreserved_qty(item, reserved_qty_details)
+
+			# Stock is already reserved for the item, notify the user and skip the item.
+			if unreserved_qty <= 0:
+				frappe.msgprint(
+					_("Row #{0}: Stock is already reserved for the Item {1}").format(
+						item.idx, frappe.bold(item.item_code)
+					),
+					title=_("Stock Reservation"),
+				)
+				continue
+
+			available_qty_to_reserve = get_available_qty_to_reserve(item.item_code, item.warehouse)
+
+			# No stock available to reserve, notify the user and skip the item.
+			if available_qty_to_reserve <= 0:
+				frappe.msgprint(
+					_("Row #{0}: No available stock to reserve for the Item {1}").format(
+						item.idx, frappe.bold(item.item_code)
+					),
+					title=_("Stock Reservation"),
+					indicator="orange",
+				)
+				continue
+
+			# The quantity which can be reserved.
+			qty_to_be_reserved = min(unreserved_qty, available_qty_to_reserve)
+
+			# Partial Reservation
+			if qty_to_be_reserved < unreserved_qty:
+				frappe.msgprint(
+					_("Row #{0}: Only {1} available to reserve for the Item {2}").format(
+						item.idx,
+						frappe.bold(str(qty_to_be_reserved / item.conversion_factor) + " " + item.uom),
+						frappe.bold(item.item_code),
+					),
+					title=_("Stock Reservation"),
+					indicator="orange",
+				)
+
+				# Skip the item if `Partial Reservation` is disabled in the Stock Settings.
+				if not allow_partial_reservation:
+					continue
+
+			# Create and Submit Stock Reservation Entry
+			sre = frappe.new_doc("Stock Reservation Entry")
+			sre.item_code = item.item_code
+			sre.warehouse = item.warehouse
+			sre.voucher_type = self.doctype
+			sre.voucher_no = self.name
+			sre.voucher_detail_no = item.name
+			sre.available_qty = available_qty_to_reserve
+			sre.voucher_qty = item.stock_qty
+			sre.reserved_qty = qty_to_be_reserved
+			sre.company = self.company
+			sre.stock_uom = item.stock_uom
+			sre.project = self.project
+			sre.save()
+			sre.submit()
+
+			sre_count += 1
+
+		if sre_count and notify:
+			frappe.msgprint(_("Stock Reservation Entries Created"), alert=True, indicator="green")
+
+
+def get_unreserved_qty(item: object, reserved_qty_details: dict) -> float:
+	"""Returns the unreserved quantity for the Sales Order Item."""
+
+	existing_reserved_qty = reserved_qty_details.get((item.name, item.warehouse), 0)
+	return (
+		item.stock_qty
+		- flt(item.delivered_qty) * item.get("conversion_factor", 1)
+		- existing_reserved_qty
+	)
+
 
 def get_list_context(context=None):
 	from erpnext.controllers.website_list_for_contact import get_list_context
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index ec3d769..5c7e10a 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -867,7 +867,9 @@
    "default": "1",
    "fieldname": "reserve_stock",
    "fieldtype": "Check",
-   "label": "Reserve Stock"
+   "label": "Reserve Stock",
+   "print_hide": 1,
+   "report_hide": 1
   },
   {
    "default": "0",
@@ -876,13 +878,16 @@
    "fieldtype": "Float",
    "label": "Stock Reserved Qty (in Stock UOM)",
    "no_copy": 1,
-   "read_only": 1
+   "non_negative": 1,
+   "print_hide": 1,
+   "read_only": 1,
+   "report_hide": 1
   }
  ],
  "idx": 1,
  "istable": 1,
  "links": [],
- "modified": "2023-03-31 21:53:47.431882",
+ "modified": "2023-04-04 10:44:05.707488",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order Item",
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index f45f8bd..3c6286e 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -148,7 +148,7 @@
 		if not self.installation_status:
 			self.installation_status = "Not Installed"
 
-		self.validate_against_stock_reservation()
+		self.validate_against_stock_reservation_entries()
 		self.reset_default_field_value("set_warehouse", "items", "warehouse")
 
 	def validate_with_previous_doc(self):
@@ -241,7 +241,7 @@
 		self.update_prevdoc_status()
 		self.update_billing_status()
 
-		self.update_stock_reservation_entry()
+		self.update_stock_reservation_entries()
 
 		if not self.is_return:
 			self.check_credit_limit()
@@ -272,11 +272,15 @@
 		self.repost_future_sle_and_gle()
 		self.ignore_linked_doctypes = ("GL Entry", "Stock Ledger Entry", "Repost Item Valuation")
 
-	def update_stock_reservation_entry(self):
-		if self.is_return or self._action != "submit":
+	def update_stock_reservation_entries(self) -> None:
+		"""Updates Delivered Qty in Stock Reservation Entries."""
+
+		# Don't update Delivered Qty on Return or Cancellation.
+		if self.is_return or self._action == "cancel":
 			return
 
-		for item in self.items:
+		for item in self.get("items"):
+			# Skip if `Sales Order` or `Sales Order Item` reference is not set.
 			if not item.against_sales_order or not item.so_detail:
 				continue
 
@@ -293,6 +297,7 @@
 				order_by="creation",
 			)
 
+			# Skip if no Stock Reservation Entries.
 			if not sre_list:
 				continue
 
@@ -302,22 +307,31 @@
 					break
 
 				sre_doc = frappe.get_doc("Stock Reservation Entry", sre)
+
+				# `Delivered Qty` should be less than or equal to `Reserved Qty`.
 				qty_to_be_deliver = min(sre_doc.reserved_qty - sre_doc.delivered_qty, available_qty_to_deliver)
+
 				sre_doc.delivered_qty += qty_to_be_deliver
 				sre_doc.db_update()
+
+				# Update Stock Reservation Entry `Status` based on `Delivered Qty`.
 				sre_doc.update_status()
 
 				available_qty_to_deliver -= qty_to_be_deliver
 
-	def validate_against_stock_reservation(self):
+	def validate_against_stock_reservation_entries(self):
+		"""Validates if Stock Reservation Entries are available for the Sales Order Item reference."""
+
 		from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
 			get_sre_reserved_qty_details_for_voucher_detail_no,
 		)
 
+		# Don't validate if Return
 		if self.is_return:
 			return
 
-		for item in self.items:
+		for item in self.get("items"):
+			# Skip if `Sales Order` or `Sales Order Item` reference is not set.
 			if not item.against_sales_order or not item.so_detail:
 				continue
 
@@ -325,6 +339,7 @@
 				"Sales Order", item.against_sales_order, item.so_detail
 			)
 
+			# Skip if stock is not reserved.
 			if not sre_data:
 				continue
 
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 3e6c840..f770059 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
@@ -5,7 +5,6 @@
 from frappe import _
 from frappe.model.document import Document
 from frappe.query_builder.functions import Sum
-from frappe.utils import flt
 
 
 class StockReservationEntry(Document):
@@ -25,6 +24,8 @@
 		self.update_status()
 
 	def validate_mandatory(self) -> None:
+		"""Raises exception if mandatory fields are not set."""
+
 		mandatory = [
 			"item_code",
 			"warehouse",
@@ -42,6 +43,8 @@
 				frappe.throw(_("{0} is required").format(self.meta.get_label(d)))
 
 	def update_status(self, status: str = None, update_modified: bool = True) -> None:
+		"""Updates status based on Voucher Qty, Reserved Qty and Delivered Qty."""
+
 		if not status:
 			if self.docstatus == 2:
 				status = "Cancelled"
@@ -62,6 +65,8 @@
 	def update_reserved_qty_in_voucher(
 		self, reserved_qty_field: str = "stock_reserved_qty", update_modified: bool = True
 	) -> None:
+		"""Updates total reserved qty in the voucher."""
+
 		item_doctype = "Sales Order Item" if self.voucher_type == "Sales Order" else None
 
 		if item_doctype:
@@ -87,6 +92,8 @@
 
 
 def validate_stock_reservation_settings(voucher: object) -> None:
+	"""Raises an exception if `Stock Reservation` is not enabled or `Voucher Type` is not allowed."""
+
 	if not frappe.db.get_single_value("Stock Settings", "enable_stock_reservation"):
 		frappe.throw(
 			_("Please enable {0} in the {1}.").format(
@@ -94,7 +101,9 @@
 			)
 		)
 
+	# Voucher types allowed for stock reservation
 	allowed_voucher_types = ["Sales Order"]
+
 	if voucher.doctype not in allowed_voucher_types:
 		frappe.throw(
 			_("Stock Reservation can only be created against {0}.").format(", ".join(allowed_voucher_types))
@@ -102,6 +111,8 @@
 
 
 def get_available_qty_to_reserve(item_code: str, warehouse: str) -> float:
+	"""Returns `Available Qty to Reserve (Actual Qty - Reserved Qty)` for Item and Warehouse combination."""
+
 	from erpnext.stock.get_item_details import get_bin_details
 
 	available_qty = get_bin_details(item_code, warehouse, include_child_warehouses=True).get(
@@ -133,6 +144,8 @@
 def get_stock_reservation_entries_for_voucher(
 	voucher_type: str, voucher_no: str, voucher_detail_no: str = None, fields: list[str] = None
 ) -> list[dict]:
+	"""Returns list of Stock Reservation Entries against a Voucher."""
+
 	if not fields or not isinstance(fields, list):
 		fields = [
 			"name",
@@ -165,30 +178,11 @@
 	return query.run(as_dict=True)
 
 
-def get_sre_reserved_qty_details_for_voucher_detail_no(
-	voucher_type: str, voucher_no: str, voucher_detail_no: str
-) -> list:
-	sre = frappe.qb.DocType("Stock Reservation Entry")
-	reserved_qty_details = (
-		frappe.qb.from_(sre)
-		.select(sre.warehouse, (Sum(sre.reserved_qty) - Sum(sre.delivered_qty)).as_("reserved_qty"))
-		.where(
-			(sre.docstatus == 1)
-			& (sre.voucher_type == voucher_type)
-			& (sre.voucher_no == voucher_no)
-			& (sre.voucher_detail_no == voucher_detail_no)
-			& (sre.status.notin(["Delivered", "Cancelled"]))
-		)
-		.groupby(sre.warehouse)
-	).run(as_list=True)
+def get_sre_reserved_qty_details_for_item_and_warehouse(
+	item_code: str | list, warehouse: str | list
+) -> dict:
+	"""Returns a dict like {("item_code", "warehouse"): "reserved_qty", ... }."""
 
-	if reserved_qty_details:
-		return reserved_qty_details[0]
-
-	return reserved_qty_details
-
-
-def get_sre_reserved_qty_details(item_code: str | list, warehouse: str | list) -> dict:
 	sre_details = {}
 
 	if item_code and warehouse:
@@ -220,8 +214,69 @@
 	return sre_details
 
 
-@frappe.whitelist()
+def get_sre_reserved_qty_details_for_voucher(
+	voucher_type: str, voucher_no: str, voucher_detail_no: str = None
+) -> dict:
+	"""Returns a dict like {("voucher_detail_no", "warehouse"): "reserved_qty", ... }."""
+
+	reserved_qty_details = {}
+
+	sre = frappe.qb.DocType("Stock Reservation Entry")
+	query = (
+		frappe.qb.from_(sre)
+		.select(
+			sre.voucher_detail_no,
+			sre.warehouse,
+			(Sum(sre.reserved_qty) - Sum(sre.delivered_qty)).as_("reserved_qty"),
+		)
+		.where(
+			(sre.docstatus == 1)
+			& (sre.voucher_type == voucher_type)
+			& (sre.voucher_no == voucher_no)
+			& (sre.status.notin(["Delivered", "Cancelled"]))
+		)
+		.groupby(sre.voucher_detail_no, sre.warehouse)
+	)
+
+	if voucher_detail_no:
+		query = query.where(sre.voucher_detail_no == voucher_detail_no)
+
+	data = query.run(as_dict=True)
+
+	for d in data:
+		reserved_qty_details[(d["voucher_detail_no"], d["warehouse"])] = d["reserved_qty"]
+
+	return reserved_qty_details
+
+
+def get_sre_reserved_qty_details_for_voucher_detail_no(
+	voucher_type: str, voucher_no: str, voucher_detail_no: str
+) -> list:
+	"""Returns a list like ["warehouse", "reserved_qty"]."""
+
+	sre = frappe.qb.DocType("Stock Reservation Entry")
+	reserved_qty_details = (
+		frappe.qb.from_(sre)
+		.select(sre.warehouse, (Sum(sre.reserved_qty) - Sum(sre.delivered_qty)))
+		.where(
+			(sre.docstatus == 1)
+			& (sre.voucher_type == voucher_type)
+			& (sre.voucher_no == voucher_no)
+			& (sre.voucher_detail_no == voucher_detail_no)
+			& (sre.status.notin(["Delivered", "Cancelled"]))
+		)
+		.groupby(sre.warehouse)
+	).run(as_list=True)
+
+	if reserved_qty_details:
+		return reserved_qty_details[0]
+
+	return reserved_qty_details
+
+
 def has_reserved_stock(voucher_type: str, voucher_no: str, voucher_detail_no: str = None) -> bool:
+	"""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"]
 	):
@@ -231,93 +286,11 @@
 
 
 @frappe.whitelist()
-def reserve_stock_against_sales_order(sales_order: object | str) -> None:
-	if isinstance(sales_order, str):
-		sales_order = frappe.get_doc("Sales Order", sales_order)
-
-	validate_stock_reservation_settings(sales_order)
-
-	sre_count = 0
-	for item in sales_order.get("items"):
-		if not item.get("reserve_stock"):
-			continue
-
-		reserved_qty_details = get_sre_reserved_qty_details_for_voucher_detail_no(
-			"Sales Order", sales_order.name, item.name
-		)
-
-		existing_reserved_qty = 0.0
-		if reserved_qty_details:
-			existing_reserved_qty = reserved_qty_details[1]
-
-		unreserved_qty = (
-			item.stock_qty
-			- flt(item.delivered_qty) * item.get("conversion_factor", 1)
-			- existing_reserved_qty
-		)
-
-		if unreserved_qty <= 0:
-			frappe.msgprint(
-				_("Row #{0}: Stock is already reserved for the Item {1}").format(
-					item.idx, frappe.bold(item.item_code)
-				),
-				title=_("Stock Reservation"),
-			)
-			continue
-
-		available_qty_to_reserve = get_available_qty_to_reserve(item.item_code, item.warehouse)
-
-		if available_qty_to_reserve <= 0:
-			frappe.msgprint(
-				_("Row #{0}: No available stock to reserve for the Item {1}").format(
-					item.idx, frappe.bold(item.item_code)
-				),
-				title=_("Stock Reservation"),
-				indicator="orange",
-			)
-			continue
-
-		qty_to_be_reserved = min(unreserved_qty, available_qty_to_reserve)
-
-		if qty_to_be_reserved < unreserved_qty:
-			frappe.msgprint(
-				_("Row #{0}: Only {1} available to reserve for the Item {2}").format(
-					item.idx,
-					frappe.bold(str(qty_to_be_reserved / item.conversion_factor) + " " + item.uom),
-					frappe.bold(item.item_code),
-				),
-				title=_("Stock Reservation"),
-				indicator="orange",
-			)
-
-			if not frappe.db.get_single_value("Stock Settings", "allow_partial_reservation"):
-				continue
-
-		sre = frappe.new_doc("Stock Reservation Entry")
-		sre.item_code = item.item_code
-		sre.warehouse = item.warehouse
-		sre.voucher_type = sales_order.doctype
-		sre.voucher_no = sales_order.name
-		sre.voucher_detail_no = item.name
-		sre.available_qty = available_qty_to_reserve
-		sre.voucher_qty = item.stock_qty
-		sre.reserved_qty = qty_to_be_reserved
-		sre.company = sales_order.company
-		sre.stock_uom = item.stock_uom
-		sre.project = sales_order.project
-		sre.save()
-		sre.submit()
-
-		sre_count += 1
-
-	if sre_count:
-		frappe.msgprint(_("Stock Reservation Entry created"), alert=True, indicator="green")
-
-
-@frappe.whitelist()
 def cancel_stock_reservation_entries(
-	voucher_type: str, voucher_no: str, voucher_detail_no: str = None
+	voucher_type: str, voucher_no: str, voucher_detail_no: str = None, notify: bool = True
 ) -> None:
+	"""Cancel Stock Reservation Entries for the given voucher."""
+
 	sre_list = get_stock_reservation_entries_for_voucher(
 		voucher_type, voucher_no, voucher_detail_no, fields=["name"]
 	)
@@ -326,4 +299,5 @@
 		for sre in sre_list:
 			frappe.get_doc("Stock Reservation Entry", sre.name).cancel()
 
-		frappe.msgprint(_("Stock Reservation Entry cancelled"), alert=True, indicator="red")
+		if notify:
+			frappe.msgprint(_("Stock Reservation Entries Cancelled"), alert=True, indicator="red")
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.json b/erpnext/stock/doctype/stock_settings/stock_settings.json
index 170dcb1..9ce5e9f 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.json
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.json
@@ -352,6 +352,7 @@
   },
   {
    "default": "1",
+   "description": "Allows to create Stock Reservations against <b>Sales Order</b>",
    "fieldname": "enable_stock_reservation",
    "fieldtype": "Check",
    "label": "Enable Stock Reservation"
@@ -359,6 +360,7 @@
   {
    "default": "0",
    "depends_on": "eval: doc.enable_stock_reservation",
+   "description": "If enabled, <b>Stock Reservation Entries</b> will be created on submission of <b>Sales Order</b>",
    "fieldname": "reserve_stock_on_sales_order_submission",
    "fieldtype": "Check",
    "label": "Reserve Stock on Sales Order Submission"
@@ -370,6 +372,7 @@
   {
    "default": "1",
    "depends_on": "eval: doc.enable_stock_reservation",
+   "description": "If enabled, <b>Partial Stock Reservation Entries</b> can be created. For example, If you have a <b>Sales Order</b> of 100 units and the Available Stock is 90 units then a Stock Reservation Entry will be created for 90 units. ",
    "fieldname": "allow_partial_reservation",
    "fieldtype": "Check",
    "label": "Allow Partial Reservation"
@@ -380,7 +383,7 @@
  "index_web_pages_for_search": 1,
  "issingle": 1,
  "links": [],
- "modified": "2023-04-01 15:52:28.717324",
+ "modified": "2023-04-04 22:46:42.287425",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Settings",
diff --git a/erpnext/stock/doctype/stock_settings/stock_settings.py b/erpnext/stock/doctype/stock_settings/stock_settings.py
index d761b66..f041e79 100644
--- a/erpnext/stock/doctype/stock_settings/stock_settings.py
+++ b/erpnext/stock/doctype/stock_settings/stock_settings.py
@@ -101,6 +101,8 @@
 			check_pending_reposting(self.stock_frozen_upto)
 
 	def cant_disable_stock_reservation(self):
+		"""Raises an exception if user tries to disable Stock Reservation and there are existing Stock Reservation Entries."""
+
 		if not self.enable_stock_reservation:
 			db_enable_stock_reservation = frappe.db.get_single_value(
 				"Stock Settings", "enable_stock_reservation"
diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py
index b8d6b6c..a6a630f 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.py
+++ b/erpnext/stock/report/stock_balance/stock_balance.py
@@ -398,8 +398,10 @@
 
 
 def get_sre_reserved_qty_details(iwb_map: list) -> dict:
+	"""Returns a dict like {("item_code", "warehouse"): "reserved_qty", ... }."""
+
 	from erpnext.stock.doctype.stock_reservation_entry.stock_reservation_entry import (
-		get_sre_reserved_qty_details as get_reserved_qty_details,
+		get_sre_reserved_qty_details_for_item_and_warehouse as get_reserved_qty_details,
 	)
 
 	item_code_list, warehouse_list = [], []
