Skip to content

Commit

Permalink
Legger ikke til andeler for refusjon dersom det ikke utbetales ytelse…
Browse files Browse the repository at this point in the history
… for denne perioden (#585)
  • Loading branch information
espenjv authored Dec 19, 2024
1 parent be6c2da commit 5fca1ff
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 123 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -78,22 +78,32 @@ protected List<Intervall> finnGyldigeRefusjonPerioder(LocalDate startdatoEtterPe
}

private LocalDateTimeline<Boolean> finnUtbetalingTidslinje(UtbetalingsgradGrunnlag ytelsespesifiktGrunnlag, InntektsmeldingDto im) {
final List<LocalDateTimeline<Boolean>> segmenterMedUtbetaling = UtbetalingsgradTjeneste.finnPerioderForArbeid(ytelsespesifiktGrunnlag, im.getArbeidsgiver(), im.getArbeidsforholdRef(), false)
.stream()
.flatMap(u -> u.getPeriodeMedUtbetalingsgrad().stream())
.filter(p -> harOverNullProsentUtbetalingsgrad(p) || harMindreEnnHundreProsentAktivitetsgrad(p))
.map(PeriodeMedUtbetalingsgradDto::getPeriode)
.map(p -> new LocalDateTimeline<>(List.of(new LocalDateSegment<>(p.getFomDato(), p.getTomDato(), true))))
.toList();

var timeline = new LocalDateTimeline<Boolean>(List.of());
final LocalDateTimeline<Boolean> tidslinjeMedFraværHosArbeidsgiver = finnTidslinjeMedFraværHosArbeidsgiver(ytelsespesifiktGrunnlag, im);
final var tidslinjeForYtelse = finnTidslinjeForYtelse(ytelsespesifiktGrunnlag);
return tidslinjeMedFraværHosArbeidsgiver.intersection(tidslinjeForYtelse).compress();
}

for (LocalDateTimeline<Boolean> localDateSegments : segmenterMedUtbetaling) {
timeline = timeline.combine(localDateSegments, StandardCombinators::coalesceRightHandSide, LocalDateTimeline.JoinStyle.CROSS_JOIN);
}
private static LocalDateTimeline<Boolean> finnTidslinjeMedFraværHosArbeidsgiver(UtbetalingsgradGrunnlag ytelsespesifiktGrunnlag, InntektsmeldingDto im) {
return UtbetalingsgradTjeneste.finnPerioderForArbeid(ytelsespesifiktGrunnlag, im.getArbeidsgiver(), im.getArbeidsforholdRef(), false)
.stream()
.flatMap(u -> u.getPeriodeMedUtbetalingsgrad().stream())
.filter(p -> harOverNullProsentUtbetalingsgrad(p) || harMindreEnnHundreProsentAktivitetsgrad(p))
.map(PeriodeMedUtbetalingsgradDto::getPeriode)
.map(p -> new LocalDateTimeline<>(p.getFomDato(), p.getTomDato(), true))
.reduce(LocalDateTimeline::crossJoin)
.orElse(LocalDateTimeline.empty());
}

return timeline.compress();
}
private static LocalDateTimeline<Boolean> finnTidslinjeForYtelse(UtbetalingsgradGrunnlag ytelsespesifiktGrunnlag) {
return ytelsespesifiktGrunnlag.getUtbetalingsgradPrAktivitet()
.stream()
.flatMap(u -> u.getPeriodeMedUtbetalingsgrad().stream())
.filter(MapRefusjonPerioderFraVLTilRegelUtbgrad::harOverNullProsentUtbetalingsgrad)
.map(PeriodeMedUtbetalingsgradDto::getPeriode)
.map(p -> new LocalDateTimeline<>(p.getFomDato(), p.getTomDato(), true))
.reduce(LocalDateTimeline::crossJoin)
.orElse(LocalDateTimeline.empty());
}

private static boolean harOverNullProsentUtbetalingsgrad(PeriodeMedUtbetalingsgradDto p) {
return p.getUtbetalingsgrad() != null && p.getUtbetalingsgrad().compareTo(Utbetalingsgrad.ZERO) > 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagGrunnlagDtoBuilder;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPeriodeDto;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
import no.nav.folketrygdloven.kalkulator.modell.iay.AktivitetsAvtaleDto;
import no.nav.folketrygdloven.kalkulator.modell.iay.AktivitetsAvtaleDtoBuilder;
import no.nav.folketrygdloven.kalkulator.modell.iay.InntektArbeidYtelseAggregatBuilder;
import no.nav.folketrygdloven.kalkulator.modell.iay.InntektArbeidYtelseGrunnlagDto;
Expand All @@ -42,6 +43,7 @@
import no.nav.folketrygdloven.kalkulator.modell.svp.AktivitetDto;
import no.nav.folketrygdloven.kalkulator.modell.svp.PeriodeMedUtbetalingsgradDto;
import no.nav.folketrygdloven.kalkulator.modell.svp.UtbetalingsgradPrAktivitetDto;
import no.nav.folketrygdloven.kalkulator.modell.typer.Aktivitetsgrad;
import no.nav.folketrygdloven.kalkulator.modell.typer.Arbeidsgiver;
import no.nav.folketrygdloven.kalkulator.modell.typer.Beløp;
import no.nav.folketrygdloven.kalkulator.modell.typer.InternArbeidsforholdRefDto;
Expand Down Expand Up @@ -223,6 +225,28 @@ void skal_gi_refusjon_fra_start_for_arbeid_som_har_oppgitt_feil_startdato_i_innt
Assertions.assertThat(opphør.getPeriode().getFom()).isEqualTo(LocalDate.of(2020, 1, 19).plusDays(1));
}

@Test
void skal_ikke_returnere_periode_for_fravær_fra_arbeidsgiver_men_ingen_uttak() {
var stp = LocalDate.now();
var arbeidsgiver = Arbeidsgiver.virksomhet("123456789");
var utbetalingsperiode = Intervall.fraOgMedTilOgMed(stp.plusDays(20), stp.plusDays(25));
var gradForTilkommetArbeid = new UtbetalingsgradPrAktivitetDto(
new AktivitetDto(arbeidsgiver, InternArbeidsforholdRefDto.nullRef(), UttakArbeidType.ORDINÆRT_ARBEID),
List.of(new PeriodeMedUtbetalingsgradDto(utbetalingsperiode, new Utbetalingsgrad(BigDecimal.ZERO),
new Aktivitetsgrad(BigDecimal.valueOf(50)))));
var ytelsespesifiktGrunnlag = new PleiepengerSyktBarnGrunnlag(List.of(gradForTilkommetArbeid));
var inntektsmelding = lagInntektsmelding(stp, arbeidsgiver);
var ansettelsesperiode = Intervall.fraOgMedTilOgMed(stp.minusYears(10), stp.plusYears(15));
var aktivitetsAvtaleDtoBuilder = AktivitetsAvtaleDtoBuilder.ny().medPeriode(ansettelsesperiode).medErAnsettelsesPeriode(true);
var permisjonsperiode = Intervall.fraOgMedTilOgMed(stp.minusDays(1), stp.plusDays(15));
var relaterteYrkesaktiviteter = Set.of(lagYrkesaktivitet(arbeidsgiver, aktivitetsAvtaleDtoBuilder, permisjonsperiode));

var avtaler = relaterteYrkesaktiviteter.iterator().next().getAlleAnsettelsesperioder().stream().toList();
var perioder = mapper.finnGyldigeRefusjonPerioder(stp, ytelsespesifiktGrunnlag, inntektsmelding, avtaler, relaterteYrkesaktiviteter);

assertThat(perioder.isEmpty()).isTrue();
}


private PleiepengerSyktBarnGrunnlag lagUtbetalingsgrunnlag(Arbeidsgiver arbeidsgiver, Intervall utbetalingsperiode) {
return new PleiepengerSyktBarnGrunnlag(List.of(new UtbetalingsgradPrAktivitetDto(
Expand Down

0 comments on commit 5fca1ff

Please sign in to comment.