Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error en el calculo de retenciones (account_withholdin) Odoo 16 #508

Open
Leandro090685 opened this issue Jul 30, 2024 · 1 comment
Open

Comments

@Leandro090685
Copy link

Estimados,
A la hora de realizar el calculo de retenciones en pagos relacionas a las facturas de tipo "M",
El codigo rompe dentro del metodo _get_valid_liquidity_accounts (account.payment)
La linea que da error es la siquiente:
res |= rep_lines.mapped('account_id')
TypeError: unsupported operand type(s) for |=: 'tuple' and 'account.account'
Esto se debe a que res (la variable donde se almacena el super de _get_valid_liquidity_accounts) es una tupla de account.account, mientras que rep_lines es otro tipo de dato (account.account). Esto no funcionara bajo ninguna condicion.
La solucion posible seria remplazar:
res |= rep_lines.mapped('account_id')
por:
res += tuple([v for v in rep_lines.mapped('account_id')])
Me interesa saber si debo hacer un merge request aplicando el fix o lo realizan ustedes.
Saludos cordiales!!

@pedrozam71
Copy link

Presenta el mismo problema al realizar el calculo de retenciones en Odoo V16.
Traceback (most recent call last):
File "/opt/odoo16/odoo16/odoo/models.py", line 5853, in concat
if arg._name != self._name:
^^^^^^^^^
AttributeError: 'tuple' object has no attribute '_name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/odoo16/odoo16/odoo/http.py", line 1653, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/service/model.py", line 133, in retrying
result = func()
^^^^^^
File "/opt/odoo16/odoo16/odoo/http.py", line 1680, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/http.py", line 1884, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/http.py", line 734, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/web/controllers/dataset.py", line 46, in call_button
action = self._call_kw(model, method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/web/controllers/dataset.py", line 33, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/api.py", line 468, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/api.py", line 453, in _call_kw_multi
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/.local/share/Odoo/addons/16.0/account_withholding_automatic/models/account_payment_group.py", line 93, in compute_withholdings
]).create_payment_withholdings(rec)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/.local/share/Odoo/addons/16.0/l10n_ve_withholding/models/account_tax.py", line 387, in create_payment_withholdings
payment_withholding = payment_withholding.create(vals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 2, in create
File "/opt/odoo16/odoo16/odoo/api.py", line 414, in _model_create_multi
return create(self, [arg])
^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/.local/share/Odoo/addons/16.0/account_payment_group/models/account_payment.py", line 170, in create
recs = super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 2, in create
File "/opt/odoo16/odoo16/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/account/models/account_payment.py", line 721, in create
pay.move_id.write(to_write)
File "/opt/odoo16/odoo16/addons/account/models/account_move.py", line 2350, in write
)).write(vals)
^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/mail/models/mail_thread.py", line 315, in write
result = super(MailThread, self).write(values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/mail/models/mail_activity_mixin.py", line 241, in write
return super(MailActivityMixin, self).write(vals)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/models.py", line 3803, in write
field.write(self, value)
File "/opt/odoo16/odoo16/odoo/fields.py", line 4267, in write
return self.write_batch([(records, value)])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/fields.py", line 4288, in write_batch
return self.write_real(records_commands_list, create)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/fields.py", line 4487, in write_real
flush()
File "/opt/odoo16/odoo16/odoo/fields.py", line 4443, in flush
comodel.create(to_create)
File "", line 2, in create
File "/opt/odoo16/odoo16/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/account/models/account_move_line.py", line 1467, in create
lines._check_constrains_account_id_journal_id()
File "/opt/odoo16/odoo16/addons/account/models/account_move_line.py", line 1186, in _check_constrains_account_id_journal_id
self.flush_recordset()
File "/opt/odoo16/odoo16/odoo/models.py", line 5658, in flush_recordset
self._recompute_recordset(fnames)
File "/opt/odoo16/odoo16/odoo/models.py", line 6287, in _recompute_recordset
self._recompute_field(field, self._ids)
File "/opt/odoo16/odoo16/odoo/models.py", line 6301, in _recompute_field
field.recompute(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1370, in recompute
apply_except_missing(self.compute_value, recs)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1343, in apply_except_missing
func(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1392, in compute_value
records._compute_field_value(self)
File "/opt/odoo16/odoo16/odoo/models.py", line 4259, in _compute_field_value
fields.determine(field.compute, self)
File "/opt/odoo16/odoo16/odoo/fields.py", line 101, in determine
return needle(records, *args)
^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/fields.py", line 702, in _compute_related
record[self.name] = self._process_related(value[self.related_field.name])
~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/models.py", line 5975, in getitem
return self._fields[key].get(self, self.env.registry[self._name])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/fields.py", line 1158, in get
self.recompute(record)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1370, in recompute
apply_except_missing(self.compute_value, recs)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1343, in apply_except_missing
func(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1392, in compute_value
records._compute_field_value(self)
File "/opt/odoo16/odoo16/addons/mail/models/mail_thread.py", line 403, in _compute_field_value
return super()._compute_field_value(field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/models.py", line 4259, in _compute_field_value
fields.determine(field.compute, self)
File "/opt/odoo16/odoo16/odoo/fields.py", line 98, in determine
return needle(*args)
^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/l10n_latam_invoice_document/models/account_move.py", line 73, in _compute_name
super(AccountMove, group)._compute_name()
File "/opt/odoo16/odoo16/addons/account/models/account_move.py", line 719, in _compute_name
move._set_next_sequence()
File "/opt/odoo16/odoo16/addons/account_sequence/models/sequence_mixin.py", line 32, in _set_next_sequence
self.flush_recordset()
File "/opt/odoo16/odoo16/odoo/models.py", line 5658, in flush_recordset
self._recompute_recordset(fnames)
File "/opt/odoo16/odoo16/odoo/models.py", line 6287, in _recompute_recordset
self._recompute_field(field, self._ids)
File "/opt/odoo16/odoo16/odoo/models.py", line 6301, in _recompute_field
field.recompute(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1370, in recompute
apply_except_missing(self.compute_value, recs)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1343, in apply_except_missing
func(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1392, in compute_value
records._compute_field_value(self)
File "/opt/odoo16/odoo16/addons/mail/models/mail_thread.py", line 403, in _compute_field_value
return super()._compute_field_value(field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/models.py", line 4259, in _compute_field_value
fields.determine(field.compute, self)
File "/opt/odoo16/odoo16/odoo/fields.py", line 98, in determine
return needle(*args)
^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/account/models/account_move.py", line 904, in _compute_payment_state
self.env['account.payment'].flush_model(['is_matched'])
File "/opt/odoo16/odoo16/odoo/models.py", line 5647, in flush_model
self._recompute_model(fnames)
File "/opt/odoo16/odoo16/odoo/models.py", line 6273, in _recompute_model
self._recompute_field(field)
File "/opt/odoo16/odoo16/odoo/models.py", line 6301, in _recompute_field
field.recompute(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1370, in recompute
apply_except_missing(self.compute_value, recs)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1343, in apply_except_missing
func(records)
File "/opt/odoo16/odoo16/odoo/fields.py", line 1392, in compute_value
records._compute_field_value(self)
File "/opt/odoo16/odoo16/addons/mail/models/mail_thread.py", line 403, in _compute_field_value
return super()._compute_field_value(field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/models.py", line 4259, in _compute_field_value
fields.determine(field.compute, self)
File "/opt/odoo16/odoo16/odoo/fields.py", line 98, in determine
return needle(*args)
^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/account/models/account_payment.py", line 352, in _compute_reconciliation_status
liquidity_lines, counterpart_lines, writeoff_lines = pay._seek_for_lines()
^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/addons/account/models/account_payment.py", line 185, in _seek_for_lines
if line.account_id in self._get_valid_liquidity_accounts():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/.local/share/Odoo/addons/16.0/account_withholding/models/account_payment.py", line 33, in _get_valid_liquidity_accounts
res += (self._get_withholding_repartition_line().account_id,)
File "/opt/odoo16/odoo16/odoo/models.py", line 5844, in add
return self.concat(other)
^^^^^^^^^^^^^^^^^^
File "/opt/odoo16/odoo16/odoo/models.py", line 5857, in concat
raise TypeError(f"unsupported operand types in: {self} + {arg!r}")
TypeError: unsupported operand types in: account.account(275, 271, 272) + (account.account(92,),)

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
RPC_ERROR
at makeErrorFromResponse (http://vag.zmodoo.online:8069/web/assets/179-04864e5/web.assets_backend.min.js:1008:163)
at XMLHttpRequest. (http://vag.zmodoo.online:8069/web/assets/179-04864e5/web.assets_backend.min.js:1016:13)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants