diff --git a/erpnext/regional/report/uae_vat/uae_vat.py b/erpnext/regional/report/uae_vat/uae_vat.py
index 6e9565b..50d1ddd 100644
--- a/erpnext/regional/report/uae_vat/uae_vat.py
+++ b/erpnext/regional/report/uae_vat/uae_vat.py
@@ -3,6 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
+from erpnext.regional.united_arab_emirates.utils import get_tax_accounts
 
 def execute(filters=None):
 	columns = get_columns()
@@ -70,19 +71,21 @@
 					"vat_amount": 0
 				}
 			)
+	data.append(
+		{
+			"no": '3',
+			"legend": f'Supplies subject to the reverse charge provision',
+			"amount": get_reverse_charge_total(filters),
+			"vat_amount": get_reverse_charge_tax(filters)
+		}
+	)
 	return data
 
 
 def get_total_emiratewise(filters):
-	conditions = get_conditions(filters)
-	print(f"""
-		select emirate, sum(total), sum(total_taxes_and_charges) from `tabSales Invoice`
-		where docstatus = 1 {conditions}
-		group by `tabSales Invoice`.emirate;
-		""")
 	return frappe.db.sql(f"""
 		select emirate, sum(total), sum(total_taxes_and_charges) from `tabSales Invoice`
-		where docstatus = 1 {conditions}
+		where docstatus = 1 {get_conditions(filters)}
 		group by `tabSales Invoice`.emirate;
 		""", filters)
 
@@ -99,10 +102,40 @@
 
 def get_conditions(filters):
 	conditions = ""
+	for opts in (("company", f' and company="{filters.get("company")}"'),
+		("from_date",  f' and posting_date>="{filters.get("from_date")}"'),
+		("to_date", f' and posting_date<="{filters.get("to_date")}"')):
+			if filters.get(opts[0]):
+				conditions += opts[1]
+	return conditions
 
-	for opts in (("company", " and company=%(company)s"),
-		("from_date", " and posting_date>=%(from_date)s"),
-		("to_date", " and posting_date<=%(to_date)s")):
+def get_reverse_charge_tax(filters):
+	return frappe.db.sql(f"""
+		select sum(debit)  from
+		`tabPurchase Invoice`  inner join `tabGL Entry`
+		on `tabGL Entry`.voucher_no = `tabPurchase Invoice`.name
+		where
+		`tabPurchase Invoice`.reverse_charge = "Y"
+		and `tabPurchase Invoice`.docstatus = 1
+		and `tabGL Entry`.docstatus = 1  {get_conditions_join(filters)}
+		and account in ("{'", "'.join(get_tax_accounts(filters['company']))}");
+		""")[0][0]
+
+
+def get_reverse_charge_total(filters):
+	return frappe.db.sql(f"""
+		select sum(total)  from
+		`tabPurchase Invoice`
+		where
+		reverse_charge = "Y"
+		and docstatus = 1 {get_conditions(filters)} ;
+		""")[0][0]
+
+def get_conditions_join(filters):
+	conditions = ""
+	for opts in (("company", f' and `tabPurchase Invoice`.company="{filters.get("company")}"'),
+		("from_date", f' and `tabPurchase Invoice`.posting_date>="{filters.get("from_date")}"'),
+		("to_date", f' and `tabPurchase Invoice`.posting_date<="{filters.get("to_date")}"')):
 			if filters.get(opts[0]):
 				conditions += opts[1]
 	return conditions
\ No newline at end of file
diff --git a/erpnext/regional/united_arab_emirates/setup.py b/erpnext/regional/united_arab_emirates/setup.py
index a2938bb..d38d647 100644
--- a/erpnext/regional/united_arab_emirates/setup.py
+++ b/erpnext/regional/united_arab_emirates/setup.py
@@ -20,7 +20,7 @@
 			insert_after='group_same_items', print_hide=1, collapsible=1),
 		dict(fieldname='permit_no', label='Permit Number',
 			fieldtype='Data', insert_after='vat_section', print_hide=1),
-		dict(fieldname='reverse_charge_applicable', label='Reverse Charge Applicable',
+		dict(fieldname='reverse_charge', label='Reverse Charge Applicable',
 			fieldtype='Select', insert_after='permit_no', print_hide=1,
 			options='Y\nN', default='N')
 	]
@@ -42,7 +42,7 @@
 				fieldtype='Read Only', insert_after='customer_name',
 				fetch_from='customer.customer_name_in_arabic', print_hide=1),
 			dict(fieldname='emirate', label='Emirate', insert_after='customer_address',
-				fetch_from='customer_address.emirates'),
+				fieldtype='Read Only', fetch_from='customer_address.emirates'),
 		]
 
 	invoice_item_fields = [
@@ -79,8 +79,8 @@
 				fieldtype='Data', insert_after='supplier_name'),
 		],
 		'Address': [
-			dict(fieldname='emirates', label='Emirates',
-				fieldtype='Data', insert_after='state'),
+			dict(fieldname='emirates', label='Emirates', fieldtype='Select', insert_after='state',
+			options='Abu Dhabi\nAjman\nDubai\nFujairah\nRas Al Khaimah\nSharjah\nUmm Al Quwain')
 		],
 		'Purchase Invoice': purchase_invoice_fields + invoice_fields,
 		'Purchase Order': purchase_invoice_fields + invoice_fields,
