From 7c8d13c51adc9be25264cfbba96321ef655970ee Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:02:12 +0530 Subject: [PATCH] fix: set currency on change of company considering customer default currency (backport #42405) (#42547) fix: set currency on change of company considering customer default currency (#42405) (cherry picked from commit 4986f28a894295eaf3fce3af706640f09248af64) # Conflicts: # erpnext/public/js/controllers/transaction.js Co-authored-by: Nabin Hait --- erpnext/public/js/controllers/transaction.js | 68 +++++++++++++++++++- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 4615039fbb5..c028c256df3 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -826,6 +826,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe var me = this; var set_pricing = function() { if(me.frm.doc.company && me.frm.fields_dict.currency) { +<<<<<<< HEAD var company_currency = me.get_company_currency(); var company_doc = frappe.get_doc(":Company", me.frm.doc.company); @@ -858,15 +859,78 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe me.frm.set_value("tc_name", company_doc.default_buying_terms); } } +======= +>>>>>>> 4986f28a89 (fix: set currency on change of company considering customer default currency (#42405)) frappe.run_serially([ - () => me.frm.script_manager.trigger("currency"), + () => get_party_currency(), () => me.update_item_tax_map(), () => me.apply_default_taxes(), - () => me.apply_pricing_rule() + () => me.apply_pricing_rule(), + () => set_terms(), + () => set_letter_head(), ]); } } + var get_party_currency = function() { + var party_type = frappe.meta.has_field(me.frm.doc.doctype, "customer") ? "Customer" : "Supplier"; + var party_name = me.frm.doc[party_type.toLowerCase()]; + if (party_name) { + frappe.call({ + method: "frappe.client.get_value", + args: { + doctype: party_type, + filters: { name: party_name }, + fieldname: "default_currency", + }, + callback: function (r) { + if (r.message) { + set_currency(r.message.default_currency); + } + } + }) + } else { + set_currency(); + } + } + + var set_currency = function(party_default_currency) { + var company_currency = me.get_company_currency(); + var currency = party_default_currency || company_currency; + if (me.frm.doc.currency != currency) { + me.frm.set_value("currency", currency); + } + + if (me.frm.doc.currency == company_currency) { + me.frm.set_value("conversion_rate", 1.0); + } + if (me.frm.doc.price_list_currency == company_currency) { + me.frm.set_value('plc_conversion_rate', 1.0); + } + + me.frm.script_manager.trigger("currency"); + } + + var set_terms = function() { + if (frappe.meta.has_field(me.frm.doc.doctype, "tc_name") && !me.frm.doc.tc_name) { + var company_doc = frappe.get_doc(":Company", me.frm.doc.company); + var selling_doctypes = ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"]; + var company_terms_fieldname = selling_doctypes.includes(me.frm.doc.doctype) ? "default_selling_terms" : "default_buying_terms"; + if (company_doc && company_doc[company_terms_fieldname]) { + me.frm.set_value("tc_name", company_doc[company_terms_fieldname]); + } + } + } + + var set_letter_head = function() { + if(me.frm.fields_dict.letter_head) { + var company_doc = frappe.get_doc(":Company", me.frm.doc.company); + if (company_doc && company_doc.default_letter_head) { + me.frm.set_value("letter_head", company_doc.default_letter_head); + } + } + } + var set_party_account = function(set_pricing) { if (["Sales Invoice", "Purchase Invoice"].includes(me.frm.doc.doctype)) { if(me.frm.doc.doctype=="Sales Invoice") {