diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapper.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapper.java index 2d5929f1e..0a3801355 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapper.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapper.java @@ -165,7 +165,8 @@ public ForeldrepengerInnvilgelseDokumentdata mapTilDokumentdata(DokumentFelles d .medPrematurDager(finnPrematurDagerHvisFinnes(saldoer)) .medKreverSammenhengendeUttak(behandling.kreverSammenhengendeUttakFraBehandlingen()) .medUtbetalingsperioder(utbetalingsperioder) - + .medHarVarierendeDagsats(harVarierendeDagsats(utbetalingsperioder)) + .medStarterMedFullUtbetaling(starterMedFullUtbetaling(utbetalingsperioder)) .medKlagefristUker(brevParametere.getKlagefristUker()) .medLovhjemlerUttak(UttakMapper.mapLovhjemlerForUttak(uttakResultatPerioder, konsekvensForInnvilgetYtelse, erInnvilgetRevurdering)) .medLovhjemlerBeregning( @@ -200,6 +201,21 @@ public ForeldrepengerInnvilgelseDokumentdata mapTilDokumentdata(DokumentFelles d return dokumentdataBuilder.build(); } + static boolean starterMedFullUtbetaling(List utbetalingsperioder) { + if (utbetalingsperioder.isEmpty()) { + return false; + } + return utbetalingsperioder.get(0).getPrioritertUtbetalingsgrad().erFull(); + } + + static boolean harVarierendeDagsats(List utbetalingsperioder) { + if (utbetalingsperioder.isEmpty()) { + return false; + } + var førstePeriodeDagsats = utbetalingsperioder.get(0).getPeriodeDagsats(); + return utbetalingsperioder.stream().anyMatch(p -> p.getPeriodeDagsats() != førstePeriodeDagsats); + } + private Optional finnUtbetalingFom(List utbetalingsperioder) { //Denne kan være optional hvis saksbehandler overstyrer uttak og avslår alle perioder i en revurdering. Eks sak 152211741 return utbetalingsperioder.stream() diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/felles/Prosent.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/felles/Prosent.java index af45ce80a..15f397145 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/felles/Prosent.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/felles/Prosent.java @@ -37,6 +37,10 @@ public static Prosent of(int verdi) { return verdi.compareTo(NULL.verdi) > 0; } + public boolean erFull() { + return verdi.compareTo(HUNDRE.verdi) == 0 || erStørreEnnHundreProsent(); + } + @Override public boolean equals(Object object) { if (this == object) { diff --git a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdata.java b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdata.java index 66b134356..3234e7bc0 100644 --- a/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdata.java +++ b/brevproduksjon/src/main/java/no/nav/foreldrepenger/fpformidling/integrasjon/dokgen/dto/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdata.java @@ -80,6 +80,8 @@ public class ForeldrepengerInnvilgelseDokumentdata extends Dokumentdata { private boolean ønskerJustertVedFødsel; private boolean graderingOgFulltUttakIAnnenAktivitet; + private boolean varierendeDagsats; + private boolean starterMedFullUtbetaling; public String getBehandlingType() { return behandlingType; @@ -121,6 +123,14 @@ public long getSeksG() { return seksG; } + public boolean isVarierendeDagsats() { + return varierendeDagsats; + } + + public boolean isStarterMedFullUtbetaling() { + return starterMedFullUtbetaling; + } + public boolean getInntektOverSeksG() { return inntektOverSeksG; } @@ -705,6 +715,16 @@ public Builder medUtbetalingFom(String utbetalingFom) { return this; } + public Builder medHarVarierendeDagsats(boolean varierendeDagsats) { + this.kladd.varierendeDagsats = varierendeDagsats; + return this; + } + + public Builder medStarterMedFullUtbetaling(boolean starterMedFullUtbetaling) { + kladd.starterMedFullUtbetaling = starterMedFullUtbetaling; + return this; + } + public ForeldrepengerInnvilgelseDokumentdata build() { return this.kladd; } diff --git a/brevproduksjon/src/test/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapperTest.java b/brevproduksjon/src/test/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapperTest.java index 4381b458d..5042af6a4 100644 --- a/brevproduksjon/src/test/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapperTest.java +++ b/brevproduksjon/src/test/java/no/nav/foreldrepenger/fpformidling/brevproduksjon/mapper/innvilgelsefp/ForeldrepengerInnvilgelseDokumentdataMapperTest.java @@ -11,12 +11,13 @@ import static no.nav.foreldrepenger.fpformidling.brevproduksjon.mapper.felles.DatamapperTestUtil.lagStandardHendelseBuilder; import static no.nav.foreldrepenger.fpformidling.brevproduksjon.mapper.felles.TilkjentYtelseMapper.finnDagsats; import static no.nav.foreldrepenger.fpformidling.brevproduksjon.mapper.felles.TilkjentYtelseMapper.finnMånedsbeløp; +import static no.nav.foreldrepenger.fpformidling.brevproduksjon.mapper.innvilgelsefp.ForeldrepengerInnvilgelseDokumentdataMapper.harVarierendeDagsats; +import static no.nav.foreldrepenger.fpformidling.brevproduksjon.mapper.innvilgelsefp.ForeldrepengerInnvilgelseDokumentdataMapper.starterMedFullUtbetaling; import static no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.felles.Beløp.of; import static no.nav.foreldrepenger.fpformidling.typer.Dato.formaterDatoNorsk; import static no.nav.foreldrepenger.fpformidling.typer.DatoIntervall.fraOgMedTilOgMed; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -53,7 +54,9 @@ import no.nav.foreldrepenger.fpformidling.familiehendelse.FamilieHendelseType; import no.nav.foreldrepenger.fpformidling.hendelser.DokumentHendelse; import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.felles.FritekstDto; +import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.felles.Prosent; import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.innvilgelsefp.ForMyeUtbetalt; +import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.innvilgelsefp.Utbetalingsperiode; import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.innvilgelsefp.VurderingsKode; import no.nav.foreldrepenger.fpformidling.kodeverk.kodeverdi.BehandlingResultatType; import no.nav.foreldrepenger.fpformidling.kodeverk.kodeverdi.BehandlingÅrsakType; @@ -66,6 +69,7 @@ import no.nav.foreldrepenger.fpformidling.typer.Beløp; import no.nav.foreldrepenger.fpformidling.uttak.fp.ForeldrepengerUttak; import no.nav.foreldrepenger.fpformidling.uttak.fp.PeriodeResultatType; +import no.nav.foreldrepenger.fpformidling.uttak.fp.PeriodeResultatÅrsak; import no.nav.foreldrepenger.fpformidling.uttak.fp.SaldoVisningStønadskontoType; import no.nav.foreldrepenger.fpformidling.uttak.fp.Saldoer; import no.nav.foreldrepenger.fpformidling.uttak.fp.Stønadskonto; @@ -75,7 +79,6 @@ import no.nav.foreldrepenger.fpformidling.uttak.fp.UttakResultatPeriode; import no.nav.foreldrepenger.fpformidling.uttak.fp.UttakResultatPeriodeAktivitet; import no.nav.foreldrepenger.fpformidling.uttak.fp.YtelseFordeling; -import no.nav.foreldrepenger.fpformidling.uttak.fp.PeriodeResultatÅrsak; import no.nav.foreldrepenger.fpformidling.virksomhet.Arbeidsgiver; @ExtendWith(MockitoExtension.class) @@ -111,18 +114,17 @@ void before() { behandling = opprettBehandling(); dokumentFelles = lagStandardDokumentFelles(dokumentData, DokumentFelles.Kopi.JA, false); dokumentHendelse = lagStandardHendelseBuilder().build(); + } + @Test + void skal_mappe_felter_for_brev() { when(domeneobjektProvider.hentFagsakBackend(any(Behandling.class))).thenReturn(opprettFagsakBackend()); when(domeneobjektProvider.hentSøknad(any(Behandling.class))).thenReturn(opprettSøknad()); - lenient().when(domeneobjektProvider.hentTilkjentYtelseForeldrepenger(any(Behandling.class))).thenReturn(opprettTilkjentYtelseFP()); + when(domeneobjektProvider.hentTilkjentYtelseForeldrepenger(any(Behandling.class))).thenReturn(opprettTilkjentYtelseFP()); when(domeneobjektProvider.hentBeregningsgrunnlag(any(Behandling.class))).thenReturn(opprettBeregningsgrunnlag()); - lenient().when(domeneobjektProvider.hentForeldrepengerUttak(any(Behandling.class))).thenReturn(opprettUttaksresultat()); + when(domeneobjektProvider.hentForeldrepengerUttak(any(Behandling.class))).thenReturn(opprettUttaksresultat()); when(domeneobjektProvider.hentSaldoer(any(Behandling.class))).thenReturn(opprettSaldoer()); when(domeneobjektProvider.ytelseFordeling(any(Behandling.class))).thenReturn(new YtelseFordeling(true)); - } - - @Test - void skal_mappe_felter_for_brev() { when(domeneobjektProvider.hentFamiliehendelse(any(Behandling.class))).thenReturn(opprettFamiliehendelse()); // Act var dokumentdata = dokumentdataMapper.mapTilDokumentdata(dokumentFelles, dokumentHendelse, behandling, true); @@ -207,7 +209,11 @@ void skal_mappe_felter_for_brev() { @Test void SjekkAtTotilkjentPerioderMedEnUttaksperiodeFårRiktigTapteDager() { - + when(domeneobjektProvider.hentFagsakBackend(any(Behandling.class))).thenReturn(opprettFagsakBackend()); + when(domeneobjektProvider.hentSøknad(any(Behandling.class))).thenReturn(opprettSøknad()); + when(domeneobjektProvider.hentBeregningsgrunnlag(any(Behandling.class))).thenReturn(opprettBeregningsgrunnlag()); + when(domeneobjektProvider.hentSaldoer(any(Behandling.class))).thenReturn(opprettSaldoer()); + when(domeneobjektProvider.ytelseFordeling(any(Behandling.class))).thenReturn(new YtelseFordeling(true)); when(domeneobjektProvider.hentFamiliehendelse(any(Behandling.class))).thenReturn(opprettFamiliehendelse()); when(domeneobjektProvider.hentTilkjentYtelseForeldrepenger(any(Behandling.class))).thenReturn(opprettTilkjentYtelseFP2()); when(domeneobjektProvider.hentForeldrepengerUttak(any(Behandling.class))).thenReturn(opprettUttaksresultat2()); @@ -220,6 +226,34 @@ void skal_mappe_felter_for_brev() { assertThat(dokumentdata.getPerioder().get(1).getAntallTapteDager()).isEqualTo(23); } + @Test + void varierer_dagsats() { + var hundreKronerDagsatsPeriode = Utbetalingsperiode.ny() + .medPeriodeDagsats(100) + .build(); + var toHundreKronerDagsatsPeriode = Utbetalingsperiode.ny() + .medPeriodeDagsats(200) + .build(); + assertThat(harVarierendeDagsats(List.of(toHundreKronerDagsatsPeriode, hundreKronerDagsatsPeriode, toHundreKronerDagsatsPeriode))).isTrue(); + assertThat(harVarierendeDagsats(List.of(hundreKronerDagsatsPeriode, toHundreKronerDagsatsPeriode))).isTrue(); + assertThat(harVarierendeDagsats(List.of(hundreKronerDagsatsPeriode, hundreKronerDagsatsPeriode))).isFalse(); + assertThat(harVarierendeDagsats(List.of())).isFalse(); + } + + @Test + void starter_med_fullutbetaling() { + var ingenUtbetaling = Utbetalingsperiode.ny() + .medPrioritertUtbetalingsgrad(Prosent.NULL) + .build(); + var fullUtbetaling = Utbetalingsperiode.ny() + .medPrioritertUtbetalingsgrad(Prosent.HUNDRE) + .build(); + assertThat(starterMedFullUtbetaling(List.of(ingenUtbetaling))).isFalse(); + assertThat(starterMedFullUtbetaling(List.of(ingenUtbetaling, fullUtbetaling))).isFalse(); + assertThat(starterMedFullUtbetaling(List.of(fullUtbetaling))).isTrue(); + assertThat(starterMedFullUtbetaling(List.of(fullUtbetaling, ingenUtbetaling))).isTrue(); + } + private FagsakBackend opprettFagsakBackend() { return FagsakBackend.ny().medBrukerRolle(RelasjonsRolleType.MORA).medDekningsgrad(DEKNINGSGRAD).build(); }