Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Inntekt
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
import no.nav.dagpenger.inntekt.mapping.Virksomhet
import no.nav.dagpenger.inntekt.mapping.utledInntektType
import java.time.LocalDateTime.now
import java.time.YearMonth

Expand Down Expand Up @@ -39,6 +40,7 @@ private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): Inntektko
inntekterDto.virksomheter.forEach { virksomhet ->
virksomhet.inntekter?.map { inntektMaaned ->
val inntekter = inntektPerÅrOgMåned[inntektMaaned.aarMaaned]?.first ?: mutableListOf()
val inntektType = inntektMaaned.inntektType ?: utledInntektType(inntektMaaned.beskrivelse)
inntekter.add(
Inntekt(
inntektMaaned.belop,
Expand All @@ -59,7 +61,7 @@ private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): Inntektko
inntektMaaned.inngaarIGrunnlagForTrekk,
inntektMaaned.utloeserArbeidsgiveravgift,
inntektMaaned.informasjonsstatus,
inntektMaaned.inntektType,
inntektType,
inntektMaaned.tilleggsinformasjon,
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ data class InntektMaaned(
val inngaarIGrunnlagForTrekk: Boolean? = null,
val utloeserArbeidsgiveravgift: Boolean? = null,
val informasjonsstatus: String? = null,
val inntektType: InntektType,
val inntektType: InntektType? = null,
val tilleggsinformasjon: TilleggInformasjon? = null,
val aarMaaned: YearMonth,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,19 @@ fun verdiKode(datagrunnlagKlassifisering: DatagrunnlagKlassifisering): String {
private fun shouldTryGenericMappingWithoutForhold(datagrunnlagKlassifisering: DatagrunnlagKlassifisering) =
!dataGrunnlagKlassifiseringToVerdikode.contains(datagrunnlagKlassifisering) && datagrunnlagKlassifisering.forhold != null

fun dataGrunnlag(verdiKode: String): DatagrunnlagKlassifisering {
return dataGrunnlagKlassifiseringToVerdikode.inverse[verdiKode]
fun dataGrunnlag(verdiKode: String): DatagrunnlagKlassifisering =
dataGrunnlagKlassifiseringToVerdikode.inverse[verdiKode]
?: throw VerdiKodeMappingException("No datagrunnlag found for verdikode=$verdiKode")
}

class VerdiKodeMappingException(message: String) : RuntimeException(message)
fun utledInntektType(inntektBeskrivelse: InntektBeskrivelse): InntektType =
dataGrunnlagKlassifiseringToVerdikode.keys
.find { it.beskrivelse == inntektBeskrivelse }
?.type
?: throw IllegalArgumentException("Klarte ikke å utlede inntekttype fra inntektbeskrivelse \"$inntektBeskrivelse\".")

class VerdiKodeMappingException(
message: String,
) : RuntimeException(message)

@Suppress("ktlint:standard:max-line-length")
val dataGrunnlagKlassifiseringToVerdikode =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType.ORGANISASJON
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Avvik
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Inntekt
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektBeskrivelse.BIL
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektBeskrivelse.SVANGERSKAPSPENGER_FERIEPENGER
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType.LOENNSINNTEKT
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType.YTELSE_FRA_OFFENTLIGE
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Periode
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.SpesielleInntjeningsforhold.LOENN_VED_KONKURS_ELLER_STATSGARANTI_OSV
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjon
Expand Down Expand Up @@ -127,4 +129,22 @@ class InntekterDtoTest {
it?.arbeidsInntektInformasjon?.inntektListe?.shouldBeEmpty()
}
}

@Test
fun `mapToStoredInntekt mapper til forventet resultat når inntektType er null`() {
val inntektId = ULID().nextULID()
val inntekterDto =
jacksonObjectMapper.readValue<InntekterDto>(
this::class.java
.getResource("/test-data/expected-uklassifisert-post-body-inntektType-er-null.json")
?.readText()!!,
)

val storedInntekt = inntekterDto.mapToStoredInntekt(inntektId = inntektId)

storedInntekt.inntekt.arbeidsInntektMaaned?.first()?.arbeidsInntektInformasjon?.inntektListe?.first().let {
it?.beskrivelse shouldBe SVANGERSKAPSPENGER_FERIEPENGER
it?.inntektType shouldBe YTELSE_FRA_OFFENTLIGE
}
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package no.nav.dagpenger.inntekt.mapping

import io.kotest.matchers.shouldBe
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektBeskrivelse
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType.LOENNSINNTEKT
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType.YTELSE_FRA_OFFENTLIGE
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.SpesielleInntjeningsforhold
import org.junit.jupiter.api.Test

@Suppress("ktlint:standard:max-line-length")
internal class VerdikoderTest {
@Test
fun `posteringstype-mapping for Feriepenger returnerer forventet verdi`() {
val posteringsTypeInfo =
DatagrunnlagKlassifisering(LOENNSINNTEKT, InntektBeskrivelse.FERIEPENGER, null)

verdiKode(posteringsTypeInfo) shouldBe "Feriepenger"
}

@Test
fun `verdikode for DatagrunnlagKlassifisering med inntjeningsforhold uten mapping skal være lik verdikode for DatagrunnlagKlassifisering som inntjeningsforhold lik null`() {
val posteringsTypeWithNull =
DatagrunnlagKlassifisering(LOENNSINNTEKT, InntektBeskrivelse.FERIEPENGER, null)
val posteringsTypeWithoutMapping =
DatagrunnlagKlassifisering(
LOENNSINNTEKT,
InntektBeskrivelse.FERIEPENGER,
SpesielleInntjeningsforhold.STATSANSATT_UTLANDET,
)

verdiKode(posteringsTypeWithoutMapping) shouldBe verdiKode(posteringsTypeWithNull)
}

@Test
fun `verdikode for DatagrunnlagKlassifisering med ukjent inntjeningsforhold skal være lik verdikode for DatagrunnlagKlassifisering med inntjeningsforhold lik null`() {
val posteringsTypeWithNull =
DatagrunnlagKlassifisering(LOENNSINNTEKT, InntektBeskrivelse.FERIEPENGER, null)
val posteringsTypeWithUnknown =
DatagrunnlagKlassifisering(
LOENNSINNTEKT,
InntektBeskrivelse.FERIEPENGER,
SpesielleInntjeningsforhold.UNKNOWN,
)

verdiKode(posteringsTypeWithUnknown) shouldBe verdiKode(posteringsTypeWithNull)
}

@Test
fun `utledInntektType utleder InntektBeskrivelse til forventet InntektType`() {
utledInntektType(InntektBeskrivelse.FORELDREPENGER) shouldBe YTELSE_FRA_OFFENTLIGE
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"virksomheter": [
{
"virksomhetsnummer": "123456789",
"virksomhetsnavn": "Test Virksomhet",
"periode": {
"fraOgMed": "2023-01",
"tilOgMed": "2024-12"
},
"inntekter": [
{
"belop": 50000.00,
"fordel": "kontantytelse",
"beskrivelse": "feriepengerSvangerskapspenger",
"inntektskilde": "A-ordningen",
"inntektsstatus": "LoependeInnrapportert",
"inntektsperiodetype": "Maaned",
"leveringstidspunkt": "2023-01",
"opptjeningsland": "NO",
"opptjeningsperiode": {
"startDato": "2023-01-04T00:00:00",
"sluttDato": "2023-01-25T00:00:00"
},
"skattemessigBosattLand": "NO",
"utbetaltIMaaned": "2023-02",
"opplysningspliktig": {
"aktoerType": "NATURLIG_IDENT",
"identifikator": "06221841830"
},
"inntektsinnsender": {
"aktoerType": "ORGANISASJON",
"identifikator": "561235623"
},
"virksomhet": {
"aktoerType": "ORGANISASJON",
"identifikator": "123456789"
},
"inntektsmottaker": {
"aktoerType": "AKTOER_ID",
"identifikator": "287631"
},
"inngaarIGrunnlagForTrekk": true,
"utloeserArbeidsgiveravgift": false,
"informasjonsstatus": "InngaarAlltid",
"inntektType": null,
"tilleggsinformasjon": {
"kategori": "enKategori",
"tilleggsinformasjonDetaljer": {
"detaljerType": "enDetaljerType",
"spesielleInntjeningsforhold": "loennVedKonkursEllerStatsgarantiOsv"
}
},
"aarMaaned": "2023-01"
}
],
"totalBelop": 50000.00,
"avvikListe": []
}
],
"mottaker": {
"pnr": "19876543210",
"navn": "Navn Navnesen"
},
"periode": {
"fraOgMed": "2000-12",
"tilOgMed": "2025-04"
},
"begrunnelse": "Dette er en begrunnelse."
}
Loading