FJFrigo · Relatórios › Conferências › 372 (antes 31B)

Documentos × Financeiro

Compara o valor que cada venda, compra e frete exige nas parcelas com os títulos vivos que gerou. Só lê. Três alertas: valor diferente, documento sem título e título de documento excluído.

Tabelas: faturamento_venda, faturamento_compra_*, almoxarifado_*, faturamento_frete_avulso, financeiro_emissaoEndpoint: POST /lancamento/divergencias-financeirasPrograma antigo: nenhum (desenho novo)

Teste

Caso sugerido para QA: o que fazer, o que esperar e como conferir no banco.

Bloqueia

Recusa com a mensagem exata (HTTP 400, mostrada na tela).

Atenção

Limitação, pendência ou ponto em que o código e a ajuda não coincidem.

A

O que a tela é e faz

Identidade 372 = 31B

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).

B

Filtros e opções

Padrões e limites
CampoDefaultLimitesEfeito
Período de / atéhoje − 30 até hojeObrigatório; fim ≥ início; máx. 366 diasRecorte por módulo (coluna de data na tabela C), faixa meio-aberta >= ini AND < fim+1
Todas as minhas filiaismarcadaDesmarcada = filial da sessãoFilial do documento (a do título, no órfão). FiliaisDoUsuario.permitidas
Documentos (6 caixas)todosFront: "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)todasidemValor 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.

C

De onde vem cada dado

Fórmulas por módulo
MóduloTabela / dataTipos de faturamento ignoradosValor que o documento exige (esperado)Títulos somados (financeiro_emissao)
Venda (2333/2337)faturamento_venda / data_emissaoids 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_entradaSó no Brasil: 11183, 1186, 1187, 11139, 11140, 11141, 11142, 11104, 11105, 11127, 11125, 11155, 11117Lí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_entradanenhumvalor_liquidoParcelas 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_entradaids 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_emissaoid 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_tribParcela 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_emissaonenhumTerrestre (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

Como cada alerta é decidido

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.

D

Permissões, travas e mensagens

Sem regra nomeada

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.

Bloqueia

Informe a data inicial.

QuandoData inicial (ou final) vazia.

Bloqueia

Data inicial inválida: x

QuandoData fora do formato ISO.

Bloqueia

A data final não pode ser anterior à inicial.

QuandoPeríodo invertido.

Bloqueia

O período pode ter no máximo 366 dias.

QuandoFim mais de 366 dias depois do início.

Bloqueia

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").

E

Configuração e dependências

Constantes e listas chumbadas

Sem configuração própria: nada em system_config, application.yml, rotina agendada ou e-mail. Dependências:

F

Casos de teste sugeridos

QA
Teste

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.

Teste

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'

Teste

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.

Teste

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)

Teste

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

Teste

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)".

Teste

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.

Teste

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.

Teste

Erros de entrada

FazerDatas invertidas; 400 dias; desmarcar todos os documentos.

EsperadoMensagens da seção D.

G

Limitações, pendências e pontos de atenção

Achados da leitura do código
Atenção

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.

Atenção

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.

Atenção

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.

Atenção

Ó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.

Atenção

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.