Skip to content

Commit

Permalink
TFP-5185: Fase 2, del 2 - Automatisering av tilfeller hvor uttakspros…
Browse files Browse the repository at this point in the history
…ent ved gradering er større enn mors stillingsprosent (#364)

* TFP-5185: Fase 2, del 2 - Automatisering av tilfeller hvor uttaksprosent ved gradering er større enn mors stillingsprosent

* Rydder
  • Loading branch information
espenwaaga authored Jul 5, 2024
1 parent 717991b commit 5391faf
Show file tree
Hide file tree
Showing 8 changed files with 129 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,17 +139,17 @@ 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;
if (regelresultat.trekkDagerFraSaldo()) {
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));
}
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
public class SjekkOmMorErIArbeidMedStillingprosentUnder75Prosent extends LeafSpecification<FastsettePeriodeGrunnlag> {

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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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<FastsettePeriodeGrunnlag> {

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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -212,10 +213,16 @@ private Specification<FastsettePeriodeGrunnlag> sjekkOmMorErIAktivitetIGradertPe

private Specification<FastsettePeriodeGrunnlag> 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<FastsettePeriodeGrunnlag> 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<FastsettePeriodeGrunnlag> 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))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -301,10 +302,16 @@ private Specification<FastsettePeriodeGrunnlag> sjekkGraderingVedKunFarMedmorRet

private Specification<FastsettePeriodeGrunnlag> 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<FastsettePeriodeGrunnlag> 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<FastsettePeriodeGrunnlag> 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))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Loading

0 comments on commit 5391faf

Please sign in to comment.