Skip to content

Commit

Permalink
TFP-5840 støtte for at fritt uttak starter i løpet av uttaket (#376)
Browse files Browse the repository at this point in the history
  • Loading branch information
palfi authored Aug 29, 2024
1 parent 36f3134 commit 48df755
Show file tree
Hide file tree
Showing 33 changed files with 209 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -193,9 +193,9 @@ public interface FastsettePeriodeGrunnlag {

LocalDateTime getSisteSøknadMottattTidspunkt();

boolean kreverBehandlingSammenhengendeUttak();

Optional<LukketPeriode> periodeFarRundtFødsel();

Collection<PleiepengerPeriode> perioderMedPleiepenger();

LocalDate getSammenhengendeUttakTomDato();
}
Original file line number Diff line number Diff line change
Expand Up @@ -206,11 +206,6 @@ public LocalDate getTermindato() {
return Optional.ofNullable(regelGrunnlag.getSøknad()).map(Søknad::getMottattTidspunkt).orElse(null);
}

@Override
public boolean kreverBehandlingSammenhengendeUttak() {
return regelGrunnlag.getBehandling().isKreverSammenhengendeUttak();
}

@Override
public Optional<LukketPeriode> periodeFarRundtFødsel() {
return Optional.ofNullable(farRundtFødselIntervall);
Expand All @@ -220,4 +215,9 @@ public boolean kreverBehandlingSammenhengendeUttak() {
public Collection<PleiepengerPeriode> perioderMedPleiepenger() {
return regelGrunnlag.getYtelser().pleiepenger().map(p -> p.perioder()).orElse(List.of());
}

@Override
public LocalDate getSammenhengendeUttakTomDato() {
return regelGrunnlag.getBehandling().getSammenhengendeUttakTomDato();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import no.nav.foreldrepenger.regler.feil.UttakRegelFeil;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator;
Expand Down Expand Up @@ -51,7 +52,7 @@ public List<FastsettePeriodeResultat> fastsettePerioder(RegelGrunnlag grunnlag)
var allePerioderSomSkalFastsettes = samletUttaksperioder(grunnlag, orkestreringTillegg).stream()
.filter(periode -> !erHelg(periode))
.filter(periode -> !oppholdSomFyllesAvAnnenpart(periode, grunnlag.getAnnenpartUttaksperioder()))
.filter(periode -> grunnlag.getBehandling().isKreverSammenhengendeUttak() || !periode.isOpphold())
.filter(periode -> periode.kreverSammenhengendeUttak(grunnlag.getBehandling().getSammenhengendeUttakTomDato()) || !periode.isOpphold())
.map(periode -> oppdaterMedAktiviteter(periode, grunnlag.getArbeid()))
.toList();
validerOverlapp(map(allePerioderSomSkalFastsettes));
Expand Down Expand Up @@ -170,10 +171,9 @@ private OrkestreringTillegg lagOrkestreringTillegg(RegelGrunnlag grunnlag) {
}

private List<OppgittPeriode> finnManglendeSøktePerioder(RegelGrunnlag grunnlag) {
if (grunnlag.getBehandling().isKreverSammenhengendeUttak()) {
return ManglendeSøktePerioderForSammenhengendeUttakTjeneste.finnManglendeSøktePerioder(grunnlag);
}
return ManglendeSøktePerioderTjeneste.finnManglendeSøktePerioder(grunnlag);
var mspSammenhengende = ManglendeSøktePerioderForSammenhengendeUttakTjeneste.finnManglendeSøktePerioder(grunnlag);
var mspFritt = ManglendeSøktePerioderTjeneste.finnManglendeSøktePerioder(grunnlag);
return Stream.concat(mspSammenhengende.stream(), mspFritt.stream()).toList();
}

private RegelResultatBehandlerResultat behandleRegelresultat(FastsettePerioderRegelresultat regelresultat,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ static Set<LocalDate> finnKnekkpunkter(RegelGrunnlag grunnlag) {
knekkpunkter.addAll(knekkPunkterBaserPåFørsteLovligeUttaksdag(grunnlag));
knekkpunkter.add(familiehendelseDato);
knekkpunkter.add(maksimumsgrenseForLovligeUttak);
knekkpunkter.add(grunnlag.getBehandling().getSammenhengendeUttakTomDato().plusDays(1));
grunnlag.getDatoer().getStartdatoNesteStønadsperiode().ifPresent(knekkpunkter::add);

if (PrematurukerUtil.oppfyllerKravTilPrematuruker(grunnlag.getDatoer().getFødsel(), grunnlag.getDatoer().getTermin())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
import no.nav.fpsak.nare.evaluation.Evaluation;
import no.nav.fpsak.nare.specification.LeafSpecification;

@RuleDocumentation(SjekkOmBehandlingKreverSammenhengendeUttak.ID)
public class SjekkOmBehandlingKreverSammenhengendeUttak extends LeafSpecification<FastsettePeriodeGrunnlag> {
@RuleDocumentation(SjekkOmPeriodenKreverSammenhengendeUttak.ID)
public class SjekkOmPeriodenKreverSammenhengendeUttak extends LeafSpecification<FastsettePeriodeGrunnlag> {
public static final String ID = "SHU.1";
public static final String BESKRIVELSE = "Krever behandlingen sammenhengende uttak?";
public static final String BESKRIVELSE = "Krever perioden krever sammenhengende uttak?";

public SjekkOmBehandlingKreverSammenhengendeUttak() {
public SjekkOmPeriodenKreverSammenhengendeUttak() {
super(ID);
}

@Override
public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) {
return grunnlag.kreverBehandlingSammenhengendeUttak() ? ja() : nei();
return grunnlag.getAktuellPeriode().kreverSammenhengendeUttak(grunnlag.getSammenhengendeUttakTomDato()) ? ja() : nei();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@ public SjekkOmSkalTrekkeDagerFraKonto() {

@Override
public Evaluation evaluate(FastsettePeriodeGrunnlag fastsettePeriodeGrunnlag) {
var sammenhengendeUttak = fastsettePeriodeGrunnlag.kreverBehandlingSammenhengendeUttak();
var bareFarRett = fastsettePeriodeGrunnlag.isFarRett() && !fastsettePeriodeGrunnlag.isMorRett();
return sammenhengendeUttak || bareFarRett ? ja() : nei();
return fastsettePeriodeGrunnlag.getAktuellPeriode().kreverSammenhengendeUttak(fastsettePeriodeGrunnlag.getSammenhengendeUttakTomDato()) || bareFarRett ? ja() : nei();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ public boolean isOppholdsperiode() {
return oppholdÅrsak;
}

public boolean kreverSammenhengendeUttak(LocalDate sammenhengendeUttakTomDato) {
return !getFom().isAfter(sammenhengendeUttakTomDato);
}

public AnnenpartUttakPeriode kopiMedNyPeriode(LocalDate fom,
LocalDate tom,
List<AnnenpartUttakPeriodeAktivitet> annenpartUttakPeriodeAktiviteter) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag;

import java.time.LocalDate;

public final class Behandling {

private boolean søkerMor;
private boolean berørtBehandling;
private boolean kreverSammenhengendeUttak;
private LocalDate sammenhengendeUttakTomDato = LocalDate.MIN;

private Behandling() {
}
Expand All @@ -21,8 +23,8 @@ private Behandling() {
return berørtBehandling;
}

public boolean isKreverSammenhengendeUttak() {
return kreverSammenhengendeUttak;
public LocalDate getSammenhengendeUttakTomDato() {
return sammenhengendeUttakTomDato;
}

public static class Builder {
Expand All @@ -40,8 +42,8 @@ public static class Builder {
return this;
}

public Builder kreverSammenhengendeUttak(boolean kreverSammenhengendeUttak) {
kladd.kreverSammenhengendeUttak = kreverSammenhengendeUttak;
public Builder sammenhengendeUttakTomDato(LocalDate sammenhengendeUttakTomDato) {
kladd.sammenhengendeUttakTomDato = sammenhengendeUttakTomDato;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ public boolean isInnvilgetGyldigUtsettelse() {
return utsettelse && resultatÅrsak.equals(UTSETTELSE_GYLDIG);
}

public boolean kreverSammenhengendeUttak(LocalDate sammenhengendeUttakTomDato) {
return !getFom().isAfter(sammenhengendeUttakTomDato);
}

@Override
public String toString() {
return "FastsattUttakPeriode{" + "fom=" + fom + ", tom=" + tom + '}';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,10 @@ public static OppgittPeriode forVanligPeriode(Stønadskontotype stønadskontotyp
senestMottattDato, tidligstMottattDato, morsAktivitet, morsStillingsprosent, dokumentasjonVurdering);
}

public boolean kreverSammenhengendeUttak(LocalDate sammenhengendeUttakTomDato) {
return !getFom().isAfter(sammenhengendeUttakTomDato);
}

@Override
public boolean equals(Object o) {
if (this == o) {
Expand Down Expand Up @@ -272,5 +276,4 @@ public String toString() {
public MorsStillingsprosent getMorsStillingsprosent() {
return morsStillingsprosent;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmAnnenPartsPeriodeErInnvilgetUtsettelse;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmAnnenPartsPeriodeHarUtbetalingsgrad;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmBarnInnlagt;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmBehandlingKreverSammenhengendeUttak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmPeriodenKreverSammenhengendeUttak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmBerørtBehandling;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmDetErAdopsjonAvStebarn;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmEtterNesteStønadsperiodeHarDisponibleDager;
Expand Down Expand Up @@ -133,8 +133,8 @@ private Specification<FastsettePeriodeGrunnlag> sjekkOmAnnenPartsPeriodeErInnvil
}

private Specification<FastsettePeriodeGrunnlag> sjekkOmBehandlingKreverSammenhengendeUttak() {
return rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), ikkeOppfyltUT1166())
return rs.hvisRegel(SjekkOmPeriodenKreverSammenhengendeUttak.ID, SjekkOmPeriodenKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmPeriodenKreverSammenhengendeUttak(), ikkeOppfyltUT1166())
.ellers(sjekkOmFødselTermin());
}

Expand Down Expand Up @@ -295,8 +295,8 @@ private Specification<FastsettePeriodeGrunnlag> sjekkOmPeriodeErUtsettelse() {
}

private Specification<FastsettePeriodeGrunnlag> kreverBehandlingenSammenhengendeUttak() {
return rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), new UtsettelseDelregelSammenhengendeUttak().getSpecification())
return rs.hvisRegel(SjekkOmPeriodenKreverSammenhengendeUttak.ID, SjekkOmPeriodenKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmPeriodenKreverSammenhengendeUttak(), new UtsettelseDelregelSammenhengendeUttak().getSpecification())
.ellers(new UtsettelseDelregel().getSpecification());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkGyldigGrunnForTidligOppstartHelePerioden;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmBehandlingKreverSammenhengendeUttak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmPeriodenKreverSammenhengendeUttak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmGradertPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmMorHarRett;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmOmsorgHelePerioden;
Expand Down Expand Up @@ -152,8 +152,8 @@ private Specification<FastsettePeriodeGrunnlag> sjekkSaldoForMor() {
.ellers(
Manuellbehandling.opprett("UT1043", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false));

var sjekkOmTrekkesDager = rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false))
var sjekkOmTrekkesDager = rs.hvisRegel(SjekkOmPeriodenKreverSammenhengendeUttak.ID, SjekkOmPeriodenKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmPeriodenKreverSammenhengendeUttak(), IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, true, false))
.ellers(IkkeOppfylt.opprett("UT1046", IkkeOppfyltÅrsak.MOR_HAR_IKKE_OMSORG, false, false));

return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE)
Expand Down Expand Up @@ -254,8 +254,8 @@ private Specification<FastsettePeriodeGrunnlag> delFlytForVanligUttak() {
.ellers(
Manuellbehandling.opprett("UT1146", IkkeOppfyltÅrsak.IKKE_STØNADSDAGER_IGJEN, Manuellbehandlingårsak.STØNADSKONTO_TOM, true, false));

var sjekkOmTrekkesDager = rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(), IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false))
var sjekkOmTrekkesDager = rs.hvisRegel(SjekkOmPeriodenKreverSammenhengendeUttak.ID, SjekkOmPeriodenKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmPeriodenKreverSammenhengendeUttak(), IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, true, false))
.ellers(IkkeOppfylt.opprett("UT1060", IkkeOppfyltÅrsak.FAR_HAR_IKKE_OMSORG, false, false));

return rs.hvisRegel(SjekkOmOmsorgHelePerioden.ID, SjekkOmOmsorgHelePerioden.BESKRIVELSE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmBareFarHarRett;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmBehandlingKreverSammenhengendeUttak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmPeriodenKreverSammenhengendeUttak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmDagerIgjenPåAlleAktiviteter;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmErAlleDisponibleDagerIgjenMinsterett;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmPeriodeErForeldrepengerFørFødsel;
Expand Down Expand Up @@ -77,8 +77,8 @@ private FastsettePeriodeUtfall ut1088() {
}

private Specification<FastsettePeriodeGrunnlag> sjekkOmBrukSammenhengendeUttakÅrsaker(Ruleset<FastsettePeriodeGrunnlag> rs) {
return rs.hvisRegel(SjekkOmBehandlingKreverSammenhengendeUttak.ID, SjekkOmBehandlingKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmBehandlingKreverSammenhengendeUttak(),
return rs.hvisRegel(SjekkOmPeriodenKreverSammenhengendeUttak.ID, SjekkOmPeriodenKreverSammenhengendeUttak.BESKRIVELSE)
.hvis(new SjekkOmPeriodenKreverSammenhengendeUttak(),
Manuellbehandling.opprett("UT1096", IkkeOppfyltÅrsak.HULL_MELLOM_FORELDRENES_PERIODER, Manuellbehandlingårsak.VURDER_OM_UTSETTELSE,
true, false))
.ellers(sjekkOmPeriodeGjelderMorsReserverteUker(rs));
Expand Down
Loading

0 comments on commit 48df755

Please sign in to comment.