Ir para conteúdo
  • Cadastre-se

dev botao

Ajuste no evento S-2206 campo tpRegJor


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

Recommended Posts

Postado

bom dia, no evento S2999, o xml não gera as verbas de rescisão se não contiver pagamentos anteriores, comentei a linha abaixo e foi gerado normalmente as verbas. acredito que isso resolva mas não tenho conhecimento profundo de componentes. segue anexo a unit comentada.

procedure TEvtDeslig.GerarDmDev(pDmDev: TDmDevCollection);
var
  i: integer;
begin
  for i := 0 to pDmDev.Count - 1 do
  begin
    Gerador.wGrupo('dmDev');

    Gerador.wCampo(tcStr, '', 'ideDmDev', 1, 30, 1, pDmDev.ideDmDev);

//    if pDmDev.infoPerAntInst then
      GerarInfoPerApur(pDmDev.infoPerApur);

    if pDmDev.infoPerAntInst then
      GerarInfoPerAnt(pDmDev.infoPerAnt);

    GerarInfoTrabInterm(pDmDev.infoTrabInterm);

    Gerador.wGrupo('/dmDev');
  end;

  if pDmDev.Count > 50 then
    Gerador.wAlerta('', 'dmDev', 'Lista de Demonstrativos', ERR_MSG_MAIOR_MAXIMO + '50');
end;
 

pcesS2299.pas

Postado

Bom dia Italo, tudo bem ?

Estou com um problema no eSocial e gostaria de saber se você pode me ajudar, esta funcionando tudo perfeitamente mas o problema é quando acontece algum erro no evento, segue um exemplo abaixo, abaixo esta como ocorrência 0 ,1 e 3, e pode ser que no envio ele esteja em outro id, como mostrar qual o registro foi errado, como identificar, neste exemplo enviei 50 eventos da tabela de cargos s-1030, 3 estão errados, obrigado.

 

 Ocorrencia 0
   Código:252
   Descrição: CBO inválido.
Ação Sugerida: O valor informado no campo deverá existir na Tabela de CBO.
   Tipo: 1
   Localização:/eSocial/evtTabCargo/infoCargo/inclusao/dadosCargo/codCBO

  • Consultores
Postado

Boa tarde fabibona,

Se ao gerar o evento, antes do seu envio você guardar o ID do mesmo no banco de dados, ao consultar o lote, você pode comparar esse ID com o ID da lista de eventos retornados e assim saber quais eventos foram processados com sucesso e quais não foram.

Para ler o ID após gerar o evento faça assim:

(por exemplo)  ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items[ x ].EvtExclusao.Id
 

Para ler o ID do retorno faça assim:

    ACBreSocial1.WebServices.ConsultaLote.RetConsultaLote.RetEventos.items[ x ].Id
 

Se esses dois ID foram iguais você tem ai o resultado do processamento do respectivo evento.

Espero ter ajudado.

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
51 minutos atrás, Italo Jurisato Junior disse:

Boa tarde fabibona,

Se ao gerar o evento, antes do seu envio você guardar o ID do mesmo no banco de dados, ao consultar o lote, você pode comparar esse ID com o ID da lista de eventos retornados e assim saber quais eventos foram processados com sucesso e quais não foram.

Para ler o ID após gerar o evento faça assim:

(por exemplo)  ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items[ x ].EvtExclusao.Id
 

Para ler o ID do retorno faça assim:

    ACBreSocial1.WebServices.ConsultaLote.RetConsultaLote.RetEventos.items[ x ].Id
 

Se esses dois ID foram iguais você tem ai o resultado do processamento do respectivo evento.

Espero ter ajudado.

Boa tarde Italo,

Eu pensei que tinha uma forma automática de pegar o erro com o mesmo id, eu achei que quando enviamos o id, ela ficava guardada naquele respectivo protocolo e quando consultado o lote quando houvesse erro retornaria no mesmo id enviado, mas não ele começa como ocorrencia 0 em diante, então tenho que fazer o que você sugeriu, guardar o id na hora do envio do evento e depois comparar com o do retorno qual esta com erro, não vai ter outro jeito, se pelo meno no retorno viesse mais informações, por exemplo o nome do funcionário ou o nome do cargo ficaria muito mais fácil para tratar o erro

Obrigado pela ajuda.

Postado

Italo, poderia me dar um exemplo de como capturar a id no evento inicial S1000, nao consegui detectar o valor de items porque nao retorna items [0], items [1] e nao consegui criar um for adequado para capturar o Id.

ACBreSocial1.Eventos.Iniciais.S1000.Items.evtInfoEmpregador.Id

obrigado pela ajuda.

Postado

Postem em novo tópico sua duvida.

 Id so fica disponivel depois de execuat o salvaxml

ai vc teriq que varrem os items e capturar o id.

eu adotei enviar o sequencial que sao os ultimos 6 digitos do id.

e como cada evento tem um sequencial fica facil gerar e no retorno saber qual evento e sequencia aquele id se refere

Postado (editado)
17 horas atrás, Italo Jurisato Junior disse:

Boa tarde fabibona,

Se ao gerar o evento, antes do seu envio você guardar o ID do mesmo no banco de dados, ao consultar o lote, você pode comparar esse ID com o ID da lista de eventos retornados e assim saber quais eventos foram processados com sucesso e quais não foram.

Para ler o ID após gerar o evento faça assim:

(por exemplo)  ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items[ x ].EvtExclusao.Id
 

Para ler o ID do retorno faça assim:

    ACBreSocial1.WebServices.ConsultaLote.RetConsultaLote.RetEventos.items[ x ].Id
 

Se esses dois ID foram iguais você tem ai o resultado do processamento do respectivo evento.

Espero ter ajudado.

Depois de gerar o xml.

e so varrer o evento e pegar o id.

ou ao gerar o evento

evento.sequencial , este e so os ultimos 6 digitos do Id

Editado por EdmarFrazao
Postado

eu tentei com ACBreSocial1.Eventos.Iniciais.S1000.Items .evtInfoEmpregador.Id mas nao tem for-next para identificar Items , dai fiquei sem recurso. como voce escreve a linha e dentro de qual estrutura?
estou tentando dentro de with eSocial.WebServices.EnvioLote.RetEnvioLote do 

 

Postado
3 horas atrás, Curitiba Computer Ltda disse:

eu tentei com ACBreSocial1.Eventos.Iniciais.S1000.Items .evtInfoEmpregador.Id mas nao tem for-next para identificar Items , dai fiquei sem recurso. como voce escreve a linha e dentro de qual estrutura?
estou tentando dentro de with eSocial.WebServices.EnvioLote.RetEnvioLote do 

 

Não estou no computar p testar mas

ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items[ x ].EvtExclusao.Id

depois q gera o xml o obj tem o id atualizado

basta trocar s3000 p o evento q deseja, .items.count 

seria

gera xml depois ler o id

For x:=0 to ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items.count -1

begin

ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items[ x ].EvtExclusao.Id

end

Postado (editado)

edmar, eu fiz exatamente dessa forma mas ACBreSocial1.Eventos.NaoPeriodicos.S3000.Items.count -1 nao tem items.count. 

por isso a dificuldade...

meu bloco...

      eSocial.assinareventos;

      eSocial.enviar (TESocialGrupo(1));
      sleep (3000);

      identificacao:= '';
      mmoRet.Lines.Text := eSocial.WebServices.EnvioLote.RetWS;
      with mmoStatus.Lines do
      begin
        with eSocial.WebServices.EnvioLote.RetEnvioLote do
        begin
          identificacao:= inttostr (eSocial.Eventos.Iniciais.S1000.items [0].evtInfoEmpregador.Sequencial);

          for I:= 0 to Status.Ocorrencias.Count - 1 do
          begin
            identificacao:= iif (tabela='S1000', eSocial.Eventos.Iniciais.S1000.Items.evtInfoEmpregador.Id,
                            iif (tabela='S1005', eSocial.Eventos.Iniciais.S1005.Items.evtTabEstab.Id,
                            iif (tabela='S1010', eSocial.Eventos.Tabelas.S1010.Items.EvtTabRubrica.Id,
                            iif (tabela='S1020', eSocial.Eventos.Tabelas.S1020.Items.EvtTabLotacao.Id,
                            iif (tabela='S1030', eSocial.Eventos.Tabelas.S1030.Items.EvtTabCargo.Id,
                            iif (tabela='S1035', eSocial.Eventos.Tabelas.S1035.Items.evtTabCarreira.Id,
                            iif (tabela='S1040', eSocial.Eventos.Tabelas.S1040.Items.EvtTabFuncao.Id,
                            iif (tabela='S1050', eSocial.Eventos.Tabelas.S1050.Items.EvtTabHorContratual.Id,
                            iif (tabela='S1060', eSocial.Eventos.Tabelas.S1060.Items.EvtTabAmbiente.Id,
                            iif (tabela='S1070', eSocial.Eventos.Tabelas.S1070.Items.EvtTabProcesso.Id,
                                                 eSocial.Eventos.Tabelas.S1080.Items.EvtTabOperPortuario.Id))))))))));
          end;
 

Editado por Curitiba Computer Ltda
Postado (editado)

Nao temo com testar,

mas cada evento e uma matriz

Gera os xml, antes de envira

eSocial.Eventos.Iniciais.S1005.Items[x].evtTabEstab.Id

 

ja  o retorno e diferente o id , mensagem etc e em outra propriedade, veja o demo

 

          for I:= 0 to Status.Ocorrencias.count-1

          for I:= 0 to Status.Ocorrencias.propriedade n lembro o nome

tem varias propriedades dentro de ocorrencias

 

 

 

 

 

Editado por EdmarFrazao
  • Este tópico foi criado há 2464 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.