Problem while upgrading to ver 10.0.0

Dear all,

I got this error while upgrading to ver10. Something that has to do with VAT in UAE. Can you please help?

> Executing erpnext.patches.v10_0.setup_vat_for_uae_and_saudi_arabia in site1.local (1bd3e0294d)
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
>     "__main__", fname, loader, pkg_name)
>   File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
>     exec code in run_globals
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 94, in <module>
>     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/local/lib/python2.7/site-packages/click/core.py", line 664, in __call__
>     return self.main(*args, **kwargs)
>   File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 644, in main
>     rv = self.invoke(ctx)
>   File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 991, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 991, in invoke
>     return _process_result(sub_ctx.command.invoke(sub_ctx))
>   File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 837, in invoke
>     return ctx.invoke(self.callback, **ctx.params)
>   File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/click/core.py", line 464, in invoke
>     return callback(*args, **kwargs)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 24, in _func
>     ret = f(frappe._dict(ctx.obj), *args, **kwargs)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/site.py", line 222, in migrate
>     migrate(context.verbose, rebuild_website=rebuild_website)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 31, in migrate
>     frappe.modules.patch_handler.run_all()
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 29, in run_all
>     if not run_single(patchmodule = patch):
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 63, in run_single
>     return execute_patch(patchmodule, method, methodargs)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 83, in execute_patch
>     frappe.get_attr(patchmodule.split()[0] + ".execute")()
>   File "/home/frappe/frappe-bench/apps/erpnext/erpnext/patches/v10_0/setup_vat_for_uae_and_saudi_arabia.py", line 12, in execute
>     install_country_fixtures(d.name)
>   File "/home/frappe/frappe-bench/apps/erpnext/erpnext/setup/doctype/company/company.py", line 324, in install_country_fixtures
>     .format(frappe.scrub(company_doc.country)))(company_doc)
>   File "/home/frappe/frappe-bench/apps/erpnext/erpnext/regional/united_arab_emirates/setup.py", line 11, in setup
>     make_custom_fields()
>   File "/home/frappe/frappe-bench/apps/erpnext/erpnext/regional/united_arab_emirates/setup.py", line 69, in make_custom_fields
>     create_custom_fields(custom_fields)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/custom/doctype/custom_field/custom_field.py", line 121, in create_custom_fields
>     create_custom_field(doctype, df)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/custom/doctype/custom_field/custom_field.py", line 106, in create_custom_field
>     "hidden": df.hidden or 0
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 245, in insert
>     self.run_post_save_methods()
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 887, in run_post_save_methods
>     self.run_method("on_update")
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 755, in run_method
>     out = Document.hook(fn)(self, *args, **kwargs)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1024, in composer
>     return composed(self, method, *args, **kwargs)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1007, in runner
>     add_to_return_value(self, fn(self, *args, **kwargs))
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 749, in <lambda>
>     fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/custom/doctype/custom_field/custom_field.py", line 51, in on_update
>     validate_fields_for_doctype(self.dt)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 389, in validate_fields_for_doctype
>     validate_fields(frappe.get_meta(doctype, cached=False))
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 627, in validate_fields
>     check_unique_fieldname(d.fieldname)
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 417, in check_unique_fieldname
>     frappe.throw(_("Fieldname {0} appears multiple times in rows {1}").format(fieldname, ", ".join(duplicates)))
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 323, in throw
>     msgprint(msg, raise_exception=exc, title=title, indicator='red')
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 309, in msgprint
>     _raise_exception()
>   File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 282, in _raise_exception
>     raise raise_exception(encode(msg))
> frappe.exceptions.ValidationError: Fieldname payment_terms appears multiple times in rows 34, 45

Regards,
Ahmed
NEST

was there a custom field already?

Refer :

@revant_one,

Since I can’t access my system, I went to bench console. There I ran: frappe.get_all(“Custom Field”, fields=[“fieldname , dt”])

the output included payment_terms in Customer document. So I ran: frappe.delete_doc(“Custom Field”, “Customer_payment_terms”)

Then I quit console and ran bench update --reset

BUT the error is still the same!

Seems that custom field has not deleted
Can you run the below query in bench mysql and share the output

select name, fieldname from `tabCustom Field` where fieldname = 'payment_terms'

@rohit_w,

Here is the output:

±-----------------------±--------------+
| name | fieldname |
±-----------------------±--------------+
| Customer-payment_terms | payment_terms |
±-----------------------±--------------+
1 row in set (0.00 sec)

@ahmed_personal
Thanks for the details, please run below commands in bench console

frappe.delete_doc("Custom Field", "Customer-payment_terms")
frappe.db.commit()

After this run bench migrate from frappe-bench folder

2 Likes

@rohit_w,

Thanks Rohit! I was missing the frappe.db.commit() command! Now bench update works.
But, I have another unrelated problem that I will write in a different post.

Regards,
Ahmed

3 Likes