diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 538c08f..ae024c6 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -548,8 +548,9 @@
 
 erpnext.select_batch_and_serial_no = (frm, d = undefined) => {
 	let get_warehouse = (item) => {
-		return cstr(item.s_warehouse) ? ['Source Warehouse', cstr(item.s_warehouse)]
-			: ['Target Warehouse', cstr(item.t_warehouse)];
+		if(cstr(item.s_warehouse)) return ['Source Warehouse', cstr(item.s_warehouse)];
+		if(cstr(item.t_warehouse)) return ['Target Warehouse', cstr(item.t_warehouse)];
+		return 0;
 	}
 
 	let show_modal_with_oldest_batch = (item, item_code, total_qty, warehouse_details, has_batch) => {
@@ -587,16 +588,16 @@
 	}
 
 	if(d) {
-		if(d.has_batch_no && !d.batch_no) {
-			if(get_warehouse(d)) {
+		if(get_warehouse(d)) {
+			if(d.has_batch_no && !d.batch_no) {
 				show_modal_with_oldest_batch(d, d.item_code, d.qty, get_warehouse(d), 1);
-			} else {
-				d.item_code = '';
-				refresh_field('items');
-				frappe.throw("Please select a warehouse.");
+			} else if(d.has_serial_no && !d.serial_no) {
+				erpnext.show_batch_serial_modal(frm, d, d.item_code, d.qty, get_warehouse(d), 0);
 			}
-		} else if(d.has_serial_no && !d.serial_no) {
-			erpnext.show_batch_serial_modal(frm, d, d.item_code, d.qty, get_warehouse(d), 0);
+		} else {
+			d.item_code = '';
+			refresh_field('items');
+			frappe.throw("Please select a warehouse.");
 		}
 	}
 }
@@ -800,7 +801,7 @@
 
 	if(serial_no_link) {
 		serial_no_link.$input.on('change', function(e) {
-			if(serial_no_link.get_value()) {
+			if(serial_no_link.get_value().length > 0) {
 				let new_line = '\n';
 				if(!serial_no_list.get_value()) {
 					new_line = '';
@@ -808,7 +809,7 @@
 				serial_no_list.set_value(serial_no_list.get_value() + new_line + serial_no_link.get_value());
 				update_quantity(0);
 			}
-			serial_no_link.set_value('');
+			serial_no_link.set_input('');
 		});
 
 		serial_no_list.$input.on('input', function() {
