Skip to content

Commit f70eae5

Browse files
vskjefstJMLindseth
andcommitted
Lagre inntekt (WiP, squash før merge)
Co-authored-by: John Martin Lindseth <[email protected]>
1 parent 11c4dc9 commit f70eae5

File tree

5 files changed

+96
-13
lines changed

5 files changed

+96
-13
lines changed

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/mapping/MapToInntektFrontend.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ data class InntektMaaned(
115115
val opptjeningsperiode: Periode? = null,
116116
val skattemessigBosattLand: String? = null,
117117
val utbetaltIMaaned: YearMonth,
118+
val opplysningspliktig: Aktoer? = null,
118119
val inntektsinnsender: Aktoer? = null,
119120
val virksomhet: Aktoer? = null,
120121
val inntektsmottaker: Aktoer? = null,

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/v1/models/InntekterDto.kt

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,25 @@ fun InntekterDto.mapToStoredInntekt(inntektId: String): StoredInntekt =
2828
private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): InntektkomponentResponse {
2929
val arbeidsInntektMaaneder: MutableList<ArbeidsInntektMaaned> = mutableListOf()
3030

31+
/*
32+
Dette må mappes om fra gruppering på virksomhet, til gruppering på aarMaaned (dvs hvert aarMaaned inneholder
33+
inntekt for alle virksomhetene som har utbetalt inntekt for gitt aarMaaned). Strukturen som kommer fra frontend er
34+
gruppert på virksomhet, og alle utbetalte inntekter for alle aarMaaned ligger inne i hver virksomhet.
35+
36+
Vi mistenker også at Avvik i datastrukturen som sendes til frontend (og som frontend da sender tilbake til backend),
37+
ikke inneholder all informasjon og/eller ligger på feil sted i strukturen.
38+
39+
Løsningsforslag:
40+
41+
Lag en Map<YearMonth, List<Inntekt>>(), og map InntektMaaned-objekter til Inntekt-objekter, og legg i riktig
42+
"bucket" i mappen -> opprett et ArbeidsInntektMaaned-objekt per key i map (key == maanedAar,
43+
liste i value == arbeidsInntektInformasjon.
44+
45+
Hvis vi blir skikkelig tøffe: https://kotlinlang.org/docs/collection-grouping.html
46+
47+
I tillegg må vi se på mapping av avvik når vi har fått det på riktig plass i InntektDto.
48+
*/
49+
3150
inntekterDto.virksomheter.forEach { virksomhet ->
3251
arbeidsInntektMaaneder.addAll(
3352
virksomhet.inntekter?.map {
@@ -48,12 +67,10 @@ private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): Inntektko
4867
inntektMaaned.opptjeningsperiode,
4968
inntektMaaned.skattemessigBosattLand,
5069
inntektMaaned.utbetaltIMaaned,
51-
// TODO: Er det mottaker som skal brukes her?
52-
mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
53-
// TODO: Er det virksomhet som skal brukes her?
54-
mapToAktoerOrganisasjon(virksomhet),
55-
mapToAktoerOrganisasjon(virksomhet),
56-
mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
70+
inntektMaaned.opplysningspliktig,
71+
inntektMaaned.inntektsinnsender,
72+
inntektMaaned.virksomhet,
73+
inntektMaaned.inntektsmottaker,
5774
inntektMaaned.inngaarIGrunnlagForTrekk,
5875
inntektMaaned.utloeserArbeidsgiveravgift,
5976
inntektMaaned.informasjonsstatus,
@@ -73,7 +90,5 @@ private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): Inntektko
7390
)
7491
}
7592

76-
private fun mapToAktoerOrganisasjon(virksomhet: Virksomhet): Aktoer = Aktoer(AktoerType.ORGANISASJON, virksomhet.virksomhetsnummer)
77-
7893
private fun mapToAktoerNaturligIdent(fnr: String?): Aktoer =
7994
Aktoer(AktoerType.NATURLIG_IDENT, fnr ?: throw IllegalArgumentException("Fødselsenummer mangler"))

dp-inntekt-api/src/test/kotlin/no/nav/dagpenger/inntekt/mapping/MapFromGUIInntektTest.kt

Lines changed: 0 additions & 3 deletions
This file was deleted.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package no.nav.dagpenger.inntekt.v1.models
2+
3+
import com.fasterxml.jackson.module.kotlin.readValue
4+
import de.huxhorn.sulky.ulid.ULID
5+
import io.kotest.matchers.collections.shouldBeEmpty
6+
import io.kotest.matchers.collections.shouldHaveSize
7+
import io.kotest.matchers.nulls.shouldNotBeNull
8+
import io.kotest.matchers.shouldBe
9+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType.NATURLIG_IDENT
10+
import no.nav.dagpenger.inntekt.serder.jacksonObjectMapper
11+
import org.junit.jupiter.api.Test
12+
import java.time.YearMonth
13+
14+
class InntekterDtoTest {
15+
@Test
16+
fun `mapToStoredInntekt mapper til forventet resultat`() {
17+
val inntektId = ULID().nextULID()
18+
val inntekterDto =
19+
jacksonObjectMapper.readValue<InntekterDto>(
20+
this::class.java.getResource("/test-data/expected-uklassifisert-post-body.json")?.readText()!!,
21+
)
22+
23+
val storedInntekt =
24+
inntekterDto.mapToStoredInntekt(
25+
inntektId = inntektId,
26+
)
27+
28+
storedInntekt.manueltRedigert shouldBe true
29+
storedInntekt.timestamp.shouldNotBeNull()
30+
storedInntekt.inntektId.id shouldBe inntektId
31+
storedInntekt.inntekt.ident.aktoerType shouldBe NATURLIG_IDENT
32+
storedInntekt.inntekt.ident.identifikator shouldBe inntekterDto.mottaker.pnr
33+
storedInntekt.inntekt.arbeidsInntektMaaned?.shouldHaveSize(2)
34+
storedInntekt.inntekt.arbeidsInntektMaaned?.first().let {
35+
it?.aarMaaned shouldBe YearMonth.of(2023, 1)
36+
it?.avvikListe.shouldBeEmpty()
37+
it?.arbeidsInntektInformasjon?.inntektListe?.shouldHaveSize(2)
38+
}
39+
storedInntekt.inntekt.arbeidsInntektMaaned?.get(1).let {
40+
it?.aarMaaned shouldBe YearMonth.of(2024, 1)
41+
it?.avvikListe.shouldBeEmpty()
42+
}
43+
}
44+
}

dp-inntekt-api/src/test/resources/test-data/expected-uklassifisert-post-body.json

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"virksomhetsnavn": "Test Virksomhet",
66
"periode": {
77
"fra": "2023-01",
8-
"til": "2023-12"
8+
"til": "2024-12"
99
},
1010
"inntekter": [
1111
{
@@ -20,6 +20,7 @@
2020
"opptjeningsperiode": null,
2121
"skattemessigBosattLand": "NO",
2222
"utbetaltIMaaned": "2023-01",
23+
"opplysningspliktig": null,
2324
"inntektsinnsender": null,
2425
"virksomhet": null,
2526
"inntektsmottaker": null,
@@ -31,9 +32,34 @@
3132
"redigert": true,
3233
"begrunnelse": "Standard",
3334
"aarMaaned": "2023-01"
35+
},
36+
{
37+
"belop": 10000.00,
38+
"fordel": "kontantytelse",
39+
"beskrivelse": "bil",
40+
"inntektskilde": "A-ordningen",
41+
"inntektsstatus": "LoependeInnrapportert",
42+
"inntektsperiodetype": "Maaned",
43+
"leveringstidspunkt": "2024-01",
44+
"opptjeningsland": "SE",
45+
"opptjeningsperiode": null,
46+
"skattemessigBosattLand": "NO",
47+
"utbetaltIMaaned": "2024-01",
48+
"opplysningspliktig": null,
49+
"inntektsinnsender": null,
50+
"virksomhet": null,
51+
"inntektsmottaker": null,
52+
"inngaarIGrunnlagForTrekk": true,
53+
"utloeserArbeidsgiveravgift": true,
54+
"informasjonsstatus": "InngaarAlltid",
55+
"inntektType": "NAERINGSINNTEKT",
56+
"tilleggsinformasjon": null,
57+
"redigert": true,
58+
"begrunnelse": "Ikke Standard",
59+
"aarMaaned": "2024-01"
3460
}
3561
],
36-
"totalBeløp": 50000.00,
62+
"totalBeløp": 60000.00,
3763
"avvikListe": []
3864
}
3965
],

0 commit comments

Comments
 (0)