fix: condition syntax validation readded, fetch item details if condition not met ignoring rule
This commit is contained in:
parent
487aa30aef
commit
a25760046f
@ -32,6 +32,7 @@ class PricingRule(Document):
|
||||
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
|
||||
|
||||
@ -144,13 +145,13 @@ class PricingRule(Document):
|
||||
|
||||
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)
|
||||
elif pricing_rule.condition:
|
||||
frappe.throw(_("Invalid condition in Pricing Rule - {0}").format(pricing_rule.name), frappe.ValidationError)
|
||||
elif doc:
|
||||
try:
|
||||
doc = doc.as_dict()
|
||||
return frappe.safe_eval(pricing_rule.condition, None, doc)
|
||||
return frappe.safe_eval(pricing_rule.condition, None, doc.as_dict())
|
||||
except Exception as e:
|
||||
frappe.throw(" Pricing Rule - " + pricing_rule.name + " - 'Condition' field error:<br>" + str(e).capitalize() )
|
||||
frappe.msgprint(_("Pricing Rule - " + pricing_rule.name + " - <b>condition</b> field error:<br>" + \
|
||||
str(e).capitalize() + "<br><br>Ignoring Pricing Rule"), indicator="orange", title=_("Warning"))
|
||||
return False
|
||||
return True
|
||||
#--------------------------------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user