Skip to content

Commit

Permalink
Månedlig valutajustering skal følge satsendring sin behandlingsløype (#…
Browse files Browse the repository at this point in the history
…4812)

### 💰 Hva skal gjøres, og hvorfor?

Favro: NAV-22581
Månedlig valutajustering-tasker feiler oftere enn ønsket, som følge av
for mye validering.
For satsendringer blir enkelte valideringer hoppet over, da vi heller
ønsker at noen type feil skal bli korrigert i en manuell revurdering på
et senere tidspunkt. Vi ønsker også dette for månedlig valutajustering,
så fikser så det enkelte steder brukes satsendring sin løype i stedet
for den manuelle behandlingsløypen.

### 🔎️ Er det noe spesielt du ønsker tilbakemelding om?
Vær gjerne litt kritisk der månedlig valutajustering har fått ny løype
<|:^)

### ✅ Checklist
_Har du husket alle punktene i listen?_
- [ ] Jeg har testet mine endringer i henhold til akseptansekriteriene
🕵️
- [ ] Jeg har config- eller sql-endringer. I så fall, husk manuell
deploy til miljø for å verifisere endringene.
- [x] Jeg har skrevet tester. Hvis du ikke har skrevet tester, beskriv
hvorfor under 👇

### 💬 Ønsker du en muntlig gjennomgang?
- [ ] Ja
- [x] Nei
  • Loading branch information
MagnusTonnessen authored Oct 29, 2024
1 parent 23c8c0b commit 6d85738
Show file tree
Hide file tree
Showing 17 changed files with 386 additions and 179 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,8 @@ class ArbeidsfordelingService(
val forrigeArbeidsfordelingsenhet = aktivArbeidsfordelingPåBehandling?.tilArbeidsfordelingsenhet()

val oppdatertArbeidsfordelingPåBehandling =
if (behandling.erSatsendring()) {
fastsettArbeidsfordelingsenhetPåSatsendringsbehandling(
if (behandling.erSatsendringEllerMånedligValutajustering()) {
fastsettArbeidsfordelingsenhetUtIfraForrigeBehandling(
behandling,
sisteBehandlingSomErIverksatt,
aktivArbeidsfordelingPåBehandling,
Expand Down Expand Up @@ -132,7 +132,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 skalHenteEnkelPersonInfo = behandling.erMigrering() || behandling.erSatsendringEllerMånedligValutajustering()
val søker =
hentPerson(
aktør = aktør,
Expand All @@ -229,7 +229,7 @@ class PersongrunnlagService(
NORMAL -> PersonType.SØKER
BARN_ENSLIG_MINDREÅRIG, INSTITUSJON -> PersonType.BARN
},
enkelPersonInfo = enkelPersonInfo,
skalHenteEnkelPersonInfo = skalHenteEnkelPersonInfo,
hentArbeidsforhold = behandling.skalBehandlesAutomatisk,
)
personopplysningGrunnlag.personer.add(søker)
Expand All @@ -241,7 +241,7 @@ class PersongrunnlagService(
personopplysningGrunnlag = personopplysningGrunnlag,
målform = målform,
personType = PersonType.BARN,
enkelPersonInfo = enkelPersonInfo,
skalHenteEnkelPersonInfo = skalHenteEnkelPersonInfo,
),
)
}
Expand All @@ -254,7 +254,7 @@ class PersongrunnlagService(
personopplysningGrunnlag = personopplysningGrunnlag,
målform = målform,
personType = PersonType.ANNENPART,
enkelPersonInfo = enkelPersonInfo,
skalHenteEnkelPersonInfo = skalHenteEnkelPersonInfo,
hentArbeidsforhold = true,
),
)
Expand All @@ -276,11 +276,11 @@ class PersongrunnlagService(
personopplysningGrunnlag: PersonopplysningGrunnlag,
lform: Målform,
personType: PersonType,
enkelPersonInfo: Boolean = false,
skalHenteEnkelPersonInfo: Boolean = false,
hentArbeidsforhold: Boolean = false,
): Person {
val personinfo =
if (enkelPersonInfo) {
if (skalHenteEnkelPersonInfo) {
personopplysningerService.hentPersoninfoEnkel(aktør)
} else {
personopplysningerService.hentPersoninfoMedRelasjonerOgRegisterinformasjon(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(
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 årsak ${behandling.opprettetÅrsak} dersom det ikke finnes en tidligere behandling. Behandling: ${behandling.id}")
}
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

0 comments on commit 6d85738

Please sign in to comment.