diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index fd673a3..e4bab8e 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -206,7 +206,7 @@
 	def set_total_amount(self):
 		self.total_amount = sum([flt(item.amount) for item in self.get("mtn_details")])
 
-	def get_stock_and_rate(self):
+	def get_stock_and_rate(self, force=False):
 		"""get stock and incoming rate on posting date"""
 
 		raw_material_cost = 0.0
@@ -237,7 +237,7 @@
 
 			# get incoming rate
 			if not d.bom_no:
-				if not flt(d.incoming_rate) or d.s_warehouse or self.purpose == "Sales Return":
+				if not flt(d.incoming_rate) or d.s_warehouse or self.purpose == "Sales Return" or force:
 					incoming_rate = flt(self.get_incoming_rate(args), self.precision("incoming_rate", d))
 					if incoming_rate > 0:
 						d.incoming_rate = incoming_rate
@@ -247,13 +247,18 @@
 
 		# set incoming rate for fg item
 		if self.purpose == "Manufacture/Repack":
+			number_of_fg_items = len([t.t_warehouse for t in self.get("mtn_details")])
+
 			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)
+				if d.bom_no or (d.t_warehouse and number_of_fg_items == 1):
+					if not flt(d.incoming_rate) or force:
+						operation_cost_per_unit = 0
+						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)
+					break
 
 	def get_incoming_rate(self, args):
 		incoming_rate = 0
diff --git a/erpnext/stock/doctype/warehouse/warehouse.py b/erpnext/stock/doctype/warehouse/warehouse.py
index 0095bbb..f50c184 100644
--- a/erpnext/stock/doctype/warehouse/warehouse.py
+++ b/erpnext/stock/doctype/warehouse/warehouse.py
@@ -22,16 +22,16 @@
 		self.update_parent_account()
 
 	def update_parent_account(self):
-		
+
 		if not getattr(self, "__islocal", None) \
 			and (self.create_account_under != frappe.db.get_value("Warehouse", self.name, "create_account_under")):
-				
+
 				self.validate_parent_account()
-				
-				warehouse_account = frappe.db.get_value("Account", 
-					{"account_type": "Warehouse", "company": self.company, "master_name": self.name}, 
+
+				warehouse_account = frappe.db.get_value("Account",
+					{"account_type": "Warehouse", "company": self.company, "master_name": self.name},
 					["name", "parent_account"])
-					
+
 				if warehouse_account and warehouse_account[1] != self.create_account_under:
 					acc_doc = frappe.get_doc("Account", warehouse_account[0])
 					acc_doc.parent_account = self.create_account_under
@@ -64,19 +64,19 @@
 	def validate_parent_account(self):
 		if not self.company:
 			frappe.throw(_("Warehouse {0}: Company is mandatory").format(self.name))
-		
+
 		if not self.create_account_under:
 			parent_account = frappe.db.get_value("Account",
 				{"account_name": "Stock Assets", "company": self.company})
-			
+
 			if parent_account:
 				self.create_account_under = parent_account
 			else:
-				frappe.throw(_("Please enter parent account group for warehouse account"))
+				frappe.throw(_("Please enter parent account group for warehouse {0}").format(self.name))
 		elif frappe.db.get_value("Account", self.create_account_under, "company") != self.company:
 			frappe.throw(_("Warehouse {0}: Parent account {1} does not bolong to the company {2}")
 				.format(self.name, self.create_account_under, self.company))
-			
+
 
 	def on_trash(self):
 		# delete bin
