Cada item da API OMIE passa por estas etapas. Se falhar em qualquer ponto, o valor é descartado.
Verifica se QUALQUER campo de data do item pertence ao ano selecionado (2026).
Campos checados: data_previsao data_baixa dDtCredito data_vencimento data_emissao data_registro
Se NENHUM campo tiver o ano → DESCARTADO antes de chegar ao DataEngine
Verifica status_titulo = "RECEBIDO" | "LIQUIDADO" | "BAIXADO" | "QUITADO"
Se NÃO → vai para Avaliação de Passivo (vencido >30 dias)
Prioridade: nValorPago → nValorLiquido → valor_documento
Se valor ≤ 0 → DESCARTADO
Determina o MÊS em que a receita será contabilizada.
data_previsao — campo principal (OMIE preenche com data de crédito)data_baixa | dDtCredito | data_creditodata_vencimento (fallback)data_emissao | data_registro (último recurso)
Se NENHUM campo tiver data no ano → DESCARTADO (pagSemData++)
receita[segmento][mes] += valorCaixa
caixaEntradas[segmento][mes] += valorCaixa
Idêntico ao receber — verifica se qualquer data pertence ao ano.
Se status_titulo = "CANCELADO" | "DEVOLVIDO" → DESCARTADO
Se valor_documento ≤ 0 → DESCARTADO
Verifica status_titulo = "PAGO" | "LIQUIDADO" | "BAIXADO" | "QUITADO"
Se NÃO → vai para Avaliação de Passivo
Determina o MÊS em que o custo/despesa será contabilizado.
data_previsao — campo principal (OMIE preenche com data de pagamento)data_baixa | dDtPagamento | data_pagamentodata_vencimento (fallback)data_emissao | data_registro (último recurso)
Se NENHUM campo tiver data no ano → DESCARTADO (pagSemData++)
1) Resolve categoria: _extrairCategoria(item) → código + descrição
2) Normaliza: _catNorm(item)
3) Testa custo direto: _isCustoDireto(cat) → códigos 2.* ou keywords (custo, projeto, etc.)
4) Se não custo: _mapTipoDespesa(cat) → pessoal | admin | comercial | financeiro | impostos | investimento
Custo: custos[segmento][mes] += valorCaixa
Despesa: despesas[tipo][mes] += valorCaixa
Cascade: data_emissao → data_registro → data_vencimento
Aplica-se a itens PAGOS, RECEBIDOS e EM ABERTO (todos contam no DRE).
Carrega o cache OMIE (IndexedDB/localStorage) e reproduz EXATAMENTE a lógica do DataEngine para cada item, mostrando onde cada R$ foi contabilizado ou descartado.
Explicação completa do que aconteceu entre sexta-feira e agora.
Na sexta-feira o sistema funcionava porque usava data_previsao como campo principal para determinar a data de pagamento/recebimento.
O que aconteceu: foi solicitado "desconsiderar data_previsao e usar data de pagamento/recebimento". Isso foi interpretado como remover data_previsao do cascade de datas.
O problema: Na API OMIE, o campo data_previsao — apesar do nome — contém a data efetiva de crédito/pagamento para títulos PAGOS/RECEBIDOS. Ao removê-lo, muitos itens ficaram sem data válida no ano 2026, causando:
Correção (v8.5): data_previsao restaurada como campo principal. Comentários limpos e documentação atualizada para refletir que o nome é enganoso.
data_previsao era o campo principal no cascade de datas.data_previsao de 6 arquivos. Substituído por data_baixa como principal.data_baixa está VAZIO em muitos registros OMIE.data_previsao restaurada no cascade, mas comentários ficaram contraditórios.data_previsao é o campo principal.| Arquivo | Função | v8.3 (quebrou) | v8.5 (corrigido) |
|---|---|---|---|
js/data-engine.js |
processOmieData — RECEBER | data_baixa como 1º | data_previsao como 1º |
js/data-engine.js |
processOmieData — PAGAR | data_baixa como 1º | data_previsao como 1º |
js/data-engine.js |
getTopLancamentos | data_baixa como 1º | data_previsao como 1º |
js/omie.js |
_filtrarPorAno | Sem alteração destrutiva | Checa data_previsao no filtro |
js/drill-down.js |
_processar | data_baixa como 1º | data_previsao como 1º |
js/pages/lancamentos.js |
_montar | data_baixa como 1º | data_previsao como 1º |
js/pages/receitas.js |
filtro receitas | sem data_previsao | data_previsao restaurado |