Add in delivery note
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index f54fc0f..dd47f20 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -58,10 +58,11 @@
 
 		this.dialog.set_primary_action(__('Insert'), function() {
 			me.values = me.dialog.get_values();
-			if(!me.validate()) return;
-			me.set_items();
-			refresh_field("items");
-			me.dialog.hide();
+			if(me.validate()) {
+				me.set_items();
+				refresh_field("items");
+				me.dialog.hide();
+			}
 		});
 
 		this.dialog.show();
@@ -120,8 +121,10 @@
 		item[attribute] = values[attribute];
 		if(this.warehouse_details.type === 'Source Warehouse') {
 			item.s_warehouse = values.warehouse || warehouse;
-		} else {
+		} else if(this.warehouse_details.type === 'Target Warehouse') {
 			item.t_warehouse = values.warehouse || warehouse;
+		} else {
+			item.warehouse = values.warehouse || warehouse;
 		}
 		item.qty = values[qty_field];
 	},
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 5b9fc68..4b52f2f 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -85,8 +85,41 @@
 		frm.update_in_all_rows('items', 'cost_center', d.cost_center);
 	},
 	item_code: function(frm, dt, dn) {
-		refresh_field("items");
-		erpnext.stock.select_batch_and_serial_no(frm, d);
+		var d = locals[dt][dn];
+		if(d.item_code) {
+			var args = {
+				'item_code': d.item_code,
+			};
+			frappe.call({
+				doc: frm.doc,
+				method: "get_batched_serialized_details",
+				args: args,
+				callback: function(r) {
+					if(r.message) {
+						$.each(r.message, function(k, v) {
+							d[k] = v;
+						});
+						let opts = {
+							frm: frm,
+							item: d,
+							warehouse_details: {
+								type: "From Warehouse",
+								name: d.warehouse
+							},
+						}
+						if(d && d.has_batch_no && !d.batch_no) {
+							opts.has_batch = 1;
+						} else if(d && d.has_serial_no && !d.serial_no) {
+							opts.has_batch = 0;
+						}
+						if(opts.hasOwnProperty("has_batch")) {
+							let serial_no_batch_selector = new erpnext.SerialNoBatchSelector(opts);
+						}
+						refresh_field("items");
+					}
+				}
+			});
+		}
 	}
 });
 
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index 7523409..e176117 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -301,6 +301,24 @@
 
 		self.load_from_db()
 
+	def get_batched_serialized_details(self, item_code):
+		item = frappe.db.sql("""
+			select
+				has_serial_no,
+				has_batch_no
+			from
+				`tabItem`
+			where
+				name = %s""",
+			(item_code), as_dict = 1)
+
+		item = item[0]
+
+		return frappe._dict({
+			'has_serial_no'	: item.has_serial_no,
+			'has_batch_no'	: item.has_batch_no
+		})
+
 def update_billed_amount_based_on_so(so_detail, update_modified=True):
 	# Billed against Sales Order directly
 	billed_against_so = frappe.db.sql("""select sum(amount) from `tabSales Invoice Item`
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 1504f71..34f5cb7 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -175,8 +175,8 @@
 						$.each(r.message, function(k, v) {
 							d[k] = v;
 						});
-						refresh_field("items");
 						erpnext.stock.select_batch_and_serial_no(frm, d);
+						refresh_field("items");
 					}
 				}
 			});
@@ -578,6 +578,7 @@
 		opts.has_batch = 0;
 	}
 
-	let serial_no_batch_selector = new erpnext.SerialNoBatchSelector(opts);
-
+	if(opts.hasOwnProperty("has_batch")) {
+		let serial_no_batch_selector = new erpnext.SerialNoBatchSelector(opts);
+	}
 }