Stock Entry: get fg item incoming rate if bom is mentioned
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 3df78c8..1dc624f 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -217,8 +217,8 @@
 					Available Qty: {4}, Transfer Qty: {5}""").format(d.idx, d.s_warehouse,
 					self.posting_date, self.posting_time, d.actual_qty, d.transfer_qty))
 
-			# get incoming rate
 			if not d.bom_no:
+				# set incoming rate
 				if not flt(d.incoming_rate) or d.s_warehouse or self.purpose == "Sales Return":
 					incoming_rate = self.get_incoming_rate(args)
 					if flt(incoming_rate) > 0:
@@ -227,15 +227,16 @@
 				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:
-					if not flt(d.incoming_rate):
-						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)
+			# bom no exists and purpose is Manufacture/Repack
+			elif self.purpose == "Manufacture/Repack":
+
+				# set incoming rate for fg item
+				if not flt(d.incoming_rate):
+					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