From 1faaf71dfc11c9b834532632695799800fcc1264 Mon Sep 17 00:00:00 2001 From: Neil Trini Lasrado Date: Fri, 3 Jul 2015 12:22:04 +0530 Subject: [PATCH] Auto-Capitalize Item Attribute Abbreation, Prevent attribute to be deleated if Variant exists --- .../doctype/item_attribute/item_attribute.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.py b/erpnext/stock/doctype/item_attribute/item_attribute.py index d7c33a5394..73fefe4228 100644 --- a/erpnext/stock/doctype/item_attribute/item_attribute.py +++ b/erpnext/stock/doctype/item_attribute/item_attribute.py @@ -8,8 +8,14 @@ from frappe import _ 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 @@ class ItemAttribute(Document): 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