Skip to content

[16.0][REF] l10n_br_fiscal: extrair icms_cst_id do _compute_tax_fields#45

Draft
antoniospneto wants to merge 1 commit into16.0from
16.0-fix-icms-cst-compute
Draft

[16.0][REF] l10n_br_fiscal: extrair icms_cst_id do _compute_tax_fields#45
antoniospneto wants to merge 1 commit into16.0from
16.0-fix-icms-cst-compute

Conversation

@antoniospneto
Copy link
Copy Markdown
Collaborator

Resumo

Extrai o campo icms_cst_id do mega-compute _compute_tax_fields para um compute próprio _compute_icms_cst_id com dependências mínimas.

Problema

O campo icms_cst_id era ao mesmo tempo computado e dependência de _compute_tax_fields, causando:

  1. Edição manual se perde: alterar o CST manualmente era sobrescrito por qualquer mudança em outro campo (price_unit, icmsfcp_tax_id, etc)
  2. Potencial dupla execução: quando o compute alterava o CST, o ORM detectava mudança na dependência e rodava o compute novamente

Solução

  • Novo método _compute_icms_cst_id com @api.depends("fiscal_tax_ids", "fiscal_operation_line_id")
  • Usa fiscal_tax_ids (não icms_tax_id) como dependência para evitar ciclo de computes
  • icms_cst_id permanece no @api.depends de _compute_tax_fields para que desoneração e FCP continuem recomputando quando o CST mudar
  • Removido icms_cst_id de _prepare_fields_icms e _prepare_fields_icmssn (dead code)

Cenários validados

  • Mudar price_unit → CST preservado
  • Mudar icms_tax_id manualmente → CST recomputado do novo tax
  • Editar CST manualmente → preservado, _compute_tax_fields roda com o novo CST para relief/FCP

Plano de testes

  • inv test -m l10n_br_fiscal — 0 failed, 0 errors
  • inv test -m l10n_br_account — 0 failed, 0 errors

@antoniospneto antoniospneto force-pushed the 16.0-fix-icms-cst-compute branch 2 times, most recently from 566c53e to d1a9aec Compare February 20, 2026 02:46
…x_fields

O campo icms_cst_id era ao mesmo tempo computado e dependência de
_compute_tax_fields. Isso causava dois problemas:
1. Edição manual do CST se perdia ao alterar qualquer outro campo
   (price_unit, icmsfcp_tax_id, etc) que disparasse o compute.
2. Potencial dupla execução quando o compute alterava o CST e o ORM
   detectava mudança na própria dependência.

Solução: extrair icms_cst_id para compute próprio _compute_icms_cst_id
com dependências mínimas (fiscal_tax_ids, fiscal_operation_line_id).

Usa fiscal_tax_ids (não icms_tax_id) como dependência para evitar
ciclo: _compute_tax_fields escreve icms_tax_id, que dispararia
_compute_icms_cst_id, que escreve icms_cst_id, que dispararia
_compute_tax_fields novamente.

icms_cst_id permanece no @api.depends de _compute_tax_fields para que
desoneração e FCP continuem recomputando quando o CST mudar.
@antoniospneto antoniospneto force-pushed the 16.0-fix-icms-cst-compute branch from d1a9aec to 8aaeee3 Compare February 20, 2026 02:57
@antoniospneto antoniospneto marked this pull request as draft February 27, 2026 19:26
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

Successfully merging this pull request may close these issues.

1 participant