fix: Serial No. filters for unscheduled visits
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
index 9c35f4f..07d928c 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
@@ -305,7 +305,7 @@
 					return schedule.name
 
 @frappe.whitelist()
-def update_serial_nos(item_code, schedule=None):
+def get_serial_nos_from_schedule(item_code, schedule=None):
 	serial_nos = []
 	if schedule:
 		serial_nos = frappe.db.get_value('Maintenance Schedule Item', {
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/test_maintenance_schedule.py b/erpnext/maintenance/doctype/maintenance_schedule/test_maintenance_schedule.py
index 378d323..4d3c3f4 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/test_maintenance_schedule.py
+++ b/erpnext/maintenance/doctype/maintenance_schedule/test_maintenance_schedule.py
@@ -7,8 +7,8 @@
 from frappe.utils.data import add_days, formatdate, today
 
 from erpnext.maintenance.doctype.maintenance_schedule.maintenance_schedule import (
+	get_serial_nos_from_schedule,
 	make_maintenance_visit,
-	update_serial_nos,
 )
 from erpnext.stock.doctype.item.test_item import create_item
 from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
@@ -93,7 +93,7 @@
 		s_item = ms.schedules[0]
 		mv = make_maintenance_visit(source_name=ms.name, item_name=item_code, s_id=s_item.name)
 		mvi = mv.purposes[0]
-		serial_nos = update_serial_nos(mvi.item_name, ms.name)
+		serial_nos = get_serial_nos_from_schedule(mvi.item_name, ms.name)
 		self.assertEqual(serial_nos, None)
 
 		# With serial no. set in schedule -> returns serial nos.
@@ -104,7 +104,7 @@
 		s_item = ms.schedules[0]
 		mv = make_maintenance_visit(source_name=ms.name, item_name=item_code, s_id=s_item.name)
 		mvi = mv.purposes[0]
-		serial_nos = update_serial_nos(mvi.item_name, ms.name)
+		serial_nos = get_serial_nos_from_schedule(mvi.item_name, ms.name)
 		self.assertEqual(serial_nos, ["TEST001", "TEST002"])
 
 		frappe.db.rollback()
diff --git a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
index 09af0cf..72686e7 100644
--- a/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
+++ b/erpnext/maintenance/doctype/maintenance_visit/maintenance_visit.js
@@ -13,7 +13,7 @@
 		if (frm.doc.maintenance_type === "Scheduled") {
 			let item_code = frm.doc.purposes[0].item_code;
 			frappe.call({
-				method: "erpnext.maintenance.doctype.maintenance_schedule.maintenance_schedule.update_serial_nos",
+				method: "erpnext.maintenance.doctype.maintenance_schedule.maintenance_schedule.get_serial_nos_from_schedule",
 				args: {
 					schedule: frm.doc.maintenance_schedule,
 					item_code: item_code
@@ -36,6 +36,15 @@
 					};
 				});
 			});
+		} else {
+			frm.set_query('serial_no', 'purposes', (frm, cdt, cdn) => {
+				let row = locals[cdt][cdn];
+				return {
+					filters: {
+						'item_code': row.item_code
+					}
+				};
+			});
 		}
 		if (!frm.doc.status) {
 			frm.set_value({ status: 'Draft' });