Pricing Rule
diff --git a/erpnext/public/js/transaction.js b/erpnext/public/js/transaction.js
index e12a30e..b336637 100644
--- a/erpnext/public/js/transaction.js
+++ b/erpnext/public/js/transaction.js
@@ -194,6 +194,7 @@
}
this.frm.script_manager.trigger("currency");
+ this.apply_pricing_rule()
}
},
@@ -225,7 +226,9 @@
this.frm.doc.plc_conversion_rate !== this.frm.doc.conversion_rate) {
this.frm.set_value("plc_conversion_rate", this.frm.doc.conversion_rate);
}
- if(flt(this.frm.doc.conversion_rate)>0.0) this.calculate_taxes_and_totals();
+ if(flt(this.frm.doc.conversion_rate)>0.0) {
+ this.apply_pricing_rule();
+ }
},
get_price_list_currency: function(buying_or_selling) {
@@ -278,12 +281,12 @@
}
if(this.frm.doc.price_list_currency === this.frm.doc.currency) {
this.frm.set_value("conversion_rate", this.frm.doc.plc_conversion_rate);
- this.calculate_taxes_and_totals();
+ this.apply_pricing_rule();
}
},
qty: function(doc, cdt, cdn) {
- this.calculate_taxes_and_totals();
+ this.apply_pricing_rule(frappe.get_doc(cdt, cdn));
},
// tax rate
@@ -326,6 +329,52 @@
this.calculate_taxes_and_totals();
},
+ apply_pricing_rule: function(item) {
+ var me = this;
+
+ var _apply_pricing_rule = function(item) {
+ return me.frm.call({
+ method: "erpnext.stock.get_item_details.apply_pricing_rule",
+ child: item,
+ args: {
+ args: {
+ item_code: item.item_code,
+ item_group: item.item_group,
+ brand: item.brand,
+ qty: item.qty,
+ customer: me.frm.doc.customer,
+ customer_group: me.frm.doc.customer_group,
+ territory: me.frm.doc.territory,
+ supplier: me.frm.doc.supplier,
+ supplier_type: me.frm.doc.supplier_type,
+ currency: me.frm.doc.currency,
+ conversion_rate: me.frm.doc.conversion_rate,
+ price_list: me.frm.doc.selling_price_list ||
+ me.frm.doc.buying_price_list,
+ plc_conversion_rate: me.frm.doc.plc_conversion_rate,
+ company: me.frm.doc.company,
+ transaction_date: me.frm.doc.transaction_date || me.frm.doc.posting_date,
+ campaign: me.frm.doc.campaign,
+ sales_partner: me.frm.doc.sales_partner
+ }
+ },
+ callback: function(r) {
+ if(!r.exc) {
+ me.frm.script_manager.trigger("price_list_rate", item.doctype, item.name);
+ }
+ }
+ });
+ }
+
+
+ if(item) _apply_pricing_rule(item);
+ else {
+ $.each(this.get_item_doclist(), function(n, item) {
+ _apply_pricing_rule(item);
+ });
+ }
+ },
+
included_in_print_rate: function(doc, cdt, cdn) {
var tax = frappe.get_doc(cdt, cdn);
try {
diff --git a/erpnext/public/js/utils/party.js b/erpnext/public/js/utils/party.js
index 31abbb3..9da0353 100644
--- a/erpnext/public/js/utils/party.js
+++ b/erpnext/public/js/utils/party.js
@@ -2,7 +2,7 @@
// License: GNU General Public License v3. See license.txt
frappe.provide("erpnext.utils");
-erpnext.utils.get_party_details = function(frm, method, args) {
+erpnext.utils.get_party_details = function(frm, method, args, callback) {
if(!method) {
method = "erpnext.accounts.party.get_party_details";
}
@@ -33,6 +33,7 @@
frm.updating_party_details = true;
frm.set_value(r.message);
frm.updating_party_details = false;
+ if(callback) callback()
}
}
});