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
- Abra o arquivo SPED gerado (
.TXT)
- Identifique o registro (ex:
|C100|) e o campo (contando as posições separadas por |)
- 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
- O método segue o padrão
enviar_registro_XXXX()
- Está no arquivo correspondente:
- EFD ICMS/IPI →
account_sped_fiscal.py
- ECD →
account_sped_ecd.py
- ECF →
account_sped_ecf.py
- EFD Contribuições →
account_sped_contribuicao.py
- DCTF →
account_dctf.py
- 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
- Wiki → Bloco C → C100 →
VL_ICMS vem de move.l10n_br_icms_valor
- Odoo → Abrir a fatura → verificar
l10n_br_icms_valor
- Se zero → verificar Operação Fiscal → CST ICMS → Alíquota
- Se preenchido no Odoo mas zero no SPED → bug no código
Exemplo 2: E110.VL_TOT_CREDITOS menor que esperado
- Wiki → Bloco E →
e110_vl_tot_creditos é acumulado no C190
- C190 é gerado agrupando por CST/CFOP/Alíquota
- Verificar se todas as entradas do período têm ICMS > 0
- Verificar se o registro C100 está gerando para todas as NFs
Exemplo 3: I050 faltando conta contábil
- Wiki → ECD → I050 filtra somente contas com saldo no período
- Verificar se a conta teve movimentos no período
- Verificar se a conta tem
group_id preenchido
- Verificar se não está marcada como
deprecated
- Wiki → DCTF/DIME → Fórmula Quadro 09
- DIME busca dados do SPED Fiscal → verificar se o SPED está correto
- Verificar
c197_vl_tot_transf_creditos e c197_vl_tot_transf_debitos
- Verificar CFOPs listados em
TABELA_3252_A → créditos deduzidos
Ferramentas de Diagnóstico
No Odoo
- Modo Debug → acessar campos técnicos nos formulários
- Shell →
self.env['l10n_br_ciel_it_account.sped.fiscal'].search([...]) para inspecionar
- Log Server → procurar
_logger.info no método de geração
No Arquivo SPED
- Abrir o
.TXT em editor de texto
- Buscar pelo registro (ex:
|C100|)
- Contar campos separados por
|
- 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