diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js index fa0c255107..d12c039568 100644 --- a/erpnext/selling/doctype/sales_common/sales_common.js +++ b/erpnext/selling/doctype/sales_common/sales_common.js @@ -5,6 +5,10 @@ // cur_frm.cscript.other_fname - Other Charges fieldname // cur_frm.cscript.sales_team_fname - Sales Team fieldname +function roundNumber(num, dec) { + var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec); + return result; +} // ============== Load Default Taxes =================== cur_frm.cscript.load_taxes = function(doc, cdt, cdn) { @@ -153,7 +157,8 @@ cur_frm.cscript.basic_rate = function(doc, cdt, cdn) { var basic_rate = cur_frm.cscript.back_calc_basic_rate( doc, cur_frm.cscript.tname, fname, d, cur_frm.cscript.other_fname ); - if (d.basic_rate != basic_rate.toFixed(2)) { + // TODO: remove roundNumber for basic_rate comparison + if (d.basic_rate != roundNumber(basic_rate, 2)) { d.basic_rate = basic_rate; refresh_field('basic_rate', d.name, fname); msgprint("You cannot change Basic Rate* (Base Currency) when \ @@ -238,7 +243,7 @@ cur_frm.cscript.calc_doc_values = function(doc, cdt, cdn, tname, fname, other_fn var net_total_incl = 0 var cl = getchildren(tname, doc.name, fname); for(var i = 0; i1) { + net_total_incl *= flt(doc.conversion_rate); + } + doc.net_total = inclusive_rate ? flt(net_total_incl) : flt(net_total); - doc.other_charges_total = flt(flt(other_charges_total).toFixed(2)); - //doc.grand_total = flt(flt(net_total) + flt(other_charges_total)); - doc.grand_total = flt((flt(net_total) + flt(other_charges_total)).toFixed(2)); + doc.other_charges_total = roundNumber(flt(other_charges_total), 2); + doc.grand_total = roundNumber((flt(net_total) + flt(other_charges_total)), 2); doc.rounded_total = Math.round(doc.grand_total); - //doc.grand_total_export = flt(flt(doc.grand_total) / flt(doc.conversion_rate)); - doc.grand_total_export = flt((flt(doc.grand_total) / flt(doc.conversion_rate)).toFixed(2)); + doc.grand_total_export = roundNumber((flt(doc.grand_total) / flt(doc.conversion_rate)), 2); doc.rounded_total_export = Math.round(doc.grand_total_export); doc.total_commission = flt(flt(net_total) * flt(doc.commission_rate) / 100); } @@ -277,10 +284,9 @@ cur_frm.cscript.calc_other_charges = function(doc , tname , fname , other_fname) var otc = make_table(cur_frm.fields_dict['Other Charges Calculation'].disp_area, cl.length + 1, tax.length + 1, '90%', [], { border:'1px solid #AAA', padding:'2px' }); $y(otc,{marginTop:'8px'}); - + var tax_desc = {}; var tax_desc_rates = []; var net_total = 0; - for(var i=0;i 0) { + doc = locals[doc.doctype][doc.name] + var net_total = 0 + var cl = getchildren(tname, doc.name, fname); + var consider_incl_rate = cur_frm.cscript.consider_incl_rate(doc, other_fname); + for(var i=0;i 0) { + set_multiple(tname, cl[i].name, { + 'export_rate': flt(flt(cl[i].ref_rate) * (100 - flt(cl[i].adj_rate)) / 100) + }, fname); + } set_multiple(tname, cl[i].name, { - 'export_rate': flt(flt(cl[i].ref_rate) * (100 - flt(cl[i].adj_rate)) / 100) - }, fname); - - } - // Commenting this part because ref_rate backcalculation injects floating point issues - /*else if(flt(cl[i].export_rate) > 0) { - var ref_rate = flt(cl[i].adj_rate)!=flt(100) ? - flt((100 * flt(cl[i].export_rate))/flt(100 - flt(cl[i].adj_rate))) : - flt(0) - set_multiple(tname, cl[i].name, { 'ref_rate': flt(ref_rate) }, fname); - } */ - - set_multiple(tname, cl[i].name, { - 'export_amount': flt(flt(cl[i].qty) * flt(cl[i].export_rate)), - 'basic_rate': flt(flt(cl[i].export_rate) * flt(doc.conversion_rate)), - 'amount': flt((flt(cl[i].export_rate) * flt(doc.conversion_rate)) * flt(cl[i].qty)) - }, fname); - - var base_ref_rate = flt(cl[i].basic_rate) + flt(flt(cl[i].basic_rate) * flt(cl[i].adj_rate) / 100); - set_multiple(tname, cl[i].name, { - 'base_ref_rate': flt(base_ref_rate) - }, fname); + 'export_amount': flt(flt(cl[i].qty) * flt(cl[i].export_rate)), + 'basic_rate': flt(flt(cl[i].export_rate) * flt(doc.conversion_rate)), + 'amount': roundNumber(flt((flt(cl[i].export_rate) * flt(doc.conversion_rate)) * flt(cl[i].qty)), 2) + }, fname); + var base_ref_rate = flt(cl[i].basic_rate) + flt(flt(cl[i].basic_rate) * flt(cl[i].adj_rate) / 100); + set_multiple(tname, cl[i].name, { + 'base_ref_rate': flt(base_ref_rate) + }, fname); } else if(consider_incl_rate) { if(flt(cl[i].export_rate) > 0) { @@ -520,7 +516,7 @@ cur_frm.cscript.update_fname_table = function(doc , tname , fname , n, other_fna var base_ref_rate = basic_rate + flt(basic_rate * flt(cl[i].adj_rate) / 100); set_multiple(tname, cl[i].name, { 'basic_rate': flt(basic_rate), - 'amount': flt(basic_rate * flt(cl[i].qty)), + 'amount': roundNumber(flt(basic_rate * flt(cl[i].qty)), 2), 'export_amount': flt(flt(cl[i].qty) * flt(cl[i].export_rate)), 'base_ref_rate': flt(base_ref_rate) }, fname); @@ -655,4 +651,3 @@ cur_frm.cscript.validate_items = function(doc) { validated = false; } } - diff --git a/erpnext/setup/doctype/notification_control/notification_control.js b/erpnext/setup/doctype/notification_control/notification_control.js index 112395e2e1..13c3087fc5 100644 --- a/erpnext/setup/doctype/notification_control/notification_control.js +++ b/erpnext/setup/doctype/notification_control/notification_control.js @@ -32,7 +32,7 @@ cur_frm.cscript.notify = function(doc, args) { args['send_to'] || doc.contact_email, send_from, send_from, - doc.company + " - " + print_heading, + doc.company + " - " + print_heading + " - " + doc.name, res.message, res.print_format );