fix: remove patches
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 7560f2f..1908faa 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -10,9 +10,6 @@
 erpnext.patches.v5_7.update_item_description_based_on_item_master
 erpnext.patches.v4_2.repost_reserved_qty #2021-03-31
 execute:frappe.reload_doc("Payroll", "doctype", "salary_slip")
-erpnext.patches.v8_1.setup_gst_india #2017-06-27
-erpnext.patches.v8_1.removed_roles_from_gst_report_non_indian_account #16-08-2018
-erpnext.patches.v8_7.sync_india_custom_fields
 erpnext.patches.v10_0.fichier_des_ecritures_comptables_for_france
 erpnext.patches.v10_0.rename_price_to_rate_in_pricing_rule
 erpnext.patches.v10_0.set_currency_in_pricing_rule
@@ -46,7 +43,6 @@
 erpnext.patches.v11_0.move_item_defaults_to_child_table_for_multicompany #02-07-2018 #19-06-2019
 erpnext.patches.v11_0.rename_overproduction_percent_field
 erpnext.patches.v11_0.update_backflush_subcontract_rm_based_on_bom
-erpnext.patches.v11_0.inter_state_field_for_gst
 erpnext.patches.v11_0.rename_members_with_naming_series #04-06-2018
 erpnext.patches.v11_0.set_update_field_and_value_in_workflow_state
 erpnext.patches.v11_0.update_total_qty_field
@@ -68,20 +64,15 @@
 execute:frappe.delete_doc_if_exists("Page", "purchase-analytics")
 execute:frappe.delete_doc_if_exists("Page", "stock-analytics")
 execute:frappe.delete_doc_if_exists("Page", "production-analytics")
-erpnext.patches.v11_0.ewaybill_fields_gst_india #2018-11-13 #2019-01-09 #2019-04-01 #2019-04-26 #2019-05-03
 erpnext.patches.v11_0.drop_column_max_days_allowed
 erpnext.patches.v10_0.item_barcode_childtable_migrate # 16-02-2019
 erpnext.patches.v11_0.update_delivery_trip_status
-erpnext.patches.v11_0.set_missing_gst_hsn_code
 erpnext.patches.v11_0.rename_bom_wo_fields
 erpnext.patches.v12_0.set_default_homepage_type
 erpnext.patches.v11_0.rename_additional_salary_component_additional_salary
 erpnext.patches.v11_0.renamed_from_to_fields_in_project
-erpnext.patches.v11_0.add_permissions_in_gst_settings #2020-04-04
 erpnext.patches.v11_1.setup_guardian_role
 execute:frappe.delete_doc('DocType', 'Notification Control')
-erpnext.patches.v12_0.set_gst_category
-erpnext.patches.v12_0.update_gst_category
 erpnext.patches.v11_0.remove_barcodes_field_from_copy_fields_to_variants
 erpnext.patches.v12_0.set_task_status
 erpnext.patches.v11_0.make_italian_localization_fields # 26-03-2019
@@ -118,7 +109,6 @@
 erpnext.patches.v11_1.update_default_supplier_in_item_defaults
 erpnext.patches.v12_0.update_due_date_in_gle
 erpnext.patches.v12_0.add_default_buying_selling_terms_in_company
-erpnext.patches.v12_0.update_ewaybill_field_position
 erpnext.patches.v12_0.create_accounting_dimensions_in_missing_doctypes #2020-05-11
 erpnext.patches.v11_1.set_status_for_material_request_type_manufacture
 erpnext.patches.v12_0.move_plaid_settings_to_doctype
@@ -141,14 +131,12 @@
 erpnext.patches.v12_0.set_automatically_process_deferred_accounting_in_accounts_settings
 erpnext.patches.v12_0.set_payment_entry_status
 erpnext.patches.v12_0.update_owner_fields_in_acc_dimension_custom_fields
-erpnext.patches.v12_0.add_export_type_field_in_party_master
 erpnext.patches.v12_0.remove_denied_leaves_from_leave_ledger
 erpnext.patches.v12_0.update_price_or_product_discount
 erpnext.patches.v12_0.set_production_capacity_in_workstation
 erpnext.patches.v12_0.set_employee_preferred_emails
 erpnext.patches.v12_0.set_against_blanket_order_in_sales_and_purchase_order
 erpnext.patches.v12_0.set_cost_center_in_child_table_of_expense_claim
-erpnext.patches.v12_0.add_eway_bill_in_delivery_note
 erpnext.patches.v12_0.set_lead_title_field
 erpnext.patches.v12_0.set_permission_einvoicing
 erpnext.patches.v12_0.set_job_offer_applicant_email
@@ -196,7 +184,6 @@
 erpnext.patches.v13_0.update_subscription
 erpnext.patches.v12_0.unhide_cost_center_field
 erpnext.patches.v13_0.update_sla_enhancements
-erpnext.patches.v12_0.update_address_template_for_india
 erpnext.patches.v13_0.update_deferred_settings
 erpnext.patches.v12_0.set_multi_uom_in_rfq
 erpnext.patches.v13_0.delete_old_sales_reports
@@ -225,7 +212,6 @@
 erpnext.patches.v13_0.set_app_name
 erpnext.patches.v13_0.print_uom_after_quantity_patch
 erpnext.patches.v13_0.set_payment_channel_in_payment_gateway_account
-erpnext.patches.v12_0.setup_einvoice_fields #2020-12-02
 erpnext.patches.v13_0.updates_for_multi_currency_payroll
 erpnext.patches.v13_0.update_reason_for_resignation_in_employee
 execute:frappe.delete_doc("Report", "Quoted Item Comparison")
@@ -245,22 +231,18 @@
 erpnext.patches.v13_0.item_reposting_for_incorrect_sl_and_gl
 erpnext.patches.v13_0.delete_old_bank_reconciliation_doctypes
 erpnext.patches.v13_0.update_vehicle_no_reqd_condition
-erpnext.patches.v12_0.add_einvoice_status_field #2021-03-17
-erpnext.patches.v12_0.add_einvoice_summary_report_permissions
 erpnext.patches.v13_0.setup_fields_for_80g_certificate_and_donation
 erpnext.patches.v13_0.rename_membership_settings_to_non_profit_settings
 erpnext.patches.v13_0.setup_gratuity_rule_for_india_and_uae
 erpnext.patches.v13_0.setup_uae_vat_fields
 execute:frappe.db.set_value('System Settings', None, 'app_name', 'ERPNext')
 erpnext.patches.v12_0.create_taxable_value_field
-erpnext.patches.v12_0.add_gst_category_in_delivery_note
 erpnext.patches.v12_0.purchase_receipt_status
 erpnext.patches.v13_0.fix_non_unique_represents_company
 erpnext.patches.v12_0.add_document_type_field_for_italy_einvoicing
 erpnext.patches.v13_0.make_non_standard_user_type #13-04-2021 #17-01-2022
 erpnext.patches.v13_0.update_shipment_status
 erpnext.patches.v13_0.remove_attribute_field_from_item_variant_setting
-erpnext.patches.v12_0.add_ewaybill_validity_field
 erpnext.patches.v13_0.germany_make_custom_fields
 erpnext.patches.v13_0.germany_fill_debtor_creditor_number
 erpnext.patches.v13_0.set_pos_closing_as_failed
@@ -276,9 +258,7 @@
 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.v12_0.show_einvoice_irn_cancelled_field
 erpnext.patches.v13_0.delete_orphaned_tables
-erpnext.patches.v13_0.update_export_type_for_gst #2021-08-16
 erpnext.patches.v13_0.update_tds_check_field #3
 erpnext.patches.v13_0.add_custom_field_for_south_africa #2
 erpnext.patches.v13_0.update_recipient_email_digest
@@ -291,7 +271,6 @@
 execute:frappe.reload_doc("erpnext_integrations", "doctype", "Product Tax Category")
 erpnext.patches.v13_0.custom_fields_for_taxjar_integration          #08-11-2021
 erpnext.patches.v13_0.set_operation_time_based_on_operating_cost
-erpnext.patches.v13_0.create_gst_payment_entry_fields #27-11-2021
 erpnext.patches.v13_0.fix_invoice_statuses
 erpnext.patches.v13_0.create_website_items #30-09-2021
 erpnext.patches.v13_0.populate_e_commerce_settings
@@ -299,7 +278,6 @@
 erpnext.patches.v13_0.replace_supplier_item_group_with_party_specific_item
 erpnext.patches.v13_0.update_dates_in_tax_withholding_category
 erpnext.patches.v14_0.update_opportunity_currency_fields
-erpnext.patches.v13_0.gst_fields_for_pos_invoice
 erpnext.patches.v13_0.create_accounting_dimensions_in_pos_doctypes
 erpnext.patches.v13_0.trim_sales_invoice_custom_field_length
 erpnext.patches.v13_0.create_custom_field_for_finance_book
@@ -316,7 +294,6 @@
 erpnext.patches.v13_0.item_naming_series_not_mandatory
 erpnext.patches.v14_0.delete_healthcare_doctypes
 erpnext.patches.v13_0.update_category_in_ltds_certificate
-erpnext.patches.v13_0.create_pan_field_for_india #2
 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
@@ -324,7 +301,6 @@
 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.update_tax_category_for_rcm
 execute:frappe.delete_doc_if_exists('Workspace', 'ERPNext Integrations Settings')
 erpnext.patches.v14_0.set_payroll_cost_centers
 erpnext.patches.v13_0.agriculture_deprecation_warning
@@ -342,9 +318,7 @@
 erpnext.patches.v14_0.delete_agriculture_doctypes
 erpnext.patches.v14_0.rearrange_company_fields
 erpnext.patches.v14_0.update_leave_notification_template
-erpnext.patches.v14_0.restore_einvoice_fields
 erpnext.patches.v13_0.update_sane_transfer_against
-erpnext.patches.v12_0.add_company_link_to_einvoice_settings
 erpnext.patches.v14_0.migrate_cost_center_allocations
 erpnext.patches.v13_0.convert_to_website_item_in_item_card_group_template
 erpnext.patches.v13_0.shopping_cart_to_ecommerce
diff --git a/erpnext/patches/v11_0/add_permissions_in_gst_settings.py b/erpnext/patches/v11_0/add_permissions_in_gst_settings.py
deleted file mode 100644
index 9df1b58..0000000
--- a/erpnext/patches/v11_0/add_permissions_in_gst_settings.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import frappe
-
-from erpnext.regional.india.setup import add_permissions
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	frappe.reload_doc("regional", "doctype", "lower_deduction_certificate")
-	frappe.reload_doc("regional", "doctype", "gstr_3b_report")
-	add_permissions()
diff --git a/erpnext/patches/v11_0/ewaybill_fields_gst_india.py b/erpnext/patches/v11_0/ewaybill_fields_gst_india.py
deleted file mode 100644
index 5974e27..0000000
--- a/erpnext/patches/v11_0/ewaybill_fields_gst_india.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import frappe
-
-from erpnext.regional.india.setup import make_custom_fields
-
-
-def execute():
-    company = frappe.get_all('Company', filters = {'country': 'India'})
-    if not company:
-        return
-
-    make_custom_fields()
diff --git a/erpnext/patches/v11_0/inter_state_field_for_gst.py b/erpnext/patches/v11_0/inter_state_field_for_gst.py
deleted file mode 100644
index a1f1594..0000000
--- a/erpnext/patches/v11_0/inter_state_field_for_gst.py
+++ /dev/null
@@ -1,72 +0,0 @@
-import frappe
-
-from erpnext.regional.india.setup import make_custom_fields
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-	frappe.reload_doc("Payroll", "doctype", "Employee Tax Exemption Declaration")
-	frappe.reload_doc("Payroll", "doctype", "Employee Tax Exemption Proof Submission")
-	frappe.reload_doc("hr", "doctype", "Employee Grade")
-	frappe.reload_doc("hr", "doctype", "Leave Policy")
-
-	frappe.reload_doc("accounts", "doctype", "Bank Account")
-	frappe.reload_doc("accounts", "doctype", "Tax Withholding Category")
-	frappe.reload_doc("accounts", "doctype", "Allowed To Transact With")
-	frappe.reload_doc("accounts", "doctype", "Finance Book")
-	frappe.reload_doc("accounts", "doctype", "Loyalty Program")
-
-	frappe.reload_doc("stock", "doctype", "Item Barcode")
-
-	make_custom_fields()
-
-	frappe.reload_doc("accounts", "doctype", "sales_taxes_and_charges")
-	frappe.reload_doc("accounts", "doctype", "purchase_taxes_and_charges")
-	frappe.reload_doc("accounts", "doctype", "sales_taxes_and_charges_template")
-	frappe.reload_doc("accounts", "doctype", "purchase_taxes_and_charges_template")
-
-	# set is_inter_state in Taxes And Charges Templates
-	if frappe.db.has_column("Sales Taxes and Charges Template", "is_inter_state") and\
-		frappe.db.has_column("Purchase Taxes and Charges Template", "is_inter_state"):
-
-		igst_accounts = set(frappe.db.sql_list('''SELECT igst_account from `tabGST Account` WHERE parent = "GST Settings"'''))
-		cgst_accounts = set(frappe.db.sql_list('''SELECT cgst_account FROM `tabGST Account` WHERE parenttype = "GST Settings"'''))
-
-		when_then_sales = get_formatted_data("Sales Taxes and Charges", igst_accounts, cgst_accounts)
-		when_then_purchase = get_formatted_data("Purchase Taxes and Charges", igst_accounts, cgst_accounts)
-
-		if when_then_sales:
-			frappe.db.sql('''update `tabSales Taxes and Charges Template`
-				set is_inter_state = Case {when_then} Else 0 End
-			'''.format(when_then=" ".join(when_then_sales)))
-
-		if when_then_purchase:
-			frappe.db.sql('''update `tabPurchase Taxes and Charges Template`
-				set is_inter_state = Case {when_then} Else 0 End
-			'''.format(when_then=" ".join(when_then_purchase)))
-
-def get_formatted_data(doctype, igst_accounts, cgst_accounts):
-	# fetch all the rows data from child table
-	all_details = frappe.db.sql('''
-		select parent, account_head from `tab{doctype}`
-		where parenttype="{doctype} Template"'''.format(doctype=doctype), as_dict=True)
-
-	# group the data in the form "parent: [list of accounts]""
-	group_detail = {}
-	for i in all_details:
-		if  not i['parent'] in group_detail: group_detail[i['parent']] = []
-		for j in all_details:
-			if i['parent']==j['parent']:
-				group_detail[i['parent']].append(j['account_head'])
-
-	# form when_then condition based on - if list of accounts for a document
-	# matches any account in igst_accounts list and not matches any in cgst_accounts list
-	when_then = []
-	for i in group_detail:
-		temp = set(group_detail[i])
-		if not temp.isdisjoint(igst_accounts) and temp.isdisjoint(cgst_accounts):
-			when_then.append('''When name='{name}' Then 1'''.format(name=i))
-
-	return when_then
diff --git a/erpnext/patches/v11_0/set_missing_gst_hsn_code.py b/erpnext/patches/v11_0/set_missing_gst_hsn_code.py
deleted file mode 100644
index ec75d45..0000000
--- a/erpnext/patches/v11_0/set_missing_gst_hsn_code.py
+++ /dev/null
@@ -1,45 +0,0 @@
-import frappe
-
-from erpnext.controllers.taxes_and_totals import get_itemised_tax_breakup_html
-
-
-def execute():
-	company = frappe.db.sql_list("select name from tabCompany where country = 'India'")
-	if not company:
-		return
-
-	doctypes = ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice",
-		"Supplier Quotation", "Purchase Order", "Purchase Receipt", "Purchase Invoice"]
-
-	for dt in doctypes:
-		date_field = "posting_date"
-		if dt in ["Quotation", "Sales Order", "Supplier Quotation", "Purchase Order"]:
-			date_field = "transaction_date"
-
-		transactions = frappe.db.sql("""
-			select dt.name, dt_item.name as child_name
-			from `tab{dt}` dt, `tab{dt} Item` dt_item
-			where dt.name = dt_item.parent
-				and dt.`{date_field}` > '2018-06-01'
-				and dt.docstatus = 1
-				and ifnull(dt_item.gst_hsn_code, '') = ''
-				and ifnull(dt_item.item_code, '') != ''
-				and dt.company in ({company})
-		""".format(dt=dt, date_field=date_field, company=", ".join(['%s']*len(company))), tuple(company), as_dict=1)
-
-		if not transactions:
-			continue
-
-		transaction_rows_name = [d.child_name for d in transactions]
-
-		frappe.db.sql("""
-			update `tab{dt} Item` dt_item
-			set dt_item.gst_hsn_code = (select gst_hsn_code from tabItem where name=dt_item.item_code)
-			where dt_item.name in ({rows_name})
-		""".format(dt=dt, rows_name=", ".join(['%s']*len(transaction_rows_name))), tuple(transaction_rows_name))
-
-		parent = set([d.name for d in transactions])
-		for t in list(parent):
-			trans_doc = frappe.get_doc(dt, t)
-			hsnwise_tax = get_itemised_tax_breakup_html(trans_doc)
-			frappe.db.set_value(dt, t, "other_charges_calculation", hsnwise_tax, update_modified=False)
diff --git a/erpnext/patches/v12_0/add_company_link_to_einvoice_settings.py b/erpnext/patches/v12_0/add_company_link_to_einvoice_settings.py
deleted file mode 100644
index e498b67..0000000
--- a/erpnext/patches/v12_0/add_company_link_to_einvoice_settings.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from __future__ import unicode_literals
-
-import frappe
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company or not frappe.db.count('E Invoice User'):
-		return
-
-	frappe.reload_doc("regional", "doctype", "e_invoice_user")
-	for creds in frappe.db.get_all('E Invoice User', fields=['name', 'gstin']):
-		company_name = frappe.db.sql("""
-			select dl.link_name from `tabAddress` a, `tabDynamic Link` dl
-			where a.gstin = %s and dl.parent = a.name and dl.link_doctype = 'Company'
-		""", (creds.get('gstin')))
-		if company_name and len(company_name) > 0:
-			frappe.db.set_value('E Invoice User', creds.get('name'), 'company', company_name[0][0])
diff --git a/erpnext/patches/v12_0/add_einvoice_status_field.py b/erpnext/patches/v12_0/add_einvoice_status_field.py
deleted file mode 100644
index aeff9ca..0000000
--- a/erpnext/patches/v12_0/add_einvoice_status_field.py
+++ /dev/null
@@ -1,72 +0,0 @@
-from __future__ import unicode_literals
-
-import json
-
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	# move hidden einvoice fields to a different section
-	custom_fields = {
-		'Sales Invoice': [
-			dict(fieldname='einvoice_section', label='E-Invoice Fields', fieldtype='Section Break', insert_after='gst_vehicle_type',
-			print_hide=1, hidden=1),
-
-			dict(fieldname='ack_no', label='Ack. No.', fieldtype='Data', read_only=1, hidden=1, insert_after='einvoice_section',
-				no_copy=1, print_hide=1),
-
-			dict(fieldname='ack_date', label='Ack. Date', fieldtype='Data', read_only=1, hidden=1, insert_after='ack_no', no_copy=1, print_hide=1),
-
-			dict(fieldname='irn_cancel_date', label='Cancel Date', fieldtype='Data', read_only=1, hidden=1, insert_after='ack_date',
-				no_copy=1, print_hide=1),
-
-			dict(fieldname='signed_einvoice', label='Signed E-Invoice', fieldtype='Code', options='JSON', hidden=1, insert_after='irn_cancel_date',
-				no_copy=1, print_hide=1, read_only=1),
-
-			dict(fieldname='signed_qr_code', label='Signed QRCode', fieldtype='Code', options='JSON', hidden=1, insert_after='signed_einvoice',
-				no_copy=1, print_hide=1, read_only=1),
-
-			dict(fieldname='qrcode_image', label='QRCode', fieldtype='Attach Image', hidden=1, insert_after='signed_qr_code',
-				no_copy=1, print_hide=1, read_only=1),
-
-			dict(fieldname='einvoice_status', label='E-Invoice Status', fieldtype='Select', insert_after='qrcode_image',
-				options='\nPending\nGenerated\nCancelled\nFailed', default=None, hidden=1, no_copy=1, print_hide=1, read_only=1),
-
-			dict(fieldname='failure_description', label='E-Invoice Failure Description', fieldtype='Code', options='JSON',
-				hidden=1, insert_after='einvoice_status', no_copy=1, print_hide=1, read_only=1)
-		]
-	}
-	create_custom_fields(custom_fields, update=True)
-
-	if frappe.db.exists('E Invoice Settings') and frappe.db.get_single_value('E Invoice Settings', 'enable'):
-		frappe.db.sql('''
-			UPDATE `tabSales Invoice` SET einvoice_status = 'Pending'
-			WHERE
-				posting_date >= '2021-04-01'
-				AND ifnull(irn, '') = ''
-				AND ifnull(`billing_address_gstin`, '') != ifnull(`company_gstin`, '')
-				AND ifnull(gst_category, '') in ('Registered Regular', 'SEZ', 'Overseas', 'Deemed Export')
-		''')
-
-		# set appropriate statuses
-		frappe.db.sql('''UPDATE `tabSales Invoice` SET einvoice_status = 'Generated'
-			WHERE ifnull(irn, '') != '' AND ifnull(irn_cancelled, 0) = 0''')
-
-		frappe.db.sql('''UPDATE `tabSales Invoice` SET einvoice_status = 'Cancelled'
-			WHERE ifnull(irn_cancelled, 0) = 1''')
-
-	# set correct acknowledgement in e-invoices
-	einvoices = frappe.get_all('Sales Invoice', {'irn': ['is', 'set']}, ['name', 'signed_einvoice'])
-
-	if einvoices:
-		for inv in einvoices:
-			signed_einvoice = inv.get('signed_einvoice')
-			if signed_einvoice:
-				signed_einvoice = json.loads(signed_einvoice)
-				frappe.db.set_value('Sales Invoice', inv.get('name'), 'ack_no', signed_einvoice.get('AckNo'), update_modified=False)
-				frappe.db.set_value('Sales Invoice', inv.get('name'), 'ack_date', signed_einvoice.get('AckDt'), update_modified=False)
diff --git a/erpnext/patches/v12_0/add_einvoice_summary_report_permissions.py b/erpnext/patches/v12_0/add_einvoice_summary_report_permissions.py
deleted file mode 100644
index e837786..0000000
--- a/erpnext/patches/v12_0/add_einvoice_summary_report_permissions.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from __future__ import unicode_literals
-
-import frappe
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	if frappe.db.exists('Report', 'E-Invoice Summary') and \
-		not frappe.db.get_value('Custom Role', dict(report='E-Invoice Summary')):
-		frappe.get_doc(dict(
-			doctype='Custom Role',
-			report='E-Invoice Summary',
-			roles= [
-				dict(role='Accounts User'),
-				dict(role='Accounts Manager')
-			]
-		)).insert()
diff --git a/erpnext/patches/v12_0/add_eway_bill_in_delivery_note.py b/erpnext/patches/v12_0/add_eway_bill_in_delivery_note.py
deleted file mode 100644
index 973da89..0000000
--- a/erpnext/patches/v12_0/add_eway_bill_in_delivery_note.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_field
-
-
-def execute():
-    company = frappe.get_all('Company', filters = {'country': 'India'})
-
-    if not company:
-        return
-
-    create_custom_field('Delivery Note', {
-        'fieldname': 'ewaybill',
-        'label': 'E-Way Bill No.',
-        'fieldtype': 'Data',
-        'depends_on': 'eval:(doc.docstatus === 1)',
-        'allow_on_submit': 1,
-        'insert_after': 'customer_name_in_arabic',
-        'translatable': 0,
-        'owner': 'Administrator'
-    })
diff --git a/erpnext/patches/v12_0/add_ewaybill_validity_field.py b/erpnext/patches/v12_0/add_ewaybill_validity_field.py
deleted file mode 100644
index 247140d..0000000
--- a/erpnext/patches/v12_0/add_ewaybill_validity_field.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from __future__ import unicode_literals
-
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	custom_fields = {
-		'Sales Invoice': [
-			dict(fieldname='eway_bill_validity', label='E-Way Bill Validity', fieldtype='Data', no_copy=1, print_hide=1,
-				depends_on='ewaybill', read_only=1, allow_on_submit=1, insert_after='ewaybill')
-		]
-	}
-	create_custom_fields(custom_fields, update=True)
diff --git a/erpnext/patches/v12_0/add_export_type_field_in_party_master.py b/erpnext/patches/v12_0/add_export_type_field_in_party_master.py
deleted file mode 100644
index dc9e884..0000000
--- a/erpnext/patches/v12_0/add_export_type_field_in_party_master.py
+++ /dev/null
@@ -1,41 +0,0 @@
-import frappe
-
-from erpnext.regional.india.setup import make_custom_fields
-
-
-def execute():
-
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	make_custom_fields()
-
-	frappe.reload_doctype('Tax Category')
-	frappe.reload_doctype('Sales Taxes and Charges Template')
-	frappe.reload_doctype('Purchase Taxes and Charges Template')
-
-	# Create tax category with inter state field checked
-	tax_category =  frappe.db.get_value('Tax Category', {'name': 'OUT OF STATE'}, 'name')
-
-	if not tax_category:
-		inter_state_category = frappe.get_doc({
-			'doctype': 'Tax Category',
-			'title': 'OUT OF STATE',
-			'is_inter_state': 1
-		}).insert()
-
-		tax_category = inter_state_category.name
-
-	for doctype in ('Sales Taxes and Charges Template', 'Purchase Taxes and Charges Template'):
-		if not frappe.get_meta(doctype).has_field('is_inter_state'): continue
-
-		template = frappe.db.get_value(doctype, {'is_inter_state': 1, 'disabled': 0}, ['name'])
-		if template:
-			frappe.db.set_value(doctype, template, 'tax_category', tax_category)
-
-		frappe.db.sql("""
-			DELETE FROM `tabCustom Field`
-			WHERE fieldname = 'is_inter_state'
-			AND dt IN ('Sales Taxes and Charges Template', 'Purchase Taxes and Charges Template')
-		""")
diff --git a/erpnext/patches/v12_0/add_gst_category_in_delivery_note.py b/erpnext/patches/v12_0/add_gst_category_in_delivery_note.py
deleted file mode 100644
index 6316bb3..0000000
--- a/erpnext/patches/v12_0/add_gst_category_in_delivery_note.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	custom_fields = {
-		'Delivery Note': [
-			dict(fieldname='gst_category', label='GST Category',
-				fieldtype='Select', insert_after='gst_vehicle_type', print_hide=1,
-				options='\nRegistered Regular\nRegistered Composition\nUnregistered\nSEZ\nOverseas\nConsumer\nDeemed Export\nUIN Holders',
-				fetch_from='customer.gst_category', fetch_if_empty=1),
-		]
-	}
-
-	create_custom_fields(custom_fields, update=True)
diff --git a/erpnext/patches/v12_0/set_gst_category.py b/erpnext/patches/v12_0/set_gst_category.py
deleted file mode 100644
index 094e2a3..0000000
--- a/erpnext/patches/v12_0/set_gst_category.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import frappe
-
-from erpnext.regional.india.setup import make_custom_fields
-
-
-def execute():
-
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	frappe.reload_doc('accounts', 'doctype', 'Tax Category')
-
-	make_custom_fields()
-
-	for doctype in ['Sales Invoice', 'Purchase Invoice']:
-		has_column = frappe.db.has_column(doctype,'invoice_type')
-
-		if has_column:
-			update_map = {
-				'Regular': 'Registered Regular',
-				'Export': 'Overseas',
-				'SEZ': 'SEZ',
-				'Deemed Export': 'Deemed Export',
-			}
-
-			for old, new in update_map.items():
-				frappe.db.sql("UPDATE `tab{doctype}` SET gst_category = %s where invoice_type = %s".format(doctype=doctype), (new, old)) #nosec
-
-	frappe.delete_doc('Custom Field', 'Sales Invoice-invoice_type')
-	frappe.delete_doc('Custom Field', 'Purchase Invoice-invoice_type')
-
-	itc_update_map = {
-		"ineligible": "Ineligible",
-		"input service": "Input Service Distributor",
-		"capital goods": "Import Of Capital Goods",
-		"input": "All Other ITC"
-	}
-
-	has_gst_fields = frappe.db.has_column('Purchase Invoice','eligibility_for_itc')
-
-	if has_gst_fields:
-		for old, new in itc_update_map.items():
-			frappe.db.sql("UPDATE `tabPurchase Invoice` SET eligibility_for_itc = %s where eligibility_for_itc = %s ", (new, old))
-
-	for doctype in ["Customer", "Supplier"]:
-
-		frappe.db.sql(""" UPDATE `tab{doctype}` t1, `tabAddress` t2, `tabDynamic Link` t3 SET t1.gst_category = "Registered Regular"
-			where t3.link_name = t1.name and t3.parent = t2.name and t2.gstin IS NOT NULL and t2.gstin != '' """.format(doctype=doctype)) #nosec
-
-		frappe.db.sql(""" UPDATE `tab{doctype}` t1, `tabAddress` t2, `tabDynamic Link` t3 SET t1.gst_category = "Overseas"
-			where t3.link_name = t1.name and t3.parent = t2.name and t2.country != 'India' """.format(doctype=doctype)) #nosec
diff --git a/erpnext/patches/v12_0/setup_einvoice_fields.py b/erpnext/patches/v12_0/setup_einvoice_fields.py
deleted file mode 100644
index c17666a..0000000
--- a/erpnext/patches/v12_0/setup_einvoice_fields.py
+++ /dev/null
@@ -1,59 +0,0 @@
-from __future__ import unicode_literals
-
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-from erpnext.regional.india.setup import add_permissions, add_print_formats
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	frappe.reload_doc("custom", "doctype", "custom_field")
-	frappe.reload_doc("regional", "doctype", "e_invoice_settings")
-	custom_fields = {
-		'Sales Invoice': [
-			dict(fieldname='irn', label='IRN', fieldtype='Data', read_only=1, insert_after='customer', no_copy=1, print_hide=1,
-				depends_on='eval:in_list(["Registered Regular", "SEZ", "Overseas", "Deemed Export"], doc.gst_category) && doc.irn_cancelled === 0'),
-
-			dict(fieldname='ack_no', label='Ack. No.', fieldtype='Data', read_only=1, hidden=1, insert_after='irn', no_copy=1, print_hide=1),
-
-			dict(fieldname='ack_date', label='Ack. Date', fieldtype='Data', read_only=1, hidden=1, insert_after='ack_no', no_copy=1, print_hide=1),
-
-			dict(fieldname='irn_cancelled', label='IRN Cancelled', fieldtype='Check', no_copy=1, print_hide=1,
-				depends_on='eval:(doc.irn_cancelled === 1)', read_only=1, allow_on_submit=1, insert_after='customer'),
-
-			dict(fieldname='eway_bill_cancelled', label='E-Way Bill Cancelled', fieldtype='Check', no_copy=1, print_hide=1,
-				depends_on='eval:(doc.eway_bill_cancelled === 1)', read_only=1, allow_on_submit=1, insert_after='customer'),
-
-			dict(fieldname='signed_einvoice', fieldtype='Code', options='JSON', hidden=1, no_copy=1, print_hide=1, read_only=1),
-
-			dict(fieldname='signed_qr_code', fieldtype='Code', options='JSON', hidden=1, no_copy=1, print_hide=1, read_only=1),
-
-			dict(fieldname='qrcode_image', label='QRCode', fieldtype='Attach Image', hidden=1, no_copy=1, print_hide=1, read_only=1)
-		]
-	}
-	create_custom_fields(custom_fields, update=True)
-	add_permissions()
-	add_print_formats()
-
-	einvoice_cond = 'in_list(["Registered Regular", "SEZ", "Overseas", "Deemed Export"], doc.gst_category)'
-	t = {
-		'mode_of_transport': [{'default': None}],
-		'distance': [{'mandatory_depends_on': f'eval:{einvoice_cond} && doc.transporter'}],
-		'gst_vehicle_type': [{'mandatory_depends_on': f'eval:{einvoice_cond} && doc.mode_of_transport == "Road"'}],
-		'lr_date': [{'mandatory_depends_on': f'eval:{einvoice_cond} && in_list(["Air", "Ship", "Rail"], doc.mode_of_transport)'}],
-		'lr_no': [{'mandatory_depends_on': f'eval:{einvoice_cond} && in_list(["Air", "Ship", "Rail"], doc.mode_of_transport)'}],
-		'vehicle_no': [{'mandatory_depends_on': f'eval:{einvoice_cond} && doc.mode_of_transport == "Road"'}],
-		'ewaybill': [
-			{'read_only_depends_on': 'eval:doc.irn && doc.ewaybill'},
-			{'depends_on': 'eval:((doc.docstatus === 1 || doc.ewaybill) && doc.eway_bill_cancelled === 0)'}
-		]
-	}
-
-	for field, conditions in t.items():
-		for c in conditions:
-			[(prop, value)] = c.items()
-			frappe.db.set_value('Custom Field', { 'fieldname': field }, prop, value)
diff --git a/erpnext/patches/v12_0/show_einvoice_irn_cancelled_field.py b/erpnext/patches/v12_0/show_einvoice_irn_cancelled_field.py
deleted file mode 100644
index 3f90a03..0000000
--- a/erpnext/patches/v12_0/show_einvoice_irn_cancelled_field.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from __future__ import unicode_literals
-
-import frappe
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	irn_cancelled_field = frappe.db.exists('Custom Field', {'dt': 'Sales Invoice', 'fieldname': 'irn_cancelled'})
-	if irn_cancelled_field:
-		frappe.db.set_value('Custom Field', irn_cancelled_field, 'depends_on', 'eval: doc.irn')
-		frappe.db.set_value('Custom Field', irn_cancelled_field, 'read_only', 0)
diff --git a/erpnext/patches/v12_0/update_address_template_for_india.py b/erpnext/patches/v12_0/update_address_template_for_india.py
deleted file mode 100644
index 64a2e41..0000000
--- a/erpnext/patches/v12_0/update_address_template_for_india.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) 2020, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-from erpnext.regional.address_template.setup import set_up_address_templates
-
-
-def execute():
-	if frappe.db.get_value('Company',  {'country': 'India'},  'name'):
-		address_template = frappe.db.get_value('Address Template', 'India', 'template')
-		if not address_template or "gstin" not in address_template:
-			set_up_address_templates(default_country='India')
diff --git a/erpnext/patches/v12_0/update_ewaybill_field_position.py b/erpnext/patches/v12_0/update_ewaybill_field_position.py
deleted file mode 100644
index 132fd90..0000000
--- a/erpnext/patches/v12_0/update_ewaybill_field_position.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import frappe
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-
-	if not company:
-		return
-
-	field = frappe.db.get_value("Custom Field", {"dt": "Sales Invoice", "fieldname": "ewaybill"})
-
-	if field:
-		ewaybill_field = frappe.get_doc("Custom Field", field)
-
-		ewaybill_field.flags.ignore_validate = True
-
-		ewaybill_field.update({
-			'fieldname': 'ewaybill',
-			'label': 'e-Way Bill No.',
-			'fieldtype': 'Data',
-			'depends_on': 'eval:(doc.docstatus === 1)',
-			'allow_on_submit': 1,
-			'insert_after': 'tax_id',
-			'translatable': 0
-		})
-
-		ewaybill_field.save()
diff --git a/erpnext/patches/v12_0/update_gst_category.py b/erpnext/patches/v12_0/update_gst_category.py
deleted file mode 100644
index 8b15370..0000000
--- a/erpnext/patches/v12_0/update_gst_category.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import frappe
-
-
-def execute():
-
-    company = frappe.get_all('Company', filters = {'country': 'India'})
-    if not company:
-        return
-
-    frappe.db.sql(""" UPDATE `tabSales Invoice` set gst_category = 'Unregistered'
-        where gst_category = 'Registered Regular'
-        and ifnull(customer_gstin, '')=''
-        and ifnull(billing_address_gstin,'')=''
-    """)
-
-    frappe.db.sql(""" UPDATE `tabPurchase Invoice` set gst_category = 'Unregistered'
-        where gst_category = 'Registered Regular'
-        and ifnull(supplier_gstin, '')=''
-    """)
diff --git a/erpnext/patches/v13_0/create_gst_payment_entry_fields.py b/erpnext/patches/v13_0/create_gst_payment_entry_fields.py
deleted file mode 100644
index 4166945..0000000
--- a/erpnext/patches/v13_0/create_gst_payment_entry_fields.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (c) 2021, Frappe 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
-
-
-def execute():
-	frappe.reload_doc('accounts', 'doctype', 'advance_taxes_and_charges')
-	frappe.reload_doc('accounts', 'doctype', 'payment_entry')
-
-	if frappe.db.exists('Company', {'country': 'India'}):
-		custom_fields = {
-			'Payment Entry': [
-				dict(fieldname='gst_section', label='GST Details', fieldtype='Section Break', insert_after='deductions',
-					print_hide=1, collapsible=1),
-				dict(fieldname='company_address', label='Company Address', fieldtype='Link', insert_after='gst_section',
-					print_hide=1, options='Address'),
-				dict(fieldname='company_gstin', label='Company GSTIN',
-					fieldtype='Data', insert_after='company_address',
-					fetch_from='company_address.gstin', print_hide=1, read_only=1),
-				dict(fieldname='place_of_supply', label='Place of Supply',
-					fieldtype='Data', insert_after='company_gstin',
-					print_hide=1, read_only=1),
-				dict(fieldname='customer_address', label='Customer Address', fieldtype='Link', insert_after='place_of_supply',
-					print_hide=1, options='Address', depends_on = 'eval:doc.party_type == "Customer"'),
-				dict(fieldname='customer_gstin', label='Customer GSTIN',
-					fieldtype='Data', insert_after='customer_address',
-					fetch_from='customer_address.gstin', print_hide=1, read_only=1)
-			]
-		}
-
-		create_custom_fields(custom_fields, update=True)
-	else:
-		fields = ['gst_section', 'company_address', 'company_gstin', 'place_of_supply', 'customer_address', 'customer_gstin']
-		for field in fields:
-			frappe.delete_doc_if_exists("Custom Field", f"Payment Entry-{field}")
\ No newline at end of file
diff --git a/erpnext/patches/v13_0/create_pan_field_for_india.py b/erpnext/patches/v13_0/create_pan_field_for_india.py
deleted file mode 100644
index 6df6e1e..0000000
--- a/erpnext/patches/v13_0/create_pan_field_for_india.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-
-def execute():
-	frappe.reload_doc('buying', 'doctype', 'supplier', force=True)
-	frappe.reload_doc('selling', 'doctype', 'customer', force=True)
-	frappe.reload_doc('core', 'doctype', 'doctype', force=True)
-
-	custom_fields = {
-		'Supplier': [
-			{
-				'fieldname': 'pan',
-				'label': 'PAN',
-				'fieldtype': 'Data',
-				'insert_after': 'supplier_type'
-			}
-		],
-		'Customer': [
-			{
-				'fieldname': 'pan',
-				'label': 'PAN',
-				'fieldtype': 'Data',
-				'insert_after': 'customer_type'
-			}
-		]
-	}
-
-	create_custom_fields(custom_fields, update=True)
diff --git a/erpnext/patches/v13_0/gst_fields_for_pos_invoice.py b/erpnext/patches/v13_0/gst_fields_for_pos_invoice.py
deleted file mode 100644
index 76f8b27..0000000
--- a/erpnext/patches/v13_0/gst_fields_for_pos_invoice.py
+++ /dev/null
@@ -1,42 +0,0 @@
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'}, fields=['name'])
-	if not company:
-		return
-
-	hsn_sac_field = dict(fieldname='gst_hsn_code', label='HSN/SAC',
-		fieldtype='Data', fetch_from='item_code.gst_hsn_code', insert_after='description',
-		allow_on_submit=1, print_hide=1, fetch_if_empty=1)
-	nil_rated_exempt = dict(fieldname='is_nil_exempt', label='Is Nil Rated or Exempted',
-		fieldtype='Check', fetch_from='item_code.is_nil_exempt', insert_after='gst_hsn_code',
-		print_hide=1)
-	is_non_gst = dict(fieldname='is_non_gst', label='Is Non GST',
-		fieldtype='Check', fetch_from='item_code.is_non_gst', insert_after='is_nil_exempt',
-		print_hide=1)
-	taxable_value = dict(fieldname='taxable_value', label='Taxable Value',
-		fieldtype='Currency', insert_after='base_net_amount', hidden=1, options="Company:company:default_currency",
-		print_hide=1)
-	sales_invoice_gst_fields = [
-			dict(fieldname='billing_address_gstin', label='Billing Address GSTIN',
-				fieldtype='Data', insert_after='customer_address', read_only=1,
-				fetch_from='customer_address.gstin', print_hide=1),
-			dict(fieldname='customer_gstin', label='Customer GSTIN',
-				fieldtype='Data', insert_after='shipping_address_name',
-				fetch_from='shipping_address_name.gstin', print_hide=1),
-			dict(fieldname='place_of_supply', label='Place of Supply',
-				fieldtype='Data', insert_after='customer_gstin',
-				print_hide=1, read_only=1),
-			dict(fieldname='company_gstin', label='Company GSTIN',
-				fieldtype='Data', insert_after='company_address',
-				fetch_from='company_address.gstin', print_hide=1, read_only=1),
-		]
-
-	custom_fields = {
-		'POS Invoice': sales_invoice_gst_fields,
-		'POS Invoice Item': [hsn_sac_field, nil_rated_exempt, is_non_gst, taxable_value],
-	}
-
-	create_custom_fields(custom_fields, update=True)
\ No newline at end of file
diff --git a/erpnext/patches/v13_0/update_export_type_for_gst.py b/erpnext/patches/v13_0/update_export_type_for_gst.py
deleted file mode 100644
index de57861..0000000
--- a/erpnext/patches/v13_0/update_export_type_for_gst.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import frappe
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	# Update custom fields
-	fieldname = frappe.db.get_value('Custom Field', {'dt': 'Customer', 'fieldname': 'export_type'})
-	if fieldname:
-		frappe.db.set_value('Custom Field', fieldname,
-			{
-				'default': '',
-				'mandatory_depends_on': 'eval:in_list(["SEZ", "Overseas", "Deemed Export"], doc.gst_category)'
-			})
-
-	fieldname = frappe.db.get_value('Custom Field', {'dt': 'Supplier', 'fieldname': 'export_type'})
-	if fieldname:
-		frappe.db.set_value('Custom Field', fieldname,
-			{
-				'default': '',
-				'mandatory_depends_on': 'eval:in_list(["SEZ", "Overseas"], doc.gst_category)'
-			})
-
-	# Update Customer/Supplier Masters
-	frappe.db.sql("""
-		UPDATE `tabCustomer` set export_type = '' WHERE gst_category NOT IN ('SEZ', 'Overseas', 'Deemed Export')
-	""")
-
-	frappe.db.sql("""
-		UPDATE `tabSupplier` set export_type = '' WHERE gst_category NOT IN ('SEZ', 'Overseas')
-	""")
diff --git a/erpnext/patches/v13_0/update_tax_category_for_rcm.py b/erpnext/patches/v13_0/update_tax_category_for_rcm.py
deleted file mode 100644
index 7af2366..0000000
--- a/erpnext/patches/v13_0/update_tax_category_for_rcm.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-from erpnext.regional.india import states
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	create_custom_fields({
-		'Tax Category': [
-			dict(fieldname='is_inter_state', label='Is Inter State',
-				fieldtype='Check', insert_after='disabled', print_hide=1),
-			dict(fieldname='is_reverse_charge', label='Is Reverse Charge', fieldtype='Check',
-				insert_after='is_inter_state', print_hide=1),
-			dict(fieldname='tax_category_column_break', fieldtype='Column Break',
-				insert_after='is_reverse_charge'),
-			dict(fieldname='gst_state', label='Source State', fieldtype='Select',
-				options='\n'.join(states), insert_after='company')
-		]
-	}, update=True)
-
-	tax_category = frappe.qb.DocType("Tax Category")
-
-	frappe.qb.update(tax_category).set(
-		tax_category.is_reverse_charge, 1
-	).where(
-		tax_category.name.isin(['Reverse Charge Out-State', 'Reverse Charge In-State'])
-	).run()
\ No newline at end of file
diff --git a/erpnext/patches/v14_0/restore_einvoice_fields.py b/erpnext/patches/v14_0/restore_einvoice_fields.py
deleted file mode 100644
index c4431fb..0000000
--- a/erpnext/patches/v14_0/restore_einvoice_fields.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import frappe
-from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
-
-from erpnext.regional.india.setup import add_permissions, add_print_formats
-
-
-def execute():
-	# restores back the 2 custom fields that was deleted while removing e-invoicing from v14
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	custom_fields = {
-		'Sales Invoice': [
-			dict(fieldname='irn_cancelled', label='IRN Cancelled', fieldtype='Check', no_copy=1, print_hide=1,
-				depends_on='eval:(doc.irn_cancelled === 1)', read_only=1, allow_on_submit=1, insert_after='customer'),
-
-			dict(fieldname='eway_bill_cancelled', label='E-Way Bill Cancelled', fieldtype='Check', no_copy=1, print_hide=1,
-				depends_on='eval:(doc.eway_bill_cancelled === 1)', read_only=1, allow_on_submit=1, insert_after='customer'),
-		]
-	}
-	create_custom_fields(custom_fields, update=True)
-	add_permissions()
-	add_print_formats()
diff --git a/erpnext/patches/v8_1/removed_roles_from_gst_report_non_indian_account.py b/erpnext/patches/v8_1/removed_roles_from_gst_report_non_indian_account.py
deleted file mode 100644
index ed1dffe..0000000
--- a/erpnext/patches/v8_1/removed_roles_from_gst_report_non_indian_account.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2017, Frappe and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-
-
-def execute():
-	frappe.reload_doc('core', 'doctype', 'has_role')
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-
-	if not company:
-		frappe.db.sql("""
-			delete from
-				`tabHas Role`
-			where
-				parenttype = 'Report' and parent in('GST Sales Register',
-					'GST Purchase Register', 'GST Itemised Sales Register',
-					'GST Itemised Purchase Register', 'Eway Bill')""")
diff --git a/erpnext/patches/v8_1/setup_gst_india.py b/erpnext/patches/v8_1/setup_gst_india.py
deleted file mode 100644
index ff9e6a4..0000000
--- a/erpnext/patches/v8_1/setup_gst_india.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import frappe
-from frappe.email import sendmail_to_system_managers
-
-
-def execute():
-	frappe.reload_doc('stock', 'doctype', 'item')
-	frappe.reload_doc("stock", "doctype", "customs_tariff_number")
-	frappe.reload_doc("accounts", "doctype", "payment_terms_template")
-	frappe.reload_doc("accounts", "doctype", "payment_schedule")
-
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	frappe.reload_doc('regional', 'doctype', 'gst_settings')
-	frappe.reload_doc('regional', 'doctype', 'gst_hsn_code')
-
-	for report_name in ('GST Sales Register', 'GST Purchase Register',
-		'GST Itemised Sales Register', 'GST Itemised Purchase Register'):
-
-		frappe.reload_doc('regional', 'report', frappe.scrub(report_name))
-
-	from erpnext.regional.india.setup import setup
-	delete_custom_field_tax_id_if_exists()
-	setup(patch=True)
-	send_gst_update_email()
-
-def delete_custom_field_tax_id_if_exists():
-	for field in frappe.db.sql_list("""select name from `tabCustom Field` where fieldname='tax_id'
-		and dt in ('Sales Order', 'Sales Invoice', 'Delivery Note')"""):
-		frappe.delete_doc("Custom Field", field, ignore_permissions=True)
-		frappe.db.commit()
-
-def send_gst_update_email():
-	message = """Hello,
-
-<p>ERPNext is now GST Ready!</p>
-
-<p>To start making GST Invoices from 1st of July, you just need to create new Tax Accounts,
-Templates and update your Customer's and Supplier's GST Numbers.</p>
-
-<p>Please refer {gst_document_link} to know more about how to setup and implement GST in ERPNext.</p>
-
-<p>Please contact us at support@erpnext.com, if you have any questions.</p>
-
-<p>Thanks,</p>
-ERPNext Team.
-	""".format(gst_document_link="<a href='http://frappe.github.io/erpnext/user/manual/en/regional/india/'> ERPNext GST Document </a>")
-
-	try:
-		sendmail_to_system_managers("[Important] ERPNext GST updates", message)
-	except Exception as e:
-		pass
diff --git a/erpnext/patches/v8_7/sync_india_custom_fields.py b/erpnext/patches/v8_7/sync_india_custom_fields.py
deleted file mode 100644
index 808c833..0000000
--- a/erpnext/patches/v8_7/sync_india_custom_fields.py
+++ /dev/null
@@ -1,35 +0,0 @@
-import frappe
-
-from erpnext.regional.india.setup import make_custom_fields
-
-
-def execute():
-	company = frappe.get_all('Company', filters = {'country': 'India'})
-	if not company:
-		return
-
-	frappe.reload_doc('Payroll', 'doctype', 'payroll_period')
-	frappe.reload_doc('Payroll', 'doctype', 'employee_tax_exemption_declaration')
-	frappe.reload_doc('Payroll', 'doctype', 'employee_tax_exemption_proof_submission')
-	frappe.reload_doc('Payroll', 'doctype', 'employee_tax_exemption_declaration_category')
-	frappe.reload_doc('Payroll', 'doctype', 'employee_tax_exemption_proof_submission_detail')
-
-	frappe.reload_doc('accounts', 'doctype', 'tax_category')
-
-	for doctype in ["Sales Invoice", "Delivery Note", "Purchase Invoice"]:
-		frappe.db.sql("""delete from `tabCustom Field` where dt = %s
-			and fieldname in ('port_code', 'shipping_bill_number', 'shipping_bill_date')""", doctype)
-
-	make_custom_fields()
-
-	frappe.db.sql("""
-		update `tabCustom Field`
-		set reqd = 0, `default` = ''
-		where fieldname = 'reason_for_issuing_document'
-	""")
-
-	frappe.db.sql("""
-		update tabAddress
-		set gst_state_number=concat("0", gst_state_number)
-		where ifnull(gst_state_number, '') != '' and gst_state_number<10
-	""")