From e2003163c82028a31a2e1dfa24a98d4b5d46f65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kjetil=20Sk=C3=A5r?= <43172034+s148719@users.noreply.github.com> Date: Fri, 6 Dec 2024 14:33:01 +0100 Subject: [PATCH] =?UTF-8?q?Hente=20inn=20grunnlag=20for=20tilleggsst=C3=B8?= =?UTF-8?q?nad=20(#630)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Hente inn grunnlag for tilleggsstønad --- .../consumer/Grunnlagsobjektvelger.kt | 8 +- .../controller/VisningsnavnController.kt | 1 + .../database/datamodell/Enumtyper.kt | 1 + .../behandling/dto/v1/behandling/RolleDto.kt | 1 + .../dto/v2/behandling/BehandlingDtoV2.kt | 3 + .../behandling/service/BeregningService.kt | 1 + .../behandling/service/GrunnlagService.kt | 21 +++-- .../transformers/BeregningDtoMapping.kt | 28 ------- .../behandling/transformers/Dtomapper.kt | 10 ++- .../behandling/transformers/Sortering.kt | 1 + .../behandling/transformers/Validering.kt | 1 + .../behandling/BehandlingDtoMapping.kt | 27 ++++++- .../transformers/grunnlag/Grunnlagsmapping.kt | 2 + .../service/BehandlingServiceTest.kt | 2 +- .../behandling/service/GrunnlagServiceTest.kt | 56 +++++++++++-- .../transformers/DtoMapperMockTest.kt | 44 ++++++++++ .../behandling/transformers/DtoMapperTest.kt | 81 ++++++++++++++++++- ...pons-bidrag-tilleggsst\303\270nad-bm.json" | 20 +++++ 18 files changed, 258 insertions(+), 50 deletions(-) create mode 100644 "src/test/resources/__files/hente-grunnlagrespons-bidrag-tilleggsst\303\270nad-bm.json" diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/Grunnlagsobjektvelger.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/Grunnlagsobjektvelger.kt index 77fd99216..621946f5f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/Grunnlagsobjektvelger.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/Grunnlagsobjektvelger.kt @@ -54,11 +54,7 @@ enum class Grunnlagsobjektvelger( TypeBehandling.SÆRBIDRAG to setOf(Rolletype.BIDRAGSPLIKTIG), ), ), - SIVILSTAND( - mapOf( - TypeBehandling.FORSKUDD to setOf(Rolletype.BIDRAGSMOTTAKER), - ), - ), + SIVILSTAND(mapOf(TypeBehandling.FORSKUDD to setOf(Rolletype.BIDRAGSMOTTAKER))), SKATTEGRUNNLAG( mapOf( TypeBehandling.BIDRAG to setOf(Rolletype.BIDRAGSMOTTAKER, Rolletype.BIDRAGSPLIKTIG, Rolletype.BARN), @@ -71,6 +67,7 @@ enum class Grunnlagsobjektvelger( ), ), ), + TILLEGGSSTØNAD(mapOf(TypeBehandling.BIDRAG to setOf(Rolletype.BIDRAGSMOTTAKER))), UTVIDET_BARNETRYGD_OG_SMÅBARNSTILLEGG( mapOf( TypeBehandling.BIDRAG to setOf(Rolletype.BIDRAGSMOTTAKER), @@ -81,6 +78,7 @@ enum class Grunnlagsobjektvelger( ; companion object { + @OptIn(ExperimentalStdlibApi::class) fun requestobjekter( behandlingstype: TypeBehandling, rolletype: Rolletype, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt index 7e590285e..0092d17f2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.GetMapping @BehandlingRestControllerV1 class VisningsnavnController { + @OptIn(ExperimentalStdlibApi::class) @Suppress("unused") @GetMapping("/visningsnavn") fun hentVisningsnavn(): Map = diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt index 727b152c5..f8dd1a4c6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt @@ -2,6 +2,7 @@ package no.nav.bidrag.behandling.database.datamodell import no.nav.bidrag.domene.enums.vedtak.VirkningstidspunktÅrsakstype +@OptIn(ExperimentalStdlibApi::class) fun String.tilÅrsakstype(): VirkningstidspunktÅrsakstype? { return try { VirkningstidspunktÅrsakstype.valueOf(this) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/behandling/RolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/behandling/RolleDto.kt index 487463906..e020e53ac 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/behandling/RolleDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/behandling/RolleDto.kt @@ -9,4 +9,5 @@ data class RolleDto( val ident: String? = null, val navn: String? = null, val fødselsdato: LocalDate? = null, + val harInnvilgetTilleggsstønad: Boolean? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/behandling/BehandlingDtoV2.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/behandling/BehandlingDtoV2.kt index 75a749513..fe6ec4049 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/behandling/BehandlingDtoV2.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/behandling/BehandlingDtoV2.kt @@ -474,6 +474,7 @@ enum class Grunnlagsdatatype( TypeBehandling.SÆRBIDRAG to setOf(Rolletype.BIDRAGSMOTTAKER, Rolletype.BIDRAGSPLIKTIG, Rolletype.BARN), ), ), + TILLEGGSSTØNAD(mapOf(TypeBehandling.BIDRAG to setOf(Rolletype.BIDRAGSMOTTAKER))), @Deprecated("Erstattes av SKATTEPLIKTIGE_INNTEKTER") @Schema(deprecated = true) @@ -506,6 +507,7 @@ enum class Grunnlagsdatatype( ; companion object { + @OptIn(ExperimentalStdlibApi::class) fun grunnlagsdatatypeobjekter( behandlingstype: TypeBehandling, rolletype: Rolletype? = null, @@ -520,6 +522,7 @@ enum class Grunnlagsdatatype( false -> entries.filter { it.behandlingstypeMotRolletyper.keys.contains(behandlingstype) }.toSet() } + @OptIn(ExperimentalStdlibApi::class) fun gjeldende() = Grunnlagsdatatype.entries.filter { it.erGjeldende } } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt index b5ccb4edf..6c642331d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt @@ -213,6 +213,7 @@ class BeregningService( ) // TODO: For testing av evnevurdering. Skal fjernes når testing er ferdig + @OptIn(ExperimentalStdlibApi::class) fun beregnBPsLavesteInntektForEvne(behandling: Behandling): BigDecimal { val bidragsevneBeregning = BidragsevneBeregning() val sjablonListe = hentSjabloner() diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/GrunnlagService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/GrunnlagService.kt index a4b65a645..e9e4c0419 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/GrunnlagService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/GrunnlagService.kt @@ -725,12 +725,14 @@ class GrunnlagService( if (nyesteBearbeidaBarnetilsynFørLagring.isEmpty() && nyesteBearbeidaBarnetilsynEtterLagring.isNotEmpty()) { grunnlag.barnetilsynListe.groupBy { it.barnPersonId }.forEach { barnetilsyn -> - behandling.underholdskostnader.find { it.barnetsRolleIBehandlingen?.personident?.verdi == barnetilsyn.key }?.let { - if (it.barnetilsyn.isEmpty()) { - it.barnetilsyn.addAll(barnetilsyn.value.toSet().tilBarnetilsyn(it)) - it.harTilsynsordning = true + behandling.underholdskostnader + .find { it.barnetsRolleIBehandlingen?.personident?.verdi == barnetilsyn.key } + ?.let { + if (it.barnetilsyn.isEmpty()) { + it.barnetilsyn.addAll(barnetilsyn.value.toSet().tilBarnetilsyn(it)) + it.harTilsynsordning = true + } } - } } } @@ -1655,6 +1657,15 @@ class GrunnlagService( ) } + Grunnlagsdatatype.TILLEGGSSTØNAD -> { + lagreGrunnlagHvisEndret( + behandling, + rolleInhentetFor, + Grunnlagstype(grunnlagsdatatype, false), + innhentetGrunnlag.tilleggsstønadBarnetilsynListe.toSet(), + ) + } + Grunnlagsdatatype.UTVIDET_BARNETRYGD -> { lagreGrunnlagHvisEndret( behandling, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt index 222345ada..df7a63758 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt @@ -20,7 +20,6 @@ import no.nav.bidrag.behandling.dto.v2.behandling.UtgiftspostDto import no.nav.bidrag.behandling.dto.v2.underhold.DatoperiodeDto import no.nav.bidrag.behandling.dto.v2.underhold.UnderholdskostnadDto import no.nav.bidrag.behandling.transformers.behandling.tilDto -import no.nav.bidrag.behandling.transformers.gebyr.tilDto import no.nav.bidrag.behandling.transformers.utgift.tilBeregningDto import no.nav.bidrag.behandling.transformers.utgift.tilDto import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BeregnGebyrResultat @@ -454,33 +453,6 @@ fun List.tilUnderholdskostnadDto() = ) }.toSet() -fun List.finneFaktiskTilsynsutgiftsperioder(): List = - this - .filtrerBasertPåEgenReferanse( - Grunnlagstype.FAKTISK_UTGIFT_PERIODE, - ).innholdTilObjekt() - .sortedBy { - it.periode.fom - } - -fun List.finneTilleggsstønadsperioder(): List = - this - .filtrerBasertPåEgenReferanse( - Grunnlagstype.TILLEGGSSTØNAD_PERIODE, - ).innholdTilObjekt() - .sortedBy { - it.periode.fom - } - -fun List.finneBarnetilleggsperioder(): List = - this - .filtrerBasertPåEgenReferanse( - Grunnlagstype.BARNETILLEGG_PERIODE, - ).innholdTilObjekt() - .sortedBy { - it.periode.fom - } - fun List.finnAlleDelberegningUnderholdskostnad(): List = this .filtrerBasertPåEgenReferanse( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Dtomapper.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Dtomapper.kt index f94e1aea8..58c0b381e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Dtomapper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Dtomapper.kt @@ -585,8 +585,7 @@ class Dtomapper( søknadsid = soknadsid, behandlerenhet = behandlerEnhet, gebyr = mapGebyr(), - roller = - roller.map { it.tilDto() }.toSet(), + roller = roller.map { it.tilDto() }.toSet(), søknadRefId = soknadRefId, vedtakRefId = refVedtaksid, virkningstidspunkt = @@ -767,10 +766,13 @@ class Dtomapper( ?.filter { it.relasjon != Familierelasjon.BARN } ?.filter { it.fødselsdato == null || - it.fødselsdato!!.withDayOfMonth(1).isBefore(behandling.virkningstidspunktEllerSøktFomDato.minusYears(18)) + it.fødselsdato!! + .withDayOfMonth(1) + .isBefore(behandling.virkningstidspunktEllerSøktFomDato.minusYears(18)) }?.filter { it.borISammeHusstandDtoListe.any { p -> - val periodeBorHosBP = ÅrMånedsperiode(p.periodeFra!!.withDayOfMonth(1), p.periodeTil?.withDayOfMonth(1)?.minusDays(1)) + val periodeBorHosBP = + ÅrMånedsperiode(p.periodeFra!!.withDayOfMonth(1), p.periodeTil?.withDayOfMonth(1)?.minusDays(1)) val periodeBPErInnenfor = periodeBorHosBP.fom >= periode.fom && periodeBorHosBP.til != null && diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Sortering.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Sortering.kt index cf44287ac..23deed812 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Sortering.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Sortering.kt @@ -38,6 +38,7 @@ val årsinntekterPrioriteringsliste = Inntektsrapportering.LIGNINGSINNTEKT, ) +@OptIn(ExperimentalStdlibApi::class) val manuelleInntekter = Inntektsrapportering.entries.filter { it.kanLeggesInnManuelt } val ligningsinntekter = listOf( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Validering.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Validering.kt index b029e1389..58a694c80 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Validering.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Validering.kt @@ -91,6 +91,7 @@ fun Behandling.validerKanOppdatere() { } } +@OptIn(ExperimentalStdlibApi::class) fun OpprettBehandlingRequest.valider() { val feilliste = mutableListOf() (stønadstype == null && engangsbeløpstype == null).ifTrue { diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt index 0af2e1183..9e24789b0 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt @@ -58,6 +58,7 @@ import no.nav.bidrag.sivilstand.response.SivilstandBeregnet import no.nav.bidrag.transport.behandling.grunnlag.response.BarnetilsynGrunnlagDto import no.nav.bidrag.transport.behandling.grunnlag.response.FeilrapporteringDto import no.nav.bidrag.transport.behandling.grunnlag.response.SivilstandGrunnlagDto +import no.nav.bidrag.transport.behandling.grunnlag.response.TilleggsstønadGrunnlagDto import no.nav.bidrag.transport.behandling.inntekt.response.SummertMånedsinntekt import no.nav.bidrag.transport.felles.ifTrue import java.time.LocalDate @@ -111,7 +112,31 @@ fun Behandling.tilBehandlingDetaljerDtoV2() = }, ) -fun Rolle.tilDto() = RolleDto(id!!, rolletype, ident, navn ?: hentPersonVisningsnavn(ident), fødselsdato) +fun Rolle.tilDto() = + RolleDto( + id!!, + rolletype, + ident, + navn ?: hentPersonVisningsnavn(ident), + fødselsdato, + this.harInnvilgetTilleggsstønad(), + ) + +fun Rolle.harInnvilgetTilleggsstønad(): Boolean? { + val tilleggsstønad = + this.behandling.grunnlag + .filter { Grunnlagsdatatype.TILLEGGSSTØNAD == it.type && !it.erBearbeidet } + .filter { this == it.rolle } + + if (tilleggsstønad.isNotEmpty()) { + return tilleggsstønad + .maxBy { it.innhentet } + .konvertereData>() + ?.first() + ?.harInnvilgetVedtak + } + return null +} fun Map.tilGrunnlagsinnhentingsfeil(behandling: Behandling) = this diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/grunnlag/Grunnlagsmapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/grunnlag/Grunnlagsmapping.kt index f8870db81..72748f5ad 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/grunnlag/Grunnlagsmapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/grunnlag/Grunnlagsmapping.kt @@ -33,6 +33,8 @@ val summertYtelsetyper = Inntektsrapportering.SMÅBARNSTILLEGG, Inntektsrapportering.UTVIDET_BARNETRYGD, ) + +@OptIn(ExperimentalStdlibApi::class) val summertSkattegrunnlagstyper = Inntektsrapportering.entries .filter { !it.kanLeggesInnManuelt && it.hentesAutomatisk } 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 c2238df73..033494a7c 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -247,7 +247,7 @@ class BehandlingServiceTest : TestContainerRunner() { .filter { Inntektsrapportering.AINNTEKT_BEREGNET_3MND == it.rapporteringstype } .size shouldBe 1 - behandlingDto.feilOppståttVedSisteGrunnlagsinnhenting?.shouldHaveSize(11) + behandlingDto.feilOppståttVedSisteGrunnlagsinnhenting?.shouldHaveSize(12) } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/GrunnlagServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/GrunnlagServiceTest.kt index 02b26d5e5..64c853f83 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/GrunnlagServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/GrunnlagServiceTest.kt @@ -80,8 +80,6 @@ import no.nav.bidrag.transport.behandling.grunnlag.response.UtvidetBarnetrygdGru import no.nav.bidrag.transport.behandling.inntekt.response.SummertÅrsinntekt import no.nav.bidrag.transport.felles.commonObjectmapper import org.assertj.core.api.Assertions.assertThat -import org.assertj.core.error.ShouldHaveDimensions.shouldHaveSize -import org.assertj.core.error.ShouldHaveSize.shouldHaveSize import org.junit.experimental.runners.Enclosed import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.DisplayName @@ -535,6 +533,49 @@ class GrunnlagServiceTest : TestContainerRunner() { gbp.filter { it.erBearbeidet } shouldHaveSize 5 } } + + @Test + @Transactional + open fun `skal hente og lagre informasjon om tillegsstønad`() { + // gitt + val behandling = + oppretteTestbehandling( + false, + false, + false, + inkludereBp = true, + behandlingstype = TypeBehandling.BIDRAG, + ) + testdataManager.lagreBehandlingNewTransaction(behandling) + + stubbeHentingAvPersoninfoForTestpersoner() + stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) + behandling.roller.forEach { + when (it.rolletype) { + Rolletype.BIDRAGSMOTTAKER -> + stubUtils.stubHenteGrunnlag( + rolle = it, + navnResponsfil = "hente-grunnlagrespons-bidrag-tilleggsstønad-bm.json", + ) + + else -> stubUtils.stubHenteGrunnlag(rolle = it, tomRespons = true) + } + } + + behandling.grunnlag + .filter { Rolletype.BIDRAGSMOTTAKER == it.rolle.rolletype } + .filter { Grunnlagsdatatype.TILLEGGSSTØNAD == it.type && !it.erBearbeidet } shouldHaveSize 0 + + // hvis + grunnlagService.oppdatereGrunnlagForBehandling(behandling) + + // så + behandling.grunnlagSistInnhentet?.toLocalDate() shouldBe LocalDate.now() + + behandling.grunnlag + .filter { Rolletype.BIDRAGSMOTTAKER == it.rolle.rolletype } + .filter { Grunnlagsdatatype.TILLEGGSSTØNAD == it.type && !it.erBearbeidet } shouldHaveSize 1 + } } @Nested @@ -1172,7 +1213,9 @@ class GrunnlagServiceTest : TestContainerRunner() { val alleAktiveGrunnlag = behandling.grunnlag.filter { it.aktiv != null } alleAktiveGrunnlag.size shouldBe 3 val sistInnhentaSmåbarnstillegg = - behandling.grunnlag.filter { Grunnlagsdatatype.SMÅBARNSTILLEGG == it.type }.maxBy { it.innhentet } + behandling.grunnlag + .filter { Grunnlagsdatatype.SMÅBARNSTILLEGG == it.type } + .maxBy { it.innhentet } sistInnhentaSmåbarnstillegg.aktiv shouldBe null val gjeldendeSmåbarnstillegg = @@ -4347,7 +4390,8 @@ class GrunnlagServiceTest : TestContainerRunner() { @Transactional open fun `skal ikke lagre ny innhenting av skattegrunnlag med teknisk feil dersom forrige innhenting var OK`() { // gitt - val behandling = oppretteTestbehandling(true, setteDatabaseider = true, inkludereInntektsgrunnlag = true) + val behandling = + oppretteTestbehandling(true, setteDatabaseider = true, inkludereInntektsgrunnlag = true) val skattegrunnlag = behandling.grunnlag @@ -4494,7 +4538,8 @@ class GrunnlagServiceTest : TestContainerRunner() { @Transactional open fun `skal lagre endret skattegrunnlag med teknisk feil dersom forrige innhenting hadde teknisk feil`() { // gitt - val behandling = oppretteTestbehandling(true, setteDatabaseider = true, inkludereInntektsgrunnlag = true) + val behandling = + oppretteTestbehandling(true, setteDatabaseider = true, inkludereInntektsgrunnlag = true) val skattegrunnlag = behandling.grunnlag @@ -4871,6 +4916,7 @@ fun oppretteFeilrapporteringerForPerson( feiltype: HentGrunnlagFeiltype = HentGrunnlagFeiltype.TEKNISK_FEIL, ): List = oppretteFeilrapporteringer(setOf(personident), feiltype) +@OptIn(ExperimentalStdlibApi::class) fun oppretteFeilrapporteringer( personidenter: Set, feiltype: HentGrunnlagFeiltype = HentGrunnlagFeiltype.TEKNISK_FEIL, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperMockTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperMockTest.kt index fa0fce3b4..012d8c2b7 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperMockTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperMockTest.kt @@ -5,11 +5,14 @@ import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.nulls.shouldBeNull import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe import io.mockk.every import io.mockk.impl.annotations.MockK import io.mockk.junit5.MockKExtension +import no.nav.bidrag.behandling.database.datamodell.Grunnlag import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.RolleManueltOverstyrtGebyr +import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagsdatatype import no.nav.bidrag.behandling.service.BeregningEvnevurderingService import no.nav.bidrag.behandling.service.PersonService import no.nav.bidrag.behandling.service.TilgangskontrollService @@ -18,6 +21,7 @@ import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning 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.opprettGyldigBehandlingForBeregningOgVedtak +import no.nav.bidrag.behandling.utils.testdata.oppretteTestbehandling import no.nav.bidrag.beregn.barnebidrag.BeregnBarnebidragApi import no.nav.bidrag.beregn.barnebidrag.BeregnGebyrApi import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi @@ -28,11 +32,15 @@ import no.nav.bidrag.domene.enums.beregning.Resultatkode import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.transport.behandling.grunnlag.response.TilleggsstønadGrunnlagDto +import no.nav.bidrag.transport.felles.commonObjectmapper +import org.assertj.core.error.ShouldNotBeNull import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import stubPersonConsumer import java.math.BigDecimal +import java.time.LocalDateTime @ExtendWith(MockKExtension::class) class DtoMapperMockTest { @@ -277,4 +285,40 @@ class DtoMapperMockTest { it.begrunnelse shouldBe null } } + + @Test + fun `skal legge til informasjon om tilleggsstønad`() { + // gitt + val behandling = + oppretteTestbehandling( + setteDatabaseider = true, + inkludereBp = true, + behandlingstype = TypeBehandling.BIDRAG, + ) + + val innhentetForRolle = behandling.bidragsmottaker!! + val tilleggsstønadsgrunnlag = TilleggsstønadGrunnlagDto(innhentetForRolle.personident!!.verdi, true) + val innhentetGrunnlag = + Grunnlag( + behandling, + Grunnlagsdatatype.TILLEGGSSTØNAD, + false, + commonObjectmapper.writeValueAsString(setOf(tilleggsstønadsgrunnlag)), + LocalDateTime.now(), + rolle = innhentetForRolle, + ) + behandling.grunnlag.add(innhentetGrunnlag) + + every { validerBehandlingService.kanBehandlesINyLøsning(any()) } returns null + + // hvis + val dto = dtomapper.tilDto(behandling) + + // så + assertSoftly(dto.roller.find { Rolletype.BIDRAGSMOTTAKER == it.rolletype }) { + ShouldNotBeNull.shouldNotBeNull() + it!!.harInnvilgetTilleggsstønad shouldNotBe null + it.harInnvilgetTilleggsstønad shouldBe true + } + } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperTest.kt index c7389542a..6bde35b38 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/transformers/DtoMapperTest.kt @@ -27,7 +27,10 @@ import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrun import no.nav.bidrag.behandling.utils.testdata.TestdataManager import no.nav.bidrag.behandling.utils.testdata.oppretteArbeidsforhold import no.nav.bidrag.behandling.utils.testdata.oppretteTestbehandling +import no.nav.bidrag.behandling.utils.testdata.testdataBM +import no.nav.bidrag.behandling.utils.testdata.testdataBP import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 +import no.nav.bidrag.behandling.utils.testdata.testdataBarn2 import no.nav.bidrag.beregn.barnebidrag.BeregnBarnebidragApi import no.nav.bidrag.beregn.barnebidrag.BeregnGebyrApi import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi @@ -45,8 +48,10 @@ import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.sivilstand.dto.Sivilstand import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag import no.nav.bidrag.transport.behandling.grunnlag.response.BarnetilsynGrunnlagDto +import no.nav.bidrag.transport.behandling.grunnlag.response.TilleggsstønadGrunnlagDto import no.nav.bidrag.transport.felles.commonObjectmapper import no.nav.bidrag.transport.person.PersonDto +import org.assertj.core.error.ShouldNotBeNull.shouldNotBeNull import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.Nested @@ -301,7 +306,8 @@ class DtoMapperTest : TestContainerRunner() { ikkeAktivereGrunnlagsdata.stønadTilBarnetilsyn.stønadTilBarnetilsyn.shouldHaveSize(1) - val nyttBarnetilsyn = ikkeAktivereGrunnlagsdata.stønadTilBarnetilsyn.stønadTilBarnetilsyn[Personident(testdataBarn1.ident)] + val nyttBarnetilsyn = + ikkeAktivereGrunnlagsdata.stønadTilBarnetilsyn.stønadTilBarnetilsyn[Personident(testdataBarn1.ident)] nyttBarnetilsyn?.shouldHaveSize(3) assertSoftly(nyttBarnetilsyn!!.elementAt(0)) { @@ -474,6 +480,7 @@ class DtoMapperTest : TestContainerRunner() { @Test fun `skal mappe ident, navn, og begrunnelse til annet barn`() { + // gitt val behandling = oppretteTestbehandling( setteDatabaseider = true, @@ -514,5 +521,77 @@ class DtoMapperTest : TestContainerRunner() { dto.gjelderBarn.ident.shouldBeNull() dto.begrunnelse shouldBe "Underholdskostnad for Bms andre barn" } + + @Test + fun `skal legge til informasjon om tilleggsstønad`() { + // gitt + val behandling = + oppretteTestbehandling( + setteDatabaseider = true, + inkludereBp = true, + behandlingstype = TypeBehandling.BIDRAG, + ) + + val innhentetForRolle = behandling.bidragsmottaker!! + val tilleggsstønadsgrunnlag = TilleggsstønadGrunnlagDto(innhentetForRolle.personident!!.verdi, true) + val innhentetGrunnlag = + Grunnlag( + behandling, + Grunnlagsdatatype.TILLEGGSSTØNAD, + false, + commonObjectmapper.writeValueAsString(setOf(tilleggsstønadsgrunnlag)), + LocalDateTime.now(), + rolle = innhentetForRolle, + ) + behandling.grunnlag.add(innhentetGrunnlag) + + every { validerBehandlingService.kanBehandlesINyLøsning(any()) } returns null + + every { personService.hentPerson(innhentetForRolle.personident!!.verdi) } returns + PersonDto( + ident = innhentetForRolle.personident!!, + navn = testdataBM.navn, + fødselsdato = testdataBM.fødselsdato, + ) + + every { personService.hentNyesteIdent(testdataBP.ident) } returns Personident(testdataBP.ident) + + every { personService.hentPerson(innhentetForRolle.personident!!.verdi) } returns + PersonDto( + ident = innhentetForRolle.personident!!, + navn = testdataBP.navn, + fødselsdato = testdataBP.fødselsdato, + ) + + every { personService.hentNyesteIdent(testdataBM.ident) } returns Personident(testdataBM.ident) + + every { personService.hentPerson(testdataBarn1.ident) } returns + PersonDto( + ident = Personident(testdataBarn1.ident), + navn = testdataBarn1.navn, + fødselsdato = testdataBarn1.fødselsdato, + ) + + every { personService.hentNyesteIdent(testdataBarn1.ident) } returns Personident(testdataBarn1.ident) + + every { personService.hentPerson(testdataBarn2.ident) } returns + PersonDto( + ident = Personident(testdataBarn1.ident), + navn = testdataBarn1.navn, + fødselsdato = testdataBarn1.fødselsdato, + ) + + every { personService.hentNyesteIdent(testdataBarn2.ident) } returns Personident(testdataBarn2.ident) + + // hvis + val dto = dtomapper.tilDto(behandling) + + // så + assertSoftly(dto.roller.find { Rolletype.BIDRAGSMOTTAKER == it.rolletype }) { + shouldNotBeNull() + it!!.harInnvilgetTilleggsstønad shouldNotBe null + it.harInnvilgetTilleggsstønad shouldBe true + } + } } } diff --git "a/src/test/resources/__files/hente-grunnlagrespons-bidrag-tilleggsst\303\270nad-bm.json" "b/src/test/resources/__files/hente-grunnlagrespons-bidrag-tilleggsst\303\270nad-bm.json" new file mode 100644 index 000000000..00e1dfc37 --- /dev/null +++ "b/src/test/resources/__files/hente-grunnlagrespons-bidrag-tilleggsst\303\270nad-bm.json" @@ -0,0 +1,20 @@ +{ + "ainntektListe": [], + "arbeidsforholdListe": [], + "barnetilleggListe": [], + "barnetilsynListe": [], + "hentetTidspunkt": "2024-01-16T15:10:44.003848261", + "husstandsmedlemmerOgEgneBarnListe": [], + "kontantstøtteListe": [], + "sivilstandListe": [], + "skattegrunnlagListe": [], + "småbarnstilleggListe": [], + "tilleggsstønadBarnetilsynListe": [ + { + "partPersonId": "313213213", + "harInnvilgetVedtak": true + } + ], + "utvidetBarnetrygdListe": [], + "feilrapporteringListe": [] +} \ No newline at end of file