Skip to content

Commit

Permalink
TFP-5456 ikke opprette msp før familiehendelsen (#316)
Browse files Browse the repository at this point in the history
  • Loading branch information
palfi authored Oct 26, 2023
1 parent 551ff01 commit c3f9ad2
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -90,19 +90,18 @@ private static List<OppgittPeriode> fellesFilter(RegelGrunnlag grunnlag, List<Op

var stønadskontotype = harForeldrepengerKonto ? Stønadskontotype.FORELDREPENGER : Stønadskontotype.MØDREKVOTE;
var fomTidsperiodeForbeholdtMor = fomTidsperiodeForbeholdtMor(familiehendelse);
return finnManglendeMellomliggendePerioder(fellesUttakBeggeParter, familiehendelse, stønadskontotype)
return finnManglendeMellomliggendePerioderEtterFamilieHendelse(fellesUttakBeggeParter, familiehendelse, stønadskontotype)
.stream()
.flatMap(p -> split(tomTidsperiodeForbeholdtMor.plusDays(1), p))
.flatMap(p -> split(fomTidsperiodeForbeholdtMor, p))
.filter(p -> periodeLiggerITidsrommetForbeholdtMor(grunnlag, p))
.filter(p -> behandling.isSøkerMor() || !p.getFom().isBefore(familiehendelse)) //ikke opprette msp for far før fødsel
.sorted(Comparator.comparing(OppgittPeriode::getFom))
.toList();
}

private static List<OppgittPeriode> finnManglendeMellomliggendePerioder(List<LukketPeriode> perioder,
LocalDate familieHendelse,
Stønadskontotype stønadskontotype) {
private static List<OppgittPeriode> finnManglendeMellomliggendePerioderEtterFamilieHendelse(List<LukketPeriode> perioder,
LocalDate familieHendelse,
Stønadskontotype stønadskontotype) {
var sortertePerioder = perioder.stream()
.sorted(Comparator.comparing(LukketPeriode::getFom)).toList();

Expand All @@ -114,7 +113,8 @@ private static List<OppgittPeriode> finnManglendeMellomliggendePerioder(List<Luk
} else if (mspFom.isBefore(lukketPeriode.getFom())) {
var mspTom = lukketPeriode.getFom().minusDays(1);
if (Virkedager.beregnAntallVirkedager(mspFom, mspTom) > 0) {
mellomliggendePerioder.addAll(finnMsp(familieHendelse, mspFom, mspTom, stønadskontotype));
var msp = finnMsp(familieHendelse, mspFom, mspTom, stønadskontotype);
msp.ifPresent(mellomliggendePerioder::add);
}
}
if (!lukketPeriode.getTom().isBefore(mspFom)) {
Expand All @@ -124,20 +124,18 @@ private static List<OppgittPeriode> finnManglendeMellomliggendePerioder(List<Luk
return mellomliggendePerioder;
}

private static List<OppgittPeriode> finnMsp(LocalDate familieHendelse,
private static Optional<OppgittPeriode> finnMsp(LocalDate familieHendelse,
LocalDate mspFom,
LocalDate mspTom,
Stønadskontotype stønadskontotype) {
if (new LukketPeriode(mspFom, mspTom).overlapper(familieHendelse) && !mspFom.isEqual(familieHendelse)) {
//Splitter opp msp for å få riktig konto før og etter familiehendelse
var førSplitt = lagManglendeSøktPeriode(mspFom, familieHendelse.minusDays(1), Stønadskontotype.FORELDREPENGER_FØR_FØDSEL);
var etterSplitt = lagManglendeSøktPeriode(familieHendelse, mspTom, stønadskontotype);
return List.of(førSplitt, etterSplitt);
return Optional.of(etterSplitt);

} else if (mspFom.isBefore(familieHendelse)) {
return List.of(lagManglendeSøktPeriode(mspFom, mspTom, Stønadskontotype.FORELDREPENGER_FØR_FØDSEL));
return Optional.empty();
}
return List.of(lagManglendeSøktPeriode(mspFom, mspTom, stønadskontotype));
return Optional.of(lagManglendeSøktPeriode(mspFom, mspTom, stønadskontotype));
}

private static Stream<OppgittPeriode> split(LocalDate dato, OppgittPeriode periode) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr

var perioder = fastsettPerioder(grunnlag);

assertThat(perioder).hasSize(4);
assertThat(perioder).hasSize(3);

assertThat(perioder.get(0).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING);
assertThat(perioder.get(0).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL);
Expand All @@ -165,21 +165,13 @@ class ForeldrepengerFørFødselOrkestreringTest extends FastsettePerioderRegelOr
assertThat(perioder.get(1).evalueringResultat()).isNotNull();

assertThat(perioder.get(2).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT);
assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.FORELDREPENGER_FØR_FØDSEL);
assertThat(perioder.get(2).uttakPeriode().getManuellbehandlingårsak()).isNull();
assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato.minusWeeks(2).plusDays(1));
assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.minusDays(1));
assertThat(perioder.get(2).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE);
assertThat(perioder.get(2).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(
IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL);
assertThat(perioder.get(2).uttakPeriode().getFom()).isEqualTo(fødselsdato);
assertThat(perioder.get(2).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1));
assertThat(perioder.get(2).innsendtGrunnlag()).isNotNull();
assertThat(perioder.get(2).evalueringResultat()).isNotNull();

assertThat(perioder.get(3).uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.AVSLÅTT);
assertThat(perioder.get(3).uttakPeriode().getStønadskontotype()).isEqualTo(Stønadskontotype.MØDREKVOTE);
assertThat(perioder.get(3).uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(
IkkeOppfyltÅrsak.MOR_TAR_IKKE_UKENE_ETTER_FØDSEL);
assertThat(perioder.get(3).uttakPeriode().getFom()).isEqualTo(fødselsdato);
assertThat(perioder.get(3).uttakPeriode().getTom()).isEqualTo(fødselsdato.plusWeeks(6).minusDays(1));
assertThat(perioder.get(3).innsendtGrunnlag()).isNotNull();
assertThat(perioder.get(3).evalueringResultat()).isNotNull();
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ void farMedAleneomsorgSkalIkkeHaMsp() {
}

@Test
void skal_opprette_msp_før_fødsel_men_ikke_mer_enn_3_øker_før_fødsel() {
void skal_ikke_opprette_msp_før_fødsel() {
var familiehendelsesDato = LocalDate.of(2019, 12, 11);

var fellesperiode = oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(10), familiehendelsesDato.minusWeeks(8));
Expand All @@ -85,9 +85,7 @@ void farMedAleneomsorgSkalIkkeHaMsp() {

var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag);

assertThat(manglendeSøktePerioder.get(0).getStønadskontotype()).isEqualTo(FORELDREPENGER_FØR_FØDSEL);
assertThat(manglendeSøktePerioder.get(0).getFom()).isEqualTo(familiehendelsesDato.minusWeeks(2).plusDays(1));
assertThat(manglendeSøktePerioder.get(0).getTom()).isEqualTo(familiehendelsesDato.minusDays(1));
assertThat(manglendeSøktePerioder).isEmpty();
}

@Test
Expand Down Expand Up @@ -465,30 +463,6 @@ void manglende_fpff_skal_ikke_slutte_i_helg() {
assertThat(msp).isEmpty();
}

@Test
void ikke_msp_før_3_uker_før_fødsel() {
var familiehendelsesDato = LocalDate.of(2022, 5, 25);
var grunnlag = grunnlagMedKontoer()
.søknad(new Søknad.Builder()
.oppgittPeriode(oppgittPeriode(FELLESPERIODE, familiehendelsesDato.minusWeeks(5), familiehendelsesDato.minusWeeks(4)))
.oppgittPeriode(oppgittPeriode(FORELDREPENGER_FØR_FØDSEL, familiehendelsesDato.minusWeeks(2), familiehendelsesDato.minusDays(1)))
.oppgittPeriode(oppgittPeriode(MØDREKVOTE, familiehendelsesDato, familiehendelsesDato.plusWeeks(6).minusDays(1)))
)
.datoer(new Datoer.Builder().fødsel(familiehendelsesDato))
.build();

var manglendeSøktePerioder = finnManglendeSøktePerioder(grunnlag);

var mspFørFødsel = manglendeSøktePerioder.stream()
.filter(msp -> msp.getStønadskontotype().equals(FORELDREPENGER_FØR_FØDSEL))
.toList();
assertThat(mspFørFødsel).hasSize(1);

//bare msp fra uke 3 til uke 2 før fødsel
assertThat(mspFørFødsel.get(0).getFom()).isEqualTo(familiehendelsesDato.minusWeeks(3));
assertThat(mspFørFødsel.get(0).getTom()).isEqualTo(familiehendelsesDato.minusWeeks(2).minusDays(1));
}

@Test
void ikke_msp_for_for_ved_tidlig_oppstart_mor_der_hun_ikke_tar_alle_ukene_fpff() {
//FAGSYSTEM-295613
Expand Down

0 comments on commit c3f9ad2

Please sign in to comment.