On change of item rate, set margin amount on price list rate, instead of margin percentage (#8988)
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 44bf21d..2d0d83b 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -15,10 +15,10 @@
// if rate is greater than price_list_rate, set margin
// or set discount
item.discount_percentage = 0;
- item.margin_type = 'Percentage';
- item.margin_rate_or_amount = flt(Math.abs(1 - item.rate / item.price_list_rate) * 100.0,
- precision("discount_percentage", item));
- item.rate_with_margin = item.rate;
+ item.margin_type = 'Amount';
+ item.margin_rate_or_amount = flt(item.rate - item.price_list_rate,
+ precision("margin_rate_or_amount", item));
+ item.rate_with_margin = item.rate;
} else {
item.discount_percentage = flt((1 - item.rate / item.price_list_rate) * 100.0,
precision("discount_percentage", item));
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index 7154343..1fcf334 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -348,9 +348,13 @@
margin_type: function(doc, cdt, cdn){
// calculate the revised total margin and rate on margin type changes
item = locals[cdt][cdn];
- this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
- this.calculate_taxes_and_totals();
- cur_frm.refresh_fields();
+ if(!item.margin_type) {
+ frappe.model.set_value(cdt, cdn, "margin_rate_or_amount", 0);
+ } else {
+ this.apply_pricing_rule_on_item(item, doc,cdt, cdn)
+ this.calculate_taxes_and_totals();
+ cur_frm.refresh_fields();
+ }
}
});