Skip to content

Commit

Permalink
FIX: Fjerner all brukt av arbeidsperiode utenom visning i GUI (#499)
Browse files Browse the repository at this point in the history
* FIX: Fjerner all brukt av arbeidsperiode utenom visning i GUI
  • Loading branch information
pekern authored Apr 29, 2024
1 parent 2b19347 commit aeef7c4
Show file tree
Hide file tree
Showing 6 changed files with 3 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.Objects;
import java.util.Optional;

import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BGAndelArbeidsforholdDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPeriodeDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
Expand All @@ -14,7 +13,6 @@
import no.nav.folketrygdloven.kalkulator.modell.gradering.AndelGradering.Gradering;
import no.nav.folketrygdloven.kalkulator.modell.typer.Beløp;
import no.nav.folketrygdloven.kalkulator.modell.typer.InternArbeidsforholdRefDto;
import no.nav.folketrygdloven.kalkulator.tid.Intervall;

public class GraderingUtenBeregningsgrunnlagTjeneste {

Expand All @@ -36,7 +34,7 @@ private static List<BeregningsgrunnlagPrStatusOgAndelDto> finnTilsvarendeAndelIT
andelGradering.getGraderinger().forEach(gradering ->{
Optional<BeregningsgrunnlagPeriodeDto> korrektBGPeriode = finnTilsvarendeBGPeriode(gradering, beregningsgrunnlag.getBeregningsgrunnlagPerioder());
Optional<BeregningsgrunnlagPrStatusOgAndelDto> korrektBGAndel = korrektBGPeriode.flatMap(p -> finnTilsvarendeAndelIPeriode(andelGradering, p));
if (korrektBGAndel.isPresent() && harIkkeTilkjentBGEtterRedusering(korrektBGAndel.get()) && arbeidsforholdErAktivtIGraderingsperiode(gradering, korrektBGAndel.get())) {
if (korrektBGAndel.isPresent() && harIkkeTilkjentBGEtterRedusering(korrektBGAndel.get())) {
andeler.add(korrektBGAndel.get());
}
});
Expand Down Expand Up @@ -64,10 +62,4 @@ private static boolean bgAndelMatcherGraderingAndel(BeregningsgrunnlagPrStatusOg
private static Optional<BeregningsgrunnlagPeriodeDto> finnTilsvarendeBGPeriode(Gradering gradering, List<BeregningsgrunnlagPeriodeDto> beregningsgrunnlagPerioder) {
return beregningsgrunnlagPerioder.stream().filter(p -> gradering.getPeriode().overlapper(p.getPeriode())).findFirst();
}

private static boolean arbeidsforholdErAktivtIGraderingsperiode(Gradering gradering, BeregningsgrunnlagPrStatusOgAndelDto andel) {
Optional<Intervall> arbeidsperiode = andel.getBgAndelArbeidsforhold().map(BGAndelArbeidsforholdDto::getArbeidsperiode);
return arbeidsperiode.map(ap -> ap.overlapper(gradering.getPeriode())).orElse(true);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import no.nav.folketrygdloven.kalkulator.modell.typer.Beløp;
import no.nav.folketrygdloven.kalkulator.modell.typer.InternArbeidsforholdRefDto;
import no.nav.folketrygdloven.kalkulator.modell.typer.Refusjon;
import no.nav.folketrygdloven.kalkulator.tid.Intervall;
import no.nav.folketrygdloven.kalkulus.kodeverk.Hjemmel;
import no.nav.folketrygdloven.kalkulus.kodeverk.Utfall;

Expand Down Expand Up @@ -73,13 +72,6 @@ public Optional<LocalDate> getArbeidsperiodeTom() {
return Optional.ofNullable(arbeidsperiodeTom);
}

public Intervall getArbeidsperiode() {
if (arbeidsperiodeTom == null) {
return Intervall.fraOgMed(arbeidsperiodeFom);
}
return Intervall.fraOgMedTilOgMed(arbeidsperiodeFom, arbeidsperiodeTom);
}

public String getArbeidsforholdOrgnr() {
return getArbeidsgiver().getOrgnr();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import no.nav.folketrygdloven.kalkulator.avklaringsbehov.PerioderTilVurderingTjeneste;
import no.nav.folketrygdloven.kalkulator.input.ForeldrepengerGrunnlag;
import no.nav.folketrygdloven.kalkulator.input.YtelsespesifiktGrunnlag;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BGAndelArbeidsforholdDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPeriodeDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
Expand Down Expand Up @@ -71,15 +70,10 @@ private static void verifiserOpprettetAndel(BeregningsgrunnlagPrStatusOgAndelDto
if (andel.getArbeidsforholdType().equals(OpptjeningAktivitetType.ARBEID)) {
verifiserOptionalPresent(andel.getBgAndelArbeidsforhold(), "BgAndelArbeidsforhold " + andel);
}
if (andel.getKilde() == null || AndelKilde.PROSESS_START.equals(andel.getKilde()) || AndelKilde.SAKSBEHANDLER_KOFAKBER.equals(andel.getKilde())) {
if (AndelKilde.PROSESS_START.equals(andel.getKilde()) || AndelKilde.SAKSBEHANDLER_KOFAKBER.equals(andel.getKilde())) {
Objects.requireNonNull(andel.getBeregningsperiodeFom(), "BeregningsperiodeFom " + andel);
Objects.requireNonNull(andel.getBeregningsperiodeTom(), "BeregningsperiodeTom " + andel);
}
if (andel.getBgAndelArbeidsforhold().isPresent()) {
BGAndelArbeidsforholdDto arbFor = andel.getBgAndelArbeidsforhold().get();
Objects.requireNonNull(arbFor.getArbeidsperiodeFom(), "arbeidsperiodeFom " + andel);
Objects.requireNonNull(arbFor.getArbeidsperiodeTom(), "arbeidsperiodeTom " + andel);
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import java.util.Objects;
import java.util.Optional;

import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BGAndelArbeidsforholdDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPeriodeDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
Expand All @@ -14,7 +13,6 @@
import no.nav.folketrygdloven.kalkulator.modell.gradering.AndelGradering.Gradering;
import no.nav.folketrygdloven.kalkulator.modell.typer.Beløp;
import no.nav.folketrygdloven.kalkulator.modell.typer.InternArbeidsforholdRefDto;
import no.nav.folketrygdloven.kalkulator.tid.Intervall;

public class GraderingUtenBeregningsgrunnlagTjeneste {

Expand All @@ -36,7 +34,7 @@ private static List<BeregningsgrunnlagPrStatusOgAndelDto> finnTilsvarendeAndelIT
andelGradering.getGraderinger().forEach(gradering ->{
Optional<BeregningsgrunnlagPeriodeDto> korrektBGPeriode = finnTilsvarendeBGPeriode(gradering, beregningsgrunnlag.getBeregningsgrunnlagPerioder());
Optional<BeregningsgrunnlagPrStatusOgAndelDto> korrektBGAndel = korrektBGPeriode.flatMap(p -> finnTilsvarendeAndelIPeriode(andelGradering, p));
if (korrektBGAndel.isPresent() && harIkkeTilkjentBGEtterRedusering(korrektBGAndel.get()) && arbeidsforholdErAktivtIGraderingsperiode(gradering, korrektBGAndel.get())) {
if (korrektBGAndel.isPresent() && harIkkeTilkjentBGEtterRedusering(korrektBGAndel.get())) {
andeler.add(korrektBGAndel.get());
}
});
Expand Down Expand Up @@ -64,9 +62,4 @@ private static boolean bgAndelMatcherGraderingAndel(BeregningsgrunnlagPrStatusOg
private static Optional<BeregningsgrunnlagPeriodeDto> finnTilsvarendeBGPeriode(Gradering gradering, List<BeregningsgrunnlagPeriodeDto> beregningsgrunnlagPerioder) {
return beregningsgrunnlagPerioder.stream().filter(p -> gradering.getPeriode().overlapper(p.getPeriode())).findFirst();
}

private static boolean arbeidsforholdErAktivtIGraderingsperiode(Gradering gradering, BeregningsgrunnlagPrStatusOgAndelDto andel) {
Optional<Intervall> arbeidsperiode = andel.getBgAndelArbeidsforhold().map(BGAndelArbeidsforholdDto::getArbeidsperiode);
return arbeidsperiode.map(ap -> ap.overlapper(gradering.getPeriode())).orElse(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import java.util.function.Consumer;

import no.nav.folketrygdloven.kalkulator.KalkulatorException;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BGAndelArbeidsforholdDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPeriodeDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
Expand Down Expand Up @@ -54,11 +53,6 @@ private static void verifiserOpprettetAndel(BeregningsgrunnlagPrStatusOgAndelDto
}
Objects.requireNonNull(andel.getBeregningsperiodeFom(), "BeregningsperiodeFom " + andel.toString());
Objects.requireNonNull(andel.getBeregningsperiodeTom(), "BeregningsperiodeTom " + andel.toString());
if (andel.getBgAndelArbeidsforhold().isPresent()) {
BGAndelArbeidsforholdDto arbFor = andel.getBgAndelArbeidsforhold().get();
Objects.requireNonNull(arbFor.getArbeidsperiodeFom(), "arbeidsperiodeFom " + andel.toString());
Objects.requireNonNull(arbFor.getArbeidsperiodeTom(), "arbeidsperiodeTom " + andel.toString());
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -390,29 +390,6 @@ public class GraderingUtenBeregningsgrunnlagTjenesteTest {
assertThat(harAndelerMedGraderingUtenGrunnlag).isFalse();
}

@Test
void skalIkkeSlåUtNårDetManglerBGMenGraderingErUtenforArbeidsperiode() {
// Arrange
LocalDate skjæringstidspunkt = SKJÆRINGSTIDSPUNKT;
LocalDate graderingFom = skjæringstidspunkt;
LocalDate graderingTom = skjæringstidspunkt.plusMonths(4);

AktivitetGradering aktivitetGradering = new AktivitetGradering(AndelGradering.builder()
.medArbeidsgiver(arbeidsgiver)
.medStatus(AktivitetStatus.ARBEIDSTAKER)
.medGradering(graderingFom, graderingTom, 50)
.build());

var beregningsgrunnlagPeriode = lagBeregningsgrunnlagPeriode(skjæringstidspunkt, null);
lagBeregningsgrunnlagAndel(beregningsgrunnlagPeriode, AktivitetStatus.ARBEIDSTAKER, BigDecimal.ZERO, graderingFom.minusYears(3), graderingFom.minusDays(1));

// Act
boolean harAndelerMedGraderingUtenGrunnlag = harAndelerMedGraderingUtenGrunnlag(aktivitetGradering);

// Assert
assertThat(harAndelerMedGraderingUtenGrunnlag).isFalse();
}

private List<BeregningsgrunnlagPrStatusOgAndelDto> finnAndelerMedGraderingUtenBG(BeregningsgrunnlagDto beregningsgrunnlag, AktivitetGradering aktivitetGradering) {
return GraderingUtenBeregningsgrunnlagTjeneste.finnAndelerMedGraderingUtenBG(beregningsgrunnlag, aktivitetGradering);
}
Expand Down

0 comments on commit aeef7c4

Please sign in to comment.