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(