FJFrigo · QA · Conferências (371-374) e Indicadores (381-38N)
Passo a passo para conferir as conferências financeiras e os painéis de indicadores, com resultado esperado e como conferir no banco. Inclui o teste da opção própria de cada painel (script 2026.046) e tudo o que mudou na rodada de defeitos de 04/10/2026.
Menu: Relatórios › 8-Indicadores · Doc técnico: docs/historico/407-script-2026046-banco-de-17-09-a-04-10-2026.md · Ajuda: botão ? da janela
381 em opcao_sistema (script ainda não rodado; hoje é o caso do central) e uma com o script rodado. Se só houver uma, faça o bloco que couber e registre o outro como "sem base".Referência do script 2026.046 (docs/historico/407): opção própria do painel ← opção de onde a permissão foi copiada (antes do script valia a regra entre parênteses): 381 ← 2333 (nenhuma); 382 ← 31995 (31995); 383 ← 3211 (nenhuma); 384 ← 2333 (nenhuma); 385 ← 3331 (nenhuma); 386 ← 3331 (nenhuma); 387 ← 3211 (nenhuma); 388 ← 31995 (31995); 389 ← 3331 (nenhuma); 38A ← 3211 (nenhuma); 38B ← 251 (251); 38C ← 316A (316A); 38D ← 3331 (nenhuma); 38E ← 3331 (nenhuma); 38F ← 3233 (nenhuma); 38G ← 251 (251); 38H ← 316B (316B); 38J ← 316C (316C); 38K, 38L, 38M e 38N ← 251 (251). As opções 371 a 374 já tinham opção própria e não mudam.
FazerEm base sem as linhas 381-38N em opcao_sistema, entre com um usuário de grupo que tem só a 251 e outro que tem só a 31995.
Resultado esperadoO menu 8-Indicadores usa antesDaOpcao: 382 e 388 aparecem só para quem tem 31995; 38B, 38G, 38K, 38L, 38M, 38N só para quem tem 251; 38C só 316A; 38H só 316B; 38J só 316C; os demais (381, 383-387, 389, 38A, 38D-38F) aparecem para todos (antes não pediam permissão). Nenhum painel some por causa do script não ter rodado.
Como conferirSELECT idopcao FROM opcao_sistema WHERE idopcao IN ('381','382','383','384','385','386','387','388','389','38A','38B','38C','38D','38E','38F','38G','38H','38J','38K','38L','38M','38N') deve voltar vazio.
FazerEm base com o script rodado, consulte opcao_sistema para o grupo 38 e os painéis.
Resultado esperadoExistem as linhas 381 a 38N (grupo 38 "Indicadores", sem_permissao='T'), além de 48 e 49. Nas bases que não as tinham, também 22G, 3324, 452-455, 458 e 46 (INSERT IGNORE: quem já tinha não mudou).
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao LIKE '38%' OR idopcao IN ('48','49') ORDER BY idopcao
FazerPara cada painel, compare os grupos de grupo_permissao do painel com os da opção de referência da tabela acima.
Resultado esperadoOs grupos que entram no painel são exatamente os que entram na opção de referência (381/384 ← 2333; 382/388 ← 31995; 383/387/38A ← 3211; 385/386/389/38D/38E ← 3331; 38F ← 3233; 38B/38G/38K/38L/38M/38N ← 251; 38C ← 316A; 38H ← 316B; 38J ← 316C).
Como conferirSELECT g.idopcao, COUNT(*) FROM grupo_permissao g WHERE g.permissao_opcao_entrar = 'T' AND g.idopcao IN (...painel e referência...) GROUP BY g.idopcao; e a diferença de conjuntos de idgrupo entre as duas opções deve ser vazia.
FazerCom o script rodado, entre com um usuário de grupo que não está em grupo_permissao de 381, 383, 384, 385, 386, 387, 389, 38A, 38D, 38E e 38F.
Resultado esperadoEsses itens não aparecem no menu 8-Indicadores para esse usuário (antes apareciam para todos). O mesmo usuário continua vendo as conferências 371-374.
FazerCom o script rodado, entre com um usuário que tem a 31995 (e está no grupo copiado), e outro com a 251.
Resultado esperadoO primeiro vê 382 e 388; o segundo vê 38B, 38G, 38K, 38L, 38M, 38N. Um usuário que só tem 251 não vê 382 nem 388.
FazerEntre com um usuário master.
Resultado esperadoO master vê todos os painéis em qualquer das duas situações (antes e depois do script).
FazerCompare o menu 7-Conferências antes e depois do script.
Resultado esperadoOs quatro itens continuam amarrados às próprias opções 371, 372, 373 e 374; o script não mexe nelas.
Menu: Relatórios › 7-Conferências › 1-Alertas de Anomalias (371) · Doc técnico: validacoes-alertas-anomalias-31a-371.html · Ajuda: botão ? da janela
Status no status-porte.csv: REVISAR
central (Brasil 004) ou fjfrigo_concepcion, com movimento financeiro no período. Os valores de referência são do central em 03/10/2026 e mudam com o tempo.371 (sem opção nova no script 2026.046).FazerAbra a tela, deixe os padrões e clique em Verificar.
Resultado esperadoO botão mostra "Verificando… (Ns)"; a grade lista os alertas em ordem ALTA, MEDIA, BAIXA; "Todos (N)" é igual à soma dos seis botões-resumo. Sem alerta: "Nenhuma anomalia encontrada no período.". Antes de verificar: "Escolha o período e clique em Verificar.".
Como conferirTempo de referência no central: um mês cerca de 2,9 s (4 tipos); ago-set com os seis tipos cerca de 11,4 s.
FazerInverta as datas; período de 400 dias; janela 61; diasBanco 91; diasConciliacao 400; expediente 20:00 às 06:00; desmarque todos os tipos.
Resultado esperadoCada tentativa recusa com a mensagem da seção D do doc técnico, uma a uma. Desmarcar todos os tipos mostra o texto do front, sem chamar o servidor.
FazerVerifique 01/08/2026 a 31/08/2026 no central, só o tipo "Pagamento duplicado", janela 5.
Resultado esperadoReferência: VERO SA, documento 07/2026, R$ 1.314,71 em dois títulos, baixas em 11 e 13/08, gravidade ALTA, descrição "2 pagamentos do mesmo valor, documento e parcela em 2 títulos diferentes, entre 11/08/2026 e 13/08/2026.".
Como conferirAproximação do detector (sem janela): agrupar financeiro_baixas por emitente, documento, parcela e valor com COUNT(DISTINCT título) > 1 em agosto/2026 (SQL completa no doc técnico, caso 3).
FazerProcure (a) documento TARIFA, ADTO ou RECIBO pago duas vezes ao mesmo emitente e valor; (b) rateio por centro de custo (dois títulos do mesmo idfaturamento + idtipo_faturamento com mesmo documento e parcela).
Resultado esperadoNenhum alerta para (a) nem (b). Janela 0 só pega pares baixados no mesmo dia; janela 60 amplia, nunca reduz o número de grupos.
Como conferirPara (b): SELECT idfaturamento, idtipo_faturamento, documento, parcela, COUNT(*) FROM financeiro_emissao WHERE excluido <> 'T' AND idfaturamento > 0 GROUP BY 1,2,3,4 HAVING COUNT(*) > 1 LIMIT 20
FazerEscolha um título com baixas no período e compare o amortizado com a parcela (em homologação, baixe a mais pelo 221 se precisar criar o caso).
Resultado esperadoAlerta só se amortizado > parcela + 0,01; "a pagar" = ALTA, "a receber" = MEDIA; o valor da coluna é o excesso; a coluna Baixas lista todas as baixas vivas do título.
Como conferirAmortizado = SUM(valor - acréscimo - juros + desconto + devolução + retenção) das baixas vivas do título contra valor_parcela (SQL no doc técnico, caso 5).
FazerNo cadastro 15, troque a chave PIX (ou a conta) de um fornecedor com título a pagar, e troque mais de uma vez; baixe o título no mesmo dia (221/222). Verifique o período incluindo o dia, tipo "Dados bancários".
Resultado esperadoUm alerta ALTA por baixa, na data da baixa, com as descrições de cada troca do cadastro e de cada alteração dos dados do título juntas, em ordem: "Cadastro do fornecedor alterado em ... por USUARIO (Chave Pix, ...) antes do pagamento de ...". Antes de 04/10 saía um alerta repetido por troca. Com dias antes = 0 só vale troca do mesmo dia. Troca feita no sistema desktop não gera alerta.
Como conferirSELECT l.id, l.data, l.idusuario, LEFT(CONVERT(l.historico USING latin1), 200) FROM emitente_log l WHERE l.idemitente = :id ORDER BY l.data DESC LIMIT 5. Referência de 03/10: no bimestre ago-set o tipo deu 506 alertas em todas as filiais (o total do tipo cai depois da correção).
FazerNo 221 (Dados Pagamento) altere o banco ou o PIX de um título a pagar já incluído (depois de 1 minuto) e baixe-o no mesmo dia.
Resultado esperadoAlerta ALTA "Dados de pagamento do título alterados em ... por USUARIO antes do pagamento de ...". Se também houve troca no cadastro do emitente, as duas descrições vêm no mesmo alerta da baixa.
Como conferirSELECT idfinanceiro_emissao, data_inclusao, data_alteracao, idusuario_alterou FROM financeiro_emissao_dados_pagto WHERE idfinanceiro_emissao = :idtitulo
FazerInclua (em homologação) uma baixa às 22h ou num sábado; verifique o dia, tipo "Lançamento fora do horário", expediente 06:00-20:00 e depois com fim de semana desmarcado.
Resultado esperadoBaixa = MEDIA; título manual = BAIXA. Pagamento coletivo = um alerta só ("N baixas (coletivo)"). Com "Fim de semana..." desmarcado, o sábado às 10h deixa de aparecer.
Como conferirSELECT b.id, b.data_baixa, b.data_inclusao, DAYNAME(b.data_inclusao) FROM financeiro_baixas b WHERE b.excluido <> 'T' AND b.data_inclusao >= '2026-09-01' AND b.data_inclusao < '2026-10-01' AND (TIME(b.data_inclusao) < '06:00:00' OR TIME(b.data_inclusao) >= '20:00:00' OR DAYOFWEEK(b.data_inclusao) IN (1,7)) LIMIT 50
FazerVerifique jul-set/2026 no central, tipo "Conciliação atrasada", 10 dias.
Resultado esperadoReferência de 03/10/2026: 5 contas; a maior, STARS FOMENTO-NOVO, com 287 lançamentos desde 01/07 somando 10,58 mi. Conta que não concilia há mais de 180 dias não aparece. Gravidade ALTA quando o mais antigo passa de 60 dias, contado dentro do período escolhido. O texto agora diz "sem conciliação no período; o mais antigo deles é de ..." (antes não dizia "no período"). O que ficou antes do início do período não entra: escolher período longo (até 366 dias).
Como conferirSELECT b.idconta_bancaria, COUNT(*), SUM(b.valor), MIN(b.data_baixa) FROM financeiro_baixas b WHERE b.excluido <> 'T' AND b.data_conciliacao IS NULL AND b.data_baixa >= '2026-07-01' AND b.data_baixa < DATE_SUB(CURDATE(), INTERVAL 9 DAY) GROUP BY b.idconta_bancaria
FazerVerifique 01/08/2026 a 30/09/2026 no central, tipo "Baixa lançada com o período fechado". Abra o "?" da janela e leia a regra.
Resultado esperadoReferência: baixa 1001576815, data 28/08, incluída em 11/09 às 11:00 por Felipe Rodrigues Morais, com a U.D.F. de todas as filiais em 31/08 desde 09/09 10:03. Não deve acusar: baixa incluída com o período reaberto por token; baixa só alterada depois do fechamento. A ajuda agora diz que só a inclusão conta (antes dizia "incluída ou alterada").
Como conferirSELECT id, data_baixa, data_inclusao, idusuario_incluiu FROM financeiro_baixas WHERE id = 1001576815; SELECT data, udf, idfilial, idusuario FROM udf_log ORDER BY data DESC LIMIT 10
FazerRepita a mesma verificação com "Todas as minhas filiais" marcada e desmarcada.
Resultado esperadoDesmarcada: só alertas da filial ativa (conciliação: conta da filial). Marcada: todas as de usuario_filial. A contagem desmarcada é sempre menor ou igual à marcada.
FazerClique em um botão-resumo; clique em Imprimir.
Resultado esperadoA grade mostra só o tipo clicado, sem nova consulta; botão com contagem 0 fica desabilitado; o PDF/planilha reflete a lista filtrada (colunas Gravidade, Alerta, Data, Filial, Emitente, Documento, Parc., Valor, Usuário, Descrição, Títulos, Baixas).
Menu: Relatórios › 7-Conferências › 2-Documentos × Financeiro (372) · Doc técnico: validacoes-documentos-financeiro-372.html · Ajuda: botão ? da janela
Status no status-porte.csv: REVISAR
central com movimento; para os casos de divergência, ambiente de homologação onde se possa alterar um título (ou harness que nunca confirma).372.FazerAbra o 372 e clique em Conferir (30 dias, todos os documentos, todas as divergências).
Resultado esperadoContador "Conferindo… (Ns)"; grade com os alertas em ordem ALTA e depois MEDIA; botões-resumo por divergência e por documento com contagens que somam o total.
Como conferirReferência de tempo: central jan-ago/2026 em ~19,5 s; um mês bem menos.
FazerEscolha uma venda do período com título e confira à mão.
Resultado esperadoNenhum alerta para ela; a diferença entre o esperado e a soma dos títulos é menor que a tolerância.
Como conferirSoma dos itens tipo_produto='1' mais outros acréscimos menos descontos contra a soma dos títulos de financeiro_emissao (SQL no doc técnico).
FazerEm homologação altere o valor de um título de venda direto no banco (ou por regravação com harness que nunca confirma) e confira o período do documento. Depois abra o "?" e leia a tolerância.
Resultado 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 uma unidade da última casa por título, mínimo 0,05) não é acusada; em guarani, diferença de 1 não acusa. A ajuda foi corrigida em 04/10 (dizia "meia unidade").
FazerProcure, num tipo em que a maioria dos documentos da filial tem título, um documento sem nenhum título vivo.
Resultado 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.
FazerEm homologação, exclua logicamente (excluido='T') uma venda deixando o título vivo (ou ache um caso) e confira o período do título.
Resultado 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.
FazerEscolha uma compra de gado com parcelas 4/5 (faturas) cujo total de faturas passe do líquido.
Resultado esperadoNão acusa excesso (a provisão nunca é negativa); acusa só se faltar mais que o maior entre a tolerância e 1. A descrição de uma divergência acrescenta "(com faturas do produtor)".
FazerMarque só "Frete avulso" e só "Título de documento excluído"; depois todos.
Resultado 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.
FazerSelecione uma linha e clique "Abrir tela do documento" e "Abrir Títulos (221)".
Resultado esperadoA janela do módulo correto abre; os ids dos títulos estão na coluna Títulos para localizar no 221.
FazerDatas invertidas; 400 dias; desmarque todos os documentos.
Resultado esperadoMensagens da seção D do doc técnico.
Menu: Relatórios › 7-Conferências › 3-Conferência Financeiro × Contábil (373) · Doc técnico: validacoes-conferencia-financeiro-contabil-373.html · Ajuda: botão ? da janela
Status no status-porte.csv: REVISAR
fjfrigo_concepcion, ago/2026; filial 3).373. A correção de 04/10 (IFNULL nas marcas somente_conversao e ifrs) não muda nenhum número hoje; a filial do contábil (idfilial) × a do dado (idfilial_dado) é desenho, não defeito.FazerAbra o 373, deixe o mês corrente com "Só os dias com diferença" marcado e clique PDF.
Resultado esperadoAbre o PDF "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.
Como conferirReferência de tempo: filial 3, ago/2026, ~3 s.
FazerGere com a opção marcada e desmarcada para a mesma conta e período.
Resultado esperadoO TOTAL DO PERÍODO e o resumo trazem os mesmos números nos dois casos. Desmarcada, aparecem todos os dias com movimento.
FazerEscolha uma conta bancária e um dia da grade; refaça as três somas no banco.
Resultado esperadoFinanceiro (data), Financeiro (conciliação) e Contábil batem ao centavo (2 casas) com o relatório; as colunas de diferença são contábil menos financeiro e contábil menos conciliado.
Como conferirFinanceiro pela data: baixas (R soma, P subtrai) com fe.idmoeda = cb.idmoeda mais financeiro_lancamento_banco; contábil: contabilidade_analitico da conta contábil e moeda da conta, sem somente_conversao, ifrs, encerramento, resultado e apertura (SQL no doc técnico, caso 3).
FazerEscolha uma conta que divide a conta contábil com outras e gere.
Resultado 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. A seção de contas sem conta contábil não sai quando há filtro de conta.
FazerCom um movimento numa conta bancária sem idplconta (173), gere sem filtro de conta.
Resultado 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.
Como 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())
FazerBaixe um título em USD numa conta em guarani/real; veja também um lançamento contábil de diferença cambial.
Resultado 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.
FazerInverta as datas; 400 dias; filial fora do alcance; período sem movimento.
Resultado esperadoMensagens da seção D do doc técnico.
FazerGere com o botão Excel.
Resultado esperadoMesmas seções e totais do PDF, em planilha.
Menu: Relatórios › 7-Conferências › 4-Painel de NF-e Recebidas (374) · Doc técnico: validacoes-nfe-recebidas-374-457.html · Ajuda: botão ? da janela
Status no status-porte.csv: REVISAR · falta: testar na tela (herdado do 457)
nfe_recebida com notas (origem SIEG). Chave SIEG_API_KEY cadastrada para o caso de busca; não rodar a busca em produção sem combinar.374. Status REVISAR ("testar na tela, herdado do 457").FazerAbra o 374 (Brasil), deixe 30 dias, sem "Todas as minhas filiais", Atualizar.
Resultado esperadoCartões com quantidades por situação da filial ativa; gráfico por dia; 15 maiores fornecedores; lista com DANFE/XML. A soma LANCADA_COM_XML + LANCADA_SEM_XML + NAO_LANCADA + SEM_CADASTRO = quantidade total; canceladas à parte.
Como conferirSELECT status, COUNT(*) n, SUM(valor_total) FROM nfe_recebida WHERE idfilial = :filial AND data_emissao BETWEEN :de AND :ate GROUP BY status. Retrato de 04/10/2026 (central, todas as filiais, emissão 31/08 a 02/10): LANCADA_SEM_XML 925, NAO_LANCADA 512, LANCADA_COM_XML 201, CANCELADA 87, SEM_CADASTRO 67.
FazerMarque "Todas as minhas filiais" e Atualizar.
Resultado esperadoAparece "Por filial", ordenado do maior valor para o menor; os totais gerais são a soma das filiais.
FazerAbra o "?" da janela e leia o que diz sobre compra de gado, título, filial destinatária e janela de 120 dias.
Resultado esperadoA ajuda diz: compra de gado (2312) é sempre "com XML"; só título a pagar conta; vale a filial destinatária (e as de mesmo CNPJ); janela de 120 dias da emissão ao lançamento.
FazerInforme um dia recente e clique "Buscar no SIEG" (com a chave cadastrada e fora de homologação).
Resultado esperadoA chamada volta na hora; as duas linhas acima dos cartões mostram o dia atual e "N de M"; o painel recarrega a cada dia concluído; é possível fechar a janela e a carga continua. Segunda carga no mesmo banco recusa com "Já há uma busca no SIEG em andamento...". Sem chave: "Cadastre a chave do SIEG...". Mais de 92 dias: "Período de no máximo 92 dias por busca no SIEG.".
Como conferirSELECT COUNT(*), MAX(data_atualizacao) FROM nfe_recebida WHERE origem = 'SIEG'; e o log "457 - carga do SIEG ...".
FazerCom o backend em produção, aguarde o intervalo (app.sieg.intervalo-minutos, 60).
Resultado esperadoA linha "automática" mostra a última rodada (ontem e hoje); repetir não duplica notas (chave única). Em homologação (app.conexao.hml=1) ela não roda e o log registra "busca automática do SIEG desligada: backend em homologação".
FazerLance no 242, 2322 ou 221 uma nota que estava NAO_LANCADA (mesmo emitente e número) e clique "Reconferir pendentes".
Resultado esperadoA nota passa a LANCADA_SEM_XML (ou COM_XML se o XML foi anexado no 456). Sem pendentes: "Nenhuma nota pendente no período.". Notas fora do período, sem XML guardado ou de outras filiais não são reavaliadas.
Como conferirSELECT status, destino, id_lancamento, documento, mensagem FROM nfe_recebida WHERE chave = :chave
FazerConfira uma nota cujo número se repete todo ano (produtor que numera por dia+mês+sequência) e uma transferência entre filiais.
Resultado esperadoLançamento a mais de 120 dias da emissão não vincula (a nota fica NAO_LANCADA); nota de transferência não casa com título de venda da filial emissora (o título precisa ser a pagar e de filial com o CNPJ da destinatária). Casos do histórico: NF-e 40920003 de LEONOR PALUDO (04/09/2026) contra a compra de carne 10641314 de 05/09/2025; NF-e 668 série 5 da BMG filial 28 para a 05.
FazerImporte a NF-e do pecuarista pelo 456 e olhe o painel.
Resultado esperadoA nota vira lançada com destino CG e a mensagem diz por onde achou (fatura, documento da compra ou os dois); nenhum XML é gravado na compra de gado.
Como conferirSELECT chave, status, destino, id_lancamento, mensagem FROM nfe_recebida WHERE destino = 'CG' ORDER BY data_atualizacao DESC LIMIT 20
FazerBaixe o XML e abra o DANFE de uma nota; tente o id de uma nota de filial fora do usuário (URL direta).
Resultado esperadoNota própria: download/PDF. Nota de outra filial ou sem XML: "Nota não encontrada nas suas filiais, ou o XML dela ainda não foi baixado.".
FazerEm tenant paraguaio, "Importar XLS" com a planilha do Marangatu e depois "Baixar XMLs pendentes".
Resultado esperadoComprovantes com CDC entram com origem SET e situação pelo CDC; os sem CDC só são contados no retorno; os XMLs chegam em segundo plano; "Parar" interrompe e reimportar/baixar retoma onde xml IS NULL. Todas as filiais de concepcion têm o mesmo RUC: a nota fica na filial da sessão.
Como conferirSELECT origem, status, COUNT(*), SUM(xml IS NULL) sem_xml FROM nfe_recebida GROUP BY origem, status
FazerEscolha um período com mais de 2.000 notas.
Resultado esperadoA lista mostra as 2.000 mais recentes e avisa que foi cortada; cartões, gráfico e fornecedores continuam calculados sobre o total.
Menu: Relatórios › 8-Indicadores › 1-Demonstrativo de Faturamento por Unidade (381) · Doc técnico: validacoes-demonstrativo-faturamento-381.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
central (BMG, codicfj 004). Valores de 03-04/10/2026: nota nova ou retroativa muda meses antigos, então confira sempre contra a mesma consulta, no mesmo momento.DEMONSTRATIVO_FATURAMENTO_EXCLUIR_TIPOS e a chave _GERENCIAL (11195, 11196 e 11203 estão na _GERENCIAL desde 03/10). Para o e-mail: SMTP na aba NF-e da filial 1, e PAINEL_FATURAMENTO*.381 desde o script 2026.046 (permissão copiada da 2333).FazerCom um usuário de grupo que tem a opção 381 (permissão copiada de 2333) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 381 nem a 2333.
Resultado esperadoO primeiro usuário vê o item 381 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 381 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('381','2333'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('381','2333') ORDER BY idgrupo. Os grupos que entram em 381 devem ser os mesmos de 2333 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerMensal, 01/09 a 30/09/2026, Fiscal, todas as filiais, Detalhar ligado.
Resultado esperadoLinhas por filial × mercado, totais, e a seção Composição. Venda: 114 Venda Mercado Interno é a maior linha do interno.
Como conferirComponente Venda por filial: soma de faturamento_venda_produtos.valor_total (tipo_produto '1', convertido pelo câmbio da nota) de tipos tipo_natop LIKE 'venda%' de saída, sem o tipo 1121, no mês. Em 04/10/2026, todas as filiais sem o 1121: 48.757.117,71 (o FATURAMENTO TOTAL fica abaixo: descontos e devoluções). SQL no doc técnico, caso 1.
FazerMesmo recorte, soma de Devolução e Estorno.
Resultado esperadoAs linhas (-) Devolução e (-) Estorno de venda batem com a consulta (estorno só quando a nota estornada era venda).
Como conferirfaturamento_compra_carne com tipo_natop IN ('devolucao_venda','cancelamento_venda'), excluindo 1121, 11195, 11196, 11203 (critério gerencial). SQL no doc técnico, caso 2.
FazerMensal de 01/01 a 30/09/2026, coluna 06/2026: Fiscal e Gerencial.
Resultado esperadoFiscal aproximadamente -44,7 mi; Gerencial aproximadamente +35,9 mi (03/10). A diferença são os tipos 11195/11196/11203.
Como conferirSELECT chave, valor_string FROM system_config WHERE chave LIKE 'DEMONSTRATIVO%'
FazerFiltro Excluir Tipo = 114, Mensal de setembro.
Resultado esperadoA linha "Venda: 114 ..." some da composição; a exportação (113) permanece.
Como conferirA mesma consulta do caso 1 sem o 114 (NOT IN (1121,114)).
FazerSemanal de 01/09 a 30/09/2026.
Resultado esperadoCinco semanas: 01/09 a 06/09, 07/09 a 13/09, 14/09 a 20/09, 21/09 a 27/09, 28/09 a 30/09; cada uma com Acum.
Como conferir01/09/2026 é terça; as semanas fecham no domingo.
FazerComparativo com data final 15/09/2026, depois 30/09/2026.
Resultado esperadoRótulos "Mês 09/2026 até dia 15", "Mês 09/2025 até dia 15", "Acum. 2026 até 15/09", "Acum. 2025 até 15/09", "Mês 08/2026 até dia 15". Com 30/09 os rótulos perdem o "até".
Como conferirConferir cada coluna com o caso 1 mudando só o intervalo de datas.
FazerMensal 01/01/2024-30/09/2026; Semanal 01/07-30/09/2026.
Resultado esperadoRecusas "24 meses ... tem 33" e "10 semanas ... tem 14. Escolha um mês.".
FazerConverter para dólar no central; depois um período em que haja dia sem cotação anterior ao dia (no central a cotação do dólar só começa em 10/08/2021).
Resultado esperadoSai com o painel de avisos "N dia(s) convertido(s) para ... cotação de mais de 7 dias antes". Dia sem nenhuma cotação anterior não usa mais a primeira cotação (futura): fica fora da conversão (zero) e entra no aviso. Na homologação as vendas começam depois da primeira cotação, então talvez não haja caso: registre "sem caso" nesse caso.
Como conferirSELECT MIN(data), MAX(data) FROM moeda_valores WHERE idmoeda = <dólar> (central: idmoeda 112).
FazerAche um estorno do mês e a nota estornada.
Resultado esperadoEstorno de venda abate; de devolução soma; de transferência (1151) não aparece em lugar nenhum.
Como conferirTipo cancelamento_venda, chave estornada em <refNFe> do XML em faturamento_nfe; o tipo da nota estornada vem do nfe_nome_xml (SQL no doc técnico, caso 9).
Fazer"Ver em tela": alterne Fiscal e Gerencial; clique Atualizar. Gere o XLS dos mesmos filtros.
Resultado esperadoOs números do mês coincidem com o XLS do mesmo critério; "atualizado em" muda após Atualizar. FATURAMENTO TOTAL igual nos dois.
FazerLance uma venda de teste (homologação) e gere o XLS em seguida; depois use Atualizar no painel.
Resultado esperadoO XLS pode não mostrar a venda por até 20 min; o painel com Atualizar mostra na hora.
Como conferirAguardar 20 min e regerar.
FazerEntre com usuário com 1-2 filiais e gere.
Resultado esperadoO arquivo só traz as filiais dele; a página da diretoria vem com parcial; filial de fora: "A filial N não está entre as filiais do usuário.".
FazerEnviar agora sem e-mails cadastrados; depois com e-mail e sem SMTP.
Resultado esperado1º: "Cadastre os e-mails...". 2º: a janela mostra "falhou - sem servidor de e-mail (filial 1, aba NF-e)". E-mail real não testado (sem SMTP).
Como conferirSELECT valor_string FROM system_config WHERE chave = 'PAINEL_FATURAMENTO_ULTIMO_ENVIO'
FazerEscolha um período sem nenhuma venda (futuro).
Resultado esperado"Não foram encontrados dados nessas condições.".
Menu: Relatórios › 8-Indicadores › 2-Fluxo de Caixa Projetado (382) · Doc técnico: validacoes-fluxo-caixa-projetado-31995-382.html · Ajuda: botão ? da janela
Status no status-porte.csv: REVISAR · falta: teste de tela do relatório v2/v3 e do painel (herdado do 31995)
central (moeda local única) e fjfrigo_concepcion (contas em moeda estrangeira, dólar). Valores de 04/10/2026 mudam com baixas e lançamentos do dia.382 desde o script 2026.046 (permissão copiada da 31995; antes valia a 31995).FiliaisDoUsuario). Teste com um usuário de alcance parcial e com um que alcança todas as filiais.REVISAR: falta teste de tela do relatório v2/v3 e do painel (a v1 foi testada pelo usuário em 27/09).FazerCom um usuário de grupo que tem a opção 382 (permissão copiada de 31995) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 382 nem a 31995.
Resultado esperadoO primeiro usuário vê o item 382 e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 31995 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 382 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('382','31995'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('382','31995') ORDER BY idgrupo. Os grupos que entram em 382 devem ser os mesmos de 31995 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 382 (moeda local, 30 dias, agrupamento Dia, sem pedidos/ordens, sem filtros). Some A receber, A pagar e A pagar na RJ da grade e compare com a SQL. Use um usuário que alcança todas as filiais.
Resultado esperadoIgualdade por tipo (a soma das faixas = o horizonte). Referência de 04/10/2026 no central (30 dias, 04/10 a 02/11): A pagar 2.002 títulos / 27.715.641,71; A pagar na RJ 502 / 23.006.053,96; A receber 853 / 26.469.560,97.
Como conferirSQL no doc técnico (T1): pendente = valor_parcela menos baixas vivas, com valor_cambio > 0, vencimento entre hoje e hoje+30, sem receber descontado.
FazerRepita o T1 com um usuário de alcance parcial (ex.: usuário 10242 com as filiais 16, 23 e 24 no central).
Resultado esperadoSó aparecem contas (conta_bancaria.idfilial), títulos, pedidos e ordens das filiais dele. Referência do histórico: o usuário 10242 passa a ver 1 título a receber (416.666,67) e nenhum a pagar no horizonte de 30 dias; 19 das 293 contas Banco ativas. Filtro de filial fora do alcance = interseção vazia, nada entra. Quem alcança todas as filiais vê o mesmo de antes.
Como conferirSELECT id_filial FROM usuario_filial WHERE idusuario = :usuario; compare com conta_bancaria.idfilial e financeiro_emissao.idfilial.
FazerEm banco com título com valor_cambio 0 (central: 79 títulos, 8,4 mi, todos em moeda local), converta para outra moeda e olhe o total.
Resultado esperadoO título com câmbio 0 não converte para zero (agora vale o fator 1, como nos 316x). No horizonte medido (-365 a +90 dias) os títulos com câmbio 0 do central estão na moeda local: os totais não mudam; concepcion não tem nenhum.
Como conferirSELECT COUNT(*), SUM(valor_parcela) FROM financeiro_emissao WHERE excluido <> 'T' AND valor_cambio = 0
FazerMarque as contas e anote o saldo inicial. Percorra a grade.
Resultado esperadoCada Saldo acumulado = anterior + A receber + Pedidos - A pagar - Ordens; o primeiro parte do saldo inicial. "Menor saldo" é o menor acumulado (ou o saldo inicial) e a data é a do fim da faixa. A RJ nunca entra.
FazerCompare o Saldo final com a conta do T2.
Resultado esperadoA coluna RJ é informativa: o saldo final não muda se a RJ for zerada.
FazerClique no indicador Vencidos (365 dias) e compare com a SQL.
Resultado esperadoA receber, A pagar e RJ iguais ao SQL. Referência 04/10/2026 no central: A pagar 3.586 / 82.356.359,84; A pagar RJ 33.840 / 1.339.424.687,92; A receber 19.678 / 782.097.005,40 (+3 títulos a receber com RJ, 6.415,32, que a tela soma no A receber). Trocar os dias para 30 reduz o recorte.
FazerNum banco com dólar (fjfrigo_concepcion), converta de G$ para U$ e volte.
Resultado esperadoDocumento em U$ não converte; em G$ divide pela cotação mais recente do U$ (aparece em "Cotações usadas", com aviso se tiver mais de 7 dias); documento com câmbio fechado usa o câmbio dele; moeda sem cotação usa o câmbio gravado e gera aviso.
FazerMarque "Incluir pedidos". Escolha um pedido sem venda (faturamento_venda.idpedido) com prazo 30/60/90.
Resultado esperadoTrês parcelas iguais (sobra do arredondamento na última) a partir de data_entrega (ou hoje, se já passou); as que passam do horizonte ficam de fora. Emitido há mais de N dias não entra; "Só autorizados" tira os não autorizados. Na lista do período o pedido aparece com o número e o valor da parcela prevista.
FazerCom pedidos e ordens ligados, filtre por um centro de custo.
Resultado esperadoAviso "Com filtro de centro de custo, pedidos e ordens de compra ficam de fora…" e as colunas Pedidos/Ordens zeradas. Com filtro de vendedor, só as ordens saem.
FazerSome Filial e Centro de custo da composição do horizonte inteiro; compare com A receber + Pedidos e A pagar + Ordens da projeção (sem RJ).
Resultado esperadoAs somas por filial e por centro batem com o total (pedidos podem diferir 1 centavo por arredondamento de item). Clicar num período troca a composição para ele; o período 05/10-11/10 bate com a linha da grade. Emitentes mostram só os 15 maiores de cada lado.
FazerGere o Excel com Agrupamento Dia, 30 dias.
Resultado esperadoUma coluna por dia; o Caixa final do último dia = Saldo final da tela; os totais por centro de custo = as linhas de entrada/saída. Referência de 27/09: caixa final 67.493.772,02 e ~1,7 s.
FazerNo fjfrigo_concepcion, abra Contas do saldo inicial e veja a conta 1001913 (ADTO ALL PAR CASINGS U$).
Resultado esperadoSaldo em U$ de 21.480.007,18: só o movimento na moeda da conta (regra do 3172 e do legado). Antes de 04/10 o saldo somava movimentos de qualquer moeda e chegava a bilhões. O doc técnico ainda chama de defeito pendente: a correção é de 04/10.
Como conferirSQL no doc técnico (T10): saldo_so_na_moeda_da_conta deve ser igual ao saldo da tela; saldo_como_o_fluxo_calcula (todas as moedas) é o número que não deve aparecer.
FazerChamadas com dias = 45; vencidos = 0; diasPedidos = 400; moeda de apresentação sem cotação.
Resultado esperadoAs mensagens da seção D do doc técnico.
Menu: Relatórios › 8-Indicadores › 3-Comparativo de Plantas (383) · Doc técnico: validacoes-comparativo-plantas-383.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), carga da foto, tipos de compra da BMG na Config. Globais
central (BMG). Números de 03-04/10/2026; a produção depende de a foto producao_industria ter sido refeita para o período.COMPARATIVO_PLANTAS_TIPOS_CONSUMO (padrão 117) e as chaves _TIPOS_COMPRA_* (confirmar com o usuário), centros da folha e COMPARATIVO_PLANTAS_PRODUTOS_INTERMEDIARIOS.383 (permissão copiada da 3211; antes não pedia permissão).FazerCom um usuário de grupo que tem a opção 383 (permissão copiada de 3211) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 383 nem a 3211.
Resultado esperadoO primeiro usuário vê o item 383 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 383 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('383','3211'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('383','3211') ORDER BY idgrupo. Os grupos que entram em 383 devem ser os mesmos de 3211 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerEntre plantas, 01/03/2026 a 31/03/2026, todas as filiais.
Resultado esperadoColorado (10): 4.120 cabeças e 978.544,5 kg carcaça, igual ao ABATE do estoque da indústria WEB (8.240 bandas, 978.533 kg). Espécie BOVINO; Iporã e Grão Pará SUÍNO.
FazerEntre plantas, setembro/2026.
Resultado esperadoProdução kg de Iporã menor ou igual a 2.949.271 (a SQL de conferência inclui os intermediários que o relatório tira); Grão Pará aproximadamente 525 mil kg.
FazerMesmo caso, linha de planta sem abate (Nova Londrina).
Resultado esperadoEspécie CICLO 2; rendimentos sobre a entrada na produção (TRANSFERENCIA); Kg carcaça zerado.
Como conferirSELECT tipo, SUM(peso_liquido) FROM producao_industria WHERE idfilial = <planta> AND data BETWEEN ... GROUP BY tipo
FazerUnidade mês a mês, filial 5, 01/01-30/09/2026, com grupos.
Resultado esperadoUma linha por mês com movimento, TOTAL, e a seção por grupo do almoxarifado (consumo, insumos, outras, transf.). A soma dos meses = o caso "Entre plantas" de Iporã no mesmo período.
FazerVisão Unidade com duas filiais marcadas.
Resultado esperadoA tela recusa: "Na visão unidade escolha uma filial só ...".
FazerSetembro/2026.
Resultado esperadoFrete animais de Grão Pará = 34.500 e Tarauacá = 15.732; Iporã = 0.
FazerAbra a folha de uma planta num mês.
Resultado esperadoSalários = soma dos centros da chave para a filial (pagar menos receber), na moeda local.
FazerNo fjfrigo_concepcion (consumo 117 com linhas em U$/EUR/R$), 07/2026, filial 2; depois filial 18 e 8. Compare com o Consumo e o Custo total antes da correção.
Resultado esperadoO consumo aplica o câmbio da linha quando a moeda da linha não é a moeda local da filial. Referência: filial 2 de 656,7 mi para 1.702,2 mi Gs; filial 18 de 98,5 para 310,9 mi; filial 8 de 0,8 para 101,3 mi. No central (só moeda local) nada muda.
Como conferirSELECT idmoeda, COUNT(*) FROM saida (consumo tipo 117, 2026) por moeda: 12.792 linhas em U$, 286 em 114, 60 em 113 (nenhuma sem câmbio). A conta é custo_total * valor_cambio quando idmoeda da linha difere de filial.idmoeda_local.
FazerMude COMPARATIVO_PLANTAS_TIPOS_CONSUMO de 117 para 117,102 e regere.
Resultado esperadoConsumo e Custo total aumentam; produção e abate não mudam.
Como conferirSELECT id, descricao FROM tipo_faturamento WHERE id IN (117,102)
FazerEm banco sem a tabela producao_industria (ou antes da 1ª foto).
Resultado esperadoAviso "A foto da produção ainda não foi tirada..."; produção zerada, resto normal.
FazerPeríodo de 800 dias; depois duas vezes seguidas; depois "todas" com usuário comum.
Resultado esperado"Período de no máximo 731 dias."; "A foto da produção já está sendo refeita..."; "Refazer a foto de todas as plantas: só o master ou o suporte." (a caixa nem aparece para o comum).
FazerRefaça a foto de Colorado (10) e de 74/75/76.
Resultado esperadoCada filial só recebe a produção gravada com o seu idfilial na indústria; 74/75/76 não somam a produção de Colorado.
Como conferirSELECT idfilial, SUM(peso_liquido) FROM producao_industria WHERE idfilial IN (10,74,75,76) AND tipo='PRODUCAO' GROUP BY 1
Fazer"Ver em tela" com Visão = Unidade no filtro.
Resultado esperadoAbre o painel entre plantas (a visão é ignorada), com os filtros de filial.
FazerAlterne Bovino, Suíno, Todas, Ciclo 2; clique numa planta.
Resultado esperadoEm Todas somem as métricas por cabeça; o clique mostra o cartão Consumo × compra por grupo (maiores consumos; "+ N grupo(s) menores" só no XLS).
Menu: Relatórios › 8-Indicadores › 4-Custo por kg vendido (384) · Doc técnico: validacoes-custo-kg-vendido-384.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), foto da produção das plantas fora do alcance
central (BMG); o custo do produto das plantas exige a foto da produção do período no 383. Números de 03-04/10/2026.CUSTO_KG_FILIAIS_FORA (central hoje: 12,14,16,17,27,51,52,56,64) e COMPARATIVO_PLANTAS_CC_SERV_INDUSTRIALIZACAO.384 (permissão copiada da 2333; antes não pedia permissão).FazerCom um usuário de grupo que tem a opção 384 (permissão copiada de 2333) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 384 nem a 2333.
Resultado esperadoO primeiro usuário vê o item 384 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 384 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('384','2333'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('384','2333') ORDER BY idgrupo. Os grupos que entram em 384 devem ser os mesmos de 2333 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerPeríodo 01/09-30/09/2026, todas as filiais.
Resultado esperadoIporã (5): 3.300,8 t, receita R$ 32.016.613,34, preço médio R$ 9,70/kg; Grão Pará (11) 662 t; filial 3 aproximadamente 345 t; Maringá (18) 131,5 t. Sem as filiais fora.
FazerPeríodo 01/01-30/09/2026.
Resultado esperadoTotal das filiais com custo: aproximadamente 51,3 mil t, preço aproximadamente R$ 15,00/kg, custo aproximadamente R$ 14,37/kg, margem aproximadamente 4,2%. Iporã aproximadamente R$ 9,86/kg de custo e margem aproximadamente 3,7%; São José aproximadamente R$ 16,06/kg (margem -1,7%). Tolerar variação pequena (nota nova/retroativa).
FazerMarque uma filial de CUSTO_KG_FILIAIS_FORA (ex.: 51) no filtro. Depois rode sem escolher filial (todas as do usuário).
Resultado esperadoCom a filial pedida explicitamente: ela não aparece e a tela mostra um aviso (antes saía calada). Sem filial pedida o recorte normal continua calado, sem aviso.
Como conferirSELECT valor_string FROM system_config WHERE chave = 'CUSTO_KG_FILIAIS_FORA'
FazerNo fjfrigo_concepcion, setembro/2026 (3 notas, tipos 113 Venda Exportação e 114 Venda Mercado Interno, 5,2 t, tipos sem tipo_natop). No central, setembro/2026.
Resultado esperadoKg vendido, receita e preço médio aceitam, além da natureza venda* de saída, tipo de saída sem natureza cadastrada: no concepcion as 3 notas (5,2 t) agora entram. No central nada muda (4.533,8 t em venda*, nenhuma saída em tipo sem natureza). Risco aceito: num tenant sem natureza cadastrada, uma transferência de saída também conta como venda.
Como conferirSELECT t.id, t.descricao, t.tipo_natop FROM tipo_faturamento t WHERE t.entrada_saida = 'S' AND TRIM(IFNULL(t.tipo_natop,'')) = ''; compare as notas do mês nesses tipos.
FazerEscolha uma planta cuja indústria não responde (ex.: Colorado, 10).
Resultado esperadoAviso "Sem custo do produto (...)"; custo/resultado/margem em branco; fora do TOTAL, cujo rótulo vira "TOTAL (só filiais com custo do produto)".
Como conferirSELECT COUNT(*) FROM producao_industria WHERE idfilial = 10 AND tipo='PRODUCAO' (deve dar 0)
FazerEscolha São José, Curitiba LV ou uma loja.
Resultado esperadoTipo COMERCIAL (custo médio); custo do produto = kg × custo médio móvel; possível aviso "Kg vendido sem custo médio...".
FazerEscolha Cajuru ou Ibiúna.
Resultado esperadoTipo COMERCIAL; custo pelas entradas de carne.
FazerUm mês só (setembro) contra jan-set na mesma planta.
Resultado esperadoO custo/kg do mês usa o kg e o custo daquele mês; o do período é a média ponderada pelo kg vendido de cada mês.
FazerAbra o custo fixo e sobre vendas de uma filial.
Resultado esperadoCada linha = soma dos títulos dos centros da chave, pagar menos receber, sem tipos do almoxarifado; em filial não-planta, a linha extra "Consumo do almoxarifado (não planta)".
FazerMaringá (18): custo com e sem o centro 101722.
Resultado esperadoRetirar 101722 de COMPARATIVO_PLANTAS_CC_SERV_INDUSTRIALIZACAO reduz o custo formado (aproximadamente R$ 1,25/kg retornado até julho).
FazerAlterne Todas, Plantas, Comerciais; clique numa filial.
Resultado esperadoO filtro muda a lista e os indicadores; o clique mostra a composição do fixo e do sobre vendas por kg. Compare com a seção Composição do XLS.
FazerPeríodo sem venda de carne (futuro).
Resultado esperado"Não foram encontrados dados nessas condições.".
Menu: Relatórios › 8-Indicadores › 5-Painel do Almoxarifado (385) · Doc técnico: validacoes-painel-almoxarifado-385-38d-38e.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), par 1/2 do cadastro ignorado (decisão 03/10)
central (BMG), com a view almoxarifado_movimentacao_analitica funcionando (1,17 mi de linhas em 04/10/2026). Referências de 03-04/10/2026; confira sempre um item, não o total.3331; antes não pedia permissão). Teste de tela pendente.FazerCom um usuário de grupo que tem a opção 385 (permissão copiada de 3331) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 385 nem a 3331.
Resultado esperadoO primeiro usuário vê o item 385 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 385 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('385','3331'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('385','3331') ORDER BY idgrupo. Os grupos que entram em 385 devem ser os mesmos de 3331 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerData-base 03/10/2026, janela 90, todas as filiais, moeda local, "Ver em tela".
Resultado esperadoOrdem de grandeza (medição de 03/10, antes das correções do custo): R$ aproximadamente 30,8 mi em estoque; 9,1 mil itens com saldo; consumo aproximadamente R$ 27,9 mi; 2,6 mil em ruptura (cobertura < 15 dias), 701 em excesso, 6,5 mil parados (R$ 15,8 mi). Depois das correções o estoque de 30/09 foi aproximadamente R$ 28,0 mi (38D).
Como conferirOs totais mudam com lançamentos novos; confira um item (caso seguinte) em vez do total.
FazerAbra um item (lista de Ruptura, Excesso ou Parado) e confira saldo, consumo e custo.
Resultado esperadoSaldo = soma da view até a data-base; consumo = soma dos tipos 117 na janela; custo = último custo de entrada da filial. Referência: farelo de soja de Entre Rios em 03/10: saldo 19.810,90 e consumo R$ 4.489.914,94 em 90 dias.
FazerAche (SQL) um item cuja última entrada está sob cabeçalho almoxarifado_compra excluído e abra o item no painel.
Resultado esperadoO "último custo" não usa a compra de cabeçalho excluído (antes podia virar o custo da filial). Itens vivos sob cabeçalho excluído: 41 no central (1 era o último custo da filial) e 16 no concepcion; o valor em estoque dessas filiais muda ligeiramente.
Como conferirSELECT acp.idproduto FROM almoxarifado_compra_produto acp JOIN almoxarifado_compra ac ON ac.id = acp.idalmoxarifado_compra WHERE ac.excluido = 'T' AND acp.excluido <> 'T' LIMIT 20
FazerFilial Colorado (10), data-base 31/07/2026, imobilizado fora.
Resultado esperadoValor em estoque aproximadamente R$ 961.623,71 (antes da correção do custo dava R$ 10,69 mi por usar o custo da empresa: a serra 1011827 com duas entradas manuais de R$ 36.500 na filial 12). O 3332 recalculado pela view + custo_almox_si dá R$ 964.486,39 sem imobilizado; a diferença de aproximadamente R$ 2,9 mil é o custo_almox_si arredondando a 0 casas quando a moeda é a 111.
FazerItem com mínimo 1 e máximo 2 no cadastro e consumo diário alto.
Resultado esperadoClassificado pela cobertura em dias, não pelo par mínimo/máximo.
Como conferirSELECT estoque_minimo, estoque_maximo FROM almoxarifado_produto WHERE id = <produto>
FazerClique num mês do gráfico de valor, em qualquer ponto; depois "ver faixas sem saída".
Resultado esperadoO cartão lateral troca pelo valor de todas as filiais do mês (maior em cima); o botão/mesmo mês volta às faixas. Soma das filiais do mês = ponto do gráfico "todas".
FazerNa aba ABC escolha uma filial no seletor.
Resultado esperadoA classe é recalculada só com os itens da filial; a lista da célula e o consumo por setor seguem o foco. A = 80% do consumo em valor da filial.
FazerNo fjfrigo_concepcion, 31/08/2025, 90 dias: dólar e depois moeda local.
Resultado esperadoEstoque aproximadamente U$ 5.824.129,73 contra 42.673.398.427,69 G$ (aproximadamente 7.327 G$/U$); a cobertura muda (65 para 68 dias: consumo converte pelo dia, estoque pelo fim do mês). A base de concepcion para em 24/08.
FazerNo central, converta para dólar.
Resultado esperadoRecusa "Falta a cotação de ...".
Como conferirSELECT MAX(data) FROM moeda_valores WHERE idmoeda = 112
FazerLance um ajuste/entrada agora e reabra o painel sem esperar; depois use Atualizar.
Resultado esperadoNão aparece por até 10 min; no 385, Atualizar mostra na hora.
Menu: Relatórios › 8-Indicadores › 6-Funil de Compras do Almoxarifado (386) · Doc técnico: validacoes-compras-almoxarifado-386-389.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
central (BMG). Referências de 03-04/10/2026.386 (permissão copiada da 3331; antes não pedia permissão). O funil não usa o aviso de recebimento (24F) nem o comprador (vazio em todo o central).FazerCom um usuário de grupo que tem a opção 386 (permissão copiada de 3331) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 386 nem a 3331.
Resultado esperadoO primeiro usuário vê o item 386 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 386 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('386','3331'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('386','3331') ORDER BY idgrupo. Os grupos que entram em 386 devem ser os mesmos de 3331 (cópia do script). A API não confere a opção: o corte é só do menu.
Fazer01/04/2026 a 30/06/2026, todas as filiais.
Resultado esperado2.013 SOs, 1.958 autorizadas, 1.835 CAN, 1.625 orçamento, 1.609 orçamento autorizado, 1.592 SC, 1.383 compra; 16 reprovadas na CAN, 55 não autorizadas, 559 abertas. ~1,5 s.
FazerMesmo caso, trechos.
Resultado esperadoMedianas: SO para CAN 0 d; para orçamento 8 d (p90 30); orçamento para autorizado 1 d; autorizado para SC 0 d; SC para compra 2 d (p90 22); total 18 d (p90 47, média 23,7). O gargalo é a cotação (CAN para orçamento).
Como conferirPara uma SO específica, compare as datas do XLS (linha da SO) com almoxarifado_orcamento.data, almoxarifado_solicitacao_compra.data, almoxarifado_compra.data_entrada.
FazerClique na etapa "Orçamento" do funil.
Resultado esperadoLista as abertas paradas nessa etapa (mais antigas primeiro) com dias desde a última etapa (a data mais recente entre SO, CAN, orçamento, autorização e SC).
FazerUma SO com compra no mesmo dia da SC.
Resultado esperadoO trecho SC para compra dá 0 (dia de calendário), não negativo; trecho com ordem trocada fica em branco.
FazerAbra a tabela por usuário.
Resultado esperadoQuem lançou o orçamento (login); "(sem usuário)" quando vazio; só SOs com orçamento.
Como conferirSELECT u.login, COUNT(*) FROM almoxarifado_orcamento ao LEFT JOIN usuario u ON u.id = ao.idusuario_incluiu WHERE ao.excluido = 'F' GROUP BY 1
FazerFiltre por setor e filial; depois XLS.
Resultado esperadoAs mesmas SOs na tela e no XLS (uma linha por SO).
FazerUsuário com uma filial; filial de fora via API.
Resultado esperadoSó as dele; "A filial N não está entre as filiais do usuário.".
Menu: Relatórios › 8-Indicadores › 7-Custo do Gado Posto (387) · Doc técnico: validacoes-gado-spread-387-38a.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), referência da faixa de preço dos suínos (integração × mercado) a decidir
central (BMG). Referências de 03-04/10/2026 (conferidas na SQL no dia 04/10).387 (permissão copiada da 3211; antes não pedia permissão). Moeda local apenas; a nota do módulo de comissão (1148) não entra no custo.FazerCom um usuário de grupo que tem a opção 387 (permissão copiada de 3211) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 387 nem a 3211.
Resultado esperadoO primeiro usuário vê o item 387 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 387 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('387','3211'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('387','3211') ORDER BY idgrupo. Os grupos que entram em 387 devem ser os mesmos de 3211 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerPor planta, 01/01-31/03/2026, filial Colorado (10).
Resultado esperado445 compras, 9.259 cab., 2.146.169,7 kg carcaça, gado R$ 45.926.360,77, frete 1.184.439,94, comissão 382.114,66, ajustes -4.813,41; custo posto R$ 47.488.101,96 (R$ 22,13/kg; R$ 331,90/@). Venceslau também igual à SQL.
FazerSet/2026: frete por planta.
Resultado esperadoTarauacá 15.732 e Grão Pará 34.500, iguais ao 383; Iporã sem frete.
FazerAbra as quatro visões, trimestre.
Resultado esperado~2,7 s cada. Os totais das visões batem entre si (planta = soma dos meses = soma das categorias = soma dos compradores).
FazerRendimento de Iporã e Grão Pará, jan-mar.
Resultado esperadoIporã aproximadamente 73,5% e Grão Pará aproximadamente 73,5-73,7% (o relatório deu 73,7% em 03/10); Colorado (bovino) sem rendimento (peso vivo = morto).
FazerFora da faixa, bovino: Tarauacá, set/2026.
Resultado esperadoAproximadamente 10 linhas em 21 compras (faixa de 10%); média do mês por planta + categoria + origem.
FazerFora da faixa, suíno: set/2026, plantas de suíno, faixa 10%.
Resultado esperadoCerca de 73 linhas no total das plantas de suíno em set/2026 (223 no 1º tri); a base é o histórico do pecuarista nos 30 dias anteriores; preço menor que R$ 0,05/kg não aparece.
FazerTroque a faixa de 5% para 30%.
Resultado esperadoCom 30% a lista é menor; o contador "Fora da faixa" do painel acompanha.
FazerIporã: compare a origem própria e a de terceiro.
Resultado esperadoPecuarista com raiz de CNPJ 10.989.834 = própria.
Menu: Relatórios › 8-Indicadores › 8-Posição de Tesouraria (388) · Doc técnico: validacoes-posicao-tesouraria-388.html · validacoes-fluxo-caixa-projetado-31995-382.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), envio real do e-mail
388 desde o script 2026.046 (permissão copiada da 31995; antes valia a 31995). Desde 04/10 o painel só mostra as filiais do usuário.PAINEL_TESOURARIA_EMAILS, PAINEL_TESOURARIA. Envio real do e-mail ainda não testado.FazerCom um usuário de grupo que tem a opção 388 (permissão copiada de 31995) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 388 nem a 31995.
Resultado esperadoO primeiro usuário vê o item 388 e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 31995 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 388 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('388','31995'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('388','31995') ORDER BY idgrupo. Os grupos que entram em 388 devem ser os mesmos de 31995 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o painel (Hoje). Veja a cascata e, na grade das contas, escolha uma conta com movimento.
Resultado esperadoPara cada conta e para o total: abertura + recebido - pago + transferido entrada - saída + outras entradas - outras saídas = fechamento, ao centavo. Fechamento do dia = saldo agora quando o dia é hoje.
Como conferirConsulta C1 do doc técnico com data < amanhã (saldo agora) e data < hoje (abertura de hoje).
FazerAbra o painel com um usuário de alcance parcial (ex.: usuário 10242 do central, filiais 16, 23, 24) e depois com um que alcança todas as filiais.
Resultado esperadoO usuário parcial vê só as contas da conta_bancaria.idfilial dele, e agenda, vence hoje e vencidos pela financeiro_emissao.idfilial dele (antes somava a empresa inteira). Quem alcança todas vê o mesmo de antes. O e-mail das 7h (usuário 0) segue com a empresa inteira, de propósito.
Como conferirSELECT COUNT(*) FROM conta_bancaria WHERE tipo_conta <> '1' AND idfilial IN (<filiais do usuário>) AND (data_desativacao IS NULL OR data_desativacao > CURDATE())
FazerNo fjfrigo_concepcion, veja a conta 1001913 (U$) no painel; no central, os vencidos com título de câmbio 0.
Resultado esperadoO saldo da conta é só o movimento na moeda da conta (como o 382). Título com valor_cambio 0 converte com fator 1, não para zero, nos vencidos. Os totais do central não mudam (títulos de câmbio 0 estão na moeda local).
Como conferirCompare com o T10 do 382 (mesma apuração de contas).
FazerAlterne Hoje e Ontem.
Resultado esperadoSaldo agora não muda. Fechamento de ontem = abertura de hoje (quando não há lançamento com data futura). O fechamento de ontem não inclui movimento de hoje.
FazerCompare o saldo agora com o do 382 usando todas as contas, e com o do 3172.
Resultado esperadoO 388 é menor ou igual conforme os caixas. A grade não lista conta com tipo_conta = '1'.
FazerDesmarque uma conta, "Guardar para o painel", confirme. Entre com outro usuário.
Resultado esperadoO outro usuário vê a mesma escolha (origem PAINEL). A linha de system_config existe com valor_blob preenchido. "Só ver" não grava.
FazerAbra "Vence hoje"; compare com o 382 do mesmo dia. Confira o maior vencido por emitente.
Resultado esperadoTotal a receber/pagar de hoje = dia 0 da agenda; lista = 10 maiores. Vencidos = pendente de títulos com vencimento entre hoje-365 e ontem; RJ só no total "pagar RJ".
FazerConverta para uma moeda estrangeira com cotação, depois para uma sem cotação.
Resultado esperadoValores = valor local dividido pela cotação mais recente; linha de cotações usadas preenchida. Sem cotação: "A moeda X não tem cotação até hoje: não há como converter para ela." (400) e nenhuma tela quebrada.
FazerConfig. Globais: PAINEL_TESOURARIA_EMAILS com um e-mail seu; botão "Enviar agora".
Resultado esperadoE-mail "Tesouraria de dd/mm/aaaa - empresa" com o movimento de ontem. PAINEL_TESOURARIA_ULTIMO_ENVIO com OK. Envio real ainda não foi testado. Para a rotina: ligar PAINEL_TESOURARIA = 1 e esperar a hora; segundo envio no mesmo dia não ocorre.
Menu: Relatórios › 8-Indicadores › 9-Preços e Fornecedores do Almoxarifado (389) · Doc técnico: validacoes-compras-almoxarifado-386-389.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
central (BMG) e fjfrigo_concepcion (moeda U$). Referências de 03-04/10/2026.389 (permissão copiada da 3331; antes não pedia permissão). O 389 nasceu como 387 e foi renumerado.FazerCom um usuário de grupo que tem a opção 389 (permissão copiada de 3331) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 389 nem a 3331.
Resultado esperadoO primeiro usuário vê o item 389 e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 389 em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('389','3331'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('389','3331') ORDER BY idgrupo. Os grupos que entram em 389 devem ser os mesmos de 3331 (cópia do script). A API não confere a opção: o corte é só do menu.
Fazer01/07/2026 a 30/09/2026, todas as filiais, moeda local.
Resultado esperadoGasto R$ 26.324.908,86; 320 fornecedores; 1.815 itens; variação de preço aproximadamente -1,80% (impacto aproximadamente -R$ 346,8 mil sobre R$ 18,9 mi comparáveis, 614 itens); os 10 maiores = 46,9% do gasto; 258 itens de fornecedor único (R$ 3,58 mi). ~6 s.
FazerAbra o item óleo protetivo 1010289.
Resultado esperadoAparece em "Provável erro de unidade" (R$ 652 para R$ 34), fora do índice e do impacto.
FazerBloco de cotação, 3º tri.
Resultado esperadoAproximadamente 2.801 itens cotados; 67,5% com uma oferta só; economia aproximadamente R$ 401 mil sobre a média (11,5%); 151 itens em que o vencedor não era o mais barato (aproximadamente R$ 74,8 mil acima).
FazerClique num fornecedor.
Resultado esperadoLista os itens comprados dele com preço atual e o anterior de todos os fornecedores.
Como conferirItens de almoxarifado_compra_produto com ac.idemitente = <fornecedor>.
FazerNo fjfrigo_concepcion, jun-ago/2025, moeda U$.
Resultado esperadoGasto aproximadamente U$ 6,75 mi; 99,9% dos itens cotados com uma oferta só.
FazerEscolha moeda de conversão sem cotação nos dias.
Resultado esperadoAviso "N item(ns) de compra sem cotação de <moeda> no dia: ficam com valor zero".
Como conferirSELECT data FROM moeda_valores WHERE idmoeda = <moeda> AND data = '<dia>'
FazerUsuário com uma filial; filial de fora via API.
Resultado esperadoSó as dele; "A filial N não está entre as filiais do usuário.".
Menu: Relatórios › 8-Indicadores › A-Spread Boi × Carne e Rendimento (38A) · Doc técnico: validacoes-gado-spread-387-38a.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), foto da produção das plantas fora do alcance, script system_config_valor_string_1000.sql no .fj da próxima versão
central (BMG). Referências de 03-04/10/2026.38A (permissão copiada da 3211; antes não pedia permissão). Depende da foto da produção (383) e da lista de produtos intermediários (muda 383, 38A e 38F juntos).system_config_valor_string_1000.sql entra no script 2026.046 (verificar se a base já o recebeu); foto da produção das plantas fora do alcance.FazerCom um usuário de grupo que tem a opção 38A (permissão copiada de 3211) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38A nem a 3211.
Resultado esperadoO primeiro usuário vê o item 38A e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 38A em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38A','3211'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38A','3211') ORDER BY idgrupo. Os grupos que entram em 38A devem ser os mesmos de 3211 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerSet/2026, todas as plantas.
Resultado esperadoValor da produção Tarauacá R$ 1.600.350,71 e Iporã R$ 22.987.144,48, iguais à conta avulsa (produção × preço do mês); Iporã 2,63 mi kg sem os intermediários (2,95 mi com eles).
Fazer1º tri/2026.
Resultado esperadoIporã: carne aproximadamente 96,2% (sobre a carcaça), custo 9,86/kg, valor 12,92/kg, spread 3,07/kg (31,1%); Grão Pará: carne aproximadamente 83,6%, spread 2,15/kg (21,8%); Tarauacá: 285,92/@ × 370,53/@, spread 84,61/@ (29,6%). ~5-6 s.
Como conferirCompare o custo do gado com o caso 1 do 387 e o valor com o caso do setembro.
FazerEscolha uma planta que abateu e cuja indústria não responde (ex.: Colorado).
Resultado esperadoSó custo do gado; fora do total; aviso "Abateram sem produção na foto".
Como conferirSELECT COUNT(*) FROM producao_industria WHERE idfilial = 10 AND tipo = 'PRODUCAO'
FazerVisão Mix, Iporã.
Resultado esperadoProduto a produto: kg produzido, rendimento, participação, preço/kg, valor, kg sem preço; farinha de carne e osso sem preço. Produtos com "Kg sem preço" maior que 0 não têm venda no período.
FazerRetire um produto "MP" da lista de intermediários e regere.
Resultado esperadoRendimento de carne e kg produzido da planta sobem; valor e spread também (se o produto tiver preço), e o 383 e o 38F mudam junto.
FazerGere com um usuário que não alcança os CDs.
Resultado esperadoPreço médio de venda e spread mudam (usa só as filiais dele).
Menu: Relatórios › 8-Indicadores › B-Prontidão do Fechamento Contábil (38B) · Doc técnico: validacoes-bi-contabil-38b-38g-38k.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
fjfrigo_concepcion (ano 2026) para ver todos os alertas; troque :ini e :fim (aaaa-mm-dd, fim exclusivo) e os ids nas consultas.251; antes valia a 251). Teste de tela pendente: os painéis só foram vistos numa prévia temporária com o JSON real.FazerCom um usuário de grupo que tem a opção 38B (permissão copiada de 251) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38B nem a 251.
Resultado esperadoO primeiro usuário vê o item 38B e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 251 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38B em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38B','251'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38B','251') ORDER BY idgrupo. Os grupos que entram em 38B devem ser os mesmos de 251 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 38B no ano e clique na célula "não fecham" de um mês.
Resultado esperadoO número vermelho = asientos com diferença acima da tolerância; a lista traz também os de arredondamento (marcados). Concepcion, 2026: 32 a 146 por mês (685 no ano) + 145 de arredondamento; em julho os 6 maiores são reversões de provisão de exportação (fvxr) só com crédito.
Como conferirConsulta B1 do doc técnico para o mesmo mês.
FazerCompare a linha "Mês fechado" com a 421 (Fechamento) e parametros.
Resultado esperadoTODAS quando udf_cont >= último dia em todas as filiais do recorte. Em concepcion/2026 tudo aberto (udf_cont = 31/12/2025 nas 34 filiais).
Como conferirSELECT idfilial, udf_cont FROM parametros ORDER BY udf_cont
FazerVeja a linha do 25E e a tabela "Módulos no mês" de um mês passado.
Resultado esperadoRodada = primeira inclusão do cie do último dia; "N depois" = incluídos depois. Sigla com automáticos menor que metade da média dos 3 meses anteriores marcada como queda.
FazerTroque "Todas" por uma filial; compare os totais.
Resultado esperadoO asiento entra se alguma linha for da filial; asiento entre filiais não aparece como "não fecha" por causa de uma linha só. Filial fora do acesso: mensagem.
Menu: Relatórios › 8-Indicadores › C-Crédito e Inadimplência (38C) · Doc técnico: validacoes-bi-financeiro-38c-38h-38j.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
38C (permissão copiada da 316A; antes valia a 316A). Números de referência em central em 03/10/2026, usuário 100826, todas as filiais: carteira 2.017.712.677,75 (31.323 títulos, 1.185 clientes); vencido 97,2%; 35 clientes acima do limite; 456 sem limite (293 mi); 14 clientes compraram em atraso em 30 dias (28,7 mi).FazerCom um usuário de grupo que tem a opção 38C (permissão copiada de 316A) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38C nem a 316A.
Resultado esperadoO primeiro usuário vê o item 38C e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 316A (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38C em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38C','316A'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38C','316A') ORDER BY idgrupo. Os grupos que entram em 38C devem ser os mesmos de 316A (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 38C com a data-base de hoje e todas as filiais; abra o Aging 316A, tipo Receber, mesma data.
Resultado esperado"Carteira" = total do 316A em moeda local; faixas iguais.
FazerRepita com a data-base de um mês atrás; depois com amanhã.
Resultado esperadoValores mudam (baixas posteriores não contam). O 38C mostra o aviso do score de hoje. Data futura: erro "A data-base não pode ser futura.".
FazerNo 38C compare o último ponto da tendência com a carteira vencida.
Resultado esperadoA tendência é menor que a carteira do cartão quando há títulos vencidos há mais de 1 ano; a diferença é o "Vencido > 1 ano".
FazerEscolha um cliente da lista "Acima do limite" e abra o emitente (15) e o 2332.
Resultado esperadoPendência + pedidos em aberto maior que o limite cadastrado. Cliente sem limite aparece só em "sem limite". Em "Vendas a quem estava em atraso": o cliente tem título vencido em aberto cujo vencimento + tolerância é anterior à última venda dos últimos N dias. O score e o limite usam o codicfj e os pedidos da filial da sessão.
Menu: Relatórios › 8-Indicadores › D-Acuracidade do Inventário do Almoxarifado (38D) · Doc técnico: validacoes-painel-almoxarifado-385-38d-38e.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
central (view almoxarifado_movimentacao_analitica) e fjfrigo_concepcion. Referências de 03-04/10/2026.38D (permissão copiada da 3331; antes não pedia permissão). Teste de tela pendente.FazerCom um usuário de grupo que tem a opção 38D (permissão copiada de 3331) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38D nem a 3331.
Resultado esperadoO primeiro usuário vê o item 38D e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 38D em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38D','3331'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38D','3331') ORDER BY idgrupo. Os grupos que entram em 38D devem ser os mesmos de 3331 (cópia do script). A API não confere a opção: o corte é só do menu.
Fazer01/10/2025 a 30/09/2026, todas as filiais.
Resultado esperadoSobras aproximadamente R$ 6.919.324,81; faltas aproximadamente R$ 10.154.798,92; líquido aproximadamente -R$ 3,24 mi; bruto aproximadamente R$ 17,07 mi; 6.337 itens ajustados; 1.046 recorrentes; 7.811 linhas por 2 usuários. Juruena (12): R$ 2,0 mi de sobra e R$ 4,5 mi de falta, 479 recorrentes. Embalagens aproximadamente R$ 12 mi do bruto. Os valores usam o custo do 385 (agora sem compra de cabeçalho excluído).
FazerCompare o estoque na data final e o custo de um item cuja última entrada está sob cabeçalho excluído.
Resultado esperadoO custo não usa o cabeçalho excluído; o estoque na data final do 38D (aproximadamente R$ 28,0 mi em 30/09) vem da mesma apuração do 385.
FazerMesmo caso: % dos itens com saldo.
Resultado esperadoEstoque na data final aproximadamente R$ 28,0 mi; ajuste bruto aproximadamente 61% do estoque; itens ajustados aproximadamente 69,6% dos 9.108 itens com saldo. Atenção: o percentual pode passar de 100% se itens ajustados hoje com saldo zero inflarem o numerador (achado conhecido).
FazerVeja o quadro dos lançamentos manuais.
Resultado esperadoPor operação e justificativa, fora da taxa; muitos sem justificativa.
Como conferirSELECT tipo_operacao, COUNT(*), SUM(COALESCE(NULLIF(valor_ml,0), valor)) FROM almoxarifado_lancamentos_manuais WHERE excluido <> 'T' AND data >= '2025-10-01' GROUP BY 1
FazerAbra no fjfrigo_concepcion.
Resultado esperadoSem nenhum 11187/11188 (sobras e faltas zeradas); estoque aproximadamente 42,7 bi G$, 9.642 itens com saldo, 10 negativos (~38 s).
Menu: Relatórios › 8-Indicadores › E-Transferências entre Filiais do Almoxarifado (38E) · Doc técnico: validacoes-painel-almoxarifado-385-38d-38e.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
central e fjfrigo_concepcion. O 38E depende do build do tenant para ligar saída e entrada.38E (permissão copiada da 3331; antes não pedia permissão). Teste de tela pendente.FazerCom um usuário de grupo que tem a opção 38E (permissão copiada de 3331) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38E nem a 3331.
Resultado esperadoO primeiro usuário vê o item 38E e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 38E em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38E','3331'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38E','3331') ORDER BY idgrupo. Os grupos que entram em 38E devem ser os mesmos de 3331 (cópia do script). A API não confere a opção: o corte é só do menu.
Fazer01/10/2025 a 30/09/2026 no central.
Resultado esperadoCerca de 2,5 mil saídas (R$ aproximadamente 59,8 mi); entrada localizada em aproximadamente 50,5%; trânsito mediano 5 dias (p90 20); aproximadamente R$ 20,9 mi sem entrada; 1.226 não localizadas (1.213 sem entrada + 13 sem destino); compra evitável aproximadamente R$ 20,3 mi (9,5% das compras). Entre Rios para Margarida: 694 saídas, 457 sem entrada.
FazerCompare o custo/saldo de uma transferência cujo item tem entrada de compra sob cabeçalho excluído.
Resultado esperadoO custo usa a apuração do 385 já sem o cabeçalho excluído; o valor das saídas dessas filiais muda ligeiramente em relação à versão anterior.
FazerFiltre origem, destino e situação.
Resultado esperadoLista as sem entrada e as sem destino; limpar filtros volta; mostra "N de T" e total filtrado; o XLS traz todas.
Fazerfjfrigo_concepcion, 09/2024 a 08/2025.
Resultado esperado787 saídas, 37,1 bi G$, 100% com entrada (ligação direta), trânsito mediano 1 dia; compra evitável aproximadamente 19,1 bi G$ (9,1%). ~38 s.
Como conferiralmoxarifado_compra.idalmoxarifado_saida preenchido.
FazerEscolha um período de 18 meses.
Resultado esperadoAviso das compras com mais de 12 meses fora da compra evitável.
FazerEntre com usuário que não alcança a filial de origem mas recebe a transferência.
Resultado esperadoA saída aparece (desenho "enviou OU recebeu"); não é defeito.
Menu: Relatórios › 8-Indicadores › F-Estoque de Acabado (38F) · Doc técnico: validacoes-estoque-acabado-38f.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), causa do saldo negativo do ERP nas plantas a investigar, indústrias fora do alcance desta máquina
central (BMG): números de set/2026 (apuração de 03/10/2026, 01/09 a 30/09). As plantas só se conferem a partir de uma máquina que alcance os bancos de indústria (scratchpad/ConsultaIndustria.java).38F (permissão copiada da 3233; antes não pedia permissão). CUSTO_KG_FILIAIS_FORA do central: 12,14,16,17,27,51,52,56,64 (sugerido ao usuário acrescentar 58, 61, 62, 65; não gravado).FazerCom um usuário de grupo que tem a opção 38F (permissão copiada de 3233) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38F nem a 3233.
Resultado esperadoO primeiro usuário vê o item 38F e abre a janela; o segundo não vê o item no menu. Antes do script o painel não pedia permissão nenhuma (aparecia para qualquer usuário com o menu). Em base que ainda não rodou o script 2026.046 (sem a linha 38F em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38F','3233'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38F','3233') ORDER BY idgrupo. Os grupos que entram em 38F devem ser os mesmos de 3233 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerPor filial, 01/09-30/09/2026, todas as filiais.
Resultado esperadoIporã (LEGADO): 1.663.822 kg, 67.635 caixas, saída 78.950 kg/dia, cobertura 21,1, idade 40,7, vencido 35.850 kg. Grão Pará (LEGADO): 236.596 kg, 13.656 caixas, saída 16.727, cobertura 14,1, idade 16,7, vencido 0. Tarauacá (WEB): 26.821 kg, 517 caixas, 2.627, 10,2, 48,5, 9.000. Nova Londrina (WEB): 20.936 kg, 487 caixas, 20, 1.047, 33,9, 378. Maringá (WEB): 13.127 kg, 768 caixas, 3.176, 4,1, 57,6, 74.
Como conferirBanco da indústria da filial: LEGADO soma ind_caixaproducao/ind_caixamovimentacao; WEB soma estoque_movimentacao por estoque.
FazerRode no central (180 dias até 04/10/2026) e veja quais filiais não-planta aparecem.
Resultado esperadoEntra a filial que não é planta com banco de indústria se teve item de carne nos 180 dias em tipo de natureza venda* de saída ou transf_saida (tipo sem natureza continua contando; item excluído é ignorado). Saem Cambé 2 e Jandira 59 (só cancelamento de compra); Venceslau 50 continua (planta com banco de indústria); continuam por transferência Rio de Janeiro 15, Fab. de Ração Iporã 58, Margarida 61, Aurora Iporã 62, Granja Acácia 65. No concepcion nada muda (os tipos das lojas não têm natureza).
Como conferirSQL no doc técnico (caso 7), agora com tipo_natop LIKE 'venda%' ou transf_saida e fvp.excluido.
FazerAbra o mesmo filtro (mesmas filiais pedidas) com dois usuários de alcances diferentes, um logo após o outro (menos de 15 min).
Resultado esperadoCada usuário tem a sua apuração (a chave do cache leva também as filiais permitidas do usuário): o preço de venda e o valor do segundo usuário não herdam o do primeiro. Mesmo filtro duas vezes seguidas pelo mesmo usuário: a segunda vem na hora ("apurado em"); Atualizar refaz (~75 s).
FazerMarque no filtro uma filial listada em CUSTO_KG_FILIAIS_FORA.
Resultado esperadoNão aparece, e agora há aviso "fora do estoque de acabado (… CUSTO_KG_FILIAIS_FORA)" (antes saía calada).
FazerVeja a idade das plantas de Iporã.
Resultado esperado66% do kg com até 30 dias; 6% acima de 180.
Como conferirFaixas pela dataproducao da caixa.
FazerVisão por produto, Iporã, só parados.
Resultado esperadoTripa suína salgada MY PORK (100526) com aproximadamente 100,7 t, idade média aproximadamente 278 dias, aproximadamente 33,8 t vencidas.
FazerEscolha uma filial ERP com saldo negativo grande (ex.: São Gabriel, 64).
Resultado esperadoMarcada "ERP inconsistente" e fora dos totais; aviso nomeando a filial.
FazerIbiúna e São José.
Resultado esperado"ERP sem giro": kg > 1 t com cobertura > 365 dias (Ibiúna: 7,0 mi kg a 21 kg/dia).
FazerEscolha uma planta com a indústria fora do alcance (Colorado).
Resultado esperadoAviso "Indústria de 10 - ... fora do alcance (...): vai pelo saldo do ERP."; a filial sai pelo ERP.
FazerEscolha 93 dias.
Resultado esperado"O período do estoque de acabado vai até 92 dias.".
FazerVeja o valor a preço de venda de um produto; depois com usuário de poucas filiais.
Resultado esperadokg × preço médio de venda dos 90 dias até a data final (filiais do usuário); o usuário com poucas filiais tem preço e valor diferentes (desenho).
FazerVisão dia a dia de uma planta.
Resultado esperadoSaldo do último dia = kg da posição; nenhum dia negativo.
Menu: Relatórios › 8-Indicadores › G-Controle dos Lançamentos Contábeis (38G) · Doc técnico: validacoes-bi-contabil-38b-38g-38k.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
fjfrigo_concepcion (ano 2026) para ver todos os alertas; troque :ini e :fim (aaaa-mm-dd, fim exclusivo) e os ids nas consultas.251; antes valia a 251). Teste de tela pendente: os painéis só foram vistos numa prévia temporária com o JSON real.FazerCom um usuário de grupo que tem a opção 38G (permissão copiada de 251) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38G nem a 251.
Resultado esperadoO primeiro usuário vê o item 38G e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 251 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38G em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38G','251'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38G','251') ORDER BY idgrupo. Os grupos que entram em 38G devem ser os mesmos de 251 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerEscolha o período de um mês em que a U.D.F. foi trocada. Abra os alertas "Reaberturas" e "Em mês já fechado".
Resultado esperado"Reabertura" mostra de que data para qual, quanto tempo e quantos manuais; "em mês já fechado" lista o manual com data menor ou igual à maior U.D.F. do log naquela hora.
Como conferirSELECT data, udf, idfilial, idusuario FROM udf_log ORDER BY data DESC LIMIT 20 (o udf_cont fecha no meio do mês: 985 de 3.521 gravações do udf_log no concepcion).
FazerNum mês cuja U.D.F. contábil ficou no meio do mês (ex.: 15), inclua (ou ache) lançamentos automáticos com data até a U.D.F. incluídos depois do fechamento.
Resultado esperadoO alerta MES_JA_FECHADO automático compara a data do lançamento com a U.D.F. (como o manual) e só conta o que tem data menor ou igual à U.D.F. Antes comparava o último dia do mês e não alertava no mês parcialmente fechado. Referência no concepcion, inclusões de 2025-01 a 2026-06: de 15.270 alertas / 11,72 mi asientos para 16.183 / 12,75 mi (+913 / +1,02 mi). Jul-set/2026 e o central: iguais.
Como conferirA SQL agrupa por DATE(ca.data); compare com o udf_log do mês.
FazerSem informar o limite, veja o "sugerido"; informe um valor menor; veja "Manual excluído" e "Fora do horário".
Resultado esperadoLimite sugerido = p99 dos manuais do período (nulo com menos de 20). Valor maior ou igual a 10× o limite é alta. Excluído: asiento manual com data_exclusao no período. Fora do horário: antes das 6h, depois das 20h, sábado ou domingo.
FazerEm base sem o índice data_exclusao, período longo; se o banco estiver lento, veja o aviso.
Resultado esperadoPainel completo sem os excluídos + aviso; "Atualizar" tenta de novo (o resultado incompleto não fica em cache).
Menu: Relatórios › 8-Indicadores › H-Capital de Giro (38H) · Doc técnico: validacoes-bi-financeiro-38c-38h-38j.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar), estoque/PME quando a foto do 2392 tiver histórico
central. Referência de 03/10/2026: set/2026 PMR 14,3 e PMP 10,2 dias (médias de 12 meses 65,7 e 68,1); NCG em 03/10 -142,6 mi (receber 730,0 mi, pagar 872,6 mi); 1 dia de PMR = 2,0 mi, de PMP = 1,9 mi.38H (permissão copiada da 316B; antes valia a 316B). O estoque/PME espera a foto do 2392 ter histórico (não implementado).FazerCom um usuário de grupo que tem a opção 38H (permissão copiada de 316B) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38H nem a 316B.
Resultado esperadoO primeiro usuário vê o item 38H e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 316B (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38H em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38H','316B'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38H','316B') ORDER BY idgrupo. Os grupos que entram em 38H devem ser os mesmos de 316B (cópia do script). A API não confere a opção: o corte é só do menu.
FazerCompare PMR/PMP de um mês fechado com o 316B (mesmo mês, só faturamento).
Resultado esperadoPMR e PMP iguais; ciclo = PMR - PMP; NCG = receber - pagar do fim do mês. Mês sem baixa de um dos lados: ciclo vazio.
FazerNo 38H compare o receber do fim do mês com o do 38C.
Resultado esperadoOs saldos do 38H são menores que a carteira do 38C quando há títulos vencidos há mais de 1 ano (corte de 365 dias).
FazerRepita com data-base no passado e futura.
Resultado esperadoValores mudam; data futura recusa "A data-base não pode ser futura.".
Menu: Relatórios › 8-Indicadores › J-Endividamento (38J) · Doc técnico: validacoes-bi-financeiro-38c-38h-38j.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
central. Referência de 03/10/2026: 151 contratos; principal 386,0 mi, vencido 287,5 mi (74,5%); 89,9 mi em 12 meses; encargos 19,1 mi; FIDC 37,8%; CET médio 21,1% a.a.; caixa 2,72 mi; dívida líquida 383,3 mi.38J (permissão copiada da 316C; antes valia a 316C). O caixa e o score não seguem a data-base (avisos na tela).FazerCom um usuário de grupo que tem a opção 38J (permissão copiada de 316C) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38J nem a 316C.
Resultado esperadoO primeiro usuário vê o item 38J e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 316C (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38J em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38J','316C'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38J','316C') ORDER BY idgrupo. Os grupos que entram em 38J devem ser os mesmos de 316C (cópia do script). A API não confere a opção: o corte é só do menu.
FazerEscolha o maior contrato da tabela e confira o principal com o saldo dos títulos idtipo_parcela = 2.
Resultado esperadoPrincipal do contrato = soma do pendente das parcelas tipo 2 (captação) na data-base; encargos = parcelas 3 e 4; FIDC: tudo. Em central, 03/10/2026: contrato 1001632 (Caixa Econômica, CCE25/2313531) principal 35.555.555,52.
FazerAche contrato em moeda estrangeira; compare "original" e "convertido"; confira a dívida líquida contra o saldo do 388.
Resultado esperadoConvertido = original × última cotação até a data-base. Caixa do 38J = saldo agora do 388 (mesmas contas Banco, moeda local); dívida líquida = principal - caixa.
FazerAbra com um usuário de alcance parcial e compare o caixa com o 388 do mesmo usuário.
Resultado esperadoO caixa do 38J (que vem de fluxo.contas) passou a respeitar o alcance de filiais do usuário, como o 388 (antes somava a empresa inteira); os empréstimos já recortavam.
Como conferirMesmo recorte de contas do caso "Alcance de filiais" do 388.
FazerData-base de um mês atrás; depois amanhã.
Resultado esperadoValores mudam; o 38J mostra o aviso do caixa de hoje; data futura recusa "A data-base não pode ser futura.".
Menu: Relatórios › 8-Indicadores › K-Qualidade da Contabilização (38K) · Doc técnico: validacoes-bi-contabil-38b-38g-38k.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
fjfrigo_concepcion (ano 2026) para ver todos os alertas; troque :ini e :fim (aaaa-mm-dd, fim exclusivo) e os ids nas consultas.251; antes valia a 251). Teste de tela pendente: os painéis só foram vistos numa prévia temporária com o JSON real.FazerCom um usuário de grupo que tem a opção 38K (permissão copiada de 251) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38K nem a 251.
Resultado esperadoO primeiro usuário vê o item 38K e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 251 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38K em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38K','251'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38K','251') ORDER BY idgrupo. Os grupos que entram em 38K devem ser os mesmos de 251 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 38K do ano; confira janeiro (mês com maior prazo) e um módulo.
Resultado esperadoConcepcion, jan-ago/2026: 380.060 asientos, 98,4% automáticos; 4.980 mexidos; 1.063 digitados; prazo médio 12,8 dias; 11,1 versões por asiento. Janeiro bate com o 38B (1.549 de 57.600).
Como conferirConsulta do doc técnico (T8). ~38 s o ano.
Menu: Relatórios › 8-Indicadores › L-Resultado Cambial (38L) · Doc técnico: validacoes-bi-contabil-38l-38m-38n.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
fjfrigo_concepcion (2026). Agosto sem 25E (cópia de homologação parada); 25G só em julho.38L (permissão copiada da 251; antes valia a 251). ~25-30 s o ano, ~4 s o mês. Teste de tela pendente (visto em prévia).FazerCom um usuário de grupo que tem a opção 38L (permissão copiada de 251) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38L nem a 251.
Resultado esperadoO primeiro usuário vê o item 38L e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 251 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38L em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38L','251'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38L','251') ORDER BY idgrupo. Os grupos que entram em 38L devem ser os mesmos de 251 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 38L em 2026; clique em julho.
Resultado esperadoConcepcion, jul/2026: total do 25E +63,7 bi G$; por moeda U$ +82,66 bi (339 contas), R$ -18,17 bi (16), EUR -786 mi (6) = 63.704.305.372 (bate com o total do 25E). Maior conta: linha de crédito Agroganadera (+46,4 bi). Ano: +35,1 bi (não realizado +37,0, realizado -1,7, manual -237,6 mi).
Como conferirSQL da seção B do doc técnico, por mês e sigla (a sigla cie é o não realizado).
FazerTroque para uma filial que não é a do fechamento cambial.
Resultado esperadoNão realizado e redondeo do fechamento somem; o realizado dos módulos daquela filial continua.
Menu: Relatórios › 8-Indicadores › M-Indicadores do Balanço (38M) · Doc técnico: validacoes-bi-contabil-38l-38m-38n.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
fjfrigo_concepcion (2026), conferido contra o Balance General (359). ~63 s.38M (permissão copiada da 251; antes valia a 251). Decisão pendente: padrão de BALANCO_REALIZAVEL_LP (proposta 1.2.04,1.2.06).FazerCom um usuário de grupo que tem a opção 38M (permissão copiada de 251) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38M nem a 251.
Resultado esperadoO primeiro usuário vê o item 38M e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 251 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38M em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38M','251'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38M','251') ORDER BY idgrupo. Os grupos que entram em 38M devem ser os mesmos de 251 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 38M; clique em março e em agosto.
Resultado esperadoDiferença do balanço = a do rodapé do 359 do mesmo mês: concepcion, mar/2026 0 (local e IFRS); ago/2026 -65.889.852.529 G$ e US$ 32.428,58. Jan-mai fecham. As 58 de 59 linhas até o 3º nível iguais ao 359 (só a 4.2, sem sintética, não é impressa pelo 359).
Como conferirBalance General (359), 01/01 até o fim do mês, plano inteiro, moeda local e IFRS.
FazerEm Config. Globais troque BALANCO_REALIZAVEL_LP para 1.2.04,1.2.06; reabra (Atualizar).
Resultado esperadoA liquidez geral muda; as demais não. Prefixo com letra (ex.: 1.1.A) recusa com o nome da chave.
FazerCom o botão IFRS, compare com o 359 em dólar.
Resultado esperadoIguais ao centavo (concepcion: fecha até março; em agosto sobra US$ 32.428,58, o mesmo do rodapé do 359). Em base sem IFRS o botão não aparece.
FazerCom o servidor sob carga, repita a abertura do 38M.
Resultado esperadoOu o painel sai completo, ou falha com erro; nunca sai com a conta de redondeo IFRS (5.4.01.086) somada em despesas administrativas (efeito visto em 03/10: 5.793 G$ em agosto, 6,6 mi no ano).
Menu: Relatórios › 8-Indicadores › N-DRE Contábil (38N) · Doc técnico: validacoes-bi-contabil-38l-38m-38n.html · Ajuda: botão ? da janela
Status no status-porte.csv: PARCIAL · falta: teste de tela (backend precisa reiniciar)
fjfrigo_concepcion (2026), conferido contra o 359. ~200-250 s com o servidor ocupado (lê dois anos).38N (permissão copiada da 251; antes valia a 251). As chaves DRE_* e BALANCO_RESULTADO devem cobrir o mesmo universo.FazerCom um usuário de grupo que tem a opção 38N (permissão copiada de 251) abra o menu Relatórios › 8-Indicadores. Depois entre com um usuário de grupo sem a opção 38N nem a 251.
Resultado esperadoO primeiro usuário vê o item 38N e abre a janela; o segundo não vê o item no menu. Antes do script valia a opção 251 (regra antiga, antesDaOpcao). Em base que ainda não rodou o script 2026.046 (sem a linha 38N em opcao_sistema) vale a regra antiga e nenhum painel some.
Como conferirSELECT idopcao, descricao, sem_permissao FROM opcao_sistema WHERE idopcao IN ('38N','251'); depois SELECT idgrupo, permissao_opcao_entrar FROM grupo_permissao WHERE idopcao IN ('38N','251') ORDER BY idgrupo. Os grupos que entram em 38N devem ser os mesmos de 251 (cópia do script). A API não confere a opção: o corte é só do menu.
FazerAbra o 38N; compare o resultado do mês e as contas de 3º nível com o 359 daquele mês (01/mês ao fim).
Resultado esperadoConcepcion, ago/2026: 10 de 10 contas iguais ao guarani; resultado do mês 707.714.036 = "ingreso - egreso" do 359; acumulado até agosto -1.916.637.051.234 = resultado do exercício do 38M em 31/08.
FazerAbra as contas da linha Deduções e da Receita bruta.
Resultado esperadoConta 4.1.03.x só em Deduções; nenhuma conta em duas linhas; a soma das linhas de valor + não classificadas = resultado líquido.
FazerCom o botão IFRS, compare com o 359 em dólar.
Resultado esperadoIguais ao centavo; em base sem IFRS o botão não aparece.
FazerCom o servidor sob carga, repita a abertura do 38N.
Resultado esperadoOu o painel sai completo, ou falha com erro; nunca com a conta de redondeo IFRS somada em despesas administrativas.