diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java index 20ac533a..27af9420 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/RegelResultatBehandler.java @@ -139,9 +139,10 @@ private PeriodeAktivitetResultat finnPeriodeAktivitetResultat(OppgittPeriode opp return new PeriodeAktivitetResultat(Utbetalingsgrad.ZERO, Trekkdager.ZERO); } + var graderingInnvilget = regelresultat.getGraderingIkkeInnvilgetÅrsak() == null && oppgittPeriode.erSøktGradering(aktivitet); var utbetalingsgrad = Utbetalingsgrad.ZERO; if (regelresultat.skalUtbetale()) { - var utbetalingsgradUtregning = bestemUtbetalingsgradUtregning(oppgittPeriode, aktivitet, annenpartSamtidigUttaksprosent); + var utbetalingsgradUtregning = bestemUtbetalingsgradUtregning(oppgittPeriode, aktivitet, annenpartSamtidigUttaksprosent, graderingInnvilget); utbetalingsgrad = utbetalingsgradUtregning.resultat(); } var trekkdager = Trekkdager.ZERO; @@ -149,7 +150,6 @@ private PeriodeAktivitetResultat finnPeriodeAktivitetResultat(OppgittPeriode opp if (manuellBehandling && stønadskonto.isEmpty()) { trekkdager = Trekkdager.ZERO; } else { - var graderingInnvilget = regelresultat.getGraderingIkkeInnvilgetÅrsak() == null && oppgittPeriode.erSøktGradering(aktivitet); trekkdager = TrekkdagerUtregningUtil.trekkdagerFor(oppgittPeriode, graderingInnvilget, oppgittPeriode.getArbeidsprosent(), regnSamtidigUttaksprosentMotGradering(oppgittPeriode, annenpartSamtidigUttaksprosent)); } @@ -182,14 +182,14 @@ private void validerKnekkpunkt(OppgittPeriode uttakPeriode, TomKontoKnekkpunkt k private UtbetalingsgradUtregning bestemUtbetalingsgradUtregning(OppgittPeriode oppgittPeriode, AktivitetIdentifikator aktivitet, - SamtidigUttaksprosent annenpartSamtidigUttaksprosent) { - if (oppgittPeriode.erSøktGradering(aktivitet)) { + SamtidigUttaksprosent annenpartSamtidigUttaksprosent, + boolean graderingInnvilget) { + if (graderingInnvilget) { return new UtbetalingsgradMedGraderingUtregning(oppgittPeriode, aktivitet, annenpartSamtidigUttaksprosent); } var samtidigUttaksprosent = regnSamtidigUttaksprosentMotGradering(oppgittPeriode, annenpartSamtidigUttaksprosent); if (samtidigUttaksprosent != null) { - return new UtbetalingsgradSamtidigUttakUtregning(samtidigUttaksprosent, oppgittPeriode.getArbeidsprosent(), - annenpartSamtidigUttaksprosent); + return new UtbetalingsgradSamtidigUttakUtregning(samtidigUttaksprosent, oppgittPeriode.getArbeidsprosent(), annenpartSamtidigUttaksprosent); } if (oppgittPeriode.getMorsStillingsprosent() != null) { return new UtbetalingsgradMorsStillingsprosentUtregning(oppgittPeriode.getMorsStillingsprosent(), annenpartSamtidigUttaksprosent); diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java index acfc176a..be9c9c6b 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/TrekkdagerUtregningUtil.java @@ -12,11 +12,11 @@ private TrekkdagerUtregningUtil() { } public static Trekkdager trekkdagerFor(Periode periode, - boolean gradert, + boolean graderingInnvilget, BigDecimal gradertArbeidstidsprosent, SamtidigUttaksprosent samtidigUttaksprosent) { var trekkdagerUtenGradering = Virkedager.beregnAntallVirkedager(periode); - if (gradert) { + if (graderingInnvilget) { return trekkdagerMedGradering(trekkdagerUtenGradering, gradertArbeidstidsprosent); } if (samtidigUttaksprosent != null) { diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.java index 5d1a7aaf..ca206f6d 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.java @@ -12,7 +12,7 @@ public class SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent extends LeafSpecification { public static final String ID = "AKT_ARBEID_1"; - public static final String BESKRIVELSE = "Er mor i arbeid og har en stillingsprosent under 75 prosent"; + public static final String BESKRIVELSE = "Er mor i arbeid og har en stillingsprosent under 75 prosent?"; public SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent() { super(ID); diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmS\303\270ktUttaksprosentErSt\303\270rreEllerLikMorsStillingsprosent.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmS\303\270ktUttaksprosentErSt\303\270rreEllerLikMorsStillingsprosent.java" new file mode 100644 index 00000000..426f349a --- /dev/null +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/betingelser/aktkrav/SjekkOmS\303\270ktUttaksprosentErSt\303\270rreEllerLikMorsStillingsprosent.java" @@ -0,0 +1,34 @@ +package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav; + +import java.math.BigDecimal; + +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag; +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode; +import no.nav.fpsak.nare.doc.RuleDocumentation; +import no.nav.fpsak.nare.evaluation.Evaluation; +import no.nav.fpsak.nare.specification.LeafSpecification; + +@RuleDocumentation(SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent.ID) +public class SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent extends LeafSpecification { + + public static final String ID = "AKT_ARBEID_2"; + public static final String BESKRIVELSE = "Er gradert uttaksprosenten større eller lik mors stillingsprosent?"; + + public SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent() { + super(ID); + } + + @Override + public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) { + var aktuellPeriode = grunnlag.getAktuellPeriode(); + if (gradertUttaksprosentStørreEllerLikMorsStillingsprosent(aktuellPeriode)) { + return ja(); + } + return nei(); + } + + private static boolean gradertUttaksprosentStørreEllerLikMorsStillingsprosent(OppgittPeriode aktuellPeriode) { + var gradertUttaksprosent = BigDecimal.valueOf(100).subtract(aktuellPeriode.getArbeidsprosent()); + return gradertUttaksprosent.compareTo(aktuellPeriode.getMorsStillingsprosent().decimalValue()) >= 0; + } +} diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java index f0107343..732238a3 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/FellesperiodeDelregel.java @@ -17,6 +17,7 @@ import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.SjekkOmUttakSkjerEtterDeFørsteUkene; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav.SjekkOmMorErIAktivitet; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav.SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent; +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav.SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.GraderingIkkeInnvilgetÅrsak; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfylt; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.IkkeOppfyltÅrsak; @@ -212,10 +213,16 @@ private Specification sjekkOmMorErIAktivitetIGradertPe private Specification sjekkOmMorErIArbeidMedStillingprosentUnder75Prosent() { return rs.hvisRegel(SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.ID, SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.BESKRIVELSE) - .hvis(new SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent(), Manuellbehandling.opprett("UT1326", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID, true, true)) + .hvis(new SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent(), sjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent()) .ellers(Oppfylt.opprett("UT1272", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, true)); } + private Specification sjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent() { + return rs.hvisRegel(SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent.ID, SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent.BESKRIVELSE) + .hvis(new SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent(), Oppfylt.opprettMedAvslåttGradering("UT1330", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, GraderingIkkeInnvilgetÅrsak.MOR_OPPFYLLER_IKKE_AKTIVITETSKRAV, true)) + .ellers(Manuellbehandling.opprett("UT1326", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID, true, true)); + } + private Specification delFlytForVanligUttak() { var sjekkOmMorErIArbeidMedStillingprosentUnder75Prosent = rs.hvisRegel(SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.ID, SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.BESKRIVELSE) .hvis(new SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent(), Manuellbehandling.opprett("UT1327", InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER, Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID, true, true)) diff --git a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java index 1b4d0670..ab7ae235 100644 --- a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java +++ b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/regelflyt/ForeldrepengerDelregel.java @@ -24,6 +24,7 @@ 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.SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent; +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser.aktkrav.SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent; 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; @@ -301,10 +302,16 @@ private Specification sjekkGraderingVedKunFarMedmorRet private Specification sjekkOmMorErIArbeidMedStillingprosentUnder75ProsentMedGradering() { return rs.hvisRegel(SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.ID, SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.BESKRIVELSE) - .hvis(new SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent(), Manuellbehandling.opprett("UT1329", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID, true, true)) + .hvis(new SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent(), sjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent()) .ellers(Oppfylt.opprett("UT1315", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, true)); } + private Specification sjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent() { + return rs.hvisRegel(SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent.ID, SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent.BESKRIVELSE) + .hvis(new SjekkOmSøktUttaksprosentErStørreEllerLikMorsStillingsprosent(), Oppfylt.opprettMedAvslåttGradering("UT1331", InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER, GraderingIkkeInnvilgetÅrsak.MOR_OPPFYLLER_IKKE_AKTIVITETSKRAV, true)) + .ellers(Manuellbehandling.opprett("UT1329", InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT, Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID, true, true)); + } + private Specification sjekkOmMorErIArbeidMedStillingprosentUnder75Prosent() { return rs.hvisRegel(SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.ID, SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent.BESKRIVELSE) .hvis(new SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent(), Manuellbehandling.opprett("UT1328", InnvilgetÅrsak.FORELDREPENGER_KUN_FAR_HAR_RETT, Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID, true, true)) diff --git "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" index 836155a8..4c7f6243 100644 --- "a/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" +++ "b/src/main/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/utfall/GraderingIkkeInnvilget\303\205rsak.java" @@ -2,7 +2,8 @@ public enum GraderingIkkeInnvilgetÅrsak { - AVSLAG_PGA_FOR_TIDLIG_GRADERING(4504, "Gradering før uke 7"); + AVSLAG_PGA_FOR_TIDLIG_GRADERING(4504, "Gradering før uke 7"), + MOR_OPPFYLLER_IKKE_AKTIVITETSKRAV(4503, "Avslag gradering – ikke rett til gradert uttak pga. redusert oppfylt aktivitetskrav på mor"); private final int id; private final String beskrivelse; diff --git a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelvisArbeidOrkestreringTest.java b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelvisArbeidOrkestreringTest.java index 0e5748a3..6a544b6b 100644 --- a/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelvisArbeidOrkestreringTest.java +++ b/src/test/java/no/nav/foreldrepenger/regler/uttak/fastsetteperiode/DelvisArbeidOrkestreringTest.java @@ -3,6 +3,7 @@ import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.MorsAktivitet.ARBEID; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.FELLESPERIODE; import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype.FORELDREPENGER; +import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.GraderingIkkeInnvilgetÅrsak.MOR_OPPFYLLER_IKKE_AKTIVITETSKRAV; import static org.assertj.core.api.Assertions.assertThat; import java.math.BigDecimal; @@ -12,6 +13,7 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AktivitetIdentifikator; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeidsforhold; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Datoer; @@ -23,6 +25,7 @@ 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.SamtidigUttaksprosent; +import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Stønadskontotype; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Søknad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Utbetalingsgrad; import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.utfall.InnvilgetÅrsak; @@ -30,14 +33,15 @@ public class DelvisArbeidOrkestreringTest extends FastsettePerioderRegelOrkestreringTestBase { public static final LocalDate FØDSELSDATO = LocalDate.of(2024, 6, 17); + public static final AktivitetIdentifikator FRILANS = AktivitetIdentifikator.forFrilans(); @Nested class BareFarHarRett { @Test void far_fullt_uttak_mor_over_75_prosent_i_arbeid() { - var oppgittPeriode = lagOppgittPeriode(null); + var oppgittPeriode = lagOppgittPeriode(FORELDREPENGER, null, null); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode, FORELDREPENGER)); assertThat(fastsattePerioder).hasSize(1); assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -47,9 +51,9 @@ void far_fullt_uttak_mor_over_75_prosent_i_arbeid() { @Test void far_fullt_uttak_mor_akkurat_ikke_75_prosent_i_arbeid() { - var oppgittPeriode = lagOppgittPeriode(new MorsStillingsprosent(BigDecimal.valueOf(74.99))); + var oppgittPeriode = lagOppgittPeriode(FORELDREPENGER, new MorsStillingsprosent(BigDecimal.valueOf(74.99)), null); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode, FORELDREPENGER)); assertThat(fastsattePerioder).hasSize(1); assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -59,9 +63,9 @@ void far_fullt_uttak_mor_akkurat_ikke_75_prosent_i_arbeid() { @Test void far_fullt_uttak_mor_under_75_prosent_i_arbeid() { - var oppgittPeriode = lagOppgittPeriode(new MorsStillingsprosent(40)); + var oppgittPeriode = lagOppgittPeriode(FORELDREPENGER, new MorsStillingsprosent(40), null); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode, FORELDREPENGER)); assertThat(fastsattePerioder).hasSize(1); assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -71,9 +75,9 @@ void far_fullt_uttak_mor_under_75_prosent_i_arbeid() { @Test void far_søker_80_prosent_uttak_mor_er_over_75_prosent_i_arbeid() { - var oppgittPeriode = lagOppgittPeriode(null, 20); + var oppgittPeriode = lagGraderingsperiode(FORELDREPENGER, null, 20, ARBEIDSFORHOLD); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode, FORELDREPENGER)); assertThat(fastsattePerioder).hasSize(1); assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); @@ -82,40 +86,41 @@ void far_fullt_uttak_mor_under_75_prosent_i_arbeid() { } @Test - void far_søker_60_prosent_uttak_mor_arbeider_40_prosent() { - var oppgittPeriode = lagOppgittPeriode(new MorsStillingsprosent(40), 40); + void far_søker_60_prosent_uttak_mor_arbeider_40_prosent_to_aktiviteter() { + var oppgittPeriode = lagGraderingsperiode(FORELDREPENGER, new MorsStillingsprosent(40), 40, ARBEIDSFORHOLD); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var grunnlag = lagGrunnlag(oppgittPeriode, FORELDREPENGER) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD)).arbeidsforhold(new Arbeidsforhold(FRILANS))); + + var fastsattePerioder = fastsettPerioder(grunnlag); assertThat(fastsattePerioder).hasSize(1); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(40)); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(40)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getGraderingIkkeInnvilgetÅrsak()).isEqualTo(MOR_OPPFYLLER_IKKE_AKTIVITETSKRAV); + + assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(FRILANS)).isEqualTo(new Utbetalingsgrad(40)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(FRILANS)).isEqualTo(new Trekkdager(30)); } @Test void far_søker_40_prosent_uttak_mor_arbeider_40_prosent() { - var oppgittPeriode = lagOppgittPeriode(new MorsStillingsprosent(40), 60); + var oppgittPeriode = lagGraderingsperiode(FORELDREPENGER, new MorsStillingsprosent(40), 60, ARBEIDSFORHOLD); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode, FORELDREPENGER)); assertThat(fastsattePerioder).hasSize(1); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.GRADERING_FORELDREPENGER_KUN_FAR_HAR_RETT); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(40)); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(40)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); } @Test - void far_graderer_80_prosent_mor_arbeider_40_prosent() { - var oppgittPeriode = lagOppgittPeriode(new MorsStillingsprosent(40), 80); + void far_søker_20_prosent_uttak_mor_arbeider_40_prosent() { + var oppgittPeriode = lagGraderingsperiode(FORELDREPENGER, new MorsStillingsprosent(40), 80, ARBEIDSFORHOLD); - var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode)); + var fastsattePerioder = fastsettPerioder(lagGrunnlag(oppgittPeriode, FORELDREPENGER)); assertThat(fastsattePerioder).hasSize(1); assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); @@ -131,18 +136,8 @@ void far_graderer_80_prosent_mor_arbeider_40_prosent() { class BeggeHarRett { @Test void far_søker_20_prosent_uttak_mor_arbeider_40_prosent() { - var oppgittPeriode = OppgittPeriode.forGradering(FELLESPERIODE, FØDSELSDATO.plusWeeks(6), // 30 dager - FØDSELSDATO.plusWeeks(12).minusDays(1), BigDecimal.valueOf(80), null, false, Set.of(ARBEIDSFORHOLD), FØDSELSDATO, FØDSELSDATO, ARBEID, - new MorsStillingsprosent(40), DokumentasjonVurdering.MORS_AKTIVITET_GODKJENT); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(FØDSELSDATO)) - .datoer(new Datoer.Builder().fødsel(FØDSELSDATO)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(new Kontoer.Builder().konto(FELLESPERIODE, 100)); + var oppgittPeriode = lagGraderingsperiode(FELLESPERIODE, new MorsStillingsprosent(40), 80, ARBEIDSFORHOLD); + var grunnlag = lagGrunnlag(oppgittPeriode, FELLESPERIODE); var fastsattePerioder = fastsettPerioder(grunnlag); @@ -155,57 +150,65 @@ class BeggeHarRett { // assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(15)); // 50% av 30 } + @Test + void far_søker_60_prosent_uttak_mor_arbeider_40_prosent_to_aktiviteter() { + var oppgittPeriode = lagGraderingsperiode(FELLESPERIODE, new MorsStillingsprosent(40), 40, ARBEIDSFORHOLD); + + var grunnlag = lagGrunnlag(oppgittPeriode, FELLESPERIODE) + .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD)).arbeidsforhold(new Arbeidsforhold(FRILANS))); + + var fastsattePerioder = fastsettPerioder(grunnlag); + + assertThat(fastsattePerioder).hasSize(1); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(40)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getGraderingIkkeInnvilgetÅrsak()).isEqualTo(MOR_OPPFYLLER_IKKE_AKTIVITETSKRAV); + + assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(FRILANS)).isEqualTo(new Utbetalingsgrad(40)); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(FRILANS)).isEqualTo(new Trekkdager(30)); + } + @Test void far_søker_50_prosent_uttak_mor_arbeider_40_prosent() { - var oppgittPeriode = OppgittPeriode.forGradering(FELLESPERIODE, FØDSELSDATO.plusWeeks(6), // 30 dager - FØDSELSDATO.plusWeeks(12).minusDays(1), BigDecimal.valueOf(80), SamtidigUttaksprosent.FIFTY, false, Set.of(), - FØDSELSDATO, FØDSELSDATO, ARBEID, new MorsStillingsprosent(40), DokumentasjonVurdering.MORS_AKTIVITET_GODKJENT); - - var grunnlag = new RegelGrunnlag.Builder().behandling(farBehandling()) - .opptjening(new Opptjening.Builder().skjæringstidspunkt(FØDSELSDATO)) - .datoer(new Datoer.Builder().fødsel(FØDSELSDATO)) - .rettOgOmsorg(beggeRett()) - .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) - .inngangsvilkår(oppfyltAlleVilkår()) - .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(new Kontoer.Builder().konto(FELLESPERIODE, 100)); + var oppgittPeriode = lagOppgittPeriode(FELLESPERIODE, new MorsStillingsprosent(40), SamtidigUttaksprosent.FIFTY); + var grunnlag = lagGrunnlag(oppgittPeriode, FELLESPERIODE); var fastsattePerioder = fastsettPerioder(grunnlag); - //TODO assertThat(fastsattePerioder).hasSize(1); assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.MANUELL_BEHANDLING); - assertThat(fastsattePerioder.getFirst().uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.GRADERING_FELLESPERIODE_ELLER_FORELDREPENGER); + assertThat(fastsattePerioder.getFirst().uttakPeriode().getPeriodeResultatÅrsak()).isEqualTo(InnvilgetÅrsak.FELLESPERIODE_ELLER_FORELDREPENGER); assertThat(fastsattePerioder.getFirst().uttakPeriode().getManuellbehandlingårsak()).isEqualTo(Manuellbehandlingårsak.AKTIVITETSKRAV_DELVIS_ARBEID); // assertThat(fastsattePerioder.getFirst().uttakPeriode().getPerioderesultattype()).isEqualTo(Perioderesultattype.INNVILGET); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(99)); -// assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(15)); // 50% av 30 +// assertThat(fastsattePerioder.getFirst().uttakPeriode().getUtbetalingsgrad(ARBEIDSFORHOLD)).isEqualTo(new Utbetalingsgrad(40)); +// assertThat(fastsattePerioder.getFirst().uttakPeriode().getTrekkdager(ARBEIDSFORHOLD)).isEqualTo(new Trekkdager(30)); } } - private static OppgittPeriode lagOppgittPeriode(MorsStillingsprosent morsStillingsprosent) { - return OppgittPeriode.forVanligPeriode(FORELDREPENGER, FØDSELSDATO.plusWeeks(6), // 30 dager - FØDSELSDATO.plusWeeks(12).minusDays(1), null, false, FØDSELSDATO, FØDSELSDATO, ARBEID, morsStillingsprosent, + private static OppgittPeriode lagOppgittPeriode(Stønadskontotype stønadskontotype, MorsStillingsprosent morsStillingsprosent, SamtidigUttaksprosent samtidigUttaksprosent) { + return OppgittPeriode.forVanligPeriode(stønadskontotype, FØDSELSDATO.plusWeeks(6), // 30 dager + FØDSELSDATO.plusWeeks(12).minusDays(1), samtidigUttaksprosent, false, FØDSELSDATO, FØDSELSDATO, ARBEID, morsStillingsprosent, DokumentasjonVurdering.MORS_AKTIVITET_GODKJENT); } - private static OppgittPeriode lagOppgittPeriode(MorsStillingsprosent morsStillingsprosent, Integer farsArbeidsprosent) { - return OppgittPeriode.forGradering(FORELDREPENGER, FØDSELSDATO.plusWeeks(6), // 30 dager - FØDSELSDATO.plusWeeks(12).minusDays(1), BigDecimal.valueOf(farsArbeidsprosent), null, false, Set.of(ARBEIDSFORHOLD), FØDSELSDATO, + private static OppgittPeriode lagGraderingsperiode(Stønadskontotype stønadskontotype, MorsStillingsprosent morsStillingsprosent, Integer farsArbeidsprosent, AktivitetIdentifikator gradertArbeidsforhold) { + return OppgittPeriode.forGradering(stønadskontotype, FØDSELSDATO.plusWeeks(6), // 30 dager + FØDSELSDATO.plusWeeks(12).minusDays(1), BigDecimal.valueOf(farsArbeidsprosent), null, false, Set.of(gradertArbeidsforhold), FØDSELSDATO, FØDSELSDATO, ARBEID, morsStillingsprosent, DokumentasjonVurdering.MORS_AKTIVITET_GODKJENT); } - private RegelGrunnlag.Builder lagGrunnlag(OppgittPeriode oppgittPeriode) { + private RegelGrunnlag.Builder lagGrunnlag(OppgittPeriode oppgittPeriode, Stønadskontotype stønadskontotype) { return new RegelGrunnlag.Builder().behandling(farBehandling()) .opptjening(new Opptjening.Builder().skjæringstidspunkt(FØDSELSDATO)) .datoer(new Datoer.Builder().fødsel(FØDSELSDATO)) - .rettOgOmsorg(bareFarRett()) + .rettOgOmsorg(stønadskontotype.equals(FORELDREPENGER) ? bareFarRett() : beggeRett()) .søknad(new Søknad.Builder().oppgittPeriode(oppgittPeriode)) .inngangsvilkår(oppfyltAlleVilkår()) .arbeid(new Arbeid.Builder().arbeidsforhold(new Arbeidsforhold(ARBEIDSFORHOLD))) - .kontoer(new Kontoer.Builder().konto(FORELDREPENGER, 100)); + .kontoer(new Kontoer.Builder().konto(stønadskontotype, 100)); } }