Ir para conteúdo
  • Cadastre-se

dev botao

Pegar Corretamento Retorno De Envio De Nfs-E.


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

Recommended Posts

  • Membros Pro

Bom dia,

 

Amigos, hoje estou enviando as NFS-e para "Saatri" - Boa Visa / RR... Esta indo tudo bem, em parte... O meu problema hoje é quando dar algum erro no envio da NFS-e, ou seja, não consigo pegar a msg de retorno, digo, o conteúdo que está no log. Usei o mesmo código usado no demo. veja qual:

 

ACBrNFSe1.Gerar(StrToInt(vNumRPS));

 sNomeArq := ACBrNFSe1.NotasFiscais.Items[0].NomeArq;

 ACBrNFSe1.NotasFiscais.Clear;

 ACBrNFSe1.NotasFiscais.LoadFromFile(sNomeArq);

 ACBrNFSe1.NotasFiscais.Imprimir;

 

Bem, seguindo este código, caso der algum erro, não será gerado nem nome de "NomeArq", tudo bem, posso válidar com if, sei lá... Mais queria mostrar para o usuário o motivo da rejeição, sem ter que entrar nos log para ver isso... Como pegar só o texto direito pelo componente?

 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Glenio,

 

Após a execução do método Gerar, você pode:

 

          sProtocolo := ACBrNFSe.WebServices.GerarNfse.Protocolo;
 
     for i := 0 to (ACBrNFSe.NotasFiscais.Count -1) do
      begin
       sNotaFiscal := ACBrNFSe.NotasFiscais.Items.NFSe.Numero;
       sDataHora   := DateTimeToStr(ACBrNFSe.NotasFiscais.Items.NFSe.DataEmissao);
       sProtocolo  := ACBrNFSe.NotasFiscais.Items.NFSe.CodigoVerificacao;
 
            if ACBrNFSe.WebServices.GerarNfse.NFSeRetorno.ListaNfse.MsgRetorno.Count > 0
             then begin
                  sStat   := ACBrNFSe.WebServices.GerarNfse.NFSeRetorno.ListaNfse.MsgRetorno.Items[0].Codigo;
                  sMotivo := ACBrNFSe.WebServices.GerarNfse.NFSeRetorno.ListaNfse.MsgRetorno.Items[0].Mensagem;
             end
             else begin
                 sStat   := '';
                 sMotivo := '';
             end;
 
       end;

 

Se a nota foi rejeitada o código e o motivo da rejeição estarão armazenados nas variáveis: sStat e sMotivo.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Bom dia,

Muito obrigado Italo, pegue sua dica... Mais aqui no meus teste, informei por exemplo um CNPJ que não estava autorização para emitir a NFS-e em Boa Vista, para ver qual seria o erro, Bem a (ACBrNFSe.WebServices.GerarNfse.NFSeRetorno.ListaNfse.MsgRetorno.Count vem = 0) neste caso não levantada o exception. fiz assim, o que achas, me retornou o erro.... Mais teria outro jeito?

if _NFSe.WebServices.GerarNfse.Protocolo <> '' then

      begin

        lvArquivo := _NFSe.NotasFiscais.Items[0].NomeArq;

        lvXml     := _NFSe.NotasFiscais.Items[0].XML_NFSe;

        _NFSe.NotasFiscais.Clear;

        _NFSe.NotasFiscais.LoadFromFile(lvArquivo);

        with TabelaPai do

        begin

          Edit ;

          FieldByName('CODIGONF').Value     := _NFSe.NotasFiscais.Items[0].NFSe.Numero;

          FieldByName('VERIFICACAO').Value  := _NFSe.NotasFiscais.Items[0].NFSe.CodigoVerificacao;

          FieldByName('SITUACAO').AsString  := 'ENVIADO';

          FieldByName('XML').AsString       := lvXml ;

          ApplyUpdates(0);

        end;

        _NFSe.NotasFiscais.Imprimir;

      end

      else

      begin

        if _NFSe.WebServices.GerarNfse.NFSeRetorno.ListaNfse.MsgRetorno.Count > 0 then

          raise exception.Create(_NFSe.WebServices.GerarNfse.NFSeRetorno.ListaNfse.MsgRetorno.Items[0].Mensagem)

        else if ConteudoTag(_NFSe.WebServices.GerarNfse.NFSeRetorno.Leitor.Arquivo, 'faultstring') <> '' then

          raise exception.Create(ConteudoTag(_NFSe.WebServices.GerarNfse.NFSeRetorno.Leitor.Arquivo, 'faultstring'));

      end;

    except

      on e : exception do

        Application.MessageBox(Pchar('Erro: ' + e.Message), 'Enviar NFS-e.', MB_OK + MB_ICONERROR);

    end;

 

Em anexo log retornado...

8-lista-nfse-soap.xml

8-lista-nfse-soap.xml

Editado por GLENIO DUARTE MOURA
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa noite Glenio,

 

Esta correto, uma vez que o problema não é uma rejeição referente a algum dado do RPS e sim o usuário que não esta cadastrado para usar o Web Services.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

×
×
  • 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.