diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js
index 5315253..853b20d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.js
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.js
@@ -14,8 +14,6 @@
 				]
 			}
 		});
-	// },
-	// onload_post_render: function(frm) {
 
 		frm.set_query('batch_no', 'items', function(doc, cdt, cdn) {
 			var item = locals[cdt][cdn];
@@ -40,9 +38,8 @@
 				}
 			}
 		});
-
-
 	},
+
 	refresh: function(frm) {
 		if(!frm.doc.docstatus) {
 			frm.add_custom_button(__('Make Material Request'), function() {
@@ -73,10 +70,12 @@
 			frm.trigger("toggle_display_account_head");
 		}
 	},
+
 	purpose: function(frm) {
 		frm.fields_dict.items.grid.refresh();
 		frm.cscript.toggle_related_fields(frm.doc);
 	},
+
 	company: function(frm) {
 		if(frm.doc.company) {
 			var company_doc = frappe.get_doc(":Company", frm.doc.company);
@@ -86,6 +85,7 @@
 			frm.trigger("toggle_display_account_head");
 		}
 	},
+
 	set_serial_no: function(frm, cdt, cdn) {
 		var d = frappe.model.get_doc(cdt, cdn);
 		if(!d.item_code && !d.s_warehouse && !d.qty) return;
@@ -104,20 +104,142 @@
 			}
 		});
 	},
+
 	toggle_display_account_head: function(frm) {
 		var enabled = erpnext.is_perpetual_inventory_enabled(frm.doc.company);
 		frm.fields_dict["items"].grid.set_column_disp(["cost_center", "expense_account"], enabled);
-	}
+	},
+
+	set_basic_rate: function(frm, cdt, cdn, callback) {
+		const item = locals[cdt][cdn];
+		item.transfer_qty = flt(item.qty) * flt(item.conversion_factor);
+
+		const args = {
+			'item_code'			: item.item_code,
+			'posting_date'		: frm.doc.posting_date,
+			'posting_time'		: frm.doc.posting_time,
+			'warehouse'			: cstr(item.s_warehouse) || cstr(item.t_warehouse),
+			'serial_no	'		: item.serial_no,
+			'company'			: frm.doc.company,
+			'qty'				: item.s_warehouse ? -1*flt(item.transfer_qty) : flt(item.transfer_qty)
+		};
+
+		frappe.call({
+			method: "erpnext.stock.utils.get_incoming_rate",
+			args: {
+				args: args
+			},
+			callback: function(r) {
+				frappe.model.set_value(cdt, cdn, 'basic_rate', r.message);
+				frm.events.calculate_basic_amount(frm, item);
+
+				if (callback) {
+					callback();
+				}
+			}
+		})
+	},
+
+	get_warehouse_details: function(frm, cdt, cdn, callback) {
+		var child = locals[cdt][cdn];
+		if(!child.bom_no) {
+			frappe.call({
+				method: "erpnext.stock.doctype.stock_entry.stock_entry.get_warehouse_details",
+				args: {
+					"args": {
+						'item_code': child.item_code,
+						'warehouse': cstr(child.s_warehouse) || cstr(child.t_warehouse),
+						'transfer_qty': child.transfer_qty,
+						'serial_no': child.serial_no,
+						'qty': child.s_warehouse ? -1* child.transfer_qty : child.transfer_qty,
+						'posting_date': frm.doc.posting_date,
+						'posting_time': frm.doc.posting_time
+					}
+				},
+				callback: function(r) {
+					if (!r.exc) {
+						$.extend(child, r.message);
+						frm.events.calculate_basic_amount(frm, child);
+					}
+
+					if (callback) {
+						callback();
+					}
+				}
+			});
+		}
+	},
+
+	calculate_basic_amount: function(frm, item) {
+		item.basic_amount = flt(flt(item.transfer_qty) * flt(item.basic_rate),
+			precision("basic_amount", item));
+
+		frm.events.calculate_amount(frm);
+	},
+
+	calculate_amount: function(frm) {
+		frm.events.calculate_total_additional_costs(frm);
+
+		const total_basic_amount = frappe.utils.sum(
+			(frm.doc.items || []).map(function(i) { return i.t_warehouse ? flt(i.basic_amount) : 0; })
+		);
+
+		for (let i in frm.doc.items) {
+			let item = frm.doc.items[i];
+
+			if (item.t_warehouse && total_basic_amount) {
+				item.additional_cost = (flt(item.basic_amount) / total_basic_amount) * frm.doc.total_additional_costs;
+			} else {
+				item.additional_cost = 0;
+			}
+
+			item.amount = flt(item.basic_amount + flt(item.additional_cost),
+				precision("amount", item));
+
+			item.valuation_rate = flt(flt(item.basic_rate)
+				+ (flt(item.additional_cost) / flt(item.transfer_qty)),
+				precision("valuation_rate", item));
+		}
+
+		refresh_field('items');
+	},
+
+	calculate_total_additional_costs: function(frm) {
+		const total_additional_costs = frappe.utils.sum(
+			(frm.doc.additional_costs || []).map(function(c) { return flt(c.amount); })
+		);
+
+		frm.set_value("total_additional_costs",
+			flt(total_additional_costs, precision("total_additional_costs")));
+	},
 })
 
 frappe.ui.form.on('Stock Entry Detail', {
 	qty: function(frm, cdt, cdn) {
-		frm.events.set_serial_no(frm, cdt, cdn);
+		frm.events.set_basic_rate(frm, cdt, cdn, () => {
+			frm.events.set_serial_no(frm, cdt, cdn);
+		});
+	},
+
+	conversion_factor: function(frm, cdt, cdn) {
+		frm.events.set_basic_rate(frm, cdt, cdn);
 	},
 
 	s_warehouse: function(frm, cdt, cdn) {
-		frm.events.set_serial_no(frm, cdt, cdn);
+		frm.events.get_warehouse_details(frm, cdt, cdn, () => {
+			frm.events.set_serial_no(frm, cdt, cdn);
+		});
 	},
+
+	t_warehouse: function(frm, cdt, cdn) {
+		frm.events.get_warehouse_details(frm, cdt, cdn);
+	},
+
+	basic_rate: function(frm, cdt, cdn) {
+		var item = locals[cdt][cdn];
+		frm.events.calculate_basic_amount(frm, item);
+	},
+
 	barcode: function(doc, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if (d.barcode) {
@@ -132,6 +254,7 @@
 			});
 		}
 	},
+
 	uom: function(doc, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if(d.uom && d.item_code){
@@ -150,6 +273,7 @@
 			});
 		}
 	},
+
 	item_code: function(frm, cdt, cdn) {
 		var d = locals[cdt][cdn];
 		if(d.item_code) {
@@ -191,7 +315,7 @@
 
 frappe.ui.form.on('Landed Cost Taxes and Charges', {
 	amount: function(frm) {
-		frm.events.calculate_amount();
+		frm.events.calculate_amount(frm);
 	}
 });
 
@@ -330,12 +454,6 @@
 		}
 	},
 
-	qty: function(doc, cdt, cdn) {
-		var d = locals[cdt][cdn];
-		d.transfer_qty = flt(d.qty) * flt(d.conversion_factor);
-		this.calculate_basic_amount(d);
-	},
-
 	production_order: function() {
 		var me = this;
 		this.toggle_enable_bom();
@@ -434,88 +552,6 @@
 		erpnext.setup_serial_no();
 	},
 
-	basic_rate: function(doc, cdt, cdn) {
-		var item = frappe.model.get_doc(cdt, cdn);
-		this.calculate_basic_amount(item);
-	},
-
-	s_warehouse: function(doc, cdt, cdn) {
-		this.get_warehouse_details(doc, cdt, cdn)
-	},
-
-	t_warehouse: function(doc, cdt, cdn) {
-		this.get_warehouse_details(doc, cdt, cdn)
-	},
-
-	get_warehouse_details: function(doc, cdt, cdn) {
-		var me = this;
-		var d = locals[cdt][cdn];
-		if(!d.bom_no) {
-			frappe.call({
-				method: "erpnext.stock.doctype.stock_entry.stock_entry.get_warehouse_details",
-				args: {
-					"args": {
-						'item_code': d.item_code,
-						'warehouse': cstr(d.s_warehouse) || cstr(d.t_warehouse),
-						'transfer_qty': d.transfer_qty,
-						'serial_no': d.serial_no,
-						'qty': d.s_warehouse ? -1* d.qty : d.qty,
-						'posting_date': this.frm.doc.posting_date,
-						'posting_time': this.frm.doc.posting_time
-					}
-				},
-				callback: function(r) {
-					if (!r.exc) {
-						$.extend(d, r.message);
-						me.calculate_basic_amount(d);
-					}
-				}
-			});
-		}
-	},
-
-	calculate_basic_amount: function(item) {
-		item.basic_amount = flt(flt(item.transfer_qty) * flt(item.basic_rate),
-			precision("basic_amount", item));
-
-		this.calculate_amount();
-	},
-
-	calculate_amount: function() {
-		this.calculate_total_additional_costs();
-
-		var total_basic_amount = frappe.utils.sum(
-			(this.frm.doc.items || []).map(function(i) { return i.t_warehouse ? flt(i.basic_amount) : 0; })
-		);
-
-		for (var i in this.frm.doc.items) {
-			var item = this.frm.doc.items[i];
-
-			if (item.t_warehouse && total_basic_amount) {
-				item.additional_cost = (flt(item.basic_amount) / total_basic_amount) * this.frm.doc.total_additional_costs;
-			} else {
-				item.additional_cost = 0;
-			}
-
-			item.amount = flt(item.basic_amount + flt(item.additional_cost),
-				precision("amount", item));
-
-			item.valuation_rate = flt(flt(item.basic_rate)
-				+ (flt(item.additional_cost) / flt(item.transfer_qty)),
-				precision("valuation_rate", item));
-		}
-
-		refresh_field('items');
-	},
-
-	calculate_total_additional_costs: function() {
-		var total_additional_costs = frappe.utils.sum(
-			(this.frm.doc.additional_costs || []).map(function(c) { return flt(c.amount); })
-		);
-
-		this.frm.set_value("total_additional_costs", flt(total_additional_costs, precision("total_additional_costs")));
-	},
-
 	toggle_related_fields: function(doc) {
 		this.frm.toggle_enable("from_warehouse", doc.purpose!='Material Receipt');
 		this.frm.toggle_enable("to_warehouse", doc.purpose!='Material Issue');
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index fc45f13..4d79e13 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -517,7 +517,7 @@
 		args['posting_date'] = self.posting_date
 		args['posting_time'] = self.posting_time
 
-		stock_and_rate = args.get('warehouse') and get_warehouse_details(args) or {}
+		stock_and_rate = get_warehouse_details(args) if args.get('warehouse') else {}
 		ret.update(stock_and_rate)
 
 		# automatically select batch for outgoing item
