OCA / l10n-spain

Odoo Spain Localization
https://www.aeodoo.org/estado-localizacion
GNU Affero General Public License v3.0
292 stars 520 forks source link

[Add] sequra_payment #3557

Closed m1k3lm closed 1 month ago

m1k3lm commented 7 months ago

This PR adds the seQura payment method as payment provider.

pedrobaeza commented 7 months ago

Hola, Mikel, gracias por la aportación.

Antes de proponerlo a varias versiones, es mejor dejar una correcta y completa, ya que si no, cualquier cambio que se pida, hay que andar propagándolo a todo lo abierto.

En cualquier caso, ambas versiones tienen en rojo tests y pre-commit, y habría que normalizar mensajes de commits y guidelines del código.

¿Puedes por favor echar un vistazo?

HaraldPanten commented 7 months ago

Creo que mejor será hacerlo primero para V16, ya que la rama está mucho más completa y nos dará mejor visibilidad sobre el impacto con otros módulos.

Gracias por la aportación @m1k3lm !

m1k3lm commented 7 months ago

@HaraldPanten esta es la rama de la V16, lo envié para ambas porque tarda mucho en ejecutarse el workflow de los tests. Ahora se han cancelado no han llegado a ejecutarse.

pedrobaeza commented 7 months ago

Es que hay un problema general en OCA. No sigas intentándolo mientras no se resuelva.

https://github.com/OCA/oca-addons-repo-template/issues/250

HaraldPanten commented 7 months ago

@HaraldPanten esta es la rama de la V16, lo envié para ambas porque tarda mucho en ejecutarse el workflow de los tests. Ahora se han cancelado no han llegado a ejecutarse.

Correcto. Me explico mejor.

Quiero decir que lo mejor es seguir trabajando en esta rama (efectivamente es la 16.0). Una vez fusionado en esta rama, será el mejor momento de hacer el PR en el resto de ramas.

Como dice Pedro, los tests tienen un fallo temporal.

m1k3lm commented 6 months ago

@HaraldPanten @pedrobaeza Los errores que salen son en otros módulos, no en el que estoy añadiendo. He hecho un rebase y varias pruebas. Pero ni tests / test with Odoo (pull_request) ni tests / test with OCB (pull_request) pasan, de manera aparentemente arbitraria a veces indican que ha habido dos errores o uno.

ERROR odoo odoo.schema: Table 'tbai_vat_regime_key': unable to set NOT NULL on column 'type' 
 ERROR odoo odoo.tests.suite: ERROR: setUpClass (odoo.addons.l10n_es_account_statement_import_n43.tests.test_l10n_es_account_bank_statement_import_n43.L10nEsAccountStatementImportN43)
...
ERROR odoo odoo.modules.loading: Module l10n_es_account_statement_import_n43: 0 failures, 1 errors of 0 tests

¿Alguna idea de cúal puede ser la causa?

pedrobaeza commented 6 months ago

Hola @m1k3lm el error de los tests parece que lo está creando tu módulo:

 2024-05-22 19:11:03,677 449 ERROR odoo odoo.tests.suite: ERROR: setUpClass (odoo.addons.l10n_es_account_statement_import_n43.tests.test_l10n_es_account_bank_statement_import_n43.L10nEsAccountStatementImportN43)
Traceback (most recent call last):
  File "/__w/l10n-spain/l10n-spain/l10n_es_account_statement_import_n43/tests/test_l10n_es_account_bank_statement_import_n43.py", line 43, in setUpClass
    cls.journal_01 = cls.env["account.journal"].create(
  File "<decorator-gen-207>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 414, in _model_create_multi
    return create(self, [arg])
  File "/opt/odoo/addons/account/models/account_journal.py", line 749, in create
    journals = super(AccountJournal, self.with_context(mail_create_nolog=True)).create(vals_list)
  File "<decorator-gen-137>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/addons/mail/models/mail_thread.py", line 258, in create
    threads = super(MailThread, self).create(vals_list)
  File "<decorator-gen-124>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo-venv/lib/python3.10/site-packages/odoo/addons/component_event/models/base.py", line 102, in create
    records = super(Base, self).create(vals_list)
  File "<decorator-gen-68>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/addons/base/models/ir_fields.py", line 670, in create
    recs = super().create(vals_list)
  File "<decorator-gen-15>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/models.py", line 4013, in create
    records._check_company()
  File "/opt/odoo/odoo/models.py", line 3421, in _check_company
    corecord = record.sudo()[name]
  File "/opt/odoo/odoo/models.py", line 5948, in __getitem__
    return self._fields[key].__get__(self, self.env.registry[self._name])
  File "/opt/odoo/odoo/fields.py", line 4372, in __get__
    return super().__get__(records, owner)
  File "/opt/odoo/odoo/fields.py", line 2804, in __get__
    return super().__get__(records, owner)
  File "/opt/odoo/odoo/fields.py", line 1158, in __get__
    self.recompute(record)
  File "/opt/odoo/odoo/fields.py", line 1370, in recompute
    apply_except_missing(self.compute_value, recs)
  File "/opt/odoo/odoo/fields.py", line 1343, in apply_except_missing
    func(records)
  File "/opt/odoo/odoo/fields.py", line 1392, in compute_value
    records._compute_field_value(self)
  File "/opt/odoo/addons/mail/models/mail_thread.py", line 403, in _compute_field_value
    return super()._compute_field_value(field)
  File "/opt/odoo/odoo/models.py", line 4232, in _compute_field_value
    fields.determine(field.compute, self)
  File "/opt/odoo/odoo/fields.py", line 98, in determine
    return needle(*args)
  File "/opt/odoo/addons/account/models/account_journal.py", line 357, in _compute_inbound_payment_method_line_ids
    journal.inbound_payment_method_line_ids = pay_method_line_ids_commands
  File "/opt/odoo/odoo/fields.py", line 1305, in __set__
    self.write(protected_records, value)
  File "/opt/odoo/odoo/fields.py", line 4267, in write
    return self.write_batch([(records, value)])
  File "/opt/odoo/odoo/fields.py", line 4288, in write_batch
    return self.write_real(records_commands_list, create)
  File "/opt/odoo/odoo/fields.py", line 4487, in write_real
    flush()
  File "/opt/odoo/odoo/fields.py", line 4443, in flush
    comodel.create(to_create)
  File "<decorator-gen-212>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/addons/account/models/account_payment_method.py", line 164, in create
    return super().create(vals_list)
  File "<decorator-gen-124>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo-venv/lib/python3.10/site-packages/odoo/addons/component_event/models/base.py", line 102, in create
    records = super(Base, self).create(vals_list)
  File "<decorator-gen-68>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/addons/base/models/ir_fields.py", line 670, in create
    recs = super().create(vals_list)
  File "<decorator-gen-15>", line 2, in create
  File "/opt/odoo/odoo/api.py", line 415, in _model_create_multi
    return create(self, arg)
  File "/opt/odoo/odoo/models.py", line 3975, in create
    records = self._create(data_list)
  File "/opt/odoo/odoo/models.py", line 4227, in _create
    records._validate_fields(name for data in data_list for name in data['stored'])
  File "/opt/odoo/odoo/models.py", line 1359, in _validate_fields
    check(self)
  File "/opt/odoo/addons/account/models/account_payment_method.py", line 131, in _ensure_unique_name_for_journal
    self.journal_id._check_payment_method_line_ids_multiplicity()
  File "/opt/odoo/addons/account/models/account_journal.py", line 552, in _check_payment_method_line_ids_multiplicity
    raise ValidationError(_(
odoo.exceptions.ValidationError: Some payment methods supposed to be unique already exists somewhere else.
([sequra] seQura (inbound))

Fíjate que habla de que el método de pago sequra no es único.

m1k3lm commented 6 months ago

Gracias @pedrobaeza,

He probado a eliminar el post_init_hook del manifest y se ve que así ya pasa el test.

El problema es que el módulo necesita el post_init_hook para ejecutar el setup_provider como lo hacen el resto de métodos de pago en odoo: https://github.com/odoo/odoo/blob/9c8265f588b0de3d4076e9ccaf53fe15084527a9/addons/payment_mollie/__manifest__.py#L20 https://github.com/odoo/odoo/blob/9c8265f588b0de3d4076e9ccaf53fe15084527a9/addons/payment_mollie/__init__.py#L10

(en payment_redsys no se usa el ini_hook y por eso necesitan extender el modelo account_payment_method )

El test no debería provocar que se instale multiples veces el módulo y se ejecute el post_ini_hook sin hacer un uninstall antes ¿no?

pedrobaeza commented 6 months ago

Buenas, Mikel, he estado echando un vistazo, pero la verdad es que no veo la razón. Puede que te falte por sobreescribir algún método que evite una duplicación o algo, pero no debería fallar como tú dices. ¿En local ejecutas los tests y no te sale el error? Tal vez hay una mala interacción con https://github.com/OCA/l10n-spain/tree/16.0/l10n_es_account_banking_sepa_fsdd. Prueba a instalar ambos en local a ver si te da el problema y seguimos tirando del hilo.

github-actions[bot] commented 2 months ago

There hasn't been any activity on this pull request in the past 4 months, so it has been marked as stale and it will be closed automatically if no further activity occurs in the next 30 days. If you want this PR to never become stale, please ask a PSC member to apply the "no stale" label.