diff --git a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/KnekkpunktType.kt b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/KnekkpunktType.kt index 9d141a74..d13ef29b 100644 --- a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/KnekkpunktType.kt +++ b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/KnekkpunktType.kt @@ -8,6 +8,7 @@ enum class KnekkpunktType { NATTEVÅKSPERIODE, INNGANGSVILKÅR_IKKE_OPPFYLT, ANNEN_PARTS_UTTAK, + EGET_UTTAK_ANNEN_PLEIETRENGENDE, FORRIGE_UTTAKPLAN, TRUKKET_UTTAK, ARBEID, diff --git a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksgrunnlag.kt b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksgrunnlag.kt index 0ffc710f..83f3326e 100644 --- a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksgrunnlag.kt +++ b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksgrunnlag.kt @@ -32,6 +32,7 @@ data class Uttaksgrunnlag ( @JsonProperty("beredskapsperioder") val beredskapsperioder: Map = mapOf(), @JsonProperty("nattevåksperioder") val nattevåksperioder: Map = mapOf(), @JsonProperty("kravprioritetForBehandlinger") val kravprioritetForBehandlinger: Map> = mapOf(), + @JsonProperty("kravprioritetForEgneBehandlinger") val kravprioritetForEgneBehandlinger: Map> = mapOf(), @JsonProperty("sisteVedtatteUttaksplanForBehandling") val sisteVedtatteUttaksplanForBehandling: Map = mapOf(), @JsonProperty("utenlandsoppholdperioder") val utenlandsoppholdperioder: Map = mapOf() ) diff --git a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksplan.kt b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksplan.kt index 2a3a0d52..18e81fbf 100644 --- a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksplan.kt +++ b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/Uttaksplan.kt @@ -41,27 +41,44 @@ enum class Endringsstatus { @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +@JsonAutoDetect( + getterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + fieldVisibility = JsonAutoDetect.Visibility.ANY +) data class Uttaksplan @JsonCreator constructor( @JsonProperty("perioder") val perioder: Map = mapOf(), @JsonProperty("trukketUttak") val trukketUttak: List = listOf(), @JsonProperty("kvoteInfo") val kvoteInfo: KvoteInfo? = null, @JsonProperty("commitId") val commitId: String = "" ) { - constructor(perioder: Map, trukketUttak: List) : this(perioder, trukketUttak, null, "") + constructor(perioder: Map, trukketUttak: List) : this( + perioder, + trukketUttak, + null, + "" + ) } @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +@JsonAutoDetect( + getterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + fieldVisibility = JsonAutoDetect.Visibility.ANY +) data class KvoteInfo @JsonCreator constructor( - @JsonProperty("maxDato") val maxDato: LocalDate?, - @JsonProperty("totaltForbruktKvote") val totaltForbruktKvote: BigDecimal + @JsonProperty("maxDato") val maxDato: LocalDate?, + @JsonProperty("totaltForbruktKvote") val totaltForbruktKvote: BigDecimal ) @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +@JsonAutoDetect( + getterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + fieldVisibility = JsonAutoDetect.Visibility.ANY +) data class Utbetalingsgrader @JsonCreator constructor( @JsonProperty("arbeidsforhold") val arbeidsforhold: Arbeidsforhold, @JsonProperty("normalArbeidstid") val normalArbeidstid: Duration, @@ -69,12 +86,21 @@ data class Utbetalingsgrader @JsonCreator constructor( @JsonProperty("utbetalingsgrad") val utbetalingsgrad: Prosent, @JsonProperty("tilkommet") val tilkommet: Boolean? = null ) { - constructor(arbeidsforhold: Arbeidsforhold, normalArbeidstid: Duration, faktiskArbeidstid: Duration?, utbetalingsgrad: Prosent) : this(arbeidsforhold, normalArbeidstid, faktiskArbeidstid, utbetalingsgrad, false) + constructor( + arbeidsforhold: Arbeidsforhold, + normalArbeidstid: Duration, + faktiskArbeidstid: Duration?, + utbetalingsgrad: Prosent + ) : this(arbeidsforhold, normalArbeidstid, faktiskArbeidstid, utbetalingsgrad, false) } @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +@JsonAutoDetect( + getterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + fieldVisibility = JsonAutoDetect.Visibility.ANY +) data class UttaksperiodeInfo @JsonCreator constructor( @JsonProperty("utfall") val utfall: Utfall, @JsonProperty("uttaksgrad") val uttaksgrad: Prosent, @@ -96,7 +122,7 @@ data class UttaksperiodeInfo @JsonCreator constructor( @JsonProperty("utenlandsoppholdUtenÅrsak") val utenlandsoppholdUtenÅrsak: Boolean = false, @JsonProperty("utenlandsopphold") val utenlandsopphold: Utenlandsopphold? = null, @JsonProperty("manueltOverstyrt") val manueltOverstyrt: Boolean = false - ) { +) { companion object { @@ -113,7 +139,8 @@ data class UttaksperiodeInfo @JsonCreator constructor( nattevåk: Utfall?, beredskap: Utfall?, utenlandsopphold: Utenlandsopphold?, - manueltOverstyrt: Boolean = false): UttaksperiodeInfo { + manueltOverstyrt: Boolean = false + ): UttaksperiodeInfo { val årsakerMedOppfylt = årsaker.filter { it.oppfylt } require(årsakerMedOppfylt.isEmpty()) { @@ -137,8 +164,8 @@ data class UttaksperiodeInfo @JsonCreator constructor( utenlandsopphold = utenlandsopphold, manueltOverstyrt = manueltOverstyrt, uttaksgradMedReduksjonGrunnetInntektsgradering = null, - uttaksgradUtenReduksjonGrunnetInntektsgradering = null - ) + uttaksgradUtenReduksjonGrunnetInntektsgradering = null, + ) } fun oppfylt( @@ -157,7 +184,8 @@ data class UttaksperiodeInfo @JsonCreator constructor( nattevåk: Utfall?, beredskap: Utfall?, utenlandsopphold: Utenlandsopphold?, - manueltOverstyrt: Boolean = false): UttaksperiodeInfo { + manueltOverstyrt: Boolean = false + ): UttaksperiodeInfo { require(årsak.oppfylt) { "Kan ikke sette periode til oppfylt med årsak som ikke er for oppfylt. ($årsak)" @@ -207,7 +235,11 @@ data class UttaksperiodeInfo @JsonCreator constructor( @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +@JsonAutoDetect( + getterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + fieldVisibility = JsonAutoDetect.Visibility.ANY +) data class GraderingMotTilsyn @JsonCreator constructor( @JsonProperty("etablertTilsyn") val etablertTilsyn: Prosent, @JsonProperty("overseEtablertTilsynÅrsak") val overseEtablertTilsynÅrsak: OverseEtablertTilsynÅrsak?, @@ -218,15 +250,19 @@ data class GraderingMotTilsyn @JsonCreator constructor( @JsonIgnoreProperties(ignoreUnknown = true) @JsonFormat(shape = JsonFormat.Shape.OBJECT) -@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY) +@JsonAutoDetect( + getterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE, + fieldVisibility = JsonAutoDetect.Visibility.ANY +) data class Utenlandsopphold @JsonCreator constructor( @JsonProperty("erEøsLand") val erEøsLand: Boolean?, @JsonProperty("landkode") val landkode: String? = null, @JsonProperty("årsak") val årsak: UtenlandsoppholdÅrsak = UtenlandsoppholdÅrsak.INGEN ) { constructor(landkode: String?, utenlandsoppholdÅrsak: UtenlandsoppholdÅrsak) : this( - RegionUtil().erIEØS(landkode), - landkode, - utenlandsoppholdÅrsak + RegionUtil().erIEØS(landkode), + landkode, + utenlandsoppholdÅrsak ) } diff --git "a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/\303\205rsak.kt" "b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/\303\205rsak.kt" index dcb6c0d3..971d2d20 100644 --- "a/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/\303\205rsak.kt" +++ "b/kontrakter/src/main/kotlin/no/nav/pleiepengerbarn/uttak/kontrakter/\303\205rsak.kt" @@ -21,6 +21,7 @@ enum class Årsak(val oppfylt: Boolean) { FOR_LAV_TAPT_ARBEIDSTID(false), FOR_LAV_ØNSKET_UTTAKSGRAD(false), LOVBESTEMT_FERIE(false), + ANNEN_PLEIETRENGENDE_MED_HØYERE_PRIO(false), BARNETS_DØDSFALL(false), SØKERS_DØDSFALL(false), INNGANGSVILKÅR_IKKE_OPPFYLT(false), diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGrader.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGrader.kt index ebaa336b..d00ea531 100644 --- a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGrader.kt +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGrader.kt @@ -151,7 +151,7 @@ internal object BeregnGrader { uttaksgradUtenReduksjonGrunnetInntektsgradering = uttaksgradResultat.uttaksgrad, uttaksgradMedReduksjonGrunnetInntektsgradering = uttaksgradMedReduksjonGrunnetInntektsgradering, utbetalingsgrader = utbetalingsgrader, - årsak = uttaksgradResultat.årsak() + årsak = uttaksgradResultat.årsak(), ) } @@ -268,7 +268,6 @@ internal object BeregnGrader { ) } - private fun finnØnsketUttaksgradProsent(ønsketUttaksgrad: Duration?): Prosent { if (ønsketUttaksgrad == null) { return HUNDRE_PROSENT @@ -336,6 +335,7 @@ internal object BeregnGrader { andreSøkeresTilsyn + etablertTilsynsprosent > ÅTTI_PROSENT -> { return Årsak.FOR_LAV_REST_PGA_ETABLERT_TILSYN_OG_ANDRE_SØKERE } + } } return null diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderGrunnlag.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderGrunnlag.kt index b782cce0..37f5b27e 100644 --- a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderGrunnlag.kt +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderGrunnlag.kt @@ -18,4 +18,4 @@ data class BeregnGraderGrunnlag( val nyeReglerUtbetalingsgrad: LocalDate?, val overstyrtInput: OverstyrtInput? = null, val inntektsgradering: Inntektsgradering? = null, -) + ) diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/KnekkpunktUtleder.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/KnekkpunktUtleder.kt index ca7448a5..e68877e0 100644 --- a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/KnekkpunktUtleder.kt +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/KnekkpunktUtleder.kt @@ -25,8 +25,21 @@ internal object KnekkpunktUtleder { finnForFerie(knekkpunkMap, regelGrunnlag.lovbestemtFerie) finnForIkkeOppfyltInngangsvilkår(knekkpunkMap, regelGrunnlag.inngangsvilkår) finnForPleiebehov(knekkpunkMap, regelGrunnlag.pleiebehov) - finnForAnnenPartsUttaksplan(knekkpunkMap, regelGrunnlag.andrePartersUttaksplanPerBehandling) - finnForAnnenPartsUttaksplan(knekkpunkMap, regelGrunnlag.vedtatteUttaksplanPerBehandling) + finnForAnnenUttaksplan( + knekkpunkMap, + regelGrunnlag.andrePartersUttaksplanPerBehandling, + KnekkpunktType.ANNEN_PARTS_UTTAK + ) + finnForAnnenUttaksplan( + knekkpunkMap, + regelGrunnlag.vedtatteUttaksplanPerBehandling, + KnekkpunktType.ANNEN_PARTS_UTTAK + ) + finnForAnnenUttaksplan( + knekkpunkMap, + regelGrunnlag.egneUttaksplanerAllePleietrengendePerBehandling, + KnekkpunktType.EGET_UTTAK_ANNEN_PLEIETRENGENDE + ) if (regelGrunnlag.forrigeUttaksplan != null) { finnForForrigeUttaksplan(knekkpunkMap, regelGrunnlag.forrigeUttaksplan) } @@ -130,9 +143,11 @@ internal object KnekkpunktUtleder { pleiebehov.entries.forEach {finnForPeriode(knekkpunktMap, it.key, KnekkpunktType.PLEIEBEHOV)} } - private fun finnForAnnenPartsUttaksplan(knekkpunktMap:KnekkpunktMap, andrePartersUttaksplan:Map) { + private fun finnForAnnenUttaksplan( + knekkpunktMap: KnekkpunktMap, andrePartersUttaksplan: Map, knekkpunktType: KnekkpunktType + ) { andrePartersUttaksplan.forEach { (_, uttaksplan) -> - uttaksplan.perioder.forEach {finnForPeriode(knekkpunktMap, it.key, KnekkpunktType.ANNEN_PARTS_UTTAK)} + uttaksplan.perioder.forEach {finnForPeriode(knekkpunktMap, it.key, knekkpunktType)} } } diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanRegler.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanRegler.kt index b3154308..908f0c68 100644 --- a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanRegler.kt +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanRegler.kt @@ -15,7 +15,8 @@ internal object UttaksplanRegler { private val PeriodeRegler = linkedSetOf( FerieRegel(), SøkersDødRegel(), - BarnsDødPeriodeRegel() + BarnsDødPeriodeRegel(), + TilsynForAndrePleietrengendeRegel() ) private val UttaksplanRegler = linkedSetOf( @@ -126,7 +127,7 @@ internal object UttaksplanRegler { nattevåk = nattevåk, beredskap = beredskap, utenlandsopphold = Utenlandsopphold(landkode, utenlandsoppholdÅrsak), - manueltOverstyrt = grader.manueltOverstyrt + manueltOverstyrt = grader.manueltOverstyrt, ) } else { perioder[søktUttaksperiode] = UttaksperiodeInfo.ikkeOppfylt( @@ -181,6 +182,7 @@ internal object UttaksplanRegler { val etablertTilsyn = grunnlag.finnEtablertTilsyn(periode) val oppgittTilsyn = grunnlag.finnOppgittTilsyn(periode) val (andreSøkeresTilsynReberegnet, andrePartersTilsyn) = grunnlag.finnAndreSøkeresTilsyn(periode) + val arbeidPerArbeidsforhold = grunnlag.finnArbeidPerArbeidsforhold(periode) val overseEtablertTilsynÅrsak = grunnlag.avklarOverseEtablertTilsynÅrsak(periode, etablertTilsyn) val overstyrtInput = grunnlag.finnOverstyrtInput(periode) diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/TilsynForAndrePleietrengendeRegel.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/TilsynForAndrePleietrengendeRegel.kt new file mode 100644 index 00000000..8b4e71e1 --- /dev/null +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/TilsynForAndrePleietrengendeRegel.kt @@ -0,0 +1,40 @@ +package no.nav.pleiepengerbarn.uttak.regler.delregler + +import no.nav.pleiepengerbarn.uttak.kontrakter.LukketPeriode +import no.nav.pleiepengerbarn.uttak.kontrakter.Årsak +import no.nav.pleiepengerbarn.uttak.regler.UttaksplanMedBehandlingUuid +import no.nav.pleiepengerbarn.uttak.regler.domene.RegelGrunnlag +import no.nav.pleiepengerbarn.uttak.regler.kontrakter_ext.overlapperHelt + +internal class TilsynForAndrePleietrengendeRegel : PeriodeRegel { + + override fun kjør(periode: LukketPeriode, grunnlag: RegelGrunnlag): Regelutfall { + if (grunnlag.finnesOppfyltPlanMedHøyerePrioritet(periode)) + return IkkeOppfylt(årsaker = setOf(Årsak.ANNEN_PLEIETRENGENDE_MED_HØYERE_PRIO)) + return TilBeregningAvGrad() + } + + private fun RegelGrunnlag.finnesOppfyltPlanMedHøyerePrioritet(periode: LukketPeriode): Boolean { + val kravprioritetPeriode = kravprioritetForEgneBehandlinger.keys.firstOrNull { it.overlapperHelt(periode) } + ?: return false + + val kravprioritetListe = kravprioritetForEgneBehandlinger[kravprioritetPeriode] ?: return false + + for (behandlingMedKrav in kravprioritetListe) { + if (behandlingMedKrav == this.behandlingUUID) { + return false + } + val uttaksplanMedKrav = egneUttaksplanerAllePleietrengendePerBehandling[behandlingMedKrav] + if (uttaksplanMedKrav != null) { + val erOppfylt = uttaksplanMedKrav.perioder.entries.any({ + it.key.overlapperHelt(kravprioritetPeriode) && it.value.årsaker.all({ it.oppfylt }) + }) + if (erOppfylt) { + return true + } + } + } + return false + } + +} diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/domene/RegelGrunnlag.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/domene/RegelGrunnlag.kt index aaaaec4c..df08a909 100644 --- a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/domene/RegelGrunnlag.kt +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/domene/RegelGrunnlag.kt @@ -21,12 +21,14 @@ data class RegelGrunnlag( val lovbestemtFerie: List = listOf(), val inngangsvilkår: Map> = mapOf(), val andrePartersUttaksplanPerBehandling: Map = mapOf(), + val egneUttaksplanerAllePleietrengendePerBehandling: Map = mapOf(), val vedtatteUttaksplanPerBehandling: Map = mapOf(), val sisteVedtatteUttaksplanForBehandling: Map = mapOf(), val forrigeUttaksplan: Uttaksplan? = null, val beredskapsperioder: Map = mapOf(), val nattevåksperioder: Map = mapOf(), val kravprioritetForBehandlinger: Map> = mapOf(), + val kravprioritetForEgneBehandlinger: Map> = mapOf(), val utenlandsoppholdperioder: Map = mapOf(), val overstyrtInput: Map = mapOf(), val inntektsgradering: Map = mapOf(), diff --git a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapper.kt b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapper.kt index c4e0c181..a921362c 100644 --- a/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapper.kt +++ b/regler/src/main/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapper.kt @@ -12,6 +12,7 @@ object GrunnlagMapper { fun tilRegelGrunnlag( uttaksgrunnlag: Uttaksgrunnlag, andrePartersUttakplanPerBehandling: Map, + egneUttaksplanerAllePleietrengendePerBehandling: Map, vedtatteUttaksplanerPerBehandling: Map, forrigeUttaksplan: Uttaksplan?, commitId: String = "" @@ -28,6 +29,12 @@ object GrunnlagMapper { uttaksgrunnlag.kravprioritetForBehandlinger.forEach { (periode, kravprio) -> kravprioritetForBehandlinger[periode] = kravprio.map { UUID.fromString(it) } } + + val kravprioritetForEgneBehandlinger = mutableMapOf>() + uttaksgrunnlag.kravprioritetForEgneBehandlinger.forEach { (periode, kravprio) -> + kravprioritetForEgneBehandlinger[periode] = kravprio.map { UUID.fromString(it) } + } + val sisteVedtatteUttaksplanForBehandling = mutableMapOf() uttaksgrunnlag.sisteVedtatteUttaksplanForBehandling.filterValues { it != null } .forEach { (behandling, originalBehandling) -> @@ -49,12 +56,14 @@ object GrunnlagMapper { lovbestemtFerie = uttaksgrunnlag.lovbestemtFerie.sortedBy { it.fom }, inngangsvilkår = uttaksgrunnlag.inngangsvilkår, andrePartersUttaksplanPerBehandling = andrePartersUttakplanPerBehandling, + egneUttaksplanerAllePleietrengendePerBehandling = egneUttaksplanerAllePleietrengendePerBehandling, vedtatteUttaksplanPerBehandling = vedtatteUttaksplanerPerBehandling, sisteVedtatteUttaksplanForBehandling = sisteVedtatteUttaksplanForBehandling, forrigeUttaksplan = forrigeUttaksplan, beredskapsperioder = uttaksgrunnlag.beredskapsperioder, nattevåksperioder = uttaksgrunnlag.nattevåksperioder, kravprioritetForBehandlinger = kravprioritetForBehandlinger, + kravprioritetForEgneBehandlinger = kravprioritetForEgneBehandlinger, utenlandsoppholdperioder = uttaksgrunnlag.utenlandsoppholdperioder, overstyrtInput = uttaksgrunnlag.overstyrtInput, inntektsgradering = uttaksgrunnlag.inntektsgradering, diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnBruktKvoteTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnBruktKvoteTest.kt index 832fd0cb..6bc31295 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnBruktKvoteTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnBruktKvoteTest.kt @@ -309,5 +309,5 @@ private fun dummyUttaksperiodeInfo(oppgittTilsyn: Duration? = null) = Uttaksperi uttaksgrad = HUNDRE_PROSENT, årsaker = setOf(), uttaksgradUtenReduksjonGrunnetInntektsgradering = null, - uttaksgradMedReduksjonGrunnetInntektsgradering = null + uttaksgradMedReduksjonGrunnetInntektsgradering = null, ) diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderTest.kt index fee02f5f..bb74cb51 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/BeregnGraderTest.kt @@ -65,7 +65,7 @@ internal class BeregnGraderTest { ytelseType = YtelseType.PSB, periode = PERIODE, nyeReglerUtbetalingsgrad = NYE_REGLER_UTBETALINGSGRAD_DATO, - inntektsgradering = Inntektsgradering(BigDecimal.valueOf(50)) + inntektsgradering = Inntektsgradering(BigDecimal.valueOf(50)), ) ) @@ -92,7 +92,7 @@ internal class BeregnGraderTest { ytelseType = YtelseType.PSB, periode = PERIODE, nyeReglerUtbetalingsgrad = NYE_REGLER_UTBETALINGSGRAD_DATO, - inntektsgradering = Inntektsgradering(BigDecimal.valueOf(50)) + inntektsgradering = Inntektsgradering(BigDecimal.valueOf(50)), ) ) @@ -119,7 +119,7 @@ internal class BeregnGraderTest { periode = PERIODE, nyeReglerUtbetalingsgrad = NYE_REGLER_UTBETALINGSGRAD_DATO, inntektsgradering = Inntektsgradering(BigDecimal.valueOf(50)), - overstyrtInput = OverstyrtInput(BigDecimal.valueOf(30), listOf(OverstyrtUtbetalingsgradPerArbeidsforhold(BigDecimal.valueOf(30), ARBEIDSGIVER1))) + overstyrtInput = OverstyrtInput(BigDecimal.valueOf(30), listOf(OverstyrtUtbetalingsgradPerArbeidsforhold(BigDecimal.valueOf(30), ARBEIDSGIVER1))), ) ) diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/SimuleringTjenesteTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/SimuleringTjenesteTest.kt index 2b25df25..86ab0b73 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/SimuleringTjenesteTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/SimuleringTjenesteTest.kt @@ -222,7 +222,7 @@ internal class SimuleringTjenesteTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) } diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttakTjenesteGraderingTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttakTjenesteGraderingTest.kt index f8229a99..f2c9899e 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttakTjenesteGraderingTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttakTjenesteGraderingTest.kt @@ -5,8 +5,6 @@ import no.nav.pleiepengerbarn.uttak.regler.UttaksperiodeAsserts.sjekkIkkeOppfylt import no.nav.pleiepengerbarn.uttak.regler.UttaksperiodeAsserts.sjekkOppfylt import no.nav.pleiepengerbarn.uttak.regler.domene.RegelGrunnlag import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.AfterEach -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.math.BigDecimal import java.time.Duration @@ -272,7 +270,7 @@ internal class UttakTjenesteGraderingTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() @@ -343,7 +341,7 @@ internal class UttakTjenesteGraderingTest { oppgittTilsyn = null, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() @@ -411,7 +409,7 @@ internal class UttakTjenesteGraderingTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() @@ -832,7 +830,7 @@ internal class UttakTjenesteGraderingTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() @@ -853,7 +851,7 @@ internal class UttakTjenesteGraderingTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() @@ -930,7 +928,7 @@ internal class UttakTjenesteGraderingTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanMergerTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanMergerTest.kt index a9e4bf7f..18e04ef6 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanMergerTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/UttaksplanMergerTest.kt @@ -26,7 +26,7 @@ internal class UttaksplanMergerTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) private fun ikkeOppfylt(behandlingUUID: BehandlingUUID) = UttaksperiodeInfo.ikkeOppfylt( diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/MaxAntallDagerRegelTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/MaxAntallDagerRegelTest.kt index 5c2aeeb1..e3988c9c 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/MaxAntallDagerRegelTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/MaxAntallDagerRegelTest.kt @@ -283,7 +283,7 @@ class MaxAntallDagerRegelTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ), annenPeriode2 to UttaksperiodeInfo.ikkeOppfylt( kildeBehandlingUUID = annenPartsBehandlingUUID.toString(), @@ -296,7 +296,7 @@ class MaxAntallDagerRegelTest { nattevåk = null, beredskap = null, årsaker = setOf(Årsak.FOR_LAV_INNTEKT), - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ), annenPeriode3 to UttaksperiodeInfo.oppfylt( kildeBehandlingUUID = annenPartsBehandlingUUID.toString(), @@ -312,7 +312,7 @@ class MaxAntallDagerRegelTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), @@ -537,7 +537,7 @@ private fun dummyRegelGrunnlagMedAndreParter( annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), trukketUttak = listOf() @@ -573,5 +573,5 @@ private fun dummyUttaksperiodeInfo(oppgittTilsyn: Duration? = null, utfall: Utfa uttaksgrad = uttaksgrad, årsaker = setOf(), uttaksgradUtenReduksjonGrunnetInntektsgradering = null, - uttaksgradMedReduksjonGrunnetInntektsgradering = null + uttaksgradMedReduksjonGrunnetInntektsgradering = null, ) diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/TilsynForAndrePleietrengendeRegelTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/TilsynForAndrePleietrengendeRegelTest.kt new file mode 100644 index 00000000..069e3504 --- /dev/null +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/delregler/TilsynForAndrePleietrengendeRegelTest.kt @@ -0,0 +1,183 @@ +package no.nav.pleiepengerbarn.uttak.regler.delregler + +import no.nav.pleiepengerbarn.uttak.kontrakter.* +import no.nav.pleiepengerbarn.uttak.regler.HUNDRE_PROSENT +import no.nav.pleiepengerbarn.uttak.regler.NULL_PROSENT +import no.nav.pleiepengerbarn.uttak.regler.domene.RegelGrunnlag +import org.assertj.core.api.Assertions +import org.junit.jupiter.api.Test +import java.time.Duration +import java.util.* + +internal class TilsynForAndrePleietrengendeRegelTest { + + private val regel: TilsynForAndrePleietrengendeRegel = TilsynForAndrePleietrengendeRegel() + private val periode: LukketPeriode = LukketPeriode("2020-01-01/2020-01-31") + + @Test + internal fun `Søker uten andre pleietrengende`() { + val resultat = + regel.kjør(periode, grunnlagUtenAndrePleietrengende()) + Assertions.assertThat(resultat).isInstanceOf(TilBeregningAvGrad::class.java) + val tilBeregningAvGrad = resultat as TilBeregningAvGrad + Assertions.assertThat(tilBeregningAvGrad.overstyrtÅrsak).isNull() + } + + @Test + internal fun `Søker med behandling for annen pleietrengende med lavere prio`() { + val resultat = + regel.kjør(periode, grunnlagMedBehandlingMedLaverePrio()) + Assertions.assertThat(resultat).isInstanceOf(TilBeregningAvGrad::class.java) + val tilBeregningAvGrad = resultat as TilBeregningAvGrad + Assertions.assertThat(tilBeregningAvGrad.overstyrtÅrsak).isNull() + } + + @Test + internal fun `Søker med behandling for annen pleietrengende med høyere prio, men avslått uttaksresultat`() { + val resultat = + regel.kjør(periode, grunnlagMedBehandlingMedHøyerePrioMenAvslåttUttaksresultat()) + Assertions.assertThat(resultat).isInstanceOf(TilBeregningAvGrad::class.java) + val tilBeregningAvGrad = resultat as TilBeregningAvGrad + Assertions.assertThat(tilBeregningAvGrad.overstyrtÅrsak).isNull() + } + + @Test + internal fun `Søker med behandling for annen pleietrengende med hæyere prio, og oppfylt uttaksresultat`() { + val resultat = + regel.kjør(periode, grunnlagMedBehandlingMedHøyerePrio()) + Assertions.assertThat(resultat).isInstanceOf(IkkeOppfylt::class.java) + val tilBeregningAvGrad = resultat as IkkeOppfylt + Assertions.assertThat(tilBeregningAvGrad.årsaker).isNotNull() + Assertions.assertThat(tilBeregningAvGrad.årsaker).contains(Årsak.ANNEN_PLEIETRENGENDE_MED_HØYERE_PRIO) + + } + + + private fun nesteSaksnummer(): Saksnummer = UUID.randomUUID().toString().takeLast(19) + private fun nesteBehandlingUUID() = UUID.randomUUID() + + + private fun grunnlagUtenAndrePleietrengende(): RegelGrunnlag { + return RegelGrunnlag( + saksnummer = nesteSaksnummer(), + //Feltene nedenfor er ikke relevante for testen + behandlingUUID = UUID.randomUUID(), + søker = Søker(aktørId = "456"), + pleiebehov = mapOf(), + søktUttak = listOf(), + arbeid = listOf(), + barn = Barn(aktørId = "123"), + ) + } + + private fun grunnlagMedBehandlingMedLaverePrio(): RegelGrunnlag { + val denneBehandlingen = nesteBehandlingUUID() + val enAnnenBehandling = nesteBehandlingUUID() + return RegelGrunnlag( + saksnummer = nesteSaksnummer(), + kravprioritetForEgneBehandlinger = mapOf(Pair(periode, listOf(denneBehandlingen, enAnnenBehandling))), + egneUttaksplanerAllePleietrengendePerBehandling = mapOf(), + //Feltene nedenfor er ikke relevante for testen + behandlingUUID = denneBehandlingen, + søker = Søker(aktørId = "456"), + pleiebehov = mapOf(), + søktUttak = listOf(), + arbeid = listOf(), + barn = Barn(aktørId = "123"), + ) + } + + private fun grunnlagMedBehandlingMedHøyerePrioMenAvslåttUttaksresultat(): RegelGrunnlag { + val denneBehandlingen = nesteBehandlingUUID() + val enAnnenBehandling = nesteBehandlingUUID() + return RegelGrunnlag( + saksnummer = nesteSaksnummer(), + kravprioritetForEgneBehandlinger = mapOf(Pair(periode, listOf(enAnnenBehandling, denneBehandlingen))), + egneUttaksplanerAllePleietrengendePerBehandling = mapOf( + Pair( + enAnnenBehandling, + Uttaksplan(perioder = mapOf(Pair(periode, avslåttUttaksperiode()))) + ) + ), + //Feltene nedenfor er ikke relevante for testen + behandlingUUID = denneBehandlingen, + søker = Søker(aktørId = "456"), + pleiebehov = mapOf(), + søktUttak = listOf(), + arbeid = listOf(), + barn = Barn(aktørId = "123"), + ) + } + + + private fun grunnlagMedBehandlingMedHøyerePrio(): RegelGrunnlag { + val denneBehandlingen = nesteBehandlingUUID() + val enAnnenBehandling = nesteBehandlingUUID() + return RegelGrunnlag( + saksnummer = nesteSaksnummer(), + kravprioritetForEgneBehandlinger = mapOf(Pair(periode, listOf(enAnnenBehandling, denneBehandlingen))), + egneUttaksplanerAllePleietrengendePerBehandling = mapOf( + Pair( + enAnnenBehandling, + Uttaksplan(perioder = mapOf(Pair(periode, oppfyltUttaksperiode()))) + ) + ), + //Feltene nedenfor er ikke relevante for testen + behandlingUUID = denneBehandlingen, + søker = Søker(aktørId = "456"), + pleiebehov = mapOf(), + søktUttak = listOf(), + arbeid = listOf(), + barn = Barn(aktørId = "123"), + ) + } + + + private fun avslåttUttaksperiode() = UttaksperiodeInfo( + utfall = Utfall.IKKE_OPPFYLT, + utbetalingsgrader = listOf(), + annenPart = AnnenPart.ALENE, + beredskap = null, + nattevåk = null, + graderingMotTilsyn = GraderingMotTilsyn( + etablertTilsyn = NULL_PROSENT, + overseEtablertTilsynÅrsak = null, + andreSøkeresTilsyn = NULL_PROSENT, + tilgjengeligForSøker = NULL_PROSENT, + andreSøkeresTilsynReberegnet = false + ), + kildeBehandlingUUID = "123", + oppgittTilsyn = Duration.ZERO, + pleiebehov = Pleiebehov.PROSENT_100.prosent, + søkersTapteArbeidstid = null, + uttaksgrad = HUNDRE_PROSENT, + årsaker = setOf(Årsak.BARNETS_DØDSFALL), + uttaksgradUtenReduksjonGrunnetInntektsgradering = null, + uttaksgradMedReduksjonGrunnetInntektsgradering = null, + ) + + private fun oppfyltUttaksperiode() = UttaksperiodeInfo( + utfall = Utfall.OPPFYLT, + utbetalingsgrader = listOf(), + annenPart = AnnenPart.ALENE, + beredskap = null, + nattevåk = null, + graderingMotTilsyn = GraderingMotTilsyn( + etablertTilsyn = NULL_PROSENT, + overseEtablertTilsynÅrsak = null, + andreSøkeresTilsyn = NULL_PROSENT, + tilgjengeligForSøker = NULL_PROSENT, + andreSøkeresTilsynReberegnet = false + ), + kildeBehandlingUUID = "123", + oppgittTilsyn = Duration.ZERO, + pleiebehov = Pleiebehov.PROSENT_100.prosent, + søkersTapteArbeidstid = null, + uttaksgrad = HUNDRE_PROSENT, + årsaker = setOf(Årsak.AVKORTET_MOT_INNTEKT), + uttaksgradUtenReduksjonGrunnetInntektsgradering = null, + uttaksgradMedReduksjonGrunnetInntektsgradering = null, + ) + + +} diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/kontrakter_ext/RegelGrunnlagExtKtTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/kontrakter_ext/RegelGrunnlagExtKtTest.kt index 6e4fcfd6..eb8619cd 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/kontrakter_ext/RegelGrunnlagExtKtTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/kontrakter_ext/RegelGrunnlagExtKtTest.kt @@ -2,6 +2,7 @@ package no.nav.pleiepengerbarn.uttak.regler.kontrakter_ext import no.nav.pleiepengerbarn.uttak.kontrakter.* import no.nav.pleiepengerbarn.uttak.regler.HUNDRE_PROSENT +import no.nav.pleiepengerbarn.uttak.regler.NULL_PROSENT import no.nav.pleiepengerbarn.uttak.regler.domene.RegelGrunnlag import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.Test @@ -53,7 +54,7 @@ internal class RegelGrunnlagExtKtTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ) ) diff --git a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapperTest.kt b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapperTest.kt index 12284d80..7187f9a6 100644 --- a/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapperTest.kt +++ b/regler/src/test/kotlin/no/nav/pleiepengerbarn/uttak/regler/mapper/GrunnlagMapperTest.kt @@ -29,7 +29,8 @@ internal class GrunnlagMapperTest { ), andrePartersUttakplanPerBehandling = mapOf(), vedtatteUttaksplanerPerBehandling = mapOf(), - forrigeUttaksplan = null + forrigeUttaksplan = null, + egneUttaksplanerAllePleietrengendePerBehandling = mapOf(), ) } } @@ -46,8 +47,9 @@ internal class GrunnlagMapperTest { ), andrePartersUttakplanPerBehandling = mapOf(), vedtatteUttaksplanerPerBehandling = mapOf(), - forrigeUttaksplan = null - ) + forrigeUttaksplan = null, + egneUttaksplanerAllePleietrengendePerBehandling = mapOf(), + ) } } @@ -64,8 +66,9 @@ internal class GrunnlagMapperTest { ), andrePartersUttakplanPerBehandling = mapOf(), vedtatteUttaksplanerPerBehandling = mapOf(), - forrigeUttaksplan = null - ) + forrigeUttaksplan = null, + egneUttaksplanerAllePleietrengendePerBehandling = mapOf(), + ) } private fun lagUttaksgrunnag( diff --git a/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/UttakplanApi.kt b/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/UttakplanApi.kt index 2d0ccc84..f03c96bb 100644 --- a/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/UttakplanApi.kt +++ b/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/UttakplanApi.kt @@ -9,7 +9,6 @@ import no.nav.pleiepengerbarn.uttak.regler.* import no.nav.pleiepengerbarn.uttak.regler.mapper.GrunnlagMapper import no.nav.pleiepengerbarn.uttak.server.db.UttakRepository import no.nav.security.token.support.core.api.Protected -import no.nav.security.token.support.core.api.Unprotected import org.slf4j.LoggerFactory import org.springframework.beans.factory.annotation.Autowired import org.springframework.beans.factory.annotation.Value @@ -147,12 +146,14 @@ class UttakplanApi { lagre: Boolean ): Uttaksplan { val andrePartersUttaksplanerPerBehandling = hentAndrePartersUttaksplanerPerBehandling(uttaksgrunnlag) + val egneUttaksplanerAndrePleietrengendePerBehandling = hentEgneUttaksplanerAndrePleietrengendePerBehandling(uttaksgrunnlag) val vedtatteUttaksplanerPerBehandling = hentVedtatteUttaksplanerPerBehandling(uttaksgrunnlag) val regelGrunnlag = GrunnlagMapper.tilRegelGrunnlag( uttaksgrunnlag, andrePartersUttaksplanerPerBehandling, + egneUttaksplanerAndrePleietrengendePerBehandling, vedtatteUttaksplanerPerBehandling, forrigeUttaksplan ) @@ -187,6 +188,22 @@ class UttakplanApi { return andrePartersUttaksplanerPerBehandling } + private fun hentEgneUttaksplanerAndrePleietrengendePerBehandling(uttaksgrunnlag: Uttaksgrunnlag): Map { + val unikeBehandlinger = + uttaksgrunnlag.kravprioritetForEgneBehandlinger.values.flatten() + .toSet() + .map { UUID.fromString(it) } + val egneUttaksplanerAndrePleietrengendePerBehandling = mutableMapOf() + + unikeBehandlinger.forEach { behandlingUUID -> + val uttaksplan = uttakRepository.hent(behandlingUUID) + if (uttaksplan != null) { + egneUttaksplanerAndrePleietrengendePerBehandling[behandlingUUID] = uttaksplan + } + } + return egneUttaksplanerAndrePleietrengendePerBehandling + } + private fun hentVedtatteUttaksplanerPerBehandling(uttaksgrunnlag: Uttaksgrunnlag): Map { val vedtatteBehandlinger = uttaksgrunnlag.sisteVedtatteUttaksplanForBehandling.filterValues { it != null } .values.toSet() diff --git a/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttaksperiodeRepository.kt b/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttaksperiodeRepository.kt index aeecdc6c..a7770f6f 100644 --- a/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttaksperiodeRepository.kt +++ b/server/src/main/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttaksperiodeRepository.kt @@ -96,7 +96,7 @@ internal class UttaksperiodeRepository { utenlandsopphold = Utenlandsopphold(rs.getString("landkode"), UtenlandsoppholdÅrsak.valueOf(rs.getString("utenlandsopphold_aarsak"))), manueltOverstyrt = rs.getBoolean("manuelt_overstyrt"), uttaksgradUtenReduksjonGrunnetInntektsgradering = rs.getBigDecimal("uttaksgradUtenReduksjonGrunnetInntektsgradering"), - uttaksgradMedReduksjonGrunnetInntektsgradering = rs.getBigDecimal("uttaksgradMedReduksjonGrunnetInntektsgradering") + uttaksgradMedReduksjonGrunnetInntektsgradering = rs.getBigDecimal("uttaksgradMedReduksjonGrunnetInntektsgradering"), ) ) } diff --git a/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/UttaksplanExtTest.kt b/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/UttaksplanExtTest.kt index 0b17e29d..91637c8a 100644 --- a/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/UttaksplanExtTest.kt +++ b/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/UttaksplanExtTest.kt @@ -74,8 +74,8 @@ internal class UttaksplanExtTest { uttaksgrad = HUNDRE_PROSENT, årsaker = setOf(), uttaksgradUtenReduksjonGrunnetInntektsgradering = null, - uttaksgradMedReduksjonGrunnetInntektsgradering = null - ) + uttaksgradMedReduksjonGrunnetInntektsgradering = null, + ) } diff --git a/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttakRepositoryTest.kt b/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttakRepositoryTest.kt index 9d726063..484fb765 100644 --- a/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttakRepositoryTest.kt +++ b/server/src/test/kotlin/no/nav/pleiepengerbarn/uttak/server/db/UttakRepositoryTest.kt @@ -1,6 +1,7 @@ package no.nav.pleiepengerbarn.uttak.server.db import no.nav.pleiepengerbarn.uttak.kontrakter.* +import no.nav.pleiepengerbarn.uttak.regler.NULL_PROSENT import no.nav.pleiepengerbarn.uttak.regler.domene.RegelGrunnlag import no.nav.pleiepengerbarn.uttak.testklient.FULL_DAG import no.nav.pleiepengerbarn.uttak.testklient.nesteSaksnummer @@ -415,7 +416,7 @@ internal class UttakRepositoryTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ) ) @@ -476,7 +477,7 @@ internal class UttakRepositoryTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(landkode, utenlandsoppholdÅrsak) + utenlandsopphold = Utenlandsopphold(landkode, utenlandsoppholdÅrsak), ) ), trukketUttak = listOf() @@ -538,7 +539,7 @@ internal class UttakRepositoryTest { annenPart = AnnenPart.ALENE, nattevåk = null, beredskap = null, - utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN) + utenlandsopphold = Utenlandsopphold(null, UtenlandsoppholdÅrsak.INGEN), ) ), diff --git a/server/src/test/resources/application-postgres.yml b/server/src/test/resources/application-postgres.yml index f882d240..d44765f6 100644 --- a/server/src/test/resources/application-postgres.yml +++ b/server/src/test/resources/application-postgres.yml @@ -6,4 +6,4 @@ no.nav.security.jwt: issuer: azure: discoveryurl: http://localhost:${mock-oauth2-server.port}/azure/.well-known/openid-configuration - accepted_audience: pleiepenger-barn-uttak \ No newline at end of file + accepted_audience: pleiepenger-barn-uttak