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();
+		}
 	}
 });