Skip to content

Commit

Permalink
Sørger for at vi plukker opp alle kompetanser som gjelder etter endri…
Browse files Browse the repository at this point in the history
…ngstidspunktet og lagt til test for dette
  • Loading branch information
bragejahren committed May 8, 2024
1 parent 3e5b086 commit fdeb3af
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 20 deletions.
25 changes: 6 additions & 19 deletions src/main/kotlin/no/nav/familie/ba/sak/kjerne/brev/BrevService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import no.nav.familie.ba.sak.common.Utils
import no.nav.familie.ba.sak.common.Utils.storForbokstavIAlleNavn
import no.nav.familie.ba.sak.common.secureLogger
import no.nav.familie.ba.sak.common.tilDagMånedÅr
import no.nav.familie.ba.sak.common.tilMånedÅr
import no.nav.familie.ba.sak.common.toYearMonth
import no.nav.familie.ba.sak.config.FeatureToggleConfig
import no.nav.familie.ba.sak.config.featureToggle.UnleashNextMedContextService
import no.nav.familie.ba.sak.integrasjoner.familieintegrasjoner.IntegrasjonClient
Expand Down Expand Up @@ -49,8 +47,6 @@ import no.nav.familie.ba.sak.kjerne.brev.domene.maler.VedtakFellesfelter
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.Vedtaksbrev
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.utbetalingEøs.UtbetalingMndEøs
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.KompetanseRepository
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.UtfyltKompetanse
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.tilIKompetanse
import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløpRepository
import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.ValutakursRepository
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Målform
Expand All @@ -60,6 +56,7 @@ import no.nav.familie.ba.sak.kjerne.korrigertetterbetaling.KorrigertEtterbetalin
import no.nav.familie.ba.sak.kjerne.korrigertvedtak.KorrigertVedtakService
import no.nav.familie.ba.sak.kjerne.simulering.SimuleringService
import no.nav.familie.ba.sak.kjerne.steg.StegType
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilMånedTidspunkt
import no.nav.familie.ba.sak.kjerne.totrinnskontroll.TotrinnskontrollService
import no.nav.familie.ba.sak.kjerne.totrinnskontroll.domene.Totrinnskontroll
import no.nav.familie.ba.sak.kjerne.vedtak.Vedtak
Expand All @@ -70,7 +67,6 @@ import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.Vedtaksperiodetype
import no.nav.familie.ba.sak.kjerne.vilkårsvurdering.VilkårsvurderingService
import no.nav.familie.ba.sak.sikkerhet.SaksbehandlerContext
import org.springframework.stereotype.Service
import tilLandNavn
import java.math.BigDecimal

@Service
Expand Down Expand Up @@ -249,22 +245,13 @@ class BrevService(
private fun hentLandOgStartdatoForUtbetalingstabell(
vedtak: Vedtak,
vedtakFellesfelter: VedtakFellesfelter,
): UtbetalingstabellAutomatiskValutajustering? {
return vedtakFellesfelter.utbetalingerPerMndEøs?.let {
val mndÅrFørsteEndring = hentSorterteVedtaksperioderMedBegrunnelser(vedtak).first().fom!!
): UtbetalingstabellAutomatiskValutajustering? =
vedtakFellesfelter.utbetalingerPerMndEøs?.let {
val endringstidspunkt = hentSorterteVedtaksperioderMedBegrunnelser(vedtak).first().fom!!.tilMånedTidspunkt()
val landkoder = integrasjonClient.hentLandkoderISO2()
val kompetanser = kompetanseRepository.finnFraBehandlingId(behandlingId = vedtak.behandling.id).map { it.tilIKompetanse() }.filterIsInstance<UtfyltKompetanse>()
val eøsLandMedUtbetalinger =
kompetanser.filter { it.fom >= mndÅrFørsteEndring.toYearMonth() }.map {
if (it.erAnnenForelderOmfattetAvNorskLovgivning) {
it.søkersAktivitetsland.tilLandNavn(landkoder).navn
} else {
it.annenForeldersAktivitetsland?.tilLandNavn(landkoder)?.navn ?: it.barnetsBostedsland.tilLandNavn(landkoder).navn
}
}.toSet()
return UtbetalingstabellAutomatiskValutajustering(utbetalingerEosLand = eøsLandMedUtbetalinger.slåSammen(), utbetalingerEosMndAar = mndÅrFørsteEndring.tilMånedÅr())
val kompetanser = kompetanseRepository.finnFraBehandlingId(behandlingId = vedtak.behandling.id)
return hentLandOgStartdatoForUtbetalingstabell(endringstidspunkt, landkoder, kompetanser)
}
}

fun sjekkOmDetErLøpendeDifferanseUtbetalingPåBehandling(behandling: Behandling): Boolean {
if (!unleashService.isEnabled(FeatureToggleConfig.KAN_OPPRETTE_AUTOMATISKE_VALUTAKURSER_PÅ_MANUELLE_SAKER)) return false
Expand Down
29 changes: 28 additions & 1 deletion src/main/kotlin/no/nav/familie/ba/sak/kjerne/brev/BrevUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,14 @@ import no.nav.familie.ba.sak.kjerne.beregning.domene.YtelseType
import no.nav.familie.ba.sak.kjerne.brev.domene.SanityBegrunnelse
import no.nav.familie.ba.sak.kjerne.brev.domene.SanityEØSBegrunnelse
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.Brevmal
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.UtbetalingstabellAutomatiskValutajustering
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.utbetalingEøs.AndelUpbOgValutakurs
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.utbetalingEøs.UtbetalingEøs
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.utbetalingEøs.UtbetalingMndEøs
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.utbetalingEøs.UtbetalingMndEøsOppsummering
import no.nav.familie.ba.sak.kjerne.eøs.differanseberegning.domene.times
import no.nav.familie.ba.sak.kjerne.eøs.felles.beregning.tilSeparateTidslinjerForBarna
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.tilUtfylteKompetanserEtterEndringstidpunkt
import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløp
import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.tilUtbetaltFraAnnetLand
import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.Valutakurs
Expand All @@ -37,6 +39,7 @@ import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.erIkkeTom
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.kombiner
import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.outerJoin
import no.nav.familie.ba.sak.kjerne.tidslinje.splitPerTidsenhet
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilMånedTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.tilYearMonth
import no.nav.familie.ba.sak.kjerne.tidslinje.transformasjon.beskjærFraOgMed
Expand All @@ -45,6 +48,7 @@ import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.EØSStandardbegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.Standardbegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.hjemlerTilhørendeFritekst
import no.nav.familie.ba.sak.kjerne.vedtak.domene.VedtaksperiodeMedBegrunnelser
import tilLandNavn
import java.time.LocalDate

fun hentAutomatiskVedtaksbrevtype(behandling: Behandling): Brevmal {
Expand Down Expand Up @@ -303,6 +307,29 @@ fun skalHenteUtbetalingerEøs(
return valutakurserEtterEndringtidspunktet.any { it.value.erIkkeTom() }
}

fun hentLandOgStartdatoForUtbetalingstabell(
endringstidspunkt: MånedTidspunkt,
landkoder: Map<String, String>,
kompetanser: Collection<Kompetanse>,
): UtbetalingstabellAutomatiskValutajustering {
val utfylteKompetanserEtterEndringstidspunkt =
kompetanser.tilUtfylteKompetanserEtterEndringstidpunkt(endringstidspunkt)

if (utfylteKompetanserEtterEndringstidspunkt.isEmpty()) {
throw Feil("Finner ingen kompetanser etter endringstidspunkt")
}

val eøsLandMedUtbetalinger =
utfylteKompetanserEtterEndringstidspunkt.map {
if (it.erAnnenForelderOmfattetAvNorskLovgivning) {
it.søkersAktivitetsland.tilLandNavn(landkoder).navn
} else {
it.annenForeldersAktivitetsland?.tilLandNavn(landkoder)?.navn ?: it.barnetsBostedsland.tilLandNavn(landkoder).navn
}
}.toSet()
return UtbetalingstabellAutomatiskValutajustering(utbetalingerEosLand = eøsLandMedUtbetalinger.slåSammen(), utbetalingerEosMndAar = endringstidspunkt.tilYearMonth().tilMånedÅr())
}

fun hentUtbetalingerPerMndEøs(
endringstidspunkt: LocalDate,
andelerForVedtaksperioderPerAktørOgType: Map<Pair<Aktør, YtelseType>, AndelTilkjentYtelseTidslinje>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import no.nav.familie.ba.sak.kjerne.tidslinje.Periode
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunkt
import no.nav.familie.ba.sak.kjerne.tidslinje.tilTidslinje
import no.nav.familie.ba.sak.kjerne.tidslinje.transformasjon.beskjærFraOgMed
import no.nav.familie.ba.sak.sikkerhet.RollestyringMotDatabase
import java.time.YearMonth

Expand Down Expand Up @@ -200,3 +201,11 @@ fun List<UtfyltKompetanse>.tilTidslinje() =
innhold = it,
)
}.tilTidslinje()

fun Collection<Kompetanse>.tilUtfylteKompetanserEtterEndringstidpunkt(endringstidspunkt: MånedTidspunkt) =
this.map { it.tilIKompetanse() }
.filterIsInstance<UtfyltKompetanse>()
.tilTidslinje()
.beskjærFraOgMed(endringstidspunkt)
.perioder()
.mapNotNull { it.innhold }
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,13 @@ import no.nav.familie.ba.sak.kjerne.behandling.domene.BehandlingÅrsak
import no.nav.familie.ba.sak.kjerne.beregning.domene.YtelseType
import no.nav.familie.ba.sak.kjerne.beregning.domene.tilTidslinjerPerPersonOgType
import no.nav.familie.ba.sak.kjerne.eøs.differanseberegning.domene.Intervall
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.KompetanseAktivitet
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.KompetanseResultat
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.lagKompetanse
import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.lagValutakurs
import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløp
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Målform
import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilMånedTidspunkt
import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.EØSStandardbegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.Standardbegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.domene.EØSBegrunnelse
Expand All @@ -35,6 +39,7 @@ import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import java.math.BigDecimal
import java.time.LocalDate
import java.time.YearMonth

internal class BrevUtilsTest {
@Test
Expand Down Expand Up @@ -962,6 +967,27 @@ internal class BrevUtilsTest {

assertThat(skalHenteUtbetalingerEøs(endringstidspunkt = endringstidspunkt, valutakurser = valutakurser)).isFalse
}

@Test
fun `hentLandOgStartdatoForUtbetalingstabell - skal finne alle kompetanser som gjelder etter endringstidspunktet`() {
val endringstidspunkt = LocalDate.now().tilMånedTidspunkt()

val kompetanser =
listOf(
lagKompetanse(fom = YearMonth.now().minusMonths(2), tom = YearMonth.now().plusMonths(2), søkersAktivitet = KompetanseAktivitet.ARBEIDER, søkersAktivitetsland = "NO", annenForeldersAktivitet = KompetanseAktivitet.ARBEIDER, annenForeldersAktivitetsland = "SE", barnetsBostedsland = "SE", kompetanseResultat = KompetanseResultat.NORGE_ER_SEKUNDÆRLAND, erAnnenForelderOmfattetAvNorskLovgivning = false, barnAktører = setOf(randomAktør())),
lagKompetanse(fom = YearMonth.now().plusMonths(3), søkersAktivitet = KompetanseAktivitet.ARBEIDER, søkersAktivitetsland = "NO", annenForeldersAktivitet = KompetanseAktivitet.ARBEIDER, annenForeldersAktivitetsland = "DK", barnetsBostedsland = "DK", kompetanseResultat = KompetanseResultat.NORGE_ER_SEKUNDÆRLAND, erAnnenForelderOmfattetAvNorskLovgivning = false, barnAktører = setOf(randomAktør())),
)

val landkoder =
mapOf(
"SE" to "Sverige",
"DK" to "Danmark",
)

val utbetalingstabellAutomatiskValutajustering = hentLandOgStartdatoForUtbetalingstabell(endringstidspunkt = endringstidspunkt, landkoder = landkoder, kompetanser = kompetanser)
assertThat(utbetalingstabellAutomatiskValutajustering).isNotNull
assertThat(utbetalingstabellAutomatiskValutajustering.utbetalingerEosLand?.first()).isEqualTo("Sverige og Danmark")
}
}

private fun setAvMånedÅrMediumForPeriode(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ fun lagKompetanse(
barnetsBostedsland: String? = null,
kompetanseResultat: KompetanseResultat? = null,
kersAktivitetsland: String? = null,
erAnnenForelderOmfattetAvNorskLovgivning: Boolean? = null,
) = Kompetanse(
fom = fom,
tom = tom,
Expand All @@ -32,6 +33,7 @@ fun lagKompetanse(
barnetsBostedsland = barnetsBostedsland,
resultat = kompetanseResultat,
søkersAktivitetsland = søkersAktivitetsland,
erAnnenForelderOmfattetAvNorskLovgivning = erAnnenForelderOmfattetAvNorskLovgivning,
).also { it.behandlingId = behandlingId }

fun lagValutakurs(
Expand Down

0 comments on commit fdeb3af

Please sign in to comment.