Ir para conteúdo
  • Cadastre-se

dev botao

Provedor salva numero da NFSe mesmo com Erro ?


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

Recommended Posts

 Pessoal o provedor de testes em Homologação é o Simpliss.

 Exemplo :

 O Usuário tenta Envia um Lote com algum problema e o RPS é rejeitado, o usuário verifica e corrige o problema e tenta enviar novamente porém como o mesmo numero de Lote pois a NFSe anterior foi rejeitada,  porém me retorna a seguinte mensagem ::
 

Erro ao Gerar NFS-e ::
Ja existe lote protocolado com esse numero para o mesmo cnpj e inscricao municipal.

 Estranho como o Provedor recebeu um RPS com erro ele não teria que descartar isso ?
 pois no meu sistema com a NFSe já teve um erro e não foi gerado eu deveria usar o mesmo numero de NFSe para enviar novamente.

 

 Outra questão como faço para pegar a TAG  "Correção" pelo componente :  tentei   

ACBrNFSe1.WebServices.ConsLote.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao;
ACBrNFSe1.WebServices.ConsNFSe.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao;   não consigo com esses codigos.
 

 

<?xml version="1.0" encoding="UTF-8"?>

<RecepcionarLoteRpsResult> <ListaMensagemRetorno xmlns="http://www.sistema.com.br/Nfse/arquivos/nfse_3.xsd"> <MensagemRetorno> <Codigo>E903</Codigo> <Mensagem>Ja existe lote protocolado com esse numero para o mesmo cnpj e inscricao municipal.</Mensagem> <Correcao>Altere o numero do lote.</Correcao> </MensagemRetorno> </ListaMensagemRetorno> </RecepcionarLoteRpsResult>

Editado por luciano_f
Erro na Gramatica.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Luciano,

Cuidado, não misture numero do Lote com o numero do RPS e numero da NFS-e.

A sua aplicação tem que ter um controle sobre o numero do Lote e do RPS. 

O numero da NFS-e é controlado pelo provedor.

Outra coisa a mensagem deixa claro que o problema é o numero do Lote e não o numero do RPS.

Você enviou o Lote de numero 50 com o RPS de numero 55, mas este foi rejeitado.

Após a correção você deve envia-lo novamente, mas agora o RPS de numero 55 vai estar no Lote de numero 51.

Tem provedor que não faz questão de você repetir o numero do Lote, mas outros não permitem.

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

 Entendi Italo e sobre a outra questão tem alguma forma de Eu capturar ?

 Outra questão como faço para pegar a TAG  "Correção" pelo componente :  tentei   

ACBrNFSe1.WebServices.ConsLote.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao;
ACBrNFSe1.WebServices.ConsNFSe.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao;   não consigo com esses codigos.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Luciano,

Mas não vai mesmo, pois o método executado é o Enviar e não Consultar Lote ou Consultar NFSe.

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

  • Consultores

Bom dia Luciano,

Por favor anexa os arquivos gerados que ao tentar enviar o lote o mesmo é rejeitado pelo fato do numero do lote já ter sido usado.

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

 Estou gerando uma Nota com erro apenas para eu poder efetuar testes de captura dos retornos

Eu Coloquei Letras no campo            <InscricaoMunicipal>ISENTO</InscricaoMunicipal>

fiz isso apenas para gerar um erro para eu tentar capturar com o comando
ACBrNFSe1.WebServices.EnviarLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao

veja os XML em anexo.

 

74-env-lot.xml

74-rec.xml

121001-con-sit.xml

121001-sit.xml

741-rps.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Luciano,

Você abriu com um navegar esses XML que você anexou?

Se não abriu, abra o 121003-sit.xml e leia o que esta escrito nas TAGs: Mensagem e Correção.

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 Italo.

Sim eu abri todos os XML antes de enviar.

Como Eu disse antes eu gerei um erro de propósito apenas para poder testar minha aplicação
pois quero um jeito de ler com o ACBR esse XML que você mencionou
"121003-sit.xml"  para isso estou tentando com o código abaixo que dá erro de "AcessViolation"

ACBrNFSe1.WebServices.EnviarLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao

Qual seria o comando correto para ler as Tag desse XML ?
as Tag Seriam essas :::

<Codigo>
<Mensagem>
<Correcao

Eu percebi que existe o acesso a essas Tag pelo componente porém gera erro

ACBrNFSe1.WebServices.EnviarLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Codigo
ACBrNFSe1.WebServices.EnviarLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Mensagem
ACBrNFSe1.WebServices.EnviarLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao

Grato.

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Luciano,

Tudo bem, mas veja que você esta tentando ler o código e a mensagem de erro do método EnviarLoteRPS, só que o erro retornado é do consultar a situação do lote.

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

Agora testei o seguinte ::

     Showmessage(ACBrNFSe1.WebServices.ConsSitLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao);

     Showmessage(ACBrNFSe1.WebServices.ConsLote.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao);

     Showmessage(ACBrNFSe1.WebServices.ConsNFSe.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao);

     Showmessage(ACBrNFSe1.WebServices.ConsNFSeRps.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao);

 Todos esse acima dão erro de AcessViolation ?

 O Colega poderia postar o código pois não sei como resolver isso,  pois tudo que tentei sempre dá Erro.

Link para o comentário
Compartilhar em outros sites

Boa Noite Italo.


Acho que na verdade descobri um BUG no componente para efetuar o que quero tive que alterar o componente

Na unit  "ACBrNFSeWebServices.pas";

Em varias Functions tem chamada para  "ExtrairNotasRetorno;"  como nessa  ::
 

function TNFSeConsultarLoteRPS.TratarResposta: Boolean;
begin
  FPMsg := '';
  FaMsg := '';
  FPRetWS := ExtrairRetorno;
  Result := ExtrairNotasRetorno;

  FPRetWS := ExtrairGrupoMsgRet(FPConfiguracoesNFSe.Geral.ConfigGrupoMsgRet.ConsLote);
end;

Porém  na Function ::

function TNFSeConsultarSituacaoLoteRPS.TratarResposta: Boolean;

Não existe a chamada para "ExtrairNotasRetorno;"
assim resolvi alterar ela apenas colocando uma chamada ficando assim
 


function TNFSeConsultarSituacaoLoteRPS.TratarResposta: Boolean;
begin
  FPMsg := '';
  FaMsg := '';
  FRetSitLote.Free;
  FRetSitLote := TretSitLote.Create;

  FPRetWS := ExtrairRetorno;

  ExtrairNotasRetorno;  <- Codigo Adicionado

  FRetSitLote.Leitor.Arquivo := FPRetWS;
  FRetSitLote.Provedor       := FProvedor;

  RetSitLote.LerXml;

  FPRetWS := ExtrairGrupoMsgRet(FPConfiguracoesNFSe.Geral.ConfigGrupoMsgRet.ConsSit);

  FSituacao := RetSitLote.InfSit.Situacao;
  // FSituacao: 1 = Não Recebido
  //            2 = Não Processado
  //            3 = Processado com Erro
  //            4 = Processado com Sucesso

  if (FProvedor in [proEquiplano, proEL]) then
    Result := (FSituacao = '1')  // Aguardando processamento
  else
    Result := (FSituacao = '2'); // Lote não Processado
end;

Depois disso esse codigo abaixo não dá mais erro :

Showmessage(ACBrNFSe1.WebServices.ConsSitLoteRPS.RetornoNFSe.ListaNFSe.MsgRetorno.Items[0].Correcao);

Agora se fiz algo errado qual seria o codigo correto para Eu ter acesso a Tag <Correcao>
Grato.
 

Link para o comentário
Compartilhar em outros sites

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