Executing india_compliance.patches.post_install.update_company_fixtures #3 in abc.xyz.com (xyz)
Failed to execute patch
Traceback with variables (most recent call last):
File "apps/frappe/frappe/modules/patch_handler.py", line 62, in run_patch
if not run_single(patchmodule=patch):
patch = 'india_compliance.patches.post_install.update_company_fixtures #3'
skip_failing = True
File "apps/frappe/frappe/modules/patch_handler.py", line 152, in run_single
return execute_patch(patchmodule, method, methodargs)
patchmodule = 'india_compliance.patches.post_install.update_company_fixtures #3'
method = None
methodargs = None
force = False
conf = {'background_workers': 1, 'dns_multitenant': True, 'file_watcher_port': 6789, 'frappe_user': 'frappe', 'gunicorn_workers': 5, 'live_reload': True, 'rebase_on_pull': False, 'redis_cache': 'redis://127.0.0.1:13002', 'redis_queue': 'redis://127.0.0.1:11002', 'redis_socketio': 'redis://127.0.0.1:13002', 'restart_supervisor_on_update': True, 'restart_systemd_on_update': False, 'serve_default_site': True, 'shallow_clone': True, 'socketio_port': 9002, 'use_redis_auth': False, 'webserver_port': 8002, 'db_name': 'xyz', 'db_password': '1234', 'db_type': 'mariadb', 'encryption_key': '1234', 'db_host': '127.0.0.1', 'db_port': '3306', 'developer_mode': 0}
File "apps/frappe/frappe/modules/patch_handler.py", line 188, in execute_patch
_patch()
patchmodule = 'india_compliance.patches.post_install.update_company_fixtures #3'
method = None
methodargs = None
has_patch_file = True
patch = 'india_compliance.patches.post_install.update_company_fixtures.execute'
docstring = ''
_patch = <function execute at 0x7eff0a5792d0>
start_time = 4406692.715371384
File "apps/india_compliance/india_compliance/patches/post_install/update_company_fixtures.py", line 25, in execute
create_income_tax_fixtures(company)
company_list = ['XYZ PRIVATE LIMITED', 'XYZ PRIVATE LIMITED (DELHI)', 'XYZ PRIVATE LIMITED (MUMBAI)', 'XYZ PRIVATE LIMITED (KOLKATA)', 'XYZ PRIVATE LIMITED (ROORKEE)']
company = 'XYZ PRIVATE LIMITED (DELHI)'
File "apps/india_compliance/india_compliance/income_tax_india/overrides/company.py", line 19, in create_company_fixtures
create_or_update_tax_withholding_category(company)
company = 'XYZ PRIVATE LIMITED (DELHI)'
File "apps/india_compliance/india_compliance/income_tax_india/overrides/company.py", line 54, in create_or_update_tax_withholding_category
update_existing_tax_withholding_category(
company = 'XYZ PRIVATE LIMITED (DELHI)'
accounts = [{'company': 'XYZ PRIVATE LIMITED (DELHI)', 'account': 'TDS Payable - XPL-D', 'doctype': 'Tax Withholding Account'}]
tds_account = 'TDS Payable - XPL-D'
categories = [{'name': 'TDS - 194C - Company', 'category_name': 'Payment to Contractors (Single / Aggregate)', 'doctype': 'Tax Withholding Category', 'accounts': [{'company': 'XYZ PRIVATE LIMITED (DELHI)', 'account': 'TDS Payable - XPL-D', 'doctype': 'Tax Withholding Account'}], 'tds_section': '194C', 'entity_type': 'Company', 'round_off_tax_amount': 0, 'consider_party_ledger_amount': 0, 'tax_on_excess_amount': 0, 'rates': [{'from_date': '2023-04-01', 'to_date': '2024-04-01', 'tax_withholding_rate': 2, 'single_threshold': 30000, 'cumulative_threshold': 100000}, {'from_date': '2024-04-01', 'to_date': '2025-03-31', 'tax_withholding_rate': 2, 'single_threshold': 30000, 'cumulative_threshold': 100000}]}, {'name': 'TDS - 194C - Individual', 'category_name': 'Payment to Contractors (Single / Aggregate)', 'doctype': 'Tax Withholding Category', 'accounts': [{'company': 'XYZ PRIVATE LIMITED (DELHI)', 'account': 'TDS Payable - XPL-D', 'doctype': 'Tax Withholding Account'}], 'tds_section...
category_doc = {'name': 'TDS - 194 - Company', 'category_name': 'Dividends', 'doctype': 'Tax Withholding Category', 'accounts': [{'company': 'XYZ PRIVATE LIMITED (DELHI)', 'account': 'TDS Payable - XPL-D', 'doctype': 'Tax Withholding Account'}], 'tds_section': '194', 'entity_type': 'Company', 'round_off_tax_amount': 0, 'consider_party_ledger_amount': 0, 'tax_on_excess_amount': 0, 'rates': [{'from_date': '2023-04-01', 'to_date': '2024-03-31', 'tax_withholding_rate': 10, 'single_threshold': 2500, 'cumulative_threshold': 0}, {'from_date': '2024-04-01', 'to_date': '2025-03-31', 'tax_withholding_rate': 10, 'single_threshold': 5000, 'cumulative_threshold': 0}]}
existing_category_list = ['TDS - 194 - Dividends - Company', 'TDS - 194Q - Company']
category_name = 'TDS - 194Q - Company'
File "apps/india_compliance/india_compliance/income_tax_india/overrides/company.py", line 90, in update_existing_tax_withholding_category
doc.save()
category_doc = {'name': 'TDS - 194 - Company', 'category_name': 'Dividends', 'doctype': 'Tax Withholding Category', 'accounts': [{'company': 'XYZ PRIVATE LIMITED (DELHI)', 'account': 'TDS Payable - XPL-D', 'doctype': 'Tax Withholding Account'}], 'tds_section': '194', 'entity_type': 'Company', 'round_off_tax_amount': 0, 'consider_party_ledger_amount': 0, 'tax_on_excess_amount': 0, 'rates': [{'from_date': '2023-04-01', 'to_date': '2024-03-31', 'tax_withholding_rate': 10, 'single_threshold': 2500, 'cumulative_threshold': 0}, {'from_date': '2024-04-01', 'to_date': '2025-03-31', 'tax_withholding_rate': 10, 'single_threshold': 5000, 'cumulative_threshold': 0}]}
category_name = 'TDS - 194Q - Company'
company = 'XYZ PRIVATE LIMITED (DELHI)'
doc = <TaxWithholdingCategory: TDS - 194Q - Company>
row = <TaxWithholdingAccount: 62398dc37e parent=TDS - 194Q - Company>
largest_date = datetime.date(2025, 3, 31)
doc_row = <TaxWithholdingRate: c11dc96e10 parent=TDS - 194Q - Company>
cat_row = {'from_date': '2024-04-01', 'to_date': '2025-03-31', 'tax_withholding_rate': 10, 'single_threshold': 5000, 'cumulative_threshold': 0}
File "apps/frappe/frappe/model/document.py", line 335, in save
return self._save(*args, **kwargs)
self = <TaxWithholdingCategory: TDS - 194Q - Company>
args = ()
kwargs = {}
File "apps/frappe/frappe/model/document.py", line 371, in _save
self.run_before_save_methods()
self = <TaxWithholdingCategory: TDS - 194Q - Company>
ignore_permissions = None
ignore_version = None
File "apps/frappe/frappe/model/document.py", line 1089, in run_before_save_methods
self.run_method("validate")
self = <TaxWithholdingCategory: TDS - 194Q - Company>
File "apps/frappe/frappe/model/document.py", line 960, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
self = <TaxWithholdingCategory: TDS - 194Q - Company>
args = ()
kwargs = {}
fn = <function Document.run_method.<locals>.fn at 0x7eff0a04eb90>
method = 'validate'
File "apps/frappe/frappe/model/document.py", line 1320, in composer
return composed(self, method, *args, **kwargs)
self = <TaxWithholdingCategory: TDS - 194Q - Company>
args = ()
kwargs = {}
hooks = [<function apply at 0x7eff0a15a5f0>]
method = 'validate'
doc_events = {'*': {'on_update': ['frappe.desk.notifications.clear_doctype_notifications', 'frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions', 'frappe.core.doctype.file.utils.attach_files_to_document', 'frappe.automation.doctype.assignment_rule.assignment_rule.apply', 'frappe.automation.doctype.assignment_rule.assignment_rule.update_due_date', 'frappe.core.doctype.user_type.user_type.apply_permissions_for_non_standard_user_type'], 'after_rename': ['frappe.desk.notifications.clear_doctype_notifications'], 'on_cancel': ['frappe.desk.notifications.clear_doctype_notifications', 'frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions', 'frappe.automation.doctype.assignment_rule.assignment_rule.apply'], 'on_trash': ['frappe.desk.notifications.clear_doctype_notifications', 'frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions'], 'on_update_after_submit': ['frappe.workflow.doctype.workflow_action.workflow_action.process_w...
handler = 'erpnext.support.doctype.service_level_agreement.service_level_agreement.apply'
composed = <function Document.hook.<locals>.compose.<locals>.runner at 0x7eff0a04fc70>
compose = <function Document.hook.<locals>.compose at 0x7eff0a04f9a0>
f = <function Document.run_method.<locals>.fn at 0x7eff0a04eb90>
File "apps/frappe/frappe/model/document.py", line 1302, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
self = <TaxWithholdingCategory: TDS - 194Q - Company>
method = 'validate'
args = ()
kwargs = {}
add_to_return_value = <function Document.hook.<locals>.add_to_return_value at 0x7eff0a04f640>
fn = <function Document.run_method.<locals>.fn at 0x7eff0a04eb90>
hooks = (<function apply at 0x7eff0a15a5f0>,)
File "apps/frappe/frappe/model/document.py", line 957, in fn
return method_object(*args, **kwargs)
self = <TaxWithholdingCategory: TDS - 194Q - Company>
args = ()
kwargs = {}
method_object = <bound method TaxWithholdingCategory.validate of <TaxWithholdingCategory: TDS - 194Q - Company>>
method = 'validate'
File "apps/erpnext/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py", line 37, in validate
self.validate_accounts()
self = <TaxWithholdingCategory: TDS - 194Q - Company>
File "apps/erpnext/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py", line 54, in validate_accounts
frappe.throw(_("Account {0} added multiple times").format(frappe.bold(d.get("account"))))
self = <TaxWithholdingCategory: TDS - 194Q - Company>
existing_accounts = ['TDS Payable - XPL', 'TDS Payable - XPL-K', 'TDS Payable - XPL-M', 'TDS Payable - XPL-R', 'TDS Payable - XPL-D']
d = <TaxWithholdingAccount: 873ae5d3ff parent=TDS - 194Q - Company>
File "apps/frappe/frappe/__init__.py", line 602, in throw
msgprint(
msg = 'Account <strong>TDS Payable - XPL</strong> added multiple times'
exc = <class 'frappe.exceptions.ValidationError'>
title = None
is_minimizable = False
wide = False
as_list = False
primary_action = None
File "apps/frappe/frappe/__init__.py", line 567, in msgprint
_raise_exception()
title = None
as_table = False
as_list = False
indicator = 'red'
alert = False
primary_action = None
is_minimizable = False
wide = False
realtime = False
sys = <module 'sys' (built-in)>
_raise_exception = <function msgprint.<locals>._raise_exception at 0x7eff0a04feb0>
inspect = <module 'inspect' from '/usr/lib/python3.10/inspect.py'>
msg = 'Account TDS Payable - XPL added multiple times'
out = {'message': 'Account <strong>TDS Payable - XPL</strong> added multiple times', 'title': 'Message', 'indicator': 'red', 'raise_exception': 1, '__frappe_exc_id': '5c8e386bd13e7264eadb601437097f077e8feea01c25494163e3b72e'}
raise_exception = <class 'frappe.exceptions.ValidationError'>
File "apps/frappe/frappe/__init__.py", line 518, in _raise_exception
raise exc
exc = ValidationError('Account TDS Payable - XPL added multiple times')
inspect = <module 'inspect' from '/usr/lib/python3.10/inspect.py'>
msg = 'Account TDS Payable - XPL added multiple times'
out = {'message': 'Account <strong>TDS Payable - XPL</strong> added multiple times', 'title': 'Message', 'indicator': 'red', 'raise_exception': 1, '__frappe_exc_id': '5c8e386bd13e7264eadb601437097f077e8feea01c25494163e3b72e'}
raise_exception = <class 'frappe.exceptions.ValidationError'>
frappe.exceptions.ValidationError: Account TDS Payable - XPL added multiple times
It seems like there is an error occurring when updating accounts in the tax withholding category. The error might be due to using a different company’s Account with different company.
To resolve this issue, please verify if the TaxWithholdingCategory- TDS - 194Q - Company
has the correct TDS Account account linked to the correct company.
1 Like