Jump to content

Delphi chamada_delphi.png acbr.png

C6 chamada_c6.png botao.png

Sugestão ID do Evento Gerarxml


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

Recommended Posts

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

Link to comment
Share on other sites

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;

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • Consultores

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 / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • Consultores
  • Solution

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 / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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