Browse Source
Merge pull request #28978 from frappe/mergify/bp/develop/pr-28935
fix: Is Reverse Charge check in Tax Category (backport #28935)
develop
Deepesh Garg
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with
41 additions and
4 deletions
-
erpnext/patches.txt
-
erpnext/patches/v13_0/update_tax_category_for_rcm.py
-
erpnext/regional/india/setup.py
-
erpnext/regional/india/utils.py
-
erpnext/setup/setup_wizard/data/country_wise_tax.json
|
|
@ -318,4 +318,5 @@ erpnext.patches.v14_0.migrate_crm_settings |
|
|
|
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') |
|
|
|
erpnext.patches.v13_0.update_tax_category_for_rcm |
|
|
|
execute:frappe.delete_doc_if_exists('Workspace', 'ERPNext Integrations Settings') |
|
|
|
|
|
@ -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() |
|
|
@ -277,8 +277,10 @@ def get_custom_fields(): |
|
|
|
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') |
|
|
|
] |
|
|
|
|
|
@ -67,7 +67,8 @@ def validate_pan_for_india(doc, method): |
|
|
|
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_based_on_category(master_doctype, company, party_details): |
|
|
|
|
|
|
|
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 = '' |
|
|
|
|
|
|
|
|
|
@ -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": "" |
|
|
|
}, |
|
|
|
{ |
|
|
|