feat: Added auto fetch logic and button for client
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index b94cdd8..0e82b18 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -345,8 +345,26 @@
 		return [
 			{fieldtype: 'Section Break', label: __('Serial No')},
 			{
+				fieldname: 'auto_fetch_toggle',
+				fieldtype:'Check',
+				label: __('Fetch based on FIFO'),
+				default: 0,
+				onchange: function(e) {
+					const show_auto_fetch = this.get_value();
+					if (show_auto_fetch) {
+						this.layout.set_df_property('auto_qty', 'hidden', 0);
+						this.layout.set_df_property('auto_fetch_button', 'hidden', 0);
+						this.layout.set_df_property('serial_no_select', 'hidden', 1);
+					} else {
+						this.layout.set_df_property('serial_no_select', 'hidden', 0);
+						this.layout.set_df_property('auto_qty', 'hidden', 1);
+						this.layout.set_df_property('auto_fetch_button', 'hidden', 1);
+					}
+				}
+			},
+			{
 				fieldtype: 'Link', fieldname: 'serial_no_select', options: 'Serial No',
-				label: __('Select'),
+				label: __('Select to add serial no.'),
 				get_query: function() {
 					return { filters: {item_code: me.item_code, warehouse: me.warehouse_details.name}};
 				},
@@ -379,6 +397,43 @@
 					this.in_local_change = 0;
 				}
 			},
+			{
+				fieldname: 'auto_qty',
+				fieldtype:'Float',
+				read_only: 0,
+				hidden: 1,
+				label: __('Auto Fetch Quantity'),
+				default: 0,
+			},
+			{
+				fieldname: 'auto_fetch_button',
+				fieldtype:'Button',
+				label: __('Fetch Serial Numbers'),
+				read_only: 0,
+				hidden: 1,
+				click: (e) => {
+					// window.abc = this.dialog
+					console.log(this.dialog.fields_dict.auto_qty.get_value())
+					let auto_fetch_qty_field = this.dialog.fields_dict.auto_qty;
+					let fetch_qty = auto_fetch_qty_field.get_value();
+					let numbers = frappe.call({
+						method: "erpnext.stock.doctype.serial_no.serial_no.auto_fetch_serial_number",
+						args: {
+							qty: fetch_qty,
+							item_code: me.item_code,
+							warehouse: me.warehouse_details.name
+						}
+					});
+
+					numbers.then((data) => {
+						let auto_fetched_serial_numbers = data.message;
+						let serial_no_list_field = this.layout.fields_dict.serial_no;
+						numbers = auto_fetched_serial_numbers.join('\n');
+						serial_no_list_field.set_value(numbers);
+						auto_fetch_qty_field.set_value("");
+					})
+				}
+			},
 			{fieldtype: 'Column Break'},
 			{
 				fieldname: 'serial_no',