diff --git a/l10n_br_account/models/account_move.py b/l10n_br_account/models/account_move.py index c91448638cd1..1d927b395af1 100644 --- a/l10n_br_account/models/account_move.py +++ b/l10n_br_account/models/account_move.py @@ -357,6 +357,22 @@ def _compute_needed_terms(self): amount_currency = ( invoice.amount_total - invoice.amount_ipi_value ) * sign + + # Embora seja improvável que haja um caso real disso, + # estou convertendo os valores para a moeda da empresa, + # caso seja diferente da moeda da fatura, para manter a + # consistência. Os montantes brasileiros acima estão na + # moeda da fatura. Assim, o amount_currency fica na moeda + # da empresa, conforme o comportamento nativo. + amount_currency = invoice.currency_id._convert( + from_amount=amount_currency, + to_currency=invoice.company_currency_id, + company=invoice.company_id, + date=invoice.invoice_date or invoice.date, + ) + amount_currency = invoice.company_id.currency_id.round( + amount_currency + ) untaxed_amount_currency = amount_currency * sign untaxed_amount = amount_currency * sign diff --git a/l10n_br_account/models/account_move_line.py b/l10n_br_account/models/account_move_line.py index 3d876f40520b..98ee43c7a939 100644 --- a/l10n_br_account/models/account_move_line.py +++ b/l10n_br_account/models/account_move_line.py @@ -328,6 +328,19 @@ def changed(fname): if line.currency_id == line.company_id.currency_id: line.balance = amount_currency + # Os totais nas linhas foram atualizadas, mas o total da fatura + # não foi recalculado automaticamente, já que o método compute_amount + # não foi acionado após as alterações nas linhas. + # Por esse motivo, estou adicionando manualmente os campos no + # add_to_compute do account_move. + # Questão: Por que o compute_amount não foi acionado automaticamente? + # Isso ocorre apenas quando os valores são diretamente informados + # no create? Realizar um teste isolado para confirmar esse + # comportamento. + move_id = line.move_id + self.env.add_to_compute(move_id._fields["amount_total"], move_id) + self.env.add_to_compute(move_id._fields["amount_untaxed"], move_id) + after = existing() for line in after: if ( @@ -539,4 +552,4 @@ def _onchange_fiscal_tax_ids(self): user_type=user_type, fiscal_operation=self.fiscal_operation_id ) - return result + return result #