Ir para conteúdo
  • Cadastre-se

dev botao

Geração do ID dos eventos (pcesGerador.pas)


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

Recommended Posts

Postado

Olá a todos.

Temos um situação que ocorre esporadicamente no envio de informações ao eSocial.

O lote gerado pelo ACBr contém mais de um evento com o mesmo número de ID.

Ao fazer uma analise do código onde o ID é gerado (pcesGerador.pas linha 382) percebi que a função random é utilizada, mais o gerador de números aleatórios nunca foi inicializado, usando a função randomize como informado na ajuda do Delphi 2010 abaixo.

Citar

Generates random numbers within a specified range.

In Delphi code, Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range:

0 <= X < 1.

To initialize the random number generator, add a single call Randomize or assign a value to the RandSeed variable before making any calls to Random.

 

Estou enviando em anexo a unit com a implementação aqui sugeridas, para se for o caso, seja incorporada ao repositório do ACBr.

Fico a disposição para qualquer esclarecimento necessário.

@Italo Jurisato Junior

pcesGerador.pas

Postado

Pessoal, fiz mais alguns testes aqui e está solução não funcionou corretamente.

Criei um programa para gerar e gravar no banco de dados 1.000.000 de IDs. Após executar por várias vezes tive uma média de 60.000 IDs repetidos.

A solução que encontrei foi criar um campo sequencial dentro do componente TeSocialEvento e utilizá-lo ao invés do número aleatório.

Seque em anexo a unit altera para apreciação.

Fico aberto a sugestões ou esclarecimentos.

pcesGerador.pas

  • Consultores
  • Solution
Postado

Bom dia Gustavo,

Se você analisar o programa exemplo vai notar que todos os eventos possui um campo chamado Sequencial.

No programa exemplo esse campo recebe o valor zero e o componente gera um numero aleatório.

Mas na sua aplicação você deve atribuir um valor diferente de zero.

Como é validado o ID dos eventos, veja a regra abaixo:

A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue:

IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ

ID - Texto Fixo "ID";

T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF);

NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 posições de acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário.

AAAAMMDD - Ano, mês e dia da geração do evento;

HHMMSS - Hora, minuto e segundo da geração do evento;

QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de eventos na mesma data/hora, completando com zeros à esquerda.

OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. 

  • Curtir 1
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

  • Este tópico foi criado há 2427 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...
The popup will be closed in 10 segundos...