refactor(region): Splitting of KSA(Saudi Arabia) Regional logic from ERPNext (#33895)

* feat: remove KSA regional code
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index fd19d25..fba886c 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -311,15 +311,10 @@
 		"on_submit": [
 			"erpnext.regional.create_transaction_log",
 			"erpnext.regional.italy.utils.sales_invoice_on_submit",
-			"erpnext.regional.saudi_arabia.utils.create_qr_code",
 		],
-		"on_cancel": [
-			"erpnext.regional.italy.utils.sales_invoice_on_cancel",
-			"erpnext.regional.saudi_arabia.utils.delete_qr_code_file",
-		],
+		"on_cancel": ["erpnext.regional.italy.utils.sales_invoice_on_cancel"],
 		"on_trash": "erpnext.regional.check_deletion_permission",
 	},
-	"POS Invoice": {"on_submit": ["erpnext.regional.saudi_arabia.utils.create_qr_code"]},
 	"Purchase Invoice": {
 		"validate": [
 			"erpnext.regional.united_arab_emirates.utils.update_grand_total_for_rcm",
@@ -347,7 +342,6 @@
 	"Email Unsubscribe": {
 		"after_insert": "erpnext.crm.doctype.email_campaign.email_campaign.unsubscribe_recipient"
 	},
-	"Company": {"on_trash": ["erpnext.regional.saudi_arabia.utils.delete_vat_settings_for_company"]},
 	"Integration Request": {
 		"validate": "erpnext.accounts.doctype.payment_request.payment_request.validate_payment"
 	},
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index e6be933..2abd65b 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -250,18 +250,14 @@
 erpnext.patches.v13_0.update_category_in_ltds_certificate
 erpnext.patches.v13_0.fetch_thumbnail_in_website_items
 erpnext.patches.v13_0.update_maintenance_schedule_field_in_visit
-erpnext.patches.v13_0.create_ksa_vat_custom_fields # 07-01-2022
 erpnext.patches.v14_0.migrate_crm_settings
-erpnext.patches.v13_0.rename_ksa_qr_field
 erpnext.patches.v13_0.wipe_serial_no_field_for_0_qty
-erpnext.patches.v13_0.disable_ksa_print_format_for_others # 16-12-2021
 erpnext.patches.v13_0.agriculture_deprecation_warning
 erpnext.patches.v13_0.hospitality_deprecation_warning
 erpnext.patches.v13_0.update_asset_quantity_field
 erpnext.patches.v13_0.delete_bank_reconciliation_detail
 erpnext.patches.v13_0.enable_provisional_accounting
 erpnext.patches.v13_0.non_profit_deprecation_warning
-erpnext.patches.v13_0.enable_ksa_vat_docs #1
 erpnext.patches.v13_0.show_india_localisation_deprecation_warning
 erpnext.patches.v13_0.show_hr_payroll_deprecation_warning
 erpnext.patches.v13_0.reset_corrupt_defaults
@@ -269,6 +265,8 @@
 erpnext.patches.v15_0.delete_taxjar_doctypes
 erpnext.patches.v15_0.create_asset_depreciation_schedules_from_assets
 erpnext.patches.v14_0.update_reference_due_date_in_journal_entry
+erpnext.patches.v15_0.saudi_depreciation_warning
+erpnext.patches.v15_0.delete_saudi_doctypes
 
 [post_model_sync]
 execute:frappe.delete_doc_if_exists('Workspace', 'ERPNext Integrations Settings')
diff --git a/erpnext/patches/v13_0/create_ksa_vat_custom_fields.py b/erpnext/patches/v13_0/create_ksa_vat_custom_fields.py
deleted file mode 100644
index 093463a..0000000
--- a/erpnext/patches/v13_0/create_ksa_vat_custom_fields.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import frappe
-
-from erpnext.regional.saudi_arabia.setup import make_custom_fields
-
-
-def execute():
-	company = frappe.get_all("Company", filters={"country": "Saudi Arabia"})
-	if not company:
-		return
-
-	make_custom_fields()
diff --git a/erpnext/patches/v13_0/disable_ksa_print_format_for_others.py b/erpnext/patches/v13_0/disable_ksa_print_format_for_others.py
deleted file mode 100644
index 84b6c37..0000000
--- a/erpnext/patches/v13_0/disable_ksa_print_format_for_others.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2020, Wahni Green Technologies and Contributors
-# License: GNU General Public License v3. See license.txt
-
-import frappe
-
-from erpnext.regional.saudi_arabia.setup import add_print_formats
-
-
-def execute():
-	company = frappe.get_all("Company", filters={"country": "Saudi Arabia"})
-	if company:
-		add_print_formats()
-		return
-
-	if frappe.db.exists("DocType", "Print Format"):
-		frappe.reload_doc("regional", "print_format", "ksa_vat_invoice", force=True)
-		frappe.reload_doc("regional", "print_format", "ksa_pos_invoice", force=True)
-		for d in ("KSA VAT Invoice", "KSA POS Invoice"):
-			frappe.db.set_value("Print Format", d, "disabled", 1)
diff --git a/erpnext/patches/v13_0/enable_ksa_vat_docs.py b/erpnext/patches/v13_0/enable_ksa_vat_docs.py
deleted file mode 100644
index 4adf4d7..0000000
--- a/erpnext/patches/v13_0/enable_ksa_vat_docs.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import frappe
-
-from erpnext.regional.saudi_arabia.setup import add_permissions, add_print_formats
-
-
-def execute():
-	company = frappe.get_all("Company", filters={"country": "Saudi Arabia"})
-	if not company:
-		return
-
-	add_print_formats()
-	add_permissions()
diff --git a/erpnext/patches/v13_0/rename_ksa_qr_field.py b/erpnext/patches/v13_0/rename_ksa_qr_field.py
deleted file mode 100644
index e4b9141..0000000
--- a/erpnext/patches/v13_0/rename_ksa_qr_field.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 2020, Wahni Green Technologies and Contributors
-# License: GNU General Public License v3. See license.txt
-
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-from frappe.model.utils.rename_field import rename_field
-
-
-def execute():
-	company = frappe.get_all("Company", filters={"country": "Saudi Arabia"})
-	if not company:
-		return
-
-	if frappe.db.exists("DocType", "Sales Invoice"):
-		frappe.reload_doc("accounts", "doctype", "sales_invoice", force=True)
-
-		# rename_field method assumes that the field already exists or the doc is synced
-		if not frappe.db.has_column("Sales Invoice", "ksa_einv_qr"):
-			create_custom_fields(
-				{
-					"Sales Invoice": [
-						dict(
-							fieldname="ksa_einv_qr",
-							label="KSA E-Invoicing QR",
-							fieldtype="Attach Image",
-							read_only=1,
-							no_copy=1,
-							hidden=1,
-						)
-					]
-				}
-			)
-
-		if frappe.db.has_column("Sales Invoice", "qr_code"):
-			rename_field("Sales Invoice", "qr_code", "ksa_einv_qr")
-			frappe.delete_doc_if_exists("Custom Field", "Sales Invoice-qr_code")
diff --git a/erpnext/patches/v15_0/delete_saudi_doctypes.py b/erpnext/patches/v15_0/delete_saudi_doctypes.py
new file mode 100644
index 0000000..371e335
--- /dev/null
+++ b/erpnext/patches/v15_0/delete_saudi_doctypes.py
@@ -0,0 +1,25 @@
+import click
+import frappe
+
+
+def execute():
+	if "ksa" in frappe.get_installed_apps():
+		return
+
+	doctypes = ["KSA VAT Setting", "KSA VAT Purchase Account", "KSA VAT Sales Account"]
+	for doctype in doctypes:
+		frappe.delete_doc("DocType", doctype, ignore_missing=True)
+
+	print_formats = ["KSA POS Invoice", "KSA VAT Invoice"]
+	for print_format in print_formats:
+		frappe.delete_doc("Print Format", print_format, ignore_missing=True, force=True)
+
+	reports = ["KSA VAT"]
+	for report in reports:
+		frappe.delete_doc("Report", report, ignore_missing=True, force=True)
+
+	click.secho(
+		"Region Saudi Arabia(KSA) is moved to a separate app"
+		"Please install the app to continue using the module: https://github.com/8848digital/KSA",
+		fg="yellow",
+	)
diff --git a/erpnext/patches/v15_0/saudi_depreciation_warning.py b/erpnext/patches/v15_0/saudi_depreciation_warning.py
new file mode 100644
index 0000000..6af8efe
--- /dev/null
+++ b/erpnext/patches/v15_0/saudi_depreciation_warning.py
@@ -0,0 +1,12 @@
+import click
+import frappe
+
+
+def execute():
+	if "ksa" in frappe.get_installed_apps():
+		return
+	click.secho(
+		"Region Saudi Arabia(KSA) is moved to a separate app\n"
+		"Please install the app to continue using the KSA Features: https://github.com/8848digital/KSA",
+		fg="yellow",
+	)
diff --git a/erpnext/regional/doctype/ksa_vat_purchase_account/__init__.py b/erpnext/regional/doctype/ksa_vat_purchase_account/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/doctype/ksa_vat_purchase_account/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/doctype/ksa_vat_purchase_account/ksa_vat_purchase_account.json b/erpnext/regional/doctype/ksa_vat_purchase_account/ksa_vat_purchase_account.json
deleted file mode 100644
index 89ba3e9..0000000
--- a/erpnext/regional/doctype/ksa_vat_purchase_account/ksa_vat_purchase_account.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "actions": [],
- "creation": "2021-07-13 09:17:09.862163",
- "doctype": "DocType",
- "editable_grid": 1,
- "engine": "InnoDB",
- "field_order": [
-  "title",
-  "item_tax_template",
-  "account"
- ],
- "fields": [
-  {
-   "fieldname": "account",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Account",
-   "options": "Account",
-   "reqd": 1
-  },
-  {
-   "fieldname": "title",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Title",
-   "reqd": 1
-  },
-  {
-   "fieldname": "item_tax_template",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Item Tax Template",
-   "options": "Item Tax Template",
-   "reqd": 1
-  }
- ],
- "index_web_pages_for_search": 1,
- "istable": 1,
- "links": [],
- "modified": "2021-08-04 06:42:38.205597",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "KSA VAT Purchase Account",
- "owner": "Administrator",
- "permissions": [],
- "sort_field": "modified",
- "sort_order": "DESC",
- "track_changes": 1
-}
\ No newline at end of file
diff --git a/erpnext/regional/doctype/ksa_vat_purchase_account/ksa_vat_purchase_account.py b/erpnext/regional/doctype/ksa_vat_purchase_account/ksa_vat_purchase_account.py
deleted file mode 100644
index 3920bc5..0000000
--- a/erpnext/regional/doctype/ksa_vat_purchase_account/ksa_vat_purchase_account.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2021, Havenir Solutions and contributors
-# For license information, please see license.txt
-
-# import frappe
-from frappe.model.document import Document
-
-
-class KSAVATPurchaseAccount(Document):
-	pass
diff --git a/erpnext/regional/doctype/ksa_vat_sales_account/__init__.py b/erpnext/regional/doctype/ksa_vat_sales_account/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/doctype/ksa_vat_sales_account/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.js b/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.js
deleted file mode 100644
index 72613f4..0000000
--- a/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2021, Havenir Solutions and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('KSA VAT Sales Account', {
-	// refresh: function(frm) {
-
-	// }
-});
diff --git a/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.json b/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.json
deleted file mode 100644
index df27478..0000000
--- a/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "actions": [],
- "creation": "2021-07-13 08:46:33.820968",
- "doctype": "DocType",
- "editable_grid": 1,
- "engine": "InnoDB",
- "field_order": [
-  "title",
-  "item_tax_template",
-  "account"
- ],
- "fields": [
-  {
-   "fieldname": "account",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Account",
-   "options": "Account",
-   "reqd": 1
-  },
-  {
-   "fieldname": "title",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Title",
-   "reqd": 1
-  },
-  {
-   "fieldname": "item_tax_template",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Item Tax Template",
-   "options": "Item Tax Template",
-   "reqd": 1
-  }
- ],
- "index_web_pages_for_search": 1,
- "istable": 1,
- "links": [],
- "modified": "2021-08-04 06:42:00.081407",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "KSA VAT Sales Account",
- "owner": "Administrator",
- "permissions": [],
- "sort_field": "modified",
- "sort_order": "DESC",
- "track_changes": 1
-}
\ No newline at end of file
diff --git a/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.py b/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.py
deleted file mode 100644
index 7c2689f..0000000
--- a/erpnext/regional/doctype/ksa_vat_sales_account/ksa_vat_sales_account.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2021, Havenir Solutions and contributors
-# For license information, please see license.txt
-
-# import frappe
-from frappe.model.document import Document
-
-
-class KSAVATSalesAccount(Document):
-	pass
diff --git a/erpnext/regional/doctype/ksa_vat_sales_account/test_ksa_vat_sales_account.py b/erpnext/regional/doctype/ksa_vat_sales_account/test_ksa_vat_sales_account.py
deleted file mode 100644
index 1d6a6a7..0000000
--- a/erpnext/regional/doctype/ksa_vat_sales_account/test_ksa_vat_sales_account.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2021, Havenir Solutions and Contributors
-# See license.txt
-
-# import frappe
-import unittest
-
-
-class TestKSAVATSalesAccount(unittest.TestCase):
-	pass
diff --git a/erpnext/regional/doctype/ksa_vat_setting/__init__.py b/erpnext/regional/doctype/ksa_vat_setting/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/doctype/ksa_vat_setting/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.js b/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.js
deleted file mode 100644
index 00b62b9..0000000
--- a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2021, Havenir Solutions and contributors
-// For license information, please see license.txt
-
-frappe.ui.form.on('KSA VAT Setting', {
-	onload: function () {
-		frappe.breadcrumbs.add('Accounts', 'KSA VAT Setting');
-	}
-});
diff --git a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.json b/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.json
deleted file mode 100644
index 3361946..0000000
--- a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "actions": [],
- "autoname": "field:company",
- "creation": "2021-07-13 08:49:01.100356",
- "doctype": "DocType",
- "editable_grid": 1,
- "engine": "InnoDB",
- "field_order": [
-  "company",
-  "ksa_vat_sales_accounts",
-  "ksa_vat_purchase_accounts"
- ],
- "fields": [
-  {
-   "fieldname": "company",
-   "fieldtype": "Link",
-   "in_list_view": 1,
-   "label": "Company",
-   "options": "Company",
-   "reqd": 1,
-   "unique": 1
-  },
-  {
-   "fieldname": "ksa_vat_sales_accounts",
-   "fieldtype": "Table",
-   "label": "KSA VAT Sales Accounts",
-   "options": "KSA VAT Sales Account",
-   "reqd": 1
-  },
-  {
-   "fieldname": "ksa_vat_purchase_accounts",
-   "fieldtype": "Table",
-   "label": "KSA VAT Purchase Accounts",
-   "options": "KSA VAT Purchase Account",
-   "reqd": 1
-  }
- ],
- "links": [],
- "modified": "2021-08-26 04:29:06.499378",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "KSA VAT Setting",
- "owner": "Administrator",
- "permissions": [],
- "sort_field": "modified",
- "sort_order": "DESC",
- "title_field": "company",
- "track_changes": 1
-}
\ No newline at end of file
diff --git a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.py b/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.py
deleted file mode 100644
index bdae116..0000000
--- a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2021, Havenir Solutions and contributors
-# For license information, please see license.txt
-
-# import frappe
-from frappe.model.document import Document
-
-
-class KSAVATSetting(Document):
-	pass
diff --git a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting_list.js b/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting_list.js
deleted file mode 100644
index 269cbec..0000000
--- a/erpnext/regional/doctype/ksa_vat_setting/ksa_vat_setting_list.js
+++ /dev/null
@@ -1,5 +0,0 @@
-frappe.listview_settings['KSA VAT Setting'] = {
-	onload () {
-		frappe.breadcrumbs.add('Accounts');
-	}
-}
\ No newline at end of file
diff --git a/erpnext/regional/doctype/ksa_vat_setting/test_ksa_vat_setting.py b/erpnext/regional/doctype/ksa_vat_setting/test_ksa_vat_setting.py
deleted file mode 100644
index 7207901..0000000
--- a/erpnext/regional/doctype/ksa_vat_setting/test_ksa_vat_setting.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2021, Havenir Solutions and Contributors
-# See license.txt
-
-# import frappe
-import unittest
-
-
-class TestKSAVATSetting(unittest.TestCase):
-	pass
diff --git a/erpnext/regional/print_format/ksa_pos_invoice/__init__.py b/erpnext/regional/print_format/ksa_pos_invoice/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/print_format/ksa_pos_invoice/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/print_format/ksa_pos_invoice/ksa_pos_invoice.json b/erpnext/regional/print_format/ksa_pos_invoice/ksa_pos_invoice.json
deleted file mode 100644
index c2a3092..0000000
--- a/erpnext/regional/print_format/ksa_pos_invoice/ksa_pos_invoice.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "absolute_value": 0,
- "align_labels_right": 0,
- "creation": "2021-12-07 13:25:05.424827",
- "css": "",
- "custom_format": 1,
- "default_print_language": "en",
- "disabled": 1,
- "doc_type": "POS Invoice",
- "docstatus": 0,
- "doctype": "Print Format",
- "font_size": 0,
- "html": "<style>\n\t.print-format table, .print-format tr, \n\t.print-format td, .print-format div, .print-format p {\n\t\tline-height: 150%;\n\t\tvertical-align: middle;\n\t}\n\t@media screen {\n\t\t.print-format {\n\t\t\twidth: 4in;\n\t\t\tpadding: 0.25in;\n\t\t\tmin-height: 8in;\n\t\t}\n\t}\n</style>\n\n{% if letter_head %}\n    {{ letter_head }}\n{% endif %}\n\n<p class=\"text-center\" style=\"margin-bottom: 1rem\">\n\t{{ doc.company }}<br>\n\t<b>{{ doc.select_print_heading or _(\"Invoice\") }}</b><br>\n\t<img src={{doc.ksa_einv_qr}}>\n</p>\n<p>\n\t<b>{{ _(\"Receipt No\") }}:</b> {{ doc.name }}<br>\n\t<b>{{ _(\"Cashier\") }}:</b> {{ doc.owner }}<br>\n\t<b>{{ _(\"Customer\") }}:</b> {{ doc.customer_name }}<br>\n\t<b>{{ _(\"Date\") }}:</b> {{ doc.get_formatted(\"posting_date\") }}<br>\n\t<b>{{ _(\"Time\") }}:</b> {{  doc.get_formatted(\"posting_time\") }}<br>\n</p>\n\n<hr>\n<table class=\"table table-condensed\">\n\t<thead>\n\t\t<tr>\n\t\t\t<th width=\"40%\">{{ _(\"Item\") }}</th>\n\t\t\t<th width=\"25%\" class=\"text-right\">{{ _(\"Qty\") }}</th>\n\t\t\t<th width=\"35%\" class=\"text-right\">{{ _(\"Amount\") }}</th>\n\t\t</tr>\n\t</thead>\n\t<tbody>\n\t\t{%- for item in doc.items -%}\n\t\t<tr>\n\t\t\t<td>\n\t\t\t\t{{ item.item_code }}\n\t\t\t\t{%- if item.item_name != item.item_code -%}\n\t\t\t\t\t<br>{{ item.item_name }}\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- if item.serial_no -%}\n\t\t\t\t\t<br><b>{{ _(\"SR.No\") }}:</b><br>\n\t\t\t\t\t{{ item.serial_no | replace(\"\\n\", \", \") }}\n\t\t\t\t{%- endif -%}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">{{ item.qty }}</td>\n\t\t\t<td class=\"text-right\">{{ item.get_formatted(\"net_amount\") }}</td>\n\t\t</tr>\n\t\t{%- endfor -%}\n\t</tbody>\n</table>\n<table class=\"table table-condensed no-border\">\n\t<tbody>\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t{{ _(\"Total Excl. Tax\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"net_total\", doc) }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- for row in doc.taxes -%}\n\t\t\t<tr>\n\t\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t    {% if '%' in row.description %}\n\t\t\t\t\t    {{ row.description }}\n\t\t\t\t\t{% else %}\n\t\t\t\t\t    {{ row.description }}@{{ row.rate }}%\n\t\t\t\t\t{% endif %}\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-right\">\n\t\t\t\t\t{{ row.get_formatted(\"tax_amount\", doc) }}\n\t\t\t\t</td>\n\t\t\t<tr>\n\t\t{%- endfor -%}\n\n\t\t{%- if doc.discount_amount -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t{{ _(\"Discount\") }}\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"discount_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t<b>{{ _(\"Grand Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"grand_total\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- if doc.rounded_total -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t<b>{{ _(\"Rounded Total\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"rounded_total\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- endif -%}\n\t\t<tr>\n\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t<b>{{ _(\"Paid Amount\") }}</b>\n\t\t\t</td>\n\t\t\t<td class=\"text-right\">\n\t\t\t\t{{ doc.get_formatted(\"paid_amount\") }}\n\t\t\t</td>\n\t\t</tr>\n\t\t{%- if doc.change_amount -%}\n\t\t\t<tr>\n\t\t\t\t<td class=\"text-right\" style=\"width: 60%\">\n\t\t\t\t\t<b>{{ _(\"Change Amount\") }}</b>\n\t\t\t\t</td>\n\t\t\t\t<td class=\"text-right\">\n\t\t\t\t\t{{ doc.get_formatted(\"change_amount\") }}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t{%- endif -%}\n\t</tbody>\n</table>\n<hr>\n<p>{{ doc.terms or \"\" }}</p>\n<p class=\"text-center\">{{ _(\"Thank you, please visit again.\") }}</p>",
- "idx": 0,
- "line_breaks": 0,
- "margin_bottom": 0.0,
- "margin_left": 0.0,
- "margin_right": 0.0,
- "margin_top": 0.0,
- "modified": "2021-12-08 10:25:01.930885",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "KSA POS Invoice",
- "owner": "Administrator",
- "page_number": "Hide",
- "print_format_builder": 0,
- "print_format_builder_beta": 0,
- "print_format_type": "Jinja",
- "raw_printing": 0,
- "show_section_headings": 0,
- "standard": "Yes"
-}
\ No newline at end of file
diff --git a/erpnext/regional/print_format/ksa_vat_invoice/__init__.py b/erpnext/regional/print_format/ksa_vat_invoice/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/print_format/ksa_vat_invoice/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/print_format/ksa_vat_invoice/ksa_vat_invoice.json b/erpnext/regional/print_format/ksa_vat_invoice/ksa_vat_invoice.json
deleted file mode 100644
index 6b64d47..0000000
--- a/erpnext/regional/print_format/ksa_vat_invoice/ksa_vat_invoice.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "absolute_value": 0,
- "align_labels_right": 0,
- "creation": "2021-10-29 22:46:26.039023",
- "css": ".qr-code{\n    float:right;\n}\n\n.invoice-heading {\n  margin: 0;\n}\n\n.ksa-invoice-table {\n  border: 1px solid #888a8e;\n  border-collapse: collapse;\n  width: 100%;\n  margin: 20px 0;\n  font-size: 16px;\n}\n\n.ksa-invoice-table.two-columns td:nth-child(2) {\n  direction: rtl;\n}\n\n.ksa-invoice-table th {\n  border: 1px solid #888a8e;\n  max-width: 50%;\n  padding: 8px;\n}\n\n.ksa-invoice-table td {\n  padding: 5px;\n  border: 1px solid #888a8e;\n  max-width: 50%;\n}\n\n.ksa-invoice-table thead,\n.ksa-invoice-table tfoot {\n  text-transform: uppercase;\n}\n\n.qr-rtl {\n  direction: rtl;\n}\n\n.qr-flex{\n    display: flex;\n    justify-content: space-between;\n}",
- "custom_format": 1,
- "default_print_language": "en",
- "disabled": 1,
- "doc_type": "Sales Invoice",
- "docstatus": 0,
- "doctype": "Print Format",
- "font_size": 14,
- "html": "<div class=\"ksa-vat-format\">\n    <div class=\"qr-flex\">\n        <div style=\"qr-flex: 1\">\n            <h2 class=\"invoice-heading\">TAX INVOICE</h2>\n            <h2 class=\"invoice-heading\">\u0641\u0627\u062a\u0648\u0631\u0629 \u0636\u0631\u064a\u0628\u064a\u0629</h2>\n        </div>\n        \n        <img class=\"qr-code\" src={{doc.ksa_einv_qr}}>\n    </div>\n    {% set company = frappe.get_doc(\"Company\", doc.company)%}\n    {% if (doc.company_address) %}\n        {% set supplier_address_doc = frappe.get_doc('Address', doc.company_address) %}\n    {% endif %}\n    \n    {% if(doc.customer_address) %}\n        {% set customer_address = frappe.get_doc('Address', doc.customer_address ) %}\n    {% endif %}\n    \n    {% if(doc.shipping_address_name) %}\n        {% set customer_shipping_address = frappe.get_doc('Address', doc.shipping_address_name ) %}\n    {% endif %}  \n        \n    <table class=\"ksa-invoice-table two-columns\">\n      <thead>\n        <tr>\n          <th>{{ company.name }}</th>\n          <th style=\"text-align: right;\">{{ company.company_name_in_arabic }}</th>\n        </tr>\n      </thead>\n\n      <tbody>\n        <!-- Invoice Info -->\n        <tr>\n          <td>Invoice#: {{doc.name}}</td>\n          <td>\u0631\u0642\u0645 \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629: {{doc.name}}</td>\n        </tr>\n        <tr>\n          <td>Invoice Date: {{doc.posting_date}}</td>\n          <td>\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629: {{doc.posting_date}}</td>\n        </tr>\n        <tr>\n          <td>Date of Supply:{{doc.posting_date}}</td>\n          <td>\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062a\u0648\u0631\u064a\u062f: {{doc.posting_date}}</td>\n        </tr>\n        \n        <!--Supplier Info -->\n        <tr>\n          <td>Supplier:</td>\n          <td>\u0627\u0644\u0645\u0648\u0631\u062f:</td>\n        </tr>\n\t\t{% if (company.tax_id) %}\n        <tr>\n          <td>Supplier Tax Identification Number:</td>\n          <td>\u0631\u0642\u0645 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0636\u0631\u064a\u0628\u064a \u0644\u0644\u0645\u0648\u0631\u062f:</td>\n        </tr>\n        <tr>\n          <td>{{ company.tax_id }}</td>\n          <td>{{ company.tax_id }}</td>\n        </tr>\n        {% endif %}\n        <tr>\n          <td>{{ company.name }}</td>\n          <td>{{ company.company_name_in_arabic }} </td>\n        </tr>\n        \n        \n        {% if(supplier_address_doc) %}\n        <tr>\n          <td>{{ supplier_address_doc.address_line1}} </td>\n          <td>{{ supplier_address_doc.address_in_arabic}} </td>\n        </tr>\n        <tr>\n          <td>Phone: {{ supplier_address_doc.phone }}</td>\n          <td>\u0647\u0627\u062a\u0641: {{ supplier_address_doc.phone }}</td>\n        </tr>\n        <tr>\n          <td>Email: {{ supplier_address_doc.email_id }}</td>\n          <td>\u0628\u0631\u064a\u062f \u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a: {{ supplier_address_doc.email_id }}</td>\n        </tr>\n        {% endif %}\n        \n        <!-- Customer Info -->\n        <tr>\n          <td>CUSTOMER:</td>\n          <td>\u0639\u0645\u064a\u0644:</td>\n        </tr>\n\t\t{% set customer_tax_id = frappe.db.get_value('Customer', doc.customer, 'tax_id') %}\n\t\t{% if customer_tax_id %}\n        <tr>\n          <td>Customer Tax Identification Number:</td>\n          <td>\u0631\u0642\u0645 \u0627\u0644\u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u0636\u0631\u064a\u0628\u064a \u0644\u0644\u0639\u0645\u064a\u0644:</td>\n        </tr>\n        <tr>\n          <td>{{ customer_tax_id }}</td>\n          <td>{{ customer_tax_id }}</td>\n        </tr>\n        {% endif %}\n        <tr>\n          <td> {{ doc.customer }}</td>\n          <td> {{ doc.customer_name_in_arabic }} </td>\n        </tr>\n        \n        {% if(customer_address) %}\n        <tr>\n          <td>{{ customer_address.address_line1}} </td>\n          <td>{{ customer_address.address_in_arabic}} </td>\n        </tr>\n        {% endif %}\n        \n        {% if(customer_shipping_address) %}\n        <tr>\n          <td>SHIPPING ADDRESS:</td>\n          <td>\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0634\u062d\u0646:</td>\n        </tr>\n        \n        <tr>\n          <td>{{ customer_shipping_address.address_line1}} </td>\n          <td>{{ customer_shipping_address.address_in_arabic}} </td>\n        </tr>\n        {% endif %}\n        \n\t\t{% if(doc.po_no) %}\n        <tr>\n          <td>OTHER INFORMATION</td>\n          <td>\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0623\u062e\u0631\u0649</td>\n        </tr>\n        \n        <tr>\n          <td>Purchase Order Number: {{ doc.po_no }}</td>\n          <td>\u0631\u0642\u0645 \u0623\u0645\u0631 \u0627\u0644\u0634\u0631\u0627\u0621: {{ doc.po_no }}</td>\n        </tr>\n        {% endif %}\n        \n        <tr>\n          <td>Payment Due Date: {{  doc.due_date}} </td>\n          <td>\u062a\u0627\u0631\u064a\u062e \u0627\u0633\u062a\u062d\u0642\u0627\u0642 \u0627\u0644\u062f\u0641\u0639: {{  doc.due_date}}</td>\n        </tr>\n      </tbody>\n    </table>\n\n    <!--Dynamic Colspan for total row columns-->\n    {% set col = namespace(one = 2, two = 1) %}\n    {% set length = doc.taxes | length %}\n    {% set length = length / 2 | round %}\n    {% set col.one = col.one + length %}\n    {% set col.two = col.two + length %}\n  \n    {%- if(doc.taxes | length % 2 > 0 ) -%}\n      {% set col.two = col.two + 1 %}\n    {% endif %}\n    \n    <!-- Items -->\n    {% set total = namespace(amount = 0) %}\n    <table class=\"ksa-invoice-table\">\n      <thead>\n        <tr>\n          <th>Nature of goods or services <br />\u0637\u0628\u064a\u0639\u0629 \u0627\u0644\u0633\u0644\u0639 \u0623\u0648 \u0627\u0644\u062e\u062f\u0645\u0627\u062a</th>\n          <th>\n            Unit price <br />\n            \u0633\u0639\u0631 \u0627\u0644\u0648\u062d\u062f\u0629\n          </th>\n          <th>\n            Quantity <br />\n            \u0627\u0644\u0643\u0645\u064a\u0629\n          </th>\n          <th>\n            Taxable Amount <br />\n            \u0627\u0644\u0645\u0628\u0644\u063a \u0627\u0644\u062e\u0627\u0636\u0639 \u0644\u0644\u0636\u0631\u064a\u0628\u0629\n          </th>\n          \n          {% for row in doc.taxes %}\n            <th style=\"min-width: 130px\">{{row.description}}</th>\n          {% endfor %}\n          \n          <th>\n            Total <br />\n            \u0627\u0644\u0645\u062c\u0645\u0648\u0639\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        {%- for item in doc.items -%}\n        {% set total.amount = item.amount %}\n        <tr>\n          <td>{{ item.item_code or item.item_name }}</td>\n          <td>{{ item.get_formatted(\"rate\") }}</td>\n          <td>{{ item.qty }}</td>\n          <td>{{ item.get_formatted(\"amount\") }}</td>\n           {% for row in doc.taxes %}\n                {% set data_object = json.loads(row.item_wise_tax_detail) %}\n                {% set key = item.item_code or item.item_name %}\n                {% set tax_amount = frappe.utils.flt(data_object[key][1]/doc.conversion_rate, row.precision('tax_amount')) %}\n                <td>\n                   <div class=\"qr-flex\">\n                    {%- if(data_object[key][0])-%}\n                    <span>{{ frappe.format(data_object[key][0], {'fieldtype': 'Percent'}) }}</span>\n                    {%- endif -%}\n                    <span>\n                    {%- if(data_object[key][1])-%}\n                        {{ frappe.format_value(tax_amount, currency=doc.currency) }}</span>\n                        {% set total.amount = total.amount + tax_amount %}\n                    {%- endif -%}\n                    </div>\n                </td>\n            {% endfor %}\n          <td>{{  frappe.format_value(frappe.utils.flt(total.amount, doc.precision('total_taxes_and_charges')), currency=doc.currency) }}</td>\n        </tr>\n        {%- endfor -%}\n      </tbody>\n      <tfoot>\n        <tr>\n          <td>\n            {{ doc.get_formatted(\"total\") }} <br />\n            {{ doc.get_formatted(\"total_taxes_and_charges\") }}\n          </td>\n          \n          <td colspan={{ col.one }} class=\"qr-rtl\">\n            \u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a \u0628\u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u0636\u0631\u064a\u0628\u0629 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0645\u0636\u0627\u0641\u0629\n            <br />\n            \u0625\u062c\u0645\u0627\u0644\u064a \u0636\u0631\u064a\u0628\u0629 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0645\u0636\u0627\u0641\u0629\n          </td>\n          <td colspan={{ col.two }}>\n            Total (Excluding VAT)\n            <br />\n            Total VAT\n          </td>\n          <td>\n            {{ doc.get_formatted(\"total\") }} <br />\n            {{ doc.get_formatted(\"total_taxes_and_charges\") }}\n          </td>\n        </tr>\n        <tr>\n          <td>{{ doc.get_formatted(\"grand_total\") }}</td>\n          <td  colspan={{  col.one }} class=\"qr-rtl\">\n              \u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0645\u0628\u0644\u063a \u0627\u0644\u0645\u0633\u062a\u062d\u0642</td>\n          <td  colspan={{  col.two }}>Total Amount Due</td>\n          <td>{{ doc.get_formatted(\"grand_total\") }}</td>\n        </tr>\n      </tfoot>\n    </table>\n\n\t{%- if doc.terms -%}\n    <p>\n      {{doc.terms}}\n    </p>\n\t{%- endif -%}\n</div>\n",
- "idx": 0,
- "line_breaks": 0,
- "margin_bottom": 15.0,
- "margin_left": 15.0,
- "margin_right": 15.0,
- "margin_top": 15.0,
- "modified": "2021-12-07 13:43:38.018593",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "KSA VAT Invoice",
- "owner": "Administrator",
- "page_number": "Hide",
- "print_format_builder": 0,
- "print_format_builder_beta": 0,
- "print_format_type": "Jinja",
- "raw_printing": 0,
- "show_section_headings": 0,
- "standard": "Yes"
-}
\ No newline at end of file
diff --git a/erpnext/regional/report/ksa_vat/__init__.py b/erpnext/regional/report/ksa_vat/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/report/ksa_vat/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/report/ksa_vat/ksa_vat.js b/erpnext/regional/report/ksa_vat/ksa_vat.js
deleted file mode 100644
index 59e72c3..0000000
--- a/erpnext/regional/report/ksa_vat/ksa_vat.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2016, Havenir Solutions and contributors
-// For license information, please see license.txt
-/* eslint-disable */
-
-frappe.query_reports["KSA VAT"] = {
-	onload() {
-		frappe.breadcrumbs.add('Accounts');
-	},
-	"filters": [
-		{
-			"fieldname": "company",
-			"label": __("Company"),
-			"fieldtype": "Link",
-			"options": "Company",
-			"reqd": 1,
-			"default": frappe.defaults.get_user_default("Company")
-		},
-		{
-			"fieldname": "from_date",
-			"label": __("From Date"),
-			"fieldtype": "Date",
-			"reqd": 1,
-			"default": frappe.datetime.add_months(frappe.datetime.get_today(), -1),
-		},
-		{
-			"fieldname": "to_date",
-			"label": __("To Date"),
-			"fieldtype": "Date",
-			"reqd": 1,
-			"default": frappe.datetime.get_today()
-		}
-	],
-	"formatter": function(value, row, column, data, default_formatter) {
-		if (data
-			&& (data.title=='VAT on Sales' || data.title=='VAT on Purchases')
-			&& data.title==value) {
-			value = $(`<span>${value}</span>`);
-			var $value = $(value).css("font-weight", "bold");
-			value = $value.wrap("<p></p>").parent().html();
-			return value
-		}else if (data.title=='Grand Total'){
-			if (data.title==value) {
-				value = $(`<span>${value}</span>`);
-				var $value = $(value).css("font-weight", "bold");
-				value = $value.wrap("<p></p>").parent().html();
-				return value
-			}else{
-				value = default_formatter(value, row, column, data);
-				value = $(`<span>${value}</span>`);
-				var $value = $(value).css("font-weight", "bold");
-				value = $value.wrap("<p></p>").parent().html();
-				return value
-			}
-		}else{
-			value = default_formatter(value, row, column, data);
-			return value;
-		}
-	},
-};
diff --git a/erpnext/regional/report/ksa_vat/ksa_vat.json b/erpnext/regional/report/ksa_vat/ksa_vat.json
deleted file mode 100644
index 036e260..0000000
--- a/erpnext/regional/report/ksa_vat/ksa_vat.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "add_total_row": 0,
- "columns": [],
- "creation": "2021-07-13 08:54:38.000949",
- "disable_prepared_report": 1,
- "disabled": 1,
- "docstatus": 0,
- "doctype": "Report",
- "filters": [],
- "idx": 0,
- "is_standard": "Yes",
- "modified": "2021-08-26 04:14:37.202594",
- "modified_by": "Administrator",
- "module": "Regional",
- "name": "KSA VAT",
- "owner": "Administrator",
- "prepared_report": 1,
- "ref_doctype": "GL Entry",
- "report_name": "KSA VAT",
- "report_type": "Script Report",
- "roles": [
-  {
-   "role": "System Manager"
-  },
-  {
-   "role": "Accounts Manager"
-  },
-  {
-   "role": "Accounts User"
-  }
- ]
-}
\ No newline at end of file
diff --git a/erpnext/regional/report/ksa_vat/ksa_vat.py b/erpnext/regional/report/ksa_vat/ksa_vat.py
deleted file mode 100644
index 15996d2..0000000
--- a/erpnext/regional/report/ksa_vat/ksa_vat.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# Copyright (c) 2013, Havenir Solutions and contributors
-# For license information, please see license.txt
-
-
-import json
-
-import frappe
-from frappe import _
-from frappe.utils import get_url_to_list
-
-
-def execute(filters=None):
-	columns = columns = get_columns()
-	data = get_data(filters)
-	return columns, data
-
-
-def get_columns():
-	return [
-		{
-			"fieldname": "title",
-			"label": _("Title"),
-			"fieldtype": "Data",
-			"width": 300,
-		},
-		{
-			"fieldname": "amount",
-			"label": _("Amount (SAR)"),
-			"fieldtype": "Currency",
-			"options": "currency",
-			"width": 150,
-		},
-		{
-			"fieldname": "adjustment_amount",
-			"label": _("Adjustment (SAR)"),
-			"fieldtype": "Currency",
-			"options": "currency",
-			"width": 150,
-		},
-		{
-			"fieldname": "vat_amount",
-			"label": _("VAT Amount (SAR)"),
-			"fieldtype": "Currency",
-			"options": "currency",
-			"width": 150,
-		},
-		{
-			"fieldname": "currency",
-			"label": _("Currency"),
-			"fieldtype": "Currency",
-			"width": 150,
-			"hidden": 1,
-		},
-	]
-
-
-def get_data(filters):
-	data = []
-
-	# Validate if vat settings exist
-	company = filters.get("company")
-	company_currency = frappe.get_cached_value("Company", company, "default_currency")
-
-	if frappe.db.exists("KSA VAT Setting", company) is None:
-		url = get_url_to_list("KSA VAT Setting")
-		frappe.msgprint(_('Create <a href="{}">KSA VAT Setting</a> for this company').format(url))
-		return data
-
-	ksa_vat_setting = frappe.get_doc("KSA VAT Setting", company)
-
-	# Sales Heading
-	append_data(data, "VAT on Sales", "", "", "", company_currency)
-
-	grand_total_taxable_amount = 0
-	grand_total_taxable_adjustment_amount = 0
-	grand_total_tax = 0
-
-	for vat_setting in ksa_vat_setting.ksa_vat_sales_accounts:
-		(
-			total_taxable_amount,
-			total_taxable_adjustment_amount,
-			total_tax,
-		) = get_tax_data_for_each_vat_setting(vat_setting, filters, "Sales Invoice")
-
-		# Adding results to data
-		append_data(
-			data,
-			vat_setting.title,
-			total_taxable_amount,
-			total_taxable_adjustment_amount,
-			total_tax,
-			company_currency,
-		)
-
-		grand_total_taxable_amount += total_taxable_amount
-		grand_total_taxable_adjustment_amount += total_taxable_adjustment_amount
-		grand_total_tax += total_tax
-
-	# Sales Grand Total
-	append_data(
-		data,
-		"Grand Total",
-		grand_total_taxable_amount,
-		grand_total_taxable_adjustment_amount,
-		grand_total_tax,
-		company_currency,
-	)
-
-	# Blank Line
-	append_data(data, "", "", "", "", company_currency)
-
-	# Purchase Heading
-	append_data(data, "VAT on Purchases", "", "", "", company_currency)
-
-	grand_total_taxable_amount = 0
-	grand_total_taxable_adjustment_amount = 0
-	grand_total_tax = 0
-
-	for vat_setting in ksa_vat_setting.ksa_vat_purchase_accounts:
-		(
-			total_taxable_amount,
-			total_taxable_adjustment_amount,
-			total_tax,
-		) = get_tax_data_for_each_vat_setting(vat_setting, filters, "Purchase Invoice")
-
-		# Adding results to data
-		append_data(
-			data,
-			vat_setting.title,
-			total_taxable_amount,
-			total_taxable_adjustment_amount,
-			total_tax,
-			company_currency,
-		)
-
-		grand_total_taxable_amount += total_taxable_amount
-		grand_total_taxable_adjustment_amount += total_taxable_adjustment_amount
-		grand_total_tax += total_tax
-
-	# Purchase Grand Total
-	append_data(
-		data,
-		"Grand Total",
-		grand_total_taxable_amount,
-		grand_total_taxable_adjustment_amount,
-		grand_total_tax,
-		company_currency,
-	)
-
-	return data
-
-
-def get_tax_data_for_each_vat_setting(vat_setting, filters, doctype):
-	"""
-	(KSA, {filters}, 'Sales Invoice') => 500, 153, 10 \n
-	calculates and returns \n
-	total_taxable_amount, total_taxable_adjustment_amount, total_tax"""
-	from_date = filters.get("from_date")
-	to_date = filters.get("to_date")
-
-	# Initiate variables
-	total_taxable_amount = 0
-	total_taxable_adjustment_amount = 0
-	total_tax = 0
-	# Fetch All Invoices
-	invoices = frappe.get_all(
-		doctype,
-		filters={"docstatus": 1, "posting_date": ["between", [from_date, to_date]]},
-		fields=["name", "is_return"],
-	)
-
-	for invoice in invoices:
-		invoice_items = frappe.get_all(
-			f"{doctype} Item",
-			filters={
-				"docstatus": 1,
-				"parent": invoice.name,
-				"item_tax_template": vat_setting.item_tax_template,
-			},
-			fields=["item_code", "net_amount"],
-		)
-
-		for item in invoice_items:
-			# Summing up total taxable amount
-			if invoice.is_return == 0:
-				total_taxable_amount += item.net_amount
-
-			if invoice.is_return == 1:
-				total_taxable_adjustment_amount += item.net_amount
-
-			# Summing up total tax
-			total_tax += get_tax_amount(item.item_code, vat_setting.account, doctype, invoice.name)
-
-	return total_taxable_amount, total_taxable_adjustment_amount, total_tax
-
-
-def append_data(data, title, amount, adjustment_amount, vat_amount, company_currency):
-	"""Returns data with appended value."""
-	data.append(
-		{
-			"title": _(title),
-			"amount": amount,
-			"adjustment_amount": adjustment_amount,
-			"vat_amount": vat_amount,
-			"currency": company_currency,
-		}
-	)
-
-
-def get_tax_amount(item_code, account_head, doctype, parent):
-	if doctype == "Sales Invoice":
-		tax_doctype = "Sales Taxes and Charges"
-
-	elif doctype == "Purchase Invoice":
-		tax_doctype = "Purchase Taxes and Charges"
-
-	item_wise_tax_detail = frappe.get_value(
-		tax_doctype,
-		{"docstatus": 1, "parent": parent, "account_head": account_head},
-		"item_wise_tax_detail",
-	)
-
-	tax_amount = 0
-	if item_wise_tax_detail and len(item_wise_tax_detail) > 0:
-		item_wise_tax_detail = json.loads(item_wise_tax_detail)
-		for key, value in item_wise_tax_detail.items():
-			if key == item_code:
-				tax_amount = value[1]
-				break
-
-	return tax_amount
diff --git a/erpnext/regional/saudi_arabia/__init__.py b/erpnext/regional/saudi_arabia/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/saudi_arabia/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/saudi_arabia/setup.py b/erpnext/regional/saudi_arabia/setup.py
deleted file mode 100644
index 7f41c46..0000000
--- a/erpnext/regional/saudi_arabia/setup.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-import frappe
-from frappe.permissions import add_permission, update_permission_property
-from erpnext.regional.saudi_arabia.wizard.operations.setup_ksa_vat_setting import (
-	create_ksa_vat_setting,
-)
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-
-def setup(company=None, patch=True):
-	add_print_formats()
-	add_permissions()
-	make_custom_fields()
-
-
-def add_print_formats():
-	frappe.reload_doc("regional", "print_format", "detailed_tax_invoice", force=True)
-	frappe.reload_doc("regional", "print_format", "simplified_tax_invoice", force=True)
-	frappe.reload_doc("regional", "print_format", "tax_invoice", force=True)
-	frappe.reload_doc("regional", "print_format", "ksa_vat_invoice", force=True)
-	frappe.reload_doc("regional", "print_format", "ksa_pos_invoice", force=True)
-
-	for d in (
-		"Simplified Tax Invoice",
-		"Detailed Tax Invoice",
-		"Tax Invoice",
-		"KSA VAT Invoice",
-		"KSA POS Invoice",
-	):
-		frappe.db.set_value("Print Format", d, "disabled", 0)
-
-
-def add_permissions():
-	"""Add Permissions for KSA VAT Setting."""
-	add_permission("KSA VAT Setting", "All", 0)
-	for role in ("Accounts Manager", "Accounts User", "System Manager"):
-		add_permission("KSA VAT Setting", role, 0)
-		update_permission_property("KSA VAT Setting", role, 0, "write", 1)
-		update_permission_property("KSA VAT Setting", role, 0, "create", 1)
-
-	"""Enable KSA VAT Report"""
-	frappe.db.set_value("Report", "KSA VAT", "disabled", 0)
-
-
-def make_custom_fields():
-	"""Create Custom fields
-	- QR code Image file
-	- Company Name in Arabic
-	- Address in Arabic
-	"""
-	is_zero_rated = dict(
-		fieldname="is_zero_rated",
-		label="Is Zero Rated",
-		fieldtype="Check",
-		fetch_from="item_code.is_zero_rated",
-		insert_after="description",
-		print_hide=1,
-	)
-
-	is_exempt = dict(
-		fieldname="is_exempt",
-		label="Is Exempt",
-		fieldtype="Check",
-		fetch_from="item_code.is_exempt",
-		insert_after="is_zero_rated",
-		print_hide=1,
-	)
-
-	purchase_invoice_fields = [
-		dict(
-			fieldname="company_trn",
-			label="Company TRN",
-			fieldtype="Read Only",
-			insert_after="shipping_address",
-			fetch_from="company.tax_id",
-			print_hide=1,
-		),
-		dict(
-			fieldname="supplier_name_in_arabic",
-			label="Supplier Name in Arabic",
-			fieldtype="Read Only",
-			insert_after="supplier_name",
-			fetch_from="supplier.supplier_name_in_arabic",
-			print_hide=1,
-		),
-	]
-
-	sales_invoice_fields = [
-		dict(
-			fieldname="company_trn",
-			label="Company TRN",
-			fieldtype="Read Only",
-			insert_after="company_address",
-			fetch_from="company.tax_id",
-			print_hide=1,
-		),
-		dict(
-			fieldname="customer_name_in_arabic",
-			label="Customer Name in Arabic",
-			fieldtype="Read Only",
-			insert_after="customer_name",
-			fetch_from="customer.customer_name_in_arabic",
-			print_hide=1,
-		),
-		dict(
-			fieldname="ksa_einv_qr",
-			label="KSA E-Invoicing QR",
-			fieldtype="Attach Image",
-			read_only=1,
-			no_copy=1,
-			hidden=1,
-		),
-	]
-
-	custom_fields = {
-		"Item": [is_zero_rated, is_exempt],
-		"Customer": [
-			dict(
-				fieldname="customer_name_in_arabic",
-				label="Customer Name in Arabic",
-				fieldtype="Data",
-				insert_after="customer_name",
-			),
-		],
-		"Supplier": [
-			dict(
-				fieldname="supplier_name_in_arabic",
-				label="Supplier Name in Arabic",
-				fieldtype="Data",
-				insert_after="supplier_name",
-			),
-		],
-		"Purchase Invoice": purchase_invoice_fields,
-		"Purchase Order": purchase_invoice_fields,
-		"Purchase Receipt": purchase_invoice_fields,
-		"Sales Invoice": sales_invoice_fields,
-		"POS Invoice": sales_invoice_fields,
-		"Sales Order": sales_invoice_fields,
-		"Delivery Note": sales_invoice_fields,
-		"Sales Invoice Item": [is_zero_rated, is_exempt],
-		"POS Invoice Item": [is_zero_rated, is_exempt],
-		"Purchase Invoice Item": [is_zero_rated, is_exempt],
-		"Sales Order Item": [is_zero_rated, is_exempt],
-		"Delivery Note Item": [is_zero_rated, is_exempt],
-		"Quotation Item": [is_zero_rated, is_exempt],
-		"Purchase Order Item": [is_zero_rated, is_exempt],
-		"Purchase Receipt Item": [is_zero_rated, is_exempt],
-		"Supplier Quotation Item": [is_zero_rated, is_exempt],
-		"Address": [
-			dict(
-				fieldname="address_in_arabic",
-				label="Address in Arabic",
-				fieldtype="Data",
-				insert_after="address_line2",
-			)
-		],
-		"Company": [
-			dict(
-				fieldname="company_name_in_arabic",
-				label="Company Name In Arabic",
-				fieldtype="Data",
-				insert_after="company_name",
-			)
-		],
-	}
-
-	create_custom_fields(custom_fields, ignore_validate=True, update=True)
-
-
-def update_regional_tax_settings(country, company):
-	create_ksa_vat_setting(company)
diff --git a/erpnext/regional/saudi_arabia/utils.py b/erpnext/regional/saudi_arabia/utils.py
deleted file mode 100644
index cac5ec1..0000000
--- a/erpnext/regional/saudi_arabia/utils.py
+++ /dev/null
@@ -1,169 +0,0 @@
-import io
-import os
-from base64 import b64encode
-
-import frappe
-from frappe import _
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-from frappe.utils.data import add_to_date, get_time, getdate
-from pyqrcode import create as qr_create
-
-from erpnext import get_region
-
-
-def create_qr_code(doc, method=None):
-	region = get_region(doc.company)
-	if region not in ["Saudi Arabia"]:
-		return
-
-	# if QR Code field not present, create it. Invoices without QR are invalid as per law.
-	if not hasattr(doc, "ksa_einv_qr"):
-		create_custom_fields(
-			{
-				doc.doctype: [
-					dict(
-						fieldname="ksa_einv_qr",
-						label="KSA E-Invoicing QR",
-						fieldtype="Attach Image",
-						read_only=1,
-						no_copy=1,
-						hidden=1,
-					)
-				]
-			}
-		)
-
-	# Don't create QR Code if it already exists
-	qr_code = doc.get("ksa_einv_qr")
-	if qr_code and frappe.db.exists({"doctype": "File", "file_url": qr_code}):
-		return
-
-	meta = frappe.get_meta(doc.doctype)
-
-	if "ksa_einv_qr" in [d.fieldname for d in meta.get_image_fields()]:
-		"""TLV conversion for
-		1. Seller's Name
-		2. VAT Number
-		3. Time Stamp
-		4. Invoice Amount
-		5. VAT Amount
-		"""
-		tlv_array = []
-		# Sellers Name
-
-		seller_name = frappe.db.get_value("Company", doc.company, "company_name_in_arabic")
-
-		if not seller_name:
-			frappe.throw(_("Arabic name missing for {} in the company document").format(doc.company))
-
-		tag = bytes([1]).hex()
-		length = bytes([len(seller_name.encode("utf-8"))]).hex()
-		value = seller_name.encode("utf-8").hex()
-		tlv_array.append("".join([tag, length, value]))
-
-		# VAT Number
-		tax_id = frappe.db.get_value("Company", doc.company, "tax_id")
-		if not tax_id:
-			frappe.throw(_("Tax ID missing for {} in the company document").format(doc.company))
-
-		tag = bytes([2]).hex()
-		length = bytes([len(tax_id)]).hex()
-		value = tax_id.encode("utf-8").hex()
-		tlv_array.append("".join([tag, length, value]))
-
-		# Time Stamp
-		posting_date = getdate(doc.posting_date)
-		time = get_time(doc.posting_time)
-		seconds = time.hour * 60 * 60 + time.minute * 60 + time.second
-		time_stamp = add_to_date(posting_date, seconds=seconds)
-		time_stamp = time_stamp.strftime("%Y-%m-%dT%H:%M:%SZ")
-
-		tag = bytes([3]).hex()
-		length = bytes([len(time_stamp)]).hex()
-		value = time_stamp.encode("utf-8").hex()
-		tlv_array.append("".join([tag, length, value]))
-
-		# Invoice Amount
-		invoice_amount = str(doc.base_grand_total)
-		tag = bytes([4]).hex()
-		length = bytes([len(invoice_amount)]).hex()
-		value = invoice_amount.encode("utf-8").hex()
-		tlv_array.append("".join([tag, length, value]))
-
-		# VAT Amount
-		vat_amount = str(get_vat_amount(doc))
-
-		tag = bytes([5]).hex()
-		length = bytes([len(vat_amount)]).hex()
-		value = vat_amount.encode("utf-8").hex()
-		tlv_array.append("".join([tag, length, value]))
-
-		# Joining bytes into one
-		tlv_buff = "".join(tlv_array)
-
-		# base64 conversion for QR Code
-		base64_string = b64encode(bytes.fromhex(tlv_buff)).decode()
-
-		qr_image = io.BytesIO()
-		url = qr_create(base64_string, error="L")
-		url.png(qr_image, scale=2, quiet_zone=1)
-
-		name = frappe.generate_hash(doc.name, 5)
-
-		# making file
-		filename = f"QRCode-{name}.png".replace(os.path.sep, "__")
-		_file = frappe.get_doc(
-			{
-				"doctype": "File",
-				"file_name": filename,
-				"is_private": 0,
-				"content": qr_image.getvalue(),
-				"attached_to_doctype": doc.get("doctype"),
-				"attached_to_name": doc.get("name"),
-				"attached_to_field": "ksa_einv_qr",
-			}
-		)
-
-		_file.save()
-
-		# assigning to document
-		doc.db_set("ksa_einv_qr", _file.file_url)
-		doc.notify_update()
-
-
-def get_vat_amount(doc):
-	vat_settings = frappe.db.get_value("KSA VAT Setting", {"company": doc.company})
-	vat_accounts = []
-	vat_amount = 0
-
-	if vat_settings:
-		vat_settings_doc = frappe.get_cached_doc("KSA VAT Setting", vat_settings)
-
-		for row in vat_settings_doc.get("ksa_vat_sales_accounts"):
-			vat_accounts.append(row.account)
-
-	for tax in doc.get("taxes"):
-		if tax.account_head in vat_accounts:
-			vat_amount += tax.base_tax_amount
-
-	return vat_amount
-
-
-def delete_qr_code_file(doc, method=None):
-	region = get_region(doc.company)
-	if region not in ["Saudi Arabia"]:
-		return
-
-	if hasattr(doc, "ksa_einv_qr"):
-		if doc.get("ksa_einv_qr"):
-			file_doc = frappe.get_list("File", {"file_url": doc.get("ksa_einv_qr")})
-			if len(file_doc):
-				frappe.delete_doc("File", file_doc[0].name)
-
-
-def delete_vat_settings_for_company(doc, method=None):
-	if doc.country != "Saudi Arabia":
-		return
-
-	if frappe.db.exists("KSA VAT Setting", doc.name):
-		frappe.delete_doc("KSA VAT Setting", doc.name)
diff --git a/erpnext/regional/saudi_arabia/wizard/__init__.py b/erpnext/regional/saudi_arabia/wizard/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/saudi_arabia/wizard/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/saudi_arabia/wizard/data/__init__.py b/erpnext/regional/saudi_arabia/wizard/data/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/saudi_arabia/wizard/data/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/saudi_arabia/wizard/data/ksa_vat_settings.json b/erpnext/regional/saudi_arabia/wizard/data/ksa_vat_settings.json
deleted file mode 100644
index 60951a9..0000000
--- a/erpnext/regional/saudi_arabia/wizard/data/ksa_vat_settings.json
+++ /dev/null
@@ -1,47 +0,0 @@
-[
-    {
-        "type": "Sales Account",
-        "accounts": [
-            {
-                "title": "Standard rated Sales",
-                "item_tax_template": "KSA VAT 5%",
-                "account": "VAT 5%"
-            },
-            {
-                "title": "Zero rated domestic sales",
-                "item_tax_template": "KSA VAT Zero",
-                "account": "VAT Zero"
-            },
-            {
-                "title": "Exempted sales",
-                "item_tax_template": "KSA VAT Exempted",
-                "account": "VAT Exempted"
-            }
-        ]
-    },
-    {
-        "type": "Purchase Account",
-        "accounts": [
-            {
-                "title": "Standard rated domestic purchases",
-                "item_tax_template": "KSA VAT 5%",
-                "account": "VAT 5%"
-            },
-            {
-                "title": "Imports subject to VAT paid at customs",
-                "item_tax_template": "KSA Excise 50%",
-                "account": "Excise 50%"
-            },
-            {
-                "title": "Zero rated purchases",
-                "item_tax_template": "KSA VAT Zero",
-                "account": "VAT Zero"
-            },
-            {
-                "title": "Exempted purchases",
-                "item_tax_template": "KSA VAT Exempted",
-                "account": "VAT Exempted"
-            }
-        ]
-    }
-]
\ No newline at end of file
diff --git a/erpnext/regional/saudi_arabia/wizard/operations/__init__.py b/erpnext/regional/saudi_arabia/wizard/operations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/regional/saudi_arabia/wizard/operations/__init__.py
+++ /dev/null
diff --git a/erpnext/regional/saudi_arabia/wizard/operations/setup_ksa_vat_setting.py b/erpnext/regional/saudi_arabia/wizard/operations/setup_ksa_vat_setting.py
deleted file mode 100644
index 66d9df2..0000000
--- a/erpnext/regional/saudi_arabia/wizard/operations/setup_ksa_vat_setting.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import json
-import os
-
-import frappe
-
-
-def create_ksa_vat_setting(company):
-	"""On creation of first company. Creates KSA VAT Setting"""
-
-	company = frappe.get_doc("Company", company)
-
-	file_path = os.path.join(os.path.dirname(__file__), "..", "data", "ksa_vat_settings.json")
-	with open(file_path, "r") as json_file:
-		account_data = json.load(json_file)
-
-	# Creating KSA VAT Setting
-	ksa_vat_setting = frappe.get_doc({"doctype": "KSA VAT Setting", "company": company.name})
-
-	for data in account_data:
-		if data["type"] == "Sales Account":
-			for row in data["accounts"]:
-				item_tax_template = row["item_tax_template"]
-				account = row["account"]
-				ksa_vat_setting.append(
-					"ksa_vat_sales_accounts",
-					{
-						"title": row["title"],
-						"item_tax_template": f"{item_tax_template} - {company.abbr}",
-						"account": f"{account} - {company.abbr}",
-					},
-				)
-
-		elif data["type"] == "Purchase Account":
-			for row in data["accounts"]:
-				item_tax_template = row["item_tax_template"]
-				account = row["account"]
-				ksa_vat_setting.append(
-					"ksa_vat_purchase_accounts",
-					{
-						"title": row["title"],
-						"item_tax_template": f"{item_tax_template} - {company.abbr}",
-						"account": f"{account} - {company.abbr}",
-					},
-				)
-
-	ksa_vat_setting.save()
diff --git a/erpnext/setup/setup_wizard/data/country_wise_tax.json b/erpnext/setup/setup_wizard/data/country_wise_tax.json
index 45e39c5..5750914 100644
--- a/erpnext/setup/setup_wizard/data/country_wise_tax.json
+++ b/erpnext/setup/setup_wizard/data/country_wise_tax.json
@@ -4015,34 +4015,6 @@
 			"tax_rate": 18.00
 		}
 	},
-
-	"Saudi Arabia": {
-		"KSA VAT 15%": {
-			"account_name": "VAT 15%",
-			"tax_rate": 15.00
-		},
-		"KSA VAT 5%": {
-			"account_name": "VAT 5%",
-			"tax_rate": 5.00
-		},
-		"KSA VAT Zero": {
-			"account_name": "VAT Zero",
-			"tax_rate": 0.00
-		},
-		"KSA VAT Exempted": {
-			"account_name": "VAT Exempted",
-			"tax_rate": 0.00
-		},
-		"KSA Excise 50%": {
-			"account_name": "Excise 50%",
-			"tax_rate": 50.00
-		},
-		"KSA Excise 100%": {
-			"account_name": "Excise 100%",
-			"tax_rate": 100.00
-		}
-	},
-
 	"Serbia": {
 		"Serbia Tax": {
 			"account_name": "VAT",