FJFrigo · Relatórios › Conferências › 373 (antes 3177)

Conferência Financeiro × Contábil

Compara, por dia e por conta contábil do banco, o movimento do financeiro (pela data e pela conciliação) com o que a contabilidade lançou. PDF ou planilha; só lê.

Tabelas: financeiro_baixas, financeiro_lancamento_banco, conta_bancaria, contabilidade_analiticoEndpoint: POST /lancamento/relatorios/relatorioConferenciaFinanceiroContabilPrograma 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 373 = 3177

Relatório (PDF ou planilha) que compara, dia a dia e por conta contábil do banco, o movimento do financeiro (o que o Boletim de Caixa, 3172, mostra) com o que a contabilidade lançou na conta contábil da conta bancária (conta_bancaria.idplconta, cadastro 173). Serve para achar o dia em que os dois se separaram antes de fechar o mês. Só lê. Desenho novo, sem equivalente no legado nem no ceif. Serviço: relatorio.RelatorioConferenciaFinanceiroContabilService; endpoint POST /lancamento/relatorios/relatorioConferenciaFinanceiroContabil; tela RelatorioConferenciaFinanceiroContabil.vue.

373 = antigo 3177 (renumerado em 29/09/2026, histórico 368; os filtros salvos de '3177' deixaram de aparecer, a chave nova é '373'). Menu: 3-Relatórios › 7-Conferências › 3. Ajuda 373.md. A ajuda cita o 3172 (Boletim de Caixa) como espelho do lado financeiro.

Um dia bate quando o contábil é igual a uma das duas colunas do financeiro (pela data do movimento ou pela data de conciliação), com tolerância de meia unidade da última casa da moeda. Cheque e pagamento coletivo só chegam ao banco na contabilidade quando conciliados (antes ficam em conta de trânsito, "CHEQUES EMITIDOS"/"RECAUDACIONES A DEPOSITAR"); a baixa sem cheque vai ao banco pela data. Por isso as duas colunas.

B

Filtros e opções

Padrões e limites
CampoDefaultLimitesEfeito
Período de / atédia 1 do mês corrente até hojeObrigatório; fim ≥ início ("A data final não pode ser anterior à inicial."); máx. 366 diasFaixa meio-aberta nas três consultas: col >= ini AND col < DATE_ADD(fim, INTERVAL 1 DAY)
Filialem branco = todas as do usuárioEscolhida precisa estar entre as filiais do usuárioVale para o financeiro (filial do movimento: idfilial da baixa ou do lançamento bancário) e para o contábil (contabilidade_analitico.idfilial_dado)
Conta Bancária (multi)em branco = todasSó contas com conta contábil; as sem conta saem em seção à parte quando não há filtro de contaEscolhida uma conta, entra o grupo inteiro (conta contábil + moeda): as outras contas bancárias que apontam para a mesma conta contábil entram juntas
Só os dias com diferençamarcada—Desmarcada, sai todo dia com movimento. O TOTAL DO PERÍODO de cada conta é sempre o do período inteiro, igual ao resumo
Paisagem (PDF)marcada—Orientação do PDF. Há botões PDF e Excel (formato pdf|xls); contador "Gerando… (Ns)"

A tela usa o SeletorMultiFiltros com filtros salvos por usuário e as Opções do relatório (useOpcoesRelatorio('373')).

C

De onde vem cada coluna

SQL e regras do cálculo
ColunaO que éSQL
Financeiro (data)Movimento pela data da baixa / do lançamento bancário. Entrada soma, saída subtrai.Lançamento bancário: financeiro_lancamento_banco com IF(tipo_lancamento_bancario.operacao='E', valor, −valor), flb.data. Baixa: financeiro_baixas com IF(financeiro_emissao.tipo_emissao='R', valor, −valor), fb.data_baixa
Financeiro (conciliação)O mesmo movimento pela data de conciliação.Idem, com flb.data_conciliacao / fb.data_conciliacao (linhas sem conciliação não entram)
ContábilDébito − crédito na conta contábil do banco, na moeda da conta.contabilidade_analitico: SUM(IF(deb_cre='D', valor, −valor)) por idplconta, idmoeda, DATE(data)
Contábil − financeiro / − conciliadoAs duas diferenças do dia.Cálculo no Java, 2 casas (HALF_UP)

Regras do cálculo:

D

Permissões, travas e mensagens

Sem regra nomeada

Sem regra nomeada; o endpoint está em /lancamento/relatorios/* (JWT). O menu depende de opcao_sistema + grupo_permissao. Nada grava, nada trava. Alcance: filiais do usuário (FiliaisDoUsuario.permitidas).

Bloqueia

Informe a data inicial.

QuandoData inicial ou final vazia (mensagem de RelatorioGradeBase.data).

Bloqueia

Data inicial inválida: x (confira o ano).

QuandoData fora do formato ISO (idem final).

Bloqueia

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

QuandoPeríodo invertido.

Bloqueia

O período pode ter no máximo um ano.

QuandoMais de 366 dias entre as datas.

Bloqueia

A filial N não está entre as filiais do usuário.

QuandoFilial escolhida fora do alcance do usuário.

Bloqueia

O usuário não tem filial de acesso.

QuandoSem filial permitida (lista vazia).

Bloqueia

Não foram encontrados dados nessas condições.

QuandoNenhum dia com movimento nos grupos/contas escolhidos e nenhuma conta sem conta contábil com movimento (PdfReportBuilder.SEM_DADOS).

E

Configuração e dependências

Cadastros e processos

Sem chave de system_config, sem propriedade app.*, sem rotina agendada, sem e-mail. Dependências de cadastro e de processo:

F

Casos de teste sugeridos

QA
Teste

Gerar com os padrões

FazerAbrir 373, deixar o mês corrente, "Só os dias com diferença" marcado, clicar PDF.

EsperadoAbre o PDF com "Conferência financeiro × contábil por dia (contas bancárias) - só os dias com diferença", a grade (somente dias que divergem), as linhas "TOTAL DO PERÍODO: <conta>" e o "Resumo por conta contábil". Contas sem diferença aparecem só no resumo, com "Dias c/ dif." = 0.

ConferirReferência de tempo: filial 3, ago/2026, ~3 s (histórico 307).

Teste

Total do período não muda com o filtro de dias

FazerGerar com a opção marcada e desmarcada para a mesma conta e período.

EsperadoO TOTAL DO PERÍODO e o resumo trazem os mesmos números nos dois casos (antes o total somava só os dias listados). Desmarcada, aparecem todos os dias com movimento.

Teste

Conferir um dia à mão

FazerEscolher uma conta bancária e um dia da grade; refazer as três somas no banco.

EsperadoFinanceiro (data), Financeiro (conciliação) e Contábil batem ao centavo (2 casas) com os valores do relatório; as colunas de diferença são contábil − financeiro e contábil − conciliado.

Conferir-- financeiro pela data (baixas; some depois lançamentos bancários da mesma forma) SELECT DATE(fb.data_baixa) d, SUM(IF(fe.tipo_emissao='R', fb.valor, -fb.valor)) v FROM financeiro_baixas fb JOIN financeiro_emissao fe ON fe.id = fb.idfinanceiro_emissao JOIN conta_bancaria cb ON cb.id = fb.idconta_bancaria WHERE fb.excluido <> 'T' AND fe.idmoeda = cb.idmoeda AND fb.idconta_bancaria = :conta AND fb.data_baixa >= :dia AND fb.data_baixa < DATE_ADD(:dia, INTERVAL 1 DAY) GROUP BY d; -- lançamentos bancários SELECT SUM(IF(tlb.operacao='E', flb.valor, -flb.valor)) FROM financeiro_lancamento_banco flb JOIN conta_bancaria cb ON cb.id = flb.idconta_bancaria LEFT JOIN tipo_lancamento_bancario tlb ON tlb.id = flb.idtipo_lancamento_bancario WHERE flb.excluido <> 'T' AND flb.idmoeda = cb.idmoeda AND flb.idconta_bancaria = :conta AND flb.data >= :dia AND flb.data < DATE_ADD(:dia, INTERVAL 1 DAY); -- contábil SELECT SUM(IF(ca.deb_cre='D', ca.valor, -ca.valor)) FROM contabilidade_analitico ca WHERE ca.excluido <> 'T' AND IFNULL(ca.somente_conversao,'F') <> 'T' AND IFNULL(ca.ifrs,'F') <> 'T' AND IFNULL(ca.encerramento,'F') <> 'T' AND IFNULL(ca.resultado_ex,'F') <> 'T' AND IFNULL(ca.apertura,'F') <> 'T' AND ca.idplconta = (SELECT idplconta FROM conta_bancaria WHERE id = :conta) AND ca.idmoeda = (SELECT idmoeda FROM conta_bancaria WHERE id = :conta) AND ca.data >= :dia AND ca.data < DATE_ADD(:dia, INTERVAL 1 DAY)

Teste

Filtro por conta bancária

FazerEscolher uma conta que divide a conta contábil com outras e gerar.

EsperadoEntra o grupo inteiro (todas as contas bancárias da mesma conta contábil e moeda); o resultado da conta é o mesmo com e sem o filtro (conferido na conta 113 de fjfrigo_concepcion, 01-20/06/2026). A seção de contas sem conta contábil não sai quando há filtro de conta.

Teste

Conta sem conta contábil

FazerCom um movimento numa conta bancária sem idplconta (173), gerar sem filtro de conta.

EsperadoSeção "Contas bancárias com movimento e sem conta contábil (cadastre no 173)" lista a conta, o movimento pela data e os dias.

ConferirSELECT cb.id, cb.descricao FROM conta_bancaria cb WHERE IFNULL(cb.idplconta,0) = 0 AND (cb.data_desativacao IS NULL OR cb.data_desativacao > CURDATE())

Teste

Moeda diferente e lançamentos excluídos

FazerBaixar um título em USD numa conta em guarani/real; olhar também um lançamento contábil de diferença cambial.

EsperadoO título em outra moeda não entra no financeiro (nem o contábil dele no contábil da conta); lançamentos "somente conversão", IFRS, encerramento, resultado e apertura não entram no contábil.

Teste

Validações

FazerInverter as datas; 400 dias; filial fora do alcance; período sem movimento.

EsperadoMensagens da seção D.

Teste

Planilha

FazerGerar com o botão Excel.

EsperadoMesmas seções e totais do PDF, em planilha.

G

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

Achados da leitura do código
Atenção

Filial do financeiro e do contábil vêm de colunas diferentes

O financeiro filtra por financeiro_baixas.idfilial / financeiro_lancamento_banco.idfilial e o contábil por contabilidade_analitico.idfilial_dado. Se uma conta bancária é movimentada por mais de uma filial e o usuário escolhe uma só, as duas pontas podem recortar conjuntos diferentes e gerar diferença que não é erro de lançamento. Conferido em 04/10/2026: é o par certo. contabilidade_analitico.idfilial é a filial de quem rodou a contabilização; idfilial_dado é a do dado. No fjfrigo_concepcion (agosto/2026), nas 2.454 linhas de baixa (tabela='fba') nas contas contábeis de banco, idfilial_dado = financeiro_baixas.idfilial em todas, e idfilial difere em 1.350. A diferença que sobra é a de conta bancária movimentada por várias filiais com uma filial só escolhida — recorte, não defeito.

Atenção

Comparação de flags nulos

Corrigido em 04/10/2026: IFNULL(ca.somente_conversao,'F') <> 'T' e IFNULL(ca.ifrs,'F') <> 'T'. somente_conversao aceita nulo nos 12 bancos do servidor de homologação e ifrs aceita no fjfrigo_ct_carne; sem o IFNULL uma linha nula sumiria do contábil. Hoje nenhum dos 12 bancos tem linha viva com nulo nas duas colunas (os números não mudam). apertura, encerramento e resultado_ex já usavam IFNULL.

Atenção

Contas bancárias desativadas

O agrupamento lê toda a conta_bancaria (não filtra data_desativacao); conta desativada com movimento no período entra normalmente. Só a seção de "sem conta contábil" é limitada ao movimento.

Atenção

Tipo de lançamento bancário nulo conta como saída

O LEFT JOIN tipo_lancamento_bancario com IF(operacao='E', valor, -valor) trata lançamento sem tipo (ou operação diferente de E) como saída.

Atenção

Pendências

Status REVISAR (status-porte.csv, 02/10/2026; a linha do 3177 não existe mais). Não testada na tela. Cheque e coletivo só batem pela coluna "conciliação"; diferença aparente antes da conciliação é esperada.

Nada bate com essa busca. Tente um trecho menor, ou limpe os filtros.