diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
index e3d79f1..003c6e6 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 @@
 		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 @@
 		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 843f27e..f9c7526 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -7,6 +7,8 @@
 from frappe.utils import flt, cint, add_days
 import json
 
+class MultiplePricingRuleConflict(frappe.ValidationError): pass
+
 @frappe.whitelist()
 def get_item_details(args):
 	"""
@@ -246,18 +248,24 @@
 	args_dict.update(out)
 	all_pricing_rules = get_pricing_rules(args_dict)
 
+	rule_for_price = False
 	for rule_for in ["price", "discount_percentage"]:
 		pricing_rules = filter(lambda x: x[rule_for] > 0.0, all_pricing_rules)
-		pricing_rules = filter_pricing_rules(args_dict, pricing_rules, rule_for)
-		if pricing_rules:
+		if rule_for_price:
+			pricing_rules = filter(lambda x: not x["for_price_list"], pricing_rules)
+
+		pricing_rule = filter_pricing_rules(args_dict, pricing_rules)
+
+		if pricing_rule:
 			if rule_for == "discount_percentage":
-				out["discount_percentage"] = pricing_rules[-1]["discount_percentage"]
-				out["pricing_rule_for_discount"] = pricing_rules[-1]["name"]
+				out["discount_percentage"] = pricing_rule["discount_percentage"]
+				out["pricing_rule_for_discount"] = pricing_rule["name"]
 			else:
-				out["base_price_list_rate"] = pricing_rules[0]["price"]
-				out["price_list_rate"] = pricing_rules[0]["price"] * \
+				out["base_price_list_rate"] = pricing_rule["price"]
+				out["price_list_rate"] = pricing_rule["price"] * \
 					flt(args_dict.plc_conversion_rate) / flt(args_dict.conversion_rate)
-				out["pricing_rule_for_price"] = pricing_rules[-1]["name"]
+				out["pricing_rule_for_price"] = pricing_rule["name"]
+				rule_for_price = True
 
 def get_pricing_rules(args_dict):
 	def _get_tree_conditions(doctype, allow_blank=True):
@@ -301,7 +309,7 @@
 			item_group_condition=_get_tree_conditions("Item Group", False), conditions=conditions),
 			args_dict, as_dict=1)
 
-def filter_pricing_rules(args_dict, pricing_rules, price_or_discount):
+def filter_pricing_rules(args_dict, pricing_rules):
 	# filter for qty
 	if pricing_rules and args_dict.get("qty"):
 		pricing_rules = filter(lambda x: (args_dict.qty>=flt(x.min_qty)
@@ -325,10 +333,12 @@
 					pricing_rules = apply_internal_priority(pricing_rules, field_set, args_dict)
 					break
 
-		if len(pricing_rules) > 1:
-			pricing_rules = sorted(pricing_rules, key=lambda x: x[price_or_discount])
-
-	return pricing_rules
+	if len(pricing_rules) > 1:
+		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])), MultiplePricingRuleConflict)
+	elif pricing_rules:
+		return pricing_rules[0]
 
 def if_all_rules_same(pricing_rules, fields):
 	all_rules_same = True
