Skip to content

Commit

Permalink
Merge pull request #397 from tst-labs/CADASTRO-TSV
Browse files Browse the repository at this point in the history
Informações de alteração e encerramento de TSV
  • Loading branch information
tiagoben authored Jan 23, 2024
2 parents 498e703 + c19dc04 commit dd99053
Show file tree
Hide file tree
Showing 22 changed files with 1,209 additions and 81 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@
import br.jus.tst.esocial.dominio.semvinculo.MudancaCPF;
import br.jus.tst.esocial.dominio.semvinculo.Termino;
import br.jus.tst.esocial.dominio.vinculo.Afastamento;
import java.time.LocalDate;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;

import java.util.Calendar;

public class DadosContratuais {

private String matricula;
private Integer codCateg;
private LocalDate dtInicio;
private Calendar dtInicio;
private String nrProcTrab;
private Byte natAtividade;
private InfoComplementares infoComplementares;
Expand All @@ -36,11 +37,11 @@ public void setCodCateg(Integer codCateg) {
this.codCateg = codCateg;
}

public LocalDate getDtInicio() {
public Calendar getDtInicio() {
return dtInicio;
}

public void setDtInicio(LocalDate dtInicio) {
public void setDtInicio(Calendar dtInicio) {
this.dtInicio = dtInicio;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package br.jus.tst.esocial.ret.tsv;

import br.jus.tst.esocial.dominio.semvinculo.termino.InfoTSVTermino;

import java.util.Objects;

public class DadosDesligamento {
public InfoTSVTermino infoTSVTermino;

public InfoTSVTermino getInfoTSVTermino() {
return infoTSVTermino;
}

public void setInfoTSVTermino(InfoTSVTermino infoTSVTermino) {
this.infoTSVTermino = infoTSVTermino;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DadosDesligamento that = (DadosDesligamento) o;
return Objects.equals(infoTSVTermino, that.infoTSVTermino);
}

@Override
public int hashCode() {
return Objects.hash(infoTSVTermino);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
package br.jus.tst.esocial.ret.tsv;

import br.jus.tst.esocial.dominio.afasttemp.InfoAfastamento;
import br.jus.tst.esocial.dominio.semvinculo.InfoComplementares;
import java.util.List;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import br.jus.tst.esocial.dominio.semvinculo.Termino;

public class TrabalhadorSemVinculo {

public DadosCadastrais dadosCadastrais;
public DadosContratuais dadosContratuais;
public Termino termino;
public DadosDesligamento dadosDesligamento;

public DadosCadastrais getDadosCadastrais() {
return dadosCadastrais;
Expand All @@ -21,12 +17,12 @@ public void setDadosCadastrais(DadosCadastrais dadosCadastrais) {
this.dadosCadastrais = dadosCadastrais;
}

public Termino getTermino() {
return termino;
public DadosDesligamento getDadosDesligamento() {
return dadosDesligamento;
}

public void setTermino(Termino termino) {
this.termino = termino;
public void setDadosDesligamento(DadosDesligamento dadosDesligamento) {
this.dadosDesligamento = dadosDesligamento;
}

public DadosContratuais getDadosContratuais() {
Expand All @@ -47,7 +43,8 @@ public boolean equals(Object o) {
TrabalhadorSemVinculo trabalhadorSemVinculo = (TrabalhadorSemVinculo) o;
return new EqualsBuilder()
.append(dadosCadastrais, trabalhadorSemVinculo.dadosCadastrais)
.append(dadosCadastrais, trabalhadorSemVinculo.dadosContratuais)
.append(dadosContratuais, trabalhadorSemVinculo.dadosContratuais)
.append(dadosDesligamento, trabalhadorSemVinculo.dadosDesligamento)
.isEquals();
}

Expand All @@ -56,6 +53,7 @@ public int hashCode() {
return new HashCodeBuilder(17, 37)
.append(dadosCadastrais)
.append(dadosContratuais)
.append(dadosDesligamento)
.toHashCode();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package br.jus.tst.esocialjt.ret.semvinculo;

import br.jus.tst.esocial.ocorrencia.dados.AltCadastral;
import br.jus.tst.esocialjt.dominio.Ocorrencia;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;

public class Processador2205TSV implements ProcessadorTrabalhadorSemVinculo {

@Override
public void processaRegistro(ArrayList<RetTrabalhadorSemVinculo> listaRetTrabalhadorSemVinculo, Ocorrencia ocorrencia) {
AltCadastral alteracao = (AltCadastral) ocorrencia.getDadosOcorrencia();

listaRetTrabalhadorSemVinculo.forEach(re -> {
BeanUtils.copyProperties(alteracao.getAlteracao().getDadosTrabalhador(), re.trabalhadorSemVinculo.dadosCadastrais);
re.trabalhadorSemVinculo.dadosCadastrais.nascimento.setPaisNac(alteracao.getAlteracao().getDadosTrabalhador().getPaisNac());
re.addOcorrencia(ocorrencia);
});
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package br.jus.tst.esocialjt.ret.semvinculo;

import br.jus.tst.esocial.dominio.semvinculo.termino.InfoTSVTermino;
import br.jus.tst.esocial.ocorrencia.dados.TSVInicio;
import br.jus.tst.esocial.ret.tsv.DadosCadastrais;
import br.jus.tst.esocial.ret.tsv.DadosContratuais;
import br.jus.tst.esocial.ret.tsv.DadosDesligamento;
import br.jus.tst.esocial.ret.tsv.TrabalhadorSemVinculo;
import br.jus.tst.esocialjt.dominio.Ocorrencia;
import br.jus.tst.esocial.dominio.semvinculo.Termino;
Expand All @@ -24,17 +26,18 @@ public void processaRegistro(ArrayList<RetTrabalhadorSemVinculo> listaRetTrabalh
BeanUtils.copyProperties(tsvInicio.getTrabalhador(), re.trabalhadorSemVinculo.dadosCadastrais);
BeanUtils.copyProperties(tsvInicio.getInfoTSVInicio(), re.trabalhadorSemVinculo.dadosContratuais);

re.trabalhadorSemVinculo.termino = retornaNovoTermino(tsvInicio.getInfoTSVInicio().getTermino());
re.trabalhadorSemVinculo.dadosDesligamento = retornaNovoTermino(tsvInicio.getInfoTSVInicio().getTermino());
re.addOcorrencia(ocorrencia);
listaRetTrabalhadorSemVinculo.add(re);
}

private Termino retornaNovoTermino(Termino term) {
private DadosDesligamento retornaNovoTermino(Termino term) {
if (term == null) {
return term;
return null;
}
Termino termino = new Termino();
termino.setDtTerm(term.getDtTerm());
return termino;
DadosDesligamento dadosDesligamento = new DadosDesligamento();
dadosDesligamento.infoTSVTermino = new InfoTSVTermino();
dadosDesligamento.infoTSVTermino.setDtTerm(term.getDtTerm());
return dadosDesligamento;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package br.jus.tst.esocialjt.ret.semvinculo;

import br.jus.tst.esocial.dominio.semvinculo.InfoComplementares;
import br.jus.tst.esocial.dominio.semvinculo.InfoDirigenteSindical;
import br.jus.tst.esocial.dominio.semvinculo.InfoMandElet;
import br.jus.tst.esocial.dominio.semvinculo.InfoTrabCedido;
import br.jus.tst.esocial.ocorrencia.dados.TSVAltContr;
import br.jus.tst.esocialjt.dominio.Ocorrencia;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;

public class Processador2306 implements ProcessadorTrabalhadorSemVinculo {
@Override
public void processaRegistro(ArrayList<RetTrabalhadorSemVinculo> listaRetTrabalhadorSemVinculo, Ocorrencia ocorrencia) {
TSVAltContr alteracao = (TSVAltContr) ocorrencia.getDadosOcorrencia();
String matriculaOcorrencia = ocorrencia.getDadosOcorrencia().getMatricula();
Integer codCateg = alteracao.getIdeTrabSemVinculo().getCodCateg();

listaRetTrabalhadorSemVinculo
.stream()
.filter(re -> StringUtils.equals(matriculaOcorrencia, re.getMatricula()))
.filter(re -> codCateg == null || codCateg.equals(re.trabalhadorSemVinculo.getDadosContratuais().getCodCateg()))
.forEach(re -> {
InfoComplementares infoComplementares = re.trabalhadorSemVinculo.dadosContratuais.getInfoComplementares();
InfoComplementares infoComplementaresAlt = alteracao.getInfoTSVAlteracao().getInfoComplementares();
if (infoComplementaresAlt != null && infoComplementares != null) {
infoComplementares.setCargoFuncao(infoComplementaresAlt.getCargoFuncao());
infoComplementares.setRemuneracao(infoComplementaresAlt.getRemuneracao());
infoComplementares.setInfoEstagiario(infoComplementaresAlt.getInfoEstagiario());
infoComplementares.setLocalTrabGeral(infoComplementaresAlt.getLocalTrabGeral());
preencherInfoDirigenteSindical(infoComplementares, infoComplementaresAlt);
preencherInfoTrabCedido(infoComplementares, infoComplementaresAlt);
preencherInfoMandElet(infoComplementares, infoComplementaresAlt);
}
re.addOcorrencia(ocorrencia);
});
}

private static void preencherInfoMandElet(InfoComplementares infoComplementares, InfoComplementares infoComplementaresAlt) {
InfoMandElet infoMandElet = infoComplementares.getInfoMandElet();
InfoMandElet infoMandEletAlt = infoComplementaresAlt.getInfoMandElet();
if (infoMandEletAlt != null && infoMandElet != null) {
infoMandElet.setTpRegPrev(infoMandEletAlt.getTpRegPrev());
infoMandElet.setIndRemunCargo(infoMandEletAlt.getIndRemunCargo());
} else {
infoComplementares.setInfoMandElet(infoMandEletAlt);
}
}

private static void preencherInfoTrabCedido(InfoComplementares infoComplementares, InfoComplementares infoComplementaresAlt) {
InfoTrabCedido infoTrabCedido = infoComplementares.getInfoTrabCedido();
InfoTrabCedido infoTrabCedidoAlt = infoComplementaresAlt.getInfoTrabCedido();

if (infoTrabCedidoAlt != null && infoTrabCedido != null) {
infoTrabCedido.setTpRegPrev(infoTrabCedidoAlt.getTpRegPrev());
} else {
infoComplementares.setInfoTrabCedido(infoTrabCedidoAlt);
}
}

private static void preencherInfoDirigenteSindical(InfoComplementares infoComplementares, InfoComplementares infoComplementaresAlt) {
InfoDirigenteSindical infoDirigenteSindical = infoComplementares.getInfoDirigenteSindical();
InfoDirigenteSindical infoDirigenteSindicalAlt = infoComplementaresAlt.getInfoDirigenteSindical();
if (infoDirigenteSindicalAlt != null && infoDirigenteSindical != null) {
infoDirigenteSindical.setTpRegPrev(infoDirigenteSindicalAlt.getTpRegPrev());
} else {
infoComplementares.setInfoDirigenteSindical(infoDirigenteSindicalAlt);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package br.jus.tst.esocialjt.ret.semvinculo;

import br.jus.tst.esocial.dominio.semvinculo.termino.InfoTSVTermino;
import br.jus.tst.esocial.ocorrencia.dados.TSVTermino;
import br.jus.tst.esocial.ret.tsv.DadosDesligamento;
import br.jus.tst.esocialjt.dominio.Ocorrencia;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;

public class Processador2399 implements ProcessadorTrabalhadorSemVinculo {

@Override
public void processaRegistro(ArrayList<RetTrabalhadorSemVinculo> listaRetTrabalhadorSemVinculo, Ocorrencia ocorrencia) {
TSVTermino termino = (TSVTermino) ocorrencia.getDadosOcorrencia();
String matriculaOcorrencia = ocorrencia.getDadosOcorrencia().getMatricula();
Integer codCateg = termino.getIdeTrabSemVinculo().getCodCateg();

listaRetTrabalhadorSemVinculo
.stream()
.filter(re -> StringUtils.equals(matriculaOcorrencia, re.getMatricula()))
.filter(re -> codCateg == null || codCateg.equals(re.trabalhadorSemVinculo.getDadosContratuais().getCodCateg()))
.forEach(re -> {
re.trabalhadorSemVinculo.dadosDesligamento = new DadosDesligamento();
re.trabalhadorSemVinculo.dadosDesligamento.infoTSVTermino = new InfoTSVTermino();
BeanUtils.copyProperties(termino.getInfoTSVTermino(), re.trabalhadorSemVinculo.dadosDesligamento.infoTSVTermino);
re.addOcorrencia(ocorrencia);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public List<RetTrabalhadorSemVinculo> obterRetTrabalhadorSemVinculo(String cpf)
specs.nosEstados(Collections.singletonList(Estado.PROCESSADO_COM_SUCESSO))
.and(specs.dosTipos(Arrays.asList(
TSV_INICIO,
ALTERACAO_CADASTRAL,
TSV_ALTERACAO_CONTRATUAL,
TSV_TERMINO
))).and(specs.comCPF(cpf)));
Expand Down Expand Up @@ -75,6 +76,9 @@ private ProcessadorTrabalhadorSemVinculo getProcessadorTrabalhadorSemVinculo(Tip
if (processadores == null) {
processadores = new HashMap<>();
processadores.put(TipoOcorrencia.TSV_INICIO, new Processador2300());
processadores.put(TipoOcorrencia.ALTERACAO_CADASTRAL, new Processador2205TSV());
processadores.put(TipoOcorrencia.TSV_ALTERACAO_CONTRATUAL, new Processador2306());
processadores.put(TipoOcorrencia.TSV_TERMINO, new Processador2399());
}
return Optional
.ofNullable(processadores.get(tipo))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package br.jus.tst.esocialjt.ret.semvinculo;

import br.jus.tst.esocial.ret.tsv.TrabalhadorSemVinculo;
import br.jus.tst.esocialjt.dominio.Ocorrencia;
import br.jus.tst.esocialjt.util.OcorrenciaUtil;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;

import static org.assertj.core.api.Assertions.assertThat;

class Processador2205TSVTest {

@Test
public void deveProcessar2205SobreTSVExistente() {
ArrayList<RetTrabalhadorSemVinculo> listaRetTrabalhadorSemVinculo = new ArrayList<>();
TrabalhadorSemVinculo inicial = OcorrenciaUtil.lerTrabalhadorSemVinculo("ret/trabalhadorsemvinculo/s2205/inicial.json");
RetTrabalhadorSemVinculo retTSV = new RetTrabalhadorSemVinculo();
retTSV.trabalhadorSemVinculo = inicial;

listaRetTrabalhadorSemVinculo.add(retTSV);

Ocorrencia ocorrencia = OcorrenciaUtil.lerOcorrencia("ret/trabalhadorsemvinculo/s2205/alteracao_cadastral.json");
TrabalhadorSemVinculo esperado = OcorrenciaUtil.lerTrabalhadorSemVinculo("ret/trabalhadorsemvinculo/s2205/esperado.json");

Processador2205TSV processador = new Processador2205TSV();
processador.processaRegistro(listaRetTrabalhadorSemVinculo, ocorrencia);

assertThat(listaRetTrabalhadorSemVinculo).hasSize(1);

assertThat(listaRetTrabalhadorSemVinculo.get(0).trabalhadorSemVinculo).usingRecursiveComparison().isEqualTo(esperado);
assertThat(listaRetTrabalhadorSemVinculo.get(0).ocorrencias).contains(ocorrencia);
}

@Test
public void deveProcessar2205SobreMaisDeUmTSVExistente() {
ArrayList<RetTrabalhadorSemVinculo> listaRetTrabalhadorSemVinculo = new ArrayList<>();
TrabalhadorSemVinculo inicial1 = OcorrenciaUtil.lerTrabalhadorSemVinculo("ret/trabalhadorsemvinculo/s2205/inicial.json");
TrabalhadorSemVinculo inicial2 = OcorrenciaUtil.lerTrabalhadorSemVinculo("ret/trabalhadorsemvinculo/s2205/inicial.json");

RetTrabalhadorSemVinculo retEmpregado1 = new RetTrabalhadorSemVinculo();
retEmpregado1.trabalhadorSemVinculo = inicial1;
listaRetTrabalhadorSemVinculo.add(retEmpregado1);

RetTrabalhadorSemVinculo retEmpregado2 = new RetTrabalhadorSemVinculo();
retEmpregado2.trabalhadorSemVinculo = inicial2;
listaRetTrabalhadorSemVinculo.add(retEmpregado2);

Ocorrencia ocorrencia = OcorrenciaUtil.lerOcorrencia("ret/trabalhadorsemvinculo/s2205/alteracao_cadastral.json");
TrabalhadorSemVinculo esperado = OcorrenciaUtil.lerTrabalhadorSemVinculo("ret/trabalhadorsemvinculo/s2205/esperado.json");

Processador2205TSV processador = new Processador2205TSV();
processador.processaRegistro(listaRetTrabalhadorSemVinculo, ocorrencia);

assertThat(listaRetTrabalhadorSemVinculo).hasSize(2);

listaRetTrabalhadorSemVinculo.forEach(re -> {
assertThat(re.trabalhadorSemVinculo).usingRecursiveComparison().isEqualTo(esperado);
assertThat(re.ocorrencias).contains(ocorrencia);
});

}

}
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package br.jus.tst.esocialjt.ret.trabalhadorsemvinculo;
package br.jus.tst.esocialjt.ret.semvinculo;

import br.jus.tst.esocial.ret.empregado.Empregado;
import br.jus.tst.esocial.ret.tsv.TrabalhadorSemVinculo;
import br.jus.tst.esocialjt.dominio.Ocorrencia;
import br.jus.tst.esocialjt.ret.semvinculo.Processador2300;
import br.jus.tst.esocialjt.ret.semvinculo.RetTrabalhadorSemVinculo;
import br.jus.tst.esocialjt.util.OcorrenciaUtil;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;

import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.Test;

public class Processador2300Test {

Expand Down
Loading

0 comments on commit dd99053

Please sign in to comment.