diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js index ed8f2d79607587ee82bb2da96f5524db466fb060..81b3cd421e1ebeae69b6acc8f02273c9b08db768 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.js +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js @@ -621,6 +621,8 @@ frappe.ui.form.on("Payment Entry", { paid_from: function (frm) { if (frm.set_party_account_based_on_party) return; + frm.events.set_company_bank_account(frm); + frm.events.set_account_currency_and_balance( frm, frm.doc.paid_from, @@ -641,6 +643,8 @@ frappe.ui.form.on("Payment Entry", { paid_to: function (frm) { if (frm.set_party_account_based_on_party) return; + frm.events.set_company_bank_account(frm); + frm.events.set_account_currency_and_balance( frm, frm.doc.paid_to, @@ -1366,6 +1370,8 @@ frappe.ui.form.on("Payment Entry", { }, bank_account: function (frm) { + if (frm.set_company_bank_account_based_on_coa) return; + const field = frm.doc.payment_type == "Pay" ? "paid_from" : "paid_to"; if (frm.doc.bank_account && ["Pay", "Receive"].includes(frm.doc.payment_type)) { frappe.call({ @@ -1404,6 +1410,34 @@ frappe.ui.form.on("Payment Entry", { } }, + set_company_bank_account: function (frm) { + if (!["Pay", "Receive"].includes(frm.doc.payment_type)) return; + + const field = frm.doc.payment_type == "Pay" ? "paid_from" : "paid_to"; + + if (!frm.doc.company || !frm.doc[field]) return; + + frm.set_company_bank_account_based_on_coa = true; + + frappe.call({ + method: "frappe.client.get_value", + args: { + doctype: "Bank Account", + filters: { + company: frm.doc.company, + account: frm.doc[field], + disabled: 0, + }, + fieldname: ["name"], + }, + callback: async function (r) { + if (r.message) await frm.set_value("bank_account", r.message.name); + + frm.set_company_bank_account_based_on_coa = false; + }, + }); + }, + sales_taxes_and_charges_template: function (frm) { frm.trigger("fetch_taxes_from_template"); },