refactor: rename field `against_pick_list`
diff --git a/erpnext/stock/doctype/pick_list/pick_list.js b/erpnext/stock/doctype/pick_list/pick_list.js
index ae05b80..7cd171e 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.js
+++ b/erpnext/stock/doctype/pick_list/pick_list.js
@@ -265,7 +265,8 @@
 			from_date: moment(frm.doc.creation).format('YYYY-MM-DD'),
 			to_date: to_date,
 			voucher_type: "Sales Order",
-			against_pick_list: frm.doc.name,
+			from_voucher_type: "Pick List",
+			from_voucher_no: frm.doc.name,
 		}
 		frappe.set_route("query-report", "Reserved Stock");
 	}
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index 8c9d03c..3503556 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -242,7 +242,7 @@
 			for so, locations in so_details.items():
 				so_doc = frappe.get_doc("Sales Order", so)
 				create_stock_reservation_entries_for_so_items(
-					sales_order=so_doc, items_details=locations, against_pick_list=True, notify=notify
+					sales_order=so_doc, items_details=locations, from_voucher_type="Pick List", notify=notify
 				)
 
 	@frappe.whitelist()
@@ -253,7 +253,9 @@
 			cancel_stock_reservation_entries,
 		)
 
-		cancel_stock_reservation_entries(against_pick_list=self.name, notify=notify)
+		cancel_stock_reservation_entries(
+			from_voucher_type="Pick List", from_voucher_no=self.name, notify=notify
+		)
 
 	def validate_picked_qty(self, data):
 		over_delivery_receipt_allowance = 100 + flt(
diff --git a/erpnext/stock/doctype/pick_list/pick_list_dashboard.py b/erpnext/stock/doctype/pick_list/pick_list_dashboard.py
index 0830fa2..29571a5 100644
--- a/erpnext/stock/doctype/pick_list/pick_list_dashboard.py
+++ b/erpnext/stock/doctype/pick_list/pick_list_dashboard.py
@@ -2,7 +2,7 @@
 	return {
 		"fieldname": "pick_list",
 		"non_standard_fieldnames": {
-			"Stock Reservation Entry": "against_pick_list",
+			"Stock Reservation Entry": "from_voucher_no",
 		},
 		"internal_links": {
 			"Sales Order": ["locations", "sales_order"],
diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.js b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.js
index c5df319..f60a037 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.js
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.js
@@ -92,7 +92,7 @@
 			'qty', 'read_only', frm.doc.has_serial_no
 		);
 
-		frm.set_df_property('sb_entries', 'allow_on_submit', frm.doc.against_pick_list ? 0 : 1);
+		frm.set_df_property('sb_entries', 'allow_on_submit', frm.doc.from_voucher_type == "Pick List" ? 0 : 1);
 	},
 
 	hide_rate_related_fields(frm) {
diff --git a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json
index 1a518fa..76cedd4 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json
@@ -18,7 +18,7 @@
   "voucher_detail_no",
   "column_break_7dxj",
   "from_voucher_type",
-  "against_pick_list",
+  "from_voucher_no",
   "from_voucher_detail_no",
   "section_break_xt4m",
   "stock_uom",
@@ -159,7 +159,7 @@
    "oldfieldname": "actual_qty",
    "oldfieldtype": "Currency",
    "print_width": "150px",
-   "read_only_depends_on": "eval: ((doc.reservation_based_on == \"Serial and Batch\") || (doc.against_pick_list) || (doc.delivered_qty > 0))",
+   "read_only_depends_on": "eval: ((doc.reservation_based_on == \"Serial and Batch\") || (doc.from_voucher_type == \"Pick List\") || (doc.delivered_qty > 0))",
    "width": "150px"
   },
   {
@@ -269,18 +269,7 @@
    "label": "Reservation Based On",
    "no_copy": 1,
    "options": "Qty\nSerial and Batch",
-   "read_only_depends_on": "eval: (doc.delivered_qty > 0 || doc.against_pick_list)"
-  },
-  {
-   "fieldname": "against_pick_list",
-   "fieldtype": "Dynamic Link",
-   "label": "From Voucher No",
-   "no_copy": 1,
-   "options": "from_voucher_type",
-   "print_hide": 1,
-   "read_only": 1,
-   "report_hide": 1,
-   "search_index": 1
+   "read_only_depends_on": "eval: (doc.delivered_qty > 0 || doc.from_voucher_type == \"Pick List\")"
   },
   {
    "fieldname": "column_break_7dxj",
@@ -308,6 +297,17 @@
    "print_hide": 1,
    "read_only": 1,
    "report_hide": 1
+  },
+  {
+   "fieldname": "from_voucher_no",
+   "fieldtype": "Dynamic Link",
+   "label": "From Voucher No",
+   "no_copy": 1,
+   "options": "from_voucher_type",
+   "print_hide": 1,
+   "read_only": 1,
+   "report_hide": 1,
+   "search_index": 1
   }
  ],
  "hide_toolbar": 1,
@@ -315,7 +315,7 @@
  "index_web_pages_for_search": 1,
  "is_submittable": 1,
  "links": [],
- "modified": "2023-10-19 16:26:46.598043",
+ "modified": "2023-10-19 16:41:16.545416",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Stock Reservation Entry",
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 66e246a..9097e62 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
@@ -1,6 +1,8 @@
 # Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
 # For license information, please see license.txt
 
+from typing import Literal
+
 import frappe
 from frappe import _
 from frappe.model.document import Document
@@ -113,7 +115,7 @@
 		"""Auto pick Serial and Batch Nos to reserve when `Reservation Based On` is `Serial and Batch`."""
 
 		if (
-			not self.against_pick_list
+			not self.from_voucher_type
 			and (self.get("_action") == "submit")
 			and (self.has_serial_no or self.has_batch_no)
 			and cint(frappe.db.get_single_value("Stock Settings", "auto_reserve_serial_and_batch"))
@@ -317,7 +319,7 @@
 		"""Updates total reserved qty in the Pick List."""
 
 		if (
-			self.from_voucher_type == "Pick List" and self.against_pick_list and self.from_voucher_detail_no
+			self.from_voucher_type == "Pick List" and self.from_voucher_no and self.from_voucher_detail_no
 		):
 			sre = frappe.qb.DocType("Stock Reservation Entry")
 			reserved_qty = (
@@ -326,7 +328,7 @@
 				.where(
 					(sre.docstatus == 1)
 					& (sre.from_voucher_type == "Pick List")
-					& (sre.against_pick_list == self.against_pick_list)
+					& (sre.from_voucher_no == self.from_voucher_no)
 					& (sre.from_voucher_detail_no == self.from_voucher_detail_no)
 				)
 			).run(as_list=True)[0][0] or 0
@@ -368,7 +370,7 @@
 			).format(self.status, self.doctype)
 			frappe.throw(msg)
 
-		if self.against_pick_list:
+		if self.from_voucher_type == "Pick List":
 			msg = _(
 				"Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one."
 			)
@@ -766,14 +768,14 @@
 def create_stock_reservation_entries_for_so_items(
 	sales_order: object,
 	items_details: list[dict] = None,
-	against_pick_list: bool = False,
+	from_voucher_type: Literal["Pick List", "Purchase Receipt"] = None,
 	notify=True,
 ) -> None:
 	"""Creates Stock Reservation Entries for Sales Order Items."""
 
 	from erpnext.selling.doctype.sales_order.sales_order import get_unreserved_qty
 
-	if not against_pick_list and (
+	if not from_voucher_type and (
 		sales_order.get("_action") == "submit"
 		and sales_order.set_warehouse
 		and cint(frappe.get_cached_value("Warehouse", sales_order.set_warehouse, "is_group"))
@@ -792,20 +794,20 @@
 
 	items = []
 	if items_details:
-		item_field = "sales_order_item" if against_pick_list else "name"
+		item_field = "sales_order_item" if from_voucher_type == "Pick List" else "name"
 
 		for item in items_details:
 			so_item = frappe.get_doc("Sales Order Item", item.get(item_field))
 			so_item.warehouse = item.get("warehouse")
 			so_item.qty_to_reserve = (
 				item.get("picked_qty") - item.get("stock_reserved_qty", 0)
-				if against_pick_list
+				if from_voucher_type == "Pick List"
 				else (flt(item.get("qty_to_reserve")) * flt(so_item.conversion_factor, 1))
 			)
 			so_item.serial_and_batch_bundle = item.get("serial_and_batch_bundle")
 
-			if against_pick_list:
-				so_item.pick_list = item.get("parent")
+			if from_voucher_type == "Pick List":
+				so_item.from_voucher_no = item.get("parent")
 				so_item.from_voucher_detail_no = item.get("name")
 
 			items.append(so_item)
@@ -819,7 +821,7 @@
 			continue
 
 		# Stock should be reserved from the Pick List if has Picked Qty.
-		if not against_pick_list and flt(item.picked_qty) > 0:
+		if not from_voucher_type == "Pick List" and flt(item.picked_qty) > 0:
 			frappe.throw(
 				_("Row #{0}: Item {1} has been picked, please reserve stock from the Pick List.").format(
 					item.idx, frappe.bold(item.item_code)
@@ -929,9 +931,9 @@
 		sre.stock_uom = item.stock_uom
 		sre.project = sales_order.project
 
-		if against_pick_list:
-			sre.from_voucher_type = "Pick List"
-			sre.against_pick_list = item.pick_list
+		if from_voucher_type:
+			sre.from_voucher_type = from_voucher_type
+			sre.from_voucher_no = item.from_voucher_no
 			sre.from_voucher_detail_no = item.from_voucher_detail_no
 
 		if item.serial_and_batch_bundle:
@@ -961,29 +963,37 @@
 	voucher_type: str = None,
 	voucher_no: str = None,
 	voucher_detail_no: str = None,
-	against_pick_list: str = None,
+	from_voucher_type: Literal["Pick List", "Purchase Receipt"] = None,
+	from_voucher_no: str = None,
+	from_voucher_detail_no: str = None,
 	sre_list: list[dict] = None,
 	notify: bool = True,
 ) -> None:
 	"""Cancel Stock Reservation Entries."""
 
-	if not sre_list and against_pick_list:
-		sre = frappe.qb.DocType("Stock Reservation Entry")
-		sre_list = (
-			frappe.qb.from_(sre)
-			.select(sre.name)
-			.where(
-				(sre.docstatus == 1)
-				& (sre.against_pick_list == against_pick_list)
-				& (sre.status.notin(["Delivered", "Cancelled"]))
+	if not sre_list:
+		if voucher_type and voucher_no:
+			sre_list = get_stock_reservation_entries_for_voucher(
+				voucher_type, voucher_no, voucher_detail_no, fields=["name"]
 			)
-			.orderby(sre.creation)
-		).run(as_dict=True)
+		elif from_voucher_type and from_voucher_no:
+			sre = frappe.qb.DocType("Stock Reservation Entry")
+			query = (
+				frappe.qb.from_(sre)
+				.select(sre.name)
+				.where(
+					(sre.docstatus == 1)
+					& (sre.from_voucher_type == from_voucher_type)
+					& (sre.from_voucher_no == from_voucher_no)
+					& (sre.status.notin(["Delivered", "Cancelled"]))
+				)
+				.orderby(sre.creation)
+			)
 
-	elif not sre_list and (voucher_type and voucher_no):
-		sre_list = get_stock_reservation_entries_for_voucher(
-			voucher_type, voucher_no, voucher_detail_no, fields=["name"]
-		)
+			if from_voucher_detail_no:
+				query = query.where(sre.from_voucher_detail_no == from_voucher_detail_no)
+
+			sre_list = query.run(as_dict=True)
 
 	if sre_list:
 		for sre in sre_list:
diff --git a/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py b/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py
index 27f43bf..9ea35ec 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/test_stock_reservation_entry.py
@@ -556,7 +556,7 @@
 						& (sre.voucher_no == location.sales_order)
 						& (sre.voucher_detail_no == location.sales_order_item)
 						& (sre.from_voucher_type == "Pick List")
-						& (sre.against_pick_list == pl.name)
+						& (sre.from_voucher_no == pl.name)
 						& (sre.from_voucher_detail_no == location.name)
 					)
 				).run(as_dict=True)
diff --git a/erpnext/stock/report/reserved_stock/reserved_stock.js b/erpnext/stock/report/reserved_stock/reserved_stock.js
index 2199f52..6872741 100644
--- a/erpnext/stock/report/reserved_stock/reserved_stock.js
+++ b/erpnext/stock/report/reserved_stock/reserved_stock.js
@@ -91,16 +91,30 @@
 			},
 		},
 		{
-			fieldname: "against_pick_list",
-			label: __("Against Pick List"),
+			fieldname: "from_voucher_type",
+			label: __("From Voucher Type"),
 			fieldtype: "Link",
-			options: "Pick List",
+			options: "DocType",
+			get_query: () => ({
+				filters: {
+					name: ["in", ["Pick List", "Purchase Receipt"]],
+				}
+			}),
+		},
+		{
+			fieldname: "from_voucher_no",
+			label: __("From Voucher No"),
+			fieldtype: "Dynamic Link",
+			options: "from_voucher_type",
 			get_query: () => ({
 				filters: {
 					docstatus: 1,
 					company: frappe.query_report.get_filter_value("company"),
 				},
 			}),
+			get_options: function () {
+				return frappe.query_report.get_filter_value("from_voucher_type");
+			},
 		},
 		{
 			fieldname: "reservation_based_on",
diff --git a/erpnext/stock/report/reserved_stock/reserved_stock.py b/erpnext/stock/report/reserved_stock/reserved_stock.py
index d93ee1c..21ce203 100644
--- a/erpnext/stock/report/reserved_stock/reserved_stock.py
+++ b/erpnext/stock/report/reserved_stock/reserved_stock.py
@@ -44,7 +44,8 @@
 			(sre.available_qty - sre.reserved_qty).as_("available_qty"),
 			sre.voucher_type,
 			sre.voucher_no,
-			sre.against_pick_list,
+			sre.from_voucher_type,
+			sre.from_voucher_no,
 			sre.name.as_("stock_reservation_entry"),
 			sre.status,
 			sre.project,
@@ -65,7 +66,8 @@
 		"warehouse",
 		"voucher_type",
 		"voucher_no",
-		"against_pick_list",
+		"from_voucher_type",
+		"from_voucher_no",
 		"reservation_based_on",
 		"status",
 		"project",
@@ -142,7 +144,6 @@
 			"fieldname": "voucher_type",
 			"label": _("Voucher Type"),
 			"fieldtype": "Data",
-			"options": "Warehouse",
 			"width": 110,
 		},
 		{
@@ -153,11 +154,17 @@
 			"width": 120,
 		},
 		{
-			"fieldname": "against_pick_list",
-			"label": _("Against Pick List"),
-			"fieldtype": "Link",
-			"options": "Pick List",
-			"width": 130,
+			"fieldname": "from_voucher_type",
+			"label": _("From Voucher Type"),
+			"fieldtype": "Data",
+			"width": 110,
+		},
+		{
+			"fieldname": "from_voucher_no",
+			"label": _("From Voucher No"),
+			"fieldtype": "Dynamic Link",
+			"options": "from_voucher_type",
+			"width": 120,
 		},
 		{
 			"fieldname": "stock_reservation_entry",