Odoo Community Association

Common EDI fiscal features

Beta License: AGPL-3 OCA/l10n-brazil Translate me on Weblate Try me on Runboat

Este módulo fornece a infraestrutura base para o Intercâmbio Eletrônico de Dados (EDI) de documentos fiscais brasileiros no Odoo.

Ele implementa uma Máquina de Estados Finitos (FSM - Finite State Machine) para gerenciar o ciclo de vida dos documentos fiscais eletrônicos (NF-e, NFC-e, NFS-e, CT-e, MDF-e etc.), garantindo integridade, consistência e rastreabilidade das transições de estado.

Principais Características

  • Máquina de Estados (FSM): controle rigoroso das transições de estado (por exemplo, de draft para open, depois para sending e finalmente para authorized, rejected ou denied), com bloqueio de movimentos inválidos.
  • Configuração extensível por documento: a FSM base é definida no método get_state_machine_config() e pode ser sobrescrita por módulos específicos de documento fiscal para ajustar estados, transições e callbacks.
  • Gerenciamento de Eventos: arquitetura para suportar eventos fiscais vinculados ao documento, como Cancelamento, Carta de Correção Eletrônica (CC-e) e Inutilização de Numeração.
  • Abstração de Protocolo: separa a lógica de negócios da lógica de comunicação. Módulos específicos (como l10n_br_nfe ou l10n_br_nfse) herdam deste módulo para implementar a integração com webservices (SEFAZ/Prefeituras), enquanto o l10n_br_fiscal_edi orquestra o fluxo.
  • Interface Padronizada: oferece uma experiência consistente com botões e ações uniformes, independentemente do modelo de documento fiscal.

Workflow de Estados

O diagrama abaixo ilustra os estados e transições padrão definidos no módulo base (a configuração pode ser estendida/sobrescrita por módulos filhos):

FSM state diagram

Table of contents

Usage

O fluxo operacional para emissão e gerenciamento de documentos fiscais (eletrônicos e não eletrônicos) segue as etapas abaixo.

  1. Validação (draft -> open)

  • O documento inicia no estado Rascunho (draft).
  • Ao clicar no botão Confirmar, o sistema executa validações de integridade, define data, comentário, numeração/sequência (quando aplicável) e demais preparações do documento.
  • O estado muda para Em Aberto (open), indicando que o documento está apto para o próximo passo.
  1. Transmissão (open -> sending -> resultado)

  • No estado Em Aberto, o botão Enviar fica disponível.
  • Ao enviar, o documento vai para o estado transitório Enviando (sending), e a camada de integração executa a comunicação com o fisco.
  • Possíveis resultados padrão:
    • Autorizado (authorized): autorização concluída com protocolo e XML de retorno.
    • Rejeitado (rejected): erros de validação retornados pelo fisco. O usuário corrige o documento e pode enviar novamente.
    • Denegado (denied): irregularidade fiscal. Em geral, representa um estado final para aquela numeração.
  • Observação: para documentos não eletrônicos (ou sem processador), o fluxo de envio pode finalizar diretamente em Autorizado conforme a implementação.
  1. Cancelamento (* -> cancel)

  • O estado Cancelado (cancel) pode ser atingido a partir de múltiplos estados no fluxo base (authorized, open, rejected, draft, sending).
  • Para documentos autorizados eletrônicos emitidos pela empresa, a ação de cancelar abre assistente próprio para coleta/processamento da justificativa.
  • Para documentos ainda não autorizados, o cancelamento pode ocorrer diretamente no fluxo local.
  1. Retorno para Rascunho (* -> draft)

  • O fluxo base permite retornar para Rascunho (draft) a partir de open, sending, rejected, cancel, denied e também de draft (idempotente).
  • Essa ação limpa informações transitórias de erro/relatório para permitir nova preparação do documento.
  1. Eventos e correções

  • Carta de Correção (CC-e): para documentos autorizados que suportam o evento.
  • Inutilização de Numeração: para faixas de numeração não utilizadas, conforme regras fiscais aplicáveis.
  1. Extensão do workflow por módulo fiscal

A FSM deste módulo é projetada para extensão. Módulos de tipos fiscais específicos podem sobrescrever get_state_machine_config() e callbacks relacionados para:

  • incluir estados adicionais;
  • alterar transições válidas;
  • personalizar regras de pré/pós-transição;
  • adaptar o fluxo ao comportamento dos webservices de cada documento.

Bug Tracker

Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.

Do not contact contributors directly about support or help with technical issues.

Authors

  • Akretion
  • KMEE

Contributors

Maintainers

This module is maintained by the OCA.

Odoo Community Association

OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.

Current maintainers:

renatonlima rvalyi mileo

This module is part of the OCA/l10n-brazil project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.