diff --git a/manufacturing/doctype/production_order/production_order.py b/manufacturing/doctype/production_order/production_order.py
index b29b0f1..dd21782 100644
--- a/manufacturing/doctype/production_order/production_order.py
+++ b/manufacturing/doctype/production_order/production_order.py
@@ -134,16 +134,16 @@
 
 @webnotes.whitelist()	
 def get_item_details(item):
-	res = webnotes.conn.sql("""select stock_uom
+	res = webnotes.conn.sql("""select stock_uom, description
 		from `tabItem` where (ifnull(end_of_life, "")="" or end_of_life > now())
-		and name=%s""", (item,), as_dict=1)
+		and name=%s""", item, as_dict=1)
 	
 	if not res:
 		return {}
 		
 	res = res[0]
 	bom = webnotes.conn.sql("""select name from `tabBOM` where item=%s 
-		and ifnull(is_default, 0)=1""", (item,))
+		and ifnull(is_default, 0)=1""", item)
 	if bom:
 		res.bom_no = bom[0][0]
 		
diff --git a/stock/doctype/stock_entry/stock_entry.py b/stock/doctype/stock_entry/stock_entry.py
index 7ec2ba3..9f3b0ce 100644
--- a/stock/doctype/stock_entry/stock_entry.py
+++ b/stock/doctype/stock_entry/stock_entry.py
@@ -454,35 +454,44 @@
 						item["to_warehouse"] = ""
 
 				# add raw materials to Stock Entry Detail table
-				self.add_to_stock_entry_detail(item_dict)
+				idx = self.add_to_stock_entry_detail(item_dict)
 					
 			# add finished good item to Stock Entry Detail table -- along with bom_no
 			if self.doc.production_order and self.doc.purpose == "Manufacture/Repack":
+				item = webnotes.conn.get_value("Item", pro_obj.doc.production_item, ["item_name", 
+					"description", "stock_uom", "purchase_account", "cost_center"], as_dict=1)
 				self.add_to_stock_entry_detail({
 					cstr(pro_obj.doc.production_item): {
 						"to_warehouse": pro_obj.doc.fg_warehouse,
 						"from_warehouse": "",
 						"qty": self.doc.fg_completed_qty,
-						"description": pro_obj.doc.description,
-						"stock_uom": pro_obj.doc.stock_uom
+						"item_name": item.item_name,
+						"description": item.description,
+						"stock_uom": item.stock_uom,
+						"expense_account": item.purchase_account,
+						"cost_center": item.cost_center,
 					}
-				}, bom_no=pro_obj.doc.bom_no)
+				}, bom_no=pro_obj.doc.bom_no, idx=idx)
 								
 			elif self.doc.purpose in ["Material Receipt", "Manufacture/Repack"]:
 				if self.doc.purpose=="Material Receipt":
 					self.doc.from_warehouse = ""
 					
-				item = webnotes.conn.sql("""select name, item_name, description, uom 
-					from `tabItem` where name=%s""", (self.doc.bom_no), as_dict=1)
+				item = webnotes.conn.sql("""select name, item_name, description, 
+					uom, purchase_account, cost_center from `tabItem` 
+					where name=(select item from tabBOM where name=%s)""", 
+					self.doc.bom_no, as_dict=1)
 				self.add_to_stock_entry_detail({
 					item[0]["item"] : {
 						"qty": self.doc.fg_completed_qty,
 						"item_name": item[0].item_name,
 						"description": item[0]["description"],
 						"stock_uom": item[0]["uom"],
-						"from_warehouse": ""
+						"from_warehouse": "",
+						"expense_account": item[0].purchase_account,
+						"cost_center": item[0].cost_center,
 					}
-				}, bom_no=self.doc.bom_no)
+				}, bom_no=self.doc.bom_no, idx=idx)
 		
 		self.get_stock_and_rate()
 	
@@ -607,8 +616,9 @@
 		
 		return issued_item_qty
 
-	def add_to_stock_entry_detail(self, item_dict, bom_no=None):
-		idx = 1
+	def add_to_stock_entry_detail(self, item_dict, bom_no=None, idx=None):
+		webnotes.errprint([])
+		if not idx:	idx = 1
 		expense_account, cost_center = webnotes.conn.get_values("Company", self.doc.company, \
 			["default_expense_account", "cost_center"])[0]
 
@@ -636,6 +646,7 @@
 
 			# increment idx by 1
 			idx += 1
+		return idx
 
 	def get_cust_values(self):
 		"""fetches customer details"""
