ERP – Controle de Estoque – ORA-01438: value larger than specified precision allowed for this column. / [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Arithmetic overflow error converting float to data type numeric
Incidente
No módulo de Estoques, ao tentar inserir um movimento de estoque manual, ou ao realizar um fechamento/atualização de estoques pode ser apresentada as mensagens:
- Erro do Banco(1438): ORA-01438: value larger than specified precision allowed for this column. Erro na atualização do preço médio(E075DER)!.
- Erro de acesso ao banco de dados: Banco de Dados: SQL Server 2019. Erro do Banco (8115): [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Arithmetic overflow error converting float to data type numeric. Erro do Banco (3621): [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]The statement has been terminated.)
Causa
Geralmente essas mensagens ocorrem porque há estouro de um campo na base.
Observação
Quando se refere a estouro de campo, é porque a informação que o Gestão Empresarial | ERP está tentando gravar não cabe no campo.
Solução
Considerando a mensagem apresentada, podemos perceber que está se referindo ao campo preço médio do cadastro da derivação do produto.
Importante
A mensagem quando ocorre em banco SQL Server não descreve a causa, ou o campo impactado. Nesse casos é necessário realizar a análise quanto ao produto e a informação do preço médio.
Em alguns casos onde o cenário ocorria no fechamento de Estoque via Custos, o problema ocorreu no preço médio, por essa razão após confirmar que a situação ocorre no preço médio pode-se seguir com os passos descritos abaixo.
Se tratando de preço médio do campo E075DER.PreMed, temos a seguinte máscara.
Note na imagem abaixo, que é um valor bastante grande para que um produto possa estourar essa máscara.
Para evoluir no diagnóstico dessa situação e conseguir avançar com a inserção do movimento de estoque via tela F210MVP - Suprimentos / Gestão de Estoques / Controle de Estoque / Movimentação / Individuais ou F210LOT - Suprimentos / Gestão de Estoques / Controle de Estoque / Movimentação / Agrupados, realize os passos a seguir:
1. Acesse a tela F212CME - Suprimentos / Gestão de Estoques / Controle de Estoque / Consultas / Movimentações;
2. Nesta tela, faça consulta aplicando filtro com o produto, derivação, período inicial de estoque da filial até a data atual e filial do depósito que está sendo utilizado para realizar o movimento do estoque que apresenta a mensagem:
Sempre deve ser aplicada essa ordenação de campos para a consulta da movimentação de estoque na tela F212CME - Suprimentos / Gestão de Estoques / Controle de Estoque / Consultas / Movimentações.
É a mesma ordenação considerada no fechamento de estoque quando compõe os saldos e valores dos movimentos:
3. Deve ser avaliado qual o valor de preço médio que consta nas movimentações de estoque deste produto a fim de verificar se o preço médio está super valorizado para o produto e também já identificar quais das movimentações que estão causando essa supervalorização:
4. Identificadas as movimentações que estão gerando a distorção do preço médio, então é necessário disparar ações para corrigir esse cenário.
As ações a serem tomadas podem variar conforme a origem do movimento de estoque que está causando o incidente.
Podemos citar dentre as ações possíveis as seguintes:
-
- Inserir movimento de ajuste de valor para corrigir o valor do estoque naquele data que ocorre a distorção;
Esse ação se aplicação quando não é possível excluir o movimento que gera a distorção e inseri-lo novamente com o valor correto. - Excluir o movimento de estoque que gera a distorção e inseri-lo novamente com os valores adequados;
É necessário ver se é um movimento manual ou gerado a partir de documento que permite excluir e gerar novamente para que possa ser feito esse procedimento. - Verificar a forma de valorização do movimento conforme a transação de estoque utilizada neste momento e ajustar para que aplique a valorização adequada nos estoques e tenho o impacto correto em cima do preço médio;
- Sendo movimento de transferência entre depósitos ou filiais, pode ser necessário adequar as configurações para valorizar corretamente esses movimentos;
- Enfim, as ações são diversas conforme o cenário que for observado;
- Inserir movimento de ajuste de valor para corrigir o valor do estoque naquele data que ocorre a distorção;
5. Após adequar os cenários, é interessante sempre rodar uma atualização dos estoques via tela F215FES - Suprimentos / Gestão de Estoques / Controle de Estoque / Fechamento dos Estoques para que seja recalculado os valores dos movimentos do período de estoque em aberto;
6. Por fim, pode se realizar novamente a tentativa de inserção do movimento de estoque manual que deverá ser possível registrá-lo.
Observações:
- Vale destacar que o preço médio é calculado sempre a partir da divisão dos valores dos campos Valor Est e Qtde Est que são mostrados na tela F212CME - Suprimentos / Gestão de Estoques / Controle de Estoque / Consultas / Movimentações.
Para maiores informações, consulte o artigo ERP - Controle de Estoque/Preço Médio - Como é calculado o Preço Médio de um produto
- Quando for realizar os movimentos de ajustes de valor para corrigir o preço médio, é preciso identificar exatamente a data onde começa a distorção do preço médio para inserir o movimento naquela data ou ainda em data anterior a qual o preço médio já apresenta distorções.
Se o movimento de ajuste não for inserido na data adequada, pode não ter o efeito esperado e não resolver o cenário da mensagem relatada.