OCA / l10n-brazil

Localização brasileira oficial do Odoo.
https://odoo-community.org/psc-teams/brazil-66
GNU Affero General Public License v3.0
236 stars 244 forks source link

[14.0][FIX] l10n_br_account_payment_order: ensure payment_mode_id.cnab_write_off_code_id is defined before comparison #3268

Closed kaynnan closed 1 month ago

kaynnan commented 1 month ago

cc @marcelsavegnago @douglascstd @WesleyOliveira98

[HT00527]

Ao analisar o campo cnab_write_off_code_id no contexto de um modo de pagamento "Outbound", observei que, mesmo na ausência de um valor, o código sempre entra na condicional if. Isso causa um problema específico: quando há um adiantamento para o fornecedor, o sistema ignora o valor pendente (Amount Due) restante. Portanto, foi necessário implementar uma validação anterior que garantisse a existência de um valor, evitando essa falha no processo.

OCA-git-bot commented 1 month ago

Hi @mbcosta, some modules you are maintaining are being modified, check this out!

kaynnan commented 1 month ago

Pessoal, deixei a PR em Draft ainda para analisar o que causou os conflitos no tests:


2024-08-06 19:56:30,282 565 ERROR odoo odoo.addons.l10n_br_account_payment_order.tests.test_payment_order_change: ERROR: TestPaymentOrderChange.test_change_not_payment
Traceback (most recent call last):
  File "/__w/l10n-brazil/l10n-brazil/l10n_br_account_payment_order/tests/test_payment_order_change.py", line 141, in test_change_not_payment
    self._payment_order_all_workflow(change_payment_order)
  File "/__w/l10n-brazil/l10n-brazil/l10n_br_account_payment_order/tests/test_base_class.py", line 24, in _payment_order_all_workflow
    payment_order_id.draft2open()
  File "/__w/l10n-brazil/l10n-brazil/l10n_br_account_payment_order/models/account_payment_order.py", line 176, in draft2open
    raise UserError(
odoo.exceptions.UserError: The amount for Partner 'KMEE' is negative or null (0.00) !```
antoniospneto commented 1 month ago

@kaynnan eu não entendi bem, esse bug ocorre no caso de uso de um pagamento de um fornecedor por exemplo? que ai vai ser usado o módulo cnab_structure em conjunto isso?

kaynnan commented 1 month ago

@kaynnan eu não entendi bem, esse bug ocorre no caso de uso de um pagamento de um fornecedor por exemplo? que ai vai ser usado o módulo cnab_structure em conjunto isso?

Exato @antoniospneto, quando realizo o teste, utilizo o Modo de Pagamento (TED - SISPAG Itaú) e isso me ocorre, mas quando é um manual(outbound) não me ocorre, isso se aplicando somente no Fornecedor, onde ele deveria considerar o "Amount Due" restante no CNAB, mas ele ignora os adiantamentos

douglascstd commented 1 month ago

@kaynnan eu não entendi bem, esse bug ocorre no caso de uso de um pagamento de um fornecedor por exemplo? que ai vai ser usado o módulo cnab_structure em conjunto isso?

Esse é aquele problema que tinhamos de ele não considerar o valor devido, ele sempre considera o valor total na montagem do payment.order. E encontramos que esse problema acontece, pois na localização foi alterado o valor do campo que estava assim: na OCA/bank_payment:

            amount_currency = self.amount_residual_currency

https://github.com/OCA/bank-payment/blob/449b533c47ab74fffcb6dd2ef3bad46c86364aa4/account_payment_order/models/account_move_line.py#L95

E a localização utiliza o credit OU debit (que vem lá da v12) https://github.com/OCA/l10n-brazil/blob/37f94b5d06ed2789c1a83d3ad698456cae4f3425/l10n_br_account_payment_order/models/account_move_line.py#L157

Não tem problema com o cnab_structure em si, pois ele utiliza o dado já criado pela payment.order para montar o arquivo cnab. Assim o problema está um passo antes do cnab structure

douglascstd commented 1 month ago

Verificando o IF, se um Payment.order entraria também no IF incluído na localização, parece que ele entra, pois os registros verificados estão ambos como "false": image

kaynnan commented 1 month ago

Verificando o IF, se um Payment.order entraria também no IF incluído na localização, parece que ele entra, pois os registros verificados estão ambos como "false": image

Durante o processo de debug, foi identificado que um modo de pagamento "Outbound", mesmo sem um cnab_write_off_code_id definido, ainda entrava na condição do if conforme ilustrado pelo @douglascstd anteriormente. Para resolver esse problema, foi implementada uma validação para verificar a existência de cnab_write_off_code_id antes de realizar a comparação.

rvalyi commented 1 month ago

/ocabot merge patch

OCA-git-bot commented 1 month ago

What a great day to merge this nice PR. Let's do it! Prepared branch 14.0-ocabot-merge-pr-3268-by-rvalyi-bump-patch, awaiting test results.

OCA-git-bot commented 1 month ago

Congratulations, your PR was merged at 6c30c9d65f7f11ce59fd397d748a4b61cc819b3a. Thanks a lot for contributing to OCA. ❤️