Ir para conteúdo
  • Cadastre-se

dev botao

Sugestão ID do Evento Gerarxml


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

Recommended Posts

Postado

Todos os Eventos tem a

  property .id

que não esta sendo utilizada.

se na geração do XML o ID grupol fosse usando a propriedade  id

 

exemplo:

  evtAdmissao.id

 

quando na unit pces2200 

    GerarCabecalho('evtAdmissao');

Mudar de: ( esta sendo passado "o") deveria se passado o id
    Gerador.wGrupo('evtAdmissao Id="' + GerarChaveEsocial(now, self.ideEmpregador.NrInsc, 0) + '"');

Para

    Gerador.wGrupo('evtAdmissao Id="' + GerarChaveEsocial(now, self.ideEmpregador.NrInsc,  strtoint(self.Id)) + '"');

 

Acho que em todos os geraxml deveria usar .id para compor o id do Evento, assim quem desejasse teria um ID do Evento personalizado

Postado
6 minutos atrás, EdmarFrazao disse:

Todos os Eventos tem a

  property .id

que não esta sendo utilizada.

se na geração do XML o ID grupol fosse usando a propriedade  id

 

exemplo:

  evtAdmissao.id

 

quando na unit pces2200 

    GerarCabecalho('evtAdmissao');

Mudar de: ( esta sendo passado "o") deveria se passado o id
    Gerador.wGrupo('evtAdmissao Id="' + GerarChaveEsocial(now, self.ideEmpregador.NrInsc, 0) + '"');

Para

    Gerador.wGrupo('evtAdmissao Id="' + GerarChaveEsocial(now, self.ideEmpregador.NrInsc,  strtoint(self.Id)) + '"');

 

Acho que em todos os geraxml deveria usar .id para compor o id do Evento, assim quem desejasse teria um ID do Evento personalizado

Boa tarde, de acordo com o layout, só os 5 últimos caracteres do ID podem ser "personalizados", o restante é uma regra fixa que está sendo obedecida pela função.

image.png.31d9746a4575d7cae0944da0d7304548.png

Que no caso é só você passar o parâmetro "sequencial" que já existe na chamada da função:

function TeSocialEvento.GerarChaveEsocial(const emissao: TDateTime; const CNPJF: string; sequencial: Integer; AOrgaoPublico: Boolean): String;

 

Postado

É isto que estou propondo que seja alterado,

A função GerarChaveEsocial , esta recebendo em todos os métodos "zero" e não o .id de cada evento.

Seria uma alteração em todas as units que chamam a função GerarChaveEsocial  onde esta passando "zero" no sequencial passar a propriedade "self.id"

, alias a alteração teria que ser feita em todos as units do evento

pces1000

pces1005

... ate a última.

  • Consultores
Postado

Bom dia a todos,

Fiz algumas alterações no componente em relação ao ID e a geração da chave.

No meu entendimento a propriedade ID deve conter o ID completo ou seja a chave do evento.

Sendo assim fiz uma alteração visando alimentar essa propriedade com o retorno da função GerarChaveeSocial.

Acrescentei uma nova propriedade chamada Sequencial.

Ela deve ser alimentada ao alimentar os demais campos dos eventos, por exemplo:

    with ACBreSocial1.Eventos.Iniciais.S1000.Add do
    begin
      evtInfoEmpregador.Sequencial := 0;
     (...)

Se o valor atribuído a propriedade Sequencial for zero (conforme o exemplo) a função GerarChaveeSocial vai gerar um numero aleatório para compor o último elemento da chave (conforme tabela postada pelo Paulo), caso contrario será utilizado o numero informado.

Vejam como ficou a unit do evento S-1000:

    Self.Id := GerarChaveEsocial(now, self.ideEmpregador.NrInsc, self.Sequencial, ATipoEmpregador);

    GerarCabecalho('evtInfoEmpregador');
    Gerador.wGrupo('evtInfoEmpregador Id="' + Self.Id + '"');

Notem que a função GerarChaveeSocial agora recebe o valor da propriedade Sequencial e não mais a constante zero como estava antes e também recebe o Tipo do Empregador que é definido em propriedade de configuração do componente, onde podemos escolher entre tePessoaJuridica ou teOrgaoPublico.

O que vocês acharam da implementação?
 

  • 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

Postado
14 minutos atrás, Italo Jurisato Junior disse:

Bom dia a todos,

Fiz algumas alterações no componente em relação ao ID e a geração da chave.

No meu entendimento a propriedade ID deve conter o ID completo ou seja a chave do evento.

Sendo assim fiz uma alteração visando alimentar essa propriedade com o retorno da função GerarChaveeSocial.

Acrescentei uma nova propriedade chamada Sequencial.

Ela deve ser alimentada ao alimentar os demais campos dos eventos, por exemplo:

    with ACBreSocial1.Eventos.Iniciais.S1000.Add do
    begin
      evtInfoEmpregador.Sequencial := 0;
     (...)

Se o valor atribuído a propriedade Sequencial for zero (conforme o exemplo) a função GerarChaveeSocial vai gerar um numero aleatório para compor o último elemento da chave (conforme tabela postada pelo Paulo), caso contrario será utilizado o numero informado.

Vejam como ficou a unit do evento S-1000:

    Self.Id := GerarChaveEsocial(now, self.ideEmpregador.NrInsc, self.Sequencial, ATipoEmpregador);

    GerarCabecalho('evtInfoEmpregador');
    Gerador.wGrupo('evtInfoEmpregador Id="' + Self.Id + '"');

Notem que a função GerarChaveeSocial agora recebe o valor da propriedade Sequencial e não mais a constante zero como estava antes e também recebe o Tipo do Empregador que é definido em propriedade de configuração do componente, onde podemos escolher entre tePessoaJuridica ou teOrgaoPublico.

O que vocês acharam da implementação?
 

Acho bem válido essa alteração, visto que dessa forma, poderá ser gerado o Id de forma personalizada, outro detalhe que vejo que é de extrema importância é como posso resgatar a chave antes de gerar o xml, visto que esse ID é importante que seja armazenado junto com o protocolo de envio/processamento.. Da forma que está hoje, eu não consigo resgatar e salvar em banco por exemplo..

  • Consultores
  • Solution
Postado

Bom dia Joceandro,

Primeiro é preciso gerar o XML do evento depois você pode ler a propriedade Id da seguinte forma:

Vamos usar como exemplo o evento S-1000.

xID := ACBreSocial1.Eventos.Iniciais.S1000.Items[ x ].evtInfoEmpregador.Id;

Todos os eventos são uma lista, logo podemos ter mais de 1 evento S-1000, sendo assim cada um terá o seu ID, ou seja, a sua chave.
 

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

Postado
8 minutos atrás, Italo Jurisato Junior disse:

Bom dia Joceandro,

Primeiro é preciso gerar o XML do evento depois você pode ler a propriedade Id da seguinte forma:

Vamos usar como exemplo o evento S-1000.

xID := ACBreSocial1.Eventos.Iniciais.S1000.Items[ x ].evtInfoEmpregador.Id;

Todos os eventos são uma lista, logo podemos ter mais de 1 evento S-1000, sendo assim cada um terá o seu ID, ou seja, a sua chave.
 

Entendi, vou usar desta forma.. Obrigado..

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