Update Item Desc Button Removed from BOM, Item desc automatically updated in BOM on save of item master
diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js
index a5d500f..a230cf4 100644
--- a/erpnext/manufacturing/doctype/bom/bom.js
+++ b/erpnext/manufacturing/doctype/bom/bom.js
@@ -9,9 +9,6 @@
 	if (!doc.__islocal && doc.docstatus<2) {
 		cur_frm.add_custom_button(__("Update Cost"), cur_frm.cscript.update_cost,
 			"icon-money", "btn-default");
-		
-		cur_frm.add_custom_button(__("Update Item Description"), cur_frm.cscript.update_item_desc,
-			"icon-tag", "btn-default");
 	}
 }
 
@@ -25,15 +22,6 @@
 	})
 }
 
-cur_frm.cscript.update_item_desc = function() {
-	return frappe.call({
-		doc: cur_frm.doc,
-		method: "update_item_desc",
-		callback: function(r) {
-			if(!r.exc) cur_frm.refresh_fields();
-		}
-	})
-}
 cur_frm.add_fetch("item", "description", "description");
 cur_frm.add_fetch("item", "item_name", "item_name");
 cur_frm.add_fetch("item", "stock_uom", "uom");
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index f77628a..7cc3919 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -134,16 +134,6 @@
 			self.ignore_validate_update_after_submit = True
 			self.calculate_cost()
 		self.save()
-		
-	def update_item_desc(self):
-		if self.docstatus < 2:
-			self.ignore_validate_update_after_submit = True
-			self.description = frappe.db.get_value("Item", self.item, "description")
-			for d in self.get("items"):
-				d.description = frappe.db.get_value("Item", d.item_code, "description")
-			for d in self.get("exploded_items"):
-				d.description = frappe.db.get_value("Item", d.item_code, "description")
-			self.save()
 
 	def get_bom_unitcost(self, bom_no):
 		bom = frappe.db.sql("""select name, total_cost/quantity as unit_cost from `tabBOM`
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index d77cd1d..633ead1 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -69,6 +69,7 @@
 		self.validate_name_with_item_group()
 		self.update_item_price()
 		self.sync_variants()
+		self.update_item_desc()
 
 	def get_context(self, context):
 		context["parent_groups"] = get_parent_item_groups(self.item_group) + \
@@ -433,7 +434,12 @@
 					row = self.append("website_specifications")
 					row.label = label
 					row.description = desc
-
+					
+	def update_item_desc(self):
+		frappe.db.sql("""update `tabBOM` set description = %s where item = %s and docstatus < 2""",(self.description, self.name))
+		frappe.db.sql("""update `tabBOM Item` set description = %s where item_code = %s and docstatus < 2""",(self.description, self.name))
+		frappe.db.sql("""update `tabBOM Explosion Item` set description = %s where item_code = %s and docstatus < 2""",(self.description, self.name))		
+		
 def validate_end_of_life(item_code, end_of_life=None, verbose=1):
 	if not end_of_life:
 		end_of_life = frappe.db.get_value("Item", item_code, "end_of_life")