diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index ac023f3..1cee6b9 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -4,11 +4,11 @@
 // On REFRESH
 cur_frm.cscript.refresh = function(doc,dt,dn){
 	cur_frm.toggle_enable("item", doc.__islocal);
-	
+
 	if (!doc.__islocal && doc.docstatus<2) {
 		cur_frm.add_custom_button(__("Update Cost"), cur_frm.cscript.update_cost);
 	}
-	
+
 	cur_frm.cscript.with_operations(doc);
 	set_operation_no(doc);
 }
@@ -41,14 +41,14 @@
 		var op = op_table[i].operation_no;
 		if (op && !inList(operations, op)) operations.push(op);
 	}
-		
-	frappe.meta.get_docfield("BOM Item", "operation_no", 
+
+	frappe.meta.get_docfield("BOM Item", "operation_no",
 		cur_frm.docname).options = operations.join("\n");
-	
+
 	$.each(doc.bom_materials || [], function(i, v) {
 		if(!inList(operations, cstr(v.operation_no))) v.operation_no = null;
 	});
-	
+
 	refresh_field("bom_materials");
 }
 
@@ -97,7 +97,7 @@
 			doc: cur_frm.doc,
 			method: "get_bom_material_detail",
 			args: {
-				'item_code': d.item_code, 
+				'item_code': d.item_code,
 				'bom_no': d.bom_no != null ? d.bom_no: '',
 				'qty': d.qty
 			},
@@ -131,7 +131,7 @@
 	}
 }
 
-var calculate_op_cost = function(doc) {	
+var calculate_op_cost = function(doc) {
 	var op = doc.bom_operations || [];
 	total_op_cost = 0;
 	for(var i=0;i<op.length;i++) {
@@ -143,13 +143,13 @@
 	refresh_field('operating_cost');
 }
 
-var calculate_rm_cost = function(doc) {	
+var calculate_rm_cost = function(doc) {
 	var rm = doc.bom_materials || [];
 	total_rm_cost = 0;
 	for(var i=0;i<rm.length;i++) {
 		amt =	flt(rm[i].rate) * flt(rm[i].qty);
 		set_multiple('BOM Item',rm[i].name, {'amount': amt}, 'bom_materials');
-		set_multiple('BOM Item',rm[i].name, 
+		set_multiple('BOM Item',rm[i].name,
 			{'qty_consumed_per_unit': flt(rm[i].qty)/flt(doc.quantity)}, 'bom_materials');
 		total_rm_cost += amt;
 	}
@@ -196,7 +196,7 @@
 			'is_active': 1,
 			'docstatus': 1
 		}
-	}	
+	}
 }
 
 cur_frm.cscript.validate = function(doc, dt, dn) {
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 039d4a0..1d04a7d 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -175,6 +175,9 @@
 
 	def get_stock_and_rate(self):
 		"""get stock and incoming rate on posting date"""
+
+		raw_material_cost = 0.0
+
 		for d in self.get('mtn_details'):
 			args = frappe._dict({
 				"item_code": d.item_code,
@@ -182,17 +185,27 @@
 				"posting_date": self.posting_date,
 				"posting_time": self.posting_time,
 				"qty": d.s_warehouse and -1*d.transfer_qty or d.transfer_qty,
-				"serial_no": d.serial_no,
-				"bom_no": d.bom_no,
+				"serial_no": d.serial_no
 			})
 			# get actual stock at source warehouse
 			d.actual_qty = get_previous_sle(args).get("qty_after_transaction") or 0
 
 			# get incoming rate
-			if not flt(d.incoming_rate):
-				d.incoming_rate = self.get_incoming_rate(args)
+			if not d.bom_no:
+				if not flt(d.incoming_rate):
+					d.incoming_rate = self.get_incoming_rate(args)
 
-			d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
+				d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
+				raw_material_cost += flt(d.amount)
+
+		# set incoming rate for fg item
+		if self.production_order and self.purpose == "Manufacture/Repack":
+			for d in self.get("mtn_details"):
+				if d.bom_no:
+					bom = frappe.db.get_value("BOM", d.bom_no, ["operating_cost", "quantity"], as_dict=1)
+					operation_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity)
+					d.incoming_rate = operation_cost_per_unit + (raw_material_cost / flt(d.transfer_qty))
+					d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
 
 	def get_incoming_rate(self, args):
 		incoming_rate = 0
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 8fe5284..b5c98bf 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -68,10 +68,6 @@
 	in_rate = 0
 	if args.get("serial_no"):
 		in_rate = get_avg_purchase_rate(args.get("serial_no"))
-	elif args.get("bom_no"):
-		result = frappe.db.sql("""select ifnull(total_cost, 0) / ifnull(quantity, 1)
-			from `tabBOM` where name = %s and docstatus=1 and is_active=1""", args.get("bom_no"))
-		in_rate = result and flt(result[0][0]) or 0
 	else:
 		valuation_method = get_valuation_method(args.get("item_code"))
 		previous_sle = get_previous_sle(args)
