Ir para conteúdo
  • Cadastre-se

dev botao

Atualizar bloco ProcNfe do xml


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

Recommended Posts

  • Membros Pro

Boa tarde

Em algumas situações estou enviando a NFCe, ela está autorizando normalmente na SEFAZ, porém ocorre TimeOut de Recepção. Nessas situações a NFCe é enviada em contingência OFF Line, ficando portanto com uma chave diferente da que está no SEFAZ, já que lá essa nfce está autorizada e o xml que eu tenho armazenado não contém o bloco ProcNfe onde vai ter os dados da autorização.

No procedimento de reenvio dessa NFCe, eu carrego o xml que tenho armazenada (em contingência off line) e tento enviar a NFCe . Nesse momento é retornado que a NFCe está autorizada com uma chave diferente. Na minha rotina eu refaço a consulta com a chave que está autorizada no SEFAZ e ai retorna o protocolo tudo certo, porém, usando o método AcbrNfe1.NotasFiscais.Items[0].GravarXML(Arquivo xml) o bloco ProcNfe não é incluído no meu xml original.

O mais estranho é que com NFe esse procedimento funciona.  Com NFCe tem que fazer alguma coisa diferente ?

Exemplo que como faço hoje:

LoadFromFile(Arquivo xml)

Enviar...

Nesse momento recebe retorno que a NFCe está autorizada com uma Chave diferente.. ai faço a consulta com a chave retornada..

 ACBrNFe1.WebServices.Consulta.NFeChave := Chave que consta na SEFAZ
 ACBrNFe1.WebServices.Consulta.Executar;

Depois tento atualizar o XML

ACBrNFe1.NotasFiscais.Items[0].GravarXML(Arquivo XML);

 

Não ocorre nenhum erro, porém o xml é atualizado com o mesmo conteúdo que tinha originalmente, sem o bloco ProcNfe.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Dércio,

Reveja o seu procedimento de envio.

Após o envio se o XML não contem o protocolo de autorização pode ter acontecido 2 coisas:

1. A nota foi rejeitada, neste caso devemos ver qual é o motivo da rejeição, fazer as correções e enviar novamente.

2. A SEFAZ demorou e ocorreu Timeout, neste caso devemos executar o método Consultar, pois não sabemos se o problema foi no envio ou no retorno, se foi no retorno ao executar teremos o XML atualizado com o protocolo de autorização, caso contrario teremos um retorno acusando que a nota não se encontra na base de dados da SEFAZ, neste caso devemos enviar novamente.

  • Curtir 2
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
52 minutos atrás, Italo Jurisato Junior disse:

Boa tarde Dércio,

Reveja o seu procedimento de envio.

Após o envio se o XML não contem o protocolo de autorização pode ter acontecido 2 coisas:

1. A nota foi rejeitada, neste caso devemos ver qual é o motivo da rejeição, fazer as correções e enviar novamente.

2. A SEFAZ demorou e ocorreu Timeout, neste caso devemos executar o método Consultar, pois não sabemos se o problema foi no envio ou no retorno, se foi no retorno ao executar teremos o XML atualizado com o protocolo de autorização, caso contrario teremos um retorno acusando que a nota não se encontra na base de dados da SEFAZ, neste caso devemos enviar novamente.

Boa tarde

Quando vc diz, "executar o método Consultar"  vc quer dizer  ACBrNFe1.WebServices.Consulta.Executar  ?

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Já assistiu a esse vídeo ?

Nessa área de Downloads também há uma apresentação sobre como tratar o off-line

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Sim.. Já tinha lido esse posts antes... Na verdade o xml até retorna completo na consulta, o problema é que que para atualizar o meu xml que está incompleto com esse que está completo, eu uso a função ACBrNFe1.NotasFiscais.Items[0].GravarXML(Arquivo XML);  e não está atualizando o xml.. está ficando sem o grupo ProcNfe..

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

não compreendi o problema... consegue nos passar um passo a passo de como reproduzi-lo, usando o Demo do ACBr ?

Verifique se a chave do XML é a mesma, pode ser que você esteja gravando em um arquivo diferente...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Dércio,

Não entendi o motivo de usar o GravarXML.

Supondo que após o envio o XML da nota ocorreu um erro de timeout por exemplo, logo não foi possível obter o retorno da SEFAZ.

Vou tentar resumir de como proceder:

ACBrNFe.NotasFiscais.Clear;
ACBrNFe.NotasFiscais.LoadFromFile(NomeXML);
ACBrNFe.Consultar;

if DMDFe.NFe.WebServices.Consulta.cStat = 100 then
begin

     ACBrNFe.NotasFiscais.Clear;  
     ACBrNFe.NotasFiscais.LoadFromFile(NomeXML);

     ACBrNFe.Imprimir;

end

else

begin

     // Tratar a rejeição

end;

Lembre-se que o componente esta configurado para salvar os XML das notas.

Configuracoes.Arquivos.Salvar := True;

Ao executar o método Consultar se o retorno for 100, ou seja, Autorizado, o componente verifica se o XML da nota esta carregado, se sim, atualiza e salva o XML (depende da configuração) deixando-o completo.

  • Obrigado 1
Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Moderadores
Em 07/06/2018 at 13:59, Dércio Luis Zanatta disse:

Em algumas situações estou enviando a NFCe, ela está autorizando normalmente na SEFAZ, porém ocorre TimeOut de Recepção. Nessas situações a NFCe é enviada em contingência OFF Line, ficando portanto com uma chave diferente da que está no SEFAZ, já que lá essa nfce está autorizada e o xml que eu tenho armazenado não contém o bloco ProcNfe onde vai ter os dados da autorização.

No procedimento de reenvio dessa NFCe, eu carrego o xml que tenho armazenada (em contingência off line) e tento enviar a NFCe . Nesse momento é retornado que a NFCe está autorizada com uma chave diferente. Na minha rotina eu refaço a consulta com a chave que está autorizada no SEFAZ e ai retorna o protocolo tudo certo, porém, usando o método AcbrNfe1.NotasFiscais.Items[0].GravarXML(Arquivo xml) o bloco ProcNfe não é incluído no meu xml original.

O arquivo só será atualizado com os dados da autorização caso a chave do XML seja idêntica a que está no SEFAZ.

    for i := 0 to TACBrNFe(FPDFeOwner).NotasFiscais.Count - 1 do
    begin
      with TACBrNFe(FPDFeOwner).NotasFiscais.Items[i] do
      begin
        if (OnlyNumber(FNFeChave) = NumID) then
        begin
          Atualiza := (NaoEstaVazio(NFeRetorno.XMLprotNFe));      

Veja o arquivo ACBrNFeWebServices na rotina function TNFeConsulta.TratarResposta: Boolean; 

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
16 horas atrás, André Ferreira de Moraes disse:

O arquivo só será atualizado com os dados da autorização caso a chave do XML seja idêntica a que está no SEFAZ.


    for i := 0 to TACBrNFe(FPDFeOwner).NotasFiscais.Count - 1 do
    begin
      with TACBrNFe(FPDFeOwner).NotasFiscais.Items[i] do
      begin
        if (OnlyNumber(FNFeChave) = NumID) then
        begin
          Atualiza := (NaoEstaVazio(NFeRetorno.XMLprotNFe));      

Veja o arquivo ACBrNFeWebServices na rotina function TNFeConsulta.TratarResposta: Boolean; 

Uhhh.. entendi !!

O ID tem que estar com a chave que está autorizada na SEFAZ !

ai que está o problema !

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...
Em 12/06/2018 at 16:31, Italo Jurisato Junior disse:

Boa tarde Dércio,

Não entendi o motivo de usar o GravarXML.

Supondo que após o envio o XML da nota ocorreu um erro de timeout por exemplo, logo não foi possível obter o retorno da SEFAZ.

Vou tentar resumir de como proceder:

ACBrNFe.NotasFiscais.Clear;
ACBrNFe.NotasFiscais.LoadFromFile(NomeXML);
ACBrNFe.Consultar;

if DMDFe.NFe.WebServices.Consulta.cStat = 100 then
begin

     ACBrNFe.NotasFiscais.Clear;  
     ACBrNFe.NotasFiscais.LoadFromFile(NomeXML);

     ACBrNFe.Imprimir;

end

else

begin

     // Tratar a rejeição

end;

Lembre-se que o componente esta configurado para salvar os XML das notas.

Configuracoes.Arquivos.Salvar := True;

Ao executar o método Consultar se o retorno for 100, ou seja, Autorizado, o componente verifica se o XML da nota esta carregado, se sim, atualiza e salva o XML (depende da configuração) deixando-o completo.

Ola

Segui as instruções, pois tenho caso exatamente com o detalhado acima, porem depois de consultar, mesmo com as propriedades Salvar sentadas pra true por algum motivo que ainda não encontrei, o XML não salva a tag procnfe, parece estar chegando no TNFeConsulta.TratarResposta com a lista de notas vazias e não faz nada.

Nem passa na

if (OnlyNumber(FNFeChave) = NumID) then

Alguem tem alguma sugestão do que posso fazer? 

Jair Carlos Müller

Link para o comentário
Compartilhar em outros sites

Descobri o meu problema!

estava passando a chave

    ACBrNFe1.Consultar(Chave);

e ai na hora da chamada do Consultar em

    function TACBrNFe.Consultar(AChave: String): Boolean;

ele verifica se o parametro AChave tem algum valor; se tiver, ele faz

  if NaoEstaVazio(AChave) then
  begin
    NotasFiscais.Clear;
    WebServices.Consulta.NFeChave := AChave;
    WebServices.Consulta.Executar;
  end

ou seja, estava apagando as notas do componente! o que gerava o problema!

Passei a usar assim

    ACBrNFe1.Consultar;

e deu certo!

Abracos

  • Curtir 2

Jair Carlos Müller

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2103 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...