inheritanceodoo-16odoo.sh

Odoo 16 - Inheritance : trouble to add button in helpdesk ticket view form


Hi stackoverflow community !

I am trying to add a button in the header of helpdesk ticket view in Odoo 16.

To do this, I created a dedicated module, in which I have

-user:
  -helpdesk_ticket_custo
    -models
      + __init__.py
      + helpdesk_ticket_custo.py

    -security
      + ir.model.access.csv

    -views
      + helpdesk_ticket_custo_views.xml

+  __init__.py
+  __manifest__.py

I face an error during the update of my custo module

Here is my view

<odoo>
    <record id="inherited_helpdesk_ticket_custo_view_form" model="ir.ui.view">
        <field name="name">helpdesk.ticket.custo.form</field>
        <field name="model">helpdesk.ticket.custo</field>
        <field name="inherit_id" ref="helpdesk.helpdesk_ticket_view_form"/>
        <field name="arch" type="xml">                                
            <xpath expr="//header" position="inside">
                <button name="action_view_send_to_customer"
                    type="object"
                    class="oe_stat_button"
                    icon="fa-truck"                    
                    string="Renvoyer"
                    help="Create out-sav to send back product to customer"/>
            </xpath>
        </field>
    </record>
</odoo>
  1. My view says to use my model helpdesk.ticket.custo
  2. AND says to inherit from helpdesk.ticket because I want to insert in the existing view just a button

So here is my model :

from odoo import fields,models

class Helpdesk_Ticket_Custo(models.Model):
    _name = "helpdesk.ticket.custo"
    _description = "Surcouche pour le module assistance" 
    __inherit = "helpdesk.ticket" 

    def action_view_send_to_customer(self):
        print('succès!')
        return

Seems easy :/

But I have this error : Field stage_id does not exist

I am not understanding what is the problem

Thank you for your help ...

I am expecting to update my module with no error, and see my button added to the existing view of helpdesk.ticket

The whole stacktrace

Traceback (most recent call last):
  File "/home/odoo/src/odoo/odoo/http.py", line 1589, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/home/odoo/src/odoo/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/home/odoo/src/odoo/odoo/http.py", line 1616, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/home/odoo/src/odoo/odoo/http.py", line 1820, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
    result = endpoint(**request.params)
  File "/home/odoo/src/odoo/odoo/http.py", line 697, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 46, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/home/odoo/src/odoo/addons/web/controllers/dataset.py", line 33, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/odoo/src/odoo/odoo/api.py", line 466, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/home/odoo/src/odoo/odoo/api.py", line 453, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-76>", line 2, in button_immediate_install
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
    return method(self, *args, **kwargs)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 468, in button_immediate_install
    return self._button_immediate_function(type(self).button_install)
  File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py", line 592, in _button_immediate_function
    registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "<decorator-gen-16>", line 2, in new
  File "/home/odoo/src/odoo/odoo/tools/func.py", line 87, in locked
    return func(inst, *args, **kwargs)
  File "/home/odoo/src/odoo/odoo/modules/registry.py", line 90, in new
    odoo.modules.load_modules(registry, force_demo, status, update_module)
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 488, in load_modules
    processed_modules += load_marked_modules(cr, graph,
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 372, in load_marked_modules
    loaded, processed = load_module_graph(
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 231, in load_module_graph
    load_data(cr, idref, mode, kind='data', package=package)
  File "/home/odoo/src/odoo/odoo/modules/loading.py", line 71, in load_data
    tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 763, in convert_file
    convert_xml_import(cr, module, fp, idref, mode, noupdate)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 829, in convert_xml_import
    obj.parse(doc.getroot())
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 749, in parse
    self._tag_root(de)
  File "/home/odoo/src/odoo/odoo/tools/convert.py", line 709, in _tag_root
    raise ParseError(msg) from None  # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
odoo.tools.convert.ParseError: while parsing /home/odoo/src/user/helpdesk_ticket_custo/views/helpdesk_ticket_views.xml:3
Error while validating view near:

<form string="Helpdesk Ticket">
                <header>
                    <button name="assign_ticket_to_self" string="Assign To Me" type="object" class="oe_highlight" groups="helpdesk.group_helpdesk_user" attrs="{'invisible': [('user_id', '!=', False)]}" data-hotkey="q"/>

Field `use_credit_notes` does not exist

View error context:
{'file': '/home/odoo/src/user/helpdesk_ticket_custo/views/helpdesk_ticket_views.xml',
 'line': 1,
 'name': 'helpdesk.ticket.custo.form',
 'view': ir.ui.view(1900,),
 'view.model': 'helpdesk_ticket_custo',
 'view.parent': ir.ui.view(1184,),
 'xmlid': 'inherited_helpdesk_ticket_view_form'}


The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
    at makeErrorFromResponse (https://<...>.odoo.com/web/assets/541-67840bc/web.assets_backend.min.js:995:163)
    at XMLHttpRequest.<anonymous> (https://<...>.dev.odoo.com/web/assets/541-67840bc/web.assets_backend.min.js:1003:13)

SOLVED

  1. _inherit and not __inherit neither _inheritS
  2. no name attribute
class HelpdeskTicket(models.Model):
    _inherit = "helpdesk.ticket"
    
    def action_view_send_to_customer(self):
        print("Bien joué")

see result here


Solution

  • This happens because the new model helpdesk.ticket.custo does not inherit from helpdesk.ticket, you used __inherit instead of _inherit attribute