fix: Reapply pricing rule on qty change
This commit is contained in:
parent
f54838ab56
commit
b741ae143c
@ -256,7 +256,7 @@ def apply_pricing_rule(args, doc=None):
|
|||||||
for item in item_list:
|
for item in item_list:
|
||||||
args_copy = copy.deepcopy(args)
|
args_copy = copy.deepcopy(args)
|
||||||
args_copy.update(item)
|
args_copy.update(item)
|
||||||
data = get_pricing_rule_for_item(args_copy, item.get("price_list_rate"), doc=doc)
|
data = get_pricing_rule_for_item(args_copy, doc=doc)
|
||||||
out.append(data)
|
out.append(data)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -293,7 +293,7 @@ def update_pricing_rule_uom(pricing_rule, args):
|
|||||||
pricing_rule.uom = row.uom
|
pricing_rule.uom = row.uom
|
||||||
|
|
||||||
|
|
||||||
def get_pricing_rule_for_item(args, price_list_rate=0, doc=None, for_validate=False):
|
def get_pricing_rule_for_item(args, doc=None, for_validate=False):
|
||||||
from erpnext.accounts.doctype.pricing_rule.utils import (
|
from erpnext.accounts.doctype.pricing_rule.utils import (
|
||||||
get_applied_pricing_rules,
|
get_applied_pricing_rules,
|
||||||
get_pricing_rule_items,
|
get_pricing_rule_items,
|
||||||
|
@ -674,7 +674,7 @@ def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
|
|||||||
item_details.free_item_data.append(free_item_data_args)
|
item_details.free_item_data.append(free_item_data_args)
|
||||||
|
|
||||||
|
|
||||||
def apply_pricing_rule_for_free_items(doc, pricing_rule_args, set_missing_values=False):
|
def apply_pricing_rule_for_free_items(doc, pricing_rule_args):
|
||||||
if 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)
|
items = tuple((d.item_code, d.pricing_rules) for d in doc.items if d.is_free_item)
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ class AccountsController(TransactionBase):
|
|||||||
|
|
||||||
validate_einvoice_fields(self)
|
validate_einvoice_fields(self)
|
||||||
|
|
||||||
if self.doctype != "Material Request":
|
if self.doctype != "Material Request" and not self.ignore_pricing_rule:
|
||||||
apply_pricing_rule_on_transaction(self)
|
apply_pricing_rule_on_transaction(self)
|
||||||
|
|
||||||
def before_cancel(self):
|
def before_cancel(self):
|
||||||
|
@ -1130,10 +1130,13 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
|
|||||||
|
|
||||||
qty(doc, cdt, cdn) {
|
qty(doc, cdt, cdn) {
|
||||||
let item = frappe.get_doc(cdt, cdn);
|
let item = frappe.get_doc(cdt, cdn);
|
||||||
item.pricing_rules = ''
|
// item.pricing_rules = ''
|
||||||
this.conversion_factor(doc, cdt, cdn, true);
|
frappe.run_serially([
|
||||||
this.calculate_stock_uom_rate(doc, cdt, cdn);
|
() => this.remove_pricing_rule(item),
|
||||||
this.apply_pricing_rule(item, true);
|
() => this.conversion_factor(doc, cdt, cdn, true),
|
||||||
|
() => this.calculate_stock_uom_rate(doc, cdt, cdn),
|
||||||
|
() => this.apply_pricing_rule(item, true)
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
calculate_stock_uom_rate(doc, cdt, cdn) {
|
calculate_stock_uom_rate(doc, cdt, cdn) {
|
||||||
|
@ -113,7 +113,7 @@ def get_item_details(args, doc=None, for_validate=False, overwrite_warehouse=Tru
|
|||||||
if args.get(key) is None:
|
if args.get(key) is None:
|
||||||
args[key] = value
|
args[key] = value
|
||||||
|
|
||||||
data = get_pricing_rule_for_item(args, out.price_list_rate, doc, for_validate=for_validate)
|
data = get_pricing_rule_for_item(args, doc, for_validate=for_validate)
|
||||||
|
|
||||||
out.update(data)
|
out.update(data)
|
||||||
|
|
||||||
@ -1305,7 +1305,7 @@ def apply_price_list_on_item(args):
|
|||||||
item_doc = frappe.db.get_value("Item", args.item_code, ["name", "variant_of"], as_dict=1)
|
item_doc = frappe.db.get_value("Item", args.item_code, ["name", "variant_of"], as_dict=1)
|
||||||
item_details = get_price_list_rate(args, item_doc)
|
item_details = get_price_list_rate(args, item_doc)
|
||||||
|
|
||||||
item_details.update(get_pricing_rule_for_item(args, item_details.price_list_rate))
|
item_details.update(get_pricing_rule_for_item(args))
|
||||||
|
|
||||||
return item_details
|
return item_details
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user