feat: added option to enforce free item qty in pricing rule

(cherry picked from commit 19c01b1457)
This commit is contained in:
Mihir Kandoi
2025-02-05 18:48:52 +05:30
committed by Mergify
parent 617a24d61e
commit 8fb9228871
3 changed files with 12 additions and 2 deletions

View File

@@ -53,6 +53,7 @@
"column_break_42", "column_break_42",
"free_item_uom", "free_item_uom",
"round_free_qty", "round_free_qty",
"enforce_free_item_qty",
"is_recursive", "is_recursive",
"recurse_for", "recurse_for",
"apply_recursion_over", "apply_recursion_over",
@@ -643,12 +644,19 @@
"fieldname": "has_priority", "fieldname": "has_priority",
"fieldtype": "Check", "fieldtype": "Check",
"label": "Has Priority" "label": "Has Priority"
},
{
"default": "0",
"depends_on": "eval:doc.price_or_product_discount == 'Product'",
"fieldname": "enforce_free_item_qty",
"fieldtype": "Check",
"label": "Enforce Free Item Qty"
} }
], ],
"icon": "fa fa-gift", "icon": "fa fa-gift",
"idx": 1, "idx": 1,
"links": [], "links": [],
"modified": "2024-09-16 18:14:51.314765", "modified": "2025-02-05 18:05:03.886828",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Pricing Rule", "name": "Pricing Rule",

View File

@@ -60,6 +60,7 @@ class PricingRule(Document):
disable: DF.Check disable: DF.Check
discount_amount: DF.Currency discount_amount: DF.Currency
discount_percentage: DF.Float discount_percentage: DF.Float
enforce_free_item_qty: DF.Check
for_price_list: DF.Link | None for_price_list: DF.Link | None
free_item: DF.Link | None free_item: DF.Link | None
free_item_rate: DF.Currency free_item_rate: DF.Currency

View File

@@ -713,7 +713,8 @@ def apply_pricing_rule_for_free_items(doc, pricing_rule_args):
args.pop((item.item_code, item.pricing_rules)) args.pop((item.item_code, item.pricing_rules))
for free_item in args.values(): for free_item in args.values():
doc.append("items", free_item) if frappe.get_value("Pricing Rule", free_item["pricing_rules"], "enforce_free_item_qty"):
doc.append("items", free_item)
def get_pricing_rule_items(pr_doc, other_items=False) -> list: def get_pricing_rule_items(pr_doc, other_items=False) -> list: