Informe a data inicial.
QuandoData inicial (ou final) vazia.
Caso sugerido para QA: o que fazer, o que esperar e como conferir no banco.
Recusa com a mensagem exata (HTTP 400, mostrada na tela).
Limitação, pendência ou ponto em que o código e a ajuda não coincidem.
Confere se as vendas, compras e fretes do período batem com os títulos que geraram no financeiro. Para cada documento vivo do período, o serviço calcula o valor que a tela exige que as parcelas somem (a mesma conta da gravação de cada módulo) e compara com a soma dos títulos vivos do documento. Só lê: nada trava nem grava. Desenho novo, sem equivalente no legado nem no ceif. Serviço: cadastro.divergenciafinanceira.DivergenciaFinanceiraService, endpoint POST /lancamento/divergencias-financeiras, tela DivergenciasFinanceiras.vue.
372 = antigo 31B (renumerado em 29/09/2026, histórico 368; o código antigo ainda aparece em docs/historico/295-31b-*.md e no comentário do .vue). Menu: 3-Relatórios › 7-Conferências › 2. Ajuda: 372.md. É uma tela só; não há outra opção que a abra.
Três alertas: VALOR_DIFERENTE (os títulos não fecham com o documento), SEM_FINANCEIRO (documento com valor e nenhum título, num tipo que normalmente gera título naquela filial) e FINANCEIRO_ORFAO (título vivo de documento excluído).
| Campo | Default | Limites | Efeito |
|---|---|---|---|
| Período de / até | hoje − 30 até hoje | Obrigatório; fim ≥ início; máx. 366 dias | Recorte por módulo (coluna de data na tabela C), faixa meio-aberta >= ini AND < fim+1 |
| Todas as minhas filiais | marcada | Desmarcada = filial da sessão | Filial do documento (a do título, no órfão). FiliaisDoUsuario.permitidas |
| Documentos (6 caixas) | todos | Front: "Escolha ao menos um documento e um tipo de divergência." | Venda 2333/2337, Compra de gado 2312, Compra de carne 2322, Compra de almoxarifado 242, Saída de almoxarifado 243, Frete avulso 2334 |
| Divergências (3 caixas) | todas | idem | Valor diferente; Documento sem título; Título de documento excluído |
Na grade: gravidade, módulo, documento, emitente, tipo de faturamento, moeda, Documento dá (esperado), Títulos somam (financeiro), diferença, quantidade e ids dos títulos (até 20 por documento). Botões-resumo por tipo e por módulo filtram a lista local; "Abrir tela do documento" e "Abrir Títulos (221)" (ver ROTA_MODULO no .vue: venda, compraGado, compraCarne, almoxarifadoCompras, almoxarifadoSaidas, freteAvulso). A resposta traz também conferidos (quantos documentos de cada módulo foram comparados), que ajuda a saber se o recorte tinha o que conferir.
| Módulo | Tabela / data | Tipos de faturamento ignorados | Valor que o documento exige (esperado) | Títulos somados (financeiro_emissao) |
|---|---|---|---|---|
| Venda (2333/2337) | faturamento_venda / data_emissao | ids 1188, 11133, 11138, 11192, 11158, 11162 (sem parcela, menu2333.prg:4944-4961) | Σ faturamento_venda_produtos.valor_total com IFNULL(tipo_produto,'1')='1' + valor_outros_acrescimos − valor_outros_descontos. Brasil: + valor_icms_substituicao − valor_desonerado + fretes/seguro por tipo_frete (CIP/CPT: terrestre+marítimo+seguro; CFR: marítimo+seguro). Chile: + Σ valor_iva. | idtipo_parcela = 1; a receber +, a pagar −; casa por idfaturamento + idtipo_faturamento |
| Compra de carne (2322) | faturamento_compra_carne / data_entrada | Só no Brasil: 11183, 1186, 1187, 11139, 11140, 11141, 11142, 11104, 11105, 11127, 11125, 11155, 11117 | Líquido = produtos + acréscimos − descontos (Brasil: + ST + seguro − desonerado + frete por tonelada com o ocioso − desconto + acréscimo do frete; Chile: + IVA) − valor_funrural. Com valor_nf_importacao > 0 e diferente do líquido (> 0,001): líquido − NF de importação. | Parcela 1 (P +, R −); fora do Brasil também a parcela 3 com tipo_doc='CR' (retenção de IVA) |
| Compra de gado (2312) | faturamento_compra_gado / data_entrada | nenhum | valor_liquido | Parcelas 1, 4 e 5 de títulos cujo tipo tem tipo_faturamento.gado='S', casados só pelo id (o título não segue o tipo do cabeçalho). 4/5 são as faturas do produtor e as retenções delas. |
| Compra de almoxarifado (242) | almoxarifado_compra / data_entrada | ids 1192, 11135, 1197, 11187 | Σ almoxarifado_compra_produto.valor_total_sem_iva + Σ almoxarifado_compra_servico.valor_total_sem_iva − valor_funrural; Brasil: + valor_acrescimo + valor_frete_interno quando frete_cif_fob='F' | Parcela 1 (R −) |
| Saída de almoxarifado (243) | almoxarifado_saida / data_emissao | id 117 (consumo nunca gera título) | Σ almoxarifado_saida_produto.valor_total + valor_frete + valor_out_acrescimos − valor_out_descontos + IPI + ICMS-ST de faturamento_produto_trib | Parcela 1 (P −). A moeda vem dos títulos, senão dos produtos (o cabeçalho não grava moeda). |
| Frete avulso (2334) | faturamento_frete_avulso / data_emissao | nenhum | Terrestre (por tonelada com o ocioso, ou valor fechado, + acréscimo − desconto − desconto MIC, nunca negativo) + marítimo (idem, sem MIC) | idtipo_parcela = 3 ou (parcelas 1/2 cujo histórico não começa com "MIC "); o título do MIC é outro título |
SUM(títulos) com o esperado, ambos arredondados a 2 casas. Diverge quando |diferença| > tolerância. Tolerância = o maior entre 0,05 e (uma unidade da última casa da moeda × número de títulos): em guarani (0 casas) cada título pode sobrar 1 pelo rateio por centro de custo. Compra de gado com faturas (parcelas 4/5): a provisão cobre a falta e nunca é negativa, então só falta conta (diferença < −máx(tolerância, 1)); acréscimo na descrição "(com faturas do produtor)".financeiro_emissao.data_emissao, não a do documento), cujo documento tem excluido='T' e nenhum documento vivo das seis origens tem o mesmo id e tipo. Descrição: "N título(s) vivo(s), somando X, de um documento excluído. Exclua os títulos pelo 221 ou restaure o documento."parametros.codicfj: 004 Brasil, 005 Chile) decide as fórmulas para todas as filiais da consulta.Medidas de referência (histórico 295, 27/09/2026): venda 17.077 de 17.077 batem (central, jun-ago); compra de carne 1.381 de 1.381 (central) e 3.652 de 3.653 (concepcion); compra de almoxarifado 536 de 537; frete avulso 1.387 de 1.387 (central) e 577 de 577 (concepcion). Central jan-ago/2026, ~149 mil documentos: 155 alertas em 19,5 s; concepcion: 16 em 7 s. Achado real: 69 compras de importação (tipo 1117, filial 64, 16-26/01/2026) com um "complemento" de valor 0 no lugar das parcelas, ou seja, sem conta a pagar.
Sem regra nomeada (RegraAcessoService não é usado). O menu 372 depende de opcao_sistema + grupo_permissao (sem linha, some para quem não é ADM); o endpoint está em /lancamento/* (JWT) e atende qualquer sessão. Não há confirmação, token, transação nem gravação.
Informe a data inicial.
QuandoData inicial (ou final) vazia.
Data inicial inválida: x
QuandoData fora do formato ISO.
A data final não pode ser anterior à inicial.
QuandoPeríodo invertido.
O período pode ter no máximo 366 dias.
QuandoFim mais de 366 dias depois do início.
Escolha ao menos um documento e um tipo de divergência.
QuandoLista de módulos ou de tipos vazia (texto só do front; a API trata lista vazia como "todos").
Sem configuração própria: nada em system_config, application.yml, rotina agendada ou e-mail. Dependências:
VendaService.TIPOS_SEM_PARCELA, CompraCarneGravacaoRepository.TIPOS_SEM_FINANCEIRO_BR e AlmoxarifadoCompraTitulos.TIPOS_SEM_TITULO; se uma delas mudar, esta tela precisa mudar junto. Inventário de regras chumbadas: docs/regras-chumbadas.html.tipo_faturamento.gado (compra de gado), moeda.decimais (tolerância), parametros.codicfj (fórmulas por país).Abrir e conferir com os padrões
FazerAbrir 372 e clicar em Conferir (30 dias, todos os documentos, todas as divergências).
EsperadoContador "Conferindo… (Ns)"; grade com os alertas em ordem ALTA → MEDIA; botões-resumo por divergência e por documento com contagens que somam o total.
ConferirReferência de tempo: central jan-ago/2026 em ~19,5 s; um mês bem menos.
Documento íntegro não acusa
FazerEscolher uma venda do período com título e conferir à mão.
EsperadoNenhum alerta para ela; a diferença entre o esperado e a soma dos títulos é menor que a tolerância.
ConferirSELECT d.id, SUM(p.valor_total) AS produtos, d.valor_outros_acrescimos, d.valor_outros_descontos
FROM faturamento_venda d
JOIN faturamento_venda_produtos p ON p.idfaturamento_venda = d.id AND IFNULL(p.tipo_produto,'1') = '1' AND p.excluido <> 'T'
WHERE d.id = :idvenda GROUP BY d.id;
SELECT f.id, f.tipo_emissao, f.idtipo_parcela, f.valor_parcela
FROM financeiro_emissao f
WHERE f.idfaturamento = :idvenda AND f.idtipo_faturamento = :tipo AND f.excluido <> 'T'
Valor diferente
FazerEm homologação, alterar o valor de um título de venda direto no banco (ou por regravação com harness que nunca confirma) e conferir o período do documento.
EsperadoAlerta ALTA "Os títulos somam X e o documento dá Y - diferença de Z." com a coluna Títulos listando os ids. Diferença de até 0,05 (ou 1 unidade da última casa por título) não é acusada. Em guarani, diferença de 1 não acusa.
Documento sem título
FazerProcurar, num tipo em que a maioria dos documentos da filial tem título, um documento sem nenhum título vivo.
EsperadoAlerta MEDIA "Documento de X sem nenhum título vivo, num tipo em que a maioria dos documentos desta filial tem título."; ALTA se houver título vivo com o mesmo id em outro tipo, sem documento (a descrição cita o(s) tipo(s)). Tipo em que só 1 de 393 documentos tem título (remissão 11113 do Paraguai) não acusa.
ConferirSELECT d.id, d.documento, d.idtipo_faturamento, d.idfilial
FROM faturamento_venda d
LEFT JOIN financeiro_emissao f ON f.idfaturamento = d.id AND f.idtipo_faturamento = d.idtipo_faturamento
AND f.excluido <> 'T' AND f.idtipo_parcela = 1
WHERE d.excluido <> 'T' AND f.id IS NULL
AND d.data_emissao >= '2026-09-01' AND d.data_emissao < '2026-10-01'
AND d.idtipo_faturamento NOT IN (1188,11133,11138,11192,11158,11162)
Título de documento excluído
FazerEm homologação, excluir logicamente (excluido='T') uma venda deixando o título vivo (ou achar um caso) e conferir o período do título.
EsperadoAlerta ALTA "N título(s) vivo(s), somando X, de um documento excluído. Exclua os títulos pelo 221 ou restaure o documento." A linha usa a filial e a data de emissão do título.
ConferirSELECT f.idfaturamento, f.idtipo_faturamento, COUNT(*) n, SUM(f.valor_parcela) soma
FROM financeiro_emissao f
JOIN faturamento_venda d ON d.id = f.idfaturamento AND d.idtipo_faturamento = f.idtipo_faturamento AND d.excluido = 'T'
WHERE f.excluido <> 'T' AND f.data_emissao >= '2026-09-01' AND f.data_emissao < '2026-10-01'
GROUP BY f.idfaturamento, f.idtipo_faturamento
Compra de gado com faturas do produtor
FazerEscolher uma compra de gado com parcelas 4/5 (faturas) cujo total de faturas passe do líquido.
EsperadoNão acusa excesso (a provisão nunca é negativa); acusa só se faltar mais que máx(tolerância, 1). A descrição de uma divergência acrescenta "(com faturas do produtor)".
Filtros de módulo e tipo
FazerMarcar só "Frete avulso" e só "Título de documento excluído"; depois todos.
EsperadoSó as linhas do módulo/tipo escolhidos; conferidos só traz os módulos marcados e só quando "valor diferente" ou "sem título" está marcado.
Abrir a tela de origem
FazerSelecionar uma linha e clicar "Abrir tela do documento" e "Abrir Títulos (221)".
EsperadoA janela do módulo correto abre; os ids dos títulos estão na coluna Títulos para localizar no 221.
Erros de entrada
FazerDatas invertidas; 400 dias; desmarcar todos os documentos.
EsperadoMensagens da seção D.
Tolerância: uma unidade da última casa por título
O método tolerancia (e o histórico 295) usam uma unidade da última casa da moeda por título, com mínimo 0,05. Até 04/10/2026 a ajuda (372.md/.es.md) e o comentário do método diziam “meia unidade”; foram acertados para o código.
Fórmulas por país seguem a filial da sessão
brasil() e chile() vêm de parametros.codicfj da filial ativa; com "Todas as minhas filiais" em um usuário que alcança filiais de países diferentes, as fórmulas do país da sessão valem para todas. Em tenant de um país só (o normal) não há efeito.
Saída de almoxarifado: "só com título" na ajuda, mas SEM_FINANCEIRO também a alcança
A ajuda diz que a saída só é conferida quando gerou título; no código a saída sem título cai no mesmo teste de "tipo que gera título na filial" (maioria dos documentos do tipo com título) e pode sair como SEM_FINANCEIRO. O comportamento é coerente com o tipo, mas a frase da ajuda é mais restrita.
Órfão é recortado pela emissão do título
O órfão usa financeiro_emissao.data_emissao no período, não a data do documento excluído. Um documento excluído com título emitido fora do período escolhido não aparece nesse período.
Pendências
Status REVISAR (status-porte.csv, 27/09/2026). Não testada na tela; backend do IntelliJ precisa reiniciar. Fórmulas próprias só para Brasil e Chile (os demais países usam a fórmula básica, sem impostos).
Nada bate com essa busca. Tente um trecho menor, ou limpe os filtros.