Skip to content

Commit

Permalink
TFP-4945 Tar med tidligst mottatt dato på utbetalingsperioden for å k…
Browse files Browse the repository at this point in the history
…unne gi riktig dato i innvilgelse foreldrepenger brev om avslått pga søknadsfrist
  • Loading branch information
AnjaAalerud committed Oct 26, 2023
1 parent dbac334 commit 5861477
Show file tree
Hide file tree
Showing 9 changed files with 109 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,8 @@ private static Utbetalingsperiode mapEnkelPeriode(TilkjentYtelsePeriode tilkjent
.medArbeidsforhold(arbeidsfoholdListe)
.medNæring(næring)
.medAnnenAktivitet(annenAktivitetListe)
.medPrioritertUtbetalingsgrad(finnPrioritertUtbetalingsgrad(arbeidsfoholdListe, næring, annenAktivitetListe));
.medPrioritertUtbetalingsgrad(finnPrioritertUtbetalingsgrad(arbeidsfoholdListe, næring, annenAktivitetListe))
.medTidligstMottattDato(uttakResultatPeriode.getTidligstMottattDato(), språkkode);

if (tilkjentYtelsePeriode.getDagsats() != null) {
utbetalingsPerioder.medPeriodeDagsats(tilkjentYtelsePeriode.getDagsats());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.innvilgelsefp.Arbeidsforhold;
import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.innvilgelsefp.Næring;
import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.innvilgelsefp.Utbetalingsperiode;
import no.nav.foreldrepenger.fpformidling.uttak.fp.PeriodeResultatÅrsak;

public final class UtbetalingsperiodeMerger {

Expand Down Expand Up @@ -64,6 +65,7 @@ public static List<Utbetalingsperiode> mergePerioder(List<Utbetalingsperiode> pe
.medArbeidsforhold(periodeEn.getArbeidsforholdsliste())
.medNæring(periodeEn.getNæring())
.medAnnenAktivitet(periodeEn.getAnnenAktivitetsliste())
.medTidligstMottattDatoAlleredeFormatert(periodeEn.getTidligstMottattDato())
.build();
}

Expand All @@ -80,7 +82,15 @@ private static int finnRiktigAntallTapteDager(Utbetalingsperiode periodeEn, Utbe

private static boolean erPerioderSammenhengendeOgSkalSlåSammen(Utbetalingsperiode periodeEn, Utbetalingsperiode periodeTo) {
return sammeStatusOgÅrsak(periodeEn, periodeTo) && likPeriodeDagsats(periodeEn, periodeTo) && likeAktiviteter(periodeEn, periodeTo)
&& erFomRettEtterTomDato(periodeEn.getPeriodeTom(), periodeTo.getPeriodeFom());
&& erFomRettEtterTomDato(periodeEn.getPeriodeTom(), periodeTo.getPeriodeFom()) && hvisAvslåttSøknadsfristLikeTidligstMottattDato(periodeEn, periodeTo);
}

private static boolean hvisAvslåttSøknadsfristLikeTidligstMottattDato(Utbetalingsperiode periodeEn, Utbetalingsperiode periodeTo) {
if (periodeEn.getÅrsak() != null && PeriodeResultatÅrsak.SØKNADSFRIST.getKode().equals((periodeEn.getÅrsak()).getKode())) {
return Objects.equals(periodeEn.getÅrsak(), periodeTo.getÅrsak()) && periodeEn.getTidligstMottattDato().equals(periodeTo.getTidligstMottattDato());
} else {
return true;
}
}

static boolean likeAktiviteter(Utbetalingsperiode periodeEn, Utbetalingsperiode periodeTo) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ public class Utbetalingsperiode {
private List<Arbeidsforhold> arbeidsforholdsliste = new ArrayList<>();
private Næring næring;
private List<AnnenAktivitet> annenAktivitetsliste = new ArrayList<>();
private String tidligstMottattDato;
@JsonIgnore
private Språkkode språkkode;
@JsonIgnore
Expand Down Expand Up @@ -96,6 +97,10 @@ public BigDecimal getTapteDagerTemp() {
return tapteDagerTemp;
}

public String getTidligstMottattDato() {
return tidligstMottattDato;
}

@Override
public boolean equals(Object object) {
if (this == object) {
Expand All @@ -109,13 +114,13 @@ public boolean equals(Object object) {
&& Objects.equals(periodeTom, that.periodeTom) && Objects.equals(periodeDagsats, that.periodeDagsats) && Objects.equals(antallTapteDager,
that.antallTapteDager) && Objects.equals(prioritertUtbetalingsgrad, that.prioritertUtbetalingsgrad) && Objects.equals(
arbeidsforholdsliste, that.arbeidsforholdsliste) && Objects.equals(næring, that.næring) && Objects.equals(annenAktivitetsliste,
that.annenAktivitetsliste);
that.annenAktivitetsliste) && Objects.equals(tidligstMottattDato, that.tidligstMottattDato);
}

@Override
public int hashCode() {
return Objects.hash(innvilget, årsak, periodeFom, periodeTom, periodeDagsats, antallTapteDager, prioritertUtbetalingsgrad,
arbeidsforholdsliste, næring, annenAktivitetsliste);
arbeidsforholdsliste, næring, annenAktivitetsliste, tidligstMottattDato);
}

public static Builder ny() {
Expand Down Expand Up @@ -190,6 +195,15 @@ public Builder medAnnenAktivitet(List<AnnenAktivitet> annenAktivitetsListe) {
this.kladd.annenAktivitetsliste = annenAktivitetsListe;
return this;
}
public Builder medTidligstMottattDato( LocalDate tidligstMottattDato, Språkkode språkkode) {
this.kladd.tidligstMottattDato = formaterDato(tidligstMottattDato, språkkode);
return this;
}

public Builder medTidligstMottattDatoAlleredeFormatert(String tidligstMottattDato) {
this.kladd.tidligstMottattDato = tidligstMottattDato;
return this;
}

public Utbetalingsperiode build() {
return this.kladd;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class UttakResultatPeriodeDto {
private String graderingAvslagÅrsak;
private String periodeResultatÅrsakLovhjemmel;
private String graderingsAvslagÅrsakLovhjemmel;
private LocalDate tidligstMottattDato;

private UttakResultatPeriodeDto() {

Expand Down Expand Up @@ -56,6 +57,10 @@ public PeriodeResultatType getPeriodeResultatType() {
return graderingsAvslagÅrsakLovhjemmel;
}

public LocalDate getTidligstMottattDato() {
return tidligstMottattDato;
}

@JsonProperty("gradertAktivitet")
public UttakResultatPeriodeAktivitetDto getGradertAktivitet() {
return aktiviteter.stream().filter(UttakResultatPeriodeAktivitetDto::isGradering).findFirst().orElse(null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ private static UttakResultatPeriode periodeFraDto(UttakResultatPeriodeDto dto, U
.medPeriodeResultatÅrsak(velgPerioderesultatÅrsak(dto))
.medTidsperiode(DatoIntervall.fraOgMedTilOgMed(dto.getFom(), dto.getTom()))
.medAktiviteter(aktiviteter)
.medTidligstMottattDato(dto.getTidligstMottattDato())
.build();
aktiviteter.forEach(aktivitet -> aktivitet.leggTilPeriode(mappetPeriode));
return mappetPeriode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@ private ForeldrepengerUttak uttak(List<UttakResultatPeriode> søkersPerioder, Li
.medTidsperiode(tidsperiode)
.medPeriodeResultatÅrsak(PeriodeResultatÅrsak.HULL_MELLOM_FORELDRENES_PERIODER)
.medPeriodeResultatType(PeriodeResultatType.AVSLÅTT)
.medTidligstMottattDato(tidsperiode.getFomDato())
.build();
var uttaksPerioder = uttak(of(uPeriode), of());
var bgPeriode = BeregningsgrunnlagPeriode.ny().medPeriode(tidsperiode).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import java.math.BigDecimal;
import java.time.LocalDate;

import no.nav.foreldrepenger.fpformidling.uttak.fp.PeriodeResultatÅrsak;

import org.junit.jupiter.api.Test;

import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus;
Expand Down Expand Up @@ -85,6 +87,64 @@ class UtbetalingsperiodeMergerTest {
assertThat(resultat.get(1).getPeriodeTom()).isEqualTo(PERIODE2_TOM);
}

@Test
void skal_ikke_slå_sammen_perioder_med_forskjellig_tidligst_mottatt_dato_og_avslått_pga_søknadsfrist() {
// Arrange
var utbetalingsperiode1 = Utbetalingsperiode.ny()
.medPeriodeFom(PERIODE1_FOM, Språkkode.NB)
.medPeriodeTom(PERIODE1_TOM, Språkkode.NB)
.medPeriodeDagsats(2000)
.medÅrsak(Årsak.of(PeriodeResultatÅrsak.SØKNADSFRIST.getKode()))
.medTidligstMottattDato(PERIODE1_FOM, Språkkode.NB)
.build();
var utbetalingsperiode2 = Utbetalingsperiode.ny()
.medPeriodeFom(PERIODE2_FOM, Språkkode.NB)
.medPeriodeTom(PERIODE2_TOM, Språkkode.NB)
.medPeriodeDagsats(2000)
.medÅrsak(Årsak.of(PeriodeResultatÅrsak.SØKNADSFRIST.getKode()))
.medTidligstMottattDato(PERIODE2_FOM, Språkkode.NB)
.build();

// Act
var resultat = UtbetalingsperiodeMerger.mergePerioder(asList(utbetalingsperiode1, utbetalingsperiode2));

// Assert
assertThat(resultat).hasSize(2);
assertThat(resultat.get(0).getPeriodeFom()).isEqualTo(PERIODE1_FOM);
assertThat(resultat.get(0).getPeriodeTom()).isEqualTo(PERIODE1_TOM);
assertThat(resultat.get(1).getPeriodeFom()).isEqualTo(PERIODE2_FOM);
assertThat(resultat.get(1).getPeriodeTom()).isEqualTo(PERIODE2_TOM);
}

@Test
void skal_slå_sammen_perioder_med_lik_tidligst_mottatt_dato_og_avslått_pga_søknadsfrist() {
// Arrange
var utbetalingsperiode1 = Utbetalingsperiode.ny()
.medPeriodeFom(PERIODE1_FOM, Språkkode.NB)
.medPeriodeTom(PERIODE1_TOM, Språkkode.NB)
.medPeriodeDagsats(2000)
.medÅrsak(Årsak.of(PeriodeResultatÅrsak.SØKNADSFRIST.getKode()))
.medTidligstMottattDato(PERIODE1_FOM, Språkkode.NB)
.medAntallTapteDager(0, BigDecimal.ZERO)
.build();
var utbetalingsperiode2 = Utbetalingsperiode.ny()
.medPeriodeFom(PERIODE2_FOM, Språkkode.NB)
.medPeriodeTom(PERIODE2_TOM, Språkkode.NB)
.medPeriodeDagsats(2000)
.medÅrsak(Årsak.of(PeriodeResultatÅrsak.SØKNADSFRIST.getKode()))
.medTidligstMottattDato(PERIODE1_FOM, Språkkode.NB)
.medAntallTapteDager(0, BigDecimal.ZERO)
.build();

// Act
var resultat = UtbetalingsperiodeMerger.mergePerioder(asList(utbetalingsperiode1, utbetalingsperiode2));

// Assert
assertThat(resultat).hasSize(1);
assertThat(resultat.get(0).getPeriodeFom()).isEqualTo(PERIODE1_FOM);
assertThat(resultat.get(0).getPeriodeTom()).isEqualTo(PERIODE2_TOM);
}

@Test
void skal_returnere_enkeltperiode() {
// Arrange
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public class PeriodeResultatÅrsak implements ÅrsakMedLovReferanse {
public static final PeriodeResultatÅrsak STØNADSPERIODE_NYTT_BARN = new PeriodeResultatÅrsak("4104", PERIODE_ÅRSAK_DISCRIMINATOR, null);
public static final PeriodeResultatÅrsak BARE_FAR_RETT_IKKE_SØKT = new PeriodeResultatÅrsak("4102", PERIODE_ÅRSAK_DISCRIMINATOR, null);

public static final PeriodeResultatÅrsak SØKNADSFRIST = new PeriodeResultatÅrsak("4020", PERIODE_ÅRSAK_DISCRIMINATOR, null);

private String kodeverk;
private String kode;
private String ekstraData;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@ public class UttakResultatPeriode {
private final PeriodeResultatÅrsak graderingAvslagÅrsak;
private final PeriodeResultatType periodeResultatType;
private final List<UttakResultatPeriodeAktivitet> aktiviteter;
private final LocalDate tidligstMottattDato;

private UttakResultatPeriode(Builder builder) {
periodeResultatÅrsak = builder.periodeResultatÅrsak;
tidsperiode = builder.tidsperiode;
graderingAvslagÅrsak = builder.graderingAvslagÅrsak;
periodeResultatType = builder.periodeResultatType;
aktiviteter = builder.aktiviteter;
tidligstMottattDato = builder.tidligstMottattDato;
}

public static Builder ny() {
Expand Down Expand Up @@ -58,13 +60,17 @@ public boolean erGraderingInnvilget() {
return aktiviteter.stream().anyMatch(UttakResultatPeriodeAktivitet::getGraderingInnvilget);
}

public LocalDate getTidligstMottattDato() {
return tidligstMottattDato;
}

public static final class Builder {
private PeriodeResultatÅrsak periodeResultatÅrsak;
private DatoIntervall tidsperiode;
private PeriodeResultatÅrsak graderingAvslagÅrsak;
private PeriodeResultatType periodeResultatType;
private List<UttakResultatPeriodeAktivitet> aktiviteter = new ArrayList<>();
private LocalDate tidligstMottattDato;

private Builder() {
}
Expand Down Expand Up @@ -94,6 +100,11 @@ public Builder medAktiviteter(List<UttakResultatPeriodeAktivitet> aktiviteter) {
return this;
}

public Builder medTidligstMottattDato(LocalDate tidligstMottattDato) {
this.tidligstMottattDato = tidligstMottattDato;
return this;
}

public UttakResultatPeriode build() {
return new UttakResultatPeriode(this);
}
Expand Down

0 comments on commit 5861477

Please sign in to comment.