Skip to content

Commit

Permalink
Merge branch 'main' into NAV_24246_fjern_toggle_for_enhet_og_saksbeha…
Browse files Browse the repository at this point in the history
…ndler
  • Loading branch information
thoalm authored Feb 10, 2025
2 parents 9bed928 + c175ed5 commit 90fdb95
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 315 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,5 @@ enum class FeatureToggle(
STØTTER_ADOPSJON("familie-ks-sak.stotter-adopsjon"),
SKAL_GENERERE_ANDELER_FOR_PRAKSISENDRING_2024("familie-ks-sak.skal-generere-andel-for-praksisendring-2024"),

BRUK_OMSKRIVING_AV_HJEMLER_I_BREV("familie-ks-sak.bruk_omskriving_av_hjemler_i_brev"),
ALLEREDE_UTBETALT_SOM_ENDRINGSÅRSAK("familie-ks-sak.allerede-utbetalt"),
}
184 changes: 0 additions & 184 deletions src/main/kotlin/no/nav/familie/ks/sak/kjerne/brev/BrevUtil.kt
Original file line number Diff line number Diff line change
@@ -1,184 +1,7 @@
package no.nav.familie.ks.sak.kjerne.brev

import no.nav.familie.ks.sak.common.exception.Feil
import no.nav.familie.ks.sak.common.exception.FunksjonellFeil
import no.nav.familie.ks.sak.common.util.slåSammen
import no.nav.familie.ks.sak.common.util.storForbokstav
import no.nav.familie.ks.sak.integrasjon.sanity.domene.SanityBegrunnelse
import no.nav.familie.ks.sak.integrasjon.sanity.domene.erOvergangsordningBegrunnelse
import no.nav.familie.ks.sak.kjerne.brev.begrunnelser.NasjonalEllerFellesBegrunnelse
import no.nav.familie.ks.sak.kjerne.personopplysninggrunnlag.domene.Målform

const val HJEMMEL_60_EØS_FORORDNINGEN_987 = "60"
const val FORVALTINIGSLOVEN_PARAGRAF_35 = "35"

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
fun hentHjemmeltekst(
sanitybegrunnelserBruktIBrev: List<SanityBegrunnelse>,
opplysningspliktHjemlerSkalMedIBrev: Boolean = false,
lform: Målform,
vedtakKorrigertHjemmelSkalMedIBrev: Boolean = false,
refusjonEøsHjemmelSkalMedIBrev: Boolean,
): String {
val ordinæreHjemler =
hentOrdinæreHjemler(
hjemler = sanitybegrunnelserBruktIBrev.flatMap { it.hjemler }.toMutableSet(),
opplysningspliktHjemlerSkalMedIBrev = opplysningspliktHjemlerSkalMedIBrev,
)

val forvaltningsloverHjemler = hentForvaltningsloverHjemler(vedtakKorrigertHjemmelSkalMedIBrev)

val alleHjemlerForBegrunnelser =
hentAlleTyperHjemler(
ordinæreHjemler = ordinæreHjemler.distinct(),
målform = målform,
hjemlerFraForvaltningsloven = forvaltningsloverHjemler,
hjemlerSeparasjonsavtaleStorbritannia = sanitybegrunnelserBruktIBrev.flatMap { it.hjemlerSeperasjonsavtalenStorbritannina }.distinct(),
hjemlerEØSForordningen883 = sanitybegrunnelserBruktIBrev.flatMap { it.hjemlerEØSForordningen883 }.distinct(),
hjemlerEØSForordningen987 = hentHjemlerForEøsForordningen987(sanitybegrunnelserBruktIBrev, refusjonEøsHjemmelSkalMedIBrev),
)

val alleHjemlerOgTekstForBegrunnelser =
if (sanitybegrunnelserBruktIBrev.any { it.erOvergangsordningBegrunnelse() }) {
alleHjemlerForBegrunnelser + "forskrift om overgangsregler"
} else {
alleHjemlerForBegrunnelser
}

return slåSammenHjemlerAvUlikeTyper(alleHjemlerOgTekstForBegrunnelser)
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
private fun hentHjemlerForEøsForordningen987(
begrunnelser: List<SanityBegrunnelse>,
refusjonEøsHjemmelSkalMedIBrev: Boolean,
): List<String> {
val hjemler =
begrunnelser.flatMap { it.hjemlerEØSForordningen987 } +
if (refusjonEøsHjemmelSkalMedIBrev) {
listOf(HJEMMEL_60_EØS_FORORDNINGEN_987)
} else {
emptyList()
}

return hjemler.distinct()
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
fun hentForvaltningsloverHjemler(vedtakKorrigertHjemmelSkalMedIBrev: Boolean): List<String> =
if (vedtakKorrigertHjemmelSkalMedIBrev) {
listOf(FORVALTINIGSLOVEN_PARAGRAF_35)
} else {
emptyList()
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
private fun slåSammenHjemlerAvUlikeTyper(hjemler: List<String>) =
when (hjemler.size) {
0 -> throw FunksjonellFeil("Ingen hjemler var knyttet til begrunnelsen(e) som er valgt. Du må velge minst én begrunnelse som er knyttet til en hjemmel.")
1 -> hjemler.single()
else -> slåSammenListeMedHjemler(hjemler)
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
private fun slåSammenListeMedHjemler(hjemler: List<String>): String =
hjemler.reduceIndexed { index, acc, s ->
when (index) {
0 -> acc + s
hjemler.size - 1 -> "$acc og $s"
else -> "$acc, $s"
}
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
private fun hentAlleTyperHjemler(
ordinæreHjemler: List<String>,
lform: Målform,
hjemlerFraForvaltningsloven: List<String>,
hjemlerEØSForordningen883: List<String>,
hjemlerEØSForordningen987: List<String>,
hjemlerSeparasjonsavtaleStorbritannia: List<String>,
): List<String> {
val alleHjemlerForBegrunnelser = mutableListOf<String>()

// Rekkefølgen her er viktig
if (hjemlerSeparasjonsavtaleStorbritannia.isNotEmpty()) {
alleHjemlerForBegrunnelser.add(
"${
when (målform) {
Målform.NB -> "Separasjonsavtalen mellom Storbritannia og Norge artikkel"
Målform.NN -> "Separasjonsavtalen mellom Storbritannia og Noreg artikkel"
}
} ${
slåSammen(hjemlerSeparasjonsavtaleStorbritannia)
}",
)
}

if (ordinæreHjemler.isNotEmpty()) {
alleHjemlerForBegrunnelser.add(
"${
when (målform) {
Målform.NB -> "kontantstøtteloven"
Målform.NN -> "kontantstøttelova"
}
} ${
hjemlerTilHjemmeltekst(
hjemler = ordinæreHjemler,
lovForHjemmel = "kontantstøtteloven",
)
}",
)
}

if (hjemlerEØSForordningen883.isNotEmpty()) {
alleHjemlerForBegrunnelser.add("EØS-forordning 883/2004 artikkel ${slåSammen(hjemlerEØSForordningen883)}")
}
if (hjemlerEØSForordningen987.isNotEmpty()) {
alleHjemlerForBegrunnelser.add("EØS-forordning 987/2009 artikkel ${slåSammen(hjemlerEØSForordningen987)}")
}

if (hjemlerFraForvaltningsloven.isNotEmpty()) {
alleHjemlerForBegrunnelser.add(
"${
when (målform) {
Målform.NB -> "forvaltningsloven"
Målform.NN -> "forvaltningslova"
}
} ${
hjemlerTilHjemmeltekst(hjemler = hjemlerFraForvaltningsloven, lovForHjemmel = "forvaltningsloven")
}",
)
}
return alleHjemlerForBegrunnelser
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
fun hjemlerTilHjemmeltekst(
hjemler: List<String>,
lovForHjemmel: String,
): String =
when (hjemler.size) {
0 -> throw Feil(
"Kan ikke lage hjemmeltekst for $lovForHjemmel når ingen begrunnelser har hjemler fra $lovForHjemmel knyttet til seg.",
)

1 -> "§ ${hjemler[0]}"
else -> "§§ ${slåSammen(hjemler)}"
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
private fun hentOrdinæreHjemler(
hjemler: MutableSet<String>,
opplysningspliktHjemlerSkalMedIBrev: Boolean,
): List<String> {
if (opplysningspliktHjemlerSkalMedIBrev) {
val hjemlerNårOpplysningspliktIkkeOppfylt = listOf("13", "16")
hjemler.addAll(hjemlerNårOpplysningspliktIkkeOppfylt)
}

return hjemler.map { it.toInt() }.sorted().map { it.toString() }
}

data class Landkode(
val kode: String,
Expand All @@ -196,10 +19,3 @@ fun String.tilLandNavn(landkoderISO2: Map<String, String>): Landkode {

return Landkode(kode.key, kode.value.storForbokstav())
}

fun List<SanityBegrunnelse>.inneholderOvergangsordningBegrunnelser() =
this.any {
it.apiNavn == NasjonalEllerFellesBegrunnelse.INNVILGET_OVERGANGSORDNING.sanityApiNavn ||
it.apiNavn == NasjonalEllerFellesBegrunnelse.INNVILGET_OVERGANGSORDNING_DELT_BOSTED.sanityApiNavn ||
it.apiNavn == NasjonalEllerFellesBegrunnelse.INNVILGET_OVERGANGSORDNING_GRADERT_UTBETALING.sanityApiNavn
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,20 @@ import no.nav.familie.ks.sak.common.util.formaterBeløp
import no.nav.familie.ks.sak.common.util.storForbokstavIAlleNavn
import no.nav.familie.ks.sak.common.util.tilDagMånedÅr
import no.nav.familie.ks.sak.common.util.tilMånedÅr
import no.nav.familie.ks.sak.config.featureToggle.FeatureToggle
import no.nav.familie.ks.sak.config.featureToggle.UnleashNextMedContextService
import no.nav.familie.ks.sak.integrasjon.sanity.SanityService
import no.nav.familie.ks.sak.integrasjon.sanity.domene.SanityBegrunnelse
import no.nav.familie.ks.sak.kjerne.behandling.domene.BehandlingÅrsak
import no.nav.familie.ks.sak.kjerne.behandling.steg.BehandlingSteg
import no.nav.familie.ks.sak.kjerne.behandling.steg.simulering.SimuleringService
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.domene.Vedtak
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.feilutbetaltvaluta.FeilutbetaltValutaService
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.refusjonEøs.RefusjonEøsRepository
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.sammensattkontrollsak.SammensattKontrollsakService
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.vedtaksperiode.Opphørsperiode
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.vedtaksperiode.VedtaksperiodeService
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.vedtaksperiode.Vedtaksperiodetype
import no.nav.familie.ks.sak.kjerne.behandling.steg.vedtak.vedtaksperiode.domene.UtvidetVedtaksperiodeMedBegrunnelser
import no.nav.familie.ks.sak.kjerne.behandling.steg.vilkårsvurdering.VilkårsvurderingService
import no.nav.familie.ks.sak.kjerne.behandling.steg.vilkårsvurdering.domene.Resultat
import no.nav.familie.ks.sak.kjerne.beregning.domene.AndelTilkjentYtelseRepository
import no.nav.familie.ks.sak.kjerne.beregning.domene.YtelseType
import no.nav.familie.ks.sak.kjerne.beregning.domene.totalKalkulertUtbetalingsbeløpForPeriode
import no.nav.familie.ks.sak.kjerne.brev.begrunnelser.IBegrunnelse
import no.nav.familie.ks.sak.kjerne.brev.begrunnelser.NasjonalEllerFellesBegrunnelse
import no.nav.familie.ks.sak.kjerne.brev.begrunnelser.tilSanityBegrunnelse
import no.nav.familie.ks.sak.kjerne.brev.domene.FellesdataForVedtaksbrev
import no.nav.familie.ks.sak.kjerne.brev.domene.VedtaksbrevDto
import no.nav.familie.ks.sak.kjerne.brev.domene.maler.BrevDto
Expand All @@ -54,7 +45,6 @@ import no.nav.familie.ks.sak.kjerne.brev.domene.maler.vedtaksbrev.VedtakOvergang
import no.nav.familie.ks.sak.kjerne.brev.hjemler.HjemmeltekstUtleder
import no.nav.familie.ks.sak.kjerne.brev.sammensattkontrollsak.SammensattKontrollsakBrevDtoUtleder
import no.nav.familie.ks.sak.kjerne.personopplysninggrunnlag.PersonopplysningGrunnlagService
import no.nav.familie.ks.sak.kjerne.personopplysninggrunnlag.domene.Målform
import no.nav.familie.ks.sak.korrigertvedtak.KorrigertVedtakService
import no.nav.familie.ks.sak.sikkerhet.SaksbehandlerContext
import org.springframework.http.HttpStatus
Expand All @@ -66,12 +56,9 @@ class GenererBrevService(
private val personopplysningGrunnlagService: PersonopplysningGrunnlagService,
private val vedtaksperiodeService: VedtaksperiodeService,
private val brevPeriodeService: BrevPeriodeService,
private val sanityService: SanityService,
private val vilkårsvurderingService: VilkårsvurderingService,
private val korrigertVedtakService: KorrigertVedtakService,
private val feilutbetaltValutaService: FeilutbetaltValutaService,
private val saksbehandlerContext: SaksbehandlerContext,
private val refusjonEøsRepository: RefusjonEøsRepository,
private val sammensattKontrollsakService: SammensattKontrollsakService,
private val etterbetalingService: EtterbetalingService,
private val simuleringService: SimuleringService,
Expand All @@ -81,7 +68,6 @@ class GenererBrevService(
private val brevmalService: BrevmalService,
private val andelTilkjentYtelseRepository: AndelTilkjentYtelseRepository,
private val hjemmeltekstUtleder: HjemmeltekstUtleder,
private val unleashService: UnleashNextMedContextService,
) {
fun genererManueltBrev(
manueltBrevRequest: ManueltBrevDto,
Expand Down Expand Up @@ -264,28 +250,18 @@ class GenererBrevService(

val korrigertVedtak = korrigertVedtakService.finnAktivtKorrigertVedtakPåBehandling(vedtak.behandling.id)

val hjemler =
if (unleashService.isEnabled(FeatureToggle.BRUK_OMSKRIVING_AV_HJEMLER_I_BREV, false)) {
hjemmeltekstUtleder.utledHjemmeltekst(
behandlingId = vedtak.behandling.id,
vedtakKorrigertHjemmelSkalMedIBrev = korrigertVedtak != null,
utvidetVedtaksperioderMedBegrunnelser = oppdatertUtvidetVedtaksperioderMedBegrunnelser,
)
} else {
hentHjemler(
behandlingId = vedtak.behandling.id,
utvidetVedtaksperioderMedBegrunnelser = oppdatertUtvidetVedtaksperioderMedBegrunnelser,
målform = personopplysningsgrunnlagOgSignaturData.grunnlag.søker.målform,
sanityBegrunnelser = sanityService.hentSanityBegrunnelser(),
vedtakKorrigertHjemmelSkalMedIBrev = korrigertVedtak != null,
)
}
val hjemmeltekst =
hjemmeltekstUtleder.utledHjemmeltekst(
behandlingId = vedtak.behandling.id,
vedtakKorrigertHjemmelSkalMedIBrev = korrigertVedtak != null,
utvidetVedtaksperioderMedBegrunnelser = oppdatertUtvidetVedtaksperioderMedBegrunnelser,
)

return FellesdataForVedtaksbrev(
enhet = personopplysningsgrunnlagOgSignaturData.enhet,
saksbehandler = personopplysningsgrunnlagOgSignaturData.saksbehandler,
beslutter = personopplysningsgrunnlagOgSignaturData.beslutter,
hjemmeltekst = Hjemmeltekst(hjemler),
hjemmeltekst = Hjemmeltekst(hjemmeltekst),
søkerNavn = personopplysningsgrunnlagOgSignaturData.grunnlag.søker.navn,
søkerFødselsnummer =
personopplysningsgrunnlagOgSignaturData.grunnlag.søker.aktør
Expand Down Expand Up @@ -329,37 +305,6 @@ class GenererBrevService(
)
}

@Deprecated("Refaktorert til ny kode med toggle, se HjemmeltekstUtleder")
private fun hentHjemler(
behandlingId: Long,
utvidetVedtaksperioderMedBegrunnelser: List<UtvidetVedtaksperiodeMedBegrunnelser>,
lform: Målform,
sanityBegrunnelser: List<SanityBegrunnelse>,
vedtakKorrigertHjemmelSkalMedIBrev: Boolean = false,
): String {
val vilkårsvurdering =
vilkårsvurderingService.hentAktivVilkårsvurderingForBehandling(behandlingId = behandlingId)

val opplysningspliktHjemlerSkalMedIBrev =
vilkårsvurdering.finnOpplysningspliktVilkår()?.resultat == Resultat.IKKE_OPPFYLT

val refusjonEøs = refusjonEøsRepository.finnRefusjonEøsForBehandling(behandlingId = behandlingId)

val refusjonEøsHjemmelSkalMedIBrev = refusjonEøs.isNotEmpty()

return hentHjemmeltekst(
opplysningspliktHjemlerSkalMedIBrev = opplysningspliktHjemlerSkalMedIBrev,
målform = målform,
sanitybegrunnelserBruktIBrev =
utvidetVedtaksperioderMedBegrunnelser
.flatMap<UtvidetVedtaksperiodeMedBegrunnelser, IBegrunnelse> { vedtaksperiode ->
vedtaksperiode.begrunnelser.map { it.nasjonalEllerFellesBegrunnelse } + vedtaksperiode.eøsBegrunnelser.map { it.begrunnelse }
}.mapNotNull { it.tilSanityBegrunnelse(sanityBegrunnelser) },
vedtakKorrigertHjemmelSkalMedIBrev = vedtakKorrigertHjemmelSkalMedIBrev,
refusjonEøsHjemmelSkalMedIBrev = refusjonEøsHjemmelSkalMedIBrev,
)
}

fun hentEndringAvFramtidigOpphørData(vedtak: Vedtak): BrevDto {
val fellesdataForVedtaksbrev = lagDataForVedtaksbrev(vedtak)
opprettGrunnlagOgSignaturDataService.opprett(vedtak).let { data ->
Expand Down

This file was deleted.

Loading

0 comments on commit 90fdb95

Please sign in to comment.