diff --git a/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdi.java b/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdi.java index 9112e709..1f2f02f0 100644 --- a/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdi.java +++ b/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdi.java @@ -40,7 +40,7 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { //juster ned med tilkommet inntekt hvis det gir lavere utbetaling enn overstående BigDecimal totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = null; - if (grunnlag.getBeregningsgrunnlag().getToggles().isEnabled("GRADERING_MOT_INNTEKT", false) && !grunnlag.getTilkommetInntektsforholdListe().isEmpty()) { + if (!grunnlag.getTilkommetInntektsforholdListe().isEmpty()) { BigDecimal graderingPåToppenAvUttakgraderingPgaTilkommetInntekt = andelBeholdtEtterGradertMotTilkommetInntekt(grunnlag); resultater.put("graderingPåToppenAvUttakgraderingPgaTilkommetInntekt", min(BigDecimal.ONE, graderingPåToppenAvUttakgraderingPgaTilkommetInntekt)); totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = min(BigDecimal.ONE, totalUtbetalingsgradFraUttak.multiply(graderingPåToppenAvUttakgraderingPgaTilkommetInntekt)); diff --git a/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdiUtenFordeling.java b/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdiUtenFordeling.java index ce764ce1..0c26d669 100644 --- a/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdiUtenFordeling.java +++ b/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/FinnGrenseverdiUtenFordeling.java @@ -41,7 +41,7 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { //juster ned med tilkommet inntekt hvis det gir lavere utbetaling enn overstående BigDecimal totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = null; - if (grunnlag.getBeregningsgrunnlag().getToggles().isEnabled("GRADERING_MOT_INNTEKT", false) && !grunnlag.getTilkommetInntektsforholdListe().isEmpty()) { + if (!grunnlag.getTilkommetInntektsforholdListe().isEmpty()) { BigDecimal graderingPåToppenAvUttakgraderingPgaTilkommetInntekt = andelBeholdtEtterGradertMotTilkommetInntekt(grunnlag); resultater.put("graderingPåToppenAvUttakgraderingPgaTilkommetInntekt", min(BigDecimal.ONE, graderingPåToppenAvUttakgraderingPgaTilkommetInntekt)); totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = min(BigDecimal.ONE, totalUtbetalingsgradFraUttak.multiply(graderingPåToppenAvUttakgraderingPgaTilkommetInntekt)); @@ -54,7 +54,7 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { resultater.put("inntektgraderingsprosent", grunnlag.getInntektsgraderingFraBruttoBeregningsgrunnlag()); } } - + //hvis §8-47a, skaler med fast faktor var erInaktivTypeA = MidlertidigInaktivType.A.equals(grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivType()); if (erInaktivTypeA) { @@ -62,11 +62,11 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { grenseverdi = grenseverdi.multiply(reduksjonsfaktor); resultater.put("grad847a", reduksjonsfaktor); grunnlag.setReduksjonsfaktorInaktivTypeA(reduksjonsfaktor); - + BigDecimal justertTotalUtbetalingsgradFraUttak = totalUtbetalingsgradFraUttak.multiply(reduksjonsfaktor); grunnlag.setTotalUtbetalingsgradFraUttak(justertTotalUtbetalingsgradFraUttak); resultater.put("totalUtbetalingsgradFraUttak", justertTotalUtbetalingsgradFraUttak); - + if (totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt != null) { BigDecimal justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt.multiply(reduksjonsfaktor); grunnlag.setTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt(justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt); diff --git a/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordeling.java b/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordeling.java index 72ffe4fe..a594d5c3 100644 --- a/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordeling.java +++ b/beregningsregler/src/main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordeling.java @@ -19,13 +19,7 @@ public SkalFinneGrenseverdiUtenFordeling() { @Override public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { - - if (!grunnlag.getBeregningsgrunnlag().getToggles().isEnabled("GRADERING_MOT_INNTEKT")) { - return nei(); - } - var ytelsesSpesifiktGrunnlag = grunnlag.getBeregningsgrunnlag().getYtelsesSpesifiktGrunnlag(); - if (ytelsesSpesifiktGrunnlag instanceof PleiepengerGrunnlagFastsettGrenseverdi pleiepengergrunnlag) { var startdatoNyeGraderingsregler = pleiepengergrunnlag.getStartdatoNyeGraderingsregler(); SingleEvaluation resultat = startdatoNyeGraderingsregler == null || grunnlag.getPeriodeFom().isBefore(startdatoNyeGraderingsregler) ? nei() : ja(); diff --git a/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordelingTest.java b/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordelingTest.java index 86ba8da0..62b63143 100644 --- a/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordelingTest.java +++ b/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/SkalFinneGrenseverdiUtenFordelingTest.java @@ -21,37 +21,6 @@ class SkalFinneGrenseverdiUtenFordelingTest { - @Test - void skal_finne_grenseverdi_med_fordeling_dersom_toggle_er_av() { - - - BeregningsgrunnlagPeriode periode = BeregningsgrunnlagPeriode.builder() - .medPeriode(Periode.of(LocalDate.now(), TIDENES_ENDE)) - .medBeregningsgrunnlagPrStatus(BeregningsgrunnlagPrStatus - .builder() - .medAktivitetStatus(AktivitetStatus.ATFL) - .medArbeidsforhold(BeregningsgrunnlagPrArbeidsforhold.builder() - .medAndelNr(1L) - .medBruttoPrÅr(BigDecimal.valueOf(100_000)) - .medArbeidsforhold(Arbeidsforhold.builder() - .medOrgnr("999999999") - .medAktivitet(Aktivitet.ARBEIDSTAKERINNTEKT).build()).build()) - .build()).build(); - - Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", false) - .medBeregningsgrunnlagPeriode(periode) - .medYtelsesSpesifiktGrunnlag(PleiepengerGrunnlagFastsettGrenseverdi.forSyktBarn()) - .medGrunnbeløp(BigDecimal.valueOf(100_000)); - - - //Act - var evaluate = new SkalFinneGrenseverdiUtenFordeling().evaluate(periode); - - assertThat(evaluate.result()).isEqualTo(Resultat.NEI); - - } - @Test void skal_finne_grenseverdi_med_fordeling_dersom_toggle_er_på_og_ikke_pleiepenger() { @@ -70,7 +39,6 @@ void skal_finne_grenseverdi_med_fordeling_dersom_toggle_er_av() { .build()).build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -102,7 +70,6 @@ void skal_finne_grenseverdi_med_fordeling_dersom_toggle_er_av() { var ytelsesSpesifiktGrunnlag = PleiepengerGrunnlagFastsettGrenseverdi.forSyktBarn(); ytelsesSpesifiktGrunnlag.setStartdatoNyeGraderingsregler(LocalDate.now().plusDays(10)); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medYtelsesSpesifiktGrunnlag(ytelsesSpesifiktGrunnlag) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -134,7 +101,6 @@ void skal_finne_grenseverdi_med_fordeling_dersom_toggle_er_av() { var ytelsesSpesifiktGrunnlag = PleiepengerGrunnlagFastsettGrenseverdi.forSyktBarn(); ytelsesSpesifiktGrunnlag.setStartdatoNyeGraderingsregler(LocalDate.now()); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medYtelsesSpesifiktGrunnlag(ytelsesSpesifiktGrunnlag) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -166,7 +132,6 @@ void skal_finne_grenseverdi_med_fordeling_dersom_toggle_er_av() { var ytelsesSpesifiktGrunnlag = PleiepengerGrunnlagFastsettGrenseverdi.forSyktBarn(); ytelsesSpesifiktGrunnlag.setStartdatoNyeGraderingsregler(LocalDate.now().minusDays(1)); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medYtelsesSpesifiktGrunnlag(ytelsesSpesifiktGrunnlag) .medGrunnbeløp(BigDecimal.valueOf(100_000)); diff --git a/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiMedFordelingTest.java b/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiMedFordelingTest.java index 075c0c22..e24e4f6f 100644 --- a/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiMedFordelingTest.java +++ b/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiMedFordelingTest.java @@ -153,7 +153,6 @@ void to_arbeidsforhold_under_6G_tilkommet_inntekt_i_det_ene() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -178,7 +177,6 @@ void to_arbeidsforhold_under_6G_tilkommet_inntekt_i_det_ene() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -206,7 +204,6 @@ void to_arbeidsforhold_under_6G_fordelt_og_tilkommet_inntekt_i_det_ene() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -256,7 +253,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -308,7 +304,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -359,7 +354,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -385,7 +379,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -853,7 +846,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -879,7 +871,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -905,7 +896,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1160,7 +1150,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1249,7 +1238,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1533,7 +1521,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1558,7 +1545,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1583,7 +1569,6 @@ void to_arbeidsforhold_under_6G_aktivitetsgrad_lavere_enn_utbetalingsgrad() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); diff --git a/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiUtenFordelingTest.java b/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiUtenFordelingTest.java index 38cd9ac2..6e302ff4 100644 --- a/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiUtenFordelingTest.java +++ b/beregningsregler/src/test/java/no/nav/folketrygdloven/beregningsgrunnlag/ytelse/svp/RegelFinnGrenseverdiUtenFordelingTest.java @@ -153,7 +153,6 @@ void to_arbeidsforhold_under_6G_tilkommet_inntekt_i_det_ene() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -178,7 +177,6 @@ void to_arbeidsforhold_under_6G_tilkommet_inntekt_i_det_ene() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -206,7 +204,6 @@ void to_arbeidsforhold_under_6G_fordelt_og_tilkommet_inntekt_i_det_ene() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -256,7 +253,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -308,7 +304,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -359,7 +354,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -385,7 +379,6 @@ void to_arbeidsforhold_over_6G_pluss_et_tilkommet() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -853,7 +846,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -879,7 +871,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -905,7 +896,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1160,7 +1150,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1249,7 +1238,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1533,7 +1521,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1558,7 +1545,6 @@ void et_arbeidsforhold_under_6G_tilkommet_frilansinntekt() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); @@ -1583,7 +1569,6 @@ void to_arbeidsforhold_under_6G_aktivitetsgrad_lavere_enn_utbetalingsgrad() { .build(); Beregningsgrunnlag.builder() - .leggTilToggle("GRADERING_MOT_INNTEKT", true) .medBeregningsgrunnlagPeriode(periode) .medGrunnbeløp(BigDecimal.valueOf(100_000)); diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/MapTilFordelingsmodell.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/MapTilFordelingsmodell.java index 6b3a8bb2..c0b72576 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/MapTilFordelingsmodell.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/MapTilFordelingsmodell.java @@ -5,6 +5,7 @@ import java.math.BigDecimal; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -13,12 +14,11 @@ import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.AktivitetStatus; import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.Periode; import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.grunnlag.inntekt.Arbeidsforhold; -import no.nav.folketrygdloven.kalkulator.KonfigurasjonVerdi; import no.nav.folketrygdloven.kalkulator.adapter.util.FinnArbeidsperiode; import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.kodeverk.MapInntektskategoriFraVLTilRegel; import no.nav.folketrygdloven.kalkulator.avklaringsbehov.PerioderTilVurderingTjeneste; -import no.nav.folketrygdloven.kalkulator.felles.inntektgradering.SimulerTilkomneAktiviteterTjeneste; import no.nav.folketrygdloven.kalkulator.input.BeregningsgrunnlagInput; +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; @@ -27,124 +27,108 @@ import no.nav.folketrygdloven.kalkulator.modell.typer.Aktivitetsgrad; import no.nav.folketrygdloven.kalkulator.modell.typer.Beløp; import no.nav.folketrygdloven.kalkulator.modell.typer.Utbetalingsgrad; -import no.nav.fpsak.tidsserie.LocalDateSegment; import no.nav.fpsak.tidsserie.LocalDateTimeline; public class MapTilFordelingsmodell { - private MapTilFordelingsmodell() { - // Skjuler default ctor - } - - public static List map(BeregningsgrunnlagDto beregningsgrunnlag, - BeregningsgrunnlagInput input) { - var perioderTilVurderingTjeneste = new PerioderTilVurderingTjeneste(input.getForlengelseperioder(), beregningsgrunnlag); - return beregningsgrunnlag.getBeregningsgrunnlagPerioder().stream() - .filter(p -> perioderTilVurderingTjeneste.erTilVurdering(p.getPeriode())) - .map(bgp -> mapPeriode(bgp, input)) - .collect(Collectors.toList()); - } - - private static FordelPeriodeModell mapPeriode(BeregningsgrunnlagPeriodeDto bgPeriode, BeregningsgrunnlagInput input) { - var regelAndeler = bgPeriode.getBeregningsgrunnlagPrStatusOgAndelList().stream() - .map(bga -> mapAndel(bga, input)) - .collect(Collectors.toList()); - return new FordelPeriodeModell(Periode.of(bgPeriode.getBeregningsgrunnlagPeriodeFom(), bgPeriode.getBeregningsgrunnlagPeriodeTom()), regelAndeler); - } - - private static FordelAndelModell mapAndel(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { - var regelstatus = mapStatus(bgAndel.getAktivitetStatus()); - var regelBuilder = FordelAndelModell.builder() - .medAktivitetStatus(regelstatus) - .medAndelNr(bgAndel.getAndelsnr()) - .erSøktYtelseFor(erSøktYtelseFor(bgAndel, input)) - .medUtbetalingsgrad(kanFordeleTilAndelen(bgAndel, input) ? BigDecimal.valueOf(100) : BigDecimal.ZERO) - .medInntektskategori(MapInntektskategoriFraVLTilRegel.map(bgAndel.getGjeldendeInntektskategori())); - mapArbeidsforhold(bgAndel).ifPresent(regelBuilder::medArbeidsforhold); - bgAndel.getBgAndelArbeidsforhold().ifPresent(arb -> regelBuilder.medGjeldendeRefusjonPrÅr(Beløp.safeVerdi(arb.getGjeldendeRefusjonPrÅr()))); - bgAndel.getBgAndelArbeidsforhold().flatMap(BGAndelArbeidsforholdDto::getNaturalytelseBortfaltPrÅr).map(Beløp::verdi).ifPresent(regelBuilder::medNaturalytelseBortfaltPrÅr); - bgAndel.getBgAndelArbeidsforhold().flatMap(BGAndelArbeidsforholdDto::getNaturalytelseTilkommetPrÅr).map(Beløp::verdi).ifPresent(regelBuilder::medNaturalytelseTilkommerPrÅr); - if (bgAndel.getBruttoPrÅr() != null) { - regelBuilder.medForeslåttPrÅr(Beløp.safeVerdi(bgAndel.getBruttoPrÅr())); - } else if (erArbeidsandelMedSøktRefusjon(bgAndel)) { - // Andel er opprettet etter foreslå steget, henter inntekt fra IM for bruk ved andelsmessig fordeling - regelBuilder.medInntektFraInnektsmelding(finnInntektFraIM(bgAndel, input)); - } - return regelBuilder.build(); - } - - private static boolean kanFordeleTilAndelen(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { - var periode = bgAndel.getBeregningsgrunnlagPeriode().getPeriode(); + private MapTilFordelingsmodell() { + // Skjuler default ctor + } + + public static List map(BeregningsgrunnlagDto beregningsgrunnlag, + BeregningsgrunnlagInput input) { + var perioderTilVurderingTjeneste = new PerioderTilVurderingTjeneste(input.getForlengelseperioder(), beregningsgrunnlag); + return beregningsgrunnlag.getBeregningsgrunnlagPerioder().stream() + .filter(p -> perioderTilVurderingTjeneste.erTilVurdering(p.getPeriode())) + .map(bgp -> mapPeriode(bgp, input)) + .collect(Collectors.toList()); + } + + private static FordelPeriodeModell mapPeriode(BeregningsgrunnlagPeriodeDto bgPeriode, BeregningsgrunnlagInput input) { + var regelAndeler = bgPeriode.getBeregningsgrunnlagPrStatusOgAndelList().stream() + .map(bga -> mapAndel(bga, input)) + .collect(Collectors.toList()); + return new FordelPeriodeModell(Periode.of(bgPeriode.getBeregningsgrunnlagPeriodeFom(), bgPeriode.getBeregningsgrunnlagPeriodeTom()), regelAndeler); + } + + private static FordelAndelModell mapAndel(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { + var regelstatus = mapStatus(bgAndel.getAktivitetStatus()); + var regelBuilder = FordelAndelModell.builder() + .medAktivitetStatus(regelstatus) + .medAndelNr(bgAndel.getAndelsnr()) + .erSøktYtelseFor(erSøktYtelseFor(bgAndel, input.getYtelsespesifiktGrunnlag())) + .medUtbetalingsgrad(kanFordeleTilAndelen(bgAndel, input) ? BigDecimal.valueOf(100) : BigDecimal.ZERO) + .medInntektskategori(MapInntektskategoriFraVLTilRegel.map(bgAndel.getGjeldendeInntektskategori())); + mapArbeidsforhold(bgAndel).ifPresent(regelBuilder::medArbeidsforhold); + bgAndel.getBgAndelArbeidsforhold().ifPresent(arb -> regelBuilder.medGjeldendeRefusjonPrÅr(Beløp.safeVerdi(arb.getGjeldendeRefusjonPrÅr()))); + bgAndel.getBgAndelArbeidsforhold().flatMap(BGAndelArbeidsforholdDto::getNaturalytelseBortfaltPrÅr).map(Beløp::verdi).ifPresent(regelBuilder::medNaturalytelseBortfaltPrÅr); + bgAndel.getBgAndelArbeidsforhold().flatMap(BGAndelArbeidsforholdDto::getNaturalytelseTilkommetPrÅr).map(Beløp::verdi).ifPresent(regelBuilder::medNaturalytelseTilkommerPrÅr); + if (bgAndel.getBruttoPrÅr() != null) { + regelBuilder.medForeslåttPrÅr(Beløp.safeVerdi(bgAndel.getBruttoPrÅr())); + } else if (erArbeidsandelMedSøktRefusjon(bgAndel)) { + // Andel er opprettet etter foreslå steget, henter inntekt fra IM for bruk ved andelsmessig fordeling + regelBuilder.medInntektFraInnektsmelding(finnInntektFraIM(bgAndel, input)); + } + return regelBuilder.build(); + } + + private static boolean kanFordeleTilAndelen(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { + var periode = bgAndel.getBeregningsgrunnlagPeriode().getPeriode(); var arbeidsforhold = bgAndel.getBgAndelArbeidsforhold(); - if (arbeidsforhold.isPresent()) { - var ansattTidslinje = FinnArbeidsperiode.finnAnsettelseTidslinje(arbeidsforhold.get().getArbeidsgiver(), - arbeidsforhold.get().getArbeidsforholdRef(), - input.getIayGrunnlag(), input.getSkjæringstidspunktForBeregning()); - var aktuellPeriode = new LocalDateTimeline<>(periode.getFomDato(), periode.getTomDato(), Boolean.TRUE); - var erAnsattIPeriode = !ansattTidslinje.intersection(aktuellPeriode).isEmpty(); - if (!erAnsattIPeriode) { - return true; - } - } - var graderingMotInntektEnabled = KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false); - if (graderingMotInntektEnabled) { - var tilkommetAktivitetTidslinje = SimulerTilkomneAktiviteterTjeneste.utledTilkommetAktivitetPerioder(input); - var erTilkommet = SimulerTilkomneAktiviteterTjeneste.erTilkommetAktivitetIPeriode(tilkommetAktivitetTidslinje, - LocalDateSegment.emptySegment(bgAndel.getBeregningsgrunnlagPeriode().getBeregningsgrunnlagPeriodeFom(), bgAndel.getBeregningsgrunnlagPeriode().getBeregningsgrunnlagPeriodeTom()), bgAndel.getAktivitetStatus(), bgAndel.getArbeidsgiver()); - var aktivitetsgrad = finnAktivitetsgradForAndel(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), input.getYtelsespesifiktGrunnlag(), false); - var brukAktivitetsgrad = aktivitetsgrad.isPresent() && erTilkommet; - if (brukAktivitetsgrad) { - return aktivitetsgrad.get().compareTo(Aktivitetsgrad.fra(100)) < 0; - } - } - var ubetalingsgrad = finnUtbetalingsgradForAndel(bgAndel, periode, input.getYtelsespesifiktGrunnlag(), false); - return ubetalingsgrad.compareTo(Utbetalingsgrad.ZERO) > 0; - } - - - private static boolean erArbeidsandelMedSøktRefusjon(BeregningsgrunnlagPrStatusOgAndelDto bgAndel) { - var gjeldendeRefusjon = bgAndel.getBgAndelArbeidsforhold() - .map(BGAndelArbeidsforholdDto::getGjeldendeRefusjonPrÅr) - .orElse(Beløp.ZERO); - return bgAndel.getAktivitetStatus().erArbeidstaker() && gjeldendeRefusjon.compareTo(Beløp.ZERO) > 0; - } - - private static BigDecimal finnInntektFraIM(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { - return input.getInntektsmeldinger().stream() - .filter(im -> bgAndel.gjelderInntektsmeldingFor(im.getArbeidsgiver(), im.getArbeidsforholdRef())) - .findFirst().map(InntektsmeldingDto::getInntektBeløp) - .orElseThrow().verdi(); - } - - private static boolean erSøktYtelseFor(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { - var graderingMotInntektEnabled = KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false); - if (graderingMotInntektEnabled) { - var tilkommetAktivitetTidslinje = SimulerTilkomneAktiviteterTjeneste.utledTilkommetAktivitetPerioder(input); - var erTilkommet = SimulerTilkomneAktiviteterTjeneste.erTilkommetAktivitetIPeriode(tilkommetAktivitetTidslinje, - LocalDateSegment.emptySegment(bgAndel.getBeregningsgrunnlagPeriode().getBeregningsgrunnlagPeriodeFom(), bgAndel.getBeregningsgrunnlagPeriode().getBeregningsgrunnlagPeriodeTom()), bgAndel.getAktivitetStatus(), bgAndel.getArbeidsgiver()); - var aktivitetsgrad = finnAktivitetsgradForAndel(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), input.getYtelsespesifiktGrunnlag(), false); - var brukAktivitetsgrad = aktivitetsgrad.isPresent() && erTilkommet; - if (brukAktivitetsgrad) { - return aktivitetsgrad.get().compareTo(Aktivitetsgrad.fra(100)) < 0; - } - } - var utbGrad = finnUtbetalingsgradForAndel(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), input.getYtelsespesifiktGrunnlag(), false); - return utbGrad.compareTo(Utbetalingsgrad.ZERO) > 0; - } - - private static Optional mapArbeidsforhold(BeregningsgrunnlagPrStatusOgAndelDto bgAndel) { - if (bgAndel.getAktivitetStatus().erArbeidstaker() || bgAndel.getAktivitetStatus().erFrilanser()) { - return Optional.of(MapArbeidsforholdFraVLTilRegel.arbeidsforholdFor(bgAndel)); - } - return Optional.empty(); - } - - private static AktivitetStatus mapStatus(no.nav.folketrygdloven.kalkulus.kodeverk.AktivitetStatus kalkulusAktivitetstatus) { - try { - return AktivitetStatus.valueOf(kalkulusAktivitetstatus.getKode()); - } catch (IllegalArgumentException e) { - throw new IllegalStateException("Ukjent AktivitetStatus: (" + kalkulusAktivitetstatus.getKode() + ").", e); - } - } + if (arbeidsforhold.isPresent()) { + var ansattTidslinje = FinnArbeidsperiode.finnAnsettelseTidslinje(arbeidsforhold.get().getArbeidsgiver(), + arbeidsforhold.get().getArbeidsforholdRef(), + input.getIayGrunnlag(), input.getSkjæringstidspunktForBeregning()); + var aktuellPeriode = new LocalDateTimeline<>(periode.getFomDato(), periode.getTomDato(), Boolean.TRUE); + var erAnsattIPeriode = !ansattTidslinje.intersection(aktuellPeriode).isEmpty(); + if (!erAnsattIPeriode) { + return true; + } + } + + return erSøktYtelseFor(bgAndel, input.getYtelsespesifiktGrunnlag()); + } + + + private static boolean erArbeidsandelMedSøktRefusjon(BeregningsgrunnlagPrStatusOgAndelDto bgAndel) { + var gjeldendeRefusjon = bgAndel.getBgAndelArbeidsforhold() + .map(BGAndelArbeidsforholdDto::getGjeldendeRefusjonPrÅr) + .orElse(Beløp.ZERO); + return bgAndel.getAktivitetStatus().erArbeidstaker() && gjeldendeRefusjon.compareTo(Beløp.ZERO) > 0; + } + + private static BigDecimal finnInntektFraIM(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, BeregningsgrunnlagInput input) { + return input.getInntektsmeldinger().stream() + .filter(im -> bgAndel.gjelderInntektsmeldingFor(im.getArbeidsgiver(), im.getArbeidsforholdRef())) + .findFirst().map(InntektsmeldingDto::getInntektBeløp) + .orElseThrow().verdi(); + } + + private static boolean erSøktYtelseFor(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag) { + var erTilkommet = bgAndel.getBeregningsgrunnlagPeriode().getTilkomneInntekter() + .stream() + .anyMatch(it -> Objects.equals(it.getArbeidsgiver().orElse(null), bgAndel.getArbeidsgiver().orElse(null)) && bgAndel.getAktivitetStatus().equals(it.getAktivitetStatus())); + if (erTilkommet) { + var aktivitetsgrad = finnAktivitetsgradForAndel(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), ytelsespesifiktGrunnlag, false); + return aktivitetsgrad.orElse(Aktivitetsgrad.HUNDRE).compareTo(Aktivitetsgrad.fra(100)) < 0; + } + var ubetalingsgrad = finnUtbetalingsgradForAndel(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), ytelsespesifiktGrunnlag, false); + return ubetalingsgrad.compareTo(Utbetalingsgrad.ZERO) > 0; + } + + private static Optional mapArbeidsforhold(BeregningsgrunnlagPrStatusOgAndelDto bgAndel) { + if (bgAndel.getAktivitetStatus().erArbeidstaker() || bgAndel.getAktivitetStatus().erFrilanser()) { + return Optional.of(MapArbeidsforholdFraVLTilRegel.arbeidsforholdFor(bgAndel)); + } + return Optional.empty(); + } + + private static AktivitetStatus mapStatus(no.nav.folketrygdloven.kalkulus.kodeverk.AktivitetStatus kalkulusAktivitetstatus) { + try { + return AktivitetStatus.valueOf(kalkulusAktivitetstatus.getKode()); + } catch (IllegalArgumentException e) { + throw new IllegalStateException("Ukjent AktivitetStatus: (" + kalkulusAktivitetstatus.getKode() + ").", e); + } + } } diff --git "a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/fastsett/MapFullf\303\270reBeregningsgrunnlagFraVLTilRegel.java" "b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/fastsett/MapFullf\303\270reBeregningsgrunnlagFraVLTilRegel.java" index 9763761a..1db2a98b 100644 --- "a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/fastsett/MapFullf\303\270reBeregningsgrunnlagFraVLTilRegel.java" +++ "b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/adapter/vltilregelmodell/fastsett/MapFullf\303\270reBeregningsgrunnlagFraVLTilRegel.java" @@ -63,7 +63,6 @@ public no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.Beregnings .medYtelsesSpesifiktGrunnlag(mapYtelsesSpesifiktGrunnlag(input)) .medAntallGØvreGrenseverdi(KonfigTjeneste.getAntallGØvreGrenseverdi()) .medMidlertidigInaktivType(mapMidlertidigInaktivType(input)) - .leggTilToggle("GRADERING_MOT_INNTEKT", KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false)) .build(); } diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/MapBeregningsgrunnlagFraVLTilRegel.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/MapBeregningsgrunnlagFraVLTilRegel.java index 179e0f59..c327abc6 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/MapBeregningsgrunnlagFraVLTilRegel.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/MapBeregningsgrunnlagFraVLTilRegel.java @@ -63,7 +63,6 @@ public no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.Beregnings .medYtelsesSpesifiktGrunnlag(mapYtelsesSpesifiktGrunnlag(input)) .medAntallGØvreGrenseverdi(KonfigTjeneste.getAntallGØvreGrenseverdi()) .medMidlertidigInaktivType(mapMidlertidigInaktivType(input)) - .leggTilToggle("GRADERING_MOT_INNTEKT", KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false)) .build(); } diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerGraderingMotInntektTjeneste.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerGraderingMotInntektTjeneste.java index 3d9a2fd0..ed5d5bc0 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerGraderingMotInntektTjeneste.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerGraderingMotInntektTjeneste.java @@ -117,7 +117,6 @@ private static boolean erFordelt(BeregningsgrunnlagDto nyttBg) { private List kjørRegel(BeregningsgrunnlagInput beregningsgrunnlagInput, BeregningsgrunnlagDto nyttBg) { var regelBg = mapFullføreBeregningsgrunnlagFraVLTilRegel.map(beregningsgrunnlagInput, nyttBg); - Beregningsgrunnlag.builder(regelBg).leggTilToggle("GRADERING_MOT_INNTEKT", true); var regelPerioder = regelBg.getBeregningsgrunnlagPerioder().stream() .filter(p -> !p.getTilkommetInntektsforholdListe().isEmpty()) .toList(); diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerTilkomneAktiviteterTjeneste.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerTilkomneAktiviteterTjeneste.java index 59a6875b..e1580806 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerTilkomneAktiviteterTjeneste.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/felles/inntektgradering/SimulerTilkomneAktiviteterTjeneste.java @@ -4,6 +4,7 @@ import java.util.Optional; import java.util.Set; +import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.resultat.Beregningsgrunnlag; import no.nav.folketrygdloven.kalkulator.input.BeregningsgrunnlagInput; import no.nav.folketrygdloven.kalkulator.input.UtbetalingsgradGrunnlag; import no.nav.folketrygdloven.kalkulator.modell.typer.Arbeidsgiver; diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/BeregningsgrunnlagTjeneste.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/BeregningsgrunnlagTjeneste.java index 8c7bf281..d3e935aa 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/BeregningsgrunnlagTjeneste.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/BeregningsgrunnlagTjeneste.java @@ -143,7 +143,6 @@ public BeregningResultatAggregat vurderTilkommetInntekt(StegProsesseringInput in var bg = new TilkommetInntektTjeneste().vurderTilkommetInntekt(input); var avklaringsbehov = AvklaringsbehovUtlederTilkommetInntekt.utledAvklaringsbehovFor( BeregningsgrunnlagGrunnlagDtoBuilder.oppdatere(input.getBeregningsgrunnlagGrunnlag()).medBeregningsgrunnlag(bg).build(VURDERT_TILKOMMET_INNTEKT), - input.getYtelsespesifiktGrunnlag(), input.getForlengelseperioder()); return BeregningResultatAggregat.Builder.fra(input) .medAvklaringsbehov(avklaringsbehov) diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/fordeling/avklaringsbehov/AvklaringsbehovUtlederNyttInntektsforhold.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/fordeling/avklaringsbehov/AvklaringsbehovUtlederNyttInntektsforhold.java index ffb985a8..d4a3df86 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/fordeling/avklaringsbehov/AvklaringsbehovUtlederNyttInntektsforhold.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/fordeling/avklaringsbehov/AvklaringsbehovUtlederNyttInntektsforhold.java @@ -20,13 +20,8 @@ public class AvklaringsbehovUtlederNyttInntektsforhold { public static boolean skalVurdereNyttInntektsforhold(BeregningsgrunnlagGrunnlagDto beregningsgrunnlagGrunnlag, - YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag, List forlengelseperioder) { - if (!(ytelsespesifiktGrunnlag instanceof UtbetalingsgradGrunnlag) || !KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false)) { - return false; - } - var bg = beregningsgrunnlagGrunnlag.getBeregningsgrunnlagHvisFinnes().orElseThrow(() -> new IllegalStateException("Skal ha beregningsgrunnlag her")); var tilVurderingTjeneste = new PerioderTilVurderingTjeneste(forlengelseperioder, bg); diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/AvklaringsbehovUtlederTilkommetInntekt.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/AvklaringsbehovUtlederTilkommetInntekt.java index c6632ed9..460ea453 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/AvklaringsbehovUtlederTilkommetInntekt.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/AvklaringsbehovUtlederTilkommetInntekt.java @@ -18,11 +18,9 @@ private AvklaringsbehovUtlederTilkommetInntekt() { public static List utledAvklaringsbehovFor(BeregningsgrunnlagGrunnlagDto beregningsgrunnlagGrunnlag, - YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag, List forlengelseperioder) { var skalVurdereNyttInntektsforhold = AvklaringsbehovUtlederNyttInntektsforhold.skalVurdereNyttInntektsforhold( beregningsgrunnlagGrunnlag, - ytelsespesifiktGrunnlag, forlengelseperioder); var utledetbehovForAvklaring = new ArrayList(); if (skalVurdereNyttInntektsforhold) { diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektTjeneste.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektTjeneste.java index cacfa028..96b07ec2 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektTjeneste.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektTjeneste.java @@ -1,6 +1,5 @@ package no.nav.folketrygdloven.kalkulator.steg.tilkommetInntekt; -import no.nav.folketrygdloven.kalkulator.KonfigurasjonVerdi; import no.nav.folketrygdloven.kalkulator.input.BeregningsgrunnlagInput; import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagDto; import no.nav.folketrygdloven.kalkulator.steg.fordeling.periodisering.PeriodiserForAktivitetsgradTjeneste; @@ -8,17 +7,12 @@ public class TilkommetInntektTjeneste { - private static final boolean GRADERING_MOT_INNTEKT_ENABLED = KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false); + private final TilkommetInntektPeriodeTjeneste periodeTjeneste = new TilkommetInntektPeriodeTjeneste(); - private final TilkommetInntektPeriodeTjeneste periodeTjeneste = new TilkommetInntektPeriodeTjeneste(); + public BeregningsgrunnlagDto vurderTilkommetInntekt(BeregningsgrunnlagInput input) { + var splittForAktivitetsgrad = PeriodiserForAktivitetsgradTjeneste.splittVedEndringIAktivitetsgrad(input.getBeregningsgrunnlag(), input.getYtelsespesifiktGrunnlag()); + return periodeTjeneste.splittPerioderVedTilkommetInntekt(input, splittForAktivitetsgrad); - public BeregningsgrunnlagDto vurderTilkommetInntekt(BeregningsgrunnlagInput input) { - if (!GRADERING_MOT_INNTEKT_ENABLED) { - return input.getBeregningsgrunnlag(); - } else { - var splittForAktivitetsgrad = PeriodiserForAktivitetsgradTjeneste.splittVedEndringIAktivitetsgrad(input.getBeregningsgrunnlag(), input.getYtelsespesifiktGrunnlag()); - return periodeTjeneste.splittPerioderVedTilkommetInntekt(input, splittForAktivitetsgrad); - } - } + } } diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/k9/MapRefusjonPerioderFraVLTilRegelPleiepenger.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/k9/MapRefusjonPerioderFraVLTilRegelPleiepenger.java index 35756326..7d9df99b 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/k9/MapRefusjonPerioderFraVLTilRegelPleiepenger.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/k9/MapRefusjonPerioderFraVLTilRegelPleiepenger.java @@ -87,8 +87,7 @@ private LocalDateTimeline finnUtbetalingTidslinje(UtbetalingsgradGrunnl final List> segmenterMedUtbetaling = UtbetalingsgradTjeneste.finnPerioderForArbeid(ytelsespesifiktGrunnlag, im.getArbeidsgiver(), im.getArbeidsforholdRef(), true) .stream() .flatMap(u -> u.getPeriodeMedUtbetalingsgrad().stream()) - .filter(p -> p.getUtbetalingsgrad() != null && p.getUtbetalingsgrad().compareTo(Utbetalingsgrad.ZERO) > 0 - || harAktivitetsgradMedTilkommetInntektToggle(p)) + .filter(p -> harOverNullProsentUtbetalingsgrad(p) || harMindreEnnHundreProsentAktivitetsgrad(p)) .map(PeriodeMedUtbetalingsgradDto::getPeriode) .map(p -> new LocalDateTimeline<>(List.of(new LocalDateSegment<>(p.getFomDato(), p.getTomDato(), true)))) .collect(Collectors.toList()); @@ -105,10 +104,13 @@ private LocalDateTimeline finnUtbetalingTidslinje(UtbetalingsgradGrunnl return timeline.compress(); } - private static boolean harAktivitetsgradMedTilkommetInntektToggle(PeriodeMedUtbetalingsgradDto p) { - return p.getAktivitetsgrad().map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false) - && KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false); - } + private static boolean harOverNullProsentUtbetalingsgrad(PeriodeMedUtbetalingsgradDto p) { + return p.getUtbetalingsgrad() != null && p.getUtbetalingsgrad().compareTo(Utbetalingsgrad.ZERO) > 0; + } + + private static boolean harMindreEnnHundreProsentAktivitetsgrad(PeriodeMedUtbetalingsgradDto p) { + return p.getAktivitetsgrad().map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false); + } } diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/utbgradytelse/MapRefusjonPerioderFraVLTilRegelUtbgrad.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/utbgradytelse/MapRefusjonPerioderFraVLTilRegelUtbgrad.java index a3b0b009..a70a696e 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/utbgradytelse/MapRefusjonPerioderFraVLTilRegelUtbgrad.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/ytelse/utbgradytelse/MapRefusjonPerioderFraVLTilRegelUtbgrad.java @@ -9,7 +9,6 @@ import java.util.Set; import java.util.stream.Collectors; -import no.nav.folketrygdloven.kalkulator.KonfigurasjonVerdi; import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste; import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.periodisering.FinnAnsettelsesPeriode; import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.periodisering.FinnFørsteDagEtterPermisjon; @@ -82,8 +81,7 @@ private LocalDateTimeline finnUtbetalingTidslinje(UtbetalingsgradGrunnl final List> segmenterMedUtbetaling = UtbetalingsgradTjeneste.finnPerioderForArbeid(ytelsespesifiktGrunnlag, im.getArbeidsgiver(), im.getArbeidsforholdRef(), false) .stream() .flatMap(u -> u.getPeriodeMedUtbetalingsgrad().stream()) - .filter(p -> p.getUtbetalingsgrad() != null && p.getUtbetalingsgrad().compareTo(Utbetalingsgrad.ZERO) > 0 - || harAktivitetsgradMedTilkommetInntektToggle(p)) + .filter(p -> harOverNullProsentUtbetalingsgrad(p) || harMindreEnnHundreProsentAktivitetsgrad(p)) .map(PeriodeMedUtbetalingsgradDto::getPeriode) .map(p -> new LocalDateTimeline<>(List.of(new LocalDateSegment<>(p.getFomDato(), p.getTomDato(), true)))) .toList(); @@ -97,9 +95,12 @@ private LocalDateTimeline finnUtbetalingTidslinje(UtbetalingsgradGrunnl return timeline.compress(); } - private static boolean harAktivitetsgradMedTilkommetInntektToggle(PeriodeMedUtbetalingsgradDto p) { - return p.getAktivitetsgrad().map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false) - && KonfigurasjonVerdi.instance().get("GRADERING_MOT_INNTEKT", false); + private static boolean harOverNullProsentUtbetalingsgrad(PeriodeMedUtbetalingsgradDto p) { + return p.getUtbetalingsgrad() != null && p.getUtbetalingsgrad().compareTo(Utbetalingsgrad.ZERO) > 0; + } + + private static boolean harMindreEnnHundreProsentAktivitetsgrad(PeriodeMedUtbetalingsgradDto p) { + return p.getAktivitetsgrad().map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false); }