Ir para conteúdo
  • Cadastre-se

dev botao

Retorno do WebService.


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

Recommended Posts

Olá a todos, eu estou com um problema que esta tirando o meu sono, e vir aqui mais uma vez solicitar ajuda.

Eu uso o seguinte código para enviar uma NF-e:


    ACBrNFe1.NotasFiscais.Clear;

    ACBrNFeDANFERave1.MostrarPreview := false;

    GerarNFe;


    try

        ACBrNFe1.Enviar(_tlote.fieldbyname('lote').AsString, false); 

    except 

        On Erro: Exception Do                                         

        Begin                                                         

            Msgerro := Erro.Message;                                    


            Application.Createform(Tform_Erro_Nfe, Form_Erro_Nfe);      

            Form_Erro_Nfe.Vmsg_Erro := Msgerro;                         

            Form_Erro_Nfe.Showmodal;                                    

            Form_Erro_Nfe.Free; 

        end;

    End;  
E uso este outro para gravar o retorno do webservice:
  

    try                                                                                                    

      _inserir.Active := false;                                                                            

      _inserir.SQL.Clear;                                                                                  

      _inserir.SQL.Add('update notafiscal_e.bloco_a set');                                                 

      if(ACBrNFe1.WebServices.Retorno.cStat = 100)and(ACBrNFe1.WebServices.Retorno.Protocolo <> null)then  

          _inserir.SQL.Add('status     = ' + QuotedStr('2') + ', ');                                         

      if(ACBrNFe1.WebServices.Retorno.cStat <> null)then                                                   

          _inserir.SQL.Add('cstatus    = ' + IntToStr(ACBrNFe1.WebServices.Retorno.cStat) + ', ')            

      else                                                                                                 

          _inserir.SQL.Add('cstatus    = null,');                                                            

      _inserir.SQL.Add('xstatus    = ' + QuotedStr(ACBrNFe1.WebServices.Retorno.xMotivo));                 

      _inserir.SQL.Add('where infnfe = ' + _tnota_fiscal.fieldbyname('infnfe').AsString);                  

      _inserir.SQL.Add(';commit;');                                                                        

      _inserir.ExecSQL;                                                                                    

    except                                                                                                 

      UServico.verifica_erro(1, _inserir.SQL.Text, true);                                                  

      abort;                                                                                               

    end;

O problema é que se ocorre algum erro que a nota não é enviada e ocorre alguma rejeição ele sai do tratamento de excessão e na hora de gravar os dados como protocolo, status ele grava os dados da ultima nota enviada e não da nota corrente.

Com este erro minha nota fica com Status 100 (Autorizada), mas na verdade ela nem foi enviada, e ela acaba ficando com o protocolo de envio da ultima NF-e Autorizada e quando imprime ela sai com "Não Autorizada pela Sefaz", porque na verdade não foi autorizada mesmo, mas como ela pegou o status da ultima NF-e eu sou induzido ao erro.

Como vocês estão tratando o envio?

Att.

Carlos Fitl.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4781 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.