From 37b6504b1f9f2436d9413d02991cd33e78206c2a Mon Sep 17 00:00:00 2001 From: Jacob Meidell Date: Tue, 5 Nov 2024 13:29:26 +0100 Subject: [PATCH] Initial implementation of manuell for fellesbarn --- .../KontrollbehandlingRepo.kt | 18 +++ .../KontrollbehandlingServiceImpl.kt | 21 ++- .../OmsorgsarbeidProcessingMetrikker.kt | 3 + .../omsorgsopptjening/model/Behandling.kt | 3 +- .../model/Familierelasjoner.kt | 8 ++ .../model/JuridiskHenvisning.kt | 11 ++ ...sopptjeningIkkeInnvilgetAnnetFellesbarn.kt | 73 ++++++++++ .../omsorgsopptjening/model/Person.kt | 9 +- .../model/VurderVilk\303\245r.kt" | 28 +++- .../repository/BehandlingRepo.kt | 16 +++ ...rIkkeAndreBarnGodskrevetAnnenForelderDb.kt | 96 +++++++++++++ .../repository/Vilk\303\245rsvurderingDb.kt" | 3 + .../oppgave/model/Oppgave.kt | 9 ++ .../model/PersongrunnlagMeldingServiceImpl.kt | 18 ++- .../model/FamilierelasjonerTest.kt | 26 ++++ ...tjeningIkkeInnvilgetAnnetFellesbarnTest.kt | 131 ++++++++++++++++++ .../oppgave/model/OppgaveopprettelseTest.kt | 88 +++++++++++- 17 files changed, 546 insertions(+), 15 deletions(-) create mode 100644 src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.kt create mode 100644 src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/OmsorgsyterHarIkkeAndreBarnGodskrevetAnnenForelderDb.kt create mode 100644 src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnTest.kt diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingRepo.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingRepo.kt index 69956a0d..f78651ab 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingRepo.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingRepo.kt @@ -289,6 +289,24 @@ class KontrollbehandlingRepo( ).toDomain() } + fun finnForOmsorgsytersAndreBarn( + omsorgsyter: String, + ar: Int, + andreBarnEnnOmsorgsmottaker: List, + referanse: String, + ): List { + return jdbcTemplate.query( + """select * from kontrollbehandling where omsorgsyter <> :omsorgsyter and omsorgs_ar = :ar and omsorgsmottaker in (:andrebarn) and referanse = :referanse""", + mapOf( + "omsorgsyter" to omsorgsyter, + "ar" to ar, + "andrebarn" to andreBarnEnnOmsorgsmottaker.ifEmpty { "('')" }, + "referanse" to referanse, + ), + BehandlingRowMapper() + ).toDomain() + } + internal class KontrollbehandlingRowMapper : RowMapper { override fun mapRow(rs: ResultSet, rowNum: Int): Kontrollbehandling { diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingServiceImpl.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingServiceImpl.kt index 8acce589..b27f0c54 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingServiceImpl.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/kontrollbehandling/KontrollbehandlingServiceImpl.kt @@ -38,18 +38,27 @@ class KontrollbehandlingServiceImpl( grunnlag = it, finnForOmsorgsyterOgÅr = { kontrollbehandlingRepo.finnForOmsorgsyterOgAr( - it.omsorgsyter.fnr, - it.omsorgsAr, - kontrollbehandling.referanse, + fnr = it.omsorgsyter.fnr, + ar = it.omsorgsAr, + referanse = kontrollbehandling.referanse, ) }, finnForOmsorgsmottakerOgÅr = { kontrollbehandlingRepo.finnForOmsorgsmottakerOgAr( - it.omsorgsmottaker.fnr, - it.omsorgsAr, - kontrollbehandling.referanse, + omsorgsmottaker = it.omsorgsmottaker.fnr, + ar = it.omsorgsAr, + referanse = kontrollbehandling.referanse, ) }, + finnForOmsorgsytersAndreBarnOgÅr = { + kontrollbehandlingRepo.finnForOmsorgsytersAndreBarn( + omsorgsyter = it.omsorgsyter.fnr, + ar = it.omsorgsAr, + andreBarnEnnOmsorgsmottaker = it.omsorgsyter.finnAndreBarnEnn(it.omsorgsmottaker.fnr) + .map { it.ident }, + referanse = kontrollbehandling.referanse, + ) + } ), meldingId = kontrollbehandling.kontrollmeldingId ) diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsarbeid/metrics/OmsorgsarbeidProcessingMetrikker.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsarbeid/metrics/OmsorgsarbeidProcessingMetrikker.kt index dd14c0c1..2b9c7c4b 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsarbeid/metrics/OmsorgsarbeidProcessingMetrikker.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsarbeid/metrics/OmsorgsarbeidProcessingMetrikker.kt @@ -7,6 +7,7 @@ import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.oms import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OgVurdering import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsmottakerOppfyllerAlderskravForBarnetrygd import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsmottakerOppfyllerAlderskravForHjelpestønad +import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningKanKunGodskrivesEnOmsorgsyterPerÅr import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningKanKunGodskrivesForEtBarnPerÅr import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsyterErForelderTilMottakerAvHjelpestønad @@ -53,6 +54,7 @@ class OmsorgsarbeidProcessingMetrikker(registry: MeterRegistry) : Metrikker List?): List? { @@ -80,6 +82,7 @@ class OmsorgsarbeidProcessingMetrikker(registry: MeterRegistry) : Metrikker omsorgsyterErIkkeOmsorgsmottaker.increment() is OmsorgsyterHarIkkeDødsdato.Vurdering -> omsorgsyterHarDødsdato.increment() is OmsorgsyterMottarIkkePensjonEllerUføretrygdIEøs.Vurdering -> omsorgsyterMottarIkkePensjonEllerUføretrygdIEøs.increment() + is OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering -> omsorgsytersBarnIkkeGodskrevetAndreOmsorgsytere.increment() } } } diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Behandling.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Behandling.kt index fb56cd3e..5fa1442a 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Behandling.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Behandling.kt @@ -67,7 +67,8 @@ data class Behandling( vurderVilkår.OmsorgsyterErMedlemIFolketrygden(), vurderVilkår.OmsorgsyterErIkkeOmsorgsmottaker(), vurderVilkår.OmsorgsyterHarIkkeDødsdato(), - vurderVilkår.OmsorgsyterMottarPensjonEllerUføretrygdIEøs() + vurderVilkår.OmsorgsyterMottarPensjonEllerUføretrygdIEøs(), + vurderVilkår.OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn(), ) } } \ No newline at end of file diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Familierelasjoner.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Familierelasjoner.kt index a7e54e5d..9a2cbe4f 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Familierelasjoner.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Familierelasjoner.kt @@ -16,6 +16,14 @@ data class Familierelasjoner( return relasjoner.singleOrNull { it.ident.ident == fnr }?.erBarn() ?: false } + fun finnBarn(): List { + return relasjoner.filter { it.erBarn() }.map { it.ident } + } + + fun finnAndreBarnEnn(eksklusiv: String): List { + return relasjoner.filter { it.erBarn() }.map { it.ident }.filterNot { it.ident == eksklusiv } + } + fun finnForeldre(): Foreldre { val far = relasjoner.singleOrNull { it.erFar() } val mor = relasjoner.singleOrNull { it.erMor() } diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/JuridiskHenvisning.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/JuridiskHenvisning.kt index cd440e3c..16dcabac 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/JuridiskHenvisning.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/JuridiskHenvisning.kt @@ -108,6 +108,17 @@ sealed class JuridiskHenvisning( tekst = "Forhøyet hjelpestønad ytes til et medlem under 18 år som har vesentlig større behov for tilsyn, pleie og annen hjelp enn det som hjelpestønad etter § 6-4 dekker" ) + data object Forskrift_Om_Alderspensjon_I_Folketrygden_Kap_3_Paragraf_3_Første_Ledd_Første_Punktum : + JuridiskHenvisning( + kortTittel = "Forskrift om alderspensjon i folketrygden", + dato = "FOR-2009-12-22-1810", + kapittel = 3, + paragraf = 3, + ledd = 1, + punktum = 1, + tekst = "Med omsorgsyter menes en person som har den daglige omsorgen for barn og foreldreansvaret etter barneloven." + ) + data object Forskrift_Om_Alderspensjon_I_Folketrygden_Kap_3_Paragraf_4_Første_Ledd_Første_Punktum : JuridiskHenvisning( kortTittel = "Forskrift om alderspensjon i folketrygden", diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.kt new file mode 100644 index 00000000..48d9c73a --- /dev/null +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.kt @@ -0,0 +1,73 @@ +package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model + +import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.oppgave.model.Oppgave +import java.util.UUID + +object OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn : + ParagrafVilkår() { + override fun vilkarsVurder(grunnlag: Grunnlag): Vurdering { + return Vurdering( + grunnlag = grunnlag, + utfall = bestemUtfall(grunnlag), + ) + } + + override fun > T.bestemUtfall(grunnlag: Grunnlag): VilkårsvurderingUtfall { + return setOf( + JuridiskHenvisning.Forskrift_Om_Alderspensjon_I_Folketrygden_Kap_3_Paragraf_3_Første_Ledd_Første_Punktum, + JuridiskHenvisning.Forskrift_Om_Alderspensjon_I_Folketrygden_Kap_3_Paragraf_4_Første_Ledd_Første_Punktum, + ).let { referanser -> + when { + grunnlag.erManuell() -> { + VilkårsvurderingUtfall.Ubestemt(referanser) + } + + else -> { + VilkårsvurderingUtfall.Innvilget.Vilkår(referanser) + } + } + } + } + + data class Vurdering( + override val grunnlag: Grunnlag, + override val utfall: VilkårsvurderingUtfall + ) : ParagrafVurdering() { + override fun hentOppgaveopplysninger(behandling: FullførtBehandling): Oppgaveopplysninger { + return Oppgaveopplysninger.Generell( + oppgavemottaker = behandling.omsorgsyter, + oppgaveTekst = Oppgave.annenForelderInnvilgetOmsorgsopptjeningForAnnetFellesbarn( + omsorgsmottaker = behandling.omsorgsmottaker, + annenForelderOgBarn = grunnlag.finnManuelle().map { it.omsorgsyter to it.omsorgsmottaker }.toSet() + ) + ) + } + } + + data class Grunnlag( + val omsorgsmottaker: String, + val omsorgsår: Int, + val behandlinger: List + ) : ParagrafGrunnlag() { + init { + require(behandlinger.none { it.omsorgsmottaker == omsorgsmottaker }) { "Skal ikke inneholde behandlinger for omsorgsmottaker" } + } + + data class FullførtBehandlingForAnnenOmsorgsmottaker( + val behandlingsId: UUID, + val omsorgsyter: String, + val omsorgsmottaker: String, + val omsorgsår: Int, + val erForelderTilOmsorgsmottaker: Boolean, + val utfall: BehandlingUtfall + ) + + fun erManuell(): Boolean { + return finnManuelle().isNotEmpty() + } + + fun finnManuelle(): List { + return behandlinger.filter { it.omsorgsår == omsorgsår && it.erForelderTilOmsorgsmottaker && (it.utfall.erInnvilget() || it.utfall.erManuell()) } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Person.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Person.kt index c3ae3d78..f1eb8dd9 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Person.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/Person.kt @@ -1,6 +1,5 @@ package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model -import java.lang.RuntimeException import java.time.LocalDate import java.time.Month @@ -43,6 +42,14 @@ class Person( return familierelasjoner.finnForeldre() } + fun finnBarn(): List { + return familierelasjoner.finnBarn() + } + + fun finnAndreBarnEnn(eksklusiv: String): List { + return finnBarn().filterNot { it.ident == eksklusiv } + } + fun identifisertAv(fnr: String): Boolean { return identhistorikk.identifiseresAv(fnr) } diff --git "a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/VurderVilk\303\245r.kt" "b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/VurderVilk\303\245r.kt" index 9dd04fa1..d7ad5845 100644 --- "a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/VurderVilk\303\245r.kt" +++ "b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/VurderVilk\303\245r.kt" @@ -15,12 +15,14 @@ interface VurderVilkår { fun OmsorgsyterErIkkeOmsorgsmottaker(): OmsorgsyterErikkeOmsorgsmottaker.Vurdering fun OmsorgsyterHarIkkeDødsdato(): OmsorgsyterHarIkkeDødsdato.Vurdering fun OmsorgsyterMottarPensjonEllerUføretrygdIEøs(): OmsorgsyterMottarIkkePensjonEllerUføretrygdIEøs.Vurdering + fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering } internal class VilkårsvurderingFactory( private val grunnlag: OmsorgsopptjeningGrunnlag, private val finnForOmsorgsyterOgÅr: () -> List, - private val finnForOmsorgsmottakerOgÅr: () -> List + private val finnForOmsorgsmottakerOgÅr: () -> List, + private val finnForOmsorgsytersAndreBarnOgÅr: () -> List, ) : VurderVilkår { override fun OmsorgsyterOppfyllerAlderskrav(): OmsorgsyterOppfyllerAlderskrav.Vurdering { return OmsorgsyterOppfyllerAlderskrav.vilkarsVurder(grunnlag.forAldersvurderingOmsorgsyter()) @@ -86,6 +88,30 @@ internal class VilkårsvurderingFactory( return OmsorgsyterMottarIkkePensjonEllerUføretrygdIEøs.vilkarsVurder(grunnlag.forOmsorgsyterMottarIkkePensjonEllerUføretrygdIEøs()) } + override fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + finnForOmsorgsytersAndreBarnOgÅr().map { + require(it.omsorgsyter != grunnlag.omsorgsyter.fnr) { "Forventer kun behandlinger for andre omsorgsytere" } + require(it.omsorgsmottaker != grunnlag.omsorgsmottaker.fnr) { "Forventer kun behandlinger for andre omsorgsmottakere" } + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = it.id, + omsorgsyter = it.omsorgsyter, + omsorgsmottaker = it.omsorgsmottaker, + omsorgsår = it.omsorgsAr, + erForelderTilOmsorgsmottaker = it.grunnlag.omsorgsyter.erForelderAv(grunnlag.omsorgsmottaker.fnr), + utfall = it.utfall, + ) + }.let { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = grunnlag.omsorgsmottaker.fnr, + omsorgsår = grunnlag.omsorgsAr, + behandlinger = it + + ) + } + ) + } + override fun OmsorgsyterHarTilstrekkeligOmsorgsarbeid(): OmsorgsyterHarTilstrekkeligOmsorgsarbeid.Vurdering { return OmsorgsyterHarTilstrekkeligOmsorgsarbeid.vilkarsVurder(grunnlag.forTilstrekkeligOmsorgsarbeid()) diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/BehandlingRepo.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/BehandlingRepo.kt index 3c8208f2..84ed104d 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/BehandlingRepo.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/BehandlingRepo.kt @@ -95,6 +95,22 @@ class BehandlingRepo( BehandlingRowMapper() ).toDomain() } + + fun finnForOmsorgsytersAndreBarn( + omsorgsyter: String, + ar: Int, + andreBarnEnnOmsorgsmottaker: List + ): List { + return jdbcTemplate.query( + """select * from behandling where omsorgsyter <> :omsorgsyter and omsorgs_ar = :ar and omsorgsmottaker in (:andrebarn)""", + mapOf( + "omsorgsyter" to omsorgsyter, + "ar" to ar, + "andrebarn" to andreBarnEnnOmsorgsmottaker.ifEmpty { "('')" } + ), + BehandlingRowMapper() + ).toDomain() + } } internal class BehandlingRowMapper : RowMapper { diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/OmsorgsyterHarIkkeAndreBarnGodskrevetAnnenForelderDb.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/OmsorgsyterHarIkkeAndreBarnGodskrevetAnnenForelderDb.kt new file mode 100644 index 00000000..f98f6709 --- /dev/null +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/OmsorgsyterHarIkkeAndreBarnGodskrevetAnnenForelderDb.kt @@ -0,0 +1,96 @@ +package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.repository + +import com.fasterxml.jackson.annotation.JsonTypeInfo +import com.fasterxml.jackson.annotation.JsonTypeName +import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn +import java.util.UUID + +@JsonTypeName("OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDb") +internal data class OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDb( + val grunnlag: OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbGrunnlag, + val utfall: VilkårsvurderingUtfallDb, +) : VilkårsvurderingDb() + + +internal fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering.toDb(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDb { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDb( + grunnlag = grunnlag.toDb(), + utfall = utfall.toDb() + ) +} + +internal fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDb.toDomain(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering( + grunnlag = grunnlag.toDomain(), + utfall = utfall.toDomain() + ) +} + + +@JsonTypeName("OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbGrunnlag") +internal data class OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbGrunnlag( + val omsorgsmottaker: String, + val omsorgsAr: Int, + val behandlinger: List +) : GrunnlagVilkårsvurderingDb() + +internal fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.toDb(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbGrunnlag { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbGrunnlag( + omsorgsmottaker = omsorgsmottaker, + omsorgsAr = omsorgsår, + behandlinger = behandlinger.toDb() + ) +} + +internal fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbGrunnlag.toDomain(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = omsorgsmottaker, + omsorgsår = omsorgsAr, + behandlinger = behandlinger.toDomain() + ) +} + +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.PROPERTY, + property = "type", +) +@JsonTypeName("OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbFullførtbehandling") +internal data class OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbFullførtbehandling( + val behandlingsId: UUID, + val omsorgsyter: String, + val omsorgsmottaker: String, + val år: Int, + val erForelderTilOmsorgsmottaker: Boolean, + val utfall: BehandlingsutfallDb, +) + +internal fun List.toDb(): List { + return map { it.toDb() } +} + +internal fun List.toDomain(): List { + return map { it.toDomain() } +} + +internal fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker.toDb(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbFullførtbehandling { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbFullførtbehandling( + behandlingsId = behandlingsId, + omsorgsyter = omsorgsyter, + omsorgsmottaker = omsorgsmottaker, + år = omsorgsår, + erForelderTilOmsorgsmottaker = erForelderTilOmsorgsmottaker, + utfall = utfall.toDb(), + ) +} + +internal fun OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDbFullførtbehandling.toDomain(): OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker { + return OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = behandlingsId, + omsorgsyter = omsorgsyter, + omsorgsmottaker = omsorgsmottaker, + omsorgsår = år, + erForelderTilOmsorgsmottaker = erForelderTilOmsorgsmottaker, + utfall = utfall.toDomain() + ) +} \ No newline at end of file diff --git "a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/Vilk\303\245rsvurderingDb.kt" "b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/Vilk\303\245rsvurderingDb.kt" index 4c022a81..e09cf83e 100644 --- "a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/Vilk\303\245rsvurderingDb.kt" +++ "b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/repository/Vilk\303\245rsvurderingDb.kt" @@ -5,6 +5,7 @@ import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.oms import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OgVurdering import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsmottakerOppfyllerAlderskravForBarnetrygd import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsmottakerOppfyllerAlderskravForHjelpestønad +import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningKanKunGodskrivesEnOmsorgsyterPerÅr import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsopptjeningKanKunGodskrivesForEtBarnPerÅr import no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model.OmsorgsyterErForelderTilMottakerAvHjelpestønad @@ -45,6 +46,7 @@ internal fun VilkarsVurdering<*>.toDb(): VilkårsvurderingDb { is OmsorgsyterErikkeOmsorgsmottaker.Vurdering -> toDb() is OmsorgsyterHarIkkeDødsdato.Vurdering -> toDb() is OmsorgsyterMottarIkkePensjonEllerUføretrygdIEøs.Vurdering -> toDb() + is OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Vurdering -> toDb() } } @@ -81,5 +83,6 @@ internal fun VilkårsvurderingDb.toDomain(): VilkarsVurdering<*> { is OmsorgsyterErIkkeOmsorgsmottakerDb -> toDomain() is OmsorgsyterHarIkkeDødsdatoDb -> toDomain() is OmsorgsyterMottarIkkePensjonEllerUføretrygdIEøsDb -> toDomain() + is OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnDb -> toDomain() } } diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt index 68eccbf7..60800c5a 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/Oppgave.kt @@ -42,6 +42,15 @@ sealed class Oppgave { fun eøsSakMottarPensjonEllerUføretrygd(omsorgsmottaker: String): String { return """Godskriving omsorgspoeng: Manuell behandling. Godskriving for barn med fnr: $omsorgsmottaker må vurderes manuelt pga EØS-sak og mottar pensjon eller uføretrygd""" } + + fun annenForelderInnvilgetOmsorgsopptjeningForAnnetFellesbarn( + omsorgsmottaker: String, + annenForelderOgBarn: Set> + ): String { + val andreOmsorgsytere = annenForelderOgBarn.joinToString(separator = ",") { it.first } + val andreOmsorgsmottakere = annenForelderOgBarn.joinToString(separator = ",") { it.second } + return """Godskriving omsorgspoeng: Manuell behandling. Godskriving for barn med fnr: $omsorgsmottaker må vurderes manuelt pga at andre foreldre: $andreOmsorgsytere mottar barnetrygd for felles barn: $andreOmsorgsmottakere""" + } } /** diff --git a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingServiceImpl.kt b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingServiceImpl.kt index ff143f17..3bdab323 100644 --- a/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingServiceImpl.kt +++ b/src/main/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/persongrunnlag/model/PersongrunnlagMeldingServiceImpl.kt @@ -63,7 +63,7 @@ internal class PersongrunnlagMeldingServiceImpl( return FullførteBehandlinger( behandlinger = omsorgsopptjeningsgrunnlagService.lagOmsorgsopptjeningsgrunnlag(melding) .filter { grunnlag -> gyldigOpptjeningsår.erGyldig(grunnlag.omsorgsAr) } - .map { + .map { it -> behandlingRepo.persist( Behandling( grunnlag = it, @@ -71,16 +71,24 @@ internal class PersongrunnlagMeldingServiceImpl( grunnlag = it, finnForOmsorgsyterOgÅr = { behandlingRepo.finnForOmsorgsyterOgAr( - it.omsorgsyter.fnr, - it.omsorgsAr + fnr = it.omsorgsyter.fnr, + ar = it.omsorgsAr ) }, finnForOmsorgsmottakerOgÅr = { behandlingRepo.finnForOmsorgsmottakerOgAr( - it.omsorgsmottaker.fnr, - it.omsorgsAr + omsorgsmottaker = it.omsorgsmottaker.fnr, + ar = it.omsorgsAr ) }, + finnForOmsorgsytersAndreBarnOgÅr = { + behandlingRepo.finnForOmsorgsytersAndreBarn( + omsorgsyter = it.omsorgsyter.fnr, + ar = it.omsorgsAr, + andreBarnEnnOmsorgsmottaker = it.omsorgsyter.finnAndreBarnEnn(it.omsorgsmottaker.fnr) + .map { it.ident } + ) + } ), meldingId = melding.id ) diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/FamilierelasjonerTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/FamilierelasjonerTest.kt index 7a4919b8..59d4a610 100644 --- a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/FamilierelasjonerTest.kt +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/FamilierelasjonerTest.kt @@ -20,6 +20,14 @@ class FamilierelasjonerTest { ident = Ident.FolkeregisterIdent.Gjeldende("barn"), relasjon = Familierelasjon.Relasjon.BARN ), + Familierelasjon( + ident = Ident.FolkeregisterIdent.Gjeldende("barn2"), + relasjon = Familierelasjon.Relasjon.BARN + ), + Familierelasjon( + ident = Ident.IDENT_UKJENT, + relasjon = Familierelasjon.Relasjon.BARN + ), ) ).also { assertThat(it.erBarn("barn")).isTrue() @@ -34,6 +42,19 @@ class FamilierelasjonerTest { mor = Ident.FolkeregisterIdent.Gjeldende(ident = "mor") ) ) + assertThat(it.finnBarn()).isEqualTo( + listOf( + Ident.FolkeregisterIdent.Gjeldende("barn"), + Ident.FolkeregisterIdent.Gjeldende("barn2"), + Ident.Ukjent, + ) + ) + assertThat(it.finnAndreBarnEnn("barn")).isEqualTo( + listOf( + Ident.FolkeregisterIdent.Gjeldende("barn2"), + Ident.Ukjent, + ) + ) } } @@ -67,6 +88,11 @@ class FamilierelasjonerTest { mor = Ident.FolkeregisterIdent.Gjeldende(ident = "mor") ) ) + assertThat(it.finnBarn()).isEqualTo( + listOf( + Ident.FolkeregisterIdent.Gjeldende("barn") + ) + ) } } diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnTest.kt new file mode 100644 index 00000000..25992f61 --- /dev/null +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/omsorgsopptjening/model/OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnTest.kt @@ -0,0 +1,131 @@ +package no.nav.pensjon.opptjening.omsorgsopptjening.bestem.pensjonsopptjening.omsorgsopptjening.model + +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.assertThrows +import java.util.UUID + +class OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarnTest { + @Test + fun `ubestemt dersom omsorgsyter har andre barn som er innvilget en annen forelder for samme år`() { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = "barn1", + omsorgsår = 2024, + behandlinger = listOf( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = UUID.randomUUID(), + omsorgsyter = "far", + omsorgsmottaker = "barn2", + omsorgsår = 2024, + erForelderTilOmsorgsmottaker = true, + utfall = BehandlingUtfall.Innvilget + ) + ) + ) + ).let { + Assertions.assertInstanceOf(VilkårsvurderingUtfall.Ubestemt::class.java, it.utfall) + } + } + + @Test + fun `ubestemt dersom omsorgsyter har andre barn med manuell behandling for en annen forelder for samme år`() { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = "barn1", + omsorgsår = 2024, + behandlinger = listOf( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = UUID.randomUUID(), + omsorgsyter = "far", + omsorgsmottaker = "barn2", + omsorgsår = 2024, + erForelderTilOmsorgsmottaker = true, + utfall = BehandlingUtfall.Manuell + ) + ) + ) + ).let { + Assertions.assertInstanceOf(VilkårsvurderingUtfall.Ubestemt::class.java, it.utfall) + } + } + + @Test + fun `innvilget dersom omsorgsyter har andre barn som er innvilget for annen omsorgsyter som ikke er forelder til omsorgsmottaker for samme år`() { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = "barn1", + omsorgsår = 2024, + behandlinger = listOf( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = UUID.randomUUID(), + omsorgsyter = "far", + omsorgsmottaker = "barn2", + omsorgsår = 2024, + erForelderTilOmsorgsmottaker = false, + utfall = BehandlingUtfall.Innvilget + ) + ) + ) + ).let { + Assertions.assertInstanceOf(VilkårsvurderingUtfall.Innvilget::class.java, it.utfall) + } + } + + @Test + fun `innvilget dersom omsorgsyter har andre barn som er innvilget for annen omsorgsyter som ikke er forelder til omsorgsmottaker for et annet år`() { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = "barn1", + omsorgsår = 2025, + behandlinger = listOf( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = UUID.randomUUID(), + omsorgsyter = "far", + omsorgsmottaker = "barn2", + omsorgsår = 2024, + erForelderTilOmsorgsmottaker = true, + utfall = BehandlingUtfall.Innvilget + ) + ) + ) + ).let { + Assertions.assertInstanceOf(VilkårsvurderingUtfall.Innvilget::class.java, it.utfall) + } + } + + @Test + fun `innvilget dersom omsorgsyter ikke har andre barn som er innvilget for annen omsorgsyter`() { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = "barn1", + omsorgsår = 2024, + behandlinger = emptyList() + ) + ).let { + Assertions.assertInstanceOf(VilkårsvurderingUtfall.Innvilget::class.java, it.utfall) + } + } + + @Test + fun `kaster exception hvis omsorgsmottaker er lik annen omsorgsmottaker`() { + assertThrows { + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.vilkarsVurder( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag( + omsorgsmottaker = "barn1", + omsorgsår = 2024, + behandlinger = listOf( + OmsorgsopptjeningIkkeInnvilgetAnnetFellesbarn.Grunnlag.FullførtBehandlingForAnnenOmsorgsmottaker( + behandlingsId = UUID.randomUUID(), + omsorgsyter = "far", + omsorgsmottaker = "barn1", + omsorgsår = 2024, + erForelderTilOmsorgsmottaker = false, + utfall = BehandlingUtfall.Innvilget + ) + ) + ) + ) + } + } +} \ No newline at end of file diff --git a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt index fd4e4a3e..ff3c5ed0 100644 --- a/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt +++ b/src/test/kotlin/no/nav/pensjon/opptjening/omsorgsopptjening/bestem/pensjonsopptjening/oppgave/model/OppgaveopprettelseTest.kt @@ -323,7 +323,10 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { ).isEqualTo( OppgaveDetaljer.MottakerOgTekst( oppgavemottaker = "04010012797", - oppgavetekst = setOf("""Godskr. omsorgspoeng, flere mottakere: Flere personer som har mottatt barnetrygd samme år for barnet med fnr 01052012345 i barnets fødselsår. Vurder hvem som skal ha omsorgspoengene.""") + oppgavetekst = setOf( + "Godskriving omsorgspoeng: Manuell behandling. Godskriving for barn med fnr: 01052012345 må vurderes manuelt pga at andre foreldre: 12345678910 mottar barnetrygd for felles barn: 07081812345", + "Godskr. omsorgspoeng, flere mottakere: Flere personer som har mottatt barnetrygd samme år for barnet med fnr 01052012345 i barnets fødselsår. Vurder hvem som skal ha omsorgspoengene." + ) ) ) } @@ -595,4 +598,87 @@ class OppgaveopprettelseTest : SpringContextTest.NoKafka() { } } } + + @Test + fun `manuell behandling med oppgave dersom det er innvilget opptjening for fellesbarn omsorgsyter ikke mottar barnetrygd for`() { + wiremock.stubForPdlTransformer() + willAnswer { true }.given(gyldigOpptjeningår).erGyldig(2020) + wiremock.ingenUnntaksperioderForMedlemskap() + wiremock.ingenLøpendeAlderspensjon() + wiremock.ingenLøpendeUføretrgyd() + + repo.lagre( + PersongrunnlagMelding.Lest( + innhold = PersongrunnlagMeldingKafka( + omsorgsyter = "12345678910", + persongrunnlag = listOf( + PersongrunnlagMeldingKafka.Persongrunnlag( + omsorgsyter = "12345678910", + omsorgsperioder = listOf( + PersongrunnlagMeldingKafka.Omsorgsperiode( + fom = januar(2020), + tom = desember(2020), + omsorgstype = Omsorgstype.FULL_BARNETRYGD, + omsorgsmottaker = "07081812345", + kilde = Kilde.BARNETRYGD, + utbetalt = 7234, + landstilknytning = Landstilknytning.NORGE + ), + ), + hjelpestønadsperioder = emptyList(), + ), + ), + rådata = Rådata(), + innlesingId = InnlesingId.generate(), + correlationId = CorrelationId.generate(), + ) + ), + ) + + persongrunnlagMeldingProcessingService.processAndExpectResult().single().let { result -> + result.alle().single().also { behandling -> assertThat(behandling.erInnvilget()).isTrue() } + } + + repo.lagre( + PersongrunnlagMelding.Lest( + innhold = PersongrunnlagMeldingKafka( + omsorgsyter = "04010012797", + persongrunnlag = listOf( + PersongrunnlagMeldingKafka.Persongrunnlag( + omsorgsyter = "04010012797", + omsorgsperioder = listOf( + PersongrunnlagMeldingKafka.Omsorgsperiode( + fom = januar(2021), + tom = desember(2021), + omsorgstype = Omsorgstype.FULL_BARNETRYGD, + omsorgsmottaker = "01122012345", + kilde = Kilde.BARNETRYGD, + utbetalt = 7234, + landstilknytning = Landstilknytning.NORGE + ), + ), + hjelpestønadsperioder = emptyList(), + ), + ), + rådata = Rådata(), + innlesingId = InnlesingId.generate(), + correlationId = CorrelationId.generate(), + ) + ), + ) + + persongrunnlagMeldingProcessingService.processAndExpectResult().single().let { result -> + result.alle().single().also { behandling -> + assertThat(behandling.erManuell()).isTrue() + oppgaveRepo.findForBehandling(behandling.id).single().also { oppgave -> + assertThat(oppgave.detaljer).isEqualTo( + OppgaveDetaljer.MottakerOgTekst( + oppgavemottaker = "04010012797", + oppgavetekst = setOf("""Godskriving omsorgspoeng: Manuell behandling. Godskriving for barn med fnr: 01122012345 må vurderes manuelt pga at andre foreldre: 12345678910 mottar barnetrygd for felles barn: 07081812345""") + ) + ) + } + } + } + } } \ No newline at end of file