Item variants: validation added
diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js
index 55d6d33..b31b682 100644
--- a/erpnext/stock/doctype/item/item.js
+++ b/erpnext/stock/doctype/item/item.js
@@ -83,8 +83,9 @@
 
 	validate: function(frm){
 		erpnext.item.weight_to_validate(frm);
+		erpnext.item.variants_can_not_be_created_manually(frm);
 	},
-
+	
 	image: function(frm) {
 		refresh_field("image_view");
 	},
@@ -208,5 +209,11 @@
 			validated = 0;
 		}
 	},
+	
+	variants_can_not_be_created_manually: function(frm) {
+		if (frm.doc.__islocal && frm.doc.variant_of)
+			frappe.throw(__("Variants can not be created manually, add item attributes in the template item"))
+	}
+	
 
 });
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index dcf390c..de60502 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -50,6 +50,7 @@
 
 		if self.variant_of:
 			self.copy_attributes_to_variant(frappe.get_doc("Item", self.variant_of), self)
+			
 		self.check_warehouse_is_set_for_stock_item()
 		self.check_stock_uom_with_bin()
 		self.add_default_uom_in_conversion_factor_table()
@@ -147,17 +148,21 @@
 	def validate_variants_are_unique(self):
 		if not self.has_variants:
 			self.variants = []
+			return
 
-		if self.variants and self.variant_of:
-			frappe.throw(_("Item cannot be a variant of a variant"))
-
-		variants = []
-		for d in self.variants:
-			key = (d.item_attribute, d.item_attribute_value)
-			if key in variants:
-				frappe.throw(_("{0} {1} is entered more than once in Item Variants table").format(d.item_attribute,
-					d.item_attribute_value), DuplicateVariant)
-			variants.append(key)
+		if self.variants:
+			if self.variant_of:
+				frappe.throw(_("Item cannot be a variant of a variant"))
+	
+			variants = []
+			for d in self.variants:
+				key = (d.item_attribute, d.item_attribute_value)
+				if key in variants:
+					frappe.throw(_("{0} {1} is entered more than once in Item Variants table")
+						.format(d.item_attribute, d.item_attribute_value), DuplicateVariant)
+				variants.append(key)
+		else:
+			frappe.throw(_("Please enter atleast one attribute row in Item Variants table"))
 
 	def sync_variants(self):
 		variant_item_codes = self.get_variant_item_codes()