Skip to content

Commit 06a5549

Browse files
Simenullernfraadsbrandthhegehaav
committed
Forenkler sjekk for om IM skal oppdatere vilkårsgrunnlag
Co-authored-by: Erik Maximilian Forsman <[email protected]> Co-authored-by: Hege Haavaldsen <[email protected]>
1 parent 367c659 commit 06a5549

File tree

5 files changed

+36
-43
lines changed

5 files changed

+36
-43
lines changed

sykepenger-model/src/main/kotlin/no/nav/helse/hendelser/Inntektsmelding.kt

+10-2
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,14 @@ class Inntektsmelding(
191191
}
192192
private fun håndtertNå() = håndtertInntekt
193193
internal fun jurist(jurist: MaskinellJurist) = jurist.medInntektsmelding(this.meldingsreferanseId())
194-
internal fun skalIkkeOppdatereVilkårsgrunnlag(sykdomstidslinjeperiode: Periode?) =
195-
sykdomstidslinjeperiode != null && beregnetInntektsdato !in sykdomstidslinjeperiode && inntektsdato == null
194+
195+
internal fun skalOppdatereVilkårsgrunnlag(sykdomstidslinjeperiode: Periode?): Boolean {
196+
if (forventerInntektsmelding()) return true
197+
if (sykdomstidslinjeperiode == null) return false // har ikke noe sykdom for arbeidsgiveren
198+
return beregnetInntektsdato in sykdomstidslinjeperiode
199+
}
200+
201+
private fun forventerInntektsmelding(): Boolean {
202+
return inntektsdato != null // inntektmelding fra portal, vi har bedt om IM og forventer IM
203+
}
196204
}

sykepenger-model/src/main/kotlin/no/nav/helse/person/Arbeidsgiver.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -736,8 +736,8 @@ internal class Arbeidsgiver private constructor(
736736
inntektsmelding.leggTilRefusjon(refusjonshistorikk)
737737
val sykdomstidslinjeperiode = sykdomstidslinje().periode()
738738
val skjæringstidspunkt = person.skjæringstidspunkt(inntektsdato.somPeriode())
739-
if (inntektsmelding.skalIkkeOppdatereVilkårsgrunnlag(sykdomstidslinjeperiode)) {
740-
return inntektsmelding.info("Lagrer ikke inntekt på skjæringstidspunkt fordi inntektdato er oppgitt til å være utenfor den perioden arbeidsgiver har sykdom for")
739+
if (!inntektsmelding.skalOppdatereVilkårsgrunnlag(sykdomstidslinjeperiode)) {
740+
return inntektsmelding.info("Inntektsmelding oppdaterer ikke vilkårsgrunnlag")
741741
}
742742
finnAlternativInntektsdato(inntektsdato, skjæringstidspunkt)?.let {
743743
inntektsmelding.addInntekt(inntektshistorikk, it)

sykepenger-model/src/test/kotlin/no/nav/helse/spleis/e2e/flere_arbeidsgivere/FlereArbeidsgivereGhostTest.kt

+11-19
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ import no.nav.helse.økonomi.Inntekt.Companion.månedlig
8383
import no.nav.helse.økonomi.Inntekt.Companion.årlig
8484
import no.nav.helse.økonomi.Prosentdel.Companion.prosent
8585
import org.junit.jupiter.api.Assertions.assertEquals
86+
import org.junit.jupiter.api.Assertions.assertFalse
8687
import org.junit.jupiter.api.Assertions.assertTrue
8788
import org.junit.jupiter.api.Test
8889
import org.junit.jupiter.api.assertThrows
@@ -143,7 +144,7 @@ internal class FlereArbeidsgivereGhostTest : AbstractEndToEndTest() {
143144
håndterUtbetalingsgodkjenning(2.vedtaksperiode, orgnummer = a1)
144145
håndterUtbetalt(orgnummer = a1)
145146

146-
assertInfoSomFølgeAv("Lagrer ikke inntekt på skjæringstidspunkt fordi inntektdato er oppgitt til å være utenfor den perioden arbeidsgiver har sykdom for") {
147+
assertInfoSomFølgeAv("Inntektsmelding oppdaterer ikke vilkårsgrunnlag") {
147148
håndterInntektsmelding(listOf(mandag den 29.januar til 13.februar), orgnummer = a2)
148149
}
149150
// IM replayes, og ettersom 27. og 28 blir friskedager pga. IM beregnes skjæringstidspunktet til 29.januar. Når A1 sin søknad kommer dekker den "hullet" med sykdom slik at skjæringstidspunktet blir 1.januar
@@ -190,47 +191,38 @@ internal class FlereArbeidsgivereGhostTest : AbstractEndToEndTest() {
190191
orgnummer = ghost,
191192
begrunnelseForReduksjonEllerIkkeUtbetalt = "IkkeFravaer",
192193
)
193-
håndterYtelser(2.vedtaksperiode, orgnummer = a1)
194-
håndterSimulering(2.vedtaksperiode, orgnummer = a1)
195194
håndterUtbetalingsgodkjenning(2.vedtaksperiode, orgnummer = a1)
196195
håndterUtbetalt(orgnummer = a1)
197196

198197
val ghostInntektEtterIm = inspektør.vilkårsgrunnlag(1.januar)!!.inspektør.sykepengegrunnlag.inspektør.arbeidsgiverInntektsopplysninger.single { it.gjelder(ghost) }.inspektør.inntektsopplysning
199-
assertTrue(ghostInntektEtterIm is InntektsmeldingInntekt)
198+
assertFalse(ghostInntektEtterIm is InntektsmeldingInntekt)
199+
assertTrue(ghostInntektEtterIm is SkattSykepengegrunnlag)
200200

201201
// Så kjem søknaden på ghosten læll
202202
val ghostSøknad = håndterSøknad(Sykdom(1.januar, 31.januar, 100.prosent), orgnummer = ghost)
203203
assertSisteTilstand(1.vedtaksperiode, AVSLUTTET_UTEN_UTBETALING, orgnummer = a1)
204204
assertSisteTilstand(2.vedtaksperiode, AVVENTER_REVURDERING, orgnummer = a1)
205205
assertSisteTilstand(1.vedtaksperiode, AVVENTER_HISTORIKK, orgnummer = ghost)
206+
val ghostInntektEtterImNå = inspektør.vilkårsgrunnlag(1.januar)!!.inspektør.sykepengegrunnlag.inspektør.arbeidsgiverInntektsopplysninger.single { it.gjelder(ghost) }.inspektør.inntektsopplysning
207+
assertTrue(ghostInntektEtterImNå is InntektsmeldingInntekt)
208+
assertFalse(ghostInntektEtterImNå is SkattSykepengegrunnlag)
206209

207210
håndterYtelser(1.vedtaksperiode, orgnummer = ghost)
208211
håndterSimulering(1.vedtaksperiode, orgnummer = ghost)
209212
håndterUtbetalingsgodkjenning(1.vedtaksperiode, orgnummer = ghost)
210213
håndterUtbetalt(orgnummer = ghost)
211214

212215
håndterYtelser(2.vedtaksperiode, orgnummer = a1)
216+
håndterSimulering(2.vedtaksperiode, orgnummer = a1)
213217
håndterUtbetalingsgodkjenning(2.vedtaksperiode, orgnummer = a1)
218+
håndterUtbetalt(orgnummer = a1)
214219

215220
assertSisteTilstand(1.vedtaksperiode, AVSLUTTET_UTEN_UTBETALING, a1)
216221
assertSisteTilstand(2.vedtaksperiode, AVSLUTTET, a1)
217222
assertSisteTilstand(1.vedtaksperiode, AVSLUTTET, ghost)
218223

219-
220-
assertForventetFeil(
221-
forklaring = """
222-
Perioden på A1 som går i AvventerRevurdering kaller på gjennoppta behandling før periode på Ghost i AvventerIM får replayet
223-
IM. Da ender vi opp med å gå videre uten å ha referanser til inntektsmelding som er brukt, og får ikke validert inneholdet i IM
224-
""",
225-
= {
226-
assertIngenVarsler(1.vedtaksperiode.filter(ghost))
227-
assertEquals(listOf(Dokumentsporing.søknad(ghostSøknad)), inspektør(ghost).hendelser(1.vedtaksperiode))
228-
},
229-
ønsket = {
230-
assertVarsel(RV_IM_8, 1.vedtaksperiode.filter(ghost))
231-
assertEquals(listOf(Dokumentsporing.søknad(ghostSøknad), Dokumentsporing.inntektsmeldingDager(ghostIM), Dokumentsporing.inntektsmeldingInntekt(ghostIM)), inspektør(ghost).hendelser(1.vedtaksperiode))
232-
}
233-
)
224+
assertVarsel(RV_IM_8, 1.vedtaksperiode.filter(ghost))
225+
assertEquals(listOf(Dokumentsporing.søknad(ghostSøknad), Dokumentsporing.inntektsmeldingDager(ghostIM), Dokumentsporing.inntektsmeldingInntekt(ghostIM)), inspektør(ghost).hendelser(1.vedtaksperiode))
234226
}
235227

236228
@Test

sykepenger-model/src/test/kotlin/no/nav/helse/spleis/e2e/flere_arbeidsgivere/FlereUkjenteArbeidsgivereTest.kt

+3-20
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ internal class FlereUkjenteArbeidsgivereTest : AbstractEndToEndTest() {
9292

9393

9494
assertFunksjonellFeil(RV_SV_2, 1.vedtaksperiode.filter(a2))
95-
assertSisteTilstand(1.vedtaksperiode, AVVENTER_HISTORIKK_REVURDERING, orgnummer = a1)
95+
assertSisteTilstand(1.vedtaksperiode, AVSLUTTET, orgnummer = a1)
9696
assertTrue(inspektør(a2).periodeErForkastet(1.vedtaksperiode))
9797
}
9898

@@ -119,7 +119,7 @@ internal class FlereUkjenteArbeidsgivereTest : AbstractEndToEndTest() {
119119
}
120120

121121
val overstyringerIgangsatt = observatør.overstyringIgangsatt
122-
assertEquals(3, overstyringerIgangsatt.size)
122+
assertEquals(2, overstyringerIgangsatt.size)
123123

124124
overstyringerIgangsatt.first().also { event ->
125125
assertEquals(PersonObserver.OverstyringIgangsatt(
@@ -134,19 +134,6 @@ internal class FlereUkjenteArbeidsgivereTest : AbstractEndToEndTest() {
134134
), event)
135135
}
136136

137-
overstyringerIgangsatt[1].also { event ->
138-
assertEquals(PersonObserver.OverstyringIgangsatt(
139-
årsak = "KORRIGERT_INNTEKTSMELDING_INNTEKTSOPPLYSNINGER",
140-
skjæringstidspunkt = 1.januar,
141-
periodeForEndring = 1.januar til 1.januar,
142-
berørtePerioder = listOf(
143-
VedtaksperiodeData(a1, 1.vedtaksperiode.id(a1), 1.januar til 31.januar, 1.januar, "REVURDERING"),
144-
VedtaksperiodeData(a1, 2.vedtaksperiode.id(a1), 1.februar til 28.februar, 1.januar, "REVURDERING"),
145-
VedtaksperiodeData(a1, 3.vedtaksperiode.id(a1), 1.mars til 31.mars, 1.januar, "REVURDERING")
146-
)
147-
), event)
148-
}
149-
150137
overstyringerIgangsatt.last().also { event ->
151138
assertEquals(PersonObserver.OverstyringIgangsatt(
152139
årsak = "KORRIGERT_INNTEKTSMELDING_INNTEKTSOPPLYSNINGER",
@@ -160,7 +147,7 @@ internal class FlereUkjenteArbeidsgivereTest : AbstractEndToEndTest() {
160147
), event)
161148
}
162149

163-
assertTilstander(1.vedtaksperiode, AVVENTER_HISTORIKK_REVURDERING, orgnummer = a1)
150+
assertTilstander(1.vedtaksperiode, AVVENTER_GODKJENNING_REVURDERING, orgnummer = a1)
164151
assertTilstander(2.vedtaksperiode, AVVENTER_REVURDERING, orgnummer = a1)
165152
assertTilstander(3.vedtaksperiode, AVVENTER_REVURDERING, orgnummer = a1)
166153
assertForkastetPeriodeTilstander(1.vedtaksperiode, START, TIL_INFOTRYGD, orgnummer = a2)
@@ -310,8 +297,6 @@ internal class FlereUkjenteArbeidsgivereTest : AbstractEndToEndTest() {
310297
AVVENTER_GODKJENNING,
311298
AVVENTER_BLOKKERENDE_PERIODE,
312299
AVVENTER_HISTORIKK,
313-
AVVENTER_BLOKKERENDE_PERIODE,
314-
AVVENTER_HISTORIKK,
315300
AVVENTER_SIMULERING,
316301
AVVENTER_GODKJENNING, orgnummer = a1
317302
)
@@ -363,8 +348,6 @@ internal class FlereUkjenteArbeidsgivereTest : AbstractEndToEndTest() {
363348
AVSLUTTET,
364349
AVVENTER_REVURDERING,
365350
AVVENTER_HISTORIKK_REVURDERING,
366-
AVVENTER_REVURDERING,
367-
AVVENTER_HISTORIKK_REVURDERING,
368351
AVVENTER_SIMULERING_REVURDERING,
369352
AVVENTER_GODKJENNING_REVURDERING,
370353
TIL_UTBETALING,

sykepenger-model/src/test/kotlin/no/nav/helse/spleis/e2e/inntektsmelding/InntektsmeldingE2ETest.kt

+10
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,16 @@ internal class InntektsmeldingE2ETest : AbstractEndToEndTest() {
336336
assertSisteTilstand(1.vedtaksperiode, AVVENTER_VILKÅRSPRØVING)
337337
}
338338

339+
@Test
340+
fun `inntektsmelding i det blå`() {
341+
nyttVedtak(1.januar, 31.januar)
342+
forlengVedtak(1.februar, 28.februar)
343+
344+
håndterInntektsmelding(listOf(1.oktober til 16.oktober), orgnummer = a2)
345+
assertSisteTilstand(1.vedtaksperiode, AVSLUTTET)
346+
assertSisteTilstand(2.vedtaksperiode, AVSLUTTET)
347+
}
348+
339349
@Test
340350
fun `Skal ikke bruke inntekt fra gammel inntektsmelding`() {
341351
håndterInntektsmelding(arbeidsgiverperioder = listOf(1.januar til 16.januar))

0 commit comments

Comments
 (0)