// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt // get tax rate cur_frm.cscript.account_head = function(doc, cdt, cdn) { var d = locals[cdt][cdn]; if(!d.charge_type && d.account_head){ msgprint("Please select Charge Type first"); frappe.model.set_value(cdt, cdn, "account_head", ""); } else if(d.account_head && d.charge_type!=="Actual") { frappe.call({ type:"GET", method: "erpnext.controllers.accounts_controller.get_tax_rate", args: {"account_head":d.account_head}, callback: function(r) { frappe.model.set_value(cdt, cdn, "rate", r.message || 0); } }) } } var validate_taxes_and_charges = function(cdt, cdn) { var d = locals[cdt][cdn]; if(!d.charge_type && (d.row_id || d.rate || d.tax_amount)) { msgprint(__("Please select Charge Type first")); d.row_id = ""; d.rate = d.tax_amount = 0.0; } else if((d.charge_type == 'Actual' || d.charge_type == 'On Net Total') && d.row_id) { msgprint(__("Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'")); d.row_id = ""; } else if((d.charge_type == 'On Previous Row Amount' || d.charge_type == 'On Previous Row Total') && d.row_id) { if (d.idx == 1) { msgprint(__("Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row")); d.charge_type = ''; } else if (d.row_i && d.row_id >= d.idx) { msgprint(__("Cannot refer row number greater than or equal to current row number for this Charge type")); d.row_id = ""; } } validated = false; refresh_field('row_id', d.name, 'taxes'); } frappe.ui.form.on(cur_frm.cscript.tax_table, "row_id", function(frm, cdt, cdn) { validate_taxes_and_charges(cdt, cdn); }); frappe.ui.form.on(cur_frm.cscript.tax_table, "rate", function(frm, cdt, cdn) { validate_taxes_and_charges(cdt, cdn); }); frappe.ui.form.on(cur_frm.cscript.tax_table, "tax_amount", function(frm, cdt, cdn) { validate_taxes_and_charges(cdt, cdn); }); frappe.ui.form.on(cur_frm.cscript.tax_table, "charge_type", function(frm, cdt, cdn) { validate_taxes_and_charges(cdt, cdn); }); cur_frm.set_query("account_head", "taxes", function(doc) { if(cur_frm.cscript.tax_table == "Sales Taxes and Charges") { var account_type = ["Tax", "Chargeable", "Expense Account"]; } else { var account_type = ["Tax", "Chargeable", "Income Account"]; } return { query: "erpnext.controllers.queries.tax_account_query", filters: { "account_type": account_type, "company": doc.company } } }); cur_frm.set_query("cost_center", "taxes", function(doc) { return { filters: { 'company': doc.company, 'group_or_ledger': "Ledger" } } }); // For customizing print cur_frm.pformat.print_total = function(doc) { return ''; } cur_frm.pformat.discount_amount = function(doc) { return ''; } cur_frm.pformat.grand_total = function(doc) { return ''; } cur_frm.pformat.rounded_total = function(doc) { return ''; } cur_frm.pformat.in_words = function(doc) { return ''; } cur_frm.pformat.taxes= function(doc){ //function to make row of table var make_row = function(title, val, bold, is_negative) { var bstart = ''; var bend = ''; return '' + (bold?bstart:'') + title + (bold?bend:'') + '' + '' + (is_negative ? '- ' : '') + format_currency(val, doc.currency) + ''; } function print_hide(fieldname) { var doc_field = frappe.meta.get_docfield(doc.doctype, fieldname, doc.name); return doc_field.print_hide; } out =''; if (!doc.print_without_amount) { var cl = doc.taxes || []; // outer table var out='
'; // main table out +=''; if(!print_hide('print_total')) { out += make_row('Net Total', doc.print_total, 1); } // Discount Amount on net total if(!print_hide('discount_amount') && doc.apply_discount_on == "Net Total" && doc.discount_amount) out += make_row('Discount Amount', doc.discount_amount, 0, 1); // add rows if(cl.length){ for(var i=0;i'; } out += '
'; } return out; }