Skip to content

Commit

Permalink
EY-4519 Revurdering aktivitetsplikt 12mnd (#6450)
Browse files Browse the repository at this point in the history
* EY-4519 Revurdering aktivitetsplikt 12mnd

* Fikse testene litt

* God given test

* microupdate

* Fjern ferdig todo

* EY-4519 Bruk samme route for aktivitetsplikt revurdering

* Kommenter ut fast jobb for prod, legg til senere

* Fjern ny test

* Hardkod revurderingsårsak for opprettelse da den er lik

* Sleng på noen tester
  • Loading branch information
sebassonav authored Nov 27, 2024
1 parent aa7ef8d commit 7bb6c0b
Show file tree
Hide file tree
Showing 11 changed files with 406 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,7 @@ class AktivitetspliktOppgaveService(
)
val brevrespons: BrevStatusResponse = runBlocking { brevApiKlient.ferdigstillBrev(req, brukerTokenInfo) }
if (brevrespons.status.erDistribuert()) {
oppgaveService.ferdigstillOppgave(oppgaveId, brukerTokenInfo)
return oppgaveService.hentOppgave(oppgaveId)
return oppgaveService.ferdigstillOppgave(oppgaveId, brukerTokenInfo)
} else {
throw BrevBleIkkeFerdig(brevrespons.status)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,8 @@ internal fun Route.aktivitetspliktRoutes(
route("revurdering") {
post {
kunSystembruker {
logger.info("Sjekker om sak $sakId trenger en ny revurdering etter 6 måneder")
val request = call.receive<OpprettRevurderingForAktivitetspliktDto>()
logger.info("Sjekker om sak $sakId trenger en ny revurdering aktivitetsplikt ${request.jobbType.name}")
val opprettet =
inTransaction {
aktivitetspliktService.opprettRevurderingHvisKravIkkeOppfylt(
Expand All @@ -224,6 +224,7 @@ internal fun Route.aktivitetspliktRoutes(
}
}
}

route("oppgave-oppfoelging") {
post {
kunSystembruker {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ import no.nav.etterlatte.behandling.BehandlingService
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgrad
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgradDao
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgradOgUnntak
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgradType
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgradType.AKTIVITET_100
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgradType.AKTIVITET_OVER_50
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktSkjoennsmessigVurdering
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktUnntak
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktUnntakDao
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktUnntakType
Expand Down Expand Up @@ -49,6 +51,7 @@ import no.nav.etterlatte.oppgave.OppgaveService
import java.time.LocalDate
import java.time.YearMonth
import java.util.UUID
import kotlin.collections.filter

class AktivitetspliktService(
private val aktivitetspliktDao: AktivitetspliktDao,
Expand Down Expand Up @@ -121,7 +124,7 @@ class AktivitetspliktService(
)
}

fun oppfyllerAktivitetsplikt(
fun oppfyllerAktivitetsplikt6mnd(
sakId: SakId,
aktivitetspliktDato: LocalDate,
): Boolean {
Expand Down Expand Up @@ -447,7 +450,7 @@ class AktivitetspliktService(
}

fun hentVurderingForOppgaveGammel(oppgaveId: UUID): AktivitetspliktVurderingGammel? =
hentVurderingForOppgave(oppgaveId)?.let {
hentVurderingForOppgave(oppgaveId).let {
AktivitetspliktVurderingGammel(
aktivitet = it.aktivitet.firstOrNull(),
unntak = it.unntak.firstOrNull(),
Expand Down Expand Up @@ -476,6 +479,33 @@ class AktivitetspliktService(
fun hentVurderingForSak(sakId: SakId): AktivitetspliktVurdering =
hentVurderingForSakHelper(aktivitetspliktAktivitetsgradDao, aktivitetspliktUnntakDao, sakId)

private fun oppfyllerAktivitetsplikt12mnd(sakId: SakId): Boolean {
val oppgave12mnd =
oppgaveService
.hentOppgaverForSak(sakId, OppgaveType.AKTIVITETSPLIKT_12MND)
.filter { it.erFerdigstilt() }
.maxByOrNull { it.opprettet }
?: throw InternfeilException("Fant ikke aktivitetsplikt12mnd for sak: $sakId")

val vurderingForOppgave = hentVurderingForOppgave(oppgave12mnd.id)
val sistevurdering =
vurderingForOppgave.aktivitet.maxByOrNull { it.endret.tidspunkt }

if (sistevurdering == null) {
return vurderingForOppgave.unntak.isNotEmpty()
} else {
if (sistevurdering.aktivitetsgrad == AktivitetspliktAktivitetsgradType.AKTIVITET_UNDER_50) {
return false
}
if (sistevurdering.aktivitetsgrad == AKTIVITET_OVER_50 &&
sistevurdering.skjoennsmessigVurdering == AktivitetspliktSkjoennsmessigVurdering.NEI
) {
return false
}
}
return true
}

fun opprettRevurderingHvisKravIkkeOppfylt(
request: OpprettRevurderingForAktivitetspliktDto,
bruker: BrukerTokenInfo,
Expand All @@ -498,7 +528,15 @@ class AktivitetspliktService(
}

val aktivitetspliktDato = request.behandlingsmaaned.atDay(1).plusMonths(1)
return if (oppfyllerAktivitetsplikt(request.sakId, aktivitetspliktDato)) {
val jobbType = request.jobbType
// Hvis man oppfyller kravene skal det ikke opprettes en revurdering
val oppfyllerKrav =
when (jobbType) {
JobbType.OMS_DOED_6MND -> oppfyllerAktivitetsplikt6mnd(request.sakId, aktivitetspliktDato)
JobbType.OMS_DOED_12MND -> oppfyllerAktivitetsplikt12mnd(request.sakId)
else -> throw InternfeilException("Oppretting av revurdering støttes ikke for jobb ${jobbType.name}")
}
return if (oppfyllerKrav) {
OpprettRevurderingForAktivitetspliktResponse(forrigeBehandlingId = forrigeBehandling.id)
} else {
if (behandlingService.hentBehandlingerForSak(request.sakId).any { it.status.aapenBehandling() }) {
Expand Down Expand Up @@ -619,7 +657,7 @@ class AktivitetspliktService(
fun kopierInnTilOppgave(
sakId: SakId,
oppgaveId: UUID,
): AktivitetspliktVurdering? {
): AktivitetspliktVurdering {
val oppgave = oppgaveService.hentOppgave(oppgaveId)
sjekkOppgaveTilhoererSakOgErRedigerbar(oppgave, sakId)

Expand Down Expand Up @@ -785,12 +823,12 @@ data class AktivitetspliktVurdering(
fun erTom() = aktivitet.isEmpty() && unntak.isEmpty()
}

fun Grunnlagsopplysning.Kilde.endretDatoOrNull(): Tidspunkt? = if (this is Grunnlagsopplysning.Saksbehandler) this.tidspunkt else null

interface AktivitetspliktVurderingOpprettetDato {
val opprettet: Grunnlagsopplysning.Kilde
}

fun Grunnlagsopplysning.Kilde.endretDatoOrNull(): Tidspunkt? = if (this is Grunnlagsopplysning.Saksbehandler) this.tidspunkt else null

class SakidTilhoererIkkeBehandlingException :
UgyldigForespoerselException(
code = "SAK_ID_TILHOERER_IKKE_BEHANDLING",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class AktivitetspliktOppgaveServiceTest {

every { oppgaveService.hentOppgave(oppgave.id) } returns oppgave
every { aktivitetspliktService.hentVurderingForOppgave(oppgave.id) } returns AktivitetspliktVurdering(emptyList(), emptyList())
every { aktivitetspliktService.kopierInnTilOppgave(sak.id, oppgave.id) } returns null
every { aktivitetspliktService.kopierInnTilOppgave(sak.id, oppgave.id) } returns AktivitetspliktVurdering(emptyList(), emptyList())
every { aktivitetspliktBrevDao.hentBrevdata(oppgave.id) } returns null

service.hentVurderingForOppgave(oppgave.id)
Expand Down
Loading

0 comments on commit 7bb6c0b

Please sign in to comment.