From 29664fb6e7ad44ba13edac1f9b6664adb6ea10bf Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Wed, 11 Dec 2024 13:40:25 +0100 Subject: [PATCH 1/3] Fatte vedtak utsett innkreving --- .../behandling/controller/VedtakController.kt | 5 ++- .../dto/v2/vedtak/FatteVedtakRequestDto.kt | 5 +++ .../behandling/service/VedtakService.kt | 34 +++++++++++++------ .../transformers/underhold/Utvidelser.kt | 5 ++- .../service/VedtakserviceBidragTest.kt | 22 ++++++------ 5 files changed, 49 insertions(+), 22 deletions(-) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/v2/vedtak/FatteVedtakRequestDto.kt diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VedtakController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VedtakController.kt index be1e22ce3..b8a355cf9 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VedtakController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VedtakController.kt @@ -4,9 +4,11 @@ import io.github.oshai.kotlinlogging.KotlinLogging import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement import no.nav.bidrag.behandling.controller.v2.BehandlingRestControllerV2 +import no.nav.bidrag.behandling.dto.v2.vedtak.FatteVedtakRequestDto import no.nav.bidrag.behandling.service.VedtakService import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody private val LOGGER = KotlinLogging.logger {} @@ -22,8 +24,9 @@ class VedtakController( ) fun fatteVedtak( @PathVariable behandlingsid: Long, + @RequestBody(required = false) request: FatteVedtakRequestDto? = null, ): Int { LOGGER.info { "Fatter vedtak for $behandlingsid" } - return vedtakService.fatteVedtak(behandlingsid) + return vedtakService.fatteVedtak(behandlingsid, request) } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/vedtak/FatteVedtakRequestDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/vedtak/FatteVedtakRequestDto.kt new file mode 100644 index 000000000..125c11f7a --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/vedtak/FatteVedtakRequestDto.kt @@ -0,0 +1,5 @@ +package no.nav.bidrag.behandling.dto.v2.vedtak + +data class FatteVedtakRequestDto( + val innkrevingUtsattAntallDager: Long? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/VedtakService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/VedtakService.kt index 9d31f369c..55d47ec15 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/VedtakService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/VedtakService.kt @@ -9,6 +9,7 @@ import no.nav.bidrag.behandling.dto.v1.behandling.OpprettBehandlingResponse import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBeregningBarnDto import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBidragberegningDto import no.nav.bidrag.behandling.dto.v1.beregning.ResultatSærbidragsberegningDto +import no.nav.bidrag.behandling.dto.v2.vedtak.FatteVedtakRequestDto import no.nav.bidrag.behandling.toggleFatteVedtakName import no.nav.bidrag.behandling.transformers.behandling.tilKanBehandlesINyLøsningRequest import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning @@ -27,6 +28,7 @@ import org.springframework.http.HttpStatus import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import org.springframework.web.client.HttpClientErrorException +import java.time.LocalDate import java.time.LocalDateTime private val LOGGER = KotlinLogging.logger {} @@ -157,13 +159,16 @@ class VedtakService( return vedtakTilBehandlingMapping.run { vedtak.tilBeregningResultatSærbidrag() } } - fun fatteVedtak(behandlingId: Long): Int { + fun fatteVedtak( + behandlingId: Long, + request: FatteVedtakRequestDto? = null, + ): Int { val behandling = behandlingService.hentBehandlingById(behandlingId) behandling.validerKanFatteVedtak() return when (behandling.tilType()) { TypeBehandling.FORSKUDD -> fatteVedtakForskudd(behandling) TypeBehandling.SÆRBIDRAG -> fatteVedtakSærbidrag(behandling) - TypeBehandling.BIDRAG -> fatteVedtakBidrag(behandling) + TypeBehandling.BIDRAG -> fatteVedtakBidrag(behandling, request) else -> throw HttpClientErrorException( HttpStatus.BAD_REQUEST, "Fatte vedtak av behandlingstype ${behandling.tilType()} støttes ikke", @@ -232,7 +237,10 @@ class VedtakService( return response.vedtaksid } - fun fatteVedtakBidrag(behandling: Behandling): Int { + fun fatteVedtakBidrag( + behandling: Behandling, + request: FatteVedtakRequestDto?, + ): Int { val isEnabled = unleashInstance.isEnabled(toggleFatteVedtakName, false) if (isEnabled.not()) { throw HttpClientErrorException( @@ -243,13 +251,19 @@ class VedtakService( vedtakValiderBehandlingService.validerKanBehandlesINyLøsning(behandling.tilKanBehandlesINyLøsningRequest()) validering.run { behandling.validerForBeregningBidrag() } val request = - behandlingTilVedtakMapping.run { - if (behandling.avslag != null) { - behandling.byggOpprettVedtakRequestAvslagForBidrag() - } else { - behandling.byggOpprettVedtakRequestBidrag() - } - } + behandlingTilVedtakMapping + .run { + if (behandling.avslag != null) { + behandling.byggOpprettVedtakRequestAvslagForBidrag() + } else { + behandling.byggOpprettVedtakRequestBidrag() + } + }.copy( + innkrevingUtsattTilDato = + request?.innkrevingUtsattAntallDager?.let { + LocalDate.now().plusDays(it) + }, + ) request.validerGrunnlagsreferanser() secureLogger.info { "Fatter vedtak for behandling ${behandling.id} med forespørsel $request" } 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 42146cb19..f9b47cf68 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 @@ -154,7 +154,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 = LocalDateTime.now() + } } fun Behandling.aktivereBarnetilsynHvisIngenEndringerMåAksepteres() { diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt index e9277c790..9de382626 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt @@ -13,6 +13,7 @@ import io.mockk.verify import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.RolleManueltOverstyrtGebyr +import no.nav.bidrag.behandling.dto.v2.vedtak.FatteVedtakRequestDto import no.nav.bidrag.behandling.service.NotatService.Companion.henteNotatinnhold import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagsreferanse import no.nav.bidrag.behandling.utils.harReferanseTilGrunnlag @@ -166,7 +167,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -174,7 +175,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") { - request.grunnlagListe shouldHaveSize 172 + request.grunnlagListe shouldHaveSize 173 } } @@ -283,6 +284,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { validerNotater(behandling) hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_INNTEKTSBASERT_GEBYR) shouldHaveSize 2 hentGrunnlagstyper(Grunnlagstype.SLUTTBEREGNING_GEBYR) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.NOTAT) shouldHaveSize 6 hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 28 hentGrunnlagstyper(Grunnlagstype.SJABLON_BIDRAGSEVNE) shouldHaveSize 3 hentGrunnlagstyper(Grunnlagstype.SJABLON_MAKS_FRADRAG) shouldHaveSize 2 @@ -392,7 +394,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { behandling.bidragsmottaker!!.manueltOverstyrtGebyr = RolleManueltOverstyrtGebyr(true, false, "Begrunnelse") - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -511,7 +513,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { behandling.bidragspliktig!!.harGebyrsøknad = false behandling.søknadsbarn.first().innbetaltBeløp = BigDecimal(10000) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -578,7 +580,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -653,7 +655,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -741,7 +743,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -799,7 +801,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -934,7 +936,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured @@ -1016,7 +1018,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { emptyList(), ) - vedtakService.fatteVedtak(behandling.id!!) + vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3)) val opprettVedtakRequest = opprettVedtakSlot.captured From 41f604dbede72baff09821fe926f7c5e2c968c3d Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Wed, 11 Dec 2024 13:57:11 +0100 Subject: [PATCH 2/3] Fatte vedtak utsett innkreving --- .../bidrag/behandling/controller/VedtakControllerTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt index 9274eec4c..922e9ca96 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/VedtakControllerTest.kt @@ -108,7 +108,7 @@ class VedtakControllerTest : KontrollerTestRunner() { httpHeaderTestRestTemplate.exchange( "${rootUriV2()}/behandling/fattevedtak/${behandling.id}", HttpMethod.POST, - HttpEntity(""), + null, Int::class.java, ) @@ -153,7 +153,7 @@ class VedtakControllerTest : KontrollerTestRunner() { httpHeaderTestRestTemplate.exchange( "${rootUriV2()}/behandling/fattevedtak/${behandling.id}", HttpMethod.POST, - HttpEntity(""), + null, Int::class.java, ) @@ -247,7 +247,7 @@ class VedtakControllerTest : KontrollerTestRunner() { httpHeaderTestRestTemplate.exchange( "${rootUriV2()}/behandling/fattevedtak/${behandling.id}", HttpMethod.POST, - HttpEntity(""), + null, BeregningValideringsfeil::class.java, ) @@ -282,7 +282,7 @@ class VedtakControllerTest : KontrollerTestRunner() { httpHeaderTestRestTemplate.exchange( "${rootUriV2()}/behandling/fattevedtak/${behandling.id}", HttpMethod.POST, - HttpEntity(""), + null, BeregningValideringsfeil::class.java, ) From 4451e0e5d4d2f86a1c00db635f5be62a3cde0f6c Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Wed, 11 Dec 2024 14:36:29 +0100 Subject: [PATCH 3/3] Fatte vedtak utsett innkreving --- .../bidrag/behandling/transformers/underhold/Utvidelser.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 f9b47cf68..2d13c412a 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 @@ -156,7 +156,9 @@ private fun Behandling.overskriveBearbeidaBarnetilsynsgrunnlag( grunnlagSomSkalOverskrives.find { it.gjelder == gjelder }?.let { it.data = tilJson(perioder) - it.aktiv = LocalDateTime.now() + if (overskriveAktiverte) { + it.aktiv = LocalDateTime.now() + } } }