Merge pull request #28978 from frappe/mergify/bp/develop/pr-28935
fix: Is Reverse Charge check in Tax Category (backport #28935)
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index c75606a..716dcc0 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -318,4 +318,5 @@
erpnext.patches.v13_0.rename_ksa_qr_field
erpnext.patches.v13_0.disable_ksa_print_format_for_others # 16-12-2021
erpnext.patches.v14_0.add_default_exit_questionnaire_notification_template
-execute:frappe.delete_doc_if_exists('Workspace', 'ERPNext Integrations Settings')
\ No newline at end of file
+erpnext.patches.v13_0.update_tax_category_for_rcm
+execute:frappe.delete_doc_if_exists('Workspace', 'ERPNext Integrations Settings')
diff --git a/erpnext/patches/v13_0/update_tax_category_for_rcm.py b/erpnext/patches/v13_0/update_tax_category_for_rcm.py
new file mode 100644
index 0000000..7af2366
--- /dev/null
+++ b/erpnext/patches/v13_0/update_tax_category_for_rcm.py
@@ -0,0 +1,31 @@
+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/regional/india/setup.py b/erpnext/regional/india/setup.py
index 5865424..c0dcb70 100644
--- a/erpnext/regional/india/setup.py
+++ b/erpnext/regional/india/setup.py
@@ -277,8 +277,10 @@
inter_state_gst_field = [
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_inter_state'),
+ insert_after='is_reverse_charge'),
dict(fieldname='gst_state', label='Source State', fieldtype='Select',
options='\n'.join(states), insert_after='company')
]
diff --git a/erpnext/regional/india/utils.py b/erpnext/regional/india/utils.py
index fd3ec3c..215b483 100644
--- a/erpnext/regional/india/utils.py
+++ b/erpnext/regional/india/utils.py
@@ -67,7 +67,8 @@
frappe.throw(_("Invalid PAN No. The input you've entered doesn't match the format of PAN."))
def validate_tax_category(doc, method):
- if doc.get('gst_state') and frappe.db.get_value('Tax Category', {'gst_state': doc.gst_state, 'is_inter_state': doc.is_inter_state}):
+ if doc.get('gst_state') and frappe.db.get_value('Tax Category', {'gst_state': doc.gst_state, 'is_inter_state': doc.is_inter_state,
+ 'is_reverse_charge': doc.is_reverse_charge}):
if doc.is_inter_state:
frappe.throw(_("Inter State tax category for GST State {0} already exists").format(doc.gst_state))
else:
@@ -264,7 +265,7 @@
def get_tax_template(master_doctype, company, is_inter_state, state_code):
tax_categories = frappe.get_all('Tax Category', fields = ['name', 'is_inter_state', 'gst_state'],
- filters = {'is_inter_state': is_inter_state})
+ filters = {'is_inter_state': is_inter_state, 'is_reverse_charge': 0})
default_tax = ''
diff --git a/erpnext/setup/setup_wizard/data/country_wise_tax.json b/erpnext/setup/setup_wizard/data/country_wise_tax.json
index 14b7951..91e8eff 100644
--- a/erpnext/setup/setup_wizard/data/country_wise_tax.json
+++ b/erpnext/setup/setup_wizard/data/country_wise_tax.json
@@ -1178,11 +1178,13 @@
{
"title": "Reverse Charge In-State",
"is_inter_state": 0,
+ "is_reverse_charge": 1,
"gst_state": ""
},
{
"title": "Reverse Charge Out-State",
"is_inter_state": 1,
+ "is_reverse_charge": 1,
"gst_state": ""
},
{