From 671fa82be69cd0053afddc0e499a67e607da1d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Golberg?= Date: Mon, 21 Oct 2024 12:03:50 +0200 Subject: [PATCH] =?UTF-8?q?=C3=85rlig=20Inntektsjustering=20jobb=20(#6053)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Inntektsjustering Jobb starter omregning * Legger til egendefingert hendelse type i testdata * Leser dato til yearmonth * Flyttet oppstartslogikk for årlig inntektsjustering til behandling --- .../src/main/kotlin/Application.kt | 2 + .../behandling/omregning/OmregningService.kt | 3 + .../main/kotlin/config/ApplicationContext.kt | 7 ++ .../AarligInntektsjusteringJobbService.kt | 99 +++++++++++++++++++ .../AarligInntektsjusteringRoute.kt | 20 ++++ .../AarligInntektsjusteringJobbServiceTest.kt | 5 + .../src/main/kotlin/BehandlingService.kt | 11 +++ .../InntektsjusteringJobbRiver.kt | 26 ++--- ...r.kt => InntektsjusteringJobbRiverTest.kt} | 61 +++++++----- .../templates/egendefinert/ny-melding.hbs | 6 +- .../AarligInntektsjusteringRequest.kt | 10 ++ .../src/main/kotlin/token/BrukerTokenInfo.kt | 22 +++-- .../rapidsandrivers/OmregningHendelseType.kt | 2 + .../kotlin/rapidsandrivers/RapidEvents.kt | 3 +- 14 files changed, 223 insertions(+), 54 deletions(-) create mode 100644 apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringJobbService.kt create mode 100644 apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringRoute.kt create mode 100644 apps/etterlatte-behandling/src/test/java/inntektsjustering/AarligInntektsjusteringJobbServiceTest.kt rename apps/etterlatte-oppdater-behandling/src/test/kotlin/{InntektsjusteringJobbRiver.kt => InntektsjusteringJobbRiverTest.kt} (72%) create mode 100644 libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/inntektsjustering/AarligInntektsjusteringRequest.kt diff --git a/apps/etterlatte-behandling/src/main/kotlin/Application.kt b/apps/etterlatte-behandling/src/main/kotlin/Application.kt index 23e0278d92c..93a27ba5a70 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/Application.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/Application.kt @@ -33,6 +33,7 @@ import no.nav.etterlatte.egenansatt.EgenAnsattService import no.nav.etterlatte.egenansatt.egenAnsattRoute import no.nav.etterlatte.grunnlagsendring.doedshendelse.doedshendelseRoute import no.nav.etterlatte.grunnlagsendring.grunnlagsendringshendelseRoute +import no.nav.etterlatte.inntektsjustering.aarligInntektsjusteringRoute import no.nav.etterlatte.institusjonsopphold.InstitusjonsoppholdService import no.nav.etterlatte.institusjonsopphold.institusjonsoppholdRoute import no.nav.etterlatte.kodeverk.kodeverk @@ -187,6 +188,7 @@ private fun Route.settOppRoutes(applicationContext: ApplicationContext) { automatiskRevurderingService = applicationContext.automatiskRevurderingService, ) omregningRoutes(omregningService = applicationContext.omregningService) + aarligInntektsjusteringRoute(service = applicationContext.aarligInntektsjusteringJobbService) migreringRoutes(migreringService = applicationContext.migreringService) bosattUtlandRoutes(bosattUtlandService = applicationContext.bosattUtlandService) behandlingsstatusRoutes(behandlingsstatusService = applicationContext.behandlingsStatusService) diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt index 2edca48377d..6e88f4de347 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/omregning/OmregningService.kt @@ -5,11 +5,14 @@ import no.nav.etterlatte.libs.common.sak.KjoeringRequest import no.nav.etterlatte.libs.common.sak.KjoeringStatus import no.nav.etterlatte.libs.common.sak.LagreKjoeringRequest import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo +import no.nav.etterlatte.libs.ktor.token.HardkodaSystembruker class OmregningService( private val behandlingService: BehandlingService, private val omregningDao: OmregningDao, ) { + fun oppdaterKjoering(request: KjoeringRequest) = oppdaterKjoering(request, HardkodaSystembruker.omregning) + fun oppdaterKjoering( request: KjoeringRequest, bruker: BrukerTokenInfo, diff --git a/apps/etterlatte-behandling/src/main/kotlin/config/ApplicationContext.kt b/apps/etterlatte-behandling/src/main/kotlin/config/ApplicationContext.kt index ad4f1c40c63..7accde22577 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/config/ApplicationContext.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/config/ApplicationContext.kt @@ -98,6 +98,7 @@ import no.nav.etterlatte.grunnlagsendring.doedshendelse.DoedshendelseJobService import no.nav.etterlatte.grunnlagsendring.doedshendelse.DoedshendelseService import no.nav.etterlatte.grunnlagsendring.doedshendelse.DoedshendelserKafkaServiceImpl import no.nav.etterlatte.grunnlagsendring.doedshendelse.kontrollpunkt.DoedshendelseKontrollpunktService +import no.nav.etterlatte.inntektsjustering.AarligInntektsjusteringJobbService import no.nav.etterlatte.institusjonsopphold.InstitusjonsoppholdDao import no.nav.etterlatte.jobs.MetrikkerJob import no.nav.etterlatte.jobs.next @@ -459,6 +460,12 @@ internal class ApplicationContext( omregningDao = omregningDao, ) + val aarligInntektsjusteringJobbService = + AarligInntektsjusteringJobbService( + omregningService = omregningService, + rapid = rapid, + ) + val tilgangService = TilgangServiceImpl(sakTilgangDao) val externalServices: List = diff --git a/apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringJobbService.kt b/apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringJobbService.kt new file mode 100644 index 00000000000..7c3669446c2 --- /dev/null +++ b/apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringJobbService.kt @@ -0,0 +1,99 @@ +package no.nav.etterlatte.inntektsjustering + +import no.nav.etterlatte.behandling.omregning.OmregningService +import no.nav.etterlatte.kafka.JsonMessage +import no.nav.etterlatte.kafka.KafkaProdusent +import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak +import no.nav.etterlatte.libs.common.inntektsjustering.AarligInntektsjusteringRequest +import no.nav.etterlatte.libs.common.logging.getCorrelationId +import no.nav.etterlatte.libs.common.rapidsandrivers.CORRELATION_ID_KEY +import no.nav.etterlatte.libs.common.rapidsandrivers.TEKNISK_TID_KEY +import no.nav.etterlatte.libs.common.sak.KjoeringRequest +import no.nav.etterlatte.libs.common.sak.KjoeringStatus +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.etterlatte.rapidsandrivers.OmregningDataPacket +import no.nav.etterlatte.rapidsandrivers.OmregningHendelseType +import org.slf4j.LoggerFactory +import java.time.Year +import java.time.YearMonth + +class AarligInntektsjusteringJobbService( + private val omregningService: OmregningService, + private val rapid: KafkaProdusent, +) { + private val logger = LoggerFactory.getLogger(this::class.java) + + fun startAarligInntektsjustering(request: AarligInntektsjusteringRequest) { + request.saker.forEach { sakId -> + startEnkeltSak(request.kjoering, request.loependeFom, sakId) + } + } + + private fun startEnkeltSak( + kjoering: String, + loependeFom: YearMonth, + sakId: SakId, + ) { + try { + logger.info("Årlig inntektsjusteringsjobb $kjoering for $sakId") + if (!skalBehandlingOmregnes(loependeFom)) { + // TODO Legge til en begrunnelse + omregningService.oppdaterKjoering(KjoeringRequest(kjoering, KjoeringStatus.FERDIGSTILT, sakId)) + } else if (kanIkkeKjoeresAutomatisk()) { + // TODO Finnes det tilfeller av dette? + } else { + // TODO status KLAR_FOR_OMREGNING + publiserKlarForOmregning(sakId, loependeFom) + } + } catch (e: Exception) { + // TODO begrunnese! + omregningService.oppdaterKjoering(KjoeringRequest(kjoering, KjoeringStatus.FEILA, sakId)) + } + } + + private fun kanIkkeKjoeresAutomatisk(): Boolean { + // TODO + return false + } + + private fun publiserKlarForOmregning( + sakId: SakId, + loependeFom: YearMonth, + ) { + val correlationId = getCorrelationId() + rapid + .publiser( + "aarlig-inntektsjustering-$sakId", + JsonMessage + .newMessage( + OmregningHendelseType.KLAR_FOR_OMREGNING.lagEventnameForType(), + mapOf( + CORRELATION_ID_KEY to correlationId, + TEKNISK_TID_KEY to Tidspunkt.now(), + OmregningDataPacket.KEY to + OmregningData( + kjoering = "Årlig inntektsjustering ${Year.now().plusYears(1)}", + sakId = sakId, + revurderingaarsak = Revurderingaarsak.INNTEKTSENDRING, // TODO egen årsak? + fradato = loependeFom.atDay(1), + ).toPacket(), + ), + ).toJson(), + ).also { (partition, offset) -> + logger.info( + "Publiserte klar for omregningshendelse for $sakId på partition " + + "$partition, offset $offset, correlationid: $correlationId", + ) + } + } + + private fun skalBehandlingOmregnes(loependeFom: YearMonth): Boolean { + // TODO kall vedtakfor så om er innvilga / løpende + + // TODO kall berening for å se om det finnes inntekt fra 1.1 + + return true + } +} diff --git a/apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringRoute.kt b/apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringRoute.kt new file mode 100644 index 00000000000..b5e5a77a10b --- /dev/null +++ b/apps/etterlatte-behandling/src/main/kotlin/inntektsjustering/AarligInntektsjusteringRoute.kt @@ -0,0 +1,20 @@ +package no.nav.etterlatte.inntektsjustering + +import io.ktor.http.HttpStatusCode +import io.ktor.server.application.call +import io.ktor.server.request.receive +import io.ktor.server.response.respond +import io.ktor.server.routing.Route +import io.ktor.server.routing.post +import io.ktor.server.routing.route +import no.nav.etterlatte.libs.common.inntektsjustering.AarligInntektsjusteringRequest + +internal fun Route.aarligInntektsjusteringRoute(service: AarligInntektsjusteringJobbService) { + route("/inntektsjustering") { + post("jobb") { + val request = call.receive() + service.startAarligInntektsjustering(request) + call.respond(HttpStatusCode.OK) + } + } +} diff --git a/apps/etterlatte-behandling/src/test/java/inntektsjustering/AarligInntektsjusteringJobbServiceTest.kt b/apps/etterlatte-behandling/src/test/java/inntektsjustering/AarligInntektsjusteringJobbServiceTest.kt new file mode 100644 index 00000000000..49ded96b8a8 --- /dev/null +++ b/apps/etterlatte-behandling/src/test/java/inntektsjustering/AarligInntektsjusteringJobbServiceTest.kt @@ -0,0 +1,5 @@ +package inntektsjustering + +class AarligInntektsjusteringJobbServiceTest { + // TODO +} diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt index b36c5b5c772..05e6b83211c 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/BehandlingService.kt @@ -20,6 +20,7 @@ import no.nav.etterlatte.libs.common.behandling.OpprettRevurderingForAktivitetsp import no.nav.etterlatte.libs.common.behandling.OpprettRevurderingForAktivitetspliktResponse import no.nav.etterlatte.libs.common.behandling.SakMedBehandlinger import no.nav.etterlatte.libs.common.behandling.SakType +import no.nav.etterlatte.libs.common.inntektsjustering.AarligInntektsjusteringRequest import no.nav.etterlatte.libs.common.oppgave.NyOppgaveDto import no.nav.etterlatte.libs.common.oppgave.OppgaveKilde import no.nav.etterlatte.libs.common.oppgave.OppgaveType @@ -105,6 +106,8 @@ interface BehandlingService { fun hentBehandlingerForSak(foedselsNummerDTO: FoedselsnummerDTO): SakMedBehandlinger + fun startAarligInntektsjustering(request: AarligInntektsjusteringRequest): HttpResponse + fun opprettOppgave( sakId: SakId, oppgaveType: OppgaveType, @@ -276,6 +279,14 @@ class BehandlingServiceImpl( }.body() } + override fun startAarligInntektsjustering(request: AarligInntektsjusteringRequest) = + runBlocking { + behandlingKlient.post("$url/inntektsjustering/jobb") { + contentType(ContentType.Application.Json) + setBody(request) + } + } + override fun opprettOppgave( sakId: SakId, oppgaveType: OppgaveType, diff --git a/apps/etterlatte-oppdater-behandling/src/main/kotlin/inntektsjustering/InntektsjusteringJobbRiver.kt b/apps/etterlatte-oppdater-behandling/src/main/kotlin/inntektsjustering/InntektsjusteringJobbRiver.kt index dab327099aa..6b9ed8fe80e 100644 --- a/apps/etterlatte-oppdater-behandling/src/main/kotlin/inntektsjustering/InntektsjusteringJobbRiver.kt +++ b/apps/etterlatte-oppdater-behandling/src/main/kotlin/inntektsjustering/InntektsjusteringJobbRiver.kt @@ -7,8 +7,7 @@ import no.nav.etterlatte.libs.common.behandling.BehandlingSammendrag import no.nav.etterlatte.libs.common.behandling.BehandlingStatus import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak import no.nav.etterlatte.libs.common.behandling.SakType -import no.nav.etterlatte.libs.common.sak.KjoeringStatus -import no.nav.etterlatte.libs.ktor.route.FoedselsnummerDTO +import no.nav.etterlatte.libs.common.inntektsjustering.AarligInntektsjusteringRequest import no.nav.etterlatte.rapidsandrivers.InntektsjusteringHendelseType import no.nav.etterlatte.rapidsandrivers.ListenerMedLogging import no.nav.etterlatte.rapidsandrivers.RapidEvents.ANTALL @@ -65,6 +64,7 @@ internal class InntektsjusteringJobbRiver( logger = logger, antall = antall, finnSaker = { antallIDenneRunden -> + // TODO eksludere de som allerede er kjørt? behandlingService.hentAlleSaker( kjoering, antallIDenneRunden, @@ -75,22 +75,16 @@ internal class InntektsjusteringJobbRiver( ) }, haandterSaker = { sakerSomSkalInformeres -> - sakerSomSkalInformeres.saker.forEach { sak -> - - logger.info("$kjoering: Klar til å opprette, journalføre og distribuere varsel og vedtak for sakId ${sak.id}") - behandlingService.lagreKjoering(sak.id, KjoeringStatus.STARTA, kjoering) - - val sakMedBehandlinger = behandlingService.hentBehandlingerForSak(FoedselsnummerDTO(sak.ident)) - if (skalBehandlingOmregnes(sakMedBehandlinger.behandlinger, loependeFom)) { - // TODO: START OMREGNING - } else { - behandlingService.lagreKjoering(sak.id, KjoeringStatus.FERDIGSTILT, kjoering) - } - } + logger.info("Starter årlig inntektsjustering $kjoering") + val request = + AarligInntektsjusteringRequest( + kjoering = kjoering, + loependeFom = loependeFom, + saker = sakerSomSkalInformeres.saker.map { it.id }, + ) + behandlingService.startAarligInntektsjustering(request) }, ) - - logger.info("$kjoering: Ferdig") } } diff --git a/apps/etterlatte-oppdater-behandling/src/test/kotlin/InntektsjusteringJobbRiver.kt b/apps/etterlatte-oppdater-behandling/src/test/kotlin/InntektsjusteringJobbRiverTest.kt similarity index 72% rename from apps/etterlatte-oppdater-behandling/src/test/kotlin/InntektsjusteringJobbRiver.kt rename to apps/etterlatte-oppdater-behandling/src/test/kotlin/InntektsjusteringJobbRiverTest.kt index 5ee9fb4a09b..aef59dccbad 100644 --- a/apps/etterlatte-oppdater-behandling/src/test/kotlin/InntektsjusteringJobbRiver.kt +++ b/apps/etterlatte-oppdater-behandling/src/test/kotlin/InntektsjusteringJobbRiverTest.kt @@ -1,4 +1,3 @@ -import io.kotest.matchers.shouldBe import io.mockk.every import io.mockk.mockk import io.mockk.verify @@ -7,7 +6,6 @@ import no.nav.etterlatte.behandling.randomSakId import no.nav.etterlatte.common.Enheter import no.nav.etterlatte.funksjonsbrytere.FeatureToggleService import no.nav.etterlatte.inntektsjustering.InntektsjusteringJobbRiver -import no.nav.etterlatte.inntektsjustering.skalBehandlingOmregnes import no.nav.etterlatte.libs.common.behandling.BehandlingSammendrag import no.nav.etterlatte.libs.common.behandling.BehandlingStatus import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak @@ -28,28 +26,10 @@ import no.nav.helse.rapids_rivers.testsupport.TestRapid import org.junit.jupiter.api.Test import java.time.YearMonth -class InntektsjusteringJobbRiver { +class InntektsjusteringJobbRiverTest { private val kjoering = "inntektsjustering-jobb-2024" private val loependeFom = YearMonth.of(2024, 1) - @Test - fun `skal inkluderes i omregning`() { - val behandlinger = - listOf( - genererBehandlingSammendrag(BehandlingStatus.IVERKSATT, Revurderingaarsak.INNTEKTSENDRING, YearMonth.of(2023, 1)), - genererBehandlingSammendrag(BehandlingStatus.IVERKSATT, Revurderingaarsak.ANNEN, YearMonth.of(2024, 1)), - genererBehandlingSammendrag(BehandlingStatus.AVBRUTT, Revurderingaarsak.INNTEKTSENDRING, YearMonth.of(2024, 1)), - ) - skalBehandlingOmregnes(behandlinger, YearMonth.of(2024, 1)) shouldBe true - } - - @Test - fun `skal IKKE inkluderes i omregning`() { - val behandlinger = - listOf(genererBehandlingSammendrag(BehandlingStatus.IVERKSATT, Revurderingaarsak.INNTEKTSENDRING, YearMonth.of(2024, 1))) - skalBehandlingOmregnes(behandlinger, YearMonth.of(2024, 1)) shouldBe false - } - @Test fun `teste start inntektsjustering jobb aktivert`() { val featureToggleService = @@ -59,7 +39,14 @@ class InntektsjusteringJobbRiver { mockk(relaxed = true).also { every { it.hentAlleSaker(any(), any(), any(), any()) } returns Saker( - listOf(Sak("saksbehandler1", SakType.OMSTILLINGSSTOENAD, randomSakId(), Enheter.PORSGRUNN.enhetNr)), + listOf( + Sak( + "saksbehandler1", + SakType.OMSTILLINGSSTOENAD, + randomSakId(), + Enheter.PORSGRUNN.enhetNr, + ), + ), ) } @@ -68,8 +55,16 @@ class InntektsjusteringJobbRiver { inspector.sendTestMessage(genererMelding(loependeFom)) verify(exactly = 1) { - behandlingServiceMock.hentAlleSaker(kjoering, any(), any(), any(), SakType.OMSTILLINGSSTOENAD, loependeFom = loependeFom) + behandlingServiceMock.hentAlleSaker( + kjoering, + any(), + any(), + any(), + SakType.OMSTILLINGSSTOENAD, + loependeFom = loependeFom, + ) } + // TODO kaller behandling... } @Test @@ -81,7 +76,14 @@ class InntektsjusteringJobbRiver { mockk(relaxed = true).also { every { it.hentAlleSaker(any(), any(), any(), any()) } returns Saker( - listOf(Sak("saksbehandler1", SakType.OMSTILLINGSSTOENAD, randomSakId(), Enheter.PORSGRUNN.enhetNr)), + listOf( + Sak( + "saksbehandler1", + SakType.OMSTILLINGSSTOENAD, + randomSakId(), + Enheter.PORSGRUNN.enhetNr, + ), + ), ) } @@ -90,7 +92,14 @@ class InntektsjusteringJobbRiver { inspector.sendTestMessage(genererMelding(loependeFom)) verify(exactly = 0) { - behandlingServiceMock.hentAlleSaker(kjoering, any(), any(), any(), SakType.OMSTILLINGSSTOENAD, loependeFom = loependeFom) + behandlingServiceMock.hentAlleSaker( + kjoering, + any(), + any(), + any(), + SakType.OMSTILLINGSSTOENAD, + loependeFom = loependeFom, + ) } } @@ -103,7 +112,7 @@ class InntektsjusteringJobbRiver { ANTALL to 12000, SPESIFIKKE_SAKER to listOf(), EKSKLUDERTE_SAKER to listOf(), - LOEPENDE_FOM to loependeFom, + LOEPENDE_FOM to loependeFom.atDay(1), ), ).toJson() diff --git a/apps/etterlatte-testdata/src/main/resources/templates/egendefinert/ny-melding.hbs b/apps/etterlatte-testdata/src/main/resources/templates/egendefinert/ny-melding.hbs index 163984df480..5484cff1cb0 100644 --- a/apps/etterlatte-testdata/src/main/resources/templates/egendefinert/ny-melding.hbs +++ b/apps/etterlatte-testdata/src/main/resources/templates/egendefinert/ny-melding.hbs @@ -24,6 +24,7 @@ @@ -50,7 +51,10 @@ function prefill() { const hendelseType = document.getElementById('hendelseType').value if (hendelseType === 'omregning') { - document.getElementById('json').value = '{"@event_name":"OMREGNING:KLAR_FOR_OMREGNING","hendelse_data":{"sakId":"","fradato":"","revurderingaarsak":""}}' + document.getElementById('json').value = '{"@event_name":"OMREGNING:KLAR_FOR_OMREGNING","hendelse_data":{"sakId":"","fradato":"2024-01-01","revurderingaarsak":""}}' + prettify() + } else if( hendelseType == 'inntektsjusteringjobb') { + document.getElementById('json').value = '{"@event_name": "INNTEKTSJUSTERING:START_INNTEKTSJUSTERING_JOBB","kjoering": "asdf","antall": 1,"loepende_fom": "2024-01-01","spesifikke_saker": "","ekskluderte_saker": ""}' prettify() } else { document.getElementById('json').value = '' diff --git a/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/inntektsjustering/AarligInntektsjusteringRequest.kt b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/inntektsjustering/AarligInntektsjusteringRequest.kt new file mode 100644 index 00000000000..ed56cf325b2 --- /dev/null +++ b/libs/etterlatte-behandling-model/src/main/kotlin/no/nav/etterlatte/libs/common/inntektsjustering/AarligInntektsjusteringRequest.kt @@ -0,0 +1,10 @@ +package no.nav.etterlatte.libs.common.inntektsjustering + +import no.nav.etterlatte.libs.common.sak.SakId +import java.time.YearMonth + +data class AarligInntektsjusteringRequest( + val kjoering: String, + val loependeFom: YearMonth, + val saker: List, +) diff --git a/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt b/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt index ffb035dffff..3f3d5e4ad3f 100644 --- a/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt +++ b/libs/etterlatte-ktor/src/main/kotlin/token/BrukerTokenInfo.kt @@ -78,6 +78,7 @@ data class HardkodaSystembruker private constructor( val oppgave = HardkodaSystembruker(Systembrukere.OPPGAVE) val opprettGrunnlag = HardkodaSystembruker(Systembrukere.OPPRETT_GRUNNLAG) // skal bort på sikt val ryddeBeregning = HardkodaSystembruker(Systembrukere.BEREGNING) + val omregning = HardkodaSystembruker(Systembrukere.OMREGNING) } enum class Systembrukere( @@ -89,6 +90,7 @@ data class HardkodaSystembruker private constructor( TESTDATA("testdata"), OPPGAVE("oppgave"), BEREGNING("beregning"), + OMREGNING("omregning"), } } @@ -113,19 +115,19 @@ data class Saksbehandler internal constructor( } enum class Claims { - /* - This is a special claim used to determine whether a token is a machine-to-machine (app-only) token or a on-behalf-of (user) token. - https://docs.nais.io/auth/entra-id/reference/?h=idtyp#claims - https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims-reference#v10-and-v20-optional-claims-set - */ + /* + This is a special claim used to determine whether a token is a machine-to-machine (app-only) token or a on-behalf-of (user) token. + https://docs.nais.io/auth/entra-id/reference/?h=idtyp#claims + https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims-reference#v10-and-v20-optional-claims-set + */ @Suppress("ktlint:standard:enum-entry-name-case") idtyp, - /* - Kun for Saksbehandlertoken! - The internal identifier for the employees in NAV. Only applies in flows where a user is involved i.e., either the login or on-behalf-of flows. - https://docs.nais.io/auth/entra-id/reference/?h=NAVident#claims - */ + /* + Kun for Saksbehandlertoken! + The internal identifier for the employees in NAV. Only applies in flows where a user is involved i.e., either the login or on-behalf-of flows. + https://docs.nais.io/auth/entra-id/reference/?h=NAVident#claims + */ NAVident, /* diff --git a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/OmregningHendelseType.kt b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/OmregningHendelseType.kt index 2162cab3a5a..768b3ed8d13 100644 --- a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/OmregningHendelseType.kt +++ b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/OmregningHendelseType.kt @@ -44,6 +44,8 @@ enum class OmregningHendelseType : EventnameHendelseType { * Verdier til omregninghendelse vil tilføres underveis i omregningsløpet og flere felter er derfor nødt ti å være mutable. * Derimot er det ønskelig at feltene er immutable og non null etter de blir satt. * Av den grunn er det er feltene tilgjengeliggjort gjennom "hent-" og "endre-" metoder. +* +* OBS! For å ta dette objektet i bruk i en melding er du nødt til å bruke metode "toPacket" for å få alle feltene tilgjengelig. */ data class OmregningData( val kjoering: String, diff --git a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEvents.kt b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEvents.kt index 143aa189a84..d7a434a1e7c 100644 --- a/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEvents.kt +++ b/libs/rapidsandrivers-extras/src/main/kotlin/rapidsandrivers/RapidEvents.kt @@ -7,6 +7,7 @@ import no.nav.etterlatte.rapidsandrivers.RapidEvents.KJOERING import no.nav.etterlatte.rapidsandrivers.RapidEvents.LOEPENDE_FOM import no.nav.etterlatte.rapidsandrivers.RapidEvents.SPESIFIKKE_SAKER import no.nav.helse.rapids_rivers.JsonMessage +import no.nav.helse.rapids_rivers.asLocalDate import java.time.YearMonth object RapidEvents { @@ -18,7 +19,7 @@ object RapidEvents { } var JsonMessage.loependeFom: YearMonth - get() = YearMonth.parse(this[LOEPENDE_FOM].asText()) + get() = this[LOEPENDE_FOM].asLocalDate().let { YearMonth.from(it) } set(value) { this[LOEPENDE_FOM] = value.toString() }