63 lines
2.0 KiB
JavaScript
63 lines
2.0 KiB
JavaScript
|
|
||
|
erpnext.landed_cost_taxes_and_charges = {
|
||
|
setup_triggers: function(doctype) {
|
||
|
frappe.ui.form.on(doctype, {
|
||
|
refresh: function(frm) {
|
||
|
let tax_field = frm.doc.doctype == 'Landed Cost Voucher' ? 'taxes' : 'additional_costs';
|
||
|
frm.set_query("expense_account", tax_field, function() {
|
||
|
return {
|
||
|
filters: {
|
||
|
"account_type": ['in', ["Tax", "Chargeable", "Income Account", "Expenses Included In Valuation", "Expenses Included In Asset Valuation"]],
|
||
|
"company": frm.doc.company
|
||
|
}
|
||
|
};
|
||
|
});
|
||
|
},
|
||
|
|
||
|
set_account_currency: function(frm, cdt, cdn) {
|
||
|
let row = locals[cdt][cdn];
|
||
|
if (row.expense_account) {
|
||
|
frappe.db.get_value('Account', row.expense_account, 'account_currency', function(value) {
|
||
|
frappe.model.set_value(cdt, cdn, "account_currency", value.account_currency);
|
||
|
frm.events.set_exchange_rate(frm, cdt, cdn);
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
|
||
|
set_exchange_rate: function(frm, cdt, cdn) {
|
||
|
let row = locals[cdt][cdn];
|
||
|
let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
|
||
|
|
||
|
if (row.account_currency == company_currency) {
|
||
|
row.exchange_rate = 1;
|
||
|
frm.set_df_property('taxes', 'hidden', 1, row.name, 'exchange_rate');
|
||
|
} else if (!row.exchange_rate || row.exchange_rate == 1) {
|
||
|
frm.set_df_property('taxes', 'hidden', 0, row.name, 'exchange_rate');
|
||
|
frappe.call({
|
||
|
method: "erpnext.accounts.doctype.journal_entry.journal_entry.get_exchange_rate",
|
||
|
args: {
|
||
|
posting_date: frm.doc.posting_date,
|
||
|
account: row.expense_account,
|
||
|
account_currency: row.account_currency,
|
||
|
company: frm.doc.company
|
||
|
},
|
||
|
callback: function(r) {
|
||
|
if (r.message) {
|
||
|
frappe.model.set_value(cdt, cdn, "exchange_rate", r.message);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
frm.refresh_field('taxes');
|
||
|
},
|
||
|
|
||
|
set_base_amount: function(frm, cdt, cdn) {
|
||
|
let row = locals[cdt][cdn];
|
||
|
frappe.model.set_value(cdt, cdn, "base_amount",
|
||
|
flt(flt(row.amount)*row.exchange_rate, precision("base_amount", row)));
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|