This question has been flagged
2 Replies
5120 Views

I want to replace company logo and address information from invoice report by an image. I created a module for that purpose.

Inherit View:

    <?xml version="1.0" encoding="utf-8"?>
    <odoo>
        <data>
            <template id="external_layout_header_inherit" inherit_id="report.external_layout_header">
                <xpath expr="//div[@class='header']" position="replace">
                    <div class="header">
                        <div class="row">
                            <div class="col-xs-12">
                                <img src="/report/static/src/img/my_company_logo.png" width="100%"/>
                            </div>
                        </div>
                    </div>
                </xpath>
            </template>
        </data>
    </odoo>


Server Error:

         Traceback (most recent call last):
File "/opt/odoo/odoo-10.0/odoo/service/wsgi_server.py", line 186, in application
return application_unproxied(environ, start_response)
File "/opt/odoo/odoo-10.0/odoo/service/wsgi_server.py", line 172, in application_unproxied
result = handler(environ, start_response)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 1308, in __call__
return self.dispatch(environ, start_response)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 1282, in __call__
return self.app(environ, start_wrapped)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 588, in __call__
return self.app(environ, start_response)
File "/opt/odoo/odoo-10.0/odoo/http.py", line 1464, in dispatch
odoo.registry(db).check_signaling()
File "/opt/odoo/odoo-10.0/odoo/__init__.py", line 52, in registry
return modules.registry.Registry(database_name)
File "/opt/odoo/odoo-10.0/odoo/modules/registry.py", line 59, in __new__
return cls.new(db_name)
File "/opt/odoo/odoo-10.0/odoo/modules/registry.py", line 82, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 335, in load_modules
force, status, report, loaded_modules, update_module)
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 237, in load_marked_modules
loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 156, in load_module_graph
_load_data(cr, module_name, idref, mode, kind='data')
File "/opt/odoo/odoo-10.0/odoo/modules/loading.py", line 95, in _load_data
tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report)
File "/opt/odoo/odoo-10.0/odoo/tools/convert.py", line 845, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate, report)
File "/opt/odoo/odoo-10.0/odoo/tools/convert.py", line 915, in convert_xml_import
obj.parse(doc.getroot(), mode=mode)
File "/opt/odoo/odoo-10.0/odoo/tools/convert.py", line 796, in parse
self.parse(rec, mode)
File "/opt/odoo/odoo-10.0/odoo/tools/convert.py", line 799, in parse
self._tags[rec.tag](rec, de, mode=mode)
File "/opt/odoo/odoo-10.0/odoo/tools/convert.py", line 777, in _tag_template
return self._tag_record(record, data_node)
File "/opt/odoo/odoo-10.0/odoo/tools/convert.py", line 707, in _tag_record
id = self.env(context=rec_context)['ir.model.data']._update(rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode)
File "/opt/odoo/odoo-10.0/odoo/addons/base/ir/ir_model.py", line 1190, in _update
record.write(values)
File "/opt/odoo/odoo-10.0/odoo/addons/base/ir/ir_ui_view.py", line 380, in write
return super(View, self).write(self._compute_defaults(vals))
File "/opt/odoo/odoo-10.0/odoo/models.py", line 3568, in write
self._fields[key].determine_inverse(self)
File "/opt/odoo/odoo-10.0/odoo/fields.py", line 1041, in determine_inverse
getattr(records, self.inverse)()
File "/opt/odoo/odoo-10.0/odoo/addons/base/ir/ir_ui_view.py", line 220, in _inverse_arch
view.write(data)
File "/opt/odoo/odoo-10.0/odoo/addons/base/ir/ir_ui_view.py", line 380, in write
return super(View, self).write(self._compute_defaults(vals))
File "/opt/odoo/odoo-10.0/odoo/models.py", line 3560, in write
self._write(old_vals)
File "/opt/odoo/odoo-10.0/odoo/models.py", line 3711, in _write
self._validate_fields(vals)
File "/opt/odoo/odoo-10.0/odoo/models.py", line 1083, in _validate_fields
raise ValidationError("%s\n\n%s" % (_("Error while validating constraint"), tools.ustr(e)))
ParseError: "Error while validating constraint

Element '<xpath expr="//div[@class='header']//div[@class='row']//div[@class='col-xs-3']//img">' cannot be located in parent view

Error context:
View `external_layout_report_inherit`
[view_id: 675, xml_id: inherit_report.external_layout_report_inherit, model: n/a, parent_id: 256]
None" while parsing None:4, near
<data inherit_id="report.external_layout_header">
<xpath expr="//div[@class='header']" position="replace">
<div class="header">
<div class="row">
<div class="col-xs-12">
<img src="/report/static/src/img/my_company_log.png" width="100%"/>
</div>
</div>
</div>
</xpath>
</data>



Avatar
Discard
Author

Problem solved. Just add priority="17" inside <template> tag

Author Best Answer

Problem solved. Just added priority="17" inside <template> tag

Avatar
Discard