Situação:
Ao tentar finalizar uma venda, o sistema bloqueia e apresenta a mensagem de erro informando violação de chave primária na tabela ENCEFAT. Esse erro ocorre porque já existe um registro no banco de dados para aquele mesmo código de pedido, impedindo que o sistema gere novamente as formas de pagamento. Na maioria dos casos, isso acontece quando o cupom não foi devidamente gravado na API, mas o registro parcial ficou salvo no banco local.
Não foi possível gravar as formas de pagamento.
Motivo: Não foi possível inserir o registro da tabela ENCEFAT. FireDACPhysFBviolation of PRIMARY or UNIQUE KEY constraint "PK_ENCEFAT" on table "ENCEFAT"
Problematic key value is (‘CODEMPRESA’ = ‘00’, ‘TIPOPEDIDO’ = ‘56’, ‘CODPEDIDO’ = ‘2600516
Solução:
Acesse o módulo de Pesquisa da NFC-e e verifique qual foi o último cupom emitido para confirmar a sequência.
No Painel da API, valide se a nota referente ao pedido em questão realmente existe na API.
Se existir, será necessário saltar a numeração e emitir o próximo número disponível.
Se não existir (caso mais comum), prossiga com a validação no banco.
faça uma copia do banco de dados
Acesse o banco de dados e abra a tabela ENCEFAT.
Execute o select abaixo, informando o código do pedido mencionado na mensagem de erro:
select * from encefat
where encefat.codpedido = ' ' - dentro da aspas coloque o codigo do pedido.
Se o registro existir no banco, mas não existir na API, significa que houve falha na comunicação durante a emissão.
Nesse caso, será necessário:
Apagar o registro encontrado na tabela ENCEFAT.
Comitar a operação no banco de dados.
Após excluir o registro, teste a emissão novamente no sistema — o processo deverá ocorrer normalmente.