Ir para conteúdo
  • Cadastre-se

dev botao

Lote do evento


Ver Solução Respondido por Renato Rubinho,
  • Este tópico foi criado há 1055 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Olá ao passar o tpEvento:= teManifDestCiencia e executar o ACBrNFe.EnviarEvento(nLote), o nLote esta com valor fixo sempre deixei com um valor por exemplo "1".

Pode deixar assim mesmo ou devo sempre atualizar esse numero de lote?

Desde já agradeço.

Postado
14 minutos atrás, Renato Rubinho disse:

De acordo com a NT, não teria problema pois não validam.

Eu mando yymmddhhnn + um random por via das dúvidas.

Obrigado.

  • Curtir 1
  • 1 mês depois ...
Postado
Em 09/11/2021 at 16:58, Renato Rubinho disse:

De acordo com a NT, não teria problema pois não validam.

Eu mando yymmddhhnn + um random por via das dúvidas.

Boa tarde @Renato Rubinho,

 

Utilizamos aqui na empresa quase o mesmo esquema seu, para gerar o número do lote fazemos yymmddhhmm. A única diferença é que não acrescentamos esse random ao final. Porém hoje 03/01/2022, começamos a ter problemas com a conversão para inteiro no ACBr em Delphi. A assinatura da função é Integer, porém ao converter de manhã após virar o ano, gerou o número 2201031127 (2.201.031.127). Porém o limite máximo do Inteiro é 2.147.483.647, sendo assim apresentou o erro:

 

image.png.982e794f9359d513f36981c0ef3462f8.png 

 

Você não chegou a ter esse problema no seu sistema ?

 

Se sim, qual estratégia utilizou para solucionar ? Estamos verificando o manual da NF-e, etc, mas não conseguimos encontrar um lugar onde pudéssemos ter a certeza que não haveria problema nesse número repetir. 

 

Att,

  • Consultores
Postado

Boa noite,

Seguem considerações.

1. Costumo usar StrToIntDef, com isso o sistema não parou com o estouro de valor.

2. O texto que citei neste tópico foi extraído da NT e nos dá segurança de que não há problema em repetir o número por enquanto.

Em 09/11/2021 at 16:45, Renato Rubinho disse:

 

 

 

Em 09/11/2021 at 16:45, Renato Rubinho disse:

De acordo com a NT2012_002 v1.02, o campo HP03 idLote é de responsabilidade do autor e "O Web Service não faz qualquer uso ou controle deste identificador."

https://svn.code.sf.net/p/acbr/code/tools/DFe/NFeNFCe/NT/2012/NFe_NT2012_002 v1.02 Manifestacao do Destinatario.pdf

 

3. Uma solução para não repetir o lote, caso ainda não tenham, é colocar um contador sequencial autoinc gerenciado pelo seu sistema, iniciado em zero.

Se eu pensar em algo quando for ver isso, posto aqui.

  • Curtir 1
Postado (editado)

Bom dia a todos,

 

Para corrigir o problema. Adotamos a seguinte estratégia aqui na empresa. Antes usavamos a seguinte formatação: yymmddhhmm.

Esse formatação gerava um número de 10 posições que começou a apresentar o problema em questão pelo estouro do inteiro. Então fizemos a substituição mmdd (mês e dia) que ocupava 4 posições, pelo número do dia real no ano, que irá variar de 001 a 365, tendo somente 3 posições. Sendo assim não irá mais atingir a casa do bilhão.

Pegando como exemplo hoje 04/01/2022 às 09:44:

Antes:  2201040944

Depois:  220040944

Att,

Editado por danielznt
  • Curtir 3
Postado
1 minuto atrás, Dfox disse:

uma outra solução  

NumeroLote := StrToInt64(FormatDateTime('yymmddhhmm', NOW));

Tentamos essa solução, porém na variável fica correto, mas hora de atribuir ao componente, o mesmo é do tipo Integer e ai o problema também foi apresentando (não sei o motivo mas em alguns casos até funcionou, porém gerando lote negativo). 

Postado

acho que por se tratar de um lote fica mais viavel fazer assim 

 // vamos iniciar o gerador de números randômicos
  Randomize;

  // vamos gerar um número aleatório entre 0 e 999999
  NumeroLote := Random(999999);

 

  • Consultores
Postado
3 horas atrás, danielznt disse:

Bom dia a todos,

 

Para corrigir o problema. Adotamos a seguinte estratégia aqui na empresa. Antes usavamos a seguinte formatação: yymmddhhmm.

Esse formatação gerava um número de 10 posições que começou a apresentar o problema em questão pelo estouro do inteiro. Então fizemos a substituição mmdd (mês e dia) que ocupava 4 posições, pelo número do dia real no ano, que irá variar de 001 a 365, tendo somente 3 posições. Sendo assim não irá mais atingir a casa do bilhão.

Pegando como exemplo hoje 04/01/2022 às 09:44:

Antes:  2201040944

Depois:  220040944

Att,

Boa opção, só o "n" para minutos ao invés de "m", tenho visto muitas pessoas utilizando o "m", que repetiria o mês.

Outras duas alternativas para quem quiser:

1. Trunc( now * 10000 )

vai pegar o datetime em ponto flutante até os 9 dígitos sem chegar no bilhão também

2. mmyyddhhnn

com o Mês no início, o primeiro dígito sempre será 1, não estourando o limite do integer.

  • Consultores
Postado

Por favor atualize seus fontes, pelo SVN do ACBr... 

Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico...

Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido...

Dúvidas, sobre o uso do SVN ?  Clique aqui e veja um vídeo

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Postado
1 hora atrás, Victor H. Gonzales - Panda disse:

Por favor atualize seus fontes, pelo SVN do ACBr... 

Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico...

Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido...

Dúvidas, sobre o uso do SVN ?  Clique aqui e veja um vídeo

faltou mudar no parâmetro ACBrMDFe1.Enviar() esta tipo integer ainda

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