0

I was trying to upgrade a module from Odoo 13 to Odoo 14 (stock_split_picking to be exact), I found an error that I don't really understand and I can't figure how to fix it.

It's an error that happen when I want to install the module, and after hours of search on the internet, hours of just reading Odoo's code in a hope of understanding what's happening... I just can't understand where is the problem, nothing seems to be anormal from what I've read on Odoo's Documentation on their website.

Here is my error :

Odoo Server Error
Traceback (most recent call last):
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 677, in _tag_root
    f(rec)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 580, in _tag_record
    record = model._load_records([data], self.mode == 'update')
  File "/opt/odoo/odoo/odoo/models.py", line 4185, in _load_records
    records = self._load_records_create([data['values'] for data in to_create])
  File "/opt/odoo/odoo/odoo/models.py", line 4114, in _load_records_create
    return self.create(values)
  File "<decorator-gen-43>", line 2, in create
  File "/opt/odoo/odoo/odoo/api.py", line 345, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 482, in create
    return super(View, self).create(vals_list)
  File "<decorator-gen-65>", line 2, in create
  File "/opt/odoo/odoo/odoo/api.py", line 345, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_fields.py", line 508, in create
    recs = super().create(vals_list)
  File "<decorator-gen-13>", line 2, in create
  File "/opt/odoo/odoo/odoo/api.py", line 345, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/odoo/models.py", line 3875, in create
    fields[0].determine_inverse(batch_recs)
  File "/opt/odoo/odoo/odoo/fields.py", line 1128, in determine_inverse
    getattr(records, self.inverse)()
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 300, in _inverse_arch
    view.write(data)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 500, in write
    res = super(View, self).write(self._compute_defaults(vals))
  File "/opt/odoo/odoo/odoo/models.py", line 3664, in write
    real_recs._validate_fields(set(vals) - set(inverse_fields))
  File "/opt/odoo/odoo/odoo/models.py", line 1249, in _validate_fields
    check(self)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 385, in _check_xml
    view_def = view.read_combined(['arch'])
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 813, in read_combined
    arch = root.apply_view_inheritance(arch_tree, self.model)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 755, in apply_view_inheritance
    return self._apply_view_inheritance(source, inherit_tree)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 764, in _apply_view_inheritance
    source = view._apply_view_inheritance(source, inherit_tree)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_ui_view.py", line 760, in _apply_view_inheritance
    arch_tree = etree.fromstring(view.arch.encode('utf-8'))
  File "src/lxml/lxml.etree.pyx", line 3213, in lxml.etree.fromstring (src/lxml/lxml.etree.c:79003)
  File "src/lxml/parser.pxi", line 1848, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:118334)
  File "src/lxml/parser.pxi", line 1736, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:117014)
  File "src/lxml/parser.pxi", line 1102, in lxml.etree._BaseParser._parseDoc (src/lxml/lxml.etree.c:111258)
  File "src/lxml/parser.pxi", line 595, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:105102)
  File "src/lxml/parser.pxi", line 706, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:106810)
  File "src/lxml/parser.pxi", line 646, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:105956)
  File "<string>", line 0
lxml.etree.XMLSyntaxError: <no detail available>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
    result = request.dispatch()
  File "/opt/odoo/odoo/odoo/http.py", line 683, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo/odoo/http.py", line 359, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/odoo/odoo/service/model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo/odoo/http.py", line 347, in checked_call
    result = self.endpoint(*a, **kw)
  File "/opt/odoo/odoo/odoo/http.py", line 912, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo/odoo/http.py", line 531, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 1367, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/opt/odoo/odoo/addons/web/controllers/main.py", line 1355, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/opt/odoo/odoo/odoo/api.py", line 396, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/opt/odoo/odoo/odoo/api.py", line 383, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/odoo/addons/gfi_base/models/ir_module_module.py", line 35, in button_immediate_install
    return super(IrModuleModule, self).button_immediate_install()
  File "<decorator-gen-72>", line 2, in button_immediate_install
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_module.py", line 73, in check_and_log
    return method(self, *args, **kwargs)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_module.py", line 474, in button_immediate_install
    return self._button_immediate_function(type(self).button_install)
  File "/opt/odoo/odoo/odoo/addons/base/models/ir_module.py", line 592, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "/opt/odoo/odoo/odoo/modules/registry.py", line 89, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 455, in load_modules
    loaded_modules, update_module, models_to_check)
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 348, in load_marked_modules
    perform_checks=perform_checks, models_to_check=models_to_check
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 221, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/opt/odoo/odoo/odoo/modules/loading.py", line 69, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 733, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 799, in convert_xml_import
    obj.parse(doc.getroot())
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 719, in parse
    self._tag_root(de)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 677, in _tag_root
    f(rec)
  File "/opt/odoo/odoo/odoo/tools/convert.py", line 685, in _tag_root
    )) from e
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/opt/odoo/odoo/odoo/http.py", line 639, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo/odoo/http.py", line 315, in _handle_exception
    raise exception.with_traceback(None) from new_cause
odoo.tools.convert.ParseError: while parsing /opt/odoo/odoo/addons/stock/views/res_partner_views.xml:8, near
<record id="view_partner_stock_form" model="ir.ui.view">
        <field name="name">res.partner.stock.property.form.inherit</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="mail.res_partner_view_form_inherit_mail"/>
        <field name="arch" type="xml">
            <xpath expr="//page[@name='sales_purchases']/group" position="inside">
                    <group name="container_row_stock" groups="base.group_no_one" priority="6">
                        <group string="Inventory" name="inventory" colspan="2">
                            <field name="property_stock_customer"/>
                            <field name="property_stock_supplier"/>
                        </group>
                    </group>
            </xpath>
        </field>
    </record>

My first thought was that the xpath was bad, but the error is not the same as an xpath error.

I already tried to delete this record for the installation, and then rewrite the record after having installing the module, and magic : the module can be upgraded without any error. Problem is that when we want to use the module, the error come again and make it impossible to use the module.

William Baker Morrison
  • 1,642
  • 4
  • 21
  • 33
Toshibane
  • 26
  • 4
  • 1
    your `inherit_id` is not correct. – Adam Strauss Dec 04 '20 at 11:47
  • @AdamStrauss the inherit_id is not the problem. In the module "stock", view file "stock_picking_views.xml" there's a record with the id. Plus, the field "state" do exists too, so it's not the source of the problem. Thanks anyway. Have you other ideas ? – Toshibane Dec 04 '20 at 12:09
  • Check the parent is existing at: – sylvain Aug 02 '23 at 06:51

0 Answers0