Skip to content

Commit

Permalink
Bruker samme logikk for om det er søkt ytelse for andel/periode (#565)
Browse files Browse the repository at this point in the history
* Bruker samme logikk for om det er søkt ytelse for andel/periode

* Legger til tester

* Fjerner ubrukte metoder
  • Loading branch information
espenjv authored Nov 1, 2024
1 parent 8aac287 commit 99234f3
Show file tree
Hide file tree
Showing 5 changed files with 255 additions and 169 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package no.nav.folketrygdloven.kalkulator.adapter;

import static no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste.finnAktivitetsgradForAndel;
import static no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste.finnUtbetalingsgradForAndel;

import java.util.Optional;

import no.nav.folketrygdloven.kalkulator.input.YtelsespesifiktGrunnlag;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
import no.nav.folketrygdloven.kalkulator.modell.svp.PeriodeMedUtbetalingsgradDto;
import no.nav.folketrygdloven.kalkulator.modell.typer.Aktivitetsgrad;
import no.nav.folketrygdloven.kalkulator.modell.typer.Utbetalingsgrad;
import no.nav.folketrygdloven.kalkulator.tid.Intervall;

/**
* Avgjør om det er søkt ytelse for aktivitet.
*/
public class ErSøktYtelseFor {

public static boolean erSøktYtelseFor(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, Intervall periode, YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag, boolean skalIgnorereIkkeYrkesaktivStatus) {
return harOverNullProsentUtbetalingsgrad(finnUtbetalingsgradForAndel(bgAndel, periode, ytelsespesifiktGrunnlag, skalIgnorereIkkeYrkesaktivStatus)) ||
harMindreEnnHundreProsentAktivitetsgrad(finnAktivitetsgradForAndel(bgAndel, periode, ytelsespesifiktGrunnlag, skalIgnorereIkkeYrkesaktivStatus));
}

public static boolean erSøktYtelseFor(PeriodeMedUtbetalingsgradDto p) {
return harOverNullProsentUtbetalingsgrad(p.getUtbetalingsgrad()) || harMindreEnnHundreProsentAktivitetsgrad(p.getAktivitetsgrad());
}

private static boolean harOverNullProsentUtbetalingsgrad(Utbetalingsgrad utbetalingsgrad) {
return utbetalingsgrad != null && utbetalingsgrad.compareTo(Utbetalingsgrad.ZERO) > 0;
}

private static boolean harMindreEnnHundreProsentAktivitetsgrad(Optional<Aktivitetsgrad> aktivitetsgrad) {
return aktivitetsgrad.map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false);
}

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
package no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell;

import static no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste.finnAktivitetsgradForAndel;
import static no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste.finnUtbetalingsgradForAndel;

import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

Expand All @@ -14,6 +10,7 @@
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.adapter.ErSøktYtelseFor;
import no.nav.folketrygdloven.kalkulator.adapter.util.FinnArbeidsperiode;
import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.kodeverk.MapInntektskategoriFraVLTilRegel;
import no.nav.folketrygdloven.kalkulator.avklaringsbehov.PerioderTilVurderingTjeneste;
Expand All @@ -24,9 +21,7 @@
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPeriodeDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
import no.nav.folketrygdloven.kalkulator.modell.iay.InntektsmeldingDto;
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.LocalDateTimeline;

public class MapTilFordelingsmodell {
Expand Down Expand Up @@ -105,15 +100,7 @@ private static BigDecimal finnInntektFraIM(BeregningsgrunnlagPrStatusOgAndelDto
}

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;
return ErSøktYtelseFor.erSøktYtelseFor(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), ytelsespesifiktGrunnlag, false);
}

private static Optional<Arbeidsforhold> mapArbeidsforhold(BeregningsgrunnlagPrStatusOgAndelDto bgAndel) {
Expand Down
Loading

0 comments on commit 99234f3

Please sign in to comment.