diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py index e3d79f161e8..003c6e66b4d 100644 --- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py @@ -11,6 +11,8 @@ class TestPricingRule(unittest.TestCase): from erpnext.stock.get_item_details import get_item_details from frappe import MandatoryError + frappe.db.sql("delete from `tabPricing Rule`") + test_record = { "doctype": "Pricing Rule", "apply_on": "Item Code", @@ -69,8 +71,8 @@ class TestPricingRule(unittest.TestCase): self.assertEquals(details.get("discount_percentage"), 5) frappe.db.sql("update `tabPricing Rule` set priority=NULL where campaign='_Test Campaign'") - details = get_item_details(args) - self.assertEquals(details.get("discount_percentage"), 15) + from erpnext.stock.get_item_details import MultiplePricingRuleConflict + self.assertRaises (MultiplePricingRuleConflict, get_item_details, args) args.item_code = "_Test Item 2" details = get_item_details(args) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index ae2b3a216da..f9c7526a960 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -7,6 +7,8 @@ from frappe import _, throw from frappe.utils import flt, cint, add_days import json +class MultiplePricingRuleConflict(frappe.ValidationError): pass + @frappe.whitelist() def get_item_details(args): """ @@ -332,10 +334,9 @@ def filter_pricing_rules(args_dict, pricing_rules): break if len(pricing_rules) > 1: - # pricing_rules = sorted(pricing_rules, key=lambda x: x[price_or_discount]) frappe.throw(_("Multiple Price Rule exists with same criteria, please resolve \ conflict by assigning priority. Price Rules: {0}") - .format("\n".join([d.name for d in pricing_rules]))) + .format("\n".join([d.name for d in pricing_rules])), MultiplePricingRuleConflict) elif pricing_rules: return pricing_rules[0]