diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/BehandlingControllerV2.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/BehandlingControllerV2.kt index 09e77624..b9899709 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/BehandlingControllerV2.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v2/BehandlingControllerV2.kt @@ -19,7 +19,6 @@ import no.nav.bidrag.behandling.dto.v2.behandling.AktivereGrunnlagResponseV2 import no.nav.bidrag.behandling.dto.v2.behandling.BehandlingDetaljerDtoV2 import no.nav.bidrag.behandling.dto.v2.behandling.BehandlingDtoV2 import no.nav.bidrag.behandling.dto.v2.behandling.KanBehandlesINyLøsningRequest -import no.nav.bidrag.behandling.dto.v2.behandling.tilType import no.nav.bidrag.behandling.dto.v2.boforhold.OppdatereBoforholdRequestV2 import no.nav.bidrag.behandling.dto.v2.boforhold.OppdatereBoforholdResponse import no.nav.bidrag.behandling.dto.v2.inntekt.OppdatereInntektRequest diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt index 11e8ac39..b0c59557 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt @@ -30,7 +30,7 @@ import no.nav.bidrag.behandling.transformers.behandling.hentAlleBearbeidaBarneti import no.nav.bidrag.behandling.transformers.underhold.aktivereBarnetilsynHvisIngenEndringerMåAksepteres import no.nav.bidrag.behandling.transformers.underhold.harAndreBarnIUnderhold import no.nav.bidrag.behandling.transformers.underhold.henteOgValidereUnderholdskostnad -import no.nav.bidrag.behandling.transformers.underhold.justerePerioderEtterVirkningsdato +import no.nav.bidrag.behandling.transformers.underhold.justerePerioder import no.nav.bidrag.behandling.transformers.underhold.justerePerioderForBearbeidaBarnetilsynEtterVirkningstidspunkt import no.nav.bidrag.behandling.transformers.underhold.tilBarnetilsyn import no.nav.bidrag.behandling.transformers.underhold.tilStønadTilBarnetilsynDto @@ -92,10 +92,10 @@ class UnderholdService( ) { if (!harTilsynsordning && ( - underholdskostnad.barnetilsyn.isNotEmpty() || - underholdskostnad.tilleggsstønad.isNotEmpty() || - underholdskostnad.faktiskeTilsynsutgifter.isNotEmpty() - ) + underholdskostnad.barnetilsyn.isNotEmpty() || + underholdskostnad.tilleggsstønad.isNotEmpty() || + underholdskostnad.faktiskeTilsynsutgifter.isNotEmpty() + ) ) { throw HttpClientErrorException( HttpStatus.BAD_REQUEST, @@ -190,11 +190,11 @@ class UnderholdService( fom = request.periode.fom, tom = request.periode.tom, under_skolealder = - when (request.skolealder) { - Skolealder.UNDER -> true - Skolealder.OVER -> false - else -> null - }, + when (request.skolealder) { + Skolealder.UNDER -> true + Skolealder.OVER -> false + else -> null + }, omfang = request.tilsynstype ?: Tilsynstype.IKKE_ANGITT, kilde = Kilde.MANUELL, underholdskostnad = underholdskostnad, @@ -211,7 +211,7 @@ class UnderholdService( return OppdatereUnderholdResponse( stønadTilBarnetilsyn = oppdatertBarnetilsyn.tilStønadTilBarnetilsynDto(), underholdskostnad = - dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), + dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(), ) } @@ -278,8 +278,8 @@ class UnderholdService( fun tilpasseUnderholdEtterVirkningsdato(behandling: Behandling) { tilpasseAktiveBarnetilsynsgrunnlagEtterVirkningsdato(behandling) tilpasseIkkeaktiveBarnetilsynsgrunnlagEtterVirkningsdato(behandling) + oppdatereUnderholdsperioderEtterEndretVirkningsdato(behandling) behandling.aktivereBarnetilsynHvisIngenEndringerMåAksepteres() - behandling.underholdskostnader.justerePerioderEtterVirkningsdato() } @Transactional @@ -320,9 +320,9 @@ class UnderholdService( return OppdatereUnderholdResponse( faktiskTilsynsutgift = dtomapper.tilFaktiskTilsynsutgiftDto(oppdatertFaktiskTilsynsutgift), underholdskostnad = - dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn( - underholdskostnad.behandling, - ), + dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn( + underholdskostnad.behandling, + ), valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(), ) } @@ -362,7 +362,7 @@ class UnderholdService( return OppdatereUnderholdResponse( tilleggsstønad = dtomapper.tilTilleggsstønadDto(oppdatertTilleggsstønad), underholdskostnad = - dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), + dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling), valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(), ) } @@ -443,6 +443,10 @@ class UnderholdService( return u } + private fun oppdatereUnderholdsperioderEtterEndretVirkningsdato(b: Behandling) { + b.underholdskostnader.forEach { it.justerePerioder() } + } + private fun tilpasseIkkeaktiveBarnetilsynsgrunnlagEtterVirkningsdato(behandling: Behandling) { val grunnlagsdatatype = Grunnlagsdatatype.BARNETILSYN val sisteAktiveGrunnlag = diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Utvidelser.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Utvidelser.kt index f50c14e6..4fe83aeb 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Utvidelser.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/underhold/Utvidelser.kt @@ -79,8 +79,6 @@ fun BarnetilsynGrunnlagDto.tilBarnetilsyn(u: Underholdskostnad): Barnetilsyn { ) } -fun Set.justerePerioderEtterVirkningsdato() = forEach { it.justerePerioder() } - fun Grunnlag.justerePerioderForBearbeidaBarnetilsynEtterVirkningstidspunkt(overskriveAktiverte: Boolean = true) { val barnetilsyn = konvertereData>()!! @@ -104,7 +102,7 @@ fun Grunnlag.justerePerioderForBearbeidaBarnetilsynEtterVirkningstidspunkt(overs } } -private fun Underholdskostnad.justerePerioder() { +fun Underholdskostnad.justerePerioder() { val virkningsdato = behandling.virkningstidspunktEllerSøktFomDato barnetilsyn.filter { it.fom < virkningsdato }.forEach { periode -> @@ -152,7 +150,10 @@ private fun Behandling.overskriveBearbeidaBarnetilsynsgrunnlag( ) } - grunnlagSomSkalOverskrives.find { it.gjelder == gjelder }?.let { it.data = tilJson(perioder) } + grunnlagSomSkalOverskrives.find { it.gjelder == gjelder }?.let { + it.data = tilJson(perioder) + it.aktiv = it.aktiv?.let { LocalDateTime.now() } + } } fun Behandling.aktivereBarnetilsynHvisIngenEndringerMåAksepteres() { diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt index 033494a7..d98d4dc3 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -2,6 +2,7 @@ package no.nav.bidrag.behandling.service import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.comparables.shouldBeLessThan import io.kotest.matchers.equals.shouldBeEqual import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull @@ -42,7 +43,7 @@ import no.nav.bidrag.behandling.transformers.boforhold.tilSivilstandRequest import no.nav.bidrag.behandling.transformers.tilType import no.nav.bidrag.behandling.utils.hentInntektForBarn import no.nav.bidrag.behandling.utils.testdata.TestdataManager -import no.nav.bidrag.behandling.utils.testdata.leggeTilGjeldendeBarnetillegg +import no.nav.bidrag.behandling.utils.testdata.leggeTilGjeldendeBarnetilsyn import no.nav.bidrag.behandling.utils.testdata.leggeTilNyttBarnetilsyn import no.nav.bidrag.behandling.utils.testdata.oppretteArbeidsforhold import no.nav.bidrag.behandling.utils.testdata.oppretteBehandlingRoller @@ -246,7 +247,7 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingDto.inntekter.årsinntekter .filter { Inntektsrapportering.AINNTEKT_BEREGNET_3MND == it.rapporteringstype } .size shouldBe - 1 + 1 behandlingDto.feilOppståttVedSisteGrunnlagsinnhenting?.shouldHaveSize(12) } } @@ -564,7 +565,7 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingDto.inntekter.årsinntekter .filter { Inntektsrapportering.AINNTEKT_BEREGNET_3MND == it.rapporteringstype } .size shouldBe - 1 + 1 } } @@ -588,16 +589,16 @@ class BehandlingServiceTest : TestContainerRunner() { rolle = behandling.bidragsmottaker!!, type = Grunnlagsdatatype.SIVILSTAND, data = - commonObjectmapper.writeValueAsString( - setOf( - Sivilstand( - kilde = Kilde.OFFENTLIG, - periodeFom = LocalDate.now().minusYears(13), - periodeTom = null, - sivilstandskode = Sivilstandskode.GIFT_SAMBOER, - ), + commonObjectmapper.writeValueAsString( + setOf( + Sivilstand( + kilde = Kilde.OFFENTLIG, + periodeFom = LocalDate.now().minusYears(13), + periodeTom = null, + sivilstandskode = Sivilstandskode.GIFT_SAMBOER, ), ), + ), ), ) @@ -608,16 +609,16 @@ class BehandlingServiceTest : TestContainerRunner() { rolle = behandling.bidragsmottaker!!, type = Grunnlagsdatatype.SIVILSTAND, data = - commonObjectmapper.writeValueAsString( - setOf( - Sivilstand( - kilde = Kilde.OFFENTLIG, - periodeFom = LocalDate.now().minusYears(15), - periodeTom = null, - sivilstandskode = Sivilstandskode.GIFT_SAMBOER, - ), + commonObjectmapper.writeValueAsString( + setOf( + Sivilstand( + kilde = Kilde.OFFENTLIG, + periodeFom = LocalDate.now().minusYears(15), + periodeTom = null, + sivilstandskode = Sivilstandskode.GIFT_SAMBOER, ), ), + ), ), ) @@ -662,18 +663,18 @@ class BehandlingServiceTest : TestContainerRunner() { stønadstype = Stønadstype.FORSKUDD, engangsbeløpstype = null, roller = - setOf( - OpprettRolleDto( - rolletype = Rolletype.BARN, - ident = Personident(testdataBarn1.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), - OpprettRolleDto( - rolletype = Rolletype.BIDRAGSMOTTAKER, - ident = Personident(testdataBM.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), + setOf( + OpprettRolleDto( + rolletype = Rolletype.BARN, + ident = Personident(testdataBarn1.ident), + fødselsdato = LocalDate.parse("2005-01-01"), + ), + OpprettRolleDto( + rolletype = Rolletype.BIDRAGSMOTTAKER, + ident = Personident(testdataBM.ident), + fødselsdato = LocalDate.parse("2005-01-01"), ), + ), ), ) @@ -716,18 +717,18 @@ class BehandlingServiceTest : TestContainerRunner() { stønadstype = Stønadstype.FORSKUDD, engangsbeløpstype = null, roller = - setOf( - OpprettRolleDto( - rolletype = Rolletype.BARN, - ident = Personident(testdataBarn1.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), - OpprettRolleDto( - rolletype = Rolletype.BIDRAGSMOTTAKER, - ident = Personident(testdataBM.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), + setOf( + OpprettRolleDto( + rolletype = Rolletype.BARN, + ident = Personident(testdataBarn1.ident), + fødselsdato = LocalDate.parse("2005-01-01"), + ), + OpprettRolleDto( + rolletype = Rolletype.BIDRAGSMOTTAKER, + ident = Personident(testdataBM.ident), + fødselsdato = LocalDate.parse("2005-01-01"), ), + ), ), ) @@ -820,27 +821,27 @@ class BehandlingServiceTest : TestContainerRunner() { stønadstype = null, engangsbeløpstype = Engangsbeløptype.SÆRBIDRAG, kategori = - OpprettKategoriRequestDto( - Særbidragskategori.KONFIRMASJON.name, - ), + OpprettKategoriRequestDto( + Særbidragskategori.KONFIRMASJON.name, + ), roller = - setOf( - OpprettRolleDto( - rolletype = Rolletype.BARN, - ident = Personident(testdataBarn1.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), - OpprettRolleDto( - rolletype = Rolletype.BIDRAGSMOTTAKER, - ident = Personident(testdataBM.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), - OpprettRolleDto( - rolletype = Rolletype.BIDRAGSPLIKTIG, - ident = Personident(testdataBP.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), + setOf( + OpprettRolleDto( + rolletype = Rolletype.BARN, + ident = Personident(testdataBarn1.ident), + fødselsdato = LocalDate.parse("2005-01-01"), ), + OpprettRolleDto( + rolletype = Rolletype.BIDRAGSMOTTAKER, + ident = Personident(testdataBM.ident), + fødselsdato = LocalDate.parse("2005-01-01"), + ), + OpprettRolleDto( + rolletype = Rolletype.BIDRAGSPLIKTIG, + ident = Personident(testdataBP.ident), + fødselsdato = LocalDate.parse("2005-01-01"), + ), + ), ), ) @@ -884,28 +885,28 @@ class BehandlingServiceTest : TestContainerRunner() { stønadstype = null, engangsbeløpstype = Engangsbeløptype.SÆRBIDRAG, kategori = - OpprettKategoriRequestDto( - Særbidragskategori.ANNET.name, - "Dette er test", - ), + OpprettKategoriRequestDto( + Særbidragskategori.ANNET.name, + "Dette er test", + ), roller = - setOf( - OpprettRolleDto( - rolletype = Rolletype.BARN, - ident = Personident(testdataBarn1.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), - OpprettRolleDto( - rolletype = Rolletype.BIDRAGSMOTTAKER, - ident = Personident(testdataBM.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), - OpprettRolleDto( - rolletype = Rolletype.BIDRAGSPLIKTIG, - ident = Personident(testdataBP.ident), - fødselsdato = LocalDate.parse("2005-01-01"), - ), + setOf( + OpprettRolleDto( + rolletype = Rolletype.BARN, + ident = Personident(testdataBarn1.ident), + fødselsdato = LocalDate.parse("2005-01-01"), ), + OpprettRolleDto( + rolletype = Rolletype.BIDRAGSMOTTAKER, + ident = Personident(testdataBM.ident), + fødselsdato = LocalDate.parse("2005-01-01"), + ), + OpprettRolleDto( + rolletype = Rolletype.BIDRAGSPLIKTIG, + ident = Personident(testdataBP.ident), + fødselsdato = LocalDate.parse("2005-01-01"), + ), + ), ), ) @@ -948,13 +949,13 @@ class BehandlingServiceTest : TestContainerRunner() { stønadstype = Stønadstype.FORSKUDD, engangsbeløpstype = null, roller = - setOf( - OpprettRolleDto( - rolletype = Rolletype.BARN, - ident = Personident("213"), - fødselsdato = LocalDate.parse("2005-01-01"), - ), + setOf( + OpprettRolleDto( + rolletype = Rolletype.BARN, + ident = Personident("213"), + fødselsdato = LocalDate.parse("2005-01-01"), ), + ), ), ) @@ -1031,19 +1032,19 @@ class BehandlingServiceTest : TestContainerRunner() { rolle = b.bidragsmottaker!!, type = Grunnlagsdatatype.SIVILSTAND, data = - commonObjectmapper.writeValueAsString( - setOf( - SivilstandGrunnlagDto( - bekreftelsesdato = b.virkningstidspunktEllerSøktFomDato.minusYears(15), - gyldigFom = b.virkningstidspunktEllerSøktFomDato.minusYears(15), - historisk = false, - master = "Freg", - personId = b.bidragsmottaker!!.ident!!, - registrert = b.virkningstidspunktEllerSøktFomDato.minusYears(8).atStartOfDay(), - type = SivilstandskodePDL.GIFT, - ), + commonObjectmapper.writeValueAsString( + setOf( + SivilstandGrunnlagDto( + bekreftelsesdato = b.virkningstidspunktEllerSøktFomDato.minusYears(15), + gyldigFom = b.virkningstidspunktEllerSøktFomDato.minusYears(15), + historisk = false, + master = "Freg", + personId = b.bidragsmottaker!!.ident!!, + registrert = b.virkningstidspunktEllerSøktFomDato.minusYears(8).atStartOfDay(), + type = SivilstandskodePDL.GIFT, ), ), + ), ), ) @@ -1055,16 +1056,16 @@ class BehandlingServiceTest : TestContainerRunner() { rolle = b.bidragsmottaker!!, type = Grunnlagsdatatype.SIVILSTAND, data = - commonObjectmapper.writeValueAsString( - setOf( - Sivilstand( - kilde = Kilde.OFFENTLIG, - periodeFom = LocalDate.now().minusYears(15), - periodeTom = null, - sivilstandskode = Sivilstandskode.GIFT_SAMBOER, - ), + commonObjectmapper.writeValueAsString( + setOf( + Sivilstand( + kilde = Kilde.OFFENTLIG, + periodeFom = LocalDate.now().minusYears(15), + periodeTom = null, + sivilstandskode = Sivilstandskode.GIFT_SAMBOER, ), ), + ), ), ) @@ -1117,12 +1118,12 @@ class BehandlingServiceTest : TestContainerRunner() { navn = "Lyrisk Sopp", partPersonId = b.bidragsmottaker!!.ident!!, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = LocalDate.parse("2023-01-01"), - periodeTil = LocalDate.parse("2023-05-31"), - ), + listOf( + BorISammeHusstandDto( + periodeFra = LocalDate.parse("2023-01-01"), + periodeTil = LocalDate.parse("2023-05-31"), ), + ), ), RelatertPersonGrunnlagDto( relatertPersonPersonId = personidentBarnBoforholdSkalAktiveresFor.verdi, @@ -1131,16 +1132,16 @@ class BehandlingServiceTest : TestContainerRunner() { navn = "Lyrisk Sopp", partPersonId = b.bidragsmottaker!!.ident!!, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = LocalDate.parse("2023-01-01"), - periodeTil = LocalDate.parse("2023-05-31"), - ), - BorISammeHusstandDto( - periodeFra = LocalDate.parse("2023-08-01"), - periodeTil = null, - ), + listOf( + BorISammeHusstandDto( + periodeFra = LocalDate.parse("2023-01-01"), + periodeTil = LocalDate.parse("2023-05-31"), + ), + BorISammeHusstandDto( + periodeFra = LocalDate.parse("2023-08-01"), + periodeTil = null, ), + ), ), ) b.grunnlag.add( @@ -1288,7 +1289,7 @@ class BehandlingServiceTest : TestContainerRunner() { val innhentet = LocalDateTime.now() // gjeldende barnetilsyn - b.leggeTilGjeldendeBarnetillegg() + b.leggeTilGjeldendeBarnetilsyn() // nytt barnetilsyn b.leggeTilNyttBarnetilsyn() @@ -1619,7 +1620,7 @@ class BehandlingServiceTest : TestContainerRunner() { @Test @Transactional - open fun `skal oppdatere ikke aktivert barnetilsyn ved endring av virkningsdato fremover i tid`() { + open fun `skal oppdatere barnetilsyn ved endring av virkningsdato fremover i tid`() { // gitt val b = testdataManager.oppretteBehandling( @@ -1636,16 +1637,32 @@ class BehandlingServiceTest : TestContainerRunner() { stubPersonConsumer() grunnlagService.oppdatereGrunnlagForBehandling(b) - b.leggeTilGjeldendeBarnetillegg() + b.leggeTilGjeldendeBarnetilsyn() b.leggeTilNyttBarnetilsyn() assertSoftly(b.grunnlag.filter { Grunnlagsdatatype.BARNETILSYN == it.type }) { g -> g shouldHaveSize 5 g.filter { it.aktiv == null } shouldHaveSize 3 + g + .filter { it.aktiv != null } + .maxBy { it.aktiv!! } + .aktiv!! + .toLocalDate() shouldBeLessThan LocalDate.now() } val ikkeAktive = b.grunnlag.hentSisteIkkeAktiv().filter { Grunnlagsdatatype.BARNETILSYN == it.type } + val aktivtIkkebearbeidaGrunnlag = + b.grunnlag + .hentSisteAktiv() + .find { Grunnlagsdatatype.BARNETILSYN == it.type && !it.erBearbeidet } + + + val fraDatoAktivtIkkebearbeidaGrunnlag = + aktivtIkkebearbeidaGrunnlag.konvertereData>()!! + .minBy { it.periodeFra }.periodeFra + aktivtIkkebearbeidaGrunnlag shouldNotBe null + val nyVirkningsdato = ikkeAktive .flatMap { it.konvertereData>()!! } @@ -1662,12 +1679,43 @@ class BehandlingServiceTest : TestContainerRunner() { // så entityManager.flush() entityManager.refresh(b) + + val alleBarnetilsynsgrunnlag = b.grunnlag.filter { Grunnlagsdatatype.BARNETILSYN == it.type } + alleBarnetilsynsgrunnlag shouldHaveSize 5 + assertSoftly(b.grunnlag.filter { Grunnlagsdatatype.BARNETILSYN == it.type }) { s -> s shouldHaveSize 5 jsonListeTilObjekt( s.first { it.erBearbeidet && it.aktiv == null }.data, ).minByOrNull { it.periodeFra }!!.periodeFra shouldBeEqual nyVirkningsdato } + + // Verifisere ikke-bearbeida grunnlag + assertSoftly( + alleBarnetilsynsgrunnlag.filter { !it.erBearbeidet }, + ) { g -> + g.shouldHaveSize(2) + g.filter { it.aktiv != null } shouldHaveSize 1 + jsonListeTilObjekt(g.find { it.aktiv != null }!!.data).minByOrNull { it.periodeFra }!!.periodeFra shouldBeEqual fraDatoAktivtIkkebearbeidaGrunnlag + g.find { it.aktiv != null }!!.aktiv!!.toLocalDate() shouldBe aktivtIkkebearbeidaGrunnlag!!.aktiv!!.toLocalDate() + } + + // Verifisere aktiverte bearbeida grunnlag + assertSoftly( + alleBarnetilsynsgrunnlag.filter { it.erBearbeidet && it.aktiv != null }, + ) { aktive -> + aktive.shouldHaveSize(2) + jsonListeTilObjekt(aktive.first().data).minByOrNull { it.periodeFra }!!.periodeFra shouldBeEqual nyVirkningsdato + aktive.forEach { it.aktiv!!.toLocalDate() shouldBe LocalDate.now() } + } + + // Verifisere ikke-aktiverte bearbeida grunnlag + assertSoftly( + alleBarnetilsynsgrunnlag.filter { it.erBearbeidet && it.aktiv == null }, + ) { ikkeAktive -> + ikkeAktive.shouldHaveSize(1) + jsonListeTilObjekt(ikkeAktive.first().data).minByOrNull { it.periodeFra }!!.periodeFra shouldBeEqual nyVirkningsdato + } } @Test @@ -1746,12 +1794,12 @@ class BehandlingServiceTest : TestContainerRunner() { navn = "Test", partPersonId = behandling.bidragspliktig!!.ident, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = LocalDate.now().minusMonths(4).withDayOfMonth(1), - periodeTil = LocalDate.now().minusMonths(1).withDayOfMonth(1), - ), + listOf( + BorISammeHusstandDto( + periodeFra = LocalDate.now().minusMonths(4).withDayOfMonth(1), + periodeTil = LocalDate.now().minusMonths(1).withDayOfMonth(1), ), + ), ), ) @@ -1769,7 +1817,7 @@ class BehandlingServiceTest : TestContainerRunner() { erBearbeidet = false, aktiv = null, data = - tilJson(nyAndreVoksneIHusstandGrunnlag), + tilJson(nyAndreVoksneIHusstandGrunnlag), ), ) behandling.grunnlag.add( @@ -1804,12 +1852,12 @@ class BehandlingServiceTest : TestContainerRunner() { .konvertereData>()!! .minByOrNull { it.periodeFom!! }!! .periodeFom!! shouldBeEqual - nyVirkningsdato + nyVirkningsdato ikkeAktivBearbeidet .konvertereData>()!! .minByOrNull { it.periodeFom!! }!! .periodeFom!! shouldBeEqual - nyVirkningsdato + nyVirkningsdato } } @@ -1838,12 +1886,12 @@ class BehandlingServiceTest : TestContainerRunner() { navn = "Test", partPersonId = behandling.bidragspliktig!!.ident, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = LocalDate.now().minusMonths(4).withDayOfMonth(1), - periodeTil = null, - ), + listOf( + BorISammeHusstandDto( + periodeFra = LocalDate.now().minusMonths(4).withDayOfMonth(1), + periodeTil = null, ), + ), ), ) @@ -1861,7 +1909,7 @@ class BehandlingServiceTest : TestContainerRunner() { erBearbeidet = false, aktiv = null, data = - tilJson(nyAndreVoksneIHusstandGrunnlag), + tilJson(nyAndreVoksneIHusstandGrunnlag), ), ) behandling.grunnlag.add( @@ -1898,7 +1946,7 @@ class BehandlingServiceTest : TestContainerRunner() { .konvertereData>()!! .minByOrNull { it.periodeFom!! }!! .periodeFom!! shouldBeEqual - nyVirkningsdato + nyVirkningsdato } } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt index b435f34b..307f70ac 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt @@ -44,8 +44,9 @@ import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning import no.nav.bidrag.behandling.transformers.underhold.aktivereBarnetilsynHvisIngenEndringerMåAksepteres import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2 import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper -import no.nav.bidrag.behandling.utils.testdata.leggeTilGjeldendeBarnetillegg +import no.nav.bidrag.behandling.utils.testdata.leggeTilGjeldendeBarnetilsyn import no.nav.bidrag.behandling.utils.testdata.leggeTilNyttBarnetilsyn +import no.nav.bidrag.behandling.utils.testdata.oppretteBarnetilsynGrunnlagDto import no.nav.bidrag.behandling.utils.testdata.oppretteTestbehandling import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 import no.nav.bidrag.behandling.utils.testdata.testdataBarn2 @@ -167,9 +168,9 @@ class UnderholdServiceTest { id = universalid, underholdskostnad = underholdskostnad, dagsats = - BigDecimal( - 350, - ), + BigDecimal( + 350, + ), fom = LocalDate.now(), ) underholdskostnad.tilleggsstønad.add(tilleggsstønad) @@ -322,11 +323,11 @@ class UnderholdServiceTest { every { personRepository.save(any()) } returns barn every { underholdskostnadRepository.save(any()) } returns - Underholdskostnad( - id = universalid, - behandling = behandling, - person = barn, - ) + Underholdskostnad( + id = universalid, + behandling = behandling, + person = barn, + ) // hvis underholdService.oppretteUnderholdskostnad(behandling, request) @@ -358,11 +359,11 @@ class UnderholdServiceTest { every { personRepository.save(any()) } returns annetBarnMedPersonident every { personRepository.findFirstByIdent(annetBarnMedPersonident.ident!!) } returns annetBarnMedPersonident every { underholdskostnadRepository.save(any()) } returns - Underholdskostnad( - id = 102, - behandling = behandling, - person = annetBarnMedPersonident, - ) + Underholdskostnad( + id = 102, + behandling = behandling, + person = annetBarnMedPersonident, + ) // hvis val respons = @@ -394,11 +395,11 @@ class UnderholdServiceTest { every { personRepository.save(any()) } returns generalen every { underholdskostnadRepository.save(any()) } returns - Underholdskostnad( - id = 102, - behandling = behandling, - person = generalen, - ) + Underholdskostnad( + id = 102, + behandling = behandling, + person = generalen, + ) // hvis val respons = @@ -464,10 +465,10 @@ class UnderholdServiceTest { val request = OppdatereTilleggsstønadRequest( periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), dagsats = BigDecimal(365), ) @@ -528,10 +529,10 @@ class UnderholdServiceTest { OppdatereTilleggsstønadRequest( id = 1, periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), dagsats = BigDecimal(365), ) @@ -578,10 +579,10 @@ class UnderholdServiceTest { val request = StønadTilBarnetilsynDto( periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), skolealder = Skolealder.OVER, tilsynstype = Tilsynstype.HELTID, ) @@ -593,11 +594,11 @@ class UnderholdServiceTest { fom = request.periode.fom, tom = request.periode.tom, under_skolealder = - when (request.skolealder) { - Skolealder.OVER -> false - Skolealder.UNDER -> true - else -> null - }, + when (request.skolealder) { + Skolealder.OVER -> false + Skolealder.UNDER -> true + else -> null + }, request.tilsynstype!!, kilde = Kilde.OFFENTLIG, ), @@ -654,10 +655,10 @@ class UnderholdServiceTest { StønadTilBarnetilsynDto( id = 1, periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), skolealder = Skolealder.OVER, tilsynstype = Tilsynstype.DELTID, ) @@ -716,10 +717,10 @@ class UnderholdServiceTest { StønadTilBarnetilsynDto( id = 1, periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), skolealder = Skolealder.OVER, tilsynstype = Tilsynstype.DELTID, ) @@ -778,10 +779,10 @@ class UnderholdServiceTest { StønadTilBarnetilsynDto( id = 1, periode = - DatoperiodeDto( - LocalDate.now(), - null, - ), + DatoperiodeDto( + LocalDate.now(), + null, + ), skolealder = Skolealder.OVER, tilsynstype = Tilsynstype.DELTID, ) @@ -830,10 +831,10 @@ class UnderholdServiceTest { val request = OppdatereFaktiskTilsynsutgiftRequest( periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), utgift = BigDecimal(6000), kostpenger = BigDecimal(1000), kommentar = "Kostpenger gjelder ikke fredager", @@ -901,10 +902,10 @@ class UnderholdServiceTest { OppdatereFaktiskTilsynsutgiftRequest( id = 1, periode = - DatoperiodeDto( - LocalDate.now().minusMonths(6).withDayOfMonth(1), - null, - ), + DatoperiodeDto( + LocalDate.now().minusMonths(6).withDayOfMonth(1), + null, + ), utgift = BigDecimal(6000), kostpenger = BigDecimal(1000), kommentar = "Kostpenger gjelder ikke fredager", @@ -1026,7 +1027,7 @@ class UnderholdServiceTest { behandlingstype = TypeBehandling.BIDRAG, ) - b.leggeTilGjeldendeBarnetillegg() + b.leggeTilGjeldendeBarnetilsyn() val nyVirkningsdato = b @@ -1085,7 +1086,7 @@ class UnderholdServiceTest { behandlingstype = TypeBehandling.BIDRAG, ) - b.leggeTilGjeldendeBarnetillegg() + b.leggeTilGjeldendeBarnetilsyn(oppretteBarnetilsynGrunnlagDto(b, skolealder = Skolealder.UNDER, tilsynstype = Tilsynstype.DELTID)) b.leggeTilNyttBarnetilsyn() val nyVirkningsdato = @@ -1152,7 +1153,7 @@ class UnderholdServiceTest { behandlingstype = TypeBehandling.BIDRAG, ) - b.leggeTilGjeldendeBarnetillegg() + b.leggeTilGjeldendeBarnetilsyn() val u = b.underholdskostnader.find { it.barnetsRolleIBehandlingen?.personident?.verdi == testdataBarn1.ident }!! @@ -1185,6 +1186,81 @@ class UnderholdServiceTest { u.faktiskeTilsynsutgifter.first().fom shouldBe b.virkningstidspunkt u.tilleggsstønad.first().fom shouldBe b.virkningstidspunkt } + + @Test + open fun `skal aktivere grunnlag og justere perioder for barnetilsyn etter endring av virkningsdato`() { + // gitt + val b = + oppretteTestbehandling( + setteDatabaseider = true, + inkludereBp = true, + behandlingstype = TypeBehandling.BIDRAG, + ) + + b.leggeTilGjeldendeBarnetilsyn( + oppretteBarnetilsynGrunnlagDto( + b, + periodeFraAntallMndTilbake = 13, + periodeTilAntallMndTilbake = 1 + ) + ) + + val originaltGrunnlag = b.grunnlag.hentAlleAktiv() + .find { Grunnlagsdatatype.BARNETILSYN == it.type && !it.erBearbeidet } + + originaltGrunnlag.shouldNotBeNull() + originaltGrunnlag.aktiv.shouldNotBeNull() + + val dataOriginaltGrunnlag = originaltGrunnlag.konvertereData>() + + val u = + b.underholdskostnader.find { it.barnetsRolleIBehandlingen?.personident?.verdi == testdataBarn1.ident }!! + + u.barnetilsyn.add( + Barnetilsyn( + underholdskostnad = u, + fom = b.virkningstidspunktEllerSøktFomDato, + kilde = Kilde.MANUELL, + omfang = Tilsynstype.HELTID, + under_skolealder = false + ) + ) + + b.virkningstidspunkt = LocalDate.now() + + // hvis + underholdService.tilpasseUnderholdEtterVirkningsdato(b) + + // så + assertSoftly(b.grunnlag.hentAlleAktiv().filter { Grunnlagsdatatype.BARNETILSYN == it.type }) { + shouldHaveSize(2) + + val ikkeBearbeida = find { !it.erBearbeidet } + val bearbeida = find { it.erBearbeidet } + + ikkeBearbeida.shouldNotBeNull() + bearbeida.shouldNotBeNull() + + ikkeBearbeida.aktiv?.toLocalDate() shouldBe originaltGrunnlag.aktiv!!.toLocalDate() + bearbeida.aktiv?.toLocalDate() shouldBe LocalDate.now() + + val perioderIkkeBearbeida = ikkeBearbeida.konvertereData>() + val perioderBearbeida = bearbeida.konvertereData>() + + perioderIkkeBearbeida.shouldNotBeNull() + perioderIkkeBearbeida.shouldHaveSize(1) + perioderIkkeBearbeida.first().periodeFra shouldBe dataOriginaltGrunnlag!!.first().periodeFra + perioderIkkeBearbeida.first().periodeTil shouldBe dataOriginaltGrunnlag.first().periodeTil + + perioderBearbeida.shouldBeEmpty() + } + + assertSoftly (u.barnetilsyn){ + shouldHaveSize(1) + find { Kilde.MANUELL == it.kilde }.shouldNotBeNull() + find { Kilde.MANUELL == it.kilde }!!.fom shouldBe b.virkningstidspunktEllerSøktFomDato + } + } } @Nested @@ -1200,7 +1276,7 @@ class UnderholdServiceTest { behandlingstype = TypeBehandling.BIDRAG, ) - b.leggeTilGjeldendeBarnetillegg() + b.leggeTilGjeldendeBarnetilsyn() b.leggeTilNyttBarnetilsyn() // hvis @@ -1221,7 +1297,8 @@ class UnderholdServiceTest { .konvertereData>() ?.shouldHaveSize(3) - val aktiveBearbeidaBarnetilsyn = b.grunnlag.hentAlleAktiv().filter { Grunnlagsdatatype.BARNETILSYN == it.type && it.erBearbeidet } + val aktiveBearbeidaBarnetilsyn = + b.grunnlag.hentAlleAktiv().filter { Grunnlagsdatatype.BARNETILSYN == it.type && it.erBearbeidet } aktiveBearbeidaBarnetilsyn shouldHaveSize 2 aktiveBearbeidaBarnetilsyn.filter { it.gjelder == testdataBarn2.ident } shouldHaveSize 1 @@ -1231,7 +1308,8 @@ class UnderholdServiceTest { it?.erBearbeidet shouldBe true } - val dataTestbarn2 = aktiveBearbeidaBarnetilsyn.find { it.gjelder == testdataBarn2.ident }.konvertereData>()!! + val dataTestbarn2 = aktiveBearbeidaBarnetilsyn.find { it.gjelder == testdataBarn2.ident } + .konvertereData>()!! dataTestbarn2 shouldHaveSize 1 assertSoftly(dataTestbarn2.first()) { @@ -1239,8 +1317,8 @@ class UnderholdServiceTest { barnPersonId shouldBe testdataBarn2.ident periodeFra shouldBeGreaterThan b.virkningstidspunktEllerSøktFomDato periodeTil shouldBe null - tilsynstype shouldBe null - skolealder shouldBe null + tilsynstype shouldBe Tilsynstype.HELTID + skolealder shouldBe Skolealder.OVER } } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt index d7eca909..390e990e 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt @@ -216,10 +216,10 @@ fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = forsendelseId = forsendelseId, saksnummer = SAKSNUMMER, behandlingInfo = - BehandlingInfoResponseDto( - soknadId = SOKNAD_ID.toString(), - erFattet = false, - ), + BehandlingInfoResponseDto( + soknadId = SOKNAD_ID.toString(), + erFattet = false, + ), forsendelseType = ForsendelseTypeTo.UTGÅENDE, status = ForsendelseStatusTo.UNDER_OPPRETTELSE, ) @@ -333,11 +333,11 @@ fun oppretteRequestForOppdateringAvManuellInntekt(idInntekt: Long? = null) = beløp = BigDecimal(305203), datoFom = LocalDate.now().minusYears(1).withDayOfYear(1), datoTom = - LocalDate - .now() - .minusYears(1) - .withMonth(12) - .withDayOfMonth(31), + LocalDate + .now() + .minusYears(1) + .withMonth(12) + .withDayOfMonth(31), ident = Personident("12345678910"), gjelderBarn = Personident("01234567891"), ) @@ -442,12 +442,12 @@ fun opprettSakForBehandling(behandling: Behandling): BidragssakDto = levdeAdskilt = false, ukjentPart = false, roller = - behandling.roller.map { - RolleDto( - fødselsnummer = Personident(it.ident!!), - type = it.rolletype, - ) - }, + behandling.roller.map { + RolleDto( + fødselsnummer = Personident(it.ident!!), + type = it.rolletype, + ) + }, ) fun opprettSakForBehandlingMedReelMottaker(behandling: Behandling): BidragssakDto = @@ -460,13 +460,13 @@ fun opprettSakForBehandlingMedReelMottaker(behandling: Behandling): BidragssakDt levdeAdskilt = false, ukjentPart = false, roller = - behandling.roller.map { - RolleDto( - fødselsnummer = Personident(it.ident!!), - reellMottager = if (it.ident == testdataBarn1.ident) ReellMottager("REEL_MOTTAKER") else null, - type = it.rolletype, - ) - }, + behandling.roller.map { + RolleDto( + fødselsnummer = Personident(it.ident!!), + reellMottager = if (it.ident == testdataBarn1.ident) ReellMottager("REEL_MOTTAKER") else null, + type = it.rolletype, + ) + }, ) fun opprettGyldigBehandlingForBeregningOgVedtak( @@ -480,10 +480,10 @@ fun opprettGyldigBehandlingForBeregningOgVedtak( if (generateId) 1 else null, vedtakstype = vedtakstype, virkningstidspunkt = - when (typeBehandling) { - TypeBehandling.FORSKUDD, TypeBehandling.BIDRAG -> LocalDate.parse("2023-02-01") - TypeBehandling.SÆRBIDRAG -> LocalDate.now().withDayOfMonth(1) - }, + when (typeBehandling) { + TypeBehandling.FORSKUDD, TypeBehandling.BIDRAG -> LocalDate.parse("2023-02-01") + TypeBehandling.SÆRBIDRAG -> LocalDate.now().withDayOfMonth(1) + }, ) behandling.innkrevingstype = Innkrevingstype.MED_INNKREVING behandling.roller = @@ -878,14 +878,14 @@ fun opprettBeregnetInntektFraGrunnlag( erBearbeidet = true, aktiv = LocalDateTime.now(), data = - commonObjectmapper.writeValueAsString( - POJONode( - SummerteInntekter( - versjon = inntekterBearbeidet.versjon, - inntekter = inntekterBearbeidet.summertMånedsinntektListe, - ), + commonObjectmapper.writeValueAsString( + POJONode( + SummerteInntekter( + versjon = inntekterBearbeidet.versjon, + inntekter = inntekterBearbeidet.summertMånedsinntektListe, ), ), + ), innhentet = LocalDateTime.now(), rolle = testDataPerson.tilRolle(behandling), ), @@ -895,16 +895,16 @@ fun opprettBeregnetInntektFraGrunnlag( erBearbeidet = true, aktiv = LocalDateTime.now(), data = - commonObjectmapper.writeValueAsString( - POJONode( - SummerteInntekter( - versjon = inntekterBearbeidet.versjon, - inntekter = - inntekterBearbeidet.summertÅrsinntektListe.ainntektListe + - inntekterBearbeidet.summertÅrsinntektListe.skattegrunnlagListe, - ), + commonObjectmapper.writeValueAsString( + POJONode( + SummerteInntekter( + versjon = inntekterBearbeidet.versjon, + inntekter = + inntekterBearbeidet.summertÅrsinntektListe.ainntektListe + + inntekterBearbeidet.summertÅrsinntektListe.skattegrunnlagListe, ), ), + ), innhentet = LocalDateTime.now(), rolle = testDataPerson.tilRolle(behandling), ), @@ -946,14 +946,14 @@ fun TransformerInntekterResponse.tilGrunnlag( erBearbeidet = true, aktiv = LocalDateTime.now(), data = - commonObjectmapper.writeValueAsString( - POJONode( - SummerteInntekter( - versjon = versjon, - summertÅrsinntektListe.filter { it.inntektRapportering == type }, - ), + commonObjectmapper.writeValueAsString( + POJONode( + SummerteInntekter( + versjon = versjon, + summertÅrsinntektListe.filter { it.inntektRapportering == type }, ), ), + ), innhentet = LocalDateTime.now(), rolle = person.tilRolle(behandling), ) @@ -993,20 +993,20 @@ fun oppretteBoforholdBearbeidetGrunnlagForhusstandsmedlem(husstandsmedlemSet: Se rolle = behandling.bidragsmottaker!!, innhentet = LocalDateTime.now(), data = - commonObjectmapper.writeValueAsString( - husstandsmedlem.flatMap { hb -> - hb.perioder.map { - BoforholdResponseV2( - gjelderPersonId = hb.ident, - periodeFom = it.datoFom!!, - periodeTom = it.datoTom, - kilde = it.kilde, - bostatus = it.bostatus, - fødselsdato = hb.fødselsdato!!, - ) - } - }, - ), + commonObjectmapper.writeValueAsString( + husstandsmedlem.flatMap { hb -> + hb.perioder.map { + BoforholdResponseV2( + gjelderPersonId = hb.ident, + periodeFom = it.datoFom!!, + periodeTom = it.datoTom, + kilde = it.kilde, + bostatus = it.bostatus, + fødselsdato = hb.fødselsdato!!, + ) + } + }, + ), ) } @@ -1088,23 +1088,23 @@ fun opprettInntekt( inntekt.inntektsposter = ( - inntektstyper.map { - Inntektspost( - inntekt = inntekt, - beløp = it.second, - inntektstype = it.first, - kode = "", - ) - } + - inntektstyperKode.map { + inntektstyper.map { Inntektspost( inntekt = inntekt, beløp = it.second, - inntektstype = null, - kode = it.first, + inntektstype = it.first, + kode = "", ) - } - ).toMutableSet() + } + + inntektstyperKode.map { + Inntektspost( + inntekt = inntekt, + beløp = it.second, + inntektstype = null, + kode = it.first, + ) + } + ).toMutableSet() return inntekt } @@ -1272,20 +1272,20 @@ fun oppretteArbeidsforhold(personident: String): ArbeidsforholdGrunnlagDto = permitteringListe = emptyList(), permisjonListe = emptyList(), ansettelsesdetaljerListe = - listOf( - Ansettelsesdetaljer( - periodeFra = YearMonth.now().minusMonths(144), - periodeTil = null, - ansettelsesformBeskrivelse = "Fast ansatt", - antallTimerPrUke = 40.0, - arbeidsforholdType = "Ordinaer", - avtaltStillingsprosent = 100.0, - arbeidstidsordningBeskrivelse = "Ikke skift", - sisteLønnsendringDato = LocalDate.now().minusMonths(10).withMonth(1), - sisteStillingsprosentendringDato = LocalDate.now().minusMonths(144), - yrkeBeskrivelse = "Snekker", - ), + listOf( + Ansettelsesdetaljer( + periodeFra = YearMonth.now().minusMonths(144), + periodeTil = null, + ansettelsesformBeskrivelse = "Fast ansatt", + antallTimerPrUke = 40.0, + arbeidsforholdType = "Ordinaer", + avtaltStillingsprosent = 100.0, + arbeidstidsordningBeskrivelse = "Ikke skift", + sisteLønnsendringDato = LocalDate.now().minusMonths(10).withMonth(1), + sisteStillingsprosentendringDato = LocalDate.now().minusMonths(144), + yrkeBeskrivelse = "Snekker", ), + ), ) fun oppretteArbeidsforhold( @@ -1327,12 +1327,12 @@ private fun oppretteBoforhold( navn = "Lyrisk Sopp", partPersonId = Grunnlagsdatatype.BOFORHOLD.innhentesForRolle(behandling)!!.ident, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = LocalDate.parse("2023-01-01"), - periodeTil = LocalDate.parse("2023-05-31"), - ), + listOf( + BorISammeHusstandDto( + periodeFra = LocalDate.parse("2023-01-01"), + periodeTil = LocalDate.parse("2023-05-31"), ), + ), ), RelatertPersonGrunnlagDto( relatertPersonPersonId = testdataBarn2.ident, @@ -1342,12 +1342,12 @@ private fun oppretteBoforhold( navn = "Lyrisk Sopp", partPersonId = Grunnlagsdatatype.BOFORHOLD.innhentesForRolle(behandling)!!.ident, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = LocalDate.parse("2023-01-01"), - periodeTil = LocalDate.parse("2023-05-31"), - ), + listOf( + BorISammeHusstandDto( + periodeFra = LocalDate.parse("2023-01-01"), + periodeTil = LocalDate.parse("2023-05-31"), ), + ), ), ) @@ -1361,16 +1361,16 @@ private fun oppretteBoforhold( navn = voksenPersonIBpsHusstand.navn, partPersonId = Grunnlagsdatatype.BOFORHOLD.innhentesForRolle(behandling)!!.ident, borISammeHusstandDtoListe = - listOf( - BorISammeHusstandDto( - periodeFra = behandling.virkningstidspunktEllerSøktFomDato.plusMonths(2).withDayOfMonth(1), - periodeTil = - behandling.virkningstidspunktEllerSøktFomDato - .plusMonths(6) - .withDayOfMonth(1) - .minusDays(1), - ), + listOf( + BorISammeHusstandDto( + periodeFra = behandling.virkningstidspunktEllerSøktFomDato.plusMonths(2).withDayOfMonth(1), + periodeTil = + behandling.virkningstidspunktEllerSøktFomDato + .plusMonths(6) + .withDayOfMonth(1) + .minusDays(1), ), + ), ), ) @@ -1637,6 +1637,8 @@ fun oppretteBarnetilsynGrunnlagDto( periodeFraAntallMndTilbake: Long = 1, periodeTil: LocalDate? = null, periodeTilAntallMndTilbake: Long? = null, + skolealder : Skolealder = Skolealder.OVER, + tilsynstype: Tilsynstype = Tilsynstype.HELTID, barnPersonId: String = behandling.søknadsbarn .first() @@ -1644,10 +1646,10 @@ fun oppretteBarnetilsynGrunnlagDto( .verdi, ) = BarnetilsynGrunnlagDto( beløp = beløp, - periodeFra = periodeFra ?: LocalDate.now().minusMonths(periodeFraAntallMndTilbake), - periodeTil = periodeTil ?: periodeTilAntallMndTilbake?.let { LocalDate.now().minusMonths(it) }, - skolealder = null, - tilsynstype = null, + periodeFra = periodeFra ?: LocalDate.now().minusMonths(periodeFraAntallMndTilbake).withDayOfMonth(1), + periodeTil = periodeTil ?: periodeTilAntallMndTilbake?.let { LocalDate.now().minusMonths(it).withDayOfMonth(1) }, + skolealder = skolealder, + tilsynstype = tilsynstype, barnPersonId = barnPersonId, partPersonId = behandling.bidragsmottaker!!.personident!!.verdi, ) @@ -1669,31 +1671,31 @@ fun opprettLøpendeBidragGrunnlag( fun opprettEvnevurderingResultat(sakerFor: List>) = EvnevurderingBeregningResultat( løpendeBidragsaker = + sakerFor.map { + LøpendeBidragssak( + kravhaver = Personident(it.first.ident), + type = it.second, + løpendeBeløp = BigDecimal(5123), + sak = Saksnummer(SAKSNUMMER), + ) + }, + beregnetBeløpListe = + BidragBeregningResponsDto( + beregningListe = sakerFor.map { - LøpendeBidragssak( - kravhaver = Personident(it.first.ident), - type = it.second, - løpendeBeløp = BigDecimal(5123), - sak = Saksnummer(SAKSNUMMER), + BidragBeregningResponsDto.BidragBeregning( + beløpSamvær = BigDecimal(5123), + faktiskBeløp = BigDecimal(6555), + samværsklasse = Samværsklasse.SAMVÆRSKLASSE_1, + beregnetBeløp = BigDecimal(6334), + saksnummer = SAKSNUMMER, + datoSøknad = LocalDate.now(), + gjelderFom = LocalDate.now(), + personidentBarn = Personident(it.first.ident), + stønadstype = it.second, ) }, - beregnetBeløpListe = - BidragBeregningResponsDto( - beregningListe = - sakerFor.map { - BidragBeregningResponsDto.BidragBeregning( - beløpSamvær = BigDecimal(5123), - faktiskBeløp = BigDecimal(6555), - samværsklasse = Samværsklasse.SAMVÆRSKLASSE_1, - beregnetBeløp = BigDecimal(6334), - saksnummer = SAKSNUMMER, - datoSøknad = LocalDate.now(), - gjelderFom = LocalDate.now(), - personidentBarn = Personident(it.first.ident), - stønadstype = it.second, - ) - }, - ), + ), ) fun Behandling.taMedInntekt( @@ -1782,38 +1784,38 @@ fun Behandling.leggTilSamvær( SamværskalkulatorDetaljer( regelmessigSamværNetter = BigDecimal(4), ferier = - listOf( - SamværskalkulatorDetaljer.SamværskalkulatorFerie( - type = SamværskalkulatorFerietype.VINTERFERIE, - bidragsmottakerNetter = BigDecimal(0), - bidragspliktigNetter = BigDecimal(0), - frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, - ), - SamværskalkulatorDetaljer.SamværskalkulatorFerie( - type = SamværskalkulatorFerietype.JUL_NYTTÅR, - bidragsmottakerNetter = BigDecimal(0), - bidragspliktigNetter = BigDecimal(0), - frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, - ), - SamværskalkulatorDetaljer.SamværskalkulatorFerie( - type = SamværskalkulatorFerietype.ANNET, - bidragsmottakerNetter = BigDecimal(14), - bidragspliktigNetter = BigDecimal(1), - frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, - ), - SamværskalkulatorDetaljer.SamværskalkulatorFerie( - type = SamværskalkulatorFerietype.PÅSKE, - bidragsmottakerNetter = BigDecimal(14), - bidragspliktigNetter = BigDecimal(1), - frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, - ), - SamværskalkulatorDetaljer.SamværskalkulatorFerie( - type = SamværskalkulatorFerietype.SOMMERFERIE, - bidragsmottakerNetter = BigDecimal(14), - bidragspliktigNetter = BigDecimal(1), - frekvens = SamværskalkulatorNetterFrekvens.ANNET_HVERT_ÅR, - ), + listOf( + SamværskalkulatorDetaljer.SamværskalkulatorFerie( + type = SamværskalkulatorFerietype.VINTERFERIE, + bidragsmottakerNetter = BigDecimal(0), + bidragspliktigNetter = BigDecimal(0), + frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, + ), + SamværskalkulatorDetaljer.SamværskalkulatorFerie( + type = SamværskalkulatorFerietype.JUL_NYTTÅR, + bidragsmottakerNetter = BigDecimal(0), + bidragspliktigNetter = BigDecimal(0), + frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, + ), + SamværskalkulatorDetaljer.SamværskalkulatorFerie( + type = SamværskalkulatorFerietype.ANNET, + bidragsmottakerNetter = BigDecimal(14), + bidragspliktigNetter = BigDecimal(1), + frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, ), + SamværskalkulatorDetaljer.SamværskalkulatorFerie( + type = SamværskalkulatorFerietype.PÅSKE, + bidragsmottakerNetter = BigDecimal(14), + bidragspliktigNetter = BigDecimal(1), + frekvens = SamværskalkulatorNetterFrekvens.HVERT_ÅR, + ), + SamværskalkulatorDetaljer.SamværskalkulatorFerie( + type = SamværskalkulatorFerietype.SOMMERFERIE, + bidragsmottakerNetter = BigDecimal(14), + bidragspliktigNetter = BigDecimal(1), + frekvens = SamværskalkulatorNetterFrekvens.ANNET_HVERT_ÅR, + ), + ), ) val samværBarn = samvær.find { it.rolle.ident == barn.ident }!! samværBarn.perioder.add( @@ -1823,10 +1825,10 @@ fun Behandling.leggTilSamvær( fom = periode.fom.atDay(1), tom = periode.til?.minusMonths(1)?.atEndOfMonth(), samværsklasse = - samværsklasse ?: BeregnSamværsklasseApi(stubSjablonService()) - .beregnSamværsklasse( - samværsklasseDetaljer, - ).delberegningSamværsklasse.samværsklasse, + samværsklasse ?: BeregnSamværsklasseApi(stubSjablonService()) + .beregnSamværsklasse( + samværsklasseDetaljer, + ).delberegningSamværsklasse.samværsklasse, beregningJson = if (medBeregning) commonObjectmapper.writeValueAsString(samværsklasseDetaljer) else null, ), ) @@ -1861,7 +1863,12 @@ fun Behandling.leggTilBarnetillegg( inntekter.add(inntekt) } -fun Behandling.leggeTilGjeldendeBarnetillegg() { +fun Behandling.leggeTilGjeldendeBarnetilsyn( + grunnlagBarnetilsyn: BarnetilsynGrunnlagDto = oppretteBarnetilsynGrunnlagDto( + this, + periodeFraAntallMndTilbake = 13 + ) +) { this.grunnlag.add( Grunnlag( aktiv = LocalDateTime.now().minusDays(5), @@ -1870,12 +1877,7 @@ fun Behandling.leggeTilGjeldendeBarnetillegg() { erBearbeidet = false, rolle = Grunnlagsdatatype.BARNETILSYN.innhentesForRolle(this)!!, type = Grunnlagsdatatype.BARNETILSYN, - data = - commonObjectmapper.writeValueAsString( - setOf( - oppretteBarnetilsynGrunnlagDto(this, periodeFraAntallMndTilbake = 13), - ), - ), + data = commonObjectmapper.writeValueAsString(setOf(grunnlagBarnetilsyn)), ), ) @@ -1888,12 +1890,7 @@ fun Behandling.leggeTilGjeldendeBarnetillegg() { erBearbeidet = true, rolle = Grunnlagsdatatype.BARNETILSYN.innhentesForRolle(this)!!, type = Grunnlagsdatatype.BARNETILSYN, - data = - commonObjectmapper.writeValueAsString( - setOf( - oppretteBarnetilsynGrunnlagDto(this, periodeFraAntallMndTilbake = 13), - ), - ), + data = commonObjectmapper.writeValueAsString(setOf(grunnlagBarnetilsyn)), ), ) @@ -1920,38 +1917,38 @@ fun Behandling.leggeTilNyttBarnetilsyn( rolle = barnetilsynInnhentesForRolle, type = Grunnlagsdatatype.BARNETILSYN, data = - commonObjectmapper.writeValueAsString( - setOf( - oppretteBarnetilsynGrunnlagDto(this, barnPersonId = testdataBarn2.ident), - BarnetilsynGrunnlagDto( - beløp = 4500, - periodeFra = fraDato, - periodeTil = fraDato.plusMonths(6), - skolealder = Skolealder.IKKE_ANGITT, - tilsynstype = Tilsynstype.IKKE_ANGITT, - barnPersonId = testdataBarn1.ident, - partPersonId = barnetilsynInnhentesForRolle.ident!!, - ), - BarnetilsynGrunnlagDto( - beløp = 4600, - periodeFra = fraDato.plusMonths(6), - periodeTil = fraDato.plusMonths(8), - skolealder = Skolealder.OVER, - tilsynstype = Tilsynstype.HELTID, - barnPersonId = testdataBarn1.ident, - partPersonId = barnetilsynInnhentesForRolle.ident!!, - ), - BarnetilsynGrunnlagDto( - beløp = 4700, - periodeFra = fraDato.plusMonths(8), - periodeTil = null, - skolealder = null, - tilsynstype = null, - barnPersonId = testdataBarn1.ident, - partPersonId = barnetilsynInnhentesForRolle.ident!!, - ), + commonObjectmapper.writeValueAsString( + setOf( + oppretteBarnetilsynGrunnlagDto(this, barnPersonId = testdataBarn2.ident), + BarnetilsynGrunnlagDto( + beløp = 4500, + periodeFra = fraDato, + periodeTil = fraDato.plusMonths(6), + skolealder = Skolealder.OVER, + tilsynstype = Tilsynstype.HELTID, + barnPersonId = testdataBarn1.ident, + partPersonId = barnetilsynInnhentesForRolle.ident!!, + ), + BarnetilsynGrunnlagDto( + beløp = 4600, + periodeFra = fraDato.plusMonths(6), + periodeTil = fraDato.plusMonths(8), + skolealder = Skolealder.OVER, + tilsynstype = Tilsynstype.HELTID, + barnPersonId = testdataBarn1.ident, + partPersonId = barnetilsynInnhentesForRolle.ident!!, + ), + BarnetilsynGrunnlagDto( + beløp = 4700, + periodeFra = fraDato.plusMonths(8), + periodeTil = null, + skolealder = null, + tilsynstype = null, + barnPersonId = testdataBarn1.ident, + partPersonId = barnetilsynInnhentesForRolle.ident!!, ), ), + ), ), ) @@ -1965,37 +1962,37 @@ fun Behandling.leggeTilNyttBarnetilsyn( rolle = barnetilsynInnhentesForRolle, type = Grunnlagsdatatype.BARNETILSYN, data = - commonObjectmapper.writeValueAsString( - setOf( - BarnetilsynGrunnlagDto( - beløp = 4500, - periodeFra = fraDato, - periodeTil = fraDato.plusMonths(6), - skolealder = Skolealder.IKKE_ANGITT, - tilsynstype = Tilsynstype.IKKE_ANGITT, - barnPersonId = testdataBarn1.ident, - partPersonId = barnetilsynInnhentesForRolle.ident!!, - ), - BarnetilsynGrunnlagDto( - beløp = 4600, - periodeFra = fraDato.plusMonths(6), - periodeTil = fraDato.plusMonths(8), - skolealder = Skolealder.OVER, - tilsynstype = Tilsynstype.HELTID, - barnPersonId = testdataBarn1.ident, - partPersonId = barnetilsynInnhentesForRolle.ident!!, - ), - BarnetilsynGrunnlagDto( - beløp = 4700, - periodeFra = fraDato.plusMonths(8), - periodeTil = null, - skolealder = null, - tilsynstype = null, - barnPersonId = testdataBarn1.ident, - partPersonId = barnetilsynInnhentesForRolle.ident!!, - ), + commonObjectmapper.writeValueAsString( + setOf( + BarnetilsynGrunnlagDto( + beløp = 4500, + periodeFra = fraDato, + periodeTil = fraDato.plusMonths(6), + skolealder = Skolealder.IKKE_ANGITT, + tilsynstype = Tilsynstype.IKKE_ANGITT, + barnPersonId = testdataBarn1.ident, + partPersonId = barnetilsynInnhentesForRolle.ident!!, + ), + BarnetilsynGrunnlagDto( + beløp = 4600, + periodeFra = fraDato.plusMonths(6), + periodeTil = fraDato.plusMonths(8), + skolealder = Skolealder.OVER, + tilsynstype = Tilsynstype.HELTID, + barnPersonId = testdataBarn1.ident, + partPersonId = barnetilsynInnhentesForRolle.ident!!, + ), + BarnetilsynGrunnlagDto( + beløp = 4700, + periodeFra = fraDato.plusMonths(8), + periodeTil = null, + skolealder = null, + tilsynstype = null, + barnPersonId = testdataBarn1.ident, + partPersonId = barnetilsynInnhentesForRolle.ident!!, ), ), + ), ), ) @@ -2009,11 +2006,11 @@ fun Behandling.leggeTilNyttBarnetilsyn( rolle = barnetilsynInnhentesForRolle, type = Grunnlagsdatatype.BARNETILSYN, data = - commonObjectmapper.writeValueAsString( - setOf( - oppretteBarnetilsynGrunnlagDto(this, barnPersonId = testdataBarn2.ident), - ), + commonObjectmapper.writeValueAsString( + setOf( + oppretteBarnetilsynGrunnlagDto(this, barnPersonId = testdataBarn2.ident), ), + ), ), ) }