@@ -3,14 +3,15 @@ package no.nav.dagpenger.inntekt.v1.models
3
3
import no.nav.dagpenger.inntekt.db.InntektId
4
4
import no.nav.dagpenger.inntekt.db.StoredInntekt
5
5
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
6
- import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
6
+ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType.NATURLIG_IDENT
7
7
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektInformasjon
8
8
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektMaaned
9
9
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Inntekt
10
10
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
11
11
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
12
12
import no.nav.dagpenger.inntekt.mapping.Virksomhet
13
13
import java.time.LocalDateTime.now
14
+ import java.time.YearMonth
14
15
15
16
data class InntekterDto (
16
17
val virksomheter : List <Virksomhet >,
@@ -26,69 +27,46 @@ fun InntekterDto.mapToStoredInntekt(inntektId: String): StoredInntekt =
26
27
)
27
28
28
29
private fun mapToInntektkomponentResponse (inntekterDto : InntekterDto ): InntektkomponentResponse {
29
- val arbeidsInntektMaaneder: MutableList <ArbeidsInntektMaaned > = mutableListOf ()
30
-
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
-
30
+ val inntektPerÅrOgMåned = mutableMapOf<YearMonth , MutableList <Inntekt >>()
50
31
inntekterDto.virksomheter.forEach { virksomhet ->
51
- arbeidsInntektMaaneder.addAll(
52
- virksomhet.inntekter?.map {
53
- ArbeidsInntektMaaned (
54
- it.aarMaaned,
55
- virksomhet.avvikListe,
56
- ArbeidsInntektInformasjon (
57
- virksomhet.inntekter.map { inntektMaaned ->
58
- Inntekt (
59
- inntektMaaned.belop,
60
- inntektMaaned.inntektskilde,
61
- inntektMaaned.beskrivelse,
62
- inntektMaaned.inntektskilde,
63
- inntektMaaned.inntektsstatus,
64
- inntektMaaned.inntektsperiodetype ? : " Maaned" ,
65
- inntektMaaned.leveringstidspunkt,
66
- inntektMaaned.opptjeningsland,
67
- inntektMaaned.opptjeningsperiode,
68
- inntektMaaned.skattemessigBosattLand,
69
- inntektMaaned.utbetaltIMaaned,
70
- inntektMaaned.opplysningspliktig,
71
- inntektMaaned.inntektsinnsender,
72
- inntektMaaned.virksomhet,
73
- inntektMaaned.inntektsmottaker,
74
- inntektMaaned.inngaarIGrunnlagForTrekk,
75
- inntektMaaned.utloeserArbeidsgiveravgift,
76
- inntektMaaned.informasjonsstatus,
77
- inntektMaaned.inntektType,
78
- inntektMaaned.tilleggsinformasjon,
79
- )
80
- },
81
- ),
82
- )
83
- } ? : listOf (),
84
- )
32
+ virksomhet.inntekter?.map { inntektMaaned ->
33
+ val inntekter = inntektPerÅrOgMåned[inntektMaaned.aarMaaned] ? : mutableListOf ()
34
+ inntekter.add(
35
+ Inntekt (
36
+ inntektMaaned.belop,
37
+ inntektMaaned.fordel,
38
+ inntektMaaned.beskrivelse,
39
+ inntektMaaned.inntektskilde,
40
+ inntektMaaned.inntektsstatus,
41
+ inntektMaaned.inntektsperiodetype ? : " Maaned" ,
42
+ inntektMaaned.leveringstidspunkt,
43
+ inntektMaaned.opptjeningsland,
44
+ inntektMaaned.opptjeningsperiode,
45
+ inntektMaaned.skattemessigBosattLand,
46
+ inntektMaaned.utbetaltIMaaned,
47
+ inntektMaaned.opplysningspliktig,
48
+ inntektMaaned.inntektsinnsender,
49
+ inntektMaaned.virksomhet,
50
+ inntektMaaned.inntektsmottaker,
51
+ inntektMaaned.inngaarIGrunnlagForTrekk,
52
+ inntektMaaned.utloeserArbeidsgiveravgift,
53
+ inntektMaaned.informasjonsstatus,
54
+ inntektMaaned.inntektType,
55
+ inntektMaaned.tilleggsinformasjon,
56
+ ),
57
+ )
58
+ inntektPerÅrOgMåned.put(inntektMaaned.aarMaaned, inntekter)
59
+ }
85
60
}
86
61
87
62
return InntektkomponentResponse (
88
- arbeidsInntektMaaneder,
89
- mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
63
+ inntektPerÅrOgMåned.map { (yearMonth, inntekter) ->
64
+ ArbeidsInntektMaaned (
65
+ yearMonth,
66
+ listOf (),
67
+ ArbeidsInntektInformasjon (inntekter),
68
+ )
69
+ },
70
+ Aktoer (NATURLIG_IDENT , inntekterDto.mottaker.pnr ? : throw IllegalArgumentException (" Fødselsenummer mangler" )),
90
71
)
91
72
}
92
-
93
- private fun mapToAktoerNaturligIdent (fnr : String? ): Aktoer =
94
- Aktoer (AktoerType .NATURLIG_IDENT , fnr ? : throw IllegalArgumentException (" Fødselsenummer mangler" ))
0 commit comments