fix(pricing rule): free item duplication (#33746)
* fix(pricing rule): free item duplication * chore: linting issues
This commit is contained in:
parent
597ef0a498
commit
1e607cd4c7
@ -687,11 +687,21 @@ def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
|
||||
|
||||
def apply_pricing_rule_for_free_items(doc, pricing_rule_args):
|
||||
if pricing_rule_args:
|
||||
items = tuple((d.item_code, d.pricing_rules) for d in doc.items if d.is_free_item)
|
||||
args = {(d["item_code"], d["pricing_rules"]): d for d in pricing_rule_args}
|
||||
|
||||
for args in pricing_rule_args:
|
||||
if not items or (args.get("item_code"), args.get("pricing_rules")) not in items:
|
||||
doc.append("items", args)
|
||||
for item in doc.items:
|
||||
if not item.is_free_item:
|
||||
continue
|
||||
|
||||
free_item_data = args.get((item.item_code, item.pricing_rules))
|
||||
if free_item_data:
|
||||
free_item_data.pop("item_name")
|
||||
free_item_data.pop("description")
|
||||
item.update(free_item_data)
|
||||
args.pop((item.item_code, item.pricing_rules))
|
||||
|
||||
for free_item in args.values():
|
||||
doc.append("items", free_item)
|
||||
|
||||
|
||||
def get_pricing_rule_items(pr_doc, other_items=False) -> list:
|
||||
|
@ -1473,6 +1473,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
||||
"parenttype": d.parenttype,
|
||||
"parent": d.parent,
|
||||
"pricing_rules": d.pricing_rules,
|
||||
"is_free_item": d.is_free_item,
|
||||
"warehouse": d.warehouse,
|
||||
"serial_no": d.serial_no,
|
||||
"batch_no": d.batch_no,
|
||||
|
Loading…
Reference in New Issue
Block a user