Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Månedlig valutajustering skal følge satsendring sin behandlingsløype #4812

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ class ArbeidsfordelingService(
}

val oppdatertArbeidsfordelingPåBehandling =
if (behandling.erSatsendring()) {
fastsettArbeidsfordelingsenhetPåSatsendringsbehandling(
if (behandling.erSatsendringEllerMånedligValutajustering()) {
fastsettArbeidsfordelingsenhetUtIfraForrigeBehandling(
behandling,
sisteBehandlingSomErIverksatt,
aktivArbeidsfordelingPåBehandling,
Expand Down Expand Up @@ -127,7 +127,7 @@ class ArbeidsfordelingService(
)
}

private fun fastsettArbeidsfordelingsenhetPåSatsendringsbehandling(
private fun fastsettArbeidsfordelingsenhetUtIfraForrigeBehandling(
behandling: Behandling,
sisteBehandlingSomErIverksatt: Behandling?,
aktivArbeidsfordelingPåBehandling: ArbeidsfordelingPåBehandling?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,8 @@ data class Behandling(
fun erBehandlingMedVedtaksbrevutsending(): Boolean =
when {
type == BehandlingType.TEKNISK_ENDRING -> false
opprettetÅrsak == BehandlingÅrsak.SATSENDRING -> false
opprettetÅrsak == BehandlingÅrsak.SMÅBARNSTILLEGG_ENDRING_FRAM_I_TID -> false
opprettetÅrsak == BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING -> false
erSatsendringEllerMånedligValutajustering() -> false
erManuellMigrering() -> false
erMigrering() -> false
else -> true
Expand Down Expand Up @@ -164,7 +163,7 @@ data class Behandling(
skalBehandlesAutomatisk && erFødselshendelse() -> true
skalBehandlesAutomatisk && erSatsendring() && erEndringFraForrigeBehandlingSendtTilØkonomi -> true
skalBehandlesAutomatisk && this.opprettetÅrsak == BehandlingÅrsak.SMÅBARNSTILLEGG_ENDRING_FRAM_I_TID && this.resultat == Behandlingsresultat.FORTSATT_INNVILGET -> true
skalBehandlesAutomatisk && this.opprettetÅrsak == BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING -> true
skalBehandlesAutomatisk && erMånedligValutajustering() -> true
else -> false
}

Expand Down Expand Up @@ -220,7 +219,9 @@ data class Behandling(

fun erSatsendring() = this.opprettetÅrsak == BehandlingÅrsak.SATSENDRING

fun erValutajustering() = this.opprettetÅrsak == BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING
fun erMånedligValutajustering() = this.opprettetÅrsak == BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING

fun erSatsendringEllerMånedligValutajustering() = erSatsendring() || erMånedligValutajustering()

fun erManuellMigreringForEndreMigreringsdato() =
erMigrering() &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import no.nav.familie.ba.sak.kjerne.endretutbetaling.validerAtDetFinnesDeltBoste
import no.nav.familie.ba.sak.kjerne.endretutbetaling.validerBarnasVilkår
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.eøs.valutakurs.ValutakursService
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersongrunnlagService
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.barn
import no.nav.familie.ba.sak.kjerne.simulering.SimuleringService
Expand Down Expand Up @@ -59,13 +58,12 @@ class BehandlingsresultatSteg(
private val utenlandskPeriodebeløpRepository: UtenlandskPeriodebeløpRepository,
private val valutakursRepository: ValutakursRepository,
private val localDateProvider: LocalDateProvider,
private val valutakursService: ValutakursService,
) : BehandlingSteg<String> {
override fun preValiderSteg(
behandling: Behandling,
stegService: StegService?,
) {
if (!behandling.erSatsendring() && !behandling.erValutajustering() && behandling.skalBehandlesAutomatisk) return
if (!behandling.erSatsendringEllerMånedligValutajustering() && behandling.skalBehandlesAutomatisk) return

val søkerOgBarn = persongrunnlagService.hentSøkerOgBarnPåBehandlingThrows(behandling.id)
if (behandling.type != BehandlingType.TEKNISK_ENDRING && behandling.type != BehandlingType.MIGRERING_FRA_INFOTRYGD_OPPHØRT) {
Expand All @@ -86,14 +84,14 @@ class BehandlingsresultatSteg(
søkerOgBarn = søkerOgBarn,
)

if (behandling.opprettetÅrsak != BehandlingÅrsak.SATSENDRING) {
if (!behandling.erSatsendringEllerMånedligValutajustering()) {
val endreteUtbetalingerMedAndeler =
andelerTilkjentYtelseOgEndreteUtbetalingerService
.finnEndreteUtbetalingerMedAndelerTilkjentYtelse(behandling.id)
endreteUtbetalingerMedAndeler.validerEndredeUtbetalingsandeler(tilkjentYtelse, vilkårService.hentVilkårsvurdering(behandling.id))
}

if (behandling.opprettetÅrsak == BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING) {
if (behandling.erMånedligValutajustering()) {
BehandlingsresultatValideringUtils.validerIngenEndringTilbakeITid(
andelerDenneBehandlingen = tilkjentYtelse.andelerTilkjentYtelse.toList(),
andelerForrigeBehandling = andelerForrigeBehandling.toList(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class SmåbarnstilleggService(
søkerAktør: Aktør,
behandling: Behandling,
) {
if (behandling.erSatsendring()) {
if (behandling.erSatsendringEllerMånedligValutajustering()) {
kopierPerioderMedOvergangsstønadFraForrigeBehandling(
behandling,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import no.nav.familie.ba.sak.common.FunksjonellFeil
import no.nav.familie.ba.sak.common.MånedPeriode
import no.nav.familie.ba.sak.common.overlapperHeltEllerDelvisMed
import no.nav.familie.ba.sak.kjerne.behandling.BehandlingHentOgPersisterService
import no.nav.familie.ba.sak.kjerne.behandling.domene.BehandlingÅrsak
import no.nav.familie.ba.sak.kjerne.beregning.TilkjentYtelseUtils.skalAndelerSlåsSammen
import no.nav.familie.ba.sak.kjerne.endretutbetaling.EndretUtbetalingAndelValidering.validerPeriodeInnenforTilkjentytelse
import no.nav.familie.ba.sak.kjerne.endretutbetaling.EndretUtbetalingAndelValidering.validerÅrsak
Expand All @@ -31,7 +30,7 @@ class AndelerTilkjentYtelseOgEndreteUtbetalingerService(
val behandling = behandlingHentOgPersisterService.hent(behandlingId)
val endreteUtbetalingerMedAndeler = lagKombinator(behandlingId).lagEndreteUtbetalingMedAndeler()

return if (behandling.opprettetÅrsak != BehandlingÅrsak.SATSENDRING) {
return if (!behandling.erSatsendringEllerMånedligValutajustering()) {
// Hvis noen valideringer feiler, så signalerer vi det til frontend ved å fjerne tilknyttede andeler
// SB vil få en feilmelding og løsningen blir å slette eller oppdatere endringen
// Da vil forhåpentligvis valideringen være ok, koblingene til andelene være beholdt
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ class PersongrunnlagService(
): PersonopplysningGrunnlag {
val personopplysningGrunnlag = lagreOgDeaktiverGammel(PersonopplysningGrunnlag(behandlingId = behandling.id))

val enkelPersonInfo = behandling.erMigrering() || behandling.erSatsendring()
val enkelPersonInfo = behandling.erMigrering() || behandling.erSatsendringEllerMånedligValutajustering()
MagnusTonnessen marked this conversation as resolved.
Show resolved Hide resolved
val søker =
hentPerson(
aktør = aktør,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class VilkårsvurderingSteg(
tilpassKompetanserTilRegelverkService.tilpassKompetanserTilRegelverk(BehandlingId(behandling.id))
}

if (behandling.opprettetÅrsak == BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING) {
if (behandling.erMånedligValutajustering()) {
månedligValutajusteringSevice.oppdaterValutakurserForMåned(BehandlingId(behandling.id), localDateProvider.now().toYearMonth())
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ class PersonopplysningGrunnlagForNyBehandlingService(
søkerIdent: String,
barnasIdenter: List<String>,
) {
if (behandling.erSatsendring()) {
if (behandling.erSatsendringEllerMånedligValutajustering()) {
if (forrigeBehandlingSomErVedtatt == null) {
throw Feil("Vi kan ikke kjøre satsendring dersom det ikke finnes en tidligere behandling. Behandling: ${behandling.id}")
throw Feil("Vi kan ikke kjøre behandling med årsal ${behandling.opprettetÅrsak} dersom det ikke finnes en tidligere behandling. Behandling: ${behandling.id}")
MagnusTonnessen marked this conversation as resolved.
Show resolved Hide resolved
}
opprettKopiAvPersonopplysningGrunnlag(behandling, forrigeBehandlingSomErVedtatt, søkerIdent)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,13 @@ class VilkårsvurderingForNyBehandlingService(
behandlingService.lagreNedMigreringsdato(nyMigreringsdato, behandling)
}

BehandlingÅrsak.SATSENDRING -> {
BehandlingÅrsak.SATSENDRING,
BehandlingÅrsak.MÅNEDLIG_VALUTAJUSTERING,
-> {
genererVilkårsvurderingForSatsendring(
forrigeBehandlingSomErVedtatt =
forrigeBehandlingSomErVedtatt
?: throw Feil("Kan ikke opprette behandling med årsak 'Satsendring' hvis det ikke finnes en tidligere behandling"),
?: throw Feil("Kan ikke opprette behandling med årsak ${behandling.opprettetÅrsak} hvis det ikke finnes en tidligere behandling"),
inneværendeBehandling = behandling,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ fun valider18ÅrsVilkårEksistererFraFødselsdato(
vilkårsvurdering.personResultater.forEach { personResultat ->
val person = søkerOgBarn.find { it.aktør == personResultat.aktør }
if (person?.type == PersonType.BARN && !personResultat.vilkårResultater.finnesUnder18VilkårFraFødselsdato(person.fødselsdato)) {
if (behandling.erSatsendring() || behandling.opprettetÅrsak.erOmregningsårsak()) {
if (behandling.erSatsendringEllerMånedligValutajustering() || behandling.opprettetÅrsak.erOmregningsårsak()) {
secureLogger.warn(
"Fødselsdato ${person.fødselsdato} ulik fom ${
personResultat.vilkårResultater.filter { it.vilkårType == Vilkår.UNDER_18_ÅR }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertDoesNotThrow
import org.junit.jupiter.api.assertThrows
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.EnumSource

class BehandlingTest {
@Test
Expand Down Expand Up @@ -66,32 +68,15 @@ class BehandlingTest {
assertTrue { behandling.erBehandlingMedVedtaksbrevutsending() }
}

@Test
fun `erBehandlingMedVedtaksbrevutsending kan ikke sende vedtaksbrev for migrering med endre migreringsdato`() {
val behandling =
lagBehandling(
behandlingType = BehandlingType.MIGRERING_FRA_INFOTRYGD,
årsak = BehandlingÅrsak.ENDRE_MIGRERINGSDATO,
)
assertFalse { behandling.erBehandlingMedVedtaksbrevutsending() }
}

@Test
fun `erBehandlingMedVedtaksbrevutsending kan ikke sende vedtaksbrev for helmanuell migrering`() {
@ParameterizedTest
@EnumSource(value = BehandlingÅrsak::class, names = ["ENDRE_MIGRERINGSDATO", "HELMANUELL_MIGRERING", "MIGRERING"])
fun `erBehandlingMedVedtaksbrevutsending kan ikke sende vedtaksbrev for behandlingstype MIGRERING_FRA_INFOTRYGD`(
årsak: BehandlingÅrsak,
) {
val behandling =
lagBehandling(
behandlingType = BehandlingType.MIGRERING_FRA_INFOTRYGD,
årsak = BehandlingÅrsak.HELMANUELL_MIGRERING,
)
assertFalse { behandling.erBehandlingMedVedtaksbrevutsending() }
}

@Test
fun `erBehandlingMedVedtaksbrevutsending kan ikke sende vedtaksbrev for automatisk migrering`() {
val behandling =
lagBehandling(
behandlingType = BehandlingType.MIGRERING_FRA_INFOTRYGD,
årsak = BehandlingÅrsak.MIGRERING,
årsak = årsak,
)
assertFalse { behandling.erBehandlingMedVedtaksbrevutsending() }
}
Expand All @@ -105,12 +90,15 @@ class BehandlingTest {
assertFalse { behandling.erBehandlingMedVedtaksbrevutsending() }
}

@Test
fun `erBehandlingMedVedtaksbrevutsending kan ikke sende vedtaksbrev for revurdering med satsendring`() {
@ParameterizedTest
@EnumSource(value = BehandlingÅrsak::class, names = ["SATSENDRING", "MÅNEDLIG_VALUTAJUSTERING"])
fun `erBehandlingMedVedtaksbrevutsending kan ikke sende vedtaksbrev for revurdering med årsak satsendring eller månedlig valutajustering`(
årsak: BehandlingÅrsak,
) {
val behandling =
lagBehandling(
behandlingType = BehandlingType.REVURDERING,
årsak = BehandlingÅrsak.SATSENDRING,
årsak = årsak,
)
assertFalse { behandling.erBehandlingMedVedtaksbrevutsending() }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ class BehandlingsresultatStegTest {
utenlandskPeriodebeløpRepository = utenlandskPeriodebeløpRepository,
valutakursRepository = valutakursRepository,
localDateProvider = RealDateProvider(),
valutakursService = valutakursService,
)

private val behandling =
Expand Down
Loading