Skip to content

Commit 11c4dc9

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

File tree

6 files changed

+161
-127
lines changed

6 files changed

+161
-127
lines changed

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

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@ import de.huxhorn.sulky.ulid.ULID
44
import no.nav.dagpenger.inntekt.db.DetachedInntekt
55
import no.nav.dagpenger.inntekt.db.InntektId
66
import no.nav.dagpenger.inntekt.db.StoredInntekt
7-
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
8-
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
97
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektInformasjon
108
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektMaaned
119
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Inntekt
1210
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
1311
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjon
1412
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjonsDetaljer
15-
import java.time.LocalDateTime.now
1613

1714
fun mapToStoredInntekt(guiInntekt: GUIInntekt): StoredInntekt =
1815
StoredInntekt(
@@ -25,17 +22,6 @@ fun mapToStoredInntekt(guiInntekt: GUIInntekt): StoredInntekt =
2522
guiInntekt.manueltRedigert,
2623
)
2724

28-
fun mapToStoredInntekt(
29-
inntekterDto: InntekterDto,
30-
inntektId: String,
31-
): StoredInntekt =
32-
StoredInntekt(
33-
inntektId = InntektId(id = inntektId),
34-
inntekt = mapToInntektkomponentResponse(inntekterDto),
35-
manueltRedigert = true,
36-
timestamp = now(),
37-
)
38-
3925
fun mapToDetachedInntekt(guiInntekt: GUIInntekt): DetachedInntekt =
4026
DetachedInntekt(
4127
InntektkomponentResponse(
@@ -46,59 +32,6 @@ fun mapToDetachedInntekt(guiInntekt: GUIInntekt): DetachedInntekt =
4632
guiInntekt.manueltRedigert,
4733
)
4834

49-
private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): InntektkomponentResponse {
50-
val arbeidsInntektMaaneder: MutableList<ArbeidsInntektMaaned> = mutableListOf()
51-
52-
inntekterDto.virksomheter.forEach { virksomhet ->
53-
arbeidsInntektMaaneder.addAll(
54-
virksomhet.inntekter?.map {
55-
ArbeidsInntektMaaned(
56-
it.aarMaaned,
57-
virksomhet.avvikListe,
58-
ArbeidsInntektInformasjon(
59-
virksomhet.inntekter.map { inntektMaaned ->
60-
Inntekt(
61-
inntektMaaned.belop,
62-
inntektMaaned.inntektskilde,
63-
inntektMaaned.beskrivelse,
64-
inntektMaaned.inntektskilde,
65-
inntektMaaned.inntektsstatus,
66-
inntektMaaned.inntektsperiodetype ?: "Maaned",
67-
inntektMaaned.leveringstidspunkt,
68-
inntektMaaned.opptjeningsland,
69-
inntektMaaned.opptjeningsperiode,
70-
inntektMaaned.skattemessigBosattLand,
71-
inntektMaaned.utbetaltIMaaned,
72-
// TODO: Er det mottaker som skal brukes her?
73-
mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
74-
// TODO: Er det virksomhet som skal brukes her?
75-
mapToAktoerOrganisasjon(virksomhet),
76-
mapToAktoerOrganisasjon(virksomhet),
77-
mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
78-
inntektMaaned.inngaarIGrunnlagForTrekk,
79-
inntektMaaned.utloeserArbeidsgiveravgift,
80-
inntektMaaned.informasjonsstatus,
81-
inntektMaaned.inntektType,
82-
inntektMaaned.tilleggsinformasjon,
83-
)
84-
},
85-
),
86-
)
87-
} ?: listOf(),
88-
)
89-
}
90-
91-
return InntektkomponentResponse(
92-
arbeidsInntektMaaneder,
93-
mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
94-
)
95-
}
96-
97-
private fun mapToAktoerOrganisasjon(virksomhet: Virksomhet): Aktoer = Aktoer(AktoerType.ORGANISASJON, virksomhet.virksomhetsnummer)
98-
99-
private fun mapToAktoerNaturligIdent(fnr: String?): Aktoer =
100-
Aktoer(AktoerType.NATURLIG_IDENT, fnr ?: throw IllegalArgumentException("Fødselsenummer mangler"))
101-
10235
private fun mapToArbeidsInntektMaaneder(arbeidsMaaneder: List<GUIArbeidsInntektMaaned>?): List<ArbeidsInntektMaaned>? =
10336
arbeidsMaaneder?.map { guiArbeidsInntektMaaned ->
10437
ArbeidsInntektMaaned(

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType
77
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
88
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Periode
99
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjon
10+
import no.nav.dagpenger.inntekt.v1.models.InntekterDto
1011
import java.math.BigDecimal
1112
import java.time.YearMonth
1213

@@ -88,11 +89,6 @@ fun InntektkomponentResponse.mapToFrontend(
8889
)
8990
}
9091

91-
data class InntekterDto(
92-
val virksomheter: List<Virksomhet>,
93-
val mottaker: Inntektsmottaker,
94-
)
95-
9692
data class Virksomhet(
9793
val virksomhetsnummer: String,
9894
val virksomhetsnavn: String,

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

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import kotlinx.coroutines.Dispatchers
1818
import kotlinx.coroutines.withContext
1919
import mu.KotlinLogging
2020
import mu.withLoggingContext
21+
import no.nav.dagpenger.inntekt.db.InntektId
2122
import no.nav.dagpenger.inntekt.db.InntektNotFoundException
2223
import no.nav.dagpenger.inntekt.db.InntektStore
2324
import no.nav.dagpenger.inntekt.db.Inntektparametre
@@ -28,7 +29,6 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
2829
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
2930
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
3031
import no.nav.dagpenger.inntekt.mapping.GUIInntekt
31-
import no.nav.dagpenger.inntekt.mapping.InntekterDto
3232
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
3333
import no.nav.dagpenger.inntekt.mapping.OrganisasjonNavnOgIdMapping
3434
import no.nav.dagpenger.inntekt.mapping.dataGrunnlagKlassifiseringToVerdikode
@@ -40,6 +40,8 @@ import no.nav.dagpenger.inntekt.oppslag.Person
4040
import no.nav.dagpenger.inntekt.oppslag.PersonOppslag
4141
import no.nav.dagpenger.inntekt.oppslag.enhetsregister.EnhetsregisterClient
4242
import no.nav.dagpenger.inntekt.opptjeningsperiode.Opptjeningsperiode
43+
import no.nav.dagpenger.inntekt.v1.models.InntekterDto
44+
import no.nav.dagpenger.inntekt.v1.models.mapToStoredInntekt
4345
import java.time.LocalDate
4446

4547
private val logger = KotlinLogging.logger {}
@@ -140,11 +142,7 @@ fun Route.uklassifisertInntekt(
140142
route("/uklassifisert/{inntektId}") {
141143
get {
142144
withContext(Dispatchers.IO) {
143-
val inntektId =
144-
call.parameters["inntektId"]?.let {
145-
no.nav.dagpenger.inntekt.db
146-
.InntektId(it)
147-
} ?: throw IllegalArgumentException("Missing inntektId")
145+
val inntektId = InntektId(call.parameters["inntektId"]!!)
148146
inntektStore
149147
.getInntektMedPersonFnr(inntektId)
150148
.let {
@@ -171,33 +169,38 @@ fun Route.uklassifisertInntekt(
171169
post {
172170
withContext(Dispatchers.IO) {
173171
val inntektId = call.parameters["inntektId"]!!
174-
mapToStoredInntekt(
175-
inntekterDto = call.receive<InntekterDto>(),
176-
inntektId = inntektId,
177-
).let {
178-
val inntektPersonMapping = inntektStore.getInntektPersonMapping(inntektId)
179-
inntektStore.storeInntekt(
180-
StoreInntektCommand(
181-
inntektparametre =
182-
Inntektparametre(
183-
aktørId = inntektPersonMapping.aktørId,
184-
fødselsnummer = it.inntekt.ident.identifikator,
185-
regelkontekst = RegelKontekst(inntektPersonMapping.kontekstId, inntektPersonMapping.kontekstType),
186-
beregningsdato = inntektPersonMapping.beregningsdato,
187-
),
188-
inntekt = it.inntekt,
189-
manueltRedigert =
190-
ManueltRedigert.from(
191-
true,
192-
call.getSubject(),
193-
),
194-
),
195-
)
196-
}.let {
197-
call.respond(HttpStatusCode.OK, it.inntektId.id)
198-
}.also {
199-
inntektKorrigeringCounter.inc()
200-
}
172+
call
173+
.receive<InntekterDto>()
174+
.mapToStoredInntekt(
175+
inntektId = inntektId,
176+
).let {
177+
val inntektPersonMapping = inntektStore.getInntektPersonMapping(inntektId)
178+
inntektStore.storeInntekt(
179+
StoreInntektCommand(
180+
inntektparametre =
181+
Inntektparametre(
182+
aktørId = inntektPersonMapping.aktørId,
183+
fødselsnummer = it.inntekt.ident.identifikator,
184+
regelkontekst =
185+
RegelKontekst(
186+
inntektPersonMapping.kontekstId,
187+
inntektPersonMapping.kontekstType,
188+
),
189+
beregningsdato = inntektPersonMapping.beregningsdato,
190+
),
191+
inntekt = it.inntekt,
192+
manueltRedigert =
193+
ManueltRedigert.from(
194+
true,
195+
call.getSubject(),
196+
),
197+
),
198+
)
199+
}.let {
200+
call.respond(HttpStatusCode.OK, it.inntektId.id)
201+
}.also {
202+
inntektKorrigeringCounter.inc()
203+
}
201204
}
202205
}
203206
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package no.nav.dagpenger.inntekt.v1.models
2+
3+
import no.nav.dagpenger.inntekt.db.InntektId
4+
import no.nav.dagpenger.inntekt.db.StoredInntekt
5+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
6+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
7+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektInformasjon
8+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektMaaned
9+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Inntekt
10+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
11+
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
12+
import no.nav.dagpenger.inntekt.mapping.Virksomhet
13+
import java.time.LocalDateTime.now
14+
15+
data class InntekterDto(
16+
val virksomheter: List<Virksomhet>,
17+
val mottaker: Inntektsmottaker,
18+
)
19+
20+
fun InntekterDto.mapToStoredInntekt(inntektId: String): StoredInntekt =
21+
StoredInntekt(
22+
inntektId = InntektId(id = inntektId),
23+
inntekt = mapToInntektkomponentResponse(this),
24+
manueltRedigert = true,
25+
timestamp = now(),
26+
)
27+
28+
private fun mapToInntektkomponentResponse(inntekterDto: InntekterDto): InntektkomponentResponse {
29+
val arbeidsInntektMaaneder: MutableList<ArbeidsInntektMaaned> = mutableListOf()
30+
31+
inntekterDto.virksomheter.forEach { virksomhet ->
32+
arbeidsInntektMaaneder.addAll(
33+
virksomhet.inntekter?.map {
34+
ArbeidsInntektMaaned(
35+
it.aarMaaned,
36+
virksomhet.avvikListe,
37+
ArbeidsInntektInformasjon(
38+
virksomhet.inntekter.map { inntektMaaned ->
39+
Inntekt(
40+
inntektMaaned.belop,
41+
inntektMaaned.inntektskilde,
42+
inntektMaaned.beskrivelse,
43+
inntektMaaned.inntektskilde,
44+
inntektMaaned.inntektsstatus,
45+
inntektMaaned.inntektsperiodetype ?: "Maaned",
46+
inntektMaaned.leveringstidspunkt,
47+
inntektMaaned.opptjeningsland,
48+
inntektMaaned.opptjeningsperiode,
49+
inntektMaaned.skattemessigBosattLand,
50+
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),
57+
inntektMaaned.inngaarIGrunnlagForTrekk,
58+
inntektMaaned.utloeserArbeidsgiveravgift,
59+
inntektMaaned.informasjonsstatus,
60+
inntektMaaned.inntektType,
61+
inntektMaaned.tilleggsinformasjon,
62+
)
63+
},
64+
),
65+
)
66+
} ?: listOf(),
67+
)
68+
}
69+
70+
return InntektkomponentResponse(
71+
arbeidsInntektMaaneder,
72+
mapToAktoerNaturligIdent(inntekterDto.mottaker.pnr),
73+
)
74+
}
75+
76+
private fun mapToAktoerOrganisasjon(virksomhet: Virksomhet): Aktoer = Aktoer(AktoerType.ORGANISASJON, virksomhet.virksomhetsnummer)
77+
78+
private fun mapToAktoerNaturligIdent(fnr: String?): Aktoer =
79+
Aktoer(AktoerType.NATURLIG_IDENT, fnr ?: throw IllegalArgumentException("Fødselsenummer mangler"))
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package no.nav.dagpenger.inntekt.mapping
2+
3+
class MapFromGUIInntektTest

0 commit comments

Comments
 (0)