ERP – Validade de Modelo de Plano – Não foi possível atualizar conta XX para XX: Violação de chave (quando no relacionamento de/para existir mais de uma conta origem relacionada com a mesma conta destino)
Incidente
Na tela F043VMP-Cadastros / Modelos de plano / Validade, ao tentar processar a mudança de plano contábil, é apresentada a mensagem: Não foi possível atualizar conta XX para XX: Violação de chave.
Causa
Esta situação ocorre quando no relacionamento de/para existir mais de uma conta origem relacionada com a mesma conta destino e estas contas origem em algum momento compõem o mesmo lançamento e definição de rateio.
O problema aqui ocorre na composição do novo modelo de plano, onde duas contas do plano antigo apontam para o mesmo código de conta do plano novo.
Como pode ser visto no exemplo abaixo, o lançamento 0000/000003 utiliza o ctadeb=160 e ctacre=140 e o mesmo centro de custo 1101:
Posteriormente, na tela de relacionamento, ambas as contas relacionam-se para a nova conta 170:
Então como o débito e crédito do lançamento estão apontando para a mesma conta, no processo de mudança de plano, ocorre o erro de violação de chave:
Solução
Para que a mensagem não seja apresentada, realize os passos a seguir:
1. Execute o comando abaixo numa ferramenta de banco de dados para verificar todos os lançamentos cujas contas origem estão relacionadas a mesma conta destino:
SELECT DISTINCT
E640RAT.CODEMP,
E043RMP.CTAATU,
E640RAT.CTARED
FROM E640RAT,E043RMP
WHERE E640RAT.CODEMP=XX AND
E043RMP.CODMPC=XX AND
E043RMP.CODMPU=0 AND
E043RMP.CODMPA=XX AND
E043RMP.CTAATU>=XX AND
E640RAT.CTARED=E043RMP.CTAANT AND
E640RAT.DATLCT>'31/12/XXXX' AND
E640RAT.CTARED > 0 AND
E043RMP.CTAATU IN (SELECT B.CTAATU
FROM E043RMP B, E640RAT C
WHERE E640RAT.NUMLCT = C.NUMLCT AND
E640RAT.CTARED <> C.CTARED AND
B.CTAANT = C.CTARED AND
C.CODEMP=XX AND
B.CODMPC=XX AND
B.CODMPU=0 AND
B.CODMPA=XX AND
C.CTARED > 0 )
ORDER BY E043RMP.CTAATU, E640RAT.CTARED
Observação:
CODMPU = Modelo de Plano Origem e CODMPC = Modelo de Plano Destino.
Substitua o XX e XXXX pelas informações da sua empresa.
2. Na tela F043RMP_1 - Cadastros / Modelos de plano / Relacionamentos / Entre planos, altere a conta destino de uma das contas que retornaram no Select acima, que são do mesmo lançamento:
3. Após isso, rode novamente a mudança de plano na tela F043VMP - Cadastros / Modelos de plano / Validade, e ela será executada com sucesso:
Atenção:
Essa mesma mensagem pode ser apresentada pelo motivo do artigo ERP – Validade de Modelo de Plano – Não foi possível atualizar conta XX para XX: Violação de chave (quando existem relacionamentos duplicados)- Ticket#206410
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.