Merge pull request #4524 from nabinhait/jv_fix_9

[fix] Set debit/credit in company currency
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 479eaaf..dc24522 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -347,6 +347,7 @@
 				callback: function(r) {
 					if(r.message) {
 						$.extend(d, r.message);
+						erpnext.journal_entry.set_debit_credit_in_company_currency(frm, dt, dn);
 						refresh_field('accounts');
 					}
 				}
@@ -355,11 +356,11 @@
 	},
 
 	debit_in_account_currency: function(frm, cdt, cdn) {
-		erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn);
+		erpnext.journal_entry.set_exchange_rate(frm, cdt, cdn);
 	},
 
 	credit_in_account_currency: function(frm, cdt, cdn) {
-		erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn);
+		erpnext.journal_entry.set_exchange_rate(frm, cdt, cdn);
 	},
 
 	debit: function(frm, dt, dn) {
@@ -368,6 +369,17 @@
 
 	credit: function(frm, dt, dn) {
 		cur_frm.cscript.update_totals(frm.doc);
+	},
+	
+	exchange_rate: function(frm, cdt, cdn) {
+		var company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
+		var row = locals[cdt][cdn];
+
+		if(row.account_currency == company_currency || !frm.doc.multi_currency) {
+			frappe.model.set_value(cdt, cdn, "exchange_rate", 1);
+		}
+		
+		erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn);
 	}
 })
 
@@ -395,8 +407,6 @@
 	},
 
 	set_debit_credit_in_company_currency: function(frm, cdt, cdn) {
-		erpnext.journal_entry.set_exchange_rate(frm, cdt, cdn);
-
 		var row = locals[cdt][cdn];
 
 		frappe.model.set_value(cdt, cdn, "debit",
@@ -413,7 +423,8 @@
 		var row = locals[cdt][cdn];
 
 		if(row.account_currency == company_currency || !frm.doc.multi_currency) {
-			frappe.model.set_value(cdt, cdn, "exchange_rate", 1);
+			row.exchange_rate = 1;
+			erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn);
 		} else if (!row.exchange_rate || row.exchange_rate == 1 || row.account_type == "Bank") {
 			frappe.call({
 				method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_exchange_rate",
@@ -429,11 +440,15 @@
 				},
 				callback: function(r) {
 					if(r.message) {
-						frappe.model.set_value(cdt, cdn, "exchange_rate", r.message);
+						row.exchange_rate = r.message;
+						erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn);
 					}
 				}
 			})
+		} else {
+			erpnext.journal_entry.set_debit_credit_in_company_currency(frm, cdt, cdn);
 		}
+		refresh_field("exchange_rate", cdn, "accounts");
 	},
 
 	quick_entry: function(frm) {