Merge pull request #6024 from rohitwaghchaure/get_account_of_payment_mode_issue

[Fix] Get account of the mode of payment on sales invoice and pos profile
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index e2e8340..4578f30 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -1,5 +1,6 @@
 // Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
 // For license information, please see license.txt
+{% include "erpnext/public/js/controllers/accounts.js" %}
 
 frappe.ui.form.on('Payment Entry', {
 	onload: function(frm) {
@@ -257,22 +258,6 @@
 		}
 	},
 
-	mode_of_payment: function(frm) {
-		return  frappe.call({
-			method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
-			args: {
-				"mode_of_payment": frm.doc.mode_of_payment,
-				"company": frm.doc.company
-			},
-			callback: function(r, rt) {
-				if(r.message) {
-					var payment_account_field = frm.doc.payment_type == "Receive" ? "paid_to" : "paid_from";
-					frm.set_value(payment_account_field, r.message['account']);
-				}
-			}
-		});
-	},
-
 	paid_from: function(frm) {
 		if(frm.set_party_account_based_on_party) return;
 
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.js b/erpnext/accounts/doctype/pos_profile/pos_profile.js
index 99438a6..c1aa0c3 100755
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.js
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.js
@@ -1,6 +1,8 @@
 // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
 // License: GNU General Public License v3. See license.txt
 
+{% include "erpnext/public/js/controllers/accounts.js" %}
+
 frappe.ui.form.on("POS Profile", "onload", function(frm) {
 	frm.set_query("selling_price_list", function() {
 		return { filters: { selling: 1 } };
diff --git a/erpnext/public/js/controllers/accounts.js b/erpnext/public/js/controllers/accounts.js
index 202000f..37ce5de 100644
--- a/erpnext/public/js/controllers/accounts.js
+++ b/erpnext/public/js/controllers/accounts.js
@@ -55,6 +55,48 @@
 	}
 });
 
+frappe.ui.form.on('Sales Invoice Payment', {
+	mode_of_payment: function(frm, cdt, cdn) {
+		var d = locals[cdt][cdn];
+		get_payment_mode_account(frm, d.mode_of_payment, function(account){
+			frappe.model.set_value(cdt, cdn, 'account', account)
+		})
+	}
+})
+
+frappe.ui.form.on('Purchase Invoice', {
+	mode_of_payment: function(frm) {
+		get_payment_mode_account(frm, frm.doc.mode_of_payment, function(account){
+			frm.set_value('cash_bank_account', account);
+		})
+	}
+})
+
+frappe.ui.form.on('Payment Entry', {
+	mode_of_payment: function(frm) {
+		get_payment_mode_account(frm, frm.doc.mode_of_payment, function(account){
+			var payment_account_field = frm.doc.payment_type == "Receive" ? "paid_to" : "paid_from";
+			frm.set_value(payment_account_field, account);
+		})
+	}
+})
+
+get_payment_mode_account = function(frm, mode_of_payment, callback){
+	return  frappe.call({
+		method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.get_bank_cash_account",
+		args: {
+			"mode_of_payment": mode_of_payment,
+			"company": frm.doc.company
+		},
+		callback: function(r, rt) {
+			if(r.message) {
+				callback(r.message.account)
+			}
+		}
+	});
+}
+
+
 cur_frm.cscript.account_head = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	if(!d.charge_type && d.account_head){