fix: test cases for pricing rule
diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
index af8d21d..f28cee7 100644
--- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py
@@ -56,6 +56,7 @@
self.assertEqual(details.get("discount_percentage"), 10)
prule = frappe.get_doc(test_record.copy())
+ prule.priority = 1
prule.applicable_for = "Customer"
prule.title = "_Test Pricing Rule for Customer"
self.assertRaises(MandatoryError, prule.insert)
@@ -261,6 +262,7 @@
"rate_or_discount": "Discount Percentage",
"rate": 0,
"discount_percentage": 17.5,
+ "priority": 1,
"company": "_Test Company"
}).insert()
@@ -557,6 +559,7 @@
"rate": args.rate or 0.0,
"margin_rate_or_amount": args.margin_rate_or_amount or 0.0,
"condition": args.condition or '',
+ "priority": 1,
"apply_multiple_pricing_rules": args.apply_multiple_pricing_rules or 0
})
diff --git a/erpnext/accounts/doctype/pricing_rule/utils.py b/erpnext/accounts/doctype/pricing_rule/utils.py
index bd9d0b3..d163335 100644
--- a/erpnext/accounts/doctype/pricing_rule/utils.py
+++ b/erpnext/accounts/doctype/pricing_rule/utils.py
@@ -59,18 +59,17 @@
pricing_rules_list = []
pricing_rule_dict = {}
- priority = []
for pricing_rule in pricing_rules:
pricing_rule = filter_pricing_rules(args, pricing_rule, doc)
if pricing_rule:
if not pricing_rule.get('priority'):
- pricing_rules_list.append(pricing_rule)
- else:
- priority.append(cint(pricing_rule.get('priority')))
+ pricing_rule['priority'] = 1
+
+ if pricing_rule.get('apply_multiple_pricing_rules'):
pricing_rule_dict.setdefault(cint(pricing_rule.get("priority")), []).append(pricing_rule)
- if priority:
- pricing_rules_list.extend(pricing_rule_dict.get(min(priority)))
+ for key in sorted(pricing_rule_dict):
+ pricing_rules_list.extend(pricing_rule_dict.get(key))
return pricing_rules_list or pricing_rules
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index 9f087e8..6c7eb92 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -624,8 +624,8 @@
for d in get_applied_pricing_rules(item.pricing_rules):
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
- if (pricing_rule.margin_rate_or_amount and pricing_rule.currency == self.doc.currency and
- pricing_rule.margin_type in ['Amount', 'Percentage']):
+ if pricing_rule.margin_rate_or_amount and ((pricing_rule.currency == self.doc.currency and
+ pricing_rule.margin_type in ['Amount', 'Percentage']) or pricing_rule.margin_type == 'Percentage'):
item.margin_type = pricing_rule.margin_type
item.margin_rate_or_amount = pricing_rule.margin_rate_or_amount
has_margin = True