Update tax amount after discount in existing documents
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 13d8538..bd89582 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -52,3 +52,4 @@
 
 # WATCHOUT: This patch reload's documents
 erpnext.patches.v4_0.reset_permissions_for_masters
+erpnext.patches.v4_0.update_tax_amount_after_discount
diff --git a/erpnext/patches/v4_0/update_tax_amount_after_discount.py b/erpnext/patches/v4_0/update_tax_amount_after_discount.py
new file mode 100644
index 0000000..37f082b
--- /dev/null
+++ b/erpnext/patches/v4_0/update_tax_amount_after_discount.py
@@ -0,0 +1,19 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+	docs_with_discount_amount = frappe._dict()
+	for dt in ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"]:
+		records = frappe.db.sql_list("""select name from `tab%s`
+			where ifnull(discount_amount, 0) > 0 and docstatus=1""" % dt)
+		docs_with_discount_amount[dt] = records
+
+	for dt, discounted_records in docs_with_discount_amount.items():
+		frappe.db.sql("""update `tabSales Taxes and Charges`
+			set tax_amount_after_discount_amount = tax_amount
+			where parenttype = %s and parent not in (%s)""" %
+			('%s', ', '.join(['%s']*(len(discounted_records)+1))),
+			tuple([dt, ''] + discounted_records))