Skip to content

Commit

Permalink
Fastsatte perioder tar inn årsak (#190)
Browse files Browse the repository at this point in the history
  • Loading branch information
palfi authored Feb 28, 2022
1 parent 021c581 commit 3920b4b
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<FastsattUttakPeriode> map(List<FastsettePeriodeResultat> resultatPerioder,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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() {
}
Expand All @@ -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() {
Expand Down Expand Up @@ -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<LocalDate> getMottattDato() {
Expand All @@ -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;
Expand Down Expand Up @@ -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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand All @@ -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,
Expand Down

0 comments on commit 3920b4b

Please sign in to comment.