diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt index 73bc58f6093..96cfd57d4d4 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingDao.kt @@ -25,6 +25,7 @@ import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak import no.nav.etterlatte.libs.common.behandling.TidligereFamiliepleier import no.nav.etterlatte.libs.common.behandling.Utlandstilknytning import no.nav.etterlatte.libs.common.behandling.Virkningstidspunkt +import no.nav.etterlatte.libs.common.feilhaandtering.InternfeilException import no.nav.etterlatte.libs.common.feilhaandtering.checkInternFeil import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning import no.nav.etterlatte.libs.common.gyldigSoeknad.GyldighetsResultat @@ -290,10 +291,16 @@ class BehandlingDao( } fun lagreStatus(lagretBehandling: Behandling) { + if (lagretBehandling.status == BehandlingStatus.AVBRUTT) { + throw InternfeilException( + "Behandlinger skal ikke avbrytes med status direkte, siden vi da mangler " + + "utsending av statistikkmelding og lagring av behandlingshendelse.", + ) + } lagreStatus(lagretBehandling.id, lagretBehandling.status, lagretBehandling.sistEndret) } - fun lagreStatus( + private fun lagreStatus( behandlingId: UUID, status: BehandlingStatus, sistEndret: LocalDateTime, diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt index 242484a9b62..0de09aef068 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingFactory.kt @@ -186,6 +186,17 @@ class BehandlingFactory( ): BehandlingOgOppgave { logger.info("Starter behandling i sak $sakId") val prosessType = Prosesstype.MANUELL + val harBehandlingUnderbehandling = + request.alleBehandlingerISak.filter { behandling -> + BehandlingStatus.underBehandling().find { it == behandling.status } != null + } + if (harBehandlingUnderbehandling.isNotEmpty()) { + throw UgyldigForespoerselException( + "HAR_AAPEN_BEHANDLING", + "Sak $sakId har allerede en åpen " + + "behandling. Denne må avbrytes eller ferdigbehandles før ny behandling kan opprettes.", + ) + } return if (request.harIverksattBehandling()) { if (kilde == Vedtaksloesning.PESYS || kilde == Vedtaksloesning.GJENOPPRETTA) { throw ManuellMigreringHarEksisterendeIverksattBehandling() @@ -210,10 +221,6 @@ class BehandlingFactory( ).oppdater() .let { BehandlingOgOppgave(it, null) } } else { - val harBehandlingUnderbehandling = - request.alleBehandlingerISak.filter { behandling -> - BehandlingStatus.underBehandling().find { it == behandling.status } != null - } val behandling = opprettFoerstegangsbehandling( harBehandlingUnderbehandling, @@ -452,9 +459,11 @@ class BehandlingFactory( kilde: Vedtaksloesning, prosessType: Prosesstype, ): Behandling { - behandlingerUnderBehandling.forEach { - behandlingDao.lagreStatus(it.id, BehandlingStatus.AVBRUTT, LocalDateTime.now()) - oppgaveService.avbrytAapneOppgaverMedReferanse(it.id.toString()) + if (behandlingerUnderBehandling.isNotEmpty()) { + throw InternfeilException( + "Det skal ikke være mulig å komme til opprettelse av førstegangsbehandling med " + + "åpne behandlinger i saken.", + ) } return OpprettBehandling( diff --git a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt index 55cde09d994..22bb6562e73 100644 --- a/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt +++ b/apps/etterlatte-behandling/src/main/kotlin/behandling/BehandlingStatusService.kt @@ -19,8 +19,6 @@ import no.nav.etterlatte.libs.common.oppgave.OppgaveType import no.nav.etterlatte.libs.common.oppgave.VedtakEndringDTO import no.nav.etterlatte.libs.common.sak.SakIDListe import no.nav.etterlatte.libs.common.sak.SakslisteDTO -import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt -import no.nav.etterlatte.libs.common.tidspunkt.toLocalDatetimeUTC import no.nav.etterlatte.libs.common.vedtak.VedtakType import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo import no.nav.etterlatte.libs.ktor.token.Saksbehandler @@ -28,7 +26,6 @@ import no.nav.etterlatte.libs.ktor.token.Systembruker import no.nav.etterlatte.oppgave.OppgaveService import no.nav.etterlatte.vedtaksvurdering.VedtakHendelse import org.slf4j.LoggerFactory -import java.time.LocalDateTime import java.util.UUID interface BehandlingStatusService { @@ -121,7 +118,7 @@ class BehandlingStatusServiceImpl( val behandling = hentBehandling(behandlingId).tilOpprettet() if (!dryRun) { - behandlingDao.lagreStatus(behandling.id, behandling.status, behandling.sistEndret) + behandlingDao.lagreStatus(behandling) behandlingService.registrerBehandlingHendelse(behandling, brukerTokenInfo.ident()) } } @@ -134,7 +131,7 @@ class BehandlingStatusServiceImpl( val behandling = hentBehandling(behandlingId).tilVilkaarsvurdert() if (!dryRun) { - behandlingDao.lagreStatus(behandling.id, behandling.status, behandling.sistEndret) + behandlingDao.lagreStatus(behandling) behandlingService.registrerBehandlingHendelse(behandling, brukerTokenInfo.ident()) } } @@ -263,7 +260,7 @@ class BehandlingStatusServiceImpl( vedtakHendelse: VedtakHendelse, ) { val behandling = hentBehandling(behandlingId) - lagreNyBehandlingStatus(behandling.tilTilSamordning(), Tidspunkt.now().toLocalDatetimeUTC()) + lagreNyBehandlingStatus(behandling.tilTilSamordning()) registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.TIL_SAMORDNING) } @@ -272,7 +269,7 @@ class BehandlingStatusServiceImpl( vedtakHendelse: VedtakHendelse, ) { val behandling = hentBehandling(behandlingId) - lagreNyBehandlingStatus(behandling.tilSamordnet(), Tidspunkt.now().toLocalDatetimeUTC()) + lagreNyBehandlingStatus(behandling.tilSamordnet()) registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.SAMORDNET) } @@ -281,7 +278,7 @@ class BehandlingStatusServiceImpl( vedtakHendelse: VedtakHendelse, ) { val behandling = hentBehandling(behandlingId) - lagreNyBehandlingStatus(behandling.tilIverksatt(), Tidspunkt.now().toLocalDatetimeUTC()) + lagreNyBehandlingStatus(behandling.tilIverksatt()) registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.IVERKSATT) haandterUtland(behandling) haandterFeilutbetaling(behandling) @@ -383,13 +380,7 @@ class BehandlingStatusServiceImpl( behandlingService.registrerBehandlingHendelse(this, saksbehandler) } - private fun lagreNyBehandlingStatus( - behandling: Behandling, - sistEndret: LocalDateTime, - ) = behandlingDao.lagreStatus(behandling.id, behandling.status, sistEndret) - - private fun lagreNyBehandlingStatus(behandling: Behandling) = - behandlingDao.lagreStatus(behandling.id, behandling.status, behandling.sistEndret) + private fun lagreNyBehandlingStatus(behandling: Behandling) = behandlingDao.lagreStatus(behandling) private fun hentBehandling(behandlingId: UUID): Behandling = behandlingService.hentBehandling(behandlingId) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt index e050403fa26..d392d1e216b 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingDaoTest.kt @@ -330,7 +330,7 @@ internal class BehandlingDaoTest( assertEquals(false, behandling.first().status == BehandlingStatus.AVBRUTT) val avbruttbehandling = (behandling.first() as Foerstegangsbehandling).copy(status = BehandlingStatus.AVBRUTT) - behandlingRepo.lagreStatus(avbruttbehandling) + behandlingRepo.avbrytBehandling(avbruttbehandling.id, null, null) behandling = behandlingRepo.hentBehandlingerForSak(sak1) assertEquals(1, behandling.size) assertEquals(true, behandling.first().status == BehandlingStatus.AVBRUTT) @@ -608,7 +608,7 @@ internal class BehandlingDaoTest( behandlingRepo.lagreNyttVirkningstidspunkt(it.id, it.virkningstidspunkt!!) behandlingRepo.lagreGyldighetsproeving(it.id, it.gyldighetsproeving()) kommerBarnetTilGodeDao.lagreKommerBarnetTilGode(it.kommerBarnetTilgode!!) - behandlingRepo.lagreStatus(it.id, it.status, it.sistEndret) + behandlingRepo.lagreStatus(it) } with(behandlingRepo.hentBehandling(foerstegangsbehandling.id) as Foerstegangsbehandling) { diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt index 73c08cb12a6..e46732fb98d 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingFactoryTest.kt @@ -41,6 +41,7 @@ import no.nav.etterlatte.libs.common.behandling.Prosesstype import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak import no.nav.etterlatte.libs.common.behandling.SakType import no.nav.etterlatte.libs.common.behandling.Virkningstidspunkt +import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning import no.nav.etterlatte.libs.common.oppgave.OppgaveIntern import no.nav.etterlatte.libs.common.oppgave.OppgaveKilde @@ -203,7 +204,7 @@ internal class BehandlingFactoryTest { every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit every { behandlingDaoMock.lagreGyldighetsproeving(any(), any()) } returns Unit every { behandlingDaoMock.hentBehandlingerForSak(any()) } returns emptyList() - every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit + every { behandlingDaoMock.lagreStatus(any()) } returns Unit every { behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk( any(), @@ -391,7 +392,7 @@ internal class BehandlingFactoryTest { every { behandlingDaoMock.hentBehandlingerForSak(any()) } returns emptyList() - every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit + every { behandlingDaoMock.lagreStatus(any()) } returns Unit every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit every { behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk( @@ -423,7 +424,7 @@ internal class BehandlingFactoryTest { behandlingDaoMock.hentBehandlingerForSak(any()) } returns listOf(underArbeidBehandling) - val nyfoerstegangsbehandling = + assertThrows { behandlingFactory .opprettBehandling( sakId1, @@ -431,16 +432,16 @@ internal class BehandlingFactoryTest { datoNaa.toString(), Vedtaksloesning.GJENNY, behandlingFactory.hentDataForOpprettBehandling(sakId1), - )?.also { it.sendMeldingForHendelse() } - ?.behandling - Assertions.assertTrue(nyfoerstegangsbehandling is Foerstegangsbehandling) - + ) + } verify(exactly = 2) { sakServiceMock.finnSak(any()) - behandlingDaoMock.hentBehandling(any()) + behandlingDaoMock.hentBehandlingerForSak(any()) + } + verify(exactly = 1) { behandlingDaoMock.opprettBehandling(any()) + behandlingDaoMock.hentBehandling(any()) hendelseDaoMock.behandlingOpprettet(any()) - behandlingDaoMock.hentBehandlingerForSak(any()) behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk(any(), any()) } coVerify { grunnlagService.leggInnNyttGrunnlag(any(), any(), any()) } @@ -453,16 +454,6 @@ internal class BehandlingFactoryTest { merknad = null, gruppeId = persongalleri.avdoed.single(), ) - oppgaveService.opprettOppgave( - referanse = nyfoerstegangsbehandling!!.id.toString(), - sakId = sakId1, - kilde = OppgaveKilde.BEHANDLING, - type = OppgaveType.FOERSTEGANGSBEHANDLING, - merknad = null, - gruppeId = persongalleri.avdoed.single(), - ) - behandlingDaoMock.lagreStatus(any(), BehandlingStatus.AVBRUTT, any()) - oppgaveService.avbrytAapneOppgaverMedReferanse(nyfoerstegangsbehandling!!.id.toString()) } } @@ -774,7 +765,7 @@ internal class BehandlingFactoryTest { every { behandlingDaoMock.hentBehandlingerForSak(any()) } returns emptyList() - every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit + every { behandlingDaoMock.lagreStatus(any()) } returns Unit every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit every { behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk( @@ -944,7 +935,7 @@ internal class BehandlingFactoryTest { every { behandlingDaoMock.hentBehandlingerForSak(any()) } returns emptyList() - every { behandlingDaoMock.lagreStatus(any(), any(), any()) } returns Unit + every { behandlingDaoMock.lagreStatus(any()) } returns Unit every { hendelseDaoMock.behandlingOpprettet(any()) } returns Unit every { behandlingHendelserKafkaProducerMock.sendMeldingForHendelseStatisitkk( diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt index 642dba4e48f..30d05feda02 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingServiceImplTest.kt @@ -1009,7 +1009,7 @@ internal class BehandlingServiceImplTest { coEvery { grunnlagKlientMock.hentPersongalleri(behandling.id, TOKEN) } returns mockPersongalleri() coEvery { grunnlagServiceMock.leggTilNyeOpplysninger(behandling.id, any(), any()) } just runs coEvery { grunnlagServiceMock.oppdaterGrunnlag(behandling.id, behandling.sak.id, any()) } just runs - every { behandlingDaoMock.lagreStatus(any(), any(), any()) } just runs + every { behandlingDaoMock.lagreStatus(any()) } just runs every { behandlingDaoMock.lagreStatus(any()) } just runs val annenForelderInRequest = diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceImplTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceImplTest.kt index 1ca953b56fb..eae076fa420 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceImplTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceImplTest.kt @@ -75,7 +75,7 @@ class BehandlingStatusServiceImplTest { vedtakType = VedtakType.ENDRING, ) - every { behandlingDao.lagreStatus(any(), any(), any()) } just runs + every { behandlingDao.lagreStatus(any()) } just runs every { behandlingService.registrerVedtakHendelse(any(), any(), any()) } just runs every { oppgaveService.tilUnderkjent(any(), any(), any()) } returns mockk() every { behandlingService.endreProsesstype(any(), any()) } just runs diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt index 251c9828f31..1406c663cc4 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/BehandlingStatusServiceTest.kt @@ -141,7 +141,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.FATTET_VEDTAK, any()) + behandlingdao.lagreStatus(any()) behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.FATTET) oppgaveService.tilAttestering( behandlingId.toString(), @@ -166,7 +166,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any()) + behandlingdao.lagreStatus(any()) behandlingService.hentBehandling(behandlingId) behandlingService.registrerVedtakHendelse(behandlingId, iverksettVedtak, HendelseType.IVERKSATT) behandlingInfoDao.hentBrevutfall(behandlingId) @@ -190,7 +190,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.RETURNERT, any()) + behandlingdao.lagreStatus(any()) behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.UNDERKJENT) oppgaveService.tilUnderkjent(behandlingId.toString(), OppgaveType.FOERSTEGANGSBEHANDLING, any()) } @@ -231,7 +231,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any()) + behandlingdao.lagreStatus(any()) behandlingService.hentBehandling(behandlingId) behandlingService.registrerVedtakHendelse(behandlingId, iverksattVedtak, HendelseType.IVERKSATT) generellBehandlingService.opprettBehandling(any(), any()) @@ -276,7 +276,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.AVSLAG, any()) + behandlingdao.lagreStatus(any()) behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.ATTESTERT) generellBehandlingService.opprettBehandling(any(), any()) oppgaveService.ferdigStillOppgaveUnderBehandling( @@ -318,7 +318,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.ATTESTERT, any()) + behandlingdao.lagreStatus(any()) behandlingService.registrerVedtakHendelse(behandlingId, vedtakHendelse, HendelseType.ATTESTERT) oppgaveService.ferdigStillOppgaveUnderBehandling( behandlingId.toString(), @@ -358,7 +358,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any()) + behandlingdao.lagreStatus(any()) behandlingService.hentBehandling(behandlingId) behandlingService.registrerVedtakHendelse(behandlingId, iverksettVedtak, HendelseType.IVERKSATT) behandlingInfoDao.hentBrevutfall(behandlingId) @@ -401,7 +401,7 @@ internal class BehandlingStatusServiceTest { } verify { - behandlingdao.lagreStatus(behandlingId, BehandlingStatus.IVERKSATT, any()) + behandlingdao.lagreStatus(any()) behandlingService.hentBehandling(behandlingId) behandlingService.registrerVedtakHendelse(behandlingId, iverksettVedtak, HendelseType.IVERKSATT) behandlingInfoDao.hentBrevutfall(behandlingId) diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt index 09e1238382e..1ea1d25478c 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/ManuellRevurderingServiceTest.kt @@ -19,11 +19,13 @@ import no.nav.etterlatte.behandling.BehandlingsHendelserKafkaProducerImpl import no.nav.etterlatte.behandling.GrunnlagService import no.nav.etterlatte.behandling.aktivitetsplikt.AktivitetspliktDao import no.nav.etterlatte.behandling.aktivitetsplikt.AktivitetspliktKopierService +import no.nav.etterlatte.behandling.domain.AutomatiskRevurdering import no.nav.etterlatte.behandling.domain.Behandling import no.nav.etterlatte.behandling.domain.Foerstegangsbehandling import no.nav.etterlatte.behandling.domain.GrunnlagsendringStatus import no.nav.etterlatte.behandling.domain.GrunnlagsendringsType import no.nav.etterlatte.behandling.domain.Grunnlagsendringshendelse +import no.nav.etterlatte.behandling.domain.ManuellRevurdering import no.nav.etterlatte.behandling.domain.Revurdering import no.nav.etterlatte.behandling.domain.SamsvarMellomKildeOgGrunnlag import no.nav.etterlatte.behandling.domain.toStatistikkBehandling @@ -48,7 +50,6 @@ import no.nav.etterlatte.libs.common.oppgave.OppgaveType import no.nav.etterlatte.libs.common.oppgave.Status import no.nav.etterlatte.libs.common.sak.Sak import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt -import no.nav.etterlatte.libs.common.tidspunkt.toLocalDatetimeUTC import no.nav.etterlatte.nyKontekstMedBrukerOgDatabase import no.nav.etterlatte.oppgave.OppgaveService import no.nav.etterlatte.persongalleri @@ -243,11 +244,7 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { } inTransaction { - applicationContext.behandlingDao.lagreStatus( - revurdering.id, - BehandlingStatus.IVERKSATT, - LocalDateTime.now(), - ) + iverksett(revurdering, "saksbehandler") } assertThrows { @@ -534,11 +531,7 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { } inTransaction { - applicationContext.behandlingDao.lagreStatus( - behandling!!.id, - BehandlingStatus.IVERKSATT, - Tidspunkt.now().toLocalDatetimeUTC(), - ) + iverksett(behandling!!) ferdigstillOppgaver(behandling, saksbehandler) } val revurderingen = @@ -738,11 +731,7 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { } inTransaction { - applicationContext.behandlingDao.lagreStatus( - nonNullBehandling.id, - BehandlingStatus.IVERKSATT, - Tidspunkt.now().toLocalDatetimeUTC(), - ) + applicationContext.behandlingDao.lagreStatus(nonNullBehandling.copy(status = BehandlingStatus.IVERKSATT)) ferdigstillOppgaver(behandling, saksbehandler) } @@ -908,13 +897,18 @@ class ManuellRevurderingServiceTest : BehandlingIntegrationTest() { } } - private fun iverksett(behandling: Behandling) { - applicationContext.behandlingDao.lagreStatus( - behandling.id, - BehandlingStatus.IVERKSATT, - Tidspunkt.now().toLocalDatetimeUTC(), - ) - ferdigstillOppgaver(behandling) + private fun iverksett( + behandling: Behandling, + saksbehandlerId: String = "sbh", + ) { + val iverksatt = + when (behandling) { + is Foerstegangsbehandling -> behandling.copy(status = BehandlingStatus.IVERKSATT) + is ManuellRevurdering -> behandling.copy(status = BehandlingStatus.IVERKSATT) + is AutomatiskRevurdering -> behandling.copy(status = BehandlingStatus.IVERKSATT) + } + applicationContext.behandlingDao.lagreStatus(iverksatt) + ferdigstillOppgaver(behandling, saksbehandlerId) } private fun ferdigstillOppgaver( diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/OmgjoeringKlageRevurderingServiceTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/OmgjoeringKlageRevurderingServiceTest.kt index 399a3cc70a7..0853e1e6e5b 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/OmgjoeringKlageRevurderingServiceTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/revurdering/OmgjoeringKlageRevurderingServiceTest.kt @@ -29,8 +29,6 @@ import no.nav.etterlatte.libs.common.behandling.VedtaketKlagenGjelder import no.nav.etterlatte.libs.common.oppgave.OppgaveType import no.nav.etterlatte.libs.common.oppgave.Status import no.nav.etterlatte.libs.common.sak.Sak -import no.nav.etterlatte.libs.common.tidspunkt.Tidspunkt -import no.nav.etterlatte.libs.common.tidspunkt.toLocalDatetimeUTC import no.nav.etterlatte.libs.common.vedtak.VedtakType import no.nav.etterlatte.libs.testdata.grunnlag.SOEKER_FOEDSELSNUMMER import no.nav.etterlatte.nyKontekstMedBrukerOgDatabase @@ -121,11 +119,8 @@ class OmgjoeringKlageRevurderingServiceTest : BehandlingIntegrationTest() { ) } inTransaction { - applicationContext.behandlingDao.lagreStatus( - behandling!!.id, - BehandlingStatus.IVERKSATT, - Tidspunkt.now().toLocalDatetimeUTC(), - ) + val iverksatt = behandling!!.copy(status = BehandlingStatus.IVERKSATT) + applicationContext.behandlingDao.lagreStatus(iverksatt) } val klage = inTransaction { diff --git a/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt b/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt index 1932229cbab..546a44c1fa9 100644 --- a/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt +++ b/apps/etterlatte-behandling/src/test/kotlin/behandling/vedtaksbehandling/VedtaksbehandlingDaoTest.kt @@ -13,7 +13,6 @@ import no.nav.etterlatte.behandling.revurdering.RevurderingDao import no.nav.etterlatte.behandling.tilbakekreving.TilbakekrevingDao import no.nav.etterlatte.common.Enheter import no.nav.etterlatte.libs.common.UUID30 -import no.nav.etterlatte.libs.common.behandling.BehandlingStatus import no.nav.etterlatte.libs.common.behandling.BehandlingType import no.nav.etterlatte.libs.common.behandling.InnkommendeKlage import no.nav.etterlatte.libs.common.behandling.Klage @@ -82,7 +81,7 @@ internal class VedtaksbehandlingDaoTest( vedtaksbehandlingDao.erBehandlingRedigerbar(behandling.id) shouldBe true - behandlingDao.lagreStatus(behandling.copy(status = BehandlingStatus.AVBRUTT)) + behandlingDao.avbrytBehandling(behandling.id, null, null) vedtaksbehandlingDao.erBehandlingRedigerbar(behandling.id) shouldBe false } diff --git a/apps/etterlatte-saksbehandling-ui/client/src/components/person/journalfoeringsoppgave/nybehandling/OpprettNyBehandling.tsx b/apps/etterlatte-saksbehandling-ui/client/src/components/person/journalfoeringsoppgave/nybehandling/OpprettNyBehandling.tsx index 9b42778aa9c..9ecca86bc32 100644 --- a/apps/etterlatte-saksbehandling-ui/client/src/components/person/journalfoeringsoppgave/nybehandling/OpprettNyBehandling.tsx +++ b/apps/etterlatte-saksbehandling-ui/client/src/components/person/journalfoeringsoppgave/nybehandling/OpprettNyBehandling.tsx @@ -15,6 +15,7 @@ import { settNyBehandlingRequest } from '~store/reducers/JournalfoeringOppgaveRe import { useAppDispatch } from '~store/Store' import { erOppgaveRedigerbar } from '~shared/types/oppgave' import { temaFraSakstype } from '~components/person/journalfoeringsoppgave/journalpost/EndreSak' +import { IBehandlingStatus } from '~shared/types/IDetaljertBehandling' export interface NyBehandlingSkjema { sakType: SakType @@ -30,7 +31,7 @@ export interface NyBehandlingSkjema { } export default function OpprettNyBehandling() { - const { oppgave, nyBehandlingRequest, journalpost } = useJournalfoeringOppgave() + const { oppgave, nyBehandlingRequest, journalpost, sakMedBehandlinger } = useJournalfoeringOppgave() const dispatch = useAppDispatch() const navigate = useNavigate() @@ -38,6 +39,16 @@ export default function OpprettNyBehandling() { return } + const harAapneBehandlinger = sakMedBehandlinger?.behandlinger?.some( + (behandling) => + ![ + IBehandlingStatus.ATTESTERT, + IBehandlingStatus.IVERKSATT, + IBehandlingStatus.AVSLAG, + IBehandlingStatus.AVBRUTT, + ].includes(behandling.status) + ) + const neste = () => navigate('oppsummering', { relative: 'path' }) const tilbake = () => navigate('../', { relative: 'path' }) @@ -117,6 +128,13 @@ export default function OpprettNyBehandling() { Opprett behandling + {harAapneBehandlinger && ( + + Saken har allerede en åpen behandling. Den må ferdigstilles eller avbrytes før en ny behandling kan + opprettes. + + )} +