Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Agro - PIMS MC - MNF - Falha na Inserção de Apontamento de Abastecimento

time.png Tempo aproximado para leitura: 00:01:40 min

Ocorrência
No módulo Manutenção de Frota, ao tentar inserir um Apontamento de Abastecimento é apresentada a mensagem Falha na inserção do Apontamento de Abastecimento, Detalhes, Detalhe: DAO Runtime Insert Exception: null.

Ambiente
TOTVS Agro – TOTVS Agro – Bioenergia – Manutenção de Frota – A partir da versão 12.1.23

Causa 
Esse incidente ocorre, pois a partir da versão 12.1.23 houve uma alteração no cadastro do consumo médio, onde o consumo mínimo precisa ser maior do que 0.

Solução
Para solucionar essa ocorrência, realize os seguintes passos:

1. Acesse o banco que está ocasionando a mensagem de erro. Caso o ambiente esteja no Cloud da TOTVS, realize a abertura de um ticket;

 

2. Execute o comando abaixo:

 

SQL Server:
DECLARE @cCONSMEDIO CURSOR;
DECLARE @ID_CONSMEDIO NUMERIC(38);
DECLARE @QT_CONS_MEDIO NUMERIC(5,2);
DECLARE @VALOR VARCHAR(200);
DECLARE @PAR_VALOR NUMERIC(6,2);
DECLARE @MD_CONS_MIN NUMERIC(6,2);
DECLARE @MD_CONS_MAX NUMERIC(6,2);

BEGIN
 SET @cCONSMEDIO = CURSOR FOR SELECT ID_CONSMEDIO, QT_CONS_MEDIO FROM CONSMEDIO WHERE MD_CONS_MIN IS NULL OR MD_CONS_MIN = 0 OR MD_CONS_MAX IS NULL OR MD_CONS_MAX = 0;
 OPEN @cCONSMEDIO;
 FETCH NEXT FROM @cCONSMEDIO INTO @ID_CONSMEDIO, @QT_CONS_MEDIO;
 SET @PAR_VALOR = CONVERT(NUMERIC(6,2), REPLACE('999,00', ',', '.'));
 WHILE @@FETCH_STATUS = 0
 BEGIN
 IF @PAR_VALOR > 9999.99
 SET @PAR_VALOR = 9999.99;

IF (@QT_CONS_MEDIO - ((@QT_CONS_MEDIO * @PAR_VALOR) / 100)) > 9999.99
 SET @MD_CONS_MIN = 9999.99
 ELSE
 SET @MD_CONS_MIN = (@QT_CONS_MEDIO - ((@QT_CONS_MEDIO * @PAR_VALOR) / 100));

IF (@QT_CONS_MEDIO + ((@QT_CONS_MEDIO * @PAR_VALOR) / 100)) > 9999.99
 SET @MD_CONS_MAX = 9999.99;
 ELSE
 SET @MD_CONS_MAX = (@QT_CONS_MEDIO + ((@QT_CONS_MEDIO * @PAR_VALOR) / 100));

IF @MD_CONS_MIN < 0.1
 SET @MD_CONS_MIN = 0.1;

IF @MD_CONS_MAX < 0.1
 SET @MD_CONS_MAX = 0.1;

IF @MD_CONS_MIN > 9999.99
 SET @MD_CONS_MIN = 9999.99;

IF @MD_CONS_MAX > 9999.99
 SET @MD_CONS_MAX = 9999.99;

BEGIN TRANSACTION
 UPDATE CONSMEDIO
 SET PC_CONS_MIN = @PAR_VALOR,
 PC_CONS_MAX = @PAR_VALOR,
 MD_CONS_MIN = @MD_CONS_MIN,
 MD_CONS_MAX = @MD_CONS_MAX
 WHERE ID_CONSMEDIO = @ID_CONSMEDIO;
 COMMIT;
 FETCH NEXT FROM @cCONSMEDIO INTO @ID_CONSMEDIO, @QT_CONS_MEDIO;
 END;
 CLOSE @cCONSMEDIO;
 DEALLOCATE @cCONSMEDIO;
END;
Oracle:
DECLARE
 CURSOR cCONSMEDIO IS SELECT ID_CONSMEDIO, QT_CONS_MEDIO FROM CONSMEDIO WHERE MD_CONS_MIN IS NULL AND MD_CONS_MAX IS NULL AND PC_CONS_MIN IS NULL AND PC_CONS_MAX IS NULL;
 rCONSMEDIO cCONSMEDIO%ROWTYPE;
 sVALOR VARCHAR2(200);
 nPAR_VALOR NUMBER;
 nMD_CONS_MIN NUMBER;
 nMD_CONS_MAX NUMBER;
BEGIN
 OPEN cCONSMEDIO;
 SELECT VALOR INTO sVALOR FROM PRXPARAMETER WHERE CONTEXT_APL = 'PIMSGRAOS.MANUTENCAO' AND NAME_PARAMETER = 'PERCENTUAL_TOLERANCIA';
 nPAR_VALOR := ROUND(TO_NUMBER(REPLACE(sVALOR, ',', '.')),2);
 LOOP
 FETCH cCONSMEDIO
 INTO rCONSMEDIO;
 EXIT WHEN cCONSMEDIO%NOTFOUND;
 
 IF nPAR_VALOR > 9999.99 THEN
 nPAR_VALOR := 9999.99;
 END IF;
 
 IF ROUND((rCONSMEDIO.QT_CONS_MEDIO - ((rCONSMEDIO.QT_CONS_MEDIO * nPAR_VALOR) / 100)), 2) > 9999.99 THEN
 nMD_CONS_MIN := 9999.99;
 ELSE
 nMD_CONS_MIN := ROUND((rCONSMEDIO.QT_CONS_MEDIO - ((rCONSMEDIO.QT_CONS_MEDIO * nPAR_VALOR) / 100)), 2);
 END IF;
 
 IF ROUND((rCONSMEDIO.QT_CONS_MEDIO + ((rCONSMEDIO.QT_CONS_MEDIO * nPAR_VALOR) / 100)), 2) > 9999.99 THEN
 nMD_CONS_MAX := 9999.99;
 ELSE
 nMD_CONS_MAX := ROUND((rCONSMEDIO.QT_CONS_MEDIO + ((rCONSMEDIO.QT_CONS_MEDIO * nPAR_VALOR) / 100)), 2);
 END IF;
 
 IF nMD_CONS_MIN < 0.1 THEN
 nMD_CONS_MIN := 0.1;
 END IF;
 IF nMD_CONS_MIN > 9999.99 THEN
 nMD_CONS_MIN := 9999.99;
 END IF;
 IF nMD_CONS_MAX < 0.1 THEN
 nMD_CONS_MAX := 0.1;
 END IF;
 IF nMD_CONS_MAX > 9999.99 THEN
 nMD_CONS_MAX := 9999.99;
 END IF;
 UPDATE CONSMEDIO
 SET PC_CONS_MIN = ROUND(nPAR_VALOR, 2),
 PC_CONS_MAX = ROUND(nPAR_VALOR, 2),
 MD_CONS_MIN = ROUND(nMD_CONS_MIN, 2),
 MD_CONS_MAX = ROUND(nMD_CONS_MAX, 2)
 WHERE ID_CONSMEDIO = rCONSMEDIO.ID_CONSMEDIO;
 COMMIT;
 END LOOP;
 CLOSE cCONSMEDIO;
END;
Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _