diff --git a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt index 9c5d090cae..5fea77246e 100644 --- a/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt +++ b/apps/etterlatte-vedtaksvurdering/src/main/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingService.kt @@ -431,7 +431,10 @@ class VedtakBehandlingService( val iverksattVedtakLocal = repository.iverksattVedtak(behandlingId, tx = tx).also { runBlocking { - behandlingKlient.iverksett(behandlingId, brukerTokenInfo, it.id) + val iverksattBehandling = behandlingKlient.iverksett(behandlingId, brukerTokenInfo, it.id) + if (!iverksattBehandling) { + throw BehandlingIverksettelseException(behandlingId) + } } } iverksattVedtakLocal @@ -754,6 +757,10 @@ class BehandlingstilstandException( vedtak: Vedtak, ) : IllegalStateException("Statussjekk for behandling ${vedtak.behandlingId} feilet") +class BehandlingIverksettelseException( + behandlingId: UUID, +) : InternfeilException("Iverksettelse av behandling $behandlingId feilet") + class ManglerAvkortetYtelse : UgyldigForespoerselException( code = "VEDTAKSVURDERING_MANGLER_AVKORTET_YTELSE", diff --git a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt index d8c68a9a79..04a9490c55 100644 --- a/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt +++ b/apps/etterlatte-vedtaksvurdering/src/test/kotlin/no/nav/etterlatte/vedtaksvurdering/VedtakBehandlingServiceTest.kt @@ -1089,6 +1089,57 @@ internal class VedtakBehandlingServiceTest( ikkeIverksattVedtak.status shouldBe VedtakStatus.ATTESTERT } + @Test + fun `skal rulle tilbake vedtak ved iverksatt dersom behandling returnerer false`() { + val behandlingId = randomUUID() + val virkningstidspunkt = VIRKNINGSTIDSPUNKT_JAN_2023 + val gjeldendeSaksbehandler = saksbehandler + val attestant = attestant + coEvery { behandlingKlientMock.kanFatteVedtak(any(), any()) } returns true + coEvery { behandlingKlientMock.hentSak(any(), any()) } returns + Sak( + SAKSBEHANDLER_1, + SakType.BARNEPENSJON, + sakId1, + ENHET_1, + ) + coEvery { behandlingKlientMock.kanAttestereVedtak(any(), any(), any()) } returns true + coEvery { behandlingKlientMock.attesterVedtak(any(), any()) } returns true + coEvery { behandlingKlientMock.fattVedtakBehandling(any(), any()) } returns true + coEvery { behandlingKlientMock.hentBehandling(any(), any()) } returns + mockBehandling( + virkningstidspunkt, + behandlingId, + ) + coEvery { vilkaarsvurderingKlientMock.hentVilkaarsvurdering(any(), any()) } returns mockVilkaarsvurdering() + coEvery { beregningKlientMock.hentBeregningOgAvkorting(any(), any(), any()) } returns + BeregningOgAvkorting( + beregning = mockBeregning(virkningstidspunkt, behandlingId), + avkorting = null, + ) + + coEvery { behandlingKlientMock.iverksett(any(), any(), any()) } returns false + coEvery { trygdetidKlientMock.hentTrygdetid(any(), any()) } returns trygdetidDtoUtenDiff() + + runBlocking { + repository.opprettVedtak( + opprettVedtak(virkningstidspunkt = virkningstidspunkt, behandlingId = behandlingId), + ) + service.fattVedtak(behandlingId, gjeldendeSaksbehandler) + service.attesterVedtak(behandlingId, KOMMENTAR, attestant) + } + + assertThrows { + runBlocking { + service.iverksattVedtak(behandlingId, attestant) + } + } + val ikkeIverksattVedtak = repository.hentVedtak(behandlingId)!! + ikkeIverksattVedtak shouldNotBe null + ikkeIverksattVedtak.status shouldNotBe VedtakStatus.IVERKSATT + ikkeIverksattVedtak.status shouldBe VedtakStatus.ATTESTERT + } + @Test fun `skal ikke sette vedtak til iverksatt naar vedtak ikke er attestert`() { val behandlingId = randomUUID()