Jump to content

SUPER OFERTA!
Compre o Delphi com 45% de desconto

botao_delphi.png

110.png

Curso Gratuito para todos Usuários
+ Super Treinamento Assinando o SAC Anual

botao_campanha_thulio.png

sem_ttulo-620.fw_-e1583866078274.png 

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Recommended Posts

48 minutos atrás, pradilsoncarlos disse:

Boa Tarde.

Segue imagem do erro e xml.

Não sei se está faltando o lote ou se já enviou e está tentando enviar novamente o mesmo número.

Preciso de ajuda urgente.😫

lote rps.png

1500-nfse.xml 1 kB · 1 download

Amigo, o Numero de Lote(ACBrNFSe1.NotasFiscais.NumeroLote), deve ser aumentado toda vez que clicar em enviar, nao importa se deu certo ou deu erro, o unico que mantem é o numero de RPS. E somente se o RPS for aceito, recebera o Numero da NFS-e.

  • Like 2

Share this post


Link to post
Share on other sites
4 minutos atrás, hetoandrade disse:

Amigo, o Numero de Lote(ACBrNFSe1.NotasFiscais.NumeroLote), deve ser aumentado toda vez que clicar em enviar, nao importa se deu certo ou deu erro, o unico que mantem é o numero de RPS. E somente se o RPS for aceito, recebera o Numero da NFS-e.

               NotasFiscais.NumeroLote := FormatFloat('###0', CDSNota2.FieldByName('Numero').asInteger);

               //NotasFiscais.NumeroLote := '1';
               //Alteracao
               //NotasFiscais.Transacao := True;

               With NotasFiscais.Add.NFSe do
                  Begin
                     {$REGION 'Informações de RPS e Regime da Empresa'}

                     If ConfiguracaoIni.TxtRps.Text = '' then
                        IdentificacaoRps.Numero := FormatFloat('#########0', CDSNota2.FieldByName('Numero').asInteger)
 

Share this post


Link to post
Share on other sites
30 minutos atrás, pradilsoncarlos disse:

estou passando o número da NFSe junto com o número do lote, o mesmo número que informo na nota informo no lote

qual o forma correta de informar o número do lote ?

ACBRNFSe1.NotasFiscais.NumeroLote := ?????

Agora, pradilsoncarlos disse:

qual o forma correta de informar o número do lote ?

ACBRNFSe1.NotasFiscais.NumeroLote := ?????

No meu xml não aparece a tag NumeroLote

Share this post


Link to post
Share on other sites
47 minutos atrás, pradilsoncarlos disse:

qual o forma correta de informar o número do lote ?

ACBRNFSe1.NotasFiscais.NumeroLote := ?????

No meu xml não aparece a tag NumeroLote

É porque vc esta olhando no arquivo errado (nfse), olhe nos arquivos que contem "-env-lot" no nome, marca no seu componente para salvar todos XMLs. O Numero do Lote tem que ser aumentado cada vez que voce envia. Mesmo que seja o mesmo RPS.

ACBRNFSe1.NotasFiscais.NumeroLote :=  ACBRNFSe1.NotasFiscais.NumeroLote + 1;

  • Like 1

Share this post


Link to post
Share on other sites
16 horas atrás, hetoandrade disse:

É porque vc esta olhando no arquivo errado (nfse), olhe nos arquivos que contem "-env-lot" no nome, marca no seu componente para salvar todos XMLs. O Numero do Lote tem que ser aumentado cada vez que voce envia. Mesmo que seja o mesmo RPS.

ACBRNFSe1.NotasFiscais.NumeroLote :=  ACBRNFSe1.NotasFiscais.NumeroLote + 1;

Eu vi um exemplo onde o programador falava que informava da seguinte maneira:

data e hora, minuto e segundo de trás pra frente tipo assim 20190517101614, posso fazer dessa maneira ?

ai ficaria sssim ACBRNFSe1.NotasFiscais.NumeroLote := 20190517101614 

Share this post


Link to post
Share on other sites

Bom dia Adilson,

O numero do lote que é gerado no XML deve ser passado como parâmetros pelos métodos Enviar ou EnviarSincrono, veja a sintaxe:

    function Enviar(ALote: integer; Imprimir: Boolean = True): Boolean; overload;
    function EnviarSincrono(ALote: Integer; Imprimir: Boolean = True): Boolean; overload;
 

  • Like 1

Consultor SAC ACBr Italo Jurisato 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

Share this post


Link to post
Share on other sites
3 minutos atrás, Italo Jurisato Junior disse:

Bom dia Adilson,

O numero do lote que é gerado no XML deve ser passado como parâmetros pelos métodos Enviar ou EnviarSincrono, veja a sintaxe:

    function Enviar(ALote: integer; Imprimir: Boolean = True): Boolean; overload;
    function EnviarSincrono(ALote: Integer; Imprimir: Boolean = True): Boolean; overload;
 

Peço que perdoe pelas minhas limitações, mas eu não entendi.

Como vou passar essas informações, como verifico se o servidor é síncrono ?

Share this post


Link to post
Share on other sites
33 minutos atrás, pradilsoncarlos disse:

Peço que perdoe pelas minhas limitações, mas eu não entendi.

Como vou passar essas informações, como verifico se o servidor é síncrono ?

Acho que não me expressei bem no questionamento, na vdd minha dúvida é como saber quais servidores são SÍNCRONOS ou ASSINCRONOS.

Share this post


Link to post
Share on other sites

Adilson,

No arquivo INI do provedor em questão você acaba descobrindo.

A principio os provedores que seguem a versão 1 do layout da ABRASF só oferecem o serviço de envio assíncrono (método Enviar).

Já os que seguem a versão 2 costumam oferecer os 3 serviços: envio assíncrono, envio síncrono e o gerar (métodos: Enviar, EnviarSincrono e Gerar).

Exemplos:

provedor que segue a versão 1

Layout=ABRASFv1

provedor que segue a versão 2

Layout=ABRASFv2
 

Mas existem provedores que seguem a versão 2, mas não oferecem os 3 serviços como é o caso do TcheInfov2 que só tem o serviço de envio síncrono.

  • Like 2

Consultor SAC ACBr Italo Jurisato 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

Share this post


Link to post
Share on other sites

No Botão Enviar da NFSe ficou assim:

      If wIBGE = '3552601' then //Tabapua
         Retorno := ACBrNFSe1.EnviarSincrono(CDSNota2.FieldByName('Codigo').asInteger)
      Else
         Retorno := ACBrNFSe1.Enviar(CDSNota2.FieldByName('Codigo').asInteger, False);

 

e no botão gerar NFSe ficou assim:

               NotasFiscais.NumeroLote := FormatFloat('#####0', CDSNota2.FieldByName('Codigo').asInteger);
 

 

Está correto ?

Share this post


Link to post
Share on other sites
29 minutos atrás, pradilsoncarlos disse:

No Botão Enviar da NFSe ficou assim:

      If wIBGE = '3552601' then //Tabapua
         Retorno := ACBrNFSe1.EnviarSincrono(CDSNota2.FieldByName('Codigo').asInteger)
      Else
         Retorno := ACBrNFSe1.Enviar(CDSNota2.FieldByName('Codigo').asInteger, False);

 

e no botão gerar NFSe ficou assim:

               NotasFiscais.NumeroLote := FormatFloat('#####0', CDSNota2.FieldByName('Codigo').asInteger);
 

 

Está correto ?

 

nfse3.png

nfse2.png

Share this post


Link to post
Share on other sites

Bom dia Adilson,

Primeiramente você esta misturando as coisas, como informar o numero do lote e o método Consultar Situação do Lote.

Vamos seguir as regras do fórum, para cada problema uma postagem diferente.

O numero do lote é informado como parâmetro nos métodos Enviar e EnviarSincrono.

No Gerar não tem numero do lote pelo simples fato de ser enviado um RPS por vez.

Com relação ao erro que apareceu ao tentar Consultar a situação do Lote a explicação é muito simples, esse serviço não existe nos webservices dos provedores que seguem a versão 2 do layout da ABRASF, ele esta presente somente na versão 1.

Como saber qual versão do layout da ABRASF o provedor segue, já te mostrei em uma postagem minha acima.

  • Like 1

Consultor SAC ACBr Italo Jurisato 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

Share this post


Link to post
Share on other sites
47 minutos atrás, Italo Jurisato Junior disse:

Bom dia Adilson,

Primeiramente você esta misturando as coisas, como informar o numero do lote e o método Consultar Situação do Lote.

Vamos seguir as regras do fórum, para cada problema uma postagem diferente.

O numero do lote é informado como parâmetro nos métodos Enviar e EnviarSincrono.

No Gerar não tem numero do lote pelo simples fato de ser enviado um RPS por vez.

Com relação ao erro que apareceu ao tentar Consultar a situação do Lote a explicação é muito simples, esse serviço não existe nos webservices dos provedores que seguem a versão 2 do layout da ABRASF, ele esta presente somente na versão 1.

Como saber qual versão do layout da ABRASF o provedor segue, já te mostrei em uma postagem minha acima.

Não tinha visto sua resposta e fiz outra postagem.

Quanto a abrir uma nova postagem, eu só não fiz isso porque são os problemas que estou tendo em sequencia, conforme eles aparecem eu posto aqui, pra mim era tudo consequencia do envio do lote.

Se o não existe esse serviço no servidor porque então estava vindo essa mensagem 

nfse1.png

Share this post


Link to post
Share on other sites

Adilson,

Acredito que você não entendeu como a coisa funciona.

Esse provedor existe que o numero do lote passado como parâmetro nos métodos Enviar e EnviarSincrono seja sequencial.

Uma coisa é o numero do Lote, outra coisa é o numero do RPS.

Essa mensagem de erro não tem nada haver com o método Consultar Situação do Lote e sim é o retorno do webservice ao enviar o lote.

  • Like 1

Consultor SAC ACBr Italo Jurisato 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

Share this post


Link to post
Share on other sites
4 minutos atrás, Italo Jurisato Junior disse:

Adilson,

Acredito que você não entendeu como a coisa funciona.

Esse provedor existe que o numero do lote passado como parâmetro nos métodos Enviar e EnviarSincrono seja sequencial.

Uma coisa é o numero do Lote, outra coisa é o numero do RPS.

Essa mensagem de erro não tem nada haver com o método Consultar Situação do Lote e sim é o retorno do webservice ao enviar o lote.

A partir do momento que eu comecei a passar o seguinte código:

 

NotasFiscais.NumeroLote := FormatFloat('#####0', CDSNota2.FieldByName('Codigo').asInteger) ---- no botão gerar;

e o código abaixo no botão enviar:

  If wIBGE = '3552601' then //Tabapua
         Begin
            Retorno := ACBrNFSe1.EnviarSincrono(CDSNota2.FieldByName('Codigo').asInteger);
         End
      Else
         Retorno := ACBrNFSe1.Enviar(CDSNota2.FieldByName('Codigo').asInteger, True);

 

ai começou a aparecer a seguinte mensagem:

 

 

 

foi a partir daqui que me retornou a mensagem

mensagem atual.png

por isso não abri nova dúvida.

Estou meio confuso mesmo sobre quem é quem, com base no que li nos manuais fiz a alimentação dessa forma, talvez eu não tenha entendido corretamente

Share this post


Link to post
Share on other sites

Boa tarde Adilson,

Essa mensagem não tem nada haver com a sua postagem anterior, que fazia referencia ao numero do lote.

Essa mensagem de erro que tem haver com a Consulta a situação do Lote, é por que a sua aplicação esta executando esse método, sendo que não deve.

Você esta enviando um RPS para o provedor Pronimv2, conforme consta na mensagem de erro.

Esse provedor segue a versão 2 do layout da ABRASF.

Volto a lhe dizer que os provedores que seguem a versão 2 não tem o serviço de Consultar a Situação do Lote.

Você tem que condicionar a execução do método ConsultarSituação.

Inclua na sua aplicação na tela de configuração, um campo que diz se é para executar ou não esse método.

  • Like 2

Consultor SAC ACBr Italo Jurisato 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

Share this post


Link to post
Share on other sites

Boa Tarde.

Italo, me perdoa, mas não estou conseguindo entender.

Se vc acha que devo iniciar um novo fórum faço isso. Meu código está assim, só me diz se essa é a forma correta.

Botão Gerar:  

Aqui eu crio e atribuo um número sequencial para o Lote

            With BDados.Parametro2 Do
               Begin
                  Sql.Clear;
                  Sql.Add('SELECT COALESCE(MAX(LOTE),0) + 1 LOTE ');
                  Sql.Add('  FROM NFEEMPRESA                     ');
                  Sql.Add(' WHERE CODIGO = :WCODIGO              ');
                  Params[0].Value := wEmpresa;
                  Open;
                  wLote := FieldByName('LOTE').AsInteger;
                  Close;

                  Sql.Clear;
                  Sql.Add('UPDATE NFEEMPRESA SET LOTE = :WLOTE  ');
                  Sql.Add(' WHERE CODIGO = :WCODIGO             ');
                  Params[0].Value := wLote;
                  Params[1].Value := wEmpresa;
                  ExecSQL;

               End;
 NotasFiscais.NumeroLote := FormatFloat('#####0', wLote);

 

Botão Enviar:

Aqui eu faço uma verificação para qual municipio ele está enviando a nota e executo o enviar

       If wIBGE = '3552601' then //Tabapua
         Begin
            Retorno := ACBrNFSe1.EnviarSincrono(wLote);
         End
      Else
         Retorno := ACBrNFSe1.Enviar(wLote, True);
 

Share this post


Link to post
Share on other sites

Adilson,

Em vez de você checar o código do município para saber se vai executar o método EnviarSincrono ou não, porque você não cria uma opção de configuração na sua aplicação que defini essa situação?

Tela de configuração:

[  ] Envio Síncrono

[  ] Consultar Situação do Lote

Se estiver "ticado" significa que sim.

A sua rotina no final ficaria desta forma:
 

if chkEnvioSincrono  then // a variável chkEnvioSincrono é do tipo boolean
  Retorno := ACBrNFSe1.EnviarSincrono(wLote)
else
  Retorno := ACBrNFSe1.Enviar(wLote, True);

// NumProtocolo é uma variavel que contem o numero do protocolo retornado após o envio
// é utilizado no método ConsultarSituacao e no ConsultarLoteRps onde devemos informar 
// o numero do lote e o numero do protocolo
(...)

if chkConsultarSituacao  then // a variável chkConsultarSituacao é do tipo boolean
  Retorno := ACBrNFSe1.ConsultarSituacao(NumProtocolo)

 

  • Like 1

Consultor SAC ACBr Italo Jurisato 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

Share this post


Link to post
Share on other sites
23 horas atrás, Italo Jurisato Junior disse:

Adilson,

Em vez de você checar o código do município para saber se vai executar o método EnviarSincrono ou não, porque você não cria uma opção de configuração na sua aplicação que defini essa situação?

Tela de configuração:

[  ] Envio Síncrono

[  ] Consultar Situação do Lote

Se estiver "ticado" significa que sim.

A sua rotina no final ficaria desta forma:
 

if chkEnvioSincrono  then // a variável chkEnvioSincrono é do tipo boolean
  Retorno := ACBrNFSe1.EnviarSincrono(wLote)
else
  Retorno := ACBrNFSe1.Enviar(wLote, True);

// NumProtocolo é uma variavel que contem o numero do protocolo retornado após o envio
// é utilizado no método ConsultarSituacao e no ConsultarLoteRps onde devemos informar 
// o numero do lote e o numero do protocolo
(...)

if chkConsultarSituacao  then // a variável chkConsultarSituacao é do tipo boolean
  Retorno := ACBrNFSe1.ConsultarSituacao(NumProtocolo)

 

Quero agradecer pelo código aqui enviado, deu certo, só tenho uma dúvida a seguinte linha vai ser alimentada da seguinte forma:

NotasFiscais.NumeroLote := FormatFloat('#####0', wLote);

é isso mesmo?

  • Like 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...