Pular para conteúdo

Como Diagnosticar Campos SPED

Objetivo

Guia prático para investigar por que um campo SPED está com valor incorreto, vazio ou divergente do esperado.


Passo 1 — Identificar o Campo

  1. Abra o arquivo SPED gerado (.TXT)
  2. Identifique o registro (ex: |C100|) e o campo (contando as posições separadas por |)
  3. Consulte a documentação do registro nesta wiki

Passo 2 — Localizar a Origem

Consulte a tabela de rastreabilidade do registro na documentação desta wiki. Cada campo tem:

Ícone Significado Ação
🏢 Empresa Verificar res.company → aba Localização BR
👤 Parceiro Verificar res.partner → campos BR
📦 Produto Verificar product.product
📄 Fatura Verificar account.move
📋 Linha de fatura Verificar account.move.line → campos l10n_br_*
💰 Motor fiscal Verificar Operação Fiscal → regras de cálculo
🏦 Conta contábil Verificar account.account
⚙️ Configuração Verificar parâmetros na tela do SPED ou empresa
🔒 Fixo no código Não é configurável — só altera com desenvolvimento
🧮 Calculado Derivado de outros campos — investigar as fontes
⚠️ Stub/TODO Não implementado — retorna valor padrão

Passo 3 — Investigar por Tipo de Problema

Problema: Campo vazio ou zerado

flowchart TD
    A[Campo vazio/zero] --> B{Tipo do campo?}
    B -->|🔒 Fixo| C[Valor esperado pelo código é vazio/zero]
    B -->|⚠️ Stub| D[Não implementado - desenvolvimento necessário]
    B -->|🏢 Empresa| E[Verificar cadastro da empresa]
    B -->|👤 Parceiro| F[Verificar cadastro do parceiro]
    B -->|📄 Fatura| G[Verificar a fatura específica]
    B -->|💰 Motor Fiscal| H[Verificar operação fiscal]
    B -->|⚙️ Configuração| I[Verificar parâmetros no registro SPED]
    E --> J[Campo no cadastro preenchido?]
    J -->|Não| K[Preencher o campo]
    J -->|Sim| L[Bug: campo existe mas não está sendo lido]

Problema: Valor incorreto

Cenário Investigação
ICMS divergente Verificar CST, alíquota, base de cálculo na linha da fatura
CFOP errado Verificar regra da Operação Fiscal
Total NF divergente Verificar l10n_br_total_nfe vs soma das linhas
CST incorreto Verificar configuração da Operação Fiscal + Motor Fiscal
Apuração E110 errada Verificar se todos os C190/D190 foram gerados corretamente
Saldo credor anterior errado Verificar se o SPED do mês anterior existe e está correto

Problema: Registro não aparece no arquivo

Cenário Investigação
Registro habilitado? Verificar company.l10n_br_sped_fiscal_registros
_registro_em_uso() retorna False O registro não está na lista de registros da empresa
Filtro de documentos Verificar se existem faturas que atendem os critérios
Dados vazios Mesmo que habilitado, se não há dados o registro pode não gerar

Passo 4 — Verificar no Código

Localizar o método

  1. O método segue o padrão enviar_registro_XXXX()
  2. Está no arquivo correspondente:
  3. EFD ICMS/IPI → account_sped_fiscal.py
  4. ECD → account_sped_ecd.py
  5. ECF → account_sped_ecf.py
  6. EFD Contribuições → account_sped_contribuicao.py
  7. DCTF → account_dctf.py
  8. DIME/SC → account_dime_sc.py

Verificar o fluxo

# Padrão de todo registro:
def enviar_registro_XXXX(self, _arq):
    if not self._registro_em_uso('XXXX'):    # 1. Verificar se habilitado
        return

    registro = RegistroXXXX()                 # 2. Criar objeto
    registro.CAMPO = valor_do_odoo            # 3. Preencher campos
    _arq._blocos['X'].add(registro)           # 4. Adicionar ao bloco

Passo 5 — Exemplos Práticos

Exemplo 1: C100.VL_ICMS está zerado

  1. WikiBloco C → C100 → VL_ICMS vem de move.l10n_br_icms_valor
  2. Odoo → Abrir a fatura → verificar l10n_br_icms_valor
  3. Se zero → verificar Operação Fiscal → CST ICMS → Alíquota
  4. Se preenchido no Odoo mas zero no SPED → bug no código

Exemplo 2: E110.VL_TOT_CREDITOS menor que esperado

  1. WikiBloco Ee110_vl_tot_creditos é acumulado no C190
  2. C190 é gerado agrupando por CST/CFOP/Alíquota
  3. Verificar se todas as entradas do período têm ICMS > 0
  4. Verificar se o registro C100 está gerando para todas as NFs

Exemplo 3: I050 faltando conta contábil

  1. WikiECD → I050 filtra somente contas com saldo no período
  2. Verificar se a conta teve movimentos no período
  3. Verificar se a conta tem group_id preenchido
  4. Verificar se não está marcada como deprecated

Exemplo 4: DIME Quadro 09 com saldo incorreto

  1. WikiDCTF/DIME → Fórmula Quadro 09
  2. DIME busca dados do SPED Fiscal → verificar se o SPED está correto
  3. Verificar c197_vl_tot_transf_creditos e c197_vl_tot_transf_debitos
  4. Verificar CFOPs listados em TABELA_3252_A → créditos deduzidos

Ferramentas de Diagnóstico

No Odoo

  1. Modo Debug → acessar campos técnicos nos formulários
  2. Shellself.env['l10n_br_ciel_it_account.sped.fiscal'].search([...]) para inspecionar
  3. Log Server → procurar _logger.info no método de geração

No Arquivo SPED

  1. Abrir o .TXT em editor de texto
  2. Buscar pelo registro (ex: |C100|)
  3. Contar campos separados por |
  4. Comparar com a tabela de campos da wiki

Validadores Externos

Obrigação Validador
EFD ICMS/IPI PVA (Programa Validador e Assinador) da RFB
EFD Contribuições PVA Contribuições da RFB
ECD PVA ECD da RFB
DIME/SC Webservice SEFAZ/SC (integrado no Odoo)

Referências