fix: update `Reserved Qty` in SO Item on SRE cancel
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 406fba8..fe65d25 100644
--- a/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
+++ b/erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py
@@ -17,9 +17,11 @@
 		validate_warehouse_company(self.warehouse, self.company)
 
 	def on_submit(self):
+		self.update_reserved_qty_in_voucher()
 		self.update_status()
 
 	def on_cancel(self):
+		self.update_reserved_qty_in_voucher()
 		self.update_status()
 
 	def validate_mandatory(self):
@@ -53,3 +55,26 @@
 				status = "Draft"
 
 		frappe.db.set_value(self.doctype, self.name, "status", status, update_modified=update_modified)
+
+	def update_reserved_qty_in_voucher(self, update_modified=True):
+		from frappe.query_builder.functions import Sum
+
+		sre = frappe.qb.DocType("Stock Reservation Entry")
+		reserved_qty = (
+			frappe.qb.from_(sre)
+			.select(Sum(sre.reserved_qty))
+			.where(
+				(sre.docstatus == 1)
+				& (sre.voucher_type == self.voucher_type)
+				& (sre.voucher_no == self.voucher_no)
+				& (sre.voucher_detail_no == self.voucher_detail_no)
+			)
+		).run(as_list=True)[0][0] or 0
+
+		frappe.db.set_value(
+			"Sales Order Item",
+			self.voucher_detail_no,
+			"stock_reserved_qty",
+			reserved_qty,
+			update_modified=update_modified,
+		)