use set_value() for setting rows
diff --git a/erpnext/public/js/utils/serial_no_batch_selector.js b/erpnext/public/js/utils/serial_no_batch_selector.js
index fce8da9..deabea0 100644
--- a/erpnext/public/js/utils/serial_no_batch_selector.js
+++ b/erpnext/public/js/utils/serial_no_batch_selector.js
@@ -124,20 +124,25 @@
 	},
 
 	set_items: function() {
+		var me = this;
 		if(this.has_batch) {
 			this.values.batches.map((batch, i) => {
+				let item_code_field = {};
 				let row = (i !== 0) ? this.frm.add_child("items") : this.item;
 				refresh_field("items");
 				if(i !== 0) {
-					// let index = i + me.item.idx - 1;
-					// let grid_row = me.frm.fields_dict.items.grid.grid_rows[index];
-					// grid_row.toggle_editable_row();
-					// grid_row.on_grid_fields_dict.item_code.set_value(this.item_code);
+					let index = i + me.item.idx - 1;
+					let grid_row = me.frm.fields_dict.items.grid.grid_rows[index];
+					grid_row.toggle_editable_row();
+					item_code_field = grid_row.on_grid_fields_dict.item_code;
 
 					row.item_code = this.item_code;
-				}
-				this.map_row_values(row, batch, 'batch_no',
+					this.map_row_values(row, batch, 'batch_no',
+						'selected_qty', this.values.warehouse, item_code_field);
+				} else {
+					this.map_row_values(row, batch, 'batch_no',
 					'selected_qty', this.values.warehouse);
+				}
 			});
 		} else {
 			this.map_row_values(this.item, this.values, 'serial_no', 'qty');
@@ -145,7 +150,7 @@
 		refresh_field("items");
 	},
 
-	map_row_values: function(row, values, number, qty_field, warehouse) {
+	map_row_values: function(row, values, number, qty_field, warehouse, item_code_field) {
 		row.qty = values[qty_field];
 		row[number] = values[number];
 		if(this.warehouse_details.type === 'Source Warehouse') {
@@ -156,6 +161,11 @@
 			row.warehouse = values.warehouse || warehouse;
 		}
 
+		if(item_code_field) {
+			item_code_field.set_value(this.item_code);
+			// frappe.model.set_value(row.doctype, row.name, 'item_code', this.item_code);
+		}
+
 	},
 
 	bind_qty: function() {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 96c7802..0b7c2a1 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -172,7 +172,12 @@
 				callback: function(r) {
 					if(r.message) {
 						var d = locals[cdt][cdn];
+						// Properties set possibly via batch modal
+						var presets = ["batch_no", "qty", "s_warehouse", "t_warehouse"];
 						$.each(r.message, function(k, v) {
+							if(presets.includes(k) && d[k]) {
+								return;
+							}
 							d[k] = v;
 						});
 						erpnext.stock.select_batch_and_serial_no(frm, d);