Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3293 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Bom dia,

Estou tendo um constante problema com duplicidade de chave nfe quando há oscilação na resposta do webservice da receita federal.

Foi solicitado há algum tempo que eu implementasse uma forma de reverter a numeração da NFe gerada cuja tentativa de envio retornasse uma rejeição, para minimizar o problema de inutilização de numeração, no entanto, essa solução gerou um grande transtorno, pois, quando há oscilação na receita e o retorno da receita não é recebido pela minha aplicação, na próxima tentativa de envio há a duplicidade de chave.

Alguém sabe uma forma mais inteligente de contornar este problema? Fiz uma busca nos tópicos existentes e não encontrei nenhum assunto relacionado.

OBS: Estou utilizando ainda o trunk antigo. 

Link para o comentário
Compartilhar em outros sites

  1. muda para trunk2
  2. não tem solução fácil, depois obter o retorno podes analisar o código de situação e a mensagem para obter melhor dados, normalmente na mensagem de retorno vem a chave correta, tens de a obter e corrigir a tua. depois é só voltar a fazer a consulta para atualizar a situação da nota.

P.S.: disse que não tem solução fácil pois existe mais de uma mensagem de rejeição por duplicidade e nem todas retornam a chave correta. a sempre podes consultar no SEFAZ, corrigir.

Link para o comentário
Compartilhar em outros sites

Justamente, o fato de não ser retornada a chave correta em alguns casos faz com que o cliente tenha que consultar e avaliar se deve ou não atualizar tal chave para a nota. No entanto, esse trabalho está gerando stress no cliente, que não quer ter esse trabalho. Isso que está sendo complicado. 

Acredito, então, que infelizmente não há como fugir desse procedimento.

Link para o comentário
Compartilhar em outros sites

              if not isnullempty(dm_conexao.NFe.WebServices.Retorno.xMotivo) then
                if pos('Duplicidade',dm_conexao.NFe.WebServices.Retorno.xMotivo)>0 then
                  if pos('Duplicidade de NF-e, com diferenca na Chave de Acesso',dm_conexao.NFe.WebServices.Retorno.xMotivo)>0 then
                  begin
                    chaveNFe := OnlyNumber(copy(dm_conexao.NFe.WebServices.Retorno.xMotivo,pos('Duplicidade de NF-e, com diferenca na Chave de Acesso',dm_conexao.NFe.WebServices.Retorno.xMotivo)+length('Duplicidade de NF-e, com diferenca na Chave de Acesso')+1,45));
                    if dm_gerenciar_notas.cds_notaCHAVE_NFE.AsString = chaveNFe then
                      chaveNFe := OnlyNumber(copy(dm_conexao.NFe.WebServices.Retorno.xMotivo,pos('diferente de',dm_conexao.NFe.WebServices.Retorno.xMotivo)+length('diferente de')+1,45));
                    dm_conexao.sq_auxiliar.Close;
                    dm_conexao.sq_auxiliar.SQL.Text:='UPDATE MOVIMENTO SET '
                    +' CHAVE_NFE = '+QuotedStr(chaveNFe)
                    +' WHERE ID_MOVIMENTO  = '+inttostr(id_executa);
                    dm_conexao.sq_auxiliar.ExecSQL;

                    e.Message := 'Duplicidade de NF-e, com diferença na Chave de Acesso corrigida';
                  end;

            if pos('Duplicidade',e.Message)>0 then
            begin
              if pos('573:',e.Message)>0 then //duplicidade de evento
                e.Message := e.Message + slinebreak + 'O evento solicitado repetiu a sequencia.';
              if pos('485:',e.Message)>0 then //duplicidade de evento EPEC
              begin
                atualizar_situacao_nfe(id_executa,6);
                e.Message := '';
              end
              else
                e.Message := e.Message + slinebreak + 'Por favor, efetue a consulta da NFe.';
            end;

este é o código que usamos na verificação do retorno de erro. Até ao momento sempre resolveu, mas estamos sempre abertos a melhoria nele

Link para o comentário
Compartilhar em outros sites

Obrigada por compartilhar seu fonte. Fazemos algo parecido também, mas acredito que o maior problema. no meu caso, ocorre com a reversão do numero da nota, zerando o mesmo no caso da rejeição. No meu ponto de vista, essa reversão não deveria ser feita, mas como não depende apenas de mim, tenho que fazer dessa forma.

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3293 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...