Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fatte vedtak utsett innkreving #642

Merged
merged 3 commits into from
Dec 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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 {}

Expand All @@ -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)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package no.nav.bidrag.behandling.dto.v2.vedtak

data class FatteVedtakRequestDto(
val innkrevingUtsattAntallDager: Long? = null,
)
34 changes: 24 additions & 10 deletions src/main/kotlin/no/nav/bidrag/behandling/service/VedtakService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {}
Expand Down Expand Up @@ -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",
Expand Down Expand Up @@ -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(
Expand All @@ -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" }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,12 @@ private fun Behandling.overskriveBearbeidaBarnetilsynsgrunnlag(
)
}

grunnlagSomSkalOverskrives.find { it.gjelder == gjelder }?.let { it.data = tilJson(perioder) }
grunnlagSomSkalOverskrives.find { it.gjelder == gjelder }?.let {
it.data = tilJson(perioder)
if (overskriveAktiverte) {
it.aktiv = LocalDateTime.now()
}
}
}

fun Behandling.aktivereBarnetilsynHvisIngenEndringerMåAksepteres() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class VedtakControllerTest : KontrollerTestRunner() {
httpHeaderTestRestTemplate.exchange(
"${rootUriV2()}/behandling/fattevedtak/${behandling.id}",
HttpMethod.POST,
HttpEntity(""),
null,
Int::class.java,
)

Expand Down Expand Up @@ -153,7 +153,7 @@ class VedtakControllerTest : KontrollerTestRunner() {
httpHeaderTestRestTemplate.exchange(
"${rootUriV2()}/behandling/fattevedtak/${behandling.id}",
HttpMethod.POST,
HttpEntity(""),
null,
Int::class.java,
)

Expand Down Expand Up @@ -247,7 +247,7 @@ class VedtakControllerTest : KontrollerTestRunner() {
httpHeaderTestRestTemplate.exchange(
"${rootUriV2()}/behandling/fattevedtak/${behandling.id}",
HttpMethod.POST,
HttpEntity(""),
null,
BeregningValideringsfeil::class.java,
)

Expand Down Expand Up @@ -282,7 +282,7 @@ class VedtakControllerTest : KontrollerTestRunner() {
httpHeaderTestRestTemplate.exchange(
"${rootUriV2()}/behandling/fattevedtak/${behandling.id}",
HttpMethod.POST,
HttpEntity(""),
null,
BeregningValideringsfeil::class.java,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -166,15 +167,15 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

assertSoftly(opprettVedtakRequest) {
val request = opprettVedtakRequest
request.type shouldBe Vedtakstype.FASTSETTELSE
withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") {
request.grunnlagListe shouldHaveSize 172
request.grunnlagListe shouldHaveSize 173
}
}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -578,7 +580,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

Expand Down Expand Up @@ -653,7 +655,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

Expand Down Expand Up @@ -741,7 +743,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

Expand Down Expand Up @@ -799,7 +801,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

Expand Down Expand Up @@ -934,7 +936,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

Expand Down Expand Up @@ -1016,7 +1018,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
emptyList(),
)

vedtakService.fatteVedtak(behandling.id!!)
vedtakService.fatteVedtak(behandling.id!!, FatteVedtakRequestDto(innkrevingUtsattAntallDager = 3))

val opprettVedtakRequest = opprettVedtakSlot.captured

Expand Down
Loading