Ir al contenido
Menú
Se marcó esta pregunta

Dear all,

I created a field on project.tags named x_studio_xhores. This field represents the number of hours related to the selected tag.

Then, I added a Many2many custom field on res.partner named x_studio_classes. This field is used to select the classes in which a customer is enrolled. The table displays the title of the tags, the x_studio_xhores field, and the total of x_studio_xhores. 

I need a calculated field "Sumatori" that summarizes the total of x_studio_xhores related to the chosen tags. 

Avatar
Descartar
Mejor respuesta

Hi,

Please refer the below book for defining compute function.

https://www.cybrosys.com/odoo/odoo-books/odoo-17-studio/define-compute-method/#:~:text=To%20define%20a%20compute%20method%20for%20this%20field%20go%20to,the%20products%20in%20the%20field.


In your case:

dependencies: x_studio_classes

compute function :

for record in self:

      total=0

      for line in record.x_studio_classes:

            total = total+line.x_studio_xhores

   record.field_name = total

// field name is the technical name of Sumatori.

Hope it helps

Avatar
Descartar
Mejor respuesta

Have this problem solved for you?? I have same issue.

Avatar
Descartar
Autor Mejor respuesta

Thank you very much for your answer,

I received back an error:

Error de servidor de Odoo

RPC_ERROR

Odoo Server Error

Occured on XXXXXXXX.odoo.com on model res.partner and id 183 on 2024-12-02 13:40:59 GMT

Traceback (most recent call last):
  File "/home/odoo/src/odoo/18.0/odoo/http.py", line 1955, in _transactioning
    return service_model.retrying(func, env=self.env)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/service/model.py", line 137, in retrying
    result = func()
             ^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/http.py", line 1922, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/http.py", line 2169, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/addons/base/models/ir_http.py", line 329, in _dispatch
    result = endpoint(**request.params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/http.py", line 727, in route_wrapper
    result = endpoint(self, *args, **params_ok)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/addons/web/controllers/dataset.py", line 35, in call_kw
    return call_kw(request.env[model], method, args, kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/api.py", line 517, in call_kw
    result = getattr(recs, name)(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/addons/web/models/models.py", line 1010, in onchange
    if field_name not in done and snapshot0.has_changed(field_name)
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/addons/web/models/models.py", line 1123, in has_changed
    return self[field_name] != self.record[field_name]
                               ~~~~~~~~~~~^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/models.py", line 6981, in __getitem__
    return self._fields[key].__get__(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1236, in __get__
    self.recompute(record)
  File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1451, in recompute
    apply_except_missing(self.compute_value, recs)
  File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1424, in apply_except_missing
    func(records)
  File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1473, in compute_value
    records._compute_field_value(self)
  File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_thread.py", line 427, in _compute_field_value
    return super()._compute_field_value(field)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5220, in _compute_field_value
    fields.determine(field.compute, self)
  File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 113, in determine
    return needle(records, *args)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/addons/base/models/ir_model.py", line 49, in <lambda>
    func = lambda self: safe_eval(text, SAFE_EVAL_BASE, {'self': self}, mode="exec")
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/tools/safe_eval.py", line 387, in safe_eval
    c = test_expr(expr, _SAFE_OPCODES, mode=mode, filename=filename)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/odoo/src/odoo/18.0/odoo/tools/safe_eval.py", line 250, in test_expr
    code_obj = compile(expr, filename or "", mode)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<string>", line 3
    for line in record.x_studio_classes:
IndentationError: unexpected indent

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
at makeErrorFromResponse (https://xxxxxxxxxxx.odoo.com/web/assets/dd76726/web.assets_web.min.js:3090:163)
        at XMLHttpRequest.<anonymous> (https://xxxxxxxxxxx.odoo.com/web/assets/dd76726/web.assets_web.min.js:3095:13)

How can I solve that?

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
0
dic 22
1418
1
jun 22
2578
2
nov 23
7296
1
dic 21
2240
1
oct 21
3330