Pular para conteúdo

Arquitetura de Módulos

Objetivo

Documentar a estrutura modular da localização brasileira CIEL IT, suas dependências internas e externas, e a organização em camadas lógicas para facilitar a compreensão do sistema como um todo.


Diagrama de Dependências

graph TD
    subgraph "Camada 1 — Núcleo Fiscal"
        CORE["l10n_br_ciel_it_account<br/>(Módulo Core)"]
    end

    subgraph "Camada 2 — Extensões Enterprise"
        ACCT["l10n_br_ciel_it_account_accountant<br/>(Batch Payment, CIAP, Cash Flow)"]
        REPAIR["l10n_br_ciel_it_account_repair<br/>(Assistência Técnica)"]
    end

    subgraph "Camada 3 — Fluxos Específicos"
        SALE_OUT["l10n_br_ciel_it_sale_output<br/>(Saída de Vendas)"]
        PURCH_OUT["l10n_br_ciel_it_purchase_output<br/>(Saída de Compras)"]
        SUBSCR["l10n_br_ciel_it_sale_subscription<br/>(Assinaturas)"]
    end

    subgraph "Camada 4 — Canais de Venda"
        WEBSITE["l10n_br_ciel_it_website<br/>(E-commerce)"]
        POS["l10n_br_ciel_it_pos<br/>(PDV / NFC-e)"]
    end

    subgraph "Camada 5 — Pagamentos"
        CIELO["l10n_br_ciel_it_payment_cielo"]
        REDE["l10n_br_ciel_it_payment_rede"]
        PAGBANK["l10n_br_ciel_it_payment_pag_bank"]
    end

    subgraph "Camada 6 — Logística"
        MELHOR["l10n_br_ciel_it_delivery_melhorenvio<br/>(Melhor Envio)"]
    end

    subgraph "Camada 7 — Comunicação"
        WA["wa<br/>(WhatsApp Business)"]
    end

    ACCT --> CORE
    REPAIR --> CORE
    SALE_OUT --> CORE
    PURCH_OUT --> CORE
    SUBSCR --> CORE
    WEBSITE --> CORE
    POS --> CORE
    CIELO -.-> CORE
    REDE -.-> CORE
    PAGBANK -.-> CORE
    MELHOR -.->|"delivery"| CORE
    WA -.->|"mail"| CORE

Legenda: Setas sólidas (→) indicam dependência direta via __manifest__.py. Setas tracejadas (-.->) indicam integração funcional indireta (compartilham dados mas não declaram dependência direta).


Camadas Lógicas

Camada 1 — Núcleo Fiscal (l10n_br_ciel_it_account)

É o módulo obrigatório e ponto central de toda a localização. Contém:

Domínio Componentes
Cadastros Fiscais Empresa (res.company), Parceiros (res.partner), Produtos (product.template), País/UF/Município (res.country)
Motor de Impostos Cálculo de ICMS, IPI, PIS, COFINS, ISS, retenções, DIFAL, FCP, IBS/CBS
Operações Fiscais CFOP, Operações, Tipos de Documento, Mensagens Fiscais
Documentos Fiscais NF-e, NFS-e, NFC-e: emissão, autorização, CCe, cancelamento
Obrigações Acessórias SPED (EFD, ECD, ECF, DCTF, FCI), REINF
Comércio Exterior Siscomex DUIMP/CATP, DI, atributos NCM
Financeiro / Bancário Cobrança escritural, destinação bancária, pagamento escritural
Apuração Fiscal Apuração de impostos (caixa/competência), saldo credor
Encerramento Year-end closing (DRE → lucro/prejuízo)
Relatórios Livros fiscais (entrada/saída), relatório fiscal Excel, apuração ICMS
Frontend (OWL) Botões de remessa/retorno bancário, destinação bancária

Arquivo: l10n_br_ciel_it_account/__manifest__.py
Dependências Odoo: base, mail, contacts, delivery, account, purchase, purchase_requisition, uom, stock, sale, product_expiry, payment, sale_stock, analytic, stock_delivery, hr, hr_contract, stock_account


Camada 2 — Extensões Enterprise

l10n_br_ciel_it_account_accountant

Arquivo Classe Escopo
account_asset.py AccountAsset Extensões fiscais para ativo imobilizado
account_batch_payment.py AccountBatchPayment Pagamento em lote com dados bancários BR
account_cash_flow_p_r_report.py CashFlowPRReport Relatório de fluxo de caixa a pagar/receber (43 KB)
account_ciap.py AccountCiap Controle de Crédito de ICMS do Ativo Permanente
account_followup_report.py AccountFollowupReport Extensão do follow-up de cobrança
reconciliation_widget.py ReconciliationWidget Extensão do widget de reconciliação

Dependências: l10n_br_ciel_it_account, módulos Enterprise (account_accountant, account_asset, etc.)

l10n_br_ciel_it_account_repair

Extensão fiscal para ordens de reparo/assistência técnica. Adiciona campos fiscais brasileiros às ordens de reparo do módulo repair.


Camada 3 — Fluxos Específicos

Módulo Escopo
l10n_br_ciel_it_sale_output Personalização de saídas de venda (dados adicionais no faturamento)
l10n_br_ciel_it_purchase_output Personalização de saídas de compra
l10n_br_ciel_it_sale_subscription Fiscal brasileiro aplicado a assinaturas recorrentes

Camada 4 — Canais de Venda

l10n_br_ciel_it_website (E-commerce)

  • Consulta de CEP no checkout com preenchimento automático
  • Campos CPF/CNPJ no formulário de checkout
  • Cálculo de frete baseado em CEP

l10n_br_ciel_it_pos (PDV)

  • Emissão de NFC-e (modelo 65) no ponto de venda
  • Captura de CPF no cupom fiscal
  • Modo de contingência offline

Camada 5 — Pagamentos

Todos os módulos de pagamento dependem apenas do módulo payment do Odoo (framework base de pagamentos) e se integram indiretamente com o módulo core via sale.order.

Módulo Gateway Métodos API
l10n_br_ciel_it_payment_cielo Cielo 3.0 Crédito, Débito, Pix api.cieloecommerce.cielo.com.br
l10n_br_ciel_it_payment_rede Rede e-Rede Crédito, Débito api.userede.com.br
l10n_br_ciel_it_payment_pag_bank PagBank Pix, Boleto, Crédito api.pagseguro.com

Camada 6 — Logística

l10n_br_ciel_it_delivery_melhorenvio

Arquivo Classe Escopo
delivery_melhorenvio.py DeliveryMelhorEnvio Cotação, criação de envio, rastreamento, cancelamento via API Melhor Envio
stock_package_type.py StockPackageType Extensão para tipos de embalagem

Dependências: delivery, mail
API: melhorenvio.com.br/api/v2


Camada 7 — Comunicação

wa (WhatsApp Business)

Arquivo Classe Escopo
wa_wa.py WaWa Modelo principal de mensagens WA
wa_api.py WaApi Cliente da API WA Business
wa_server.py WaServer Gerenciamento de servidor WA
wa_session.py WaSession Sessões ativas (QR code, status)
wa_template.py WaTemplate Templates de mensagem HSM
mail_thread.py MailThread Integração WA no chatter do Odoo
chatbot_script.py ChatBotScript Automação de chatbot
ir_actions_server.py IrActionsServer Ações automáticas via WA

Dependências: base, mail, contacts


Estrutura de Diretórios do Módulo Core

l10n_br_ciel_it_account/
├── __manifest__.py          # Manifesto do módulo
├── models/                  # Models Python (regras de negócio)
│   ├── account.py           # AccountMove, AccountMoveLine (NF-e, impostos)
│   ├── res_company.py       # Configuração fiscal da empresa
│   ├── res_partner.py       # Parceiros (CNPJ/CPF, IE, CNAE)
│   ├── product.py           # Produtos (NCM, CEST, DUIMP)
│   ├── sale_order.py        # Vendas (simulação fiscal, CFOP, operações)
│   ├── purchase.py          # Compras (importação XML, CFOP entrada)
│   ├── stock_picking.py     # Estoque (faturamento por entrega)
│   ├── delivery_carrier.py  # Transportadoras (peso, volumes)
│   ├── fiscal_reports.py    # Livros fiscais (entrada/saída)
│   ├── account_report.py    # Relatório fiscal Excel
│   ├── duimp_catp_client.py # Cliente API Siscomex
│   ├── l10n_br_ciel_it_account_apuracao.py  # Apuração de impostos
│   ├── l10n_br_ciel_it_year_end_closing.py  # Encerramento exercício
│   ├── res_country.py       # Municípios IBGE
│   ├── uom_uom.py           # UoM fiscal
│   ├── sale_report.py       # Relatório de vendas BR
│   └── stock_valuation_recompute.py  # Recálculo valorização
├── views/                   # Views XML (formulários, listas, menus)
├── data/                    # Dados iniciais (CFOPs, sequências, classificações)
├── security/                # Regras de acesso e grupos
├── report/                  # Templates QWeb para relatórios PDF
├── reinf/                   # Eventos REINF (XML)
├── sped/                    # Obrigações SPED
│   ├── efd/                 # EFD ICMS/IPI e Contribuições
│   │   ├── icms_ipi/        # Registros EFD ICMS/IPI
│   │   └── pis_cofins/      # Registros EFD Contribuições
│   ├── ecd/                 # Escrituração Contábil Digital
│   ├── ecf/                 # Escrituração Contábil Fiscal
│   ├── dctf/                # DCTF
│   └── fci/                 # Ficha de Conteúdo de Importação
└── static/                  # Assets frontend (JS/OWL, XML)
    └── src/
        ├── js/              # Controllers OWL (cobrança, pagamento, destinação bancária)
        └── xml/             # Templates de botões OWL

Fluxo de Dados Simplificado

flowchart LR
    A["Pedido de Venda<br/>(sale.order)"] --> B["Simulação Fiscal<br/>(simulate_impostos)"]
    B --> C["Fatura<br/>(account.move)"]
    C --> D["Transmissão<br/>(NF-e/NFS-e)"]
    D --> E["SEFAZ /<br/>Prefeitura"]

    C --> F["Apuração<br/>(apuracao)"]
    F --> G["Guia de<br/>Pagamento"]

    C --> H["SPED / REINF"]

    I["Pedido de Compra<br/>(purchase.order)"] --> J["Importação<br/>XML NF-e"]
    J --> C

    K["PDV / E-commerce"] --> A

Referências Cruzadas