Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Bom dia,

Ao transmitir uma nota, em algumas situações, alguns provedores retornam o erro "RPS já informado".

Para não ocorrer essa mensagem e ficar transparente para o usuário final, eu gostaria de incrementar o número do RPS automaticamente e transmitir novamente a nota.

Qual a melhor forma de identificar o retorno "RPS já informado" para diversos provedores? Será que essa é a melhor forma de tratar esse problema?

Att.

Postado

Boa tarde Ítalo,

O RPS é gerado pela aplicação automaticamente sim.

O problema ocorre quando é enviado um RPS e o provedor retorna informando que o RPS já existe, acredito eu que seja um erro do provedor.

Após identificado esse tipo de retorno, a aplicação incrementa o número do RPS e envia novamente.

Minha dúvida é se todos os provedores retornam o código E10 para a mensagem do "RPS já existente".

Postado

Bom dia,

no meu caso quando acontece esta mensagem eu faço uma consulta no provedor e me retorna a nota autorizada, pois algumas prefeituras demoram muito a autorizar um RPS.

ai você tenta enviar novamente o mesmo RPS e retorna como RPS já existente.

porto alegre/RS, acontece direto, tenho que aumentar o tempo de resposta sempre.

espero ter ajudado.

Postado
On 13/03/2018 at 10:39 AM, Reginaldo Costa said:

Bom dia,

no meu caso quando acontece esta mensagem eu faço uma consulta no provedor e me retorna a nota autorizada, pois algumas prefeituras demoram muito a autorizar um RPS.

ai você tenta enviar novamente o mesmo RPS e retorna como RPS já existente.

porto alegre/RS, acontece direto, tenho que aumentar o tempo de resposta sempre.

espero ter ajudado.

Boa tarde.

Faço isso também, porque muitas vezes não tem o retorno síncrono, mas depois a nota aparece autorizada.

Se apenas incrementar o RPS e enviar novamente, pode ocorrer de serem enviadas duas ou mais notas iguais.

Obrigado.

Postado
Em 13/03/2018 at 09:39, Reginaldo Costa disse:

Bom dia,

no meu caso quando acontece esta mensagem eu faço uma consulta no provedor e me retorna a nota autorizada, pois algumas prefeituras demoram muito a autorizar um RPS.

ai você tenta enviar novamente o mesmo RPS e retorna como RPS já existente.

porto alegre/RS, acontece direto, tenho que aumentar o tempo de resposta sempre.

espero ter ajudado.

Bom dia Reginaldo,

Qual serviço utiliza para consultar a nota autorizada? Não entendi como fez essa consulta porque o RPS ainda não foi autorizado.

 

6 horas atrás, brsamn disse:

Boa tarde.

Faço isso também, porque muitas vezes não tem o retorno síncrono, mas depois a nota aparece autorizada.

Se apenas incrementar o RPS e enviar novamente, pode ocorrer de serem enviadas duas ou mais notas iguais.

Obrigado.

Bom dia brsamn,

Se o retorno fosse síncrono, em teoria, ficaria correto e prático. Mas quando o retorno é assíncrono ainda não entendi como vocês fazem.  

 

 

Postado

Esta é minha rotina de buscar uma nota autorizada e perdida(como chamo).

procedure TF_GeracaoNotaFiscalServico.BuscarNotafiscalEmitida;
var
  Reg: TIniFile;
  xXml, xprotocolo: string;
  seq: integer;
begin
  Reg:=TIniFile.Create(Sistema.IniConfiguracao);
  if Sistema.MultiEmpresa=1 then
    Reg:=TIniFile.Create(ExtractFilePath(Application.ExeName)+Sistema.ApelidoAtual+'.ini');
  Nota.NotasFiscais.Clear;
  if TBXML.Locate('NumeroRPS', StrZero(TBSEminFiscalNumeroRPS.AsInteger, 10), []) then
  begin
    Nota.NotasFiscais.LoadFromString(TBXML.FieldByName('NotaFiscalXML').AsString);
    if Nota.NotasFiscais.Count=0 then
    begin
      PreencherNF;   //esta procedure só preenche os dados todos do rps na Nota(ACBrNFSe1), prestador/Tomador/Serviço, etc...
      Nota.NotasFiscais.GerarNFSe;
    end;
  end
  else
  begin
    if Nota.NotasFiscais.Count=0 then
    begin
      PreencherNF;
      Nota.NotasFiscais.GerarNFSe;
    end;
  end;
  if Nota.NotasFiscais.Count>0 then
  begin
   

  //esta é a chamada para consulta do RPS no provedor.

    Nota.ConsultarNFSeporRps(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero,
      Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie, TipoRPSToStr(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo));

    Mensagem('!!! Nota Fiscal Eletrônica Serviço recuperada com sucesso !!!'+#13+#13+'Número da Nota Fiscal: '+
      Nota.NotasFiscais.Items[0].NFSe.Numero+#13+'Código Verificação..: '+
      Nota.NotasFiscais.Items[0].NFSe.CodigoVerificacao, tmAviso, '');

    xXml:=Nota.WebServices.ConsNFSeRps.RetornoWS;

    if TBXML.Locate('NumeroRPS', StrZero(StrToIntDef(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero, 0), 10), []) then
    begin
      TBXML.Edit;
    end
    else
    begin
      seq:=UltimoRegistro(TBXML.TableName, 'Sequencia', '');
      IncluirRegistro(TBXML);
      TBXML.FieldbyName('Sequencia').AsString:=StrZero(seq+1, 10);
      TBXML.FieldbyName('NumeroRPS').AsString:=StrZero(StrToIntDef(Nota.NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero, 0), 10);
      TBXML.FieldByName('NumeroNfs').AsString:=Nota.NotasFiscais.Items[0].NFSe.Numero;
    end;
    TBXML.FieldbyName('CodigoVerificador').AsString:=Nota.NotasFiscais.Items[0].NFSe.CodigoVerificacao;
    TBXML.FieldbyName('Data').AsDateTime:=date;
    TBXML.FieldbyName('DataNFe').AsDateTime:=Nota.NotasFiscais.Items[0].NFSe.DataEmissao;
    TBXML.FieldbyName('CNPJCIC').AsString:=TBSEminFiscalCGC.Value;
    TBXML.FieldbyName('Nome').AsString:=TBSEminFiscalNOME.Value;
    TBXML.FieldByName('NumeroNFS').AsString:=TBSEminFiscalNumeroOficialNF.Value;
    TBXML.FieldbyName('ProtocoloNFe').AsString:=Nota.WebServices.EnvioWebService.Protocolo;
    TBXML.FieldbyName('NotaFiscalXML').AsString:=xXml;
    TBXML.FieldbyName('ReciboXML').AsString:=Nota.WebServices.ConsNFSeRps.RetWS;
    TBXML.FieldbyName('Usuario').AsString:=Sistema.UsuarioAtual;
    Gravartabela(TBXML);

    TBSEminFiscal.Edit;
    TBSEminFiscalNumeroOficialNF.Value:=Nota.NotasFiscais.Items[0].NFSe.Numero;
    TBSEminFiscal.Post;

    RadioGroup1.ItemIndex:=5;
    BExecutar.Click;
  end;
  FreeAndNil(Reg);
end;

 

espero ter ajudado.

 

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