fix: Pass doc instead of args
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index d88ce22..98abadb 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -32,7 +32,6 @@
self.validate_max_discount()
self.validate_price_list_with_currency()
self.validate_dates()
- validate_condition(self)
if not self.margin_type: self.margin_rate_or_amount = 0.0
@@ -143,16 +142,17 @@
if self.valid_from and self.valid_upto and getdate(self.valid_from) > getdate(self.valid_upto):
frappe.throw(_("Valid from date must be less than valid upto date"))
-def validate_condition(doc, args=None):
- if doc.condition and ("=" in doc.condition) and re.match("""[\w\.:_]+\s*={1}\s*[\w\.@'"]+""", doc.condition):
- frappe.throw(_("Invalid condition in Pricing Rule: {0}").format(doc.name), frappe.ValidationError)
+def validate_condition(pricing_rule, doc=None):
+ if pricing_rule.condition and ("=" in pricing_rule.condition) and re.match("""[\w\.:_]+\s*={1}\s*[\w\.@'"]+""", pricing_rule.condition):
+ frappe.throw(_("Invalid condition in Pricing Rule: {0}").format(pricing_rule.name), frappe.ValidationError)
else:
try:
- return frappe.safe_eval(doc.condition, None, args) if bool(args) else True
+ doc = doc.as_dict()
+ return frappe.safe_eval(pricing_rule.condition, None, doc)
except Exception as e:
frappe.throw(doc.name + " Pricing Rule 'Condition' field error:<br>" + str(e).capitalize() )
return False
-
+ return True
#--------------------------------------------------------------------------------
@frappe.whitelist()
@@ -264,7 +264,7 @@
if pricing_rule.get('suggestion'): continue
- if not validate_condition(pricing_rule, args): continue
+ if not validate_condition(pricing_rule, doc): continue
item_details.validate_applied_rule = pricing_rule.get("validate_applied_rule", 0)
item_details.price_or_product_discount = pricing_rule.get("price_or_product_discount")