Jump to content

dev botao

Sugestão ID do Evento Gerarxml


Go to solution Solved by Italo Giurizzato Junior,
  • Este tópico foi criado há 2494 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

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

Posted
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;

 

Posted

É 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
Posted

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?
 

  • Like 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

Posted
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
Posted

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

Posted
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á 2494 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...