mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-26 00:14:50 +00:00
Merge pull request #23137 from rmehta/pricing-rule-encoding
fix(hot): Pricing Rule encoding fixed
This commit is contained in:
@@ -9,6 +9,8 @@ from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_orde
|
|||||||
from erpnext.stock.get_item_details import get_item_details
|
from erpnext.stock.get_item_details import get_item_details
|
||||||
from frappe.test_runner import make_test_objects
|
from frappe.test_runner import make_test_objects
|
||||||
|
|
||||||
|
test_dependencies = ['Item']
|
||||||
|
|
||||||
def test_create_test_data():
|
def test_create_test_data():
|
||||||
frappe.set_user("Administrator")
|
frappe.set_user("Administrator")
|
||||||
# create test item
|
# create test item
|
||||||
@@ -95,7 +97,6 @@ def test_create_test_data():
|
|||||||
})
|
})
|
||||||
coupon_code.insert()
|
coupon_code.insert()
|
||||||
|
|
||||||
|
|
||||||
class TestCouponCode(unittest.TestCase):
|
class TestCouponCode(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
test_create_test_data()
|
test_create_test_data()
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import unittest
|
|||||||
from erpnext.stock.get_item_details import get_pos_profile
|
from erpnext.stock.get_item_details import get_pos_profile
|
||||||
from erpnext.accounts.doctype.pos_profile.pos_profile import get_child_nodes
|
from erpnext.accounts.doctype.pos_profile.pos_profile import get_child_nodes
|
||||||
|
|
||||||
|
test_dependencies = ['Item']
|
||||||
|
|
||||||
class TestPOSProfile(unittest.TestCase):
|
class TestPOSProfile(unittest.TestCase):
|
||||||
def test_pos_profile(self):
|
def test_pos_profile(self):
|
||||||
make_pos_profile()
|
make_pos_profile()
|
||||||
@@ -88,7 +90,7 @@ def make_pos_profile(**args):
|
|||||||
"write_off_account": args.write_off_account or "_Test Write Off - _TC",
|
"write_off_account": args.write_off_account or "_Test Write Off - _TC",
|
||||||
"write_off_cost_center": args.write_off_cost_center or "_Test Write Off Cost Center - _TC"
|
"write_off_cost_center": args.write_off_cost_center or "_Test Write Off Cost Center - _TC"
|
||||||
})
|
})
|
||||||
|
|
||||||
payments = [{
|
payments = [{
|
||||||
'mode_of_payment': 'Cash',
|
'mode_of_payment': 'Cash',
|
||||||
'default': 1
|
'default': 1
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -208,7 +207,7 @@ def get_serial_no_for_item(args):
|
|||||||
|
|
||||||
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,
|
from erpnext.accounts.doctype.pricing_rule.utils import (get_pricing_rules,
|
||||||
get_applied_pricing_rules, get_pricing_rule_items, get_product_discount_rule)
|
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 +236,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 +364,9 @@ 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
|
from erpnext.accounts.doctype.pricing_rule.utils import (get_applied_pricing_rules,
|
||||||
for d in json.loads(pricing_rules):
|
get_pricing_rule_items)
|
||||||
|
for d in get_applied_pricing_rules(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):
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import unittest
|
|||||||
import frappe
|
import frappe
|
||||||
from erpnext.healthcare.doctype.patient_appointment.test_patient_appointment import create_healthcare_docs, create_clinical_procedure_template
|
from erpnext.healthcare.doctype.patient_appointment.test_patient_appointment import create_healthcare_docs, create_clinical_procedure_template
|
||||||
|
|
||||||
|
test_dependencies = ['Item']
|
||||||
|
|
||||||
class TestClinicalProcedure(unittest.TestCase):
|
class TestClinicalProcedure(unittest.TestCase):
|
||||||
def test_procedure_template_item(self):
|
def test_procedure_template_item(self):
|
||||||
patient, medical_department, practitioner = create_healthcare_docs()
|
patient, medical_department, practitioner = create_healthcare_docs()
|
||||||
|
|||||||
Reference in New Issue
Block a user