Ir para conteúdo
  • Cadastre-se

dev botao

Enviar Lote com mais de 100 notas


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

Recommended Posts

  • Consultores

Bom dia a todos,

O componente aborta o enviar se o lote possuir mais de 50 RPS isso se tratando dos métodos Enviar e EnviarSincrono, pois o método Gerar só é permitido o envio de um único RPS.

E a checagem com relação ao tamanho em Kbytes o componente também faz e aborta o envio caso o tamanho seja maior que 500 Kbytes.

  • 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

  • 2 meses depois ...
  • Consultores

Bom dia Walfrido,

Você deve ADD 50 RPS e enviar, depois limpar a lista por fim ADD os outros 50 RPS e enviar.

O Lote é gerado no momento do envio.

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

  • 7 meses depois ...

Italo, tudo bem?

Está certo a forma que estou enviando as notas fiscais por lotes?

Na qryNotas tem 500 registros para enviar.

Só dá timeout, já aumentei o tempo para 50000 e não resolveu;

***************************************************

  c := 0;

  vNumLote := StrToInt(_Numero_do_Lote);
  numeroRPS  := StrToIntDef(vNumNota, 1); // numero do RPS
  qryNotas.First;

  while not qryNotas.Eof do
    begin

      c := 1;
      dba.ACBrNFSe1.NotasFiscais.Clear;

      while not qryNotas.Eof and (c <= 50) do
        begin
          seqRPS := IntToStr(numeroRPS);
          AlimentaComponente(seqRPS);
          inc(numeroRPS);
          inc(c);
          qryNotas.Next;
        end;

      dba.ACBrNFSe1.GerarLote(vNumLote); //.Enviar(vNumLote);

      MemoDados.Lines.Add('Nome XML: '+dba.ACBrNFSe1.NotasFiscais.Items.NomeArq);
      MemoDados.Lines.Add('Nota Numero: '+dba.ACBrNFSe1.NotasFiscais.Items.NFSe.Numero);
      MemoDados.Lines.Add('Código de Verificação: '+dba.ACBrNFSe1.NotasFiscais.Items.NFSe.CodigoVerificacao);

      inc(vNumLote);

    end;

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Walfrido,

O método GerarLote, só gera o XML referente ao lote e salva em disco, não envia para lugar nenhum.

Esse método é utilizado quando o provedor não disponibiliza um webservice, ai tempos que gerar o XML do lote, acessar o site e importar o XML.

Já o método Enviar, além de gerar lote, salvar em disco, estabelece uma conexão com o webservice e envia o 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

2 horas atrás, Italo Jurisato Junior disse:

Bom dia Walfrido,

O método GerarLote, só gera o XML referente ao lote e salva em disco, não envia para lugar nenhum.

Esse método é utilizado quando o provedor não disponibiliza um webservice, ai tempos que gerar o XML do lote, acessar o site e importar o XML.

Já o método Enviar, além de gerar lote, salvar em disco, estabelece uma conexão com o webservice e envia o lote.

dba.ACBrNFSe1.GerarLote(vNumLote); //.Enviar(vNumLote);

Desculpa, tinha feito um teste para ver se estava gerando o lote certinho, mas o código correto é este abaixo;

dba.ACBrNFSe1.Enviar(vNumLote);

 

Mas a questão é tenho que inserir apenas 50 notas por lote, certo?

Mas neste caso preciso enviar mais de 500...

Então coloquei um contador que ao atingir 50 registro ele envia e depois continua até terminar de enviar tudo...

  while not qryNotas.Eof do
    begin

      c := 1;
      dba.ACBrNFSe1.NotasFiscais.Clear;

      while not qryNotas.Eof and (c <= 50) do
        begin
          seqRPS := IntToStr(numeroRPS);
          AlimentaComponente(seqRPS);
          inc(numeroRPS);
          inc(c);
          qryNotas.Next;
        end;

      dba.ACBrNFSe1.Enviar(vNumLote);

      inc(vNumLote);

    end;

 

Seria assim neh? Mas gerando timeout!

Editado por walfrido
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Walfrido,

Tem que ser enviado de 50 em 50.

Se esta ocorrendo Timeout o problema é com o servidor que esta congestionado.

Neste caso deve-se aumentar o valor de Timeout.

Agora se o problema ocorre ao enviar o segundo ou terceiro lote, aconselho incluir uma pausa entre um envio e outro.

  • 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

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