diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index a029627a..942acd5 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -297,3 +297,4 @@
 erpnext.patches.v13_0.add_missing_fg_item_for_stock_entry
 erpnext.patches.v13_0.update_subscription_status_in_memberships
 erpnext.patches.v13_0.update_amt_in_work_order_required_items
+erpnext.patches.v13_0.add_custom_field_for_south_africa
diff --git a/erpnext/patches/v13_0/add_custom_field_for_south_africa.py b/erpnext/patches/v13_0/add_custom_field_for_south_africa.py
new file mode 100644
index 0000000..73e9af9
--- /dev/null
+++ b/erpnext/patches/v13_0/add_custom_field_for_south_africa.py
@@ -0,0 +1,13 @@
+# Copyright (c) 2020, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+from erpnext.regional.south_africa.setup  import make_custom_fields
+
+def execute():
+	company = frappe.get_all('Company', filters = {'country': 'South Africa'})
+	if not company:
+		return
+
+	make_custom_fields()
diff --git a/erpnext/regional/report/vat_audit_report/vat_audit_report.py b/erpnext/regional/report/vat_audit_report/vat_audit_report.py
index bce8586..0c716cd 100644
--- a/erpnext/regional/report/vat_audit_report/vat_audit_report.py
+++ b/erpnext/regional/report/vat_audit_report/vat_audit_report.py
@@ -55,7 +55,7 @@
 				`tab{doctype}`
 			WHERE
 				docstatus = 1 {where_conditions}
-				and is_opening = 'No'
+				and is_opening = "No"
 			ORDER BY
 				posting_date DESC
 			""".format(select_columns=self.select_columns, doctype=doctype,
@@ -66,26 +66,31 @@
 
 	def get_invoice_items(self, doctype):
 		self.invoice_items = frappe._dict()
-		self.item_tax_rate = frappe._dict()
 
 		items = frappe.db.sql("""
 			SELECT
-				item_code, parent, taxable_value, base_net_amount, item_tax_rate
+				item_code, parent, taxable_value, base_net_amount, is_zero_rated
 			FROM
 				`tab%s Item`
 			WHERE
 				parent in (%s)
-			""" % (doctype, ', '.join(['%s']*len(self.invoices))), tuple(self.invoices), as_dict=1)
+			""" % (doctype, ", ".join(["%s"]*len(self.invoices))), tuple(self.invoices), as_dict=1)
 		for d in items:
 			if d.item_code not in self.invoice_items.get(d.parent, {}):
-				self.invoice_items.setdefault(d.parent, {}).setdefault(d.item_code,
-				sum((i.get('taxable_value', 0) or i.get('base_net_amount', 0)) for i in items
-				if i.item_code == d.item_code and i.parent == d.parent))
+				self.invoice_items.setdefault(d.parent, {}).setdefault(d.item_code, {}) \
+					.setdefault("net_amount", sum((i.get("taxable_value", 0) \
+					or i.get("base_net_amount", 0)) for i in items \
+					if (i.item_code == d.item_code and i.parent == d.parent)))
+
+				self.invoice_items.setdefault(d.parent, {}).setdefault(d.item_code, {}) \
+					.setdefault("is_zero_rated", d.is_zero_rated)
 
 	def get_items_based_on_tax_rate(self, doctype):
 		self.items_based_on_tax_rate = frappe._dict()
+		self.item_tax_rate = frappe._dict()
 		self.tax_doctype = "Purchase Taxes and Charges" if doctype=="Purchase Invoice" \
 			else "Sales Taxes and Charges"
+
 		self.tax_details = frappe.db.sql("""
 			SELECT
 				parent, account_head, item_wise_tax_detail, base_tax_amount_after_discount_amount
@@ -96,7 +101,7 @@
 				and parent in (%s)
 			ORDER BY
 				account_head
-			""" % (self.tax_doctype, '%s', ', '.join(['%s']*len(self.invoices.keys()))),
+			""" % (self.tax_doctype, "%s", ", ".join(["%s"]*len(self.invoices.keys()))),
 			tuple([doctype] + list(self.invoices.keys())))
 
 		for parent, account, item_wise_tax_detail, tax_amount in self.tax_details:
@@ -107,7 +112,8 @@
 					else:
 						continue
 					for item_code, taxes in item_wise_tax_detail.items():
-						is_zero_rated = frappe.get_value("Item", item_code, "is_zero_rated")
+						is_zero_rated = self.invoice_items.get(parent).get(item_code).get("is_zero_rated")
+						#to skip items with non-zero tax rate in multiple rows
 						if taxes[0] == 0 and not is_zero_rated:
 							continue
 						tax_rate, item_amount_map = self.get_item_amount_map(parent, item_code, taxes)
@@ -121,7 +127,7 @@
 					continue
 
 	def get_item_amount_map(self, parent, item_code, taxes):
-		net_amount = abs(self.invoice_items.get(parent).get(item_code))
+		net_amount = self.invoice_items.get(parent).get(item_code).get("net_amount")
 		tax_rate = taxes[0]
 		tax_amount = taxes[1]
 		gross_amount = net_amount + tax_amount
@@ -183,7 +189,7 @@
 						row = {}
 						item_details = self.item_tax_rate.get(inv).get(item)
 						row["account"] = inv_data.get("account")
-						row["posting_date"] = formatdate(inv_data.get("posting_date"), 'dd-mm-yyyy')
+						row["posting_date"] = formatdate(inv_data.get("posting_date"), "dd-mm-yyyy")
 						row["voucher_type"] = doctype
 						row["voucher_no"] = inv
 						row["remarks"] = inv_data.get("remarks")
