fix: Add validation for SEZ and Export invoices without payment of taxes
(cherry picked from commit cb8453dac8c38aed201f84c51f27ae217cc1f465)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index d1b5113..813ac17 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -321,6 +321,7 @@
"validate": [
"erpnext.regional.india.utils.validate_document_name",
"erpnext.regional.india.utils.update_taxable_values",
+ "erpnext.regional.india.utils.validate_sez_and_export_invoices",
],
},
"POS Invoice": {"on_submit": ["erpnext.regional.saudi_arabia.utils.create_qr_code"]},
diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py
index 0b6fcc6..6a7e113 100644
--- a/erpnext/regional/india/utils.py
+++ b/erpnext/regional/india/utils.py
@@ -840,6 +840,30 @@
return gst_accounts
+def validate_sez_and_export_invoices(doc, method):
+ country = frappe.get_cached_value("Company", doc.company, "country")
+
+ if country != "India":
+ return
+
+ if (
+ doc.get("gst_category") in ("SEZ", "Overseas")
+ and doc.get("export_type") == "Without Payment of Tax"
+ ):
+ gst_accounts = get_gst_accounts(doc.company)
+
+ for tax in doc.get("taxes"):
+ for tax in doc.get("taxes"):
+ if (
+ tax.account_head
+ in gst_accounts.get("igst_account", [])
+ + gst_accounts.get("sgst_account", [])
+ + gst_accounts.get("cgst_account", [])
+ and tax.tax_amount_after_discount_amount
+ ):
+ frappe.throw(_("GST cannot be applied on SEZ or Export invoices without payment of tax"))
+
+
def validate_reverse_charge_transaction(doc, method):
country = frappe.get_cached_value("Company", doc.company, "country")
@@ -887,6 +911,8 @@
frappe.throw(msg)
+ doc.eligibility_for_itc = "ITC on Reverse Charge"
+
def update_itc_availed_fields(doc, method):
country = frappe.get_cached_value("Company", doc.company, "country")