Error upgrading from v11 to v12 AttributeError: 'list' object has no attribute 'items'

Below is the trace. Can anyone pls help me? Thanks in advance

Patching sites…
Migrating erp.mysite.com
Executing erpnext.patches.v12_0.move_item_tax_to_item_tax_template in erp.mysite.com (live_mysite)
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 97, in
main()
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py”, line 18, in main
click.Group(commands=commands)(prog_name=‘bench’)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 764, in call
return self.main(*args, **kwargs)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 717, in main
rv = self.invoke(ctx)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 1137, 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 1137, 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 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py”, line 555, in invoke
return callback(*args, **kwargs)
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/decorators.py”, line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/init.py”, line 25, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File “/home/frappe/frappe-bench/apps/frappe/frappe/commands/site.py”, line 233, in migrate
migrate(context.verbose, rebuild_website=rebuild_website, skip_failing=skip_failing)
File “/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py”, line 48, 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)
File “/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py”, line 91, in execute_patch
frappe.get_attr(patchmodule.split()[0] + “.execute”)()
File “/home/frappe/frappe-bench/apps/erpnext/erpnext/patches/v12_0/move_item_tax_to_item_tax_template.py”, line 71, in execute
item_tax_map, d.item_code, d.parenttype, d.parent)
File “/home/frappe/frappe-bench/apps/erpnext/erpnext/patches/v12_0/move_item_tax_to_item_tax_template.py”, line 91, in get_item_tax_template
for tax_type, tax_rate in iteritems(item_tax_map):
File “/home/frappe/frappe-bench/env/lib/python3.6/site-packages/six.py”, line 589, in iteritems
return iter(d.items(**kw))
AttributeError: ‘list’ object has no attribute ‘items’

Can anyone help me on this please?

Restart your bench, then migrate.

Thanks for your reply jaichavan. But it didn’t work out, throws same error

I was able to fix this after going through the patch https://github.com/frappe/erpnext/blob/version-12/erpnext/patches/v12_0/move_item_tax_to_item_tax_template.py

I had records in tabSales Invoice Item where item_tax_rate is set to value “[]”

After setting this values to ‘’ (blank), the issue was fixed.

probably the below query should be updated in the patch

from
for d in frappe.db.sql(""“select name, parenttype, parent, item_code, item_tax_rate from tab{0} Item
where ifnull(item_tax_rate, ‘’) not in (’’, ‘{{}}’)
and item_tax_template is NULL”"".format(dt), as_dict=1):

to
for d in frappe.db.sql(""“select name, parenttype, parent, item_code, item_tax_rate from tab{0} Item
where ifnull(item_tax_rate, ‘’) not in (’’, ‘{{}}’, ‘[]’)
and item_tax_template is NULL”"".format(dt), as_dict=1):