diff --git a/src/main/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDto.kt b/src/main/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDto.kt index 4ff0e7df7..073e6dfa9 100644 --- a/src/main/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDto.kt +++ b/src/main/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDto.kt @@ -6,11 +6,13 @@ import no.nav.familie.ks.sak.common.util.slåSammen import no.nav.familie.ks.sak.common.util.tilKortString import no.nav.familie.ks.sak.kjerne.arbeidsfordeling.ArbeidsfordelingService import no.nav.familie.ks.sak.kjerne.behandling.domene.BehandlingKategori +import no.nav.familie.ks.sak.kjerne.brev.domene.maler.BrevDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.BrevUtenDataDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.Brevmal import no.nav.familie.ks.sak.kjerne.brev.domene.maler.EnkeltInformasjonsbrevDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.FlettefelterForDokumentDtoImpl import no.nav.familie.ks.sak.kjerne.brev.domene.maler.ForlengetSvartidsbrevDto +import no.nav.familie.ks.sak.kjerne.brev.domene.maler.FritekstAvsnitt import no.nav.familie.ks.sak.kjerne.brev.domene.maler.HenleggeTrukketSøknadBrevDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.HenleggeTrukketSøknadDataDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.InformasjonsbrevDeltBostedBrevDto @@ -23,6 +25,8 @@ import no.nav.familie.ks.sak.kjerne.brev.domene.maler.InnhenteOpplysningerDataDt import no.nav.familie.ks.sak.kjerne.brev.domene.maler.InnhenteOpplysningerOmBarnDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.SignaturDelmal import no.nav.familie.ks.sak.kjerne.brev.domene.maler.SvartidsbrevDto +import no.nav.familie.ks.sak.kjerne.brev.domene.maler.UtbetalingEtterKAVedtakBrevDto +import no.nav.familie.ks.sak.kjerne.brev.domene.maler.UtbetalingEtterKAVedtakDataDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.VarselbrevMedÅrsakerDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.VarselbrevMedÅrsakerOgBarnDto import no.nav.familie.ks.sak.kjerne.brev.domene.maler.flettefelt @@ -49,12 +53,18 @@ data class ManueltBrevDto( val barnasFødselsdager: List? = null, val behandlingKategori: BehandlingKategori? = null, val manuelleBrevmottakere: List = emptyList(), + val fritekstAvsnitt: String? = null, ) { fun enhetNavn(): String = this.enhet?.enhetNavn ?: error("Finner ikke enhetsnavn på manuell brevrequest") } -fun ManueltBrevDto.tilBrev(saksbehandlerNavn: String) = - when (this.brevmal) { +fun ManueltBrevDto.tilBrev(saksbehandlerNavn: String): BrevDto { + val fritekstAvsnitt = + this.fritekstAvsnitt + ?.takeIf { it.isNotBlank() } + ?.let { FritekstAvsnitt(it) } + + return when (this.brevmal) { Brevmal.INFORMASJONSBREV_LOVENDRING_JULI_2024 -> BrevUtenDataDto( mal = Brevmal.INFORMASJONSBREV_LOVENDRING_JULI_2024, @@ -252,6 +262,23 @@ fun ManueltBrevDto.tilBrev(saksbehandlerNavn: String) = mal = Brevmal.INFORMASJONSBREV_KAN_SØKE_EØS, saksbehandlerNavn = saksbehandlerNavn, ) + Brevmal.UTBETALING_ETTER_KA_VEDTAK -> + UtbetalingEtterKAVedtakBrevDto( + mal = Brevmal.UTBETALING_ETTER_KA_VEDTAK, + data = + UtbetalingEtterKAVedtakDataDto( + delmalData = + UtbetalingEtterKAVedtakDataDto.DelmalData( + signatur = SignaturDelmal(enhet = this.enhetNavn(), saksbehandlerNavn = saksbehandlerNavn), + fritekstAvsnitt = fritekstAvsnitt, + ), + flettefelter = + UtbetalingEtterKAVedtakDataDto.FlettefelterDto( + navn = this.mottakerNavn, + fodselsnummer = this.mottakerIdent, + ), + ), + ) Brevmal.VEDTAK_FØRSTEGANGSVEDTAK, Brevmal.VEDTAK_ENDRING, @@ -268,6 +295,7 @@ fun ManueltBrevDto.tilBrev(saksbehandlerNavn: String) = Brevmal.VEDTAK_OVERGANGSORDNING, -> throw Feil("Kan ikke mappe fra manuel brevrequest til ${this.brevmal}.") } +} fun ManueltBrevDto.utvidManueltBrevDtoMedEnhetOgMottaker( behandlingId: Long, diff --git a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/BrevDto.kt b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/BrevDto.kt index 949439195..012c009a1 100644 --- a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/BrevDto.kt +++ b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/BrevDto.kt @@ -95,6 +95,8 @@ enum class Brevmal( INFORMASJONSBREV_KAN_SØKE(erVedtaksbrev = false, apiNavn = "informasjonsbrevKanSoke", visningsTekst = "Informasjonsbrev kan søke"), INFORMASJONSBREV_KAN_SØKE_EØS(erVedtaksbrev = false, apiNavn = "informasjonsbrevKanSokeEOS", visningsTekst = "Informasjonsbrev kan søke EØS"), + UTBETALING_ETTER_KA_VEDTAK(erVedtaksbrev = false, apiNavn = "utbetalingEtterKAVedtak", visningsTekst = "Utbetaling etter KA-vedtak"), + VEDTAK_FØRSTEGANGSVEDTAK(erVedtaksbrev = true, apiNavn = "forstegangsvedtak", visningsTekst = "Førstegangsvedtak"), VEDTAK_ENDRING(erVedtaksbrev = true, apiNavn = "vedtakEndring", visningsTekst = "Vedtak endring"), VEDTAK_OPPHØRT(erVedtaksbrev = true, apiNavn = "opphort", visningsTekst = "Opphørt"), @@ -133,6 +135,7 @@ enum class Brevmal( INFORMASJONSBREV_TIL_FORELDER_OMFATTET_NORSK_LOVGIVNING_HENTER_IKKE_REGISTEROPPLYSNINGER, INFORMASJONSBREV_LOVENDRING_JULI_2024, INFORMASJONSBREV_OVERGANGSORDNING_NOVEMBER_2024, + UTBETALING_ETTER_KA_VEDTAK, -> false VEDTAK_FØRSTEGANGSVEDTAK, @@ -171,6 +174,7 @@ enum class Brevmal( INFORMASJONSBREV_LOVENDRING_JULI_2024 -> Dokumenttype.KONTANTSTØTTE_INFORMASJONSBREV_LOVENDRING_JULI_2024 INFORMASJONSBREV_OVERGANGSORDNING_NOVEMBER_2024 -> Dokumenttype.KONTANTSTØTTE_INFORMASJONSBREV_OVERGANGSORDNING_NOVEMBER_2024 ENDRING_AV_FRAMTIDIG_OPPHØR -> Dokumenttype.KONTANTSTØTTE_ENDRING_AV_FRAMTIDIG_OPPHØR + UTBETALING_ETTER_KA_VEDTAK -> Dokumenttype.KONTANTSTØTTE_UTBETALING_ETTER_KA_VEDTAK VEDTAK_ENDRING, VEDTAK_OPPHØRT, @@ -211,6 +215,7 @@ enum class Brevmal( VEDTAK_FØRSTEGANGSVEDTAK -> Distribusjonstype.VEDTAK VEDTAK_ENDRING -> Distribusjonstype.VEDTAK ENDRING_AV_FRAMTIDIG_OPPHØR -> Distribusjonstype.VEDTAK + UTBETALING_ETTER_KA_VEDTAK -> Distribusjonstype.VIKTIG VEDTAK_OPPHØRT -> Distribusjonstype.VEDTAK VEDTAK_OPPHØR_MED_ENDRING -> Distribusjonstype.VEDTAK VEDTAK_AVSLAG -> Distribusjonstype.VEDTAK diff --git a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/FellesDelmaler.kt b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/FellesDelmaler.kt index 44193f031..0cb9c7b88 100644 --- a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/FellesDelmaler.kt +++ b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/FellesDelmaler.kt @@ -79,3 +79,11 @@ data class RefusjonEøsUavklart( flettefelt(perioderMedRefusjonEøsUavklart.toList()), ) } + +data class FritekstAvsnitt( + val fritekstAvsnittTekst: Flettefelt, +) { + constructor(fritekstAvsnittTekst: String) : this( + flettefelt(fritekstAvsnittTekst), + ) +} diff --git a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/UtbetalingEtterKAVedtak.kt b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/UtbetalingEtterKAVedtak.kt new file mode 100644 index 000000000..bc2b18c01 --- /dev/null +++ b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/domene/maler/UtbetalingEtterKAVedtak.kt @@ -0,0 +1,33 @@ +package no.nav.familie.ks.sak.kjerne.brev.domene.maler + +import no.nav.familie.ks.sak.common.util.tilDagMånedÅr +import java.time.LocalDate + +data class UtbetalingEtterKAVedtakBrevDto( + override val mal: Brevmal = Brevmal.UTBETALING_ETTER_KA_VEDTAK, + override val data: UtbetalingEtterKAVedtakDataDto, +) : BrevDto + +data class UtbetalingEtterKAVedtakDataDto( + override val delmalData: DelmalData, + override val flettefelter: FlettefelterDto, +) : BrevDataDto { + data class FlettefelterDto( + override val navn: Flettefelt, + override val fodselsnummer: Flettefelt, + override val brevOpprettetDato: Flettefelt = flettefelt(LocalDate.now().tilDagMånedÅr()), + ) : FlettefelterForDokumentDto { + constructor( + navn: String, + fodselsnummer: String, + ) : this( + navn = flettefelt(navn), + fodselsnummer = flettefelt(fodselsnummer), + ) + } + + data class DelmalData( + val signatur: SignaturDelmal, + val fritekstAvsnitt: FritekstAvsnitt?, + ) +} diff --git a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/sammensattkontrollsak/SammensattKontrollsakBrevDtoUtleder.kt b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/sammensattkontrollsak/SammensattKontrollsakBrevDtoUtleder.kt index c9ed9ab6e..0d8fde086 100644 --- a/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/sammensattkontrollsak/SammensattKontrollsakBrevDtoUtleder.kt +++ b/src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/sammensattkontrollsak/SammensattKontrollsakBrevDtoUtleder.kt @@ -70,6 +70,7 @@ class SammensattKontrollsakBrevDtoUtleder( Brevmal.AUTOVEDTAK_BARN_6_OG_18_ÅR_OG_SMÅBARNSTILLEGG, Brevmal.AUTOVEDTAK_NYFØDT_FØRSTE_BARN, Brevmal.AUTOVEDTAK_NYFØDT_BARN_FRA_FØR, + Brevmal.UTBETALING_ETTER_KA_VEDTAK, -> throw Feil("Brevmalen $brevmal er ikke støttet for sammensatte kontrollsaker") } } diff --git a/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDtoTest.kt b/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDtoTest.kt new file mode 100644 index 000000000..4567ef5d9 --- /dev/null +++ b/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/api/dto/ManueltBrevDtoTest.kt @@ -0,0 +1,43 @@ +package no.nav.familie.ks.sak.api.dto + +import no.nav.familie.kontrakter.felles.arbeidsfordeling.Enhet +import no.nav.familie.ks.sak.data.randomFnr +import no.nav.familie.ks.sak.kjerne.brev.domene.maler.Brevmal +import no.nav.familie.ks.sak.kjerne.brev.domene.maler.UtbetalingEtterKAVedtakDataDto +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Nested +import org.junit.jupiter.api.Test + +class ManueltBrevDtoTest { + @Nested + inner class TilBrev { + @Test + fun `skal generere UTBETALING_ETTER_KA_VEDTAK-brev`() { + val manueltBrevDto = + lagManueltBrevDto( + brevmal = Brevmal.UTBETALING_ETTER_KA_VEDTAK, + fritekstAvsnitt = "Fritekst avsnitt", + ) + + val brevDto = manueltBrevDto.tilBrev(saksbehandlerNavn = "Saks Behandlersen") + + assertThat(brevDto.mal).isEqualTo(Brevmal.UTBETALING_ETTER_KA_VEDTAK) + + val delmalData = brevDto.data.delmalData as UtbetalingEtterKAVedtakDataDto.DelmalData + assertThat(delmalData.signatur.saksbehandler).containsExactly("Saks Behandlersen") + assertThat(delmalData.fritekstAvsnitt?.fritekstAvsnittTekst).containsExactly("Fritekst avsnitt") + } + } + + private fun lagManueltBrevDto( + brevmal: Brevmal, + mottakerIdent: String = randomFnr(), + fritekstAvsnitt: String? = null, + enhet: Enhet = Enhet("1234", "Enhet"), + ) = ManueltBrevDto( + brevmal = brevmal, + mottakerIdent = mottakerIdent, + fritekstAvsnitt = fritekstAvsnitt, + enhet = enhet, + ) +}