Skip to content

Commit

Permalink
TFP_4605 Skriver bare dagsats først i fp innvilgelse brevet hvis førs…
Browse files Browse the repository at this point in the history
…te periode har full utbetaling eller det ikke er variabel dagsats
  • Loading branch information
palfi committed Oct 25, 2023
1 parent dbac334 commit a38eab9
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -200,6 +201,21 @@ public ForeldrepengerInnvilgelseDokumentdata mapTilDokumentdata(DokumentFelles d
return dokumentdataBuilder.build();
}

static boolean starterMedFullUtbetaling(List<Utbetalingsperiode> utbetalingsperioder) {
if (utbetalingsperioder.isEmpty()) {
return false;
}
return utbetalingsperioder.get(0).getPrioritertUtbetalingsgrad().erFull();
}

static boolean harVarierendeDagsats(List<Utbetalingsperiode> utbetalingsperioder) {
if (utbetalingsperioder.isEmpty()) {
return false;
}
var førstePeriodeDagsats = utbetalingsperioder.get(0).getPeriodeDagsats();
return utbetalingsperioder.stream().anyMatch(p -> p.getPeriodeDagsats() != førstePeriodeDagsats);
}

private Optional<LocalDate> finnUtbetalingFom(List<Utbetalingsperiode> utbetalingsperioder) {
//Denne kan være optional hvis saksbehandler overstyrer uttak og avslår alle perioder i en revurdering. Eks sak 152211741
return utbetalingsperioder.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -121,6 +123,14 @@ public long getSeksG() {
return seksG;
}

public boolean isVarierendeDagsats() {
return varierendeDagsats;
}

public boolean isStarterMedFullUtbetaling() {
return starterMedFullUtbetaling;
}

public boolean getInntektOverSeksG() {
return inntektOverSeksG;
}
Expand Down Expand Up @@ -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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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)
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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());
Expand All @@ -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();
}
Expand Down

0 comments on commit a38eab9

Please sign in to comment.