Skip to content

Commit

Permalink
Skal lagre på første fraværsdag utledet av vedtaksperioden
Browse files Browse the repository at this point in the history
Co-authored-by: Hege Haavaldsen <[email protected]>
Co-authored-by: Simen Ullern <[email protected]>
  • Loading branch information
3 people committed Nov 4, 2024
1 parent d777ce4 commit b1912c8
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.helse.forrigeDag
import no.nav.helse.hendelser.Avsender.ARBEIDSGIVER
import no.nav.helse.hendelser.Periode.Companion.grupperSammenhengendePerioder
import no.nav.helse.nesteDag
import no.nav.helse.person.Arbeidsgiver
import no.nav.helse.person.Behandlinger
import no.nav.helse.person.Dokumentsporing
import no.nav.helse.person.ForkastetVedtaksperiode
Expand All @@ -19,6 +20,8 @@ import no.nav.helse.person.ForkastetVedtaksperiode.Companion.overlapperMed
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.SAMMENHENGENDE_PERIODER_HOS_ARBEIDSGIVER
import no.nav.helse.person.Vedtaksperiode.Companion.finn
import no.nav.helse.person.Vedtaksperiode.Companion.finnSkjæringstidspunktFor
import no.nav.helse.person.Vedtaksperiode.Companion.inneholder
import no.nav.helse.person.aktivitetslogg.IAktivitetslogg
Expand Down Expand Up @@ -122,20 +125,47 @@ class Inntektsmelding(
}

private val refusjonsElement = Refusjonshistorikk.Refusjon(
meldingsreferanseId = meldingsreferanseId,
meldingsreferanseId = metadata.meldingsreferanseId,
førsteFraværsdag = førsteFraværsdag,
arbeidsgiverperioder = arbeidsgiverperioder,
beløp = refusjon.beløp,
sisteRefusjonsdag = refusjon.opphørsdato,
endringerIRefusjon = refusjon.endringerIRefusjon.map { it.tilEndring() },
tidsstempel = mottatt
tidsstempel = metadata.registrert
)

private fun refusjonsElement(vedtaksperioder: List<Vedtaksperiode>, arbeidsgiver: Arbeidsgiver): Refusjonshistorikk.Refusjon {
val utledetFørsteFraværsdag = utledFørsteFraværsdag(vedtaksperioder, arbeidsgiver)
return Refusjonshistorikk.Refusjon(
meldingsreferanseId = metadata.meldingsreferanseId,
førsteFraværsdag = utledetFørsteFraværsdag,
arbeidsgiverperioder = arbeidsgiverperioder,
beløp = refusjon.beløp,
sisteRefusjonsdag = refusjon.opphørsdato,
endringerIRefusjon = refusjon.endringerIRefusjon.map { it.tilEndring() },
tidsstempel = metadata.registrert
)
}

private fun utledFørsteFraværsdag(
vedtaksperioder: List<Vedtaksperiode>,
arbeidsgiver: Arbeidsgiver
): LocalDate? {
return if (erPortalinntektsmelding()) {
val skjæringstidspunkt = vedtaksperioder.finnSkjæringstidspunktFor(requireNotNull(vedtaksperiodeId)) ?: return førsteFraværsdag
val vedtaksperiode = vedtaksperioder.finn(vedtaksperiodeId) ?: return førsteFraværsdag
arbeidsgiver.finnFørsteFraværsdag(skjæringstidspunkt, SAMMENHENGENDE_PERIODER_HOS_ARBEIDSGIVER(vedtaksperiode)) ?: beregnetInntektsdato
} else {
førsteFraværsdag
}
}

internal val refusjonsservitør = checkNotNull(Refusjonsservitør.fra(refusjon.refusjonstidslinje(førsteFraværsdag, arbeidsgiverperioder, meldingsreferanseId, mottatt))) {
"Det har kommet en inntektsmelding uten refusjonsopplysninger, det takler vi særdeles dårlig"
}

internal fun leggTilRefusjon(refusjonshistorikk: Refusjonshistorikk) {
internal fun leggTilRefusjon(refusjonshistorikk: Refusjonshistorikk, vedtaksperioder: List<Vedtaksperiode>, arbeidsgiver: Arbeidsgiver) {
val refusjonsElement = refusjonsElement(vedtaksperioder, arbeidsgiver)
refusjonshistorikk.leggTilRefusjon(refusjonsElement)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -823,7 +823,7 @@ internal class Arbeidsgiver private constructor(
}

private fun addInntektsmelding(inntektsmelding: Inntektsmelding, aktivitetslogg: IAktivitetslogg, overstyring: Revurderingseventyr?) {
inntektsmelding.leggTilRefusjon(refusjonshistorikk)
inntektsmelding.leggTilRefusjon(refusjonshistorikk, vedtaksperioder, this)

val subsumsjonsloggMedInntektsmeldingkontekst = subsumsjonsloggMedInntektsmeldingkontekst(inntektsmelding)
val inntektsdato = inntektsmelding.addInntekt(inntektshistorikk, subsumsjonsloggMedInntektsmeldingkontekst, vedtaksperioder)
Expand Down Expand Up @@ -958,9 +958,9 @@ internal class Arbeidsgiver private constructor(
sykdomshistorikk.sykdomstidslinje().bekreftErÅpen(periode)
}

private fun finnFørsteFraværsdag(skjæringstidspunkt: LocalDate): LocalDate? {
val førstePeriodeMedUtbetaling = vedtaksperioder.firstOrNull(SKAL_INNGÅ_I_SYKEPENGEGRUNNLAG(skjæringstidspunkt))
?: vedtaksperioder.firstOrNull(MED_SKJÆRINGSTIDSPUNKT(skjæringstidspunkt))
internal fun finnFørsteFraværsdag(skjæringstidspunkt: LocalDate, vedtaksperiodeFilter: VedtaksperiodeFilter = { true }): LocalDate? {
val førstePeriodeMedUtbetaling = vedtaksperioder.filter(vedtaksperiodeFilter).firstOrNull(SKAL_INNGÅ_I_SYKEPENGEGRUNNLAG(skjæringstidspunkt))
?: vedtaksperioder.filter(vedtaksperiodeFilter).firstOrNull(MED_SKJÆRINGSTIDSPUNKT(skjæringstidspunkt))
?: return null
return sykdomstidslinje().sisteSkjæringstidspunkt(førstePeriodeMedUtbetaling.periode())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3044,6 +3044,7 @@ internal class Vedtaksperiode private constructor(
internal fun List<Vedtaksperiode>.finnSkjæringstidspunktFor(vedtaksperiodeId: UUID): LocalDate? {
return firstOrNull { it.id == vedtaksperiodeId }?.skjæringstidspunkt
}
internal fun List<Vedtaksperiode>.finn(vedtaksperiodeId: UUID): Vedtaksperiode? = firstOrNull { it.id == vedtaksperiodeId }
internal fun List<Vedtaksperiode>.startdatoerPåSammenhengendeVedtaksperioder(): Set<LocalDate> {
val startdatoer = mutableMapOf<UUID, LocalDate>()

Expand All @@ -3068,6 +3069,12 @@ internal class Vedtaksperiode private constructor(
return medSammeAGP(other)
}
}
internal val SAMMENHENGENDE_PERIODER_HOS_ARBEIDSGIVER= fun(segSelv: Vedtaksperiode): VedtaksperiodeFilter {
val sammenhengendeVedtaksperioder = segSelv.arbeidsgiver.finnSammenhengendeVedtaksperioder(segSelv)
return fun (other: Vedtaksperiode): Boolean {
return other in sammenhengendeVedtaksperioder
}
}
internal val MED_SAMME_AGP_OG_SKJÆRINGSTIDSPUNKT = fun(segSelv: Vedtaksperiode): VedtaksperiodeFilter {
val skjæringstidspunkt = segSelv.skjæringstidspunkt
val arbeidsgiverperiode = segSelv.finnArbeidsgiverperiode()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ internal class FlereArbeidsgivereFlytTest : AbstractEndToEndTest() {
assertTilstand(1.vedtaksperiode, AVVENTER_BLOKKERENDE_PERIODE, orgnummer = a2)
assertTilstand(2.vedtaksperiode, AVVENTER_INNTEKTSMELDING, orgnummer = a2)

håndterInntektsmelding(listOf(2.januar til 17.januar), førsteFraværsdag = 20.januar, orgnummer = a2)
håndterInntektsmelding(listOf(2.januar til 17.januar), førsteFraværsdag = 20.januar, orgnummer = a2, vedtaksperiodeIdInnhenter = 2.vedtaksperiode)

assertTilstand(1.vedtaksperiode, AVVENTER_VILKÅRSPRØVING, orgnummer = a1)
assertTilstand(1.vedtaksperiode, AVVENTER_BLOKKERENDE_PERIODE, orgnummer = a2)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2208,15 +2208,7 @@ internal class InntektsmeldingE2ETest : AbstractEndToEndTest() {

val refusjonsopplysninger = inspektør.arbeidsgiver.refusjonsopplysninger(5.februar)

assertForventetFeil(
forklaring = "Skal lagre på første fraværsdag utledet av vedtaksperioden",
= {
assertTrue(refusjonsopplysninger.erTom)
},
ønsket = {
assertFalse(refusjonsopplysninger.erTom)
}
)
assertFalse(refusjonsopplysninger.erTom)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -733,8 +733,7 @@ internal class OverstyrArbeidsgiveropplysningerTest : AbstractEndToEndTest() {
assertIngenVarsler()

assertEquals(listOf(
Refusjonsopplysning(inntektsmeldingId, 5.februar, 6.februar, INNTEKT),
Refusjonsopplysning(inntektsmeldingId, 7.februar, null, INNTEKT),
Refusjonsopplysning(inntektsmeldingId, 5.februar, null, INNTEKT),
), inspektør.refusjonsopplysningerISykepengegrunnlaget(5.februar, a1))

val overstyringId = UUID.randomUUID()
Expand Down

0 comments on commit b1912c8

Please sign in to comment.