fix(hot): Pricing Rule encoding fixed
diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
index cff7d5b..a2e35bc 100644
--- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
+++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py
@@ -1,5 +1,4 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# MIT License. See license.txt
# For license information, please see license.txt
@@ -9,6 +8,8 @@
import copy
from frappe import throw, _
from frappe.utils import flt, cint, getdate
+from erpnext.accounts.doctype.pricing_rule.utils import (get_pricing_rules,
+ get_applied_pricing_rules, get_pricing_rule_items, get_product_discount_rule)
from frappe.model.document import Document
@@ -207,9 +208,6 @@
return item_details
def get_pricing_rule_for_item(args, price_list_rate=0, doc=None, for_validate=False):
- from erpnext.accounts.doctype.pricing_rule.utils import (get_pricing_rules,
- get_applied_pricing_rules, get_pricing_rule_items, get_product_discount_rule)
-
if isinstance(doc, string_types):
doc = json.loads(doc)
@@ -237,7 +235,7 @@
update_args_for_pricing_rule(args)
- pricing_rules = (get_applied_pricing_rules(args)
+ pricing_rules = (get_applied_pricing_rules(args.get('pricing_rules'))
if for_validate and args.get("pricing_rules") else get_pricing_rules(args, doc))
if pricing_rules:
@@ -365,8 +363,7 @@
item_details.rate = rate
def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None):
- from erpnext.accounts.doctype.pricing_rule.utils import get_pricing_rule_items
- for d in json.loads(pricing_rules):
+ for d in get_applied_pricing_rules(pricing_rules):
if not d or not frappe.db.exists("Pricing Rule", d): continue
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
diff --git a/erpnext/accounts/doctype/pricing_rule/utils.py b/erpnext/accounts/doctype/pricing_rule/utils.py
index 3fd316f..53b0cf7b 100644
--- a/erpnext/accounts/doctype/pricing_rule/utils.py
+++ b/erpnext/accounts/doctype/pricing_rule/utils.py
@@ -447,9 +447,14 @@
apply_pricing_rule_for_free_items(doc, item_details.free_item_data)
doc.set_missing_values()
-def get_applied_pricing_rules(item_row):
- return (json.loads(item_row.get("pricing_rules"))
- if item_row.get("pricing_rules") else [])
+def get_applied_pricing_rules(pricing_rules):
+ if pricing_rules:
+ if pricing_rules.startswith('['):
+ return json.loads(pricing_rules)
+ else:
+ return pricing_rules.split(',')
+
+ return []
def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
free_item = pricing_rule.free_item
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 3091193..d61e44b 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -325,7 +325,7 @@
apply_pricing_rule_for_free_items(self, pricing_rule_args.get('free_item_data'))
elif pricing_rule_args.get("validate_applied_rule"):
- for pricing_rule in get_applied_pricing_rules(item):
+ for pricing_rule in get_applied_pricing_rules(item.get('pricing_rules')):
pricing_rule_doc = frappe.get_cached_doc("Pricing Rule", pricing_rule)
for field in ['discount_percentage', 'discount_amount', 'rate']:
if item.get(field) < pricing_rule_doc.get(field):