Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skriver bare dagsats først i fp innvilgelse brevet hvis første period… #2443

Merged
merged 1 commit into from
Oct 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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