Skip to content

Commit eac3b33

Browse files
authored
EY-4963 Sperre endringer på aktivitetspliktsvurderingsbrev via brev r… (#7045)
* EY-4963 Sperre endringer på aktivitetspliktsvurderingsbrev via brev routes * og i frontend fjerne knapper for den * Fjern backend sjekk for sletting da vi bruker denne i flyten
1 parent df39e7f commit eac3b33

File tree

4 files changed

+86
-3
lines changed

4 files changed

+86
-3
lines changed

apps/etterlatte-brev-api/src/main/kotlin/no/nav/etterlatte/brev/BrevService.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo
3838
import org.slf4j.LoggerFactory
3939
import java.time.Duration
4040
import java.util.UUID
41+
import kotlin.collections.contains
4142

4243
class BrevService(
4344
private val db: BrevRepository,
@@ -407,12 +408,23 @@ class BrevService(
407408
brevDataMapping = { ManueltBrevMedTittelData(it.innholdMedVedlegg.innhold(), it.tittel) },
408409
)
409410

411+
// EY-4963
412+
private fun sjekkOmErAktivitetsipliktsvurderingsBrev(brevkoder: Brevkoder?): Boolean =
413+
listOf(
414+
Brevkoder.OMSTILLINGSSTOENAD_AKTIVITETSPLIKT_INFORMASJON_10MND_INNHOLD,
415+
Brevkoder.OMSTILLINGSSTOENAD_AKTIVITETSPLIKT_INFORMASJON_4MND_INNHOLD,
416+
).contains(brevkoder)
417+
410418
suspend fun ferdigstill(
411419
id: BrevID,
412420
bruker: BrukerTokenInfo,
413421
) {
414422
val brev = sjekkOmBrevKanEndres(id)
415423

424+
if (sjekkOmErAktivitetsipliktsvurderingsBrev(brev.brevkoder)) {
425+
throw BrevKanIkkeEndres(brev, "brevkoden er feil, er ${brev.brevkoder}. Denne kan kun endres i aktivitetsplikts flyten")
426+
}
427+
416428
if (brev.mottakere.size !in 1..2) {
417429
throw UgyldigAntallMottakere()
418430
} else if (brev.mottakere.any { it.erGyldig().isNotEmpty() }) {
@@ -437,7 +449,6 @@ class BrevService(
437449
) {
438450
logger.info("Sjekker om brev med id=$id kan slettes")
439451
val brev = sjekkOmBrevKanSlettes(id)
440-
441452
sjekk(brev.behandlingId == null) {
442453
"Brev med id=$id er et vedtaksbrev og kan ikke slettes"
443454
}

apps/etterlatte-brev-api/src/test/kotlin/no/nav/etterlatte/brev/BrevServiceTest.kt

+61
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package no.nav.etterlatte.brev
33
import io.kotest.matchers.shouldBe
44
import io.kotest.matchers.shouldNotBe
55
import io.mockk.clearAllMocks
6+
import io.mockk.coEvery
67
import io.mockk.confirmVerified
78
import io.mockk.every
89
import io.mockk.mockk
@@ -22,10 +23,12 @@ import no.nav.etterlatte.brev.model.Brev
2223
import no.nav.etterlatte.brev.model.BrevProsessType
2324
import no.nav.etterlatte.brev.model.Mottaker
2425
import no.nav.etterlatte.brev.model.MottakerType
26+
import no.nav.etterlatte.brev.model.Pdf
2527
import no.nav.etterlatte.brev.model.Spraak
2628
import no.nav.etterlatte.brev.model.Status
2729
import no.nav.etterlatte.brev.model.tomMottaker
2830
import no.nav.etterlatte.brev.pdf.PDFGenerator
31+
import no.nav.etterlatte.brev.vedtaksbrev.UgyldigAntallMottakere
2932
import no.nav.etterlatte.ktor.token.simpleSaksbehandler
3033
import no.nav.etterlatte.libs.common.feilhaandtering.UgyldigForespoerselException
3134
import no.nav.etterlatte.libs.common.person.MottakerFoedselsnummer
@@ -469,6 +472,64 @@ internal class BrevServiceTest {
469472
}
470473
}
471474

475+
@Nested
476+
inner class FerdigstillingAvBrev {
477+
@ParameterizedTest
478+
@EnumSource(Status::class)
479+
fun `Skal ikke kunne ferdigstille aktivitetspliktsbrev som medfører vurdering, uavhengig av status`(status: Status) {
480+
val brev =
481+
opprettBrev(
482+
status,
483+
BrevProsessType.REDIGERBAR,
484+
).copy(brevkoder = Brevkoder.OMSTILLINGSSTOENAD_AKTIVITETSPLIKT_INFORMASJON_10MND_INNHOLD)
485+
486+
every { db.hentBrev(any()) } returns brev
487+
488+
assertThrows<BrevKanIkkeEndres> {
489+
runBlocking { brevService.ferdigstill(brev.id, bruker) }
490+
}
491+
492+
verify {
493+
db.hentBrev(brev.id)
494+
}
495+
}
496+
497+
@ParameterizedTest
498+
@EnumSource(Status::class, names = ["OPPRETTET", "OPPDATERT"], mode = EnumSource.Mode.INCLUDE)
499+
fun `Kan ferdigstille brev med en hovedmottaker`(status: Status) {
500+
val brev = opprettBrev(status, BrevProsessType.REDIGERBAR)
501+
502+
every { db.hentBrev(any()) } returns brev
503+
val pdf = Pdf(bytes = ByteArray(1))
504+
coEvery { pdfGenerator.genererPdf(brev.id, any(), any(), any(), any()) } returns pdf
505+
runBlocking { brevService.ferdigstill(brev.id, bruker) }
506+
507+
verify {
508+
db.hentBrev(brev.id)
509+
db.lagrePdfOgFerdigstillBrev(brev.id, pdf, any())
510+
}
511+
}
512+
513+
@ParameterizedTest
514+
@EnumSource(Status::class, names = ["OPPRETTET", "OPPDATERT"], mode = EnumSource.Mode.INCLUDE)
515+
fun `Kan ikke ferdigstille brev med mer enn 2 mottakere`(status: Status) {
516+
val brev =
517+
opprettBrev(status, BrevProsessType.REDIGERBAR)
518+
.copy(mottakere = listOf(opprettMottaker(), opprettMottaker(), opprettMottaker()))
519+
520+
every { db.hentBrev(any()) } returns brev
521+
val pdf = Pdf(bytes = ByteArray(1))
522+
coEvery { pdfGenerator.genererPdf(brev.id, any(), any(), any(), any()) } returns pdf
523+
assertThrows<UgyldigAntallMottakere> {
524+
runBlocking { brevService.ferdigstill(brev.id, bruker) }
525+
}
526+
527+
verify {
528+
db.hentBrev(brev.id)
529+
}
530+
}
531+
}
532+
472533
@Nested
473534
inner class SlettingAvBrev {
474535
@ParameterizedTest

apps/etterlatte-saksbehandling-ui/client/src/components/person/brev/BrevOversikt.tsx

+7-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ const mapAdresse = (mottaker: Mottaker) => {
2424
return `${adresselinje}, ${postlinje}`
2525
}
2626

27-
const kanEndres = (brev: IBrev) => brev.status !== BrevStatus.DISTRIBUERT
27+
const kanEndres = (brev: IBrev) => brev.status !== BrevStatus.DISTRIBUERT && gyldigbrevkode(brev.brevkoder)
28+
29+
export const gyldigbrevkode = (brevkoder: string): boolean =>
30+
![
31+
'OMSTILLINGSSTOENAD_AKTIVITETSPLIKT_INFORMASJON_10MND_INNHOLD',
32+
'OMSTILLINGSSTOENAD_AKTIVITETSPLIKT_INFORMASJON_4MND_INNHOLD',
33+
].includes(brevkoder)
2834

2935
const handlingKnapp = (brev: IBrev) => {
3036
if (kanEndres(brev)) {

apps/etterlatte-saksbehandling-ui/client/src/components/person/brev/handlinger/SlettBrev.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ import { TrashIcon } from '@navikt/aksel-icons'
66
import { isPending } from '~shared/api/apiUtils'
77
import { BrevStatus, IBrev } from '~shared/types/Brev'
88
import { ClickEvent, trackClick } from '~utils/amplitude'
9+
import { gyldigbrevkode } from '~components/person/brev/BrevOversikt'
910

1011
const kanSlettes = (brev: IBrev) => {
11-
return !brev.behandlingId && [BrevStatus.OPPRETTET, BrevStatus.OPPDATERT].includes(brev.status)
12+
return (
13+
!brev.behandlingId &&
14+
[BrevStatus.OPPRETTET, BrevStatus.OPPDATERT].includes(brev.status) &&
15+
gyldigbrevkode(brev.brevkoder)
16+
)
1217
}
1318

1419
/**

0 commit comments

Comments
 (0)