ERP – Condição/Forma de Pagamento – Cannot insert duplicate key row in object 'dbo.e028cpg' with unique index 'e028cpgindice1'. The duplicate key value is (XX) / ORA-00001: unique constraint (Nomebase.E028CPGINDICE1) violated
Ao tentar realizar um cadastro de uma condição de pagamento na tela NF028GCP - Cadastros / Mercado e Suprimentos / Condições de Pagamento / Cadastro (Condições de Pagamento), é apresentada a mensagem:
-
Banco Microsoft SQL Server
ErrorMessage: [[Microsoft][SQL Server Native Client 11.0][SQL Server]Cannot insert duplicate key row in object 'dbo.e028cpg' with unique index 'e028cpgindice1'. The duplicate key value is (XX). -
Banco Oracle
Error - ORA-00001: unique constraint (Nomebase.E028CPGINDICE1) violated
Além disso, nas telas do sistema pode ser apresentada a mensagem: Processamento Condição de Pagamento: Não foi possível incluir o registro - E028Cpg
Causa
Essa mensagem ocorre por causa da constraint E028CPGINDICE1 presente na tabela E028CPG. Esta constraint determina de que não pode existir mais de uma condição de pagamento com o mesmo valor no campo E028CPG.IdeUni. Este campo serve para armazenar um numero sequencial único para cada cadastro de condição de pagamento.
Essa situação pode ocorrer quando registros das tabelas do sistema são manipulados inadequadamente (nas tabelas E028CPG ou R900NXV) ou então a importação de condições de pagamento para a base de dados sem utilizar consistência padrão.
Solução
Para que a mensagem não seja apresentada, realize os passos a seguir:
1. Acesse uma ferramenta de acesso ao banco de dados de sua preferência, ou então acesse o CBDS;
Observação
Caso você seja cliente de solução Cloud da Senior, e se não possuir acesso ao CBDS, entre contato com a equipe de IT SERVICES solicitando o acesso a ferramenta seja liberada para o(s) usuário(s).
2. Realize o comando abaixo na ferramenta de banco. No retorno deste select será possível identificar um valor no campo LstVal:
SELECT * FROM R900NXV WHERE CODPKY LIKE 'E028CPGIDEUNI'
Importante
Para resolver a situação é necessário identificar qual o maior valor gravado no campo E028CPG.IdeUni para todos os registros.
3. Realize o comando abaixo na ferramenta de banco, para descobrir o valor máximo gravado na tabela E028CPG.
SELECT MAX(IDEUNI) FROM E028CPG
4. Compare os resultados de ambos os comandos. Se estiverem divergentes, você deve alterar o valor do campo R900NXV.LstVal, obtido para o maior valor do campo E028CPG.IdeUni para todos os registros, utilizando o comando SELECT MAX(IDEUNI) FROM E028CPG para ter o valor correto:
5. Altere a informação do campo R900NXV.LstVal, conforme o resultado do comando SELECT MAX(IDEUNI) FROM E028CPG;
Observação
Na tabela R900NXV para o campo CodPky = E028CPGIdeUni deve ser informado o valor que foi retornado do select.
6. Execute os passos acima, e após o procedimento, os novos cadastros serão realizados com sucesso.
Importante
A mesma situação descrita neste artigo pode ocorrer com cadastramento de Formas de Pagamento na tela F066FPG - Cadastros / Mercado e Suprimentos / Formas de Pagamento / Cadastro, relacionada a ai identificador único E066FPGIdeUni definido na tabela R900NXV.
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.