O eSocial possui vários eventos de retorno (S-5001, S-5002, S-5003, S-5011, S-5012, S-5013), esses eventos não são enviados ao eSocial e sim retornados por eles na consulta de alguns eventos.
Cada um desses eventos possui a sua particularidade, são retornados por eventos diferentes e possuem informações diferentes, porém, temos o mesmo padrão de consulta para todos eles. Abaixo, temos uma tabela relacionando os eventos enviados e o retorno.
> Veja os eventos de retorno na prática (vídeo)
| Evento | Retornado por: |
|---|---|
| S-5001 | S-1200 ou S-2299 ou S-2399 |
| S-5002 | S-1210 |
| S-5003 | S-1200 ou S-2299 ou S-2399 |
| S-5011 | S-1299 ou S-1295 |
| S-5012 | S-1299 ou S-1295 |
| S-5013 | S-1299 ou S-1295 |
O Componente da TecnoSpeed trata esse retorno e traz uma variável tipada, dessa forma a verificação das informação fica bem mais rápida e fácil.

Cada um desses eventos terá um retorno tipado com diferentes propriedades. Temos um exemplo de parceamento de cada evento em nossas demonstrações.
Abaixo teremos um exemplo do parceamento do evento S-5002 em Delphi.
if not RetConsultaItem.S5002.IsEmpty then
begin
mmoRetorno.Lines.Add(' ### S5002 ###');
mmoRetorno.Lines.Add(' Id: ' + RetConsultaItem.S5002.Id);
// IdeEvento
mmoRetorno.Lines.Add(' nrRecArqBase: ' + RetConsultaItem.S5002.IdeEvento.NrRecArqBase);
mmoRetorno.Lines.Add(' perApur: ' + RetConsultaItem.S5002.IdeEvento.perApur);
// IdeEmpregador
mmoRetorno.Lines.Add(' tpInsc: ' + RetConsultaItem.S5002.IdeEmpregador.tpInsc);
mmoRetorno.Lines.Add(' nrInsc: ' + RetConsultaItem.S5002.IdeEmpregador.nrInsc);
// IdeTrabalhador
mmoRetorno.Lines.Add(' cpfTrab: ' + RetConsultaItem.S5002.IdeTrabalhador.cpfTrab);
// InfoDep
mmoRetorno.Lines.Add(' vrDedDep: ' + RetConsultaItem.S5002.InfoDep.vrDedDep);
// InfoIrrf
for _a := 0 to RetConsultaItem.S5002.CountInfoIrrf - 1 do
begin
mmoRetorno.Lines.Add(' codCateg: ' + RetConsultaItem.S5002.InfoIrrf[_a].codCateg);
mmoRetorno.Lines.Add(' indResBr: ' + RetConsultaItem.S5002.InfoIrrf[_a].indResBr);
// BasesIrrf
for _b := 0 to RetConsultaItem.S5002.InfoIrrf[_a].CountBasesIrrf - 1 do
begin
mmoRetorno.Lines.Add(' tpValor: ' + RetConsultaItem.S5002.InfoIrrf[_a].BasesIrrf[_b].tpValor);
mmoRetorno.Lines.Add(' Valor: ' + RetConsultaItem.S5002.InfoIrrf[_a].BasesIrrf[_b].valor);
end;
// Irrf
for _b := 0 to RetConsultaItem.S5002.InfoIrrf[_a].CountIrrf - 1 do
begin
mmoRetorno.Lines.Add(' tpCR: ' + RetConsultaItem.S5002.InfoIrrf[_a].Irrf[_b].tpCR);
mmoRetorno.Lines.Add(' vrIrrfDesc: ' +RetConsultaItem.S5002.InfoIrrf[_a].Irrf[_b].vrIrrfDesc);
end;
// IdePais
mmoRetorno.Lines.Add(' codPais: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.IdePais.codPais);
mmoRetorno.Lines.Add(' indNIF: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.IdePais.indNIF);
mmoRetorno.Lines.Add(' nifBenef: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.IdePais.nifBenef);
// EndExt
mmoRetorno.Lines.Add(' dscLograd: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.EndExt.dscLograd);
mmoRetorno.Lines.Add(' nrLograd: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.EndExt.nrLograd);
mmoRetorno.Lines.Add(' complem: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.EndExt.complem);
mmoRetorno.Lines.Add(' bairro: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.EndExt.bairro);
mmoRetorno.Lines.Add(' nmCid: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.EndExt.nmCid);
mmoRetorno.Lines.Add(' codPostal: ' + RetConsultaItem.S5002.InfoIrrf[_a].IdePgtoExt.EndExt.codPostal);
end;
end;
Como é possível verificar no exemplo, utilizamos a propriedade isEmpty para verificar se a variável está preenchida ou não. Utilizamos também laços de repetição para pegar os valores que podem possuir mais de uma ocorrência.
Algumas linguagens, como o FoxPro, não conseguem lidar com muitos níveis de objetos, dessa forma, é necessário utilizar o nosso retorno no formato Json. É possível verificar o exemplos desse parseamento via json em nossa demonstração em FoxPro.
Caso deseje ver exemplos dos demais eventos, basta realizar o download das Demonstrações.
Veja na prática
Comentários
0 comentário
Por favor, entre para comentar.