Skip to content

Commit

Permalink
Justerer litt på teksten i aktivitetsplikt-oppgave (#6321)
Browse files Browse the repository at this point in the history
* Justerer litt på teksten i aktivitetsplikt-oppgave

* Validerer at man har lagt til en ny vurdering av aktivitetsplikten

* Trekker ut sjekk av ny vurdering i hjelpemetode

* Fikser manglende mock
  • Loading branch information
oyvindsh authored Nov 14, 2024
1 parent a5533c7 commit 249fd83
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.etterlatte.behandling.aktivitetsplikt
import kotlinx.coroutines.runBlocking
import no.nav.etterlatte.Kontekst
import no.nav.etterlatte.behandling.BehandlingService
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgrad
import no.nav.etterlatte.behandling.aktivitetsplikt.vurdering.AktivitetspliktAktivitetsgradType
import no.nav.etterlatte.behandling.klienter.BrevApiKlient
import no.nav.etterlatte.brev.BrevParametre
Expand Down Expand Up @@ -107,7 +108,13 @@ class AktivitetspliktOppgaveService(
val hentBrevId = aktivitetspliktBrevDao.hentBrevdata(oppgaveId = oppgaveId)
if (!data.skalSendeBrev && hentBrevId?.brevId != null) {
aktivitetspliktBrevDao.fjernBrevId(oppgaveId, kilde)
runBlocking { brevApiKlient.slettBrev(brevId = hentBrevId.brevId, sakId = sak.id, brukerTokenInfo = saksbehandler) }
runBlocking {
brevApiKlient.slettBrev(
brevId = hentBrevId.brevId,
sakId = sak.id,
brukerTokenInfo = saksbehandler,
)
}
}
return aktivitetspliktBrevDao.hentBrevdata(oppgaveId)!!
}
Expand All @@ -127,6 +134,27 @@ class AktivitetspliktOppgaveService(
UtlandstilknytningType.BOSATT_UTLAND -> NasjonalEllerUtland.UTLAND
}

private fun sjekkOmHarNyVurdering(
oppgave: OppgaveIntern,
aktiviteterIOppgave: List<AktivitetspliktAktivitetsgrad>,
) {
val harNyVurdering =
when (oppgave.type) {
OppgaveType.AKTIVITETSPLIKT_12MND -> aktiviteterIOppgave.any { it.vurdertFra12Mnd }
OppgaveType.AKTIVITETSPLIKT -> aktiviteterIOppgave.isNotEmpty()
else -> throw UgyldigForespoerselException(
"FEIL_OPPGAVETYPE",
"Kan ikke opprette brev for aktivitetsplikt med oppgavetype ${oppgave.type}",
)
}
if (!harNyVurdering) {
throw UgyldigForespoerselException(
"MANGLER_NY_VURDERING",
"Ny vurdering av aktivitetsplikt i denne oppgaven mangler. Den må legges til før brev kan opprettes",
)
}
}

fun opprettBrevHvisKraveneErOppfyltOgDetIkkeFinnes(
oppgaveId: UUID,
brukerTokenInfo: BrukerTokenInfo,
Expand All @@ -138,11 +166,16 @@ class AktivitetspliktOppgaveService(
}
val skalOppretteBrev = skalOppretteBrev(brevData)
if (skalOppretteBrev) {
val vurderingForOppgave = aktivitetspliktService.hentVurderingForOppgave(oppgaveId) ?: throw GenerellIkkeFunnetException()
val vurderingForOppgave = aktivitetspliktService.hentVurderingForOppgave(oppgaveId)

val sisteAktivtetsgrad =
vurderingForOppgave.aktivitet.maxByOrNull { it.fom }
?: throw ManglerAktivitetsgrad("Mangler aktivitetsgrad for oppgave: $oppgaveId")
val nasjonalEllerUtland = behandlingService.hentUtlandstilknytningForSak(oppgave.sakId) ?: throw GenerellIkkeFunnetException()

sjekkOmHarNyVurdering(oppgave, vurderingForOppgave.aktivitet)

val nasjonalEllerUtland =
behandlingService.hentUtlandstilknytningForSak(oppgave.sakId) ?: throw GenerellIkkeFunnetException()
val brevParametreAktivitetsplikt10mnd =
BrevParametre.AktivitetspliktInformasjon10Mnd(
aktivitetsgrad = mapAktivitetsgradstypeTilAktivtetsgrad(sisteAktivtetsgrad.aktivitetsgrad),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import no.nav.etterlatte.common.Enheter
import no.nav.etterlatte.ktor.token.simpleSaksbehandler
import no.nav.etterlatte.libs.common.behandling.SakType
import no.nav.etterlatte.libs.common.feilhaandtering.ForespoerselException
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
Expand Down Expand Up @@ -179,6 +180,7 @@ class AktivitetspliktOppgaveServiceTest {
every { oppgaveService.hentOppgave(oppgaveId) } returns
mockk {
every { sakId } returns sakIdForOppgave
every { type } returns OppgaveType.AKTIVITETSPLIKT_12MND
}
val kilde = Grunnlagsopplysning.Saksbehandler.create("ident")

Expand Down Expand Up @@ -264,6 +266,7 @@ class AktivitetspliktOppgaveServiceTest {
every { oppgaveService.hentOppgave(oppgaveId) } returns
mockk {
every { sakId } returns sakIdForOppgave
every { type } returns OppgaveType.AKTIVITETSPLIKT_12MND
}

val kilde = Grunnlagsopplysning.Saksbehandler("Z123456", Tidspunkt.now())
Expand All @@ -279,6 +282,7 @@ class AktivitetspliktOppgaveServiceTest {
opprettet = kilde,
endret = kilde,
beskrivelse = "Beskrivelse",
vurdertFra12Mnd = true,
)
every { aktivitetspliktService.hentVurderingForOppgave(oppgaveId) } returns
mockk {
Expand Down Expand Up @@ -306,6 +310,60 @@ class AktivitetspliktOppgaveServiceTest {
verify(exactly = 1) { aktivitetspliktService.hentVurderingForOppgave(oppgaveId) }
}

@Test
fun `skal ikke opprette brev hvis det ikke er vurdert fra 12 mnd i 12mnd-oppgave`() {
val simpleSaksbehandler = simpleSaksbehandler()
val oppgaveId = UUID.randomUUID()
val sakIdForOppgave = SakId(1L)
every { oppgaveService.hentOppgave(oppgaveId) } returns
mockk {
every { sakId } returns sakIdForOppgave
every { type } returns OppgaveType.AKTIVITETSPLIKT_12MND
}

val kilde = Grunnlagsopplysning.Saksbehandler("Z123456", Tidspunkt.now())
val aksgrad =
AktivitetspliktAktivitetsgrad(
id = UUID.randomUUID(),
sakId = sakIdForOppgave,
behandlingId = UUID.randomUUID(),
oppgaveId = oppgaveId,
aktivitetsgrad = AktivitetspliktAktivitetsgradType.AKTIVITET_UNDER_50,
fom = LocalDate.now(),
tom = null,
opprettet = kilde,
endret = kilde,
beskrivelse = "Beskrivelse",
vurdertFra12Mnd = false,
)
every { aktivitetspliktService.hentVurderingForOppgave(oppgaveId) } returns
mockk {
every { aktivitet } returns listOf(aksgrad)
}
every { aktivitetspliktBrevDao.lagreBrevId(oppgaveId, any()) } returns 1

val skalSendeBrev =
AktivitetspliktInformasjonBrevdata(
oppgaveId,
sakIdForOppgave,
null,
true,
utbetaling = true,
redusertEtterInntekt = true,
kilde = kilde,
)
every { aktivitetspliktBrevDao.hentBrevdata(oppgaveId) } returns skalSendeBrev
coEvery { brevApiKlient.opprettSpesifiktBrev(any(), any(), any()) } returns
mockk {
every { id } returns 1L
}
assertThrows<UgyldigForespoerselException> {
service.opprettBrevHvisKraveneErOppfyltOgDetIkkeFinnes(oppgaveId, simpleSaksbehandler)
}
verify(exactly = 0) { aktivitetspliktBrevDao.lagreBrevId(any(), any()) }
verify(exactly = 1) { aktivitetspliktService.hentVurderingForOppgave(oppgaveId) }
}

@Test
fun `Kan ikke ferdigstille brev og oppgave om oppgaven er i feil state`() {
val simpleSaksbehandler = simpleSaksbehandler()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,28 +45,34 @@ export function VurderAktivitet() {
}

function NesteKnapp() {
const { vurdering } = useAktivitetspliktOppgaveVurdering()
const { vurdering, vurderingType } = useAktivitetspliktOppgaveVurdering()
const aktiviteter = vurdering.aktivitet
const navigate = useNavigate()
const [manglerAktiviteter, setManglerAktiviteter] = useState(false)
const [feilmeldingAktiviteter, setFeilmeldingAktiviteter] = useState('')
const gaaTilNeste = () => {
setFeilmeldingAktiviteter('')
if (aktiviteter?.length) {
navigate(`../${AktivitetspliktSteg.BREVVALG}`)
setManglerAktiviteter(false)
if (vurderingType === 'TOLV_MAANEDER' && aktiviteter.every((aktivitet) => !aktivitet.vurdertFra12Mnd)) {
setFeilmeldingAktiviteter('Du må gjøre en ny vurdering fra 12 måneder for å gå videre')
} else {
navigate(`../${AktivitetspliktSteg.BREVVALG}`)
}
} else {
setManglerAktiviteter(true)
setFeilmeldingAktiviteter('Du må registrere en aktivitet for å gå videre')
}
}
useEffect(() => {
setManglerAktiviteter(false)
setFeilmeldingAktiviteter('')
}, [vurdering.aktivitet])

return (
<Box paddingBlock="4 0" borderWidth="1 0 0 0" borderColor="border-subtle" marginBlock="4">
<HStack gap="4" justify="center">
<Button onClick={gaaTilNeste}>Neste</Button>
{manglerAktiviteter && <Alert variant="error">Du må registrere en aktivitet for å gå videre</Alert>}
</HStack>
<VStack gap="6">
{feilmeldingAktiviteter.length > 0 && <Alert variant="error">{feilmeldingAktiviteter}</Alert>}
<HStack gap="4" justify="center">
<Button onClick={gaaTilNeste}>Neste</Button>
</HStack>
</VStack>
</Box>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,22 @@ import { AktivitetspliktStatusTagOgGyldig } from '~shared/tags/AktivitetspliktSt
import { useAktivitetspliktOppgaveVurdering } from '~components/aktivitetsplikt/OppgaveVurderingRoute'

export const AktivitetspliktVurdering12MndOversikt = () => {
const { vurdering } = useAktivitetspliktOppgaveVurdering()
const { vurdering, vurderingType } = useAktivitetspliktOppgaveVurdering()
return (
<>
<Box paddingInline="16" paddingBlock="16 4" maxWidth="120rem">
<VStack gap="4">
<Heading level="1" size="large">
Oppfølging av aktivitet
Infobrev om aktivitetsplikt {vurderingType === 'TOLV_MAANEDER' ? 'ved 12 måneder' : 'ved 6 måneder'}
</Heading>
<Heading size="medium" level="2">
Du skal nå vurdere brukers aktivitetsgrad
</Heading>
<BodyShort>
Du skal nå vurdere brukes aktivitetsgrad Det stilles ulike krav til aktivitet utifra tid etter dodsfallet.
Seks måneder etter dødsfallet må gjenlevende være i minst 50 % aktivitet for å ha rett til
omstillingsstønad. Videre kan det stilles krav til 100 % aktivitet etter 12 måneder. I visse tilfeller kan
man ha rett på omstillingsstønad selv om aktivtetskravet ikke er oppfylt.
Det stilles ulike krav til aktivitet utifra tid etter dødsfallet. Seks måneder etter dødsfallet må
gjenlevende være i minst 50 % aktivitet for å ha rett til omstillingsstønad. Videre kan det stilles krav til
100 % aktivitet etter 12 måneder. I visse tilfeller kan man ha rett på omstillingsstønad selv om
aktivtetskravet ikke er oppfylt.
</BodyShort>
<AktivitetspliktStatusTagOgGyldig aktivitetspliktVurdering={vurdering} />
</VStack>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ enum class JobbType(
SakType.OMSTILLINGSSTOENAD,
),
OMS_DOED_10MND(
"Omstillingsstønad vurdering av aktivitetsplikt 10 mnd etter dødsdato",
"Infobrev om aktivitetsplikt 10 mnd etter dødsdato",
JobbKategori.OMS_DOEDSDATO,
SakType.OMSTILLINGSSTOENAD,
),
Expand Down

0 comments on commit 249fd83

Please sign in to comment.