[PROJETO EM DESENVOLVIMENTO] Atenção! API ainda em desenvolvimento e portanto instável.
- Git (https://git-scm.com/)
- Docker (https://www.docker.com/)
- Docker Compose (https://docs.docker.com/compose/)
- Clone o projeto
$ git clone https://github.com/tst-labs/esocial.git
$ cd esocial
-
Crie um arquivo
src/docker/maven/settings.xml
caso tenha alguma configuração específica do maven (essa configuração será copiada para o docker conseguir fazer a build) -
Construa as imagens docker
$ docker-compose build
- Copie sua chave para a pasta
./config
$ cp local/da/chave/esocial.pfx ./config/esocial.pfx
- Edite o arquivo de configuração
application.properties
para ficar de acordo com seu ambiente
$ cp ./config/application.properties.example ./config/application.properties
docker-compose up
Obs: O docker-compose sobe um banco postgres e a aplicação Java
Verifique se a aplicação está no ar acessando a url
http://localhost:8080/esocial-jt-service/actuator/health
O projeto é dividido nos seguintes módulos:
- esocial-comunicacao: Pacote de mapeamento dos serviços do WSDL.
- esocial-esquemas: Schemas WSDL do eSocial-GOV. [mais informações...]
- esocial-jt-dominio: Modelos básicos do esocial-jt.
- esocial-jt-service: API RESTful para comunicação com eSocial-GOV. [mais informações...]
O esocial-jt-service é o módulo principal do sistema eSocial na Justiça do Trabalho, que recebe dados de ocorrências da vida funcional dos trabalhadores/servidores e os comunica ao sistema eSocial governamental central eSocial-Gov.
O esocial-jt-service foi construído em Java 8 utilizando o framework Spring Boot. É uma aplicação primordialmente de backend que fornece API RESTful trafegando dados no formato JSON.
Em poucas palavras, este módulo recebe um JSON com os dados de uma ocorrência* dos sistemas de origem, tranforma em um evento do eSocial, cria e assina o arquivo XML, transmite para o eSocial-Gov e posteriormente consulta o resultado de processamento com eventuais erros. Além disso, fornece API para consulta do estado interno da aplicação.
Obs. 1: para não confundir os conceitos, os dados recebidos pelo esocial-jt-service são chamados de "ocorrencia" enquanto que os XMLs que são enviados para o eSocial-Gov são chamados de "eventos".
Obs. 2: Cada instituição deve alterar seus sitemas de origem (RH, Folha, etc) ou criar um conector para extrair os dados e enviar no formato JSON para o esocial-jt-service.
- Java EE 8;
- Maven 3.3.9 (ou superior);
- Git 2.15.0 (ou superior);
- Certificado Digital ICP-Brasil A1 válido (obrigatório mesmo para testes).
Atualmente, o esocial-jt-service é testado com PostgreSQL mas em teoria é compatível com outros bancos. Os parâmetros de conexão devem ser passados no arquivo de configuração, como explicado mais adiante.
Os scripts de criação do banco ficam localizados em src/esocial-jt-service/src/main/resources/db/migration/. Os scripts podem ser executados de forma manual, porém utilizamos o flyway para automatizar esse processo.
Execute o seguinte comando preenchendo os valores com a URL de conexão do banco, usuário e senha para criar / atualizar as tabelas no seu banco de dados.
$ cd src/esocial-jt-service
$ mvn flyway:migrate -Dflyway.url=... -Dflyway.user=... -Dflyway.password=...
# i.e: mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5432/postgres -Dflyway.user=postgres -Dflyway.password=esocial
git clone https://github.com/tst-labs/esocial.git
Os seguintes parâmetros de configuração (caminho do arquivo do certificado digital e conexão com o banco de dados) devem ser passados editando o arquivo config/application.properties
.
esocialjt.cnpj-empregador=
esocialjt.arquivoCertificado=
esocialjt.senhaCertificado=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=
spring.jpa.database-platform=
Obs.: Como qualquer aplicação Spring Boot, existem outras maneiras de sobreescrever os parâmetros de configuração.
Para fazer build do projeto, execute:
cd src
mvn clean package
E para iniciar:
java -jar src/esocial-jt-service/target/esocial-jt-service*.jar
Verifique se a aplicação está no ar acessando a url
http://localhost:8080/esocial-jt-service/actuator/health
O esocial-jt-service foi projetado para receber dados de ocorrência via JSON a partir dos sistemas de origem ou de um conector. Porém, para um primeiro teste, no ambiente de Produção Restrita, é possível enviar manualmente dados para o esocial-jt-service. Para isso, faça uma cópia do arquivo /src/main/resources/exemplos/informacoes_empregador.json, edite com as informações referentes à instituição (o CNPJ deve ser o mesmo do proprietário do Certificado Digital) e envia usando o método POST (via linha de comando ou Postman) para o endpoint:
http://localhost:8080/esocial-jt-service/ocorrencias
O log da aplicação irá exibir o status da transmissão para o eSocial-Gov, e também será possível consultar pelo método GET em alguns instantes:
http://localhost:8080/esocial-jt-service/ocorrencias
É possível apagar os dados enviados para o ambiente de produção restrita por comando via POST
/esocial-jt-service/producao-restrita/acoes/limpar
Relacionado ao recebimento ou consulta de ocorrências
- Receber ocorrência:
POST
/esocial-jt-service/ocorrencias
- Consultar todas ocorrências:
GET
/esocial-jt-service/ocorrencias
- Consultar ocorrência por ID:
GET
/esocial-jt-service/ocorrencias/{id}
- Consultar dados básicos das ocorrências:
GET
/esocial-jt-service/ocorrencias/dados-basicos
- Consultar exemplos de JSON de ocorrências:
GET
/esocial-jt-service/ocorrencias/exemplos
- Consultar exemplo de JSON de um tipo:
GET
/esocial-jt-service/ocorrencias/exemplos/{tipo}
Serve para forçar um reenvio de um evento para o eSocial-Gov
- Enviar evento:
POST
/esocial-jt-service/eventos/acoes/enviar
Controle manual da consulta do processamento no eSocial-Gov. Não precisa ser executado se a atualização automática está ativada.
- Consulta protocolo;
GET
/esocial-jt-se 8000 rvice/lote/consulta/{protocolo}
- Atualiza todos lotes pendentes;
POST
/esocial-jt-service/lote/acoes/atualizar-processamento
- Atualiza lote por protcolo;
POST
/esocial-jt-service/lote/acoes/atualizar-processamento/{protocolo}
Comandos exclusivos para o ambiente de produção restrita
- Limpar produção restrita:
POST
/esocial-jt-service/producao-restrita/acoes/limpar
Controla, em tempo de execução, se a aplicação deve ou não executar tarefas automaticamente (envio para o eSocial-Gov, consulta do processamento, etc) . Também pode ser configurado no arquivo application.properties
.
- Consultar status:
GET
/esocial-jt-service/automacao
- Configurar automação:
POST
/esocial-jt-service/automacao
Verifica o status da aplicação
- Status da aplicação:
GET
/esocial-jt-service/actuator/health
- Informações sobre a aplicação:
GET
/esocial-jt-service/actuator/info
- Status da comunicação com eSocial-Gov:
GET
/esocial-jt-service/actuator/esocial-health
O Tribunal Superior do Trabalho está em uma fase avançada de desenvolvimento de uma solução para transmitir os dados da vida funcional dos seus servidores para o sistema eSocial do Governo Federal, atendendo às necessidades legais do Decreto N° 8.373, de 11 de Dezembro de 2014.
Essa iniciativa converge na publicação desse trabalho como projeto Open Source (OSS), uma vez que entendemos que essa solução pode ser reusada, trazendo economia de esforços em quaisquer entidades públicas ou privadas.
Esse pedaço da solução compreende:
- Recepção de ocorrências provenientes dos sistemas de origem, via API RESTful;
- Conversão dessas ocorrências em eventos do eSocial, no formato XML;
- Consulta do resultado do processamento dos eventos enviados; e
- Gerência dos detalhes de conexão com o eSocial-GOV (assinatura dos eventos, conexão com certificado, etc.).
Não tratamos nesse projeto de:
- Extração e/ou transformação de dados dos sistemas finalísticos das organizações usuárias;
- Manipulação de qualquer forma que seja dos dados recebidos; e
- Validação semântica dos dados recebidos.
Atualmente, o sistema já é capaz de receber dados de grande parte dos eventos, transmitir de forma automática para o eSocial-GOV e exibir o resultado do processamento (sucesso ou mensagens de erro).
A priorização dos eventos a serem transmitidos foi feita com base na necessidade atual do TST e demais órgãos da Justiça do Trabalho. No entanto, o projeto pode ser estendido para quaisquer tipos de eventos especificados pelo eSocial-GOV.
Evento | Nome Evento | Versão | Situação | Resultado do envio para a produção restrita |
---|---|---|---|---|
S-1000 | Empregador/Contribuinte | 2.4.02 | Feito | Processado com sucesso |
S-1005 | Estabelecimentos | 2.4.02 | Feito | Processado com sucesso |
S-1010 | Rubricas | 2.4.02 | Feito | Processado com sucesso |
S-1020 | Lotações Tributárias | 2.4.02 | Feito | Processado com sucesso |
S-1030 | Cargos/Empregos Públicos | 2.4.02 | Feito | Processado com sucesso |
S-1035 | Carreiras Públicas | 2.4.02 | Feito | Processado com sucesso |
S-1040 | Funções/Cargos em Comissão | 2.4.02 | Feito | Processado com sucesso |
S-1050 | Horários/Turnos de Trabalho | 2.4.02 | Feito | Processado com sucesso |
S-1060 | Ambientes de Trabalho | 2.4.02 | Feito | Evento não reconhecido pelo eSocial-GOV |
S-1070 | Processos Administrativos/Judiciais | 2.4.02 | Feito | Processado com sucesso |
S-1080 | Operadores Portuários | 2.4.02 | NA | NA |
Evento | Nome Evento | Versão | Situação | Resultado do envio para a produção restrita |
---|---|---|---|---|
S-1200 | Remuneração de trabalhador vinculado ao Regime Geral de Previdência Social | 2.4.02 | Feito | Processado com sucesso |
S-1202 | Remuneração de servidor vinculado a Regime Próprio de Previdência Social – RPPS | 2.4.02 | Feito | Evento não reconhecido pelo eSocial-GOV |
S-1207 | Benefícios previdenciários - RPPS | 2.4.02 | Feito | Evento não reconhecido pelo eSocial-GOV |
S-1210 | Pagamentos de Rendimentos do Trabalho | 2.4.02 | Feito | Processado com sucesso |
S-1250 | Aquisição de Produção Rural | 2.4.02 | NA | NA |
S-1260 | Comercialização da Produção Rural Pessoa Física | 2.4.02 | NA | NA |
S-1270 | Contratação de Trabalhadores Avulsos Não Portuários | 2.4.02 | NA | NA |
S-1280 | Informações Complementares aos Eventos Periódicos | 2.4.02 | NA | NA |
S-1295 | Solicitação de Totalização para Pagamento em Contingência | 2.4.02 | Feito | Processado com sucesso |
S-1298 | Reabertura dos Eventos Periódicos | 2.4.02 | Feito | Processado com sucesso |
S-1299 | Fechamento dos Eventos Periódicos | 2.4.02 | Feito | Processado com sucesso |
S-1300 | Contribuição Sindical Patronal | 2.4.02 | NA | NA |
Evento | Nome Evento | Versão | Situação | Resultado do envio para a produção restrita |
---|---|---|---|---|
S-2190 | Admissão de Trabalhador - Registro Preliminar | 2.4.02 | NA | NA |
S-2200 | Cadastramento Inicial do Vínculo e Admissão/Ingresso de Trabalhador | 2.4.02 | Feito | Processado com sucesso |
S-2205 | Alteração de Dados Cadastrais do Trabalhador | 2.4.02 | Feito | Processado com sucesso |
S-2206 | Alteração de Contrato de Trabalho | 2.4.02 | Feito | Processado com sucesso |
S-2210 | Comunicação de Acidente de Trabalho | 2.4.02 | Impl. futura | |
S-2220 | Monitoramento da Saúde do Trabalhador | 2.4.02 | Impl. futura | |
S-2230 | Afastamento Temporário | 2.4.02 | Feito | Processado com sucesso |
S-2240 | Condições Ambientais do Trabalho - Fatores de Risco | 2.4.02 | Impl. futura | |
S-2241 | Insalubridade, Periculosidade e Aposentadoria Especial | 2.4.02 | Impl. futura | |
S-2250 | Aviso Prévio | 2.4.02 | NA | NA |
S-2260 | Convocação para Trabalho Intermitente | 2.4.02 | NA | NA |
S-2298 | Reintegração | 2.4.02 | Feito | Processado com sucesso |
S-2299 | Desligamento | 2.4.02 | Feito | Processado com sucesso |
S-2300 | Trabalhador Sem Vínculo de Emprego/Estatutário - Início | 2.4.02 | Feito | Processado com sucesso |
S-2306 | Trabalhador Sem Vínculo de Emprego/Estatutário - Alteração Contratual | 2.4.02 | Feito | Processado com sucesso |
S-2399 | Trabalhador Sem Vínculo de Emprego/Estatutário - Término | 2.4.02 | Feito | Processado com sucesso |
S-2400 | Cadastro de Benefícios Previdenciários - RPPS | 2.4.02 | Feito | Evento não reconhecido pelo eSocial-GOV |
S-3000 | Exclusão de eventos | 2.4.02 | Feito | Processado com sucesso |
S-5001 | Informações das contribuições sociais por trabalhador | 2.4.02 | Feito | Evento totalizador gravado no formato XML |
S-5002 | Imposto de Renda Retido na Fonte | 2.4.02 | Feito | Evento totalizador gravado no formato XML |
S-5011 | Informações das contribuições sociais consolidadas por contribuinte | 2.4.02 | Feito | Evento totalizador gravado no formato XML |
S-5012 | Informações do IRRF consolidadas por contribuinte | 2.4.02 | Feito | Evento totalizador gravado no formato XML |
Leia nosso guia de contribuição em andamento.