Skip to content

Commit

Permalink
TFP-5291 erstatter dokumentasjonsperioder med dokumentvurdering per o…
Browse files Browse the repository at this point in the history
…ppgitte periode (#272)
  • Loading branch information
palfi authored Nov 2, 2022
1 parent 037f284 commit 8a327c1
Show file tree
Hide file tree
Showing 78 changed files with 890 additions and 2,161 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,6 @@ public interface FastsettePeriodeGrunnlag {
*/
Arbeid getArbeid();

/**
* Finn perioder der søker har gyldig grunn for tidlig oppstart eller utsettelse.
*
* @return Array av aktuelle perioder med gyldig grunn, sortert på fom dato. Returnerer tom list om det ikke finnes en aktuell periode eller om det ikke finnes overlappende
* perioder med gyldig grunn.
*/
List<GyldigGrunnPeriode> getAktuelleGyldigeGrunnPerioder();

/**
* Finn søknadstype.
*
Expand Down Expand Up @@ -67,78 +59,14 @@ public interface FastsettePeriodeGrunnlag {
*/
boolean isSamtykke();

/**
* Finn alle perioder med gyldig grunn for tidlig oppstart
*
* @return list av perioder med gyldig grunn for tidlig oppstart
*/
List<GyldigGrunnPeriode> getGyldigGrunnPerioder();

/**
* Finn alle perioder der søker ikke har omsorg for barnet/barna det søkes om
*
* @return list av perioder der søker ikke har omsorg for barnet/barna det søkes om
*/
List<PeriodeUtenOmsorg> getPerioderUtenOmsorg();

/**
* Finn alle perioder der søker har bekreftet sykdom eller skade.
*
* @return list av perioder der søker har bekreftet sykdom eller skade.
*/
List<PeriodeMedSykdomEllerSkade> getPerioderMedSykdomEllerSkade();

/**
* Finn alle perioder der søker har bekreftet innleggelse.
*
* @return list av perioder der søker har bekreftet innleggelse.
*/
List<PeriodeMedInnleggelse> getPerioderMedInnleggelse();

/**
* Finn alle perioder der det er avklart mors aktivitet
* Mor kan enten være i aktivitet i perioden eller ikke
*
* @return list av perioder.
*/
List<PeriodeMedAvklartMorsAktivitet> getPerioderMedAvklartMorsAktivitet();

/**
* Finn alle perioder der søkers barn er innlagt på helseinstitusjon.
*
* @return list av perioder der søkers barn er innlagt på helseinstitusjon.
*/
List<PeriodeMedBarnInnlagt> getPerioderMedBarnInnlagt();

/**
* Finn alle perioder der søkers annen forelder er innlagt på helseinstitusjon.
*
* @return list av perioder der søkers annen forelder er innlagt på helseinstitusjon.
*/
List<OppgittPeriode> getPerioderMedAnnenForelderInnlagt();

/**
* Finn alle perioder der søkers annen forelder har bekreftet sykdom eller skade.
*
* @return list av perioder der søkers annen forelder har bekreftet sykdom eller skade.
*/
List<OppgittPeriode> getPerioderMedAnnenForelderSykdomEllerSkade();

List<PeriodeMedTiltakIRegiAvNav> getPerioderMedTiltakIRegiAvNav();

/**
* Finn alle perioder der søkers annen forelder har bekreftet ikke rett.
*
* @return list av perioder der søkers annen forelder har bekreftet ikke rett.
*/
List<OppgittPeriode> getPerioderMedAnnenForelderIkkeRett();

/**
* Finn alle perioder der søkers annen forelder har bekreftet ikke omsorg.
*
* @return list av perioder der søkers annen forelder har bekreftet ikke omsorg.
*/
List<OppgittPeriode> getPerioderMedAleneomsorg();
List<PleiepengerPeriode> getPleiepengerInnleggelse();

/**
* Har far/medmor rett til foreldrepenger.
Expand Down Expand Up @@ -255,8 +183,6 @@ public interface FastsettePeriodeGrunnlag {
*/
LocalDate getTermindato();

List<PeriodeMedHV> getPerioderHV();

boolean isBerørtBehandling();

LocalDateTime getSisteSøknadMottattTidspunkt();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,18 @@

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Adopsjon;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenPart;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.AnnenpartUttakPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Arbeid;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.GyldigGrunnPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Inngangsvilkår;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OverføringÅrsak;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeMedAvklartMorsAktivitet;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeMedBarnInnlagt;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeMedHV;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeMedInnleggelse;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeMedSykdomEllerSkade;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeMedTiltakIRegiAvNav;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeUtenOmsorg;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.RegelGrunnlag;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.Spesialkontotype;
Expand All @@ -35,7 +23,6 @@
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.ytelser.PleiepengerPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.saldo.SaldoUtregning;
import no.nav.foreldrepenger.regler.uttak.felles.grunnlag.LukketPeriode;
import no.nav.foreldrepenger.regler.uttak.felles.grunnlag.Periode;

public class FastsettePeriodeGrunnlagImpl implements FastsettePeriodeGrunnlag {

Expand All @@ -60,89 +47,18 @@ public OppgittPeriode getAktuellPeriode() {
return aktuellPeriode;
}

@Override
public List<GyldigGrunnPeriode> getAktuelleGyldigeGrunnPerioder() {
var dokumentasjon = regelGrunnlag.getSøknad().getDokumentasjon();
if (dokumentasjon == null) {
return Collections.emptyList();
}
return dokumentasjon.getGyldigGrunnPerioder()
.stream()
.filter(p -> p.overlapper(aktuellPeriode))
.sorted(Comparator.comparing(Periode::getFom))
.collect(Collectors.toList());
}

@Override
public Arbeid getArbeid() {
return regelGrunnlag.getArbeid();
}

@Override
public List<PeriodeMedSykdomEllerSkade> getPerioderMedSykdomEllerSkade() {
return regelGrunnlag.getSøknad().getDokumentasjon().getPerioderMedSykdomEllerSkade();
}

@Override
public List<PeriodeMedInnleggelse> getPerioderMedInnleggelse() {
return regelGrunnlag.getSøknad().getDokumentasjon().getPerioderMedInnleggelse();
}

@Override
public List<PeriodeMedAvklartMorsAktivitet> getPerioderMedAvklartMorsAktivitet() {
return regelGrunnlag.getSøknad().getDokumentasjon().getPerioderMedAvklartMorsAktivitet();
}

@Override
public List<PeriodeMedBarnInnlagt> getPerioderMedBarnInnlagt() {
var fraDok = regelGrunnlag.getSøknad().getDokumentasjon().getPerioderMedBarnInnlagt();
var felles = new ArrayList<>(fraDok);
var fraYtelser = regelGrunnlag.getYtelser().pleiepenger()
public List<PleiepengerPeriode> getPleiepengerInnleggelse() {
return regelGrunnlag.getYtelser().pleiepenger()
.map(pleiepengerMedInnleggelse -> pleiepengerMedInnleggelse.innleggelser())
.orElse(List.of())
.stream()
.map(p -> new PeriodeMedBarnInnlagt(p.getFom(), p.getTom()))
.toList();
felles.addAll(fraYtelser);
return felles;
}

@Override
public List<OppgittPeriode> getPerioderMedAnnenForelderInnlagt() {
return getPerioderMedOverføringÅrsak(OverføringÅrsak.INNLEGGELSE);
}

@Override
public List<OppgittPeriode> getPerioderMedAnnenForelderSykdomEllerSkade() {
return getPerioderMedOverføringÅrsak(OverføringÅrsak.SYKDOM_ELLER_SKADE);
}

@Override
public List<PeriodeMedHV> getPerioderHV() {
return regelGrunnlag.getSøknad().getDokumentasjon().getPerioderMedHv();
}

@Override
public List<PeriodeMedTiltakIRegiAvNav> getPerioderMedTiltakIRegiAvNav() {
return regelGrunnlag.getSøknad().getDokumentasjon().getPerioderMedTiltakViaNav();
}

@Override
public List<OppgittPeriode> getPerioderMedAnnenForelderIkkeRett() {
return getPerioderMedOverføringÅrsak(OverføringÅrsak.ANNEN_FORELDER_IKKE_RETT);
}

@Override
public List<OppgittPeriode> getPerioderMedAleneomsorg() {
return getPerioderMedOverføringÅrsak(OverføringÅrsak.ALENEOMSORG);
}

private List<OppgittPeriode> getPerioderMedOverføringÅrsak(OverføringÅrsak årsak) {
return regelGrunnlag.getSøknad()
.getOppgittePerioder()
.stream()
.filter(periode -> Objects.equals(periode.getOverføringÅrsak(), årsak))
.collect(Collectors.toList());
}

@Override
Expand Down Expand Up @@ -200,11 +116,6 @@ public boolean isSakMedDagerUtenAktivitetskrav() {
return regelGrunnlag.getKontoer().harSpesialkonto(Spesialkontotype.TETTE_FØDSLER) && regelGrunnlag.getKontoer().getSpesialkontoTrekkdager(Spesialkontotype.TETTE_FØDSLER) > 0;
}

@Override
public List<GyldigGrunnPeriode> getGyldigGrunnPerioder() {
return regelGrunnlag.getSøknad().getDokumentasjon().getGyldigGrunnPerioder();
}

@Override
public List<PeriodeUtenOmsorg> getPerioderUtenOmsorg() {
var dokumentasjon = regelGrunnlag.getSøknad().getDokumentasjon();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ private Specification<FastsettePeriodeGrunnlag> sjekkOmMorHarRett() {

private Specification<FastsettePeriodeGrunnlag> sjekkOmMorSøktOmOverføringAvFedrekvote() {
return rs.hvisRegel(SjekkOmSøktOmOverføringAvKvote.ID, "Har mor søkt om overføring av fedrekvoten?")
.hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmOverføringPgaInnleggelse()) // SKRIVE OM
.hvis(new SjekkOmSøktOmOverføringAvKvote(), sjekkOmOverføringPgaInnleggelse())
.ellers(Manuellbehandling.opprett("UT1032", IkkeOppfyltÅrsak.DEN_ANDRE_PART_SYK_SKADET_IKKE_OPPFYLT,
Manuellbehandlingårsak.UGYLDIG_STØNADSKONTO, true, false));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,14 +166,7 @@ private static List<OppgittPeriode> perioderMedFerie(RegelGrunnlag grunnlag) {

private static void knekkBasertPåDokumentasjon(RegelGrunnlag grunnlag, Set<LocalDate> knekkpunkter) {
var dokumentasjon = grunnlag.getSøknad().getDokumentasjon();
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getGyldigGrunnPerioder());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderUtenOmsorg());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderMedSykdomEllerSkade());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderMedInnleggelse());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderMedBarnInnlagt());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderMedHv());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderMedTiltakViaNav());
leggTilKnekkpunkter(knekkpunkter, dokumentasjon.getPerioderMedAvklartMorsAktivitet());
}

private static LocalDate finnMaksgrenseForLovligUttak(RegelGrunnlag grunnlag) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser;

import java.util.List;
import java.util.Set;

import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.GyldigGrunnPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.OppgittPeriode;
import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.PeriodeVurderingType;
import no.nav.fpsak.nare.doc.RuleDocumentation;
import no.nav.fpsak.nare.evaluation.Evaluation;
import no.nav.fpsak.nare.specification.LeafSpecification;
Expand All @@ -23,22 +17,6 @@ public SjekkGyldigGrunnForTidligOppstartHelePerioden() {
@Override
public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) {
var aktuellPeriode = grunnlag.getAktuellPeriode();
if (harGyldigGrunn(aktuellPeriode, grunnlag.getGyldigGrunnPerioder())) {
return ja();
}
//Brukes bare for tidlig oppstart for far
if (!grunnlag.isSøkerMor() && Set.of(PeriodeVurderingType.PERIODE_OK, PeriodeVurderingType.ENDRE_PERIODE).contains(aktuellPeriode.getPeriodeVurderingType())) {
return ja();
}
return nei();
}

private boolean harGyldigGrunn(OppgittPeriode oppgittPeriode, List<GyldigGrunnPeriode> gyldigGrunnPerioder) {
for (var gyldigGrunnPeriode : gyldigGrunnPerioder) {
if (oppgittPeriode.erOmsluttetAv(gyldigGrunnPeriode)) {
return true;
}
}
return false;
return aktuellPeriode.getDokumentasjonVurdering() != null && aktuellPeriode.getDokumentasjonVurdering().erGyldigGrunnForTidligOppstart() ? ja() : nei();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser;

import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering.INNLEGGELSE_BARN_DOKUMENTERT;

import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag;
import no.nav.fpsak.nare.doc.RuleDocumentation;
import no.nav.fpsak.nare.evaluation.Evaluation;
Expand All @@ -17,11 +19,14 @@ public SjekkOmBarnInnlagt() {
@Override
public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) {
var oppgittPeriode = grunnlag.getAktuellPeriode();
for (var periodeMedBarnInnlagt : grunnlag.getPerioderMedBarnInnlagt()) {
for (var periodeMedBarnInnlagt : grunnlag.getPleiepengerInnleggelse()) {
if (oppgittPeriode.erOmsluttetAv(periodeMedBarnInnlagt)) {
return ja();
}
}
if (INNLEGGELSE_BARN_DOKUMENTERT.equals(oppgittPeriode.getDokumentasjonVurdering())) {
return ja();
}
return nei();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package no.nav.foreldrepenger.regler.uttak.fastsetteperiode.betingelser;

import static no.nav.foreldrepenger.regler.uttak.fastsetteperiode.grunnlag.DokumentasjonVurdering.HV_OVELSE_DOKUMENTERT;

import no.nav.foreldrepenger.regler.uttak.fastsetteperiode.FastsettePeriodeGrunnlag;
import no.nav.fpsak.nare.doc.RuleDocumentation;
import no.nav.fpsak.nare.evaluation.Evaluation;
Expand All @@ -16,12 +18,6 @@ public SjekkOmDokumentertHV() {

@Override
public Evaluation evaluate(FastsettePeriodeGrunnlag grunnlag) {
var oppgittPeriode = grunnlag.getAktuellPeriode();
for (var periodeMedHv : grunnlag.getPerioderHV()) {
if (oppgittPeriode.erOmsluttetAv(periodeMedHv)) {
return ja();
}
}
return nei();
return HV_OVELSE_DOKUMENTERT.equals(grunnlag.getAktuellPeriode().getDokumentasjonVurdering()) ? ja() : nei();
}
}
Loading

0 comments on commit 8a327c1

Please sign in to comment.