From 3920b4bdcd2e32d11745c6cb2c819b9777ffc96e Mon Sep 17 00:00:00 2001 From: Anders Palfi Date: Mon, 28 Feb 2022 09:45:49 +0100 Subject: [PATCH] =?UTF-8?q?Fastsatte=20perioder=20tar=20inn=20=C3=A5rsak?= =?UTF-8?q?=20(#190)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FastsettePerioderRegelOrkestrering.java | 27 +++++++------- .../ForeldrepengerDelregel.java | 1 - .../grunnlag/FastsattUttakPeriode.java | 37 ++++++++++++++++--- .../saldo/SaldoUtregningTest.java | 8 ++-- 4 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java index 4a2a2b71..f32da749 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/FastsettePerioderRegelOrkestrering.java @@ -22,7 +22,6 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriodeAktivitet; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Perioderesultattype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RegelGrunnlag; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.UttakPeriode; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregning; @@ -289,24 +288,26 @@ private FastsattUttakPeriode map(UttakPeriode periode) { .tidsperiode(periode.getFom(), periode.getTom()) .aktiviteter(mapAktiviteter(periode)) .flerbarnsdager(periode.isFlerbarnsdager()) - .forbrukerMinsterett(brukerAvMinsterett(periode)) + .resultatÅrsak(mapTilÅrsak(periode)) + .utsettelse(periode.getUtsettelseÅrsak() != null) .oppholdÅrsak(periode.getOppholdÅrsak()) .samtidigUttak(periode.erSamtidigUttak()) .periodeResultatType(periode.getPerioderesultattype()) .build(); } - private boolean brukerAvMinsterett(UttakPeriode periode) { - return (Perioderesultattype.INNVILGET.equals(periode.getPerioderesultattype()) && !erPeriodeMedGodkjentAktivitet(periode)) - || (Perioderesultattype.AVSLÅTT.equals(periode.getPerioderesultattype()) && IkkeOppfyltÅrsak.SØKNADSFRIST.equals(periode.getPeriodeResultatÅrsak())) - || (Perioderesultattype.MANUELL_BEHANDLING.equals(periode.getPerioderesultattype()) && periode.getUtsettelseÅrsak() == null); - } - - private boolean erPeriodeMedGodkjentAktivitet(UttakPeriode periode) { - // Inntil videre: Perioder med godkjent aktivitet iht 14-14 første ledd skal ikke gå til fratrekk på rett etter tredje ledd - // Når logikken skal utvides til andre tilfelle - vær obs på flerbarnsdager - return InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT.equals(periode.getPeriodeResultatÅrsak()) || - InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(periode.getPeriodeResultatÅrsak()); + private FastsattUttakPeriode.ResultatÅrsak mapTilÅrsak(UttakPeriode periode) { + var periodeResultatÅrsak = periode.getPeriodeResultatÅrsak(); + if (InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT.equals(periodeResultatÅrsak)) { + return FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT; + } + if (InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(periodeResultatÅrsak)) { + return FastsattUttakPeriode.ResultatÅrsak.INNVILGET_GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT; + } + if (IkkeOppfyltÅrsak.SØKNADSFRIST.equals(periodeResultatÅrsak)) { + return FastsattUttakPeriode.ResultatÅrsak.IKKE_OPPFYLT_SØKNADSFRIST; + } + return FastsattUttakPeriode.ResultatÅrsak.ANNET; } private List map(List resultatPerioder, diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregel.java index 758394e1..9fe5e6f9 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/ForeldrepengerDelregel.java @@ -18,7 +18,6 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmUttakSkjerEtterDeFørsteUkene; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmUttakStarterFørUttakForForeldrepengerFørFødsel; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav.SjekkOmMorErIAktivitet; -import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav.SjekkOmMorOppgittUføre; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.FastsettePeriodeUtfall; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.GraderingIkkeInnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfylt; diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java index ec79c4f9..bd61a4c5 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/grunnlag/FastsattUttakPeriode.java @@ -1,5 +1,9 @@ package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag; +import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode.ResultatÅrsak.IKKE_OPPFYLT_SØKNADSFRIST; +import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT; +import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.FastsattUttakPeriode.ResultatÅrsak.INNVILGET_GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT; + import java.time.LocalDate; import java.util.List; import java.util.Optional; @@ -14,7 +18,8 @@ public class FastsattUttakPeriode { private LocalDate tom; private boolean samtidigUttak; private LocalDate mottattDato; - private boolean forbrukMinsterett; + private FastsattUttakPeriode.ResultatÅrsak resultatÅrsak; + private boolean utsettelse; private FastsattUttakPeriode() { } @@ -28,7 +33,8 @@ private FastsattUttakPeriode(FastsattUttakPeriode periode) { this.tom = periode.tom; this.samtidigUttak = periode.samtidigUttak; this.mottattDato = periode.mottattDato; - this.forbrukMinsterett = periode.forbrukMinsterett; + this.resultatÅrsak = periode.resultatÅrsak; + this.utsettelse = periode.utsettelse; } public Perioderesultattype getPerioderesultattype() { @@ -60,7 +66,16 @@ public boolean isSamtidigUttak() { } public boolean isForbrukMinsterett() { - return forbrukMinsterett; + return (Perioderesultattype.INNVILGET.equals(perioderesultattype) && !erPeriodeMedGodkjentAktivitet()) + || (Perioderesultattype.AVSLÅTT.equals(perioderesultattype) && IKKE_OPPFYLT_SØKNADSFRIST.equals(resultatÅrsak)) + || (Perioderesultattype.MANUELL_BEHANDLING.equals(perioderesultattype) && !utsettelse); + } + + private boolean erPeriodeMedGodkjentAktivitet() { + // Inntil videre: Perioder med godkjent aktivitet iht 14-14 første ledd skal ikke gå til fratrekk på rett etter tredje ledd + // Når logikken skal utvides til andre tilfelle - vær obs på flerbarnsdager + return INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(resultatÅrsak) || + INNVILGET_GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT.equals(resultatÅrsak); } public Optional getMottattDato() { @@ -76,6 +91,13 @@ public String toString() { return "FastsattUttakPeriode{" + "fom=" + fom + ", tom=" + tom + '}'; } + public enum ResultatÅrsak { + IKKE_OPPFYLT_SØKNADSFRIST, + INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT, + INNVILGET_GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, + ANNET, + } + public static class Builder { private final FastsattUttakPeriode kladd; @@ -103,8 +125,13 @@ public Builder flerbarnsdager(boolean flerbarnsdager) { return this; } - public Builder forbrukerMinsterett(boolean forbrukMinsterett) { - kladd.forbrukMinsterett = forbrukMinsterett; + public Builder resultatÅrsak(ResultatÅrsak resultatÅrsak) { + kladd.resultatÅrsak = resultatÅrsak; + return this; + } + + public Builder utsettelse(boolean utsettelse) { + kladd.utsettelse = utsettelse; return this; } diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java index 3f302479..67288325 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/saldo/SaldoUtregningTest.java @@ -130,7 +130,7 @@ void for_stort_trekk_som_ikke_bruker_minsterett_gir_riktig_saldo_minsterett() { .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) .periodeResultatType(Perioderesultattype.INNVILGET) .tidsperiode(enTirsdag, enTirsdag) - .forbrukerMinsterett(false) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) .build(); var perioderSøker = List.of(fastsattUttakPeriode); var saldoUtregning = new SaldoUtregning(Set.of(stønadskonto(FORELDREPENGER, 10)), perioderSøker, List.of(), false, @@ -152,7 +152,7 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_minsterett() { .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) .periodeResultatType(Perioderesultattype.INNVILGET) .tidsperiode(enTirsdag, enTirsdag) - .forbrukerMinsterett(true) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) .build(); var perioderSøker = List.of(fastsattUttakPeriode); var saldoUtregning = new SaldoUtregning(Set.of(stønadskonto(FORELDREPENGER, 10)), perioderSøker, List.of(), false, @@ -174,7 +174,7 @@ void for_stort_trekk_som_ikke_bruker_minsterett_gir_riktig_saldo_utenAktivitetsk .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) .periodeResultatType(Perioderesultattype.INNVILGET) .tidsperiode(enTirsdag, enTirsdag) - .forbrukerMinsterett(false) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.INNVILGET_FORELDREPENGER_KUN_FAR_HAR_RETT) .build(); var perioderSøker = List.of(fastsattUttakPeriode); var saldoUtregning = new SaldoUtregning(Set.of(stønadskonto(FORELDREPENGER, 10)), perioderSøker, List.of(), false, @@ -196,7 +196,7 @@ void for_stort_trekk_som_bruker_minsterett_gir_riktig_saldo_utenAktivitetskrav() .aktiviteter(List.of(new FastsattUttakPeriodeAktivitet(new Trekkdager(15), FORELDREPENGER, AKTIVITET1_SØKER))) .periodeResultatType(Perioderesultattype.INNVILGET) .tidsperiode(enTirsdag, enTirsdag) - .forbrukerMinsterett(true) + .resultatÅrsak(FastsattUttakPeriode.ResultatÅrsak.ANNET) .build(); var perioderSøker = List.of(fastsattUttakPeriode); var saldoUtregning = new SaldoUtregning(Set.of(stønadskonto(FORELDREPENGER, 10)), perioderSøker, List.of(), false,