fix: set currency on change of company considering customer default currency (#42405)

This commit is contained in:
Nabin Hait
2024-07-31 11:44:05 +05:30
committed by GitHub
parent 0e5e503b42
commit 4986f28a89

View File

@@ -826,11 +826,44 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
var me = this; var me = this;
var set_pricing = function() { var set_pricing = function() {
if(me.frm.doc.company && me.frm.fields_dict.currency) { if(me.frm.doc.company && me.frm.fields_dict.currency) {
var company_currency = me.get_company_currency(); frappe.run_serially([
var company_doc = frappe.get_doc(":Company", me.frm.doc.company); () => get_party_currency(),
() => me.update_item_tax_map(),
() => me.apply_default_taxes(),
() => me.apply_pricing_rule(),
() => set_terms(),
() => set_letter_head(),
]);
}
}
if (!me.frm.doc.currency) { var get_party_currency = function() {
me.frm.set_value("currency", company_currency); 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) { if (me.frm.doc.currency == company_currency) {
@@ -839,32 +872,28 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe
if (me.frm.doc.price_list_currency == company_currency) { if (me.frm.doc.price_list_currency == company_currency) {
me.frm.set_value('plc_conversion_rate', 1.0); me.frm.set_value('plc_conversion_rate', 1.0);
} }
if (company_doc){
if (company_doc.default_letter_head) { 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) { 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); me.frm.set_value("letter_head", company_doc.default_letter_head);
} }
} }
let selling_doctypes_for_tc = ["Sales Invoice", "Quotation", "Sales Order", "Delivery Note"];
if (company_doc.default_selling_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
selling_doctypes_for_tc.includes(me.frm.doc.doctype) && !me.frm.doc.tc_name) {
me.frm.set_value("tc_name", company_doc.default_selling_terms);
}
let buying_doctypes_for_tc = ["Request for Quotation", "Supplier Quotation", "Purchase Order",
"Material Request", "Purchase Receipt"];
// Purchase Invoice is excluded as per issue #3345
if (company_doc.default_buying_terms && frappe.meta.has_field(me.frm.doc.doctype, "tc_name") &&
buying_doctypes_for_tc.includes(me.frm.doc.doctype) && !me.frm.doc.tc_name) {
me.frm.set_value("tc_name", company_doc.default_buying_terms);
}
}
frappe.run_serially([
() => me.frm.script_manager.trigger("currency"),
() => me.update_item_tax_map(),
() => me.apply_default_taxes(),
() => me.apply_pricing_rule()
]);
}
} }
var set_party_account = function(set_pricing) { var set_party_account = function(set_pricing) {