From 3c803a6148a3fd74a01415419e425916a57c5793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Golberg?= Date: Thu, 7 Nov 2024 18:26:44 +0100 Subject: [PATCH] =?UTF-8?q?Videref=C3=B8re=20inntekt=20inn=20i=20nytt=20?= =?UTF-8?q?=C3=A5r=20under=20=C3=A5rlig=20innntektsjustering=20(#6259)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Videreføre inntekt inn i nytt år under årlig innntektsjustering * Legger ved år for å kunne verifisere inntekt som videreføres --- .../beregningkafka/BeregningService.kt | 22 ++++++ .../OmregningHendelserBeregningRiver.kt | 38 ++++++---- .../OmregningHendelserBeregningRiverTest.kt | 68 ++++++++++++------ .../src/main/kotlin/Application.kt | 7 +- .../AarligInntektsjusteringService.kt | 69 +++++++++++++++++++ .../main/kotlin/avkorting/AvkortingRoutes.kt | 24 +++++-- .../main/kotlin/avkorting/AvkortingService.kt | 29 ++------ .../main/kotlin/config/ApplicationContext.kt | 7 ++ .../kotlin/avkorting/AvkortingRoutesTest.kt | 8 ++- .../src/main/kotlin/BeregningDTO.kt | 6 ++ 10 files changed, 214 insertions(+), 64 deletions(-) create mode 100644 apps/etterlatte-beregning/src/main/kotlin/avkorting/AarligInntektsjusteringService.kt diff --git a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt index 6ab90b0ed3f..a474da2b3a9 100644 --- a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt +++ b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/BeregningService.kt @@ -5,10 +5,14 @@ import io.ktor.client.call.body import io.ktor.client.request.get import io.ktor.client.request.post import io.ktor.client.request.put +import io.ktor.client.request.setBody import io.ktor.client.statement.HttpResponse +import io.ktor.http.ContentType +import io.ktor.http.contentType import io.ktor.http.isSuccess import kotlinx.coroutines.runBlocking import no.nav.etterlatte.grunnbeloep.Grunnbeloep +import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingRequest import java.util.UUID class BeregningService( @@ -61,6 +65,24 @@ class BeregningService( beregningApp.get("$url/api/beregning/avkorting/$behandlingId/ferdig") } + fun omregnAarligInntektsjustering( + aar: Int, + behandlingId: UUID, + forrigeBehandlingId: UUID, + ): HttpResponse = + runBlocking { + beregningApp.post("$url/api/beregning/avkorting/aarlig-inntektsjustering") { + contentType(ContentType.Application.Json) + setBody( + AarligInntektsjusteringAvkortingRequest( + aar = aar, + nyBehandling = behandlingId, + forrigeBehandling = forrigeBehandlingId, + ), + ) + } + } + suspend fun hentGrunnbeloep(): Grunnbeloep = beregningApp .get("$url/api/beregning/grunnbeloep") diff --git a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt index 1e8fc322f22..1a83f881fea 100644 --- a/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt +++ b/apps/etterlatte-beregning-kafka/src/main/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiver.kt @@ -16,6 +16,7 @@ import no.nav.etterlatte.rapidsandrivers.BEREGNING_KEY import no.nav.etterlatte.rapidsandrivers.HENDELSE_DATA_KEY import no.nav.etterlatte.rapidsandrivers.Kontekst import no.nav.etterlatte.rapidsandrivers.ListenerMedLoggingOgFeilhaandtering +import no.nav.etterlatte.rapidsandrivers.OmregningData import no.nav.etterlatte.rapidsandrivers.OmregningDataPacket import no.nav.etterlatte.rapidsandrivers.OmregningHendelseType import no.nav.etterlatte.rapidsandrivers.ReguleringEvents @@ -59,11 +60,8 @@ internal class OmregningHendelserBeregningRiver( ) { logger.info("Mottatt omregninghendelse") val omregningData = packet.omregningData - val behandlingId = omregningData.hentBehandlingId() - val behandlingViOmregnerFra = omregningData.hentForrigeBehandlingid() - val sakType = omregningData.hentSakType() runBlocking { - val beregning = beregn(sakType, omregningData.revurderingaarsak, behandlingId, behandlingViOmregnerFra) + val beregning = beregn(omregningData) packet[BEREGNING_KEY] = beregning.beregning // TODO bør vi ha slike ting her? @@ -76,12 +74,12 @@ internal class OmregningHendelserBeregningRiver( logger.info("Publiserte oppdatert omregningshendelse") } - internal suspend fun beregn( - sakType: SakType, - revurderingaarsak: Revurderingaarsak, - behandlingId: UUID, - behandlingViOmregnerFra: UUID, - ): BeregningOgAvkorting { + internal suspend fun beregn(omregningData: OmregningData): BeregningOgAvkorting { + val behandlingId = omregningData.hentBehandlingId() + val behandlingViOmregnerFra = omregningData.hentForrigeBehandlingid() + val sakType = omregningData.hentSakType() + val fraDato = omregningData.hentFraDato() + val revurderingaarsak = omregningData.revurderingaarsak beregningService.opprettBeregningsgrunnlagFraForrigeBehandling(behandlingId, behandlingViOmregnerFra) beregningService.tilpassOverstyrtBeregningsgrunnlagForRegulering(behandlingId) val beregning = beregningService.beregn(behandlingId).body() @@ -95,9 +93,23 @@ internal class OmregningHendelserBeregningRiver( return if (sakType == SakType.OMSTILLINGSSTOENAD) { val avkorting = - beregningService - .omregnAvkorting(behandlingId, behandlingViOmregnerFra) - .body() + when (revurderingaarsak) { + Revurderingaarsak.AARLIG_INNTEKTSJUSTERING -> { + beregningService + .omregnAarligInntektsjustering( + aar = fraDato.year, + behandlingId = behandlingId, + forrigeBehandlingId = behandlingViOmregnerFra, + ).body() + } + + else -> { + beregningService + .omregnAvkorting(behandlingId, behandlingViOmregnerFra) + .body() + } + } + val forrigeAvkorting = beregningService .hentAvkorting(behandlingViOmregnerFra) diff --git a/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiverTest.kt b/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiverTest.kt index 5a2a29b810a..3175e43d47e 100644 --- a/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiverTest.kt +++ b/apps/etterlatte-beregning-kafka/src/test/kotlin/no/nav/etterlatte/beregningkafka/OmregningHendelserBeregningRiverTest.kt @@ -16,13 +16,16 @@ import no.nav.etterlatte.libs.common.beregning.BeregningDTO import no.nav.etterlatte.libs.common.beregning.Beregningsperiode import no.nav.etterlatte.libs.common.beregning.Beregningstype import no.nav.etterlatte.libs.common.grunnlag.Metadata +import no.nav.etterlatte.libs.common.sak.SakId import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt +import no.nav.etterlatte.rapidsandrivers.OmregningData import no.nav.helse.rapids_rivers.RapidsConnection import no.nav.helse.rapids_rivers.River import org.junit.jupiter.api.Assertions.assertNotNull import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import java.math.BigDecimal +import java.time.LocalDate import java.time.Month import java.time.YearMonth import java.util.UUID @@ -54,10 +57,15 @@ class OmregningHendelserBeregningRiverTest { runBlocking { river.beregn( - SakType.BARNEPENSJON, - revurderingaarsak = Revurderingaarsak.REGULERING, - behandlingId = nyBehandling, - behandlingViOmregnerFra = gammelBehandling, + OmregningData( + kjoering = "", + sakId = SakId(123L), + sakType = SakType.BARNEPENSJON, + revurderingaarsak = Revurderingaarsak.REGULERING, + behandlingId = nyBehandling, + forrigeBehandlingId = gammelBehandling, + fradato = LocalDate.of(2024, 1, 1), + ), ) } } @@ -89,10 +97,15 @@ class OmregningHendelserBeregningRiverTest { runBlocking { assertThrows { river.beregn( - SakType.BARNEPENSJON, - revurderingaarsak = Revurderingaarsak.REGULERING, - behandlingId = nyBehandling, - behandlingViOmregnerFra = gammelBehandling, + OmregningData( + kjoering = "", + sakId = SakId(123L), + sakType = SakType.BARNEPENSJON, + revurderingaarsak = Revurderingaarsak.REGULERING, + behandlingId = nyBehandling, + forrigeBehandlingId = gammelBehandling, + fradato = LocalDate.of(2024, 1, 1), + ), ) } } @@ -126,10 +139,15 @@ class OmregningHendelserBeregningRiverTest { runBlocking { river.beregn( - SakType.BARNEPENSJON, - revurderingaarsak = Revurderingaarsak.REGULERING, - behandlingId = nyBehandling, - behandlingViOmregnerFra = gammelBehandling, + OmregningData( + kjoering = "", + sakId = SakId(123L), + sakType = SakType.BARNEPENSJON, + revurderingaarsak = Revurderingaarsak.REGULERING, + behandlingId = nyBehandling, + forrigeBehandlingId = gammelBehandling, + fradato = LocalDate.of(2024, 1, 1), + ), ) } } @@ -161,10 +179,15 @@ class OmregningHendelserBeregningRiverTest { runBlocking { assertThrows { river.beregn( - SakType.BARNEPENSJON, - revurderingaarsak = Revurderingaarsak.REGULERING, - behandlingId = nyBehandling, - behandlingViOmregnerFra = gammelBehandling, + OmregningData( + kjoering = "", + sakId = SakId(123L), + sakType = SakType.BARNEPENSJON, + revurderingaarsak = Revurderingaarsak.REGULERING, + behandlingId = nyBehandling, + forrigeBehandlingId = gammelBehandling, + fradato = LocalDate.of(2024, 1, 1), + ), ) } } @@ -197,10 +220,15 @@ class OmregningHendelserBeregningRiverTest { runBlocking { val resultat = river.beregn( - SakType.BARNEPENSJON, - revurderingaarsak = Revurderingaarsak.REGULERING, - behandlingId = nyBehandling, - behandlingViOmregnerFra = gammelBehandling, + OmregningData( + kjoering = "", + sakId = SakId(123L), + sakType = SakType.BARNEPENSJON, + revurderingaarsak = Revurderingaarsak.REGULERING, + behandlingId = nyBehandling, + forrigeBehandlingId = gammelBehandling, + fradato = LocalDate.of(2024, 1, 1), + ), ) assertNotNull(resultat) diff --git a/apps/etterlatte-beregning/src/main/kotlin/Application.kt b/apps/etterlatte-beregning/src/main/kotlin/Application.kt index 94966cde519..f71280aa5ac 100644 --- a/apps/etterlatte-beregning/src/main/kotlin/Application.kt +++ b/apps/etterlatte-beregning/src/main/kotlin/Application.kt @@ -31,7 +31,12 @@ class Server( ) { beregning(beregningService, behandlingKlient) beregningsGrunnlag(beregningsGrunnlagService, behandlingKlient) - avkorting(avkortingService, behandlingKlient, avkortingTidligAlderspensjonService) + avkorting( + avkortingService, + behandlingKlient, + avkortingTidligAlderspensjonService, + aarligInntektsjusteringService, + ) ytelseMedGrunnlag(ytelseMedGrunnlagService, behandlingKlient) grunnbeloep(grunnbeloepService) sanksjon(sanksjonService, behandlingKlient) diff --git a/apps/etterlatte-beregning/src/main/kotlin/avkorting/AarligInntektsjusteringService.kt b/apps/etterlatte-beregning/src/main/kotlin/avkorting/AarligInntektsjusteringService.kt new file mode 100644 index 00000000000..c900a14d92b --- /dev/null +++ b/apps/etterlatte-beregning/src/main/kotlin/avkorting/AarligInntektsjusteringService.kt @@ -0,0 +1,69 @@ +package no.nav.etterlatte.avkorting + +import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingSjekkRequest +import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingSjekkResponse +import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagLagreDto +import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException +import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo +import no.nav.etterlatte.sanksjon.SanksjonService +import org.slf4j.LoggerFactory +import java.time.YearMonth +import java.util.UUID + +class AarligInntektsjusteringService( + private val avkortingService: AvkortingService, + private val avkortingRepository: AvkortingRepository, + private val sanksjonService: SanksjonService, +) { + private val logger = LoggerFactory.getLogger(this::class.java) + + fun hentSjekkAarligInntektsjustering( + request: AarligInntektsjusteringAvkortingSjekkRequest, + ): AarligInntektsjusteringAvkortingSjekkResponse { + val sanksjoner = sanksjonService.hentSanksjon(request.sisteBehandling) + return AarligInntektsjusteringAvkortingSjekkResponse( + sakId = request.sakId, + aar = request.aar, + harInntektForAar = avkortingRepository.harSakInntektForAar(request), + harSanksjon = sanksjoner?.any { it.tom == null } ?: false, + ) + } + + suspend fun kopierAarligInntektsjustering( + aar: Int, + behandlingId: UUID, + forrigeBehandlingId: UUID, + brukerTokenInfo: BrukerTokenInfo, + ): Avkorting { + avkortingService.tilstandssjekk(behandlingId, brukerTokenInfo) + logger.info("Oppretter avkorting for nytt inntektsår med siste inntekt fra behandling=$forrigeBehandlingId") + val forrigeAvkorting = avkortingService.hentForrigeAvkorting(forrigeBehandlingId) + + val siseInntekt = + forrigeAvkorting.aarsoppgjoer + .last() + .inntektsavkorting + .last() + .grunnlag + + with(siseInntekt.periode) { + if (fom.year != aar - 1 || (tom != null && tom?.year != aar - 1)) { + throw InternfeilException("Årlig inntektsjustering feilet - inntekt som overføres er i feil år") + } + } + + val nyttGrunnlag = + AvkortingGrunnlagLagreDto( + inntektTom = siseInntekt.inntektTom, + fratrekkInnAar = 0, + inntektUtlandTom = siseInntekt.inntektUtlandTom, + fratrekkInnAarUtland = 0, + spesifikasjon = siseInntekt.spesifikasjon, + fom = YearMonth.of(aar, 1), + ) + + avkortingService.beregnAvkortingMedNyttGrunnlag(behandlingId, brukerTokenInfo, nyttGrunnlag) + return avkortingRepository.hentAvkorting(behandlingId) + ?: throw AvkortingFinnesIkkeException(behandlingId) + } +} diff --git a/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingRoutes.kt b/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingRoutes.kt index 8dd13bdd95a..1a5dea37e3f 100644 --- a/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingRoutes.kt +++ b/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingRoutes.kt @@ -10,6 +10,7 @@ import io.ktor.server.routing.get import io.ktor.server.routing.post import io.ktor.server.routing.route import no.nav.etterlatte.klienter.BehandlingKlient +import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingRequest import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingSjekkRequest import no.nav.etterlatte.libs.common.beregning.AvkortetYtelseDto import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagDto @@ -26,6 +27,7 @@ fun Route.avkorting( avkortingService: AvkortingService, behandlingKlient: BehandlingKlient, tidligAlderspensjonService: AvkortingTidligAlderspensjonService, + aarligInntektsjusteringService: AarligInntektsjusteringService, ) { val logger = routeLogger @@ -87,13 +89,25 @@ fun Route.avkorting( } } - route("/api/beregning/avkorting/aarlig-inntektsjustering-sjekk") { - post { - val harInntektForAarDto = call.receive() - logger.info("Henter har inntekt for ${harInntektForAarDto.aar} for sakId=${harInntektForAarDto.sakId}") - val respons = avkortingService.hentSjekkAarligInntektsjustering(harInntektForAarDto) + route("/api/beregning/avkorting") { + post("aarlig-inntektsjustering-sjekk") { + val request = call.receive() + logger.info("Henter har inntekt for ${request.aar} for sakId=${request.sakId}") + val respons = aarligInntektsjusteringService.hentSjekkAarligInntektsjustering(request) call.respond(respons) } + post("aarlig-inntektsjustering") { + val request = call.receive() + logger.info("Oppretter avkorting nytt år for behandling=${request.nyBehandling}") + val respons = + aarligInntektsjusteringService.kopierAarligInntektsjustering( + aar = request.aar, + behandlingId = request.nyBehandling, + forrigeBehandlingId = request.forrigeBehandling, + brukerTokenInfo = brukerTokenInfo, + ) + call.respond(respons.toDto()) + } } } diff --git a/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingService.kt b/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingService.kt index 2ad65f1df8b..3ffb9645e86 100644 --- a/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingService.kt +++ b/apps/etterlatte-beregning/src/main/kotlin/avkorting/AvkortingService.kt @@ -10,8 +10,6 @@ import no.nav.etterlatte.libs.common.behandling.BehandlingStatus import no.nav.etterlatte.libs.common.behandling.BehandlingType import no.nav.etterlatte.libs.common.behandling.DetaljertBehandling import no.nav.etterlatte.libs.common.behandling.virkningstidspunkt -import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingSjekkRequest -import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingSjekkResponse import no.nav.etterlatte.libs.common.beregning.AvkortingDto import no.nav.etterlatte.libs.common.beregning.AvkortingFrontend import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagLagreDto @@ -56,7 +54,6 @@ class AvkortingService( val reberegnetAvkorting = reberegnOgLagreAvkorting( behandling, - behandling.sak, eksisterendeAvkorting, brukerTokenInfo, BehandlingType.FØRSTEGANGSBEHANDLING, @@ -71,13 +68,12 @@ class AvkortingService( val forrigeAvkorting = hentAvkortingForrigeBehandling(behandling.sak, brukerTokenInfo) return if (eksisterendeAvkorting == null) { val nyAvkorting = - kopierOgReberegnAvkorting(behandling, behandling.sak, forrigeAvkorting, brukerTokenInfo) + kopierOgReberegnAvkorting(behandling, forrigeAvkorting, brukerTokenInfo) avkortingMedTillegg(nyAvkorting, behandling, forrigeAvkorting) } else if (behandling.status == BehandlingStatus.BEREGNET) { val reberegnetAvkorting = reberegnOgLagreAvkorting( behandling, - behandling.sak, eksisterendeAvkorting, brukerTokenInfo, BehandlingType.REVURDERING, @@ -88,18 +84,6 @@ class AvkortingService( } } - fun hentSjekkAarligInntektsjustering( - request: AarligInntektsjusteringAvkortingSjekkRequest, - ): AarligInntektsjusteringAvkortingSjekkResponse { - val sanksjoner = sanksjonService.hentSanksjon(request.sisteBehandling) - return AarligInntektsjusteringAvkortingSjekkResponse( - sakId = request.sakId, - aar = request.aar, - harInntektForAar = avkortingRepository.harSakInntektForAar(request), - harSanksjon = sanksjoner?.any { it.tom == null } ?: false, - ) - } - suspend fun hentFullfoertAvkorting( behandlingId: UUID, brukerTokenInfo: BrukerTokenInfo, @@ -184,12 +168,11 @@ class AvkortingService( logger.info("Kopierer avkorting fra forrige behandling med behandlingId=$forrigeBehandlingId") val forrigeAvkorting = hentForrigeAvkorting(forrigeBehandlingId) val behandling = behandlingKlient.hentBehandling(behandlingId, brukerTokenInfo) - return kopierOgReberegnAvkorting(behandling, behandling.sak, forrigeAvkorting, brukerTokenInfo) + return kopierOgReberegnAvkorting(behandling, forrigeAvkorting, brukerTokenInfo) } private suspend fun kopierOgReberegnAvkorting( behandling: DetaljertBehandling, - sakId: SakId, forrigeAvkorting: Avkorting, brukerTokenInfo: BrukerTokenInfo, ): Avkorting { @@ -197,7 +180,6 @@ class AvkortingService( val kopiertAvkorting = forrigeAvkorting.kopierAvkorting(opphoerFraOgMed) return reberegnOgLagreAvkorting( behandling, - sakId, kopiertAvkorting, brukerTokenInfo, behandling.behandlingType, @@ -206,7 +188,6 @@ class AvkortingService( private suspend fun reberegnOgLagreAvkorting( behandling: DetaljertBehandling, - sakId: SakId, avkorting: Avkorting, brukerTokenInfo: BrukerTokenInfo, behandlingType: BehandlingType, @@ -215,7 +196,7 @@ class AvkortingService( val beregning = beregningService.hentBeregningNonnull(behandling.id) val sanksjoner = sanksjonService.hentSanksjon(behandling.id) ?: emptyList() val beregnetAvkorting = avkorting.beregnAvkortingRevurdering(beregning, sanksjoner) - avkortingRepository.lagreAvkorting(behandling.id, sakId, beregnetAvkorting) + avkortingRepository.lagreAvkorting(behandling.id, behandling.sak, beregnetAvkorting) val lagretAvkorting = hentAvkortingNonNull(behandling.id) settBehandlingStatusAvkortet(brukerTokenInfo, behandling, behandlingType, lagretAvkorting) return lagretAvkorting @@ -258,11 +239,11 @@ class AvkortingService( return hentForrigeAvkorting(forrigeBehandlingId) } - private fun hentForrigeAvkorting(forrigeBehandlingId: UUID): Avkorting = + fun hentForrigeAvkorting(forrigeBehandlingId: UUID): Avkorting = avkortingRepository.hentAvkorting(forrigeBehandlingId) ?: throw TidligereAvkortingFinnesIkkeException(forrigeBehandlingId) - private suspend fun tilstandssjekk( + suspend fun tilstandssjekk( behandlingId: UUID, bruker: BrukerTokenInfo, ) { diff --git a/apps/etterlatte-beregning/src/main/kotlin/config/ApplicationContext.kt b/apps/etterlatte-beregning/src/main/kotlin/config/ApplicationContext.kt index 4c44e80d9ed..4e34c03adc4 100644 --- a/apps/etterlatte-beregning/src/main/kotlin/config/ApplicationContext.kt +++ b/apps/etterlatte-beregning/src/main/kotlin/config/ApplicationContext.kt @@ -2,6 +2,7 @@ package no.nav.etterlatte.config import com.typesafe.config.Config import com.typesafe.config.ConfigFactory +import no.nav.etterlatte.avkorting.AarligInntektsjusteringService import no.nav.etterlatte.avkorting.AvkortingRepository import no.nav.etterlatte.avkorting.AvkortingService import no.nav.etterlatte.avkorting.AvkortingTidligAlderspensjonService @@ -118,6 +119,12 @@ class ApplicationContext { behandlingKlient = behandlingKlient, avkortingRepository = avkortingRepository, ) + val aarligInntektsjusteringService = + AarligInntektsjusteringService( + avkortingService = avkortingService, + avkortingRepository = avkortingRepository, + sanksjonService = sanksjonService, + ) val ytelseMedGrunnlagService = YtelseMedGrunnlagService( beregningRepository = beregningRepository, diff --git a/apps/etterlatte-beregning/src/test/kotlin/avkorting/AvkortingRoutesTest.kt b/apps/etterlatte-beregning/src/test/kotlin/avkorting/AvkortingRoutesTest.kt index f10b5276a5d..b2426c21e44 100644 --- a/apps/etterlatte-beregning/src/test/kotlin/avkorting/AvkortingRoutesTest.kt +++ b/apps/etterlatte-beregning/src/test/kotlin/avkorting/AvkortingRoutesTest.kt @@ -43,6 +43,7 @@ class AvkortingRoutesTest { private val behandlingKlient = mockk() private val avkortingService = mockk() private val avkortingTidligAlderspensjonService = mockk() + private val aarligInntektsjusteringService = mockk() @BeforeAll fun beforeAll() { @@ -180,7 +181,12 @@ class AvkortingRoutesTest { private fun testApplication(block: suspend ApplicationTestBuilder.() -> Unit) { io.ktor.server.testing.testApplication { runServer(mockOAuth2Server) { - avkorting(avkortingService, behandlingKlient, avkortingTidligAlderspensjonService) + avkorting( + avkortingService, + behandlingKlient, + avkortingTidligAlderspensjonService, + aarligInntektsjusteringService, + ) } block(this) } diff --git a/libs/etterlatte-beregning-model/src/main/kotlin/BeregningDTO.kt b/libs/etterlatte-beregning-model/src/main/kotlin/BeregningDTO.kt index 938375a149e..2133caa201d 100644 --- a/libs/etterlatte-beregning-model/src/main/kotlin/BeregningDTO.kt +++ b/libs/etterlatte-beregning-model/src/main/kotlin/BeregningDTO.kt @@ -156,3 +156,9 @@ data class AarligInntektsjusteringAvkortingSjekkResponse( val harInntektForAar: Boolean, val harSanksjon: Boolean, ) + +data class AarligInntektsjusteringAvkortingRequest( + val aar: Int, + val forrigeBehandling: UUID, + val nyBehandling: UUID, +)