fix(hot): Pricing Rule encoding fixed
This commit is contained in:
parent
f6b4eb27ab
commit
ff5d19609f
@ -1,5 +1,4 @@
|
|||||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||||
# MIT License. See license.txt
|
|
||||||
|
|
||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
@ -9,6 +8,8 @@ import json
|
|||||||
import copy
|
import copy
|
||||||
from frappe import throw, _
|
from frappe import throw, _
|
||||||
from frappe.utils import flt, cint, getdate
|
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
|
from frappe.model.document import Document
|
||||||
|
|
||||||
@ -207,9 +208,6 @@ def get_serial_no_for_item(args):
|
|||||||
return item_details
|
return item_details
|
||||||
|
|
||||||
def get_pricing_rule_for_item(args, price_list_rate=0, doc=None, for_validate=False):
|
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):
|
if isinstance(doc, string_types):
|
||||||
doc = json.loads(doc)
|
doc = json.loads(doc)
|
||||||
|
|
||||||
@ -237,7 +235,7 @@ def get_pricing_rule_for_item(args, price_list_rate=0, doc=None, for_validate=Fa
|
|||||||
|
|
||||||
update_args_for_pricing_rule(args)
|
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 for_validate and args.get("pricing_rules") else get_pricing_rules(args, doc))
|
||||||
|
|
||||||
if pricing_rules:
|
if pricing_rules:
|
||||||
@ -365,8 +363,7 @@ def set_discount_amount(rate, item_details):
|
|||||||
item_details.rate = rate
|
item_details.rate = rate
|
||||||
|
|
||||||
def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None):
|
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 get_applied_pricing_rules(pricing_rules):
|
||||||
for d in json.loads(pricing_rules):
|
|
||||||
if not d or not frappe.db.exists("Pricing Rule", d): continue
|
if not d or not frappe.db.exists("Pricing Rule", d): continue
|
||||||
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
|
pricing_rule = frappe.get_cached_doc('Pricing Rule', d)
|
||||||
|
|
||||||
|
@ -447,9 +447,14 @@ def apply_pricing_rule_on_transaction(doc):
|
|||||||
apply_pricing_rule_for_free_items(doc, item_details.free_item_data)
|
apply_pricing_rule_for_free_items(doc, item_details.free_item_data)
|
||||||
doc.set_missing_values()
|
doc.set_missing_values()
|
||||||
|
|
||||||
def get_applied_pricing_rules(item_row):
|
def get_applied_pricing_rules(pricing_rules):
|
||||||
return (json.loads(item_row.get("pricing_rules"))
|
if pricing_rules:
|
||||||
if item_row.get("pricing_rules") else [])
|
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):
|
def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
|
||||||
free_item = pricing_rule.free_item
|
free_item = pricing_rule.free_item
|
||||||
|
@ -325,7 +325,7 @@ class AccountsController(TransactionBase):
|
|||||||
apply_pricing_rule_for_free_items(self, pricing_rule_args.get('free_item_data'))
|
apply_pricing_rule_for_free_items(self, pricing_rule_args.get('free_item_data'))
|
||||||
|
|
||||||
elif pricing_rule_args.get("validate_applied_rule"):
|
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)
|
pricing_rule_doc = frappe.get_cached_doc("Pricing Rule", pricing_rule)
|
||||||
for field in ['discount_percentage', 'discount_amount', 'rate']:
|
for field in ['discount_percentage', 'discount_amount', 'rate']:
|
||||||
if item.get(field) < pricing_rule_doc.get(field):
|
if item.get(field) < pricing_rule_doc.get(field):
|
||||||
|
Loading…
Reference in New Issue
Block a user