Skip to content

Commit

Permalink
Sender overstyring igangsatt fra AVIM & AVBL når de treffes av saksbe…
Browse files Browse the repository at this point in the history
…handlerendring

Co-authored-by: Håkon Arneng Holmstedt <hakon.arneng.holmstedt@nav.no>
Co-authored-by: Hege Haavaldsen <hege.haavaldsen@nav.no>
  • Loading branch information
3 people committed Aug 1, 2024
1 parent 2126b54 commit 535f988
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import java.time.LocalDateTime
import java.util.UUID
import no.nav.helse.etterlevelse.MaskinellJurist
import no.nav.helse.etterlevelse.Subsumsjonslogg
import no.nav.helse.hendelser.Avsender.SAKSBEHANDLER
import no.nav.helse.person.Dokumentsporing
import no.nav.helse.person.Opptjening
import no.nav.helse.person.Person
Expand All @@ -30,6 +31,7 @@ class OverstyrArbeidsforhold(

override fun innsendt() = opprettet

override fun avsender() = SAKSBEHANDLER

internal fun overstyr(sykepengegrunnlag: Sykepengegrunnlag, subsumsjonslogg: Subsumsjonslogg): Sykepengegrunnlag {
return overstyrteArbeidsforhold.fold(sykepengegrunnlag) { acc, overstyring ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.helse.person

import java.time.LocalDate
import java.util.UUID
import no.nav.helse.hendelser.Avsender
import no.nav.helse.hendelser.Hendelse
import no.nav.helse.hendelser.Periode
import no.nav.helse.hendelser.somPeriode
Expand Down Expand Up @@ -62,6 +63,12 @@ class Revurderingseventyr private constructor(
internal fun inngåSomEndring(vedtaksperiode: Vedtaksperiode, periode: Periode) =
inngå(vedtaksperiode, TypeEndring.ENDRING, periode)

internal fun inngåVedSaksbehandlerendring(vedtaksperiode: Vedtaksperiode, periode: Periode) {
if (hendelse.avsender() != Avsender.SAKSBEHANDLER) return
if (!periode.overlapperMed(periodeForEndring)) return
inngåSomEndring(vedtaksperiode, periode)
}

private fun inngå(vedtaksperiode: Vedtaksperiode, typeEndring: TypeEndring, periode: Periode) {
hvorfor.dersomInngått(this, vedtaksperioder.isEmpty())
vedtaksperiode.inngåIRevurderingseventyret(vedtaksperioder, typeEndring.name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1621,9 +1621,11 @@ internal class Vedtaksperiode private constructor(

override fun igangsettOverstyring(vedtaksperiode: Vedtaksperiode, revurdering: Revurderingseventyr) {
vurderOmKanGåVidere(vedtaksperiode, revurdering)
if (vedtaksperiode.tilstand !in setOf(AvventerInntektsmelding, AvventerBlokkerendePeriode)) return
if (vedtaksperiode.tilstand == AvventerInntektsmelding && vedtaksperiode.sjekkTrengerArbeidsgiveropplysninger(revurdering)) {
vedtaksperiode.sendTrengerArbeidsgiveropplysninger()
}
revurdering.inngåVedSaksbehandlerendring(vedtaksperiode, vedtaksperiode.periode)
}

override fun håndter(
Expand Down Expand Up @@ -1752,8 +1754,8 @@ internal class Vedtaksperiode private constructor(

override fun igangsettOverstyring(vedtaksperiode: Vedtaksperiode, revurdering: Revurderingseventyr) {
vedtaksperiode.behandlinger.forkastUtbetaling(revurdering)
if (!vedtaksperiode.måInnhenteInntektEllerRefusjon(revurdering)) return
vedtaksperiode.tilstand(revurdering, AvventerInntektsmelding)
if (vedtaksperiode.måInnhenteInntektEllerRefusjon(revurdering)) vedtaksperiode.tilstand(revurdering, AvventerInntektsmelding)
revurdering.inngåVedSaksbehandlerendring(vedtaksperiode, vedtaksperiode.periode)
}

private fun tilstand(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,13 @@ import no.nav.helse.person.TilstandType.AVVENTER_VILKÅRSPRØVING
import no.nav.helse.person.inntekt.Inntektsmelding
import no.nav.helse.person.nullstillTilstandsendringer
import no.nav.helse.spleis.e2e.AbstractEndToEndTest
import no.nav.helse.spleis.e2e.OverstyrtArbeidsgiveropplysning
import no.nav.helse.spleis.e2e.assertSisteTilstand
import no.nav.helse.spleis.e2e.assertTilstand
import no.nav.helse.spleis.e2e.assertTilstander
import no.nav.helse.spleis.e2e.forlengVedtak
import no.nav.helse.spleis.e2e.håndterInntektsmelding
import no.nav.helse.spleis.e2e.håndterOverstyrArbeidsgiveropplysninger
import no.nav.helse.spleis.e2e.håndterOverstyrInntekt
import no.nav.helse.spleis.e2e.håndterOverstyrTidslinje
import no.nav.helse.spleis.e2e.håndterOverstyringSykedag
Expand Down Expand Up @@ -78,20 +80,60 @@ import kotlin.reflect.KClass
internal class OverstyrTidslinjeTest : AbstractEndToEndTest() {

@Test
fun `Sendes ikke ut overstyring i gangsatt når det er en periode som står i avventer inntektsmelding`() {
fun `Sendes ut overstyring i gangsatt når det er en periode som står i avventer inntektsmelding ved endring fra saksbehandler`() {
nyttVedtak(januar)

håndterSøknad(15.februar til 28.februar)
assertSisteTilstand(2.vedtaksperiode, AVVENTER_INNTEKTSMELDING)

// Når saksbehandler overstyrer tidslinjen forventer Speilvendt å få overstyring igangsatt, men
// dette får de ikke i AvventerInntektsmelding. Perioden melder seg ikke på revurderingseventyret
// i denne tilstanden. Om den alltid hadde gjort det ville vi også sende overstyring igangsatt når vi mottar inntektsmelding..
// Når saksbehandler overstyrer tidslinjen forventer Speilvendt å få overstyring igangsatt for å håndhenve totrinns
håndterOverstyrTidslinje((1.februar til 14.februar).map { ManuellOverskrivingDag(it, Dagtype.Sykedag, 100) })

val overstyringIgangsatt = observatør.overstyringIgangsatt.single()
assertEquals(listOf(PersonObserver.OverstyringIgangsatt.VedtaksperiodeData(
orgnummer = ORGNUMMER,
vedtaksperiodeId = 2.vedtaksperiode.id(ORGNUMMER),
periode = 1.februar til 28.februar,
skjæringstidspunkt = 1.januar,
typeEndring = "ENDRING"
)), overstyringIgangsatt.berørtePerioder)
assertEquals("SYKDOMSTIDSLINJE", overstyringIgangsatt.årsak)
}

@Test
fun `sendes ikke ut overstyring igangsatt når det kommer inntektsmelding i avventer inntektsmelding`() {
håndterSøknad(januar)
håndterInntektsmelding(listOf(1.januar til 16.januar))
assertEquals(0, observatør.overstyringIgangsatt.size)
}

@Test
fun `Sendes ut overstyring i gangsatt når det er en periode som står i avventer blokkerende periode ved endring fra saksbehandler`() {
tilGodkjenning(januar, ORGNUMMER)
håndterSøknad(februar)
assertSisteTilstand(1.vedtaksperiode, AVVENTER_GODKJENNING)
assertSisteTilstand(2.vedtaksperiode, AVVENTER_BLOKKERENDE_PERIODE)
håndterOverstyrTidslinje(listOf(ManuellOverskrivingDag(1.februar, Dagtype.Sykedag, 60)))
val overstyringIgangsatt = observatør.overstyringIgangsatt.single()
assertEquals(listOf(PersonObserver.OverstyringIgangsatt.VedtaksperiodeData(
orgnummer = ORGNUMMER,
vedtaksperiodeId = 2.vedtaksperiode.id(ORGNUMMER),
periode = 1.februar til 28.februar,
skjæringstidspunkt = 1.januar,
typeEndring = "ENDRING"
)), overstyringIgangsatt.berørtePerioder)
assertEquals("SYKDOMSTIDSLINJE", overstyringIgangsatt.årsak)
}

@Test
fun `Senere perioder inngår ikke i overstyring igangsatt selv om det er en endring fra saksbehandler`() {
tilGodkjenning(januar, ORGNUMMER)
håndterSøknad(mars)
håndterOverstyrArbeidsgiveropplysninger(1.januar, listOf(OverstyrtArbeidsgiveropplysning(ORGNUMMER, INNTEKT/2)))
val overstyringIgangsatt = observatør.overstyringIgangsatt.single()
assertEquals(listOf(1.vedtaksperiode.id(ORGNUMMER)), overstyringIgangsatt.berørtePerioder.map { it.vedtaksperiodeId })
}

@Test
fun `overstyring av tidslinje i avventer inntektsmelding`() {
håndterSøknad(Sykdom(3.februar, 26.februar, 100.prosent))
Expand Down

0 comments on commit 535f988

Please sign in to comment.