Merge branch 'stable' into latest
diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js
index 603a7b2..f1d4b71 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.js
+++ b/erpnext/selling/doctype/sales_common/sales_common.js
@@ -252,7 +252,7 @@
 	}
 
 	doc.net_total = inclusive_rate ? flt(net_total_incl) : flt(net_total);
-	doc.other_charges_total = flt(other_charges_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.rounded_total = Math.round(doc.grand_total);
@@ -311,7 +311,7 @@
 			//enter item_wise_tax_detail i.e. tax rate on each item
 			var item_wise_tax_detail = cur_frm.cscript.get_item_wise_tax_detail(doc, rate, cl, i, tax, t);
 			if(tax[t].charge_type != "Actual") tax[t].item_wise_tax_detail += item_wise_tax_detail;
-			tax[t].total_amount = flt(tax_amount);     //stores actual tax amount in virtual field
+			tax[t].total_amount = roundNumber(flt(tax_amount), 2);     //stores actual tax amount in virtual field
 			tax[t].total_tax_amount = flt(prev_total);      //stores total amount in virtual field
 			tax[t].tax_amount += flt(tax_amount);       
 			var total_amount = flt(tax[t].tax_amount);
@@ -329,6 +329,8 @@
 	}
 }
 
+function roundNumber(num, dec) {	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);	return result;}
+
 cur_frm.cscript.check_charge_type_and_get_tax_amount = function( doc, tax, t, cl, rate, print_amt) {
   doc = locals[doc.doctype][doc.name];
   if (! print_amt) print_amt = 0;