From 64e2ab5088f4a6f627d086b426dff05884088cea Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Mon, 23 Dec 2024 13:32:36 +0100 Subject: [PATCH] Barnetilsyn kilde --- pom.xml | 2 +- .../behandling/service/UnderholdService.kt | 19 ++-- .../service/UnderholdServiceTest.kt | 86 ++++++++++++++++++- .../behandling/utils/testdata/Testdata.kt | 15 ++-- 4 files changed, 104 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index 3a413dc7..b222ae85 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 21 2.1.0 2024.12.23.100918 - 2024.12.16.134803 + 2024.12.23.123033 2.3.232 8.0 3.2.0 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 0d1a9968..ff83c6a0 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt @@ -8,6 +8,7 @@ import no.nav.bidrag.behandling.database.datamodell.Person import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad import no.nav.bidrag.behandling.database.datamodell.hentAlleIkkeAktiv +import no.nav.bidrag.behandling.database.datamodell.hentSisteBearbeidetBarnetilsyn import no.nav.bidrag.behandling.database.datamodell.henteNyesteAktiveGrunnlag import no.nav.bidrag.behandling.database.datamodell.henteNyesteIkkeAktiveGrunnlag import no.nav.bidrag.behandling.database.repository.PersonRepository @@ -37,6 +38,7 @@ import no.nav.bidrag.domene.enums.barnetilsyn.Skolealder import no.nav.bidrag.domene.enums.barnetilsyn.Tilsynstype import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.ident.Personident +import no.nav.bidrag.domene.tid.Datoperiode import org.springframework.http.HttpStatus import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -142,15 +144,18 @@ class UnderholdService( request: StønadTilBarnetilsynDto, ) { request.validerePerioderStønadTilBarnetilsyn(underholdskostnad) - + val offentligBarnetilsyn = underholdskostnad.hentSisteBearbeidetBarnetilsyn() ?: emptyList() + val overlapperMedOffentligPeriode = + offentligBarnetilsyn.any { + val periode = Datoperiode(it.periodeFra, it.periodeTil) + val forespørselPeriode = Datoperiode(request.periode.fom, request.periode.tom) + periode.inneholder(forespørselPeriode) + } + val kilde = if (overlapperMedOffentligPeriode) Kilde.OFFENTLIG else Kilde.MANUELL request.id?.let { id -> val barnetilsyn = underholdskostnad.barnetilsyn.find { id == it.id }!! - // dersom periode endres skal kilde alltid være manuell - if (barnetilsyn.fom != request.periode.fom || barnetilsyn.tom != request.periode.tom) { - barnetilsyn.kilde = Kilde.MANUELL - } - + barnetilsyn.kilde = kilde barnetilsyn.fom = request.periode.fom barnetilsyn.tom = request.periode.tom barnetilsyn.under_skolealder = @@ -174,7 +179,7 @@ class UnderholdService( else -> null }, omfang = request.tilsynstype ?: Tilsynstype.IKKE_ANGITT, - kilde = Kilde.MANUELL, + kilde = kilde, underholdskostnad = underholdskostnad, ) underholdskostnad.barnetilsyn.add(barnetilsyn) 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 0bf7a83a..3476ca45 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt @@ -743,7 +743,7 @@ class UnderholdServiceTest { } @Test - open fun `skal ikke endre kilde på offentlig innslag så lenge periode ikke endres`() { + open fun `skal endre kilde på manuell innslag til offentlig hvis periode matcher`() { // gitt val behandling = oppretteTestbehandling( @@ -752,6 +752,14 @@ class UnderholdServiceTest { behandlingstype = TypeBehandling.BIDRAG, ) + behandling.leggeTilGjeldendeBarnetilsyn( + oppretteBarnetilsynGrunnlagDto( + behandling = behandling, + periodeFra = LocalDate.parse("2024-01-01"), + periodeTil = LocalDate.parse("2024-08-01"), + ), + false, + ) val barnIBehandling = behandling.søknadsbarn.first() barnIBehandling.ident.shouldNotBeNull() @@ -765,7 +773,77 @@ class UnderholdServiceTest { Barnetilsyn( id = 1, underholdskostnad = underholdskostnad, - fom = LocalDate.now(), + fom = LocalDate.parse("2023-01-01"), + under_skolealder = true, + kilde = Kilde.MANUELL, + omfang = Tilsynstype.HELTID, + ), + ) + + underholdskostnad.barnetilsyn shouldHaveSize 1 + + val request = + StønadTilBarnetilsynDto( + id = 1, + periode = + DatoperiodeDto( + LocalDate.parse("2024-03-01"), + LocalDate.parse("2024-06-30"), + ), + skolealder = Skolealder.OVER, + tilsynstype = Tilsynstype.DELTID, + ) + + // hvis + underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request) + + // så + val u = behandling.underholdskostnader.first() + u.shouldNotBeNull() + u.barnetilsyn.shouldNotBeEmpty() + u.barnetilsyn shouldHaveSize 1 + + assertSoftly(u.barnetilsyn.first()) { + fom shouldBe request.periode.fom + tom shouldBe request.periode.tom + under_skolealder shouldBe false + omfang shouldBe request.tilsynstype + kilde shouldBe Kilde.OFFENTLIG + } + } + + @Test + open fun `skal endre kilde på offentlig innslag til manuell hvis periode ikke matcher`() { + // gitt + val behandling = + oppretteTestbehandling( + setteDatabaseider = true, + inkludereBp = true, + behandlingstype = TypeBehandling.BIDRAG, + ) + + behandling.leggeTilGjeldendeBarnetilsyn( + oppretteBarnetilsynGrunnlagDto( + behandling = behandling, + periodeFra = LocalDate.parse("2024-01-01"), + periodeTil = LocalDate.parse("2024-08-01"), + ), + false, + ) + val barnIBehandling = behandling.søknadsbarn.first() + barnIBehandling.ident.shouldNotBeNull() + + val underholdskostnad = + behandling.underholdskostnader.find { + barnIBehandling.ident!! == it.barnetsRolleIBehandlingen?.ident + } + underholdskostnad.shouldNotBeNull() + + underholdskostnad.barnetilsyn.add( + Barnetilsyn( + id = 1, + underholdskostnad = underholdskostnad, + fom = LocalDate.parse("2024-01-01"), under_skolealder = true, kilde = Kilde.OFFENTLIG, omfang = Tilsynstype.HELTID, @@ -779,7 +857,7 @@ class UnderholdServiceTest { id = 1, periode = DatoperiodeDto( - LocalDate.now(), + LocalDate.parse("2023-12-01"), null, ), skolealder = Skolealder.OVER, @@ -800,7 +878,7 @@ class UnderholdServiceTest { tom shouldBe request.periode.tom under_skolealder shouldBe false omfang shouldBe request.tilsynstype - kilde shouldBe Kilde.OFFENTLIG + kilde shouldBe Kilde.MANUELL } } } 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 8a5334af..4766e319 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 @@ -1869,6 +1869,7 @@ fun Behandling.leggeTilGjeldendeBarnetilsyn( this, periodeFraAntallMndTilbake = 13, ), + leggTilBarnetilsyn: Boolean = true, ) { this.grunnlag.add( Grunnlag( @@ -1895,12 +1896,14 @@ fun Behandling.leggeTilGjeldendeBarnetilsyn( ), ) - this.grunnlag - .filter { Grunnlagsdatatype.BARNETILSYN == it.type && it.erBearbeidet && it.aktiv != null } - .forEach { g -> - val u = this.underholdskostnader.find { it.person.ident == g.gjelder } - g.konvertereData>()?.tilBarnetilsyn(u!!)?.let { u.barnetilsyn.addAll(it) } - } + if (leggTilBarnetilsyn) { + this.grunnlag + .filter { Grunnlagsdatatype.BARNETILSYN == it.type && it.erBearbeidet && it.aktiv != null } + .forEach { g -> + val u = this.underholdskostnader.find { it.person.ident == g.gjelder } + g.konvertereData>()?.tilBarnetilsyn(u!!)?.let { u.barnetilsyn.addAll(it) } + } + } } fun Behandling.leggeTilNyttBarnetilsyn(