Auto-Capitalize Item Attribute Abbreation, Prevent attribute to be deleated if Variant exists
diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.py b/erpnext/stock/doctype/item_attribute/item_attribute.py
index d7c33a5..73fefe4 100644
--- a/erpnext/stock/doctype/item_attribute/item_attribute.py
+++ b/erpnext/stock/doctype/item_attribute/item_attribute.py
@@ -8,8 +8,14 @@
 
 class ItemAttribute(Document):
 	def validate(self):
+		self.validate_duplication()
+		self.validate_attribute_values()
+
+	
+	def validate_duplication(self):
 		values, abbrs = [], []
 		for d in self.item_attribute_values:
+			d.abbr = d.abbr.upper()
 			if d.attribute_value in values:
 				frappe.throw(_("{0} must appear only once").format(d.attribute_value))
 			values.append(d.attribute_value)
@@ -17,3 +23,14 @@
 			if d.abbr in abbrs:
 				frappe.throw(_("{0} must appear only once").format(d.abbr))
 			abbrs.append(d.abbr)
+			
+	def validate_attribute_values(self):
+		attribute_values = []
+		for d in self.item_attribute_values:
+			attribute_values.append(d.attribute_value)
+		
+		variant_attributes = frappe.db.sql("select DISTINCT attribute_value from `tabVariant Attribute` where attribute=%s", self.name)
+		if variant_attributes:
+			for d in variant_attributes:
+				if d[0] not in attribute_values:
+					frappe.throw(_("Attribute Value {0} cannot be removed from {1} as it has Variants.").format(d[0], self.name))
\ No newline at end of file