Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

 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.
  • Consultores
Postado

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 / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

 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.

Postado

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

 Também dá erro de AcessViolation

  onde estou errando ?

  Grato.

Postado

 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

Postado

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.

Postado

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.

Postado

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.
 

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

The popup will be closed in 10 segundos...