Migrate customized precision for newly created total fields
diff --git a/erpnext/patches/v5_0/taxes_and_totals_in_party_currency.py b/erpnext/patches/v5_0/taxes_and_totals_in_party_currency.py
index 97efe6f..7afa015 100644
--- a/erpnext/patches/v5_0/taxes_and_totals_in_party_currency.py
+++ b/erpnext/patches/v5_0/taxes_and_totals_in_party_currency.py
@@ -3,6 +3,8 @@
 # License: GNU General Public License v3. See license.txt
 
 import frappe
+from frappe.model.meta import get_field_precision
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
 
 def execute():
 	selling_doctypes = ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"]
@@ -18,19 +20,31 @@
 	frappe.reload_doctype(dt)
 	frappe.reload_doctype(dt + " Item")
 	frappe.reload_doctype(tax_table)
-
+	
+	net_total_precision = get_field_precision(frappe.get_meta(dt).get_field("net_total"))
+	make_property_setter(dt, "base_total", "precision", net_total_precision, "Select")
+	
+	rate_field_precision = get_field_precision(frappe.get_meta(dt + " Item").get_field("rate"))
+	for field in ("net_rate", "base_net_rate", "net_amount", "base_net_amount", "base_rate", "base_amount"):
+		make_property_setter(dt + " Item", field, "precision", rate_field_precision, "Select")
+		
+	tax_amount_precision = get_field_precision(frappe.get_meta(tax_table).get_field("tax_amount"))
+	for field in ("base_tax_amount", "total", "base_total", "tax_amount_after_discount_amount", 
+		"base_tax_amount_after_discount_amount"):
+			make_property_setter(tax_table, field, "precision", tax_amount_precision, "Select")
+	
 	# update net_total, discount_on
 	frappe.db.sql("""
 		UPDATE
 			`tab{0}`
 		SET
 			total = net_total,
-			base_total = net_total*conversion_rate,
-			net_total = base_net_total / conversion_rate,
+			base_total = round(net_total*conversion_rate, {1}),
+			net_total = round(base_net_total / conversion_rate, {1}),
 			apply_discount_on = "Grand Total"
 		WHERE
 			docstatus < 2
-	""".format(dt))
+	""".format(dt, net_total_precision))
 
 
 	# update net_amount
@@ -40,14 +54,14 @@
 		SET
 			item.base_net_amount = item.base_amount,
 			item.base_net_rate = item.base_rate,
-			item.net_amount = item.base_net_amount / par.conversion_rate,
-			item.net_rate = item.base_net_rate / par.conversion_rate,
-			item.base_amount = item.amount * par.conversion_rate,
-			item.base_rate = item.rate * par.conversion_rate
+			item.net_amount = round(item.base_net_amount / par.conversion_rate, {2}),
+			item.net_rate = round(item.base_net_rate / par.conversion_rate, {2}),
+			item.base_amount = round(item.amount * par.conversion_rate, {2}),
+			item.base_rate = round(item.rate * par.conversion_rate, {2})
 		WHERE
 			par.name = item.parent
 			and par.docstatus < 2
-	""".format(dt, dt + " Item"))
+	""".format(dt, dt + " Item", rate_field_precision))
 
 	# update tax in party currency
 	frappe.db.sql("""
@@ -55,12 +69,12 @@
 			`tab{0}` par, `tab{1}` tax
 		SET
 			tax.base_tax_amount = tax.tax_amount,
-			tax.tax_amount = tax.base_tax_amount / par.conversion_rate,
-			tax.base_total = tax.total,
-			tax.total = tax.base_total / conversion_rate,
-			tax.base_tax_amount_after_discount_amount = tax.tax_amount_after_discount_amount,
-			tax.tax_amount_after_discount_amount = tax.base_tax_amount_after_discount_amount / conversion_rate
+			tax.tax_amount = round(tax.base_tax_amount / par.conversion_rate, {2}),
+			tax.base_total = round(tax.total, {2}),
+			tax.total = round(tax.base_total / conversion_rate, {2}),
+			tax.base_tax_amount_after_discount_amount = round(tax.tax_amount_after_discount_amount, {2}),
+			tax.tax_amount_after_discount_amount = round(tax.base_tax_amount_after_discount_amount / conversion_rate, {2})
 		WHERE
 			par.name = tax.parent
 			and par.docstatus < 2
-	""".format(dt, tax_table))
+	""".format(dt, tax_table, tax_amount_precision))
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 9525fa5..398e1e1 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -51,7 +51,7 @@
 			d.projected_qty = tot_avail_qty and flt(tot_avail_qty[0][0]) or 0
 		unique_chk_list = set(check_list)
 		if len(unique_chk_list) != len(check_list):
-			frappe.msgprint(_("Warning:Same item has been entered multiple times."))
+			frappe.msgprint(_("Warning: Same item has been entered multiple times."))
 
 	def validate_sales_mntc_quotation(self):
 		for d in self.get('items'):