Error while updating from version 12 to 13

I was trying to update the instance from version 12 to 13. However I am getting error -
frappe.exceptions.ValidationError: Fieldtype cannot be changed from Data to Currency. The error is coming in executing patch erpnext.patches.v13_0.check_is_income_tax_component, the doctype is Purchase Invoice and field Purchase Invoice-itc_integrated_tax. There is no customization in the instance.

The stack trace for the same is
Purchase Invoice Purchase Invoice-itc_integrated_tax
Traceback (most recent call last):
File “/usr/lib/python3.6/runpy.py”, line 193, in _run_module_as_main
main”, mod_spec)
File “/usr/lib/python3.6/runpy.py”, line 85, in _run_code
exec(code, run_globals)
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 104, in
main()
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 19, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 829, in call
return self.main(*args, **kwargs)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 782, in main
rv = self.invoke(ctx)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 610, in invoke
return callback(*args, **kwargs)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/decorators.py”, line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/init.py”, line 27, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/site.py”, line 309, in migrate
skip_search_index=skip_search_index
File “/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py”, line 67, in migrate
frappe.modules.patch_handler.run_all(skip_failing)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 41, in run_all
run_patch(patch)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 30, in run_patch
if not run_single(patchmodule = patch):
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 71, in run_single
return execute_patch(patchmodule, method, methodargs)

Kindly help to resolve the issue.

Thanks in advance.

-Amit

Were you able to fix this? I have the same issue. Same issue in the patch:
erpnext.patches.v13_0.setup_fields_for_80g_certificate_and_donation

Hi, have you found any solution on following error.
frappe.exceptions.ValidationError: Fieldtype cannot be changed from Data to Currency

I had to goto mariadb and run sql command for each tax type. In my case for one of the taxes I ran

UPDATE `tabPurchase Invoice` set `itc_state_tax` = CAST(REPLACE(`itc_state_tax`, ',', '. ') as DECIMAL(18,6));

ALTER TABLE `tabPurchase Invoice` MODIFY `itc_state_tax` DECIMAL(18,6);

update `tabPurchase Invoice` set `itc_state_tax` =0.0000 where `itc_state_tax` is NULL;

ALTER TABLE `tabPurchase Invoice` MODIFY `itc_state_tax` DECIMAL(18,6) NOT NULL DEFAULT 0.000000;

My suggestion is to take the backup of the data first. After running the sql commands please verify the data specially the tax data before proceeding. After update, again verify the data before you put it in production.

-Amit

@Amit_Saxena Thank you for advice but our ERPnext account on Frappe Cloud and i am not understand how this can be handle on the same.

If you have access to bench, then you can use bench --site <site_name> mariadb.

Hi Amit,

I have executed all 4 sql queries still getting same error.

Executing erpnext.patches.v13_0.check_is_income_tax_component #22-06-2020 in dev-erp.techseria.com (_ea829b60f0500595)
Traceback (most recent call last):
File “/usr/lib/python3.6/runpy.py”, line 193, in _run_module_as_main
main”, mod_spec)
File “/usr/lib/python3.6/runpy.py”, line 85, in _run_code
exec(code, run_globals)
File “/opt/erp/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 104, in
main()
File “/opt/erp/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 19, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 829, in call
return self.main(*args, **kwargs)
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 782, in main
rv = self.invoke(ctx)
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 610, in invoke
return callback(*args, **kwargs)
File “/opt/erp/frappe-bench/env/lib/python3.6/site-packages/click/decorators.py”, line 21, in new_func
return f(get_current_context(), *args, **kwargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/commands/init.py”, line 27, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/commands/site.py”, line 309, in migrate
skip_search_index=skip_search_index
File “/opt/erp/frappe-bench/apps/frappe/frappe/migrate.py”, line 67, in migrate
frappe.modules.patch_handler.run_all(skip_failing)
File “/opt/erp/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 41, in run_all
run_patch(patch)
File “/opt/erp/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 30, in run_patch
if not run_single(patchmodule = patch):
File “/opt/erp/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 71, in run_single
return execute_patch(patchmodule, method, methodargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 91, in execute_patch
frappe.get_attr(patchmodule.split()[0] + “.execute”)()
File “/opt/erp/frappe-bench/apps/erpnext/erpnext/patches/v13_0/check_is_income_tax_component.py”, line 31, in execute
setup(patch=True)
File “/opt/erp/frappe-bench/apps/erpnext/erpnext/regional/india/setup.py”, line 17, in setup
setup_company_independent_fixtures(patch=patch)
File “/opt/erp/frappe-bench/apps/erpnext/erpnext/regional/india/setup.py”, line 24, in setup_company_independent_fixtures
make_custom_fields()
File “/opt/erp/frappe-bench/apps/erpnext/erpnext/regional/india/setup.py”, line 685, in make_custom_fields
create_custom_fields(custom_fields, update=update)
File “/opt/erp/frappe-bench/apps/frappe/frappe/custom/doctype/custom_field/custom_field.py”, line 169, in create_custom_fields
custom_field.save()
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 285, in save
return self._save(*args, **kwargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 320, in save
self.run_before_save_methods()
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 963, in run_before_save_methods
self.run_method(“validate”)
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 861, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 1153, in composer
return composed(self, method, *args, **kwargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 1136, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/opt/erp/frappe-bench/apps/frappe/frappe/model/document.py”, line 855, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/opt/erp/frappe-bench/apps/frappe/frappe/custom/doctype/custom_field/custom_field.py”, line 58, in validate
frappe.throw(
(“Fieldtype cannot be changed from {0} to {1}”).format(old_fieldtype, self.fieldtype))
File “/opt/erp/frappe-bench/apps/frappe/frappe/init.py”, line 432, in throw
msgprint(msg, raise_exception=exc, title=title, indicator=‘red’, is_minimizable=is_minimizable, wide=wide, as_list=as_list)
File “/opt/erp/frappe-bench/apps/frappe/frappe/init.py”, line 411, in msgprint
_raise_exception()
File “/opt/erp/frappe-bench/apps/frappe/frappe/init.py”, line 365, in _raise_exception
raise raise_exception(msg)
frappe.exceptions.ValidationError: Fieldtype cannot be changed from Data to Currency

Those were the example sql which contained the names of the Taxes that we use. You need to to modify the sqls as per the names of the taxes that you use.

-Amit

Check this:

1 Like