Skip to content

Commit

Permalink
Fjerner inntektsdato fra inntektsmelding
Browse files Browse the repository at this point in the history
Nå brukes kun den som ligger i avsenderen om det er NAV_NO*
  • Loading branch information
fraadsbrandth committed Nov 11, 2024
1 parent 1a257a1 commit b37284e
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ internal abstract class AbstractObservableTest {
refusjon = refusjon,
orgnummer = orgnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = null,
beregnetInntekt = beregnetInntekt,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,6 @@ internal class RestApiTest {
),
orgnummer = ORGNUMMER,
førsteFraværsdag = LocalDate.of(2018, 1, 1),
inntektsdato = null,
beregnetInntekt = 12000.månedlig,
arbeidsgiverperioder = listOf(Periode(LocalDate.of(2018, 9, 10), LocalDate.of(2018, 9, 10).plusDays(16))),
begrunnelseForReduksjonEllerIkkeUtbetalt = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@ internal class ArbeidsgiverHendelsefabrikk(private val organisasjonsnummer: Stri
refusjon = refusjon,
orgnummer = organisasjonsnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = null,
beregnetInntekt = beregnetInntekt,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down Expand Up @@ -175,7 +174,6 @@ internal class ArbeidsgiverHendelsefabrikk(private val organisasjonsnummer: Stri
refusjon = refusjon,
orgnummer = organisasjonsnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = null,
beregnetInntekt = beregnetInntekt,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ internal open class InntektsmeldingMessage(
refusjon = refusjon,
orgnummer = orgnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = inntektsdato,
beregnetInntekt = beregnetInntekt.månedlig,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ internal class InntektsmeldingerReplayMessage(packet: JsonMessage, override val
refusjon = refusjon,
orgnummer = orgnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = null, // PortalIM skal ikke replayes
beregnetInntekt = beregnetInntekt.månedlig,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import no.nav.helse.person.Person
import no.nav.helse.person.Sykmeldingsperioder
import no.nav.helse.person.Vedtaksperiode
import no.nav.helse.person.Vedtaksperiode.Companion.finn
import no.nav.helse.person.Vedtaksperiode.Companion.finnSkjæringstidspunktFor
import no.nav.helse.person.aktivitetslogg.IAktivitetslogg
import no.nav.helse.person.aktivitetslogg.Varselkode
import no.nav.helse.person.beløp.Beløpstidslinje
Expand All @@ -39,7 +38,6 @@ class Inntektsmelding(
private val refusjon: Refusjon,
private val orgnummer: String,
private val førsteFraværsdag: LocalDate?,
private val inntektsdato: LocalDate?,
private val beregnetInntekt: Inntekt,
arbeidsgiverperioder: List<Periode>,
begrunnelseForReduksjonEllerIkkeUtbetalt: String?,
Expand All @@ -54,10 +52,6 @@ class Inntektsmelding(
if (førsteFraværsdag != null && (arbeidsgiverperioder.isEmpty() || førsteFraværsdag > arbeidsgiverperioder.last().endInclusive.nesteDag)) return førsteFraværsdag
return arbeidsgiverperioder.maxOf { it.start }
}

private val sikkerlogg = LoggerFactory.getLogger("tjenestekall")
private val logger = LoggerFactory.getLogger(Inntektsmelding::class.java)

}

init {
Expand Down Expand Up @@ -96,24 +90,11 @@ class Inntektsmelding(
aktivitetslogg.info("Lagrer inntekt på alternativ inntektsdato $alternativInntektsdato")
}

internal fun addInntekt(inntektshistorikk: Inntektshistorikk, subsumsjonslogg: Subsumsjonslogg, vedtaksperioder: List<Vedtaksperiode>): LocalDate {
internal fun addInntekt(inntektshistorikk: Inntektshistorikk, subsumsjonslogg: Subsumsjonslogg): LocalDate {
subsumsjonslogg.logg(`§ 8-10 ledd 3`(beregnetInntekt.årlig, beregnetInntekt.daglig))
if (erPortalinntektsmelding()) {
requireNotNull(vedtaksperiodeId) { "En portalinntektsmelding må oppgi vedtaksperiodeId-en den skal gjelde for" }
val skjæringstidspunkt = vedtaksperioder.finnSkjæringstidspunktFor(vedtaksperiodeId) ?: return beregnetInntektsdato // TODO tenk litt mer på dette
if (skjæringstidspunkt != inntektsdato) {
"Inntekt lagres på en annen dato enn oppgitt i portalinntektsmelding for inntektsmeldingId ${metadata.meldingsreferanseId}. Inntektsmelding oppga inntektsdato $inntektsdato, men inntekten ble lagret på skjæringstidspunkt $skjæringstidspunkt"
.let {
logger.info(it)
sikkerlogg.info(it)
}
}
inntektshistorikk.leggTil(InntektsmeldingInntekt(skjæringstidspunkt, metadata.meldingsreferanseId, beregnetInntekt))
return skjæringstidspunkt
}

inntektshistorikk.leggTil(InntektsmeldingInntekt(beregnetInntektsdato, metadata.meldingsreferanseId, beregnetInntekt))
return beregnetInntektsdato
val inntektsdato = type.inntektsdatoForInntekthistorikk(this)
inntektshistorikk.leggTil(InntektsmeldingInntekt(inntektsdato, metadata.meldingsreferanseId, beregnetInntekt))
return inntektsdato
}

private val refusjonsElement = Refusjonshistorikk.Refusjon(
Expand Down Expand Up @@ -273,15 +254,16 @@ class Inntektsmelding(
this.type = when (avsendersystem) {
Avsendersystem.ALTINN,
Avsendersystem.LPS -> KlassiskInntektsmelding
is Avsendersystem.NAV_NO -> vedtaksperioder.finn(avsendersystem.vedtaksperiodeId)?.let { Portalinntetksmelding(it) } ?: ForkastetPortalinntetksmelding
is Avsendersystem.NAV_NO_SELVBESTEMT -> vedtaksperioder.finn(avsendersystem.vedtaksperiodeId)?.let { Portalinntetksmelding(it) } ?: ForkastetPortalinntetksmelding
is Avsendersystem.NAV_NO -> vedtaksperioder.finn(avsendersystem.vedtaksperiodeId)?.let { Portalinntetksmelding(it, avsendersystem.inntektsdato) } ?: ForkastetPortalinntetksmelding
is Avsendersystem.NAV_NO_SELVBESTEMT -> vedtaksperioder.finn(avsendersystem.vedtaksperiodeId)?.let { Portalinntetksmelding(it, avsendersystem.inntektsdato) } ?: ForkastetPortalinntetksmelding
}
return this.type.entering(this, aktivitetslogg, person, vedtaksperioder)
}

private sealed interface Type {
fun entering(inntektsmelding: Inntektsmelding, aktivitetslogg: IAktivitetslogg, person: Person, vedtaksperioder: List<Vedtaksperiode>): Boolean
fun skalOppdatereVilkårsgrunnlag(inntektsmelding: Inntektsmelding, sykdomstidslinjeperiode: Periode?): Boolean
fun inntektsdatoForInntekthistorikk(inntektsmelding: Inntektsmelding): LocalDate
}

private data object KlassiskInntektsmelding: Type {
Expand All @@ -293,6 +275,7 @@ class Inntektsmelding(
if (sykdomstidslinjeperiode == null) return false // har ikke noe sykdom for arbeidsgiveren
return inntektsmelding.beregnetInntektsdato in sykdomstidslinjeperiode
}
override fun inntektsdatoForInntekthistorikk(inntektsmelding: Inntektsmelding) = inntektsmelding.beregnetInntektsdato
}

private data object ForkastetPortalinntetksmelding: Type {
Expand All @@ -303,13 +286,30 @@ class Inntektsmelding(
return false
}
override fun skalOppdatereVilkårsgrunnlag(inntektsmelding: Inntektsmelding, sykdomstidslinjeperiode: Periode?) = error("Forventer ikke videre behandling av portalinntektsmelding for forkastet periode")
override fun inntektsdatoForInntekthistorikk(inntektsmelding: Inntektsmelding) = error("Forventer ikke videre behandling av portalinntektsmelding for forkastet periode")
}

private data class Portalinntetksmelding(private val vedtaksperiode: Vedtaksperiode) : Type {
private data class Portalinntetksmelding(private val vedtaksperiode: Vedtaksperiode, private val inntektsdato: LocalDate) : Type {
override fun entering(inntektsmelding: Inntektsmelding, aktivitetslogg: IAktivitetslogg, person: Person, vedtaksperioder: List<Vedtaksperiode>): Boolean {
aktivitetslogg.info("Håndterer en portalinntektsmelding")
return true
}
override fun skalOppdatereVilkårsgrunnlag(inntektsmelding: Inntektsmelding, sykdomstidslinjeperiode: Periode?) = true
override fun inntektsdatoForInntekthistorikk(inntektsmelding: Inntektsmelding): LocalDate {
val skjæringstidspunkt = vedtaksperiode.skjæringstidspunkt
if (skjæringstidspunkt != inntektsdato) {
"Inntekt lagres på en annen dato enn oppgitt i portalinntektsmelding for inntektsmeldingId ${inntektsmelding.metadata.meldingsreferanseId}. Inntektsmelding oppga inntektsdato $inntektsdato, men inntekten ble lagret på skjæringstidspunkt $skjæringstidspunkt"
.let {
logger.info(it)
sikkerlogg.info(it)
}
}
return skjæringstidspunkt
}

private companion object {
private val sikkerlogg = LoggerFactory.getLogger("tjenestekall")
private val logger = LoggerFactory.getLogger(Portalinntetksmelding::class.java)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ class Portalinntektsmelding(
refusjon = refusjon,
orgnummer = orgnummer,
førsteFraværsdag = vedtaksperiodeFom,
inntektsdato = skjæringstidspunkt,
beregnetInntekt = beregnetInntekt,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -851,7 +851,7 @@ internal class Arbeidsgiver private constructor(
inntektsmelding.leggTilRefusjon(refusjonshistorikk, vedtaksperioder)

val subsumsjonsloggMedInntektsmeldingkontekst = subsumsjonsloggMedInntektsmeldingkontekst(inntektsmelding)
val inntektsdato = inntektsmelding.addInntekt(inntektshistorikk, subsumsjonsloggMedInntektsmeldingkontekst, vedtaksperioder)
val inntektsdato = inntektsmelding.addInntekt(inntektshistorikk, subsumsjonsloggMedInntektsmeldingkontekst)
val sykdomstidslinjeperiode = sykdomstidslinje().periode()
val skjæringstidspunkt = person.beregnSkjæringstidspunkt()().beregnSkjæringstidspunkt(inntektsdato.somPeriode())

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ internal class ArbeidsgiverHendelsefabrikk(private val organisasjonsnummer: Stri
refusjon = refusjon,
orgnummer = organisasjonsnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = null,
beregnetInntekt = beregnetInntekt,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down Expand Up @@ -214,7 +213,6 @@ internal class ArbeidsgiverHendelsefabrikk(private val organisasjonsnummer: Stri
refusjon = refusjon,
orgnummer = organisasjonsnummer,
førsteFraværsdag = førsteFraværsdag,
inntektsdato = førsteFraværsdag ?: arbeidsgiverperioder.maxOfOrNull { it.start } ?: LocalDate.EPOCH,
beregnetInntekt = beregnetInntekt,
arbeidsgiverperioder = arbeidsgiverperioder,
begrunnelseForReduksjonEllerIkkeUtbetalt = begrunnelseForReduksjonEllerIkkeUtbetalt,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ internal class InntektsmeldingTest {
@Test
fun `førsteFraværsdag kan være null ved lagring av inntekt`() {
inntektsmelding(listOf(Periode(1.januar, 16.januar)), førsteFraværsdag = null)
assertDoesNotThrow { inntektsmelding.addInntekt(Inntektshistorikk(), EmptyLog, emptyList()) }
assertDoesNotThrow { inntektsmelding.addInntekt(Inntektshistorikk(), EmptyLog) }
}

@Test
Expand All @@ -458,7 +458,7 @@ internal class InntektsmeldingTest {
førsteFraværsdag = 1.januar
)
val inntektshistorikk = Inntektshistorikk()
inntektsmelding.addInntekt(inntektshistorikk, EmptyLog, emptyList())
inntektsmelding.addInntekt(inntektshistorikk, EmptyLog)
assertEquals(2000.månedlig, inntektshistorikk.avklarSykepengegrunnlag(1.januar, 1.januar, null)?.inspektør?.beløp)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ internal class InntektshistorikkTest {

@Test
fun `Inntekt fra inntektsmelding brukes til å beregne sykepengegrunnlaget`() {
inntektsmelding(førsteFraværsdag = 1.januar).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 1.januar).addInntekt(historikk, EmptyLog)
assertEquals(1, inspektør.size)
assertEquals(INNTEKT, historikk.avklarSykepengegrunnlag(
1.januar,
Expand All @@ -99,17 +99,17 @@ internal class InntektshistorikkTest {

@Test
fun `Inntekt fra andre inntektsmelding overskriver inntekt fra første, gitt samme første fraværsdag`() {
inntektsmelding(førsteFraværsdag = 1.januar, beregnetInntekt = 30000.månedlig).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 1.januar, beregnetInntekt = 29000.månedlig).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 1.januar, beregnetInntekt = 30000.månedlig).addInntekt(historikk, EmptyLog)
inntektsmelding(førsteFraværsdag = 1.januar, beregnetInntekt = 29000.månedlig).addInntekt(historikk, EmptyLog)
resetSeed(1.februar)
inntektsmelding(førsteFraværsdag = 1.februar, beregnetInntekt = 31000.månedlig).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 1.februar, beregnetInntekt = 31000.månedlig).addInntekt(historikk, EmptyLog)
assertEquals(29000.månedlig, historikk.avklarSykepengegrunnlag(1.januar, 1.januar, null)?.inspektør?.beløp)
assertEquals(31000.månedlig, historikk.avklarSykepengegrunnlag(1.februar, 1.februar, null)?.inspektør?.beløp)
}

@Test
fun `Inntekt fra inntektsmelding brukes ikke til å beregne sykepengegrunnlaget på annen dato`() {
inntektsmelding(førsteFraværsdag = 1.januar).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 1.januar).addInntekt(historikk, EmptyLog)
assertEquals(1, inspektør.size)
assertNull(historikk.avklarSykepengegrunnlag(2.januar, 2.januar, null))
}
Expand Down Expand Up @@ -207,8 +207,11 @@ internal class InntektshistorikkTest {

@Test
fun `Inntekt for annen dato og samme kilde erstatter ikke eksisterende`() {
inntektsmelding(førsteFraværsdag = 1.januar).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 2.januar, arbeidsgiverperioder = listOf(2.januar til 17.januar)).addInntekt(historikk, EmptyLog, emptyList())
inntektsmelding(førsteFraværsdag = 1.januar).addInntekt(historikk, EmptyLog)
inntektsmelding(førsteFraværsdag = 2.januar, arbeidsgiverperioder = listOf(2.januar til 17.januar)).addInntekt(
historikk,
EmptyLog
)
assertEquals(2, inspektør.size)
}

Expand Down

0 comments on commit b37284e

Please sign in to comment.