FJFrigo · Contabilidade · menu251 e menu252

Validações da Contabilidade

As duas telas que escrevem na mesma tabela: o asiento manual (251), lançado à mão, e a sincronização (252), que traz em lote o que os outros módulos geraram. Com a mensagem exata, a condição que a dispara e o que resolve.

Telas: Lançamentos Contábeis (251) e Sincronização (252) Trava comum: a U.D.F. contábil Sem regra de acesso nomeada

Bloqueia

Recusa e não grava. statuscode 400 com a frase abaixo.

Aviso

Não impede nada — é comportamento que surpreende quem espera outra coisa.

Um asiento são várias linhas

Um numelan agrupa as linhas que precisam fechar débito com crédito. É essa conferência que domina o 251.

A U.D.F. contábil é uma só

Ela mora em parametros.udf_cont — vale para o tenant inteiro, não por filial. Ninguém escapa dela, nem o master.

As duas telas escrevem na mesma tabela — contabilidade_analitico, com 154 milhões de linhas. O 251 grava uma linha por vez, à mão, e marca manual = 'T'; o 252 grava milhares por rodada, a partir do que as telas de lançamento já produziram.

Por isso o mesmo asiento pode ter as duas origens: alguém sincroniza e depois acerta uma linha no 251. Isso não é defeito, e é o que explica um asiento aparecer como "misto".

A

As duas telas e a divisão entre elas

Para quem atende

Metade dos chamados de contabilidade é ir à tela errada. O critério é simples: se o lançamento nasceu de um documento (uma compra, uma venda, uma baixa), quem o contabiliza é o 252. Se ele não tem documento por trás, é o 251.

251 — Lançamentos Contábeis252 — Sincronização
Unidade Um asiento, digitado linha a linha Um período e um ou mais módulos
Origem Ninguém — é lançamento manual Os documentos das telas de lançamento
Marca manual = 'T', e a coluna tabela fica vazia manual = 'F', com a sigla do módulo em tabela
Refazer Alterar o asiento Rodar de novo: ela apaga e regrava o que já tinha feito

O filtro "Manuais" do 251 não é manual = 'T'. Ele testa a coluna tabela estar vazia ou nula — e não existe tabela = 'man' no banco. É por isso que a tela grava nulo ali: gravar uma sigla deixaria o lançamento fora do próprio filtro que deveria encontrá-lo.

E a listagem do 251 não é só dos manuais: ela mostra a tabela inteira, de todos os módulos. Quem restringe é o combo Tabela, que nasce em "Todas".

B

251 — o asiento tem de fechar

A recusa mais comum da tela

Débito e crédito precisam dar o mesmo valor. O que confunde é em qual moeda: depende do tipo de balance escolhido, e um asiento pode fechar em guarani e não fechar em dólar.

Bloqueia

Debito e credito nao fecham em moeda local: debito 1250000.00, credito 1249999.00. Use "Recalcular diferenca cambial" para gerar a linha de fechamento.

QuandoOs dois lados, convertidos para a moeda local, não batem. Os valores vêm na mensagem, com duas casas.

A saída está na fraseO botão Recalcular diferença cambial gera a linha que falta, com a mesma conta e o mesmo histórico que a sincronização usaria. Não é preciso rodar o fechamento (25F) só para isso.

Cuidado ao conferir na mãoUm asiento com linhas em moedas diferentes pode somar certo na moeda de cada linha e ainda assim não fechar depois de convertido — a conversão arredonda linha a linha.

Todos
Bloqueia

Debito e credito nao fecham em IFRS: debito 180.00, credito 179.97.

QuandoO lado IFRS (o valor em dólar) não fecha. Ele é conferido além do lado principal, em todos os tipos de balance menos o Local.

Por que existeSem essa conferência, o asiento sairia torto em IFRS e alguém teria de rodar o 25F depois só para reequilibrá-lo.

Todos
Bloqueia

Debito e credito nao fecham na moeda do lancamento: debito 500.00, credito 480.00.

QuandoSó no tipo de balance IFRS (o "Solo IFRS"): ali a conferência é na moeda em que a linha foi lançada, não na local.

Todos

O tipo de balance decide o que é conferido

TipoConfere o quêParticularidade
TodosMoeda local e IFRSO padrão
IFRSA moeda do lançamento e IFRSÚnico que não confere pela moeda local
LocalSó a moeda localZera o valor em dólar ao gravar — por isso não há lado IFRS a fechar
DiárioMoeda local e IFRS—
Balancete IFRSNadaÉ o único que grava sem fechar
Balancete localMoeda local e IFRS—

O valor convertido nunca vem da tela. O servidor refaz a conversão de cada linha a partir do valor original e do câmbio, e é sobre ela que a conferência roda — quem lança não escolhe o próprio convertido. É a mesma decisão do desconto Suframa na compra de carne.

A comparação tolera centavos: os dois lados são arredondados em duas casas antes de comparar, como no sistema antigo.

C

251 — período fechado

parametros.udf_cont

A U.D.F. contábil trava gravar, excluir e conferir. Ela é diferente das outras duas do sistema, e confundi-las é a causa mais comum de "mas no título passou".

Bloqueia

Data ja fechada na contabilidade (UDF 2025-12-31).

QuandoA data do asiento é menor ou igual à U.D.F. contábil. Vale ao gravar, ao excluir e ao conferir.

Conferirparametros.udf_cont. Ela é uma só para o tenant — ao contrário de parametros.udf e parametros.udf_fat, que são por filial.

Sem saídaNão há permissão, token ou grupo que passe por cima. Reabrir o período é decisão da contabilidade.

Todos

As três U.D.F. do sistema

ColunaOnde moraTrava o quê
parametros.udf_contTenantEsta tela, a sincronização e os fechamentos
parametros.udfFilialTítulos, lançamentos bancários, compras, almoxarifado — a "U.D.F." da tela 421
parametros.udf_fatFilialAs telas de faturamento (pedido, venda, compras)
D

251 — numeração, conferir e excluir

O ciclo do asiento
Bloqueia

Sem numero de asiento para o ano 2026.

QuandoO contador de asientos daquele ano não devolveu número. É cadastro — a tabela numero_asiento tem uma linha por exercício, e ela é criada sozinha na primeira gravação do ano.

Todos
Aviso

O número do asiento reinicia a cada exercício

ConsequênciaO mesmo número existe em anos diferentes. Por isso toda busca e toda ação desta tela levam o número e a data juntos — pedir só o número acharia o asiento do ano errado.

Ao abrir chamadoInforme sempre o ano junto com o número.

Todos
Aviso

"Conferir" é um alternador: o mesmo botão confere e desconfere

ComportamentoAsiento sem conferência recebe quem conferiu e a hora; asiento já conferido tem os dois limpos. A tela avisa qual dos dois aconteceu.

Por que importaAsiento conferido é o que a sincronização (252) não regrava — desconferir é o caminho para deixar o 252 refazer aquele documento.

O período fechado trava aqui tambémConferir é uma escrita como as outras.

Todos
Aviso

O modo "Borrado" do filtro inverte a busca

ComportamentoEscolhendo Borrado no tipo de data, a listagem passa a mostrar só os excluídos. É a única forma de vê-los.

ArmadilhaO tipo de data não escolhe só uma coluna: ele também decide contra qual usuário o filtro de usuário compara — quem incluiu, alterou, excluiu ou conferiu.

Todos
E

252 — o recorte da rodada

Antes de qualquer módulo rodar

Seis conferências no período, todas antes de ler uma linha sequer. Elas existem porque uma rodada lê o movimento inteiro do período em memória — um recorte grande demais não fica lento, não termina.

MensagemQuando
Informe o período.Falta a data inicial ou a final
Data final menor que a inicial.As duas invertidas
Data inicial anterior a 2015-03-31 — período fora do alcance desta rotina.Período antigo demais
Período já fechado pela contabilidade (até 2025-12-31).A data inicial é menor ou igual à U.D.F. contábil
O período tem de ficar dentro do mesmo ano — a numeração do asiento reinicia a cada exercício.O período atravessa o réveillon
Intervalo maior que 31 dias.Mais de um mês de uma vez
Bloqueia

O período tem de ficar dentro do mesmo ano — a numeração do asiento reinicia a cada exercício.

Por queO contador de asiento é por ano. Um período de dezembro a janeiro produziria números do exercício errado.

SairDuas rodadas: uma até 31/12 e outra a partir de 01/01.

Todos

Simular não escreve nada e é o modo certo para conferir antes de valer. Nele o sistema ignora de propósito duas travas — o mês fechado e o asiento já conferido —, porque as duas protegem contra reescrever, e a simulação não reescreve. Sem isso, simular um mês fechado (que é justamente o que se quer conferir) devolveria zero asientos.

Uma rodada REAL contamina a comparação. Se alguém rodou o 252 valendo e depois sincronizou o mesmo período pelo sistema antigo, os dois asientos convivem e a comparação acusa diferença onde não há. Antes de investigar divergência de um módulo, confira no histórico de rodadas se houve rodada real naquele período.

F

252 — o que derruba a rodada

Erros de dado, não de recorte

Estas aparecem durante a rodada e trazem qual documento entre colchetes — módulo, documento e id. É por ali que se acha o lançamento culpado.

Bloqueia

Sem valor de câmbio, ou a cotação ainda não foi autorizada pela contabilidade [fcc 001-001-0000055 id 1002345] — confira o lançamento de cotação da moeda 112 em 2026-08-14.

QuandoA linha não tem câmbio, ou a cotação daquela moeda naquela data não está cadastrada.

ConferirCadastro de cotação da moeda na data que a mensagem informa. Atenção: em vários países a cotação usada é a do dia anterior, então a data da mensagem já é a certa a procurar.

Todos
Bloqueia

Câmbio deve ser 1 na moeda local, e veio 6675.00 [fv 000038988 id 100534874].

Câmbio com valor improvável (99999.00) [em 030820262442 id 10015444].

QuandoDuas conferências de sanidade sobre o câmbio da linha. A primeira pega moeda local com câmbio de moeda estrangeira; a segunda, câmbio absurdo.

Por que existemUm câmbio errado não derruba nada sozinho: ele produz um asiento que fecha e está com o valor errado. Barrar na hora é mais barato que achar depois.

Todos
Bloqueia

Sem número de conta sintética para criar a conta de …

Sem nome de conta — não é possível criar a conta …

QuandoA sincronização precisa de uma conta analítica que ainda não existe e vai criá-la sob uma sintética — mas a sintética não tem número, ou falta o nome.

ConferirPlano de contas (1A1): a conta sintética indicada no parâmetro da filial.

Todos
Bloqueia

Número de asiento inválido — a sincronização não pode gravar sem ele.

Não foi possível obter o número de asiento do ano 2026.

QuandoFalha no contador de asientos. É a mesma tabela do 251 — numero_asiento, uma linha por ano.

Todos
G

252 — os pulados, que não são erro

A lista que a rodada devolve

Um documento pulado não derruba a rodada: ela segue e o lista no fim. E a lista vem em dois baldes, porque eles se resolvem em lugares diferentes.

BaldeO que éQuem resolve
Falta parametrização aberto Falta uma conta contábil em algum cadastro — subgrupo, centro de custo, parâmetro da filial Quem cuida do plano de contas
Outros pulados recolhido O problema é do lançamento: sem data de emissão, sem tipo de título, valor zerado Quem lançou, na tela de origem
Aviso

Os pulados vêm agrupados por motivo, com a contagem e três exemplos

Por quêUma conta faltando para 400 documentos gerava 400 linhas idênticas. O botão Copiar continua levando o detalhe documento a documento.

A mensagem diz qual cadastroUm "sem conta de crédito" genérico viraria uma linha só para dezenas de cadastros diferentes — por isso cada módulo nomeia o seu: o subgrupo, o centro de custo do produto, o parâmetro da filial. E leva nome e id, porque por nome se acha mais de um.

Todos
Aviso

Módulo indisponível: a tabela de origem não existe neste banco

QuandoAlguns módulos são de tenants que têm recursos que este banco não tem. Em vez de derrubar a rodada, eles se declaram indisponíveis.

Não é defeitoÉ o esperado — o schema difere por cliente.

Todos

O progresso é uma fração de DOCUMENTOS, não de linhas — e documento pulado não entra no numerador, então a contagem para um pouco abaixo do total. É indicador de andamento; a conta exata do que ficou de fora é a lista de pulados.

O histórico das rodadas fica 24 horas, gravado no banco do próprio cliente — não na sessão. Uma rodada de um mês leva horas, e quem confere o resultado não é necessariamente quem a disparou.

H

Permissões — e a auditoria externa

Manutenção › Grupos de Usuário (442)

Nenhuma das duas telas usa regra de acesso nomeada — não há ASIENTO_* nem nada parecido para conceder. O acesso é o do menu, e há um tipo de grupo que muda o que se vê.

Aviso

Auditoria externa (tipo de grupo AEX) vê o 251 diferente

O que mudaAs colunas de conta e de histórico passam a vir das espelho — ct_plano_conta.descricao_c e contabilidade_analitico.historico_c —, e o campo que alimenta a espelho some do formulário.

Cuidado com o nomeO que o sistema antigo chama Histórico C é o campo Histórico comum da tela nova. São o mesmo dado.

Conferirgrupo_usuario.tipo_grupo. Medido: nenhum grupo está como AEX no banco de homologação — hoje, neste tenant, ninguém cai nesse ramo.

PermissãoNão é regra a conceder: é o tipo do grupo, em Manutenção › Grupos de Usuário (442).

Todos

O que protege estas telas não é permissão — é a U.D.F. Quem tem a opção no menu grava, e quem não tem não vê a tela. A trava real é o período fechado, e ela não tem exceção para ninguém.

I

Como o erro chega na tela

Para o QA reproduzir e reportar

Toda resposta sai com HTTP 200; quem diz o que aconteceu é o statuscode no corpo — 400 para as recusas deste documento.

Uma resposta que engana: 503 com "O banco está ocupado — provavelmente um restore ou manutenção em andamento". Numa tela que lê contabilidade_analitico, isso costuma ser um restore segurando a tabela, não defeito do sistema.

Ao abrir chamado, copie o código de ocorrência de 8 caracteres dos erros inesperados — é com ele que o suporte acha a linha certa no log entre dezenas de clientes.

E informe o ANO junto com o número do asiento: o número reinicia a cada exercício.

J

Diferenças em relação ao sistema antigo

Esperadas — não abrir chamado

Onde as duas telas se comportam de forma diferente do sistema antigo, e por quê.

AssuntoSistema antigoAqui
Numeração do asiento Dois caminhos, escolhidos por um parâmetro: um contador em tabela, ou o maior número do ano — e este último recusa num dos tenants, com a mensagem "problema numero contabil" Sempre o contador em tabela. O outro caminho é sujeito a corrida entre dois usuários, e o próprio sistema antigo já o recusa onde mais importa
Fechamento em IFRS Confere só o lado principal Confere também o IFRS — a pedido, para não obrigar a rodar o 25F só por causa da diferença cambial
Todo asiento fecha na moeda local Convive com a sobra de arredondamento; só três módulos fecham Gera a linha de "Redondeo de conversion" em todos — mas só quando a sobra é resíduo de arredondamento. Acima disso o asiento fica aberto e a coluna "Fechou?" diz NÃO, para o defeito não ficar escondido
Conferir Alterna: confere e desconfere Igual — e o período fechado trava aqui também, o que o sistema antigo também faz

Asiento que não fecha e é do sistema antigo continua não fechando. Há casos medidos em que o próprio sistema antigo produz asiento aberto — um por erro de lançamento (percentuais trocados no documento de origem) e outro por um deslize de fórmula no módulo de empréstimos. A decisão foi não divergir: se o número é igual ao que o sistema antigo produz, está reproduzido de propósito.

O câmbio IFRS ainda não é gravado pela sincronização, como no sistema antigo — quem resolve isso hoje é rodar o 25F depois. Está registrado como pendência.

Nenhuma regra bate com essa busca. Tente um trecho menor da mensagem, ou limpe os filtros.