Ir para conteúdo
  • Cadastre-se

dev botao

ACBrNFSe não pega a lista de mensagens de retorno ao consultar lote (trunk2) Ginfes


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

Recommended Posts

  • Membros Pro

Olá amigos bom dia!

Estou testando o envio de NFSe na trunk2 e estou tendo problemas ao tentar enviar uma nota. Quando há algum erro o componente não está exibindo a mensagem de erro. 

Comparando com a trunk1 (depois de um dia todo quebrando a cabeça para entender o código hehe) percebi que o problema parece estar na função:

function TRetornoNFSe.LerXml: boolean;

Da unit pnfsLerListaNFSe.pas

Na trunk1, ao ler o retorno, o componente entra em       if (leitor.rExtrai(1, 'ListaMensagemRetorno') <> '') or

Já na trunk2, ao ler o retorno, o componente entra em     if (leitor.rExtrai(1, 'GerarNfseResposta') <> '') or
       (leitor.rExtrai(1, 'GerarNfseResponse') <> '') or
       (leitor.rExtrai(1, 'ConsultarLoteRpsResposta') <> '') or
       (leitor.rExtrai(1, 'ConsultarNfseRpsResposta') <> '') or 

.. 

Sendo que o if de cima está no else.

Não tive segurança para fazer a alteração por não ter entendido bem o código até agora, mas para testar o problema faça o seguinte:

Emita uma NFSe e depois tente enviar outra NFSe com o mesmo número de RPS (o objetivo aqui é levantar um erro). A mensagem de erro não é exibida, é exibido apenas um "Unknown". No trunk1 era exibido a mensagem informando que já existe RPS com o mesmo número para o CNPJ.

Percebi que a mensagem de erro vem no XML que seria processado neste primeiro if, mas como ele não entra lá a mensagem não é capturada.

 

 

 

Gilson do Carmo
WindSoft Sistemas

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Realmente o problema estava no trecho de código que eu citei acima. Na trunk1 o código estava bem confuso, na trunk2 foi melhorado o código mas foi colocado um else onde não havia antes, ou seja, na trunk1 na leitura do XML eram lidos vários nodes do XML no mesmo procedimento, já na trunk2 como foi colocado um else, ou lê um nó ou lê outro, e isso estava causando o problema. 

@Juliomar Marchetti ou @Italo Jurisato Junior Segue anexo a alteração simples para correção do problema, favor disponibilizar pra todos.

Abraços

 

pnfsLerListaNFSe.pas

Editado por windsoft
  • Curtir 2

Gilson do Carmo
WindSoft Sistemas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Gilson,

Muito obrigado pela colaboração.

Já esta no repositório do Trunk2.

  • Curtir 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

  • 5 meses depois ...
  • Consultores

Boa tarde Juliana,

Você configurou o componente para mostrar as mensagens?

Configuracoes.WebServices.Visualizar := True;

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

Boa tarde Ítalo! Configurei sim, e realmente mostra uma mensagem com o método, num. do lote, data/hora recebimento, protocolo e provedor. Porém se a situacao for 3, nao mostra a mensagem com o erro, como acontecia no trunk1. Eu consigo pegar a situacao e saber que teve erro, porem o erro especifico nao consigo saber. No trunk1 aparecia outra mensagem dizendo qual era o codigo do erro, a descricao e como corrigir. Tentei alguns métodos de retorno do webservice mas todos voltam vazios.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Juliana,

Lembre-se que existe o ConsultarSituacao e ConsultarLoteRps.

O primeiro apenas retorna a situação do lote e a resposta é 1, 2, 3 ou 4.

Sendo que 1 = Lote não recebido, 2 = Lope em processamento, 3 = Lote Processado com erro e 4 = Lote processado com sucesso.

Se a situação for 3 ou 4 devemos realizar a segunda consulta, ou seja, ConsultarLoteRps.

Se a situação for 3 teremos a mensagem de erro, por outro lado se for 4 teremos como resposta o XML da NFS-e.

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

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