diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 070eaf3..08e3940 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -415,7 +415,6 @@
 		let row = locals[cdt][cdn];
 		if (row.barcode) {
 			erpnext.stock.utils.set_item_details_using_barcode(this.frm, row, (r) => {
-				debugger
 				frappe.model.set_value(cdt, cdn, {
 					"item_code": r.message.item_code,
 					"qty": 1,
diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py
index efa736c..c4156e7 100644
--- a/erpnext/stock/report/stock_ageing/stock_ageing.py
+++ b/erpnext/stock/report/stock_ageing/stock_ageing.py
@@ -229,8 +229,16 @@
 		}
 		"""
 
+		from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import (
+			get_serial_nos_from_bundle,
+		)
+
 		stock_ledger_entries = self.sle
 
+		bundle_wise_serial_nos = frappe._dict({})
+		if stock_ledger_entries is None:
+			bundle_wise_serial_nos = self.__get_bundle_wise_serial_nos()
+
 		with frappe.db.unbuffered_cursor():
 			if stock_ledger_entries is None:
 				stock_ledger_entries = self.__get_stock_ledger_entries()
@@ -244,6 +252,11 @@
 					d.actual_qty = flt(d.qty_after_transaction) - flt(prev_balance_qty)
 
 				serial_nos = get_serial_nos(d.serial_no) if d.serial_no else []
+				if d.serial_and_batch_bundle and d.has_serial_no:
+					if bundle_wise_serial_nos:
+						serial_nos = bundle_wise_serial_nos.get(d.serial_and_batch_bundle) or []
+					else:
+						serial_nos = get_serial_nos_from_bundle(d.serial_and_batch_bundle) or []
 
 				if d.actual_qty > 0:
 					self.__compute_incoming_stock(d, fifo_queue, transferred_item_key, serial_nos)
@@ -408,6 +421,7 @@
 				sle.serial_no,
 				sle.batch_no,
 				sle.qty_after_transaction,
+				sle.serial_and_batch_bundle,
 				sle.warehouse,
 			)
 			.where(
@@ -425,6 +439,33 @@
 
 		return sle_query.run(as_dict=True, as_iterator=True)
 
+	def __get_bundle_wise_serial_nos(self) -> dict:
+		bundle = frappe.qb.DocType("Serial and Batch Bundle")
+		entry = frappe.qb.DocType("Serial and Batch Entry")
+
+		query = (
+			frappe.qb.from_(bundle)
+			.join(entry)
+			.on(bundle.name == entry.parent)
+			.select(bundle.name, entry.serial_no)
+			.where(
+				(bundle.docstatus == 1)
+				& (entry.serial_no.isnotnull())
+				& (bundle.company == self.filters.get("company"))
+				& (bundle.posting_date <= self.filters.get("to_date"))
+			)
+		)
+
+		for field in ["item_code", "warehouse"]:
+			if self.filters.get(field):
+				query = query.where(bundle[field] == self.filters.get(field))
+
+		bundle_wise_serial_nos = frappe._dict({})
+		for bundle_name, serial_no in query.run():
+			bundle_wise_serial_nos.setdefault(bundle_name, []).append(serial_no)
+
+		return bundle_wise_serial_nos
+
 	def __get_item_query(self) -> str:
 		item_table = frappe.qb.DocType("Item")
 
diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py
index 0d31398..af07dd7 100644
--- a/erpnext/stock/report/stock_balance/stock_balance.py
+++ b/erpnext/stock/report/stock_balance/stock_balance.py
@@ -294,6 +294,8 @@
 				sle.stock_value,
 				sle.batch_no,
 				sle.serial_no,
+				sle.serial_and_batch_bundle,
+				sle.has_serial_no,
 				item_table.item_group,
 				item_table.stock_uom,
 				item_table.item_name,
