Skip to content

Commit cac0727

Browse files
committed
Map beregningsdato og periode til og fra frontend
1 parent eac170c commit cac0727

File tree

7 files changed

+63
-9
lines changed

7 files changed

+63
-9
lines changed

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,13 @@ fun Route.uklassifisertInntekt(
147147
val inntektId = InntektId(call.parameters["inntektId"]!!)
148148
inntektStore
149149
.getStoredInntektMedMetadata(inntektId)
150-
.let {
151-
val person = personOppslag.hentPerson(it.fødselsnummer)
152-
val inntektsmottaker = Inntektsmottaker(it.fødselsnummer, person.sammensattNavn())
150+
.let { storedInntektMedMetadata ->
151+
val person = personOppslag.hentPerson(storedInntektMedMetadata.fødselsnummer)
152+
val inntektsmottaker = Inntektsmottaker(storedInntektMedMetadata.fødselsnummer, person.sammensattNavn())
153153
val organisasjoner =
154154
hentOrganisasjoner(
155155
enhetsregisterClient,
156-
it.inntekt.arbeidsInntektMaaned
156+
storedInntektMedMetadata.inntekt.arbeidsInntektMaaned
157157
?.flatMap { it.arbeidsInntektInformasjon?.inntektListe.orEmpty() }
158158
?.filter { inntekt ->
159159
inntekt.virksomhet?.aktoerType == AktoerType.ORGANISASJON &&
@@ -162,7 +162,12 @@ fun Route.uklassifisertInntekt(
162162
?.toTypedArray()
163163
?.toList() ?: emptyList(),
164164
)
165-
it.inntekt.mapToFrontend(inntektsmottaker, organisasjoner)
165+
storedInntektMedMetadata.inntekt.mapToFrontend(
166+
person = inntektsmottaker,
167+
organisasjoner = organisasjoner,
168+
beregningsdato = storedInntektMedMetadata.beregningsdato,
169+
storedInntektPeriode = storedInntektMedMetadata.storedInntektPeriode,
170+
)
166171
}.let {
167172
call.respond(HttpStatusCode.OK, it)
168173
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ import java.time.YearMonth
1717
data class InntekterDto(
1818
val virksomheter: List<Virksomhet>,
1919
val mottaker: Inntektsmottaker,
20+
val periode: PeriodeDto,
21+
)
22+
23+
data class PeriodeDto(
24+
val fraOgMed: YearMonth,
25+
val tilOgMed: YearMonth,
2026
)
2127

2228
fun InntekterDto.mapToStoredInntekt(inntektId: String): StoredInntekt =

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/db/InntektStore.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import no.nav.dagpenger.inntekt.opptjeningsperiode.Opptjeningsperiode
66
import no.nav.dagpenger.inntekt.v1.SpesifisertInntekt
77
import java.time.LocalDate
88
import java.time.LocalDateTime
9+
import java.time.YearMonth
910
import java.time.ZoneOffset
1011
import java.time.ZonedDateTime
1112

@@ -108,6 +109,13 @@ data class StoredInntektMedMetadata(
108109
val manueltRedigert: Boolean,
109110
val timestamp: LocalDateTime? = null,
110111
valdselsnummer: String,
112+
val beregningsdato: LocalDate,
113+
val storedInntektPeriode: StoredInntektPeriode?,
114+
)
115+
116+
data class StoredInntektPeriode(
117+
val fraOgMed: YearMonth?,
118+
val tilOgMed: YearMonth?,
111119
)
112120

113121
class InntektNotFoundException(

dp-inntekt-api/src/main/kotlin/no/nav/dagpenger/inntekt/db/PostgresInntektStore.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import org.intellij.lang.annotations.Language
1818
import org.postgresql.util.PGobject
1919
import org.postgresql.util.PSQLException
2020
import java.time.LocalDate
21+
import java.time.YearMonth
2122
import java.time.ZonedDateTime
2223
import javax.sql.DataSource
2324

@@ -208,6 +209,12 @@ internal class PostgresInntektStore(
208209
manueltRedigert = it.boolean("manuelt_redigert"),
209210
timestamp = it.zonedDateTime("timestamp").toLocalDateTime(),
210211
fødselsnummer = it.string("fnr"),
212+
beregningsdato = it.localDate("beregningsdato"),
213+
storedInntektPeriode =
214+
StoredInntektPeriode(
215+
fraOgMed = it.localDateOrNull("periodeFraOgMed")?.let { localDate -> YearMonth.from(localDate) },
216+
tilOgMed = it.localDateOrNull("periodeTilOgMed")?.let { localDate -> YearMonth.from(localDate) },
217+
),
211218
)
212219
}.asSingle,
213220
) ?: throw InntektNotFoundException("Inntekt with id $inntektId not found.")

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
package no.nav.dagpenger.inntekt.mapping
22

33
import no.nav.dagpenger.inntekt.api.v1.models.InntekterDto
4+
import no.nav.dagpenger.inntekt.api.v1.models.PeriodeDto
5+
import no.nav.dagpenger.inntekt.db.StoredInntektPeriode
46
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
57
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Avvik
68
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektBeskrivelse
79
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType
810
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
911
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Periode
1012
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjon
13+
import no.nav.dagpenger.inntekt.opptjeningsperiode.Opptjeningsperiode
1114
import java.math.BigDecimal
15+
import java.time.LocalDate
1216
import java.time.YearMonth
1317

1418
fun InntektkomponentResponse.mapToFrontend(
1519
person: Inntektsmottaker,
1620
organisasjoner: List<Organisasjon>,
21+
beregningsdato: LocalDate,
22+
storedInntektPeriode: StoredInntektPeriode?,
1723
): InntekterDto {
1824
val inntekt = arbeidsInntektMaaned
1925
val virksomheter: MutableList<Virksomhet> = mutableListOf()
@@ -99,6 +105,18 @@ fun InntektkomponentResponse.mapToFrontend(
99105
return InntekterDto(
100106
virksomheter = virksomheter,
101107
mottaker = person,
108+
periode = getPeriode(storedInntektPeriode, beregningsdato),
109+
)
110+
}
111+
112+
private fun getPeriode(
113+
storedInntektPeriode: StoredInntektPeriode?,
114+
beregningsdato: LocalDate,
115+
): PeriodeDto {
116+
val opptjeningsperiode = Opptjeningsperiode(beregningsdato)
117+
return PeriodeDto(
118+
storedInntektPeriode?.fraOgMed ?: opptjeningsperiode.førsteMåned,
119+
storedInntektPeriode?.tilOgMed ?: opptjeningsperiode.sisteAvsluttendeKalenderMåned,
102120
)
103121
}
104122

dp-inntekt-api/src/test/kotlin/no/nav/dagpenger/inntekt/api/v1/UklassifisertInntektRouteTest.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import no.nav.dagpenger.inntekt.serder.jacksonObjectMapper
5252
import org.junit.jupiter.api.Test
5353
import java.math.BigDecimal
5454
import java.time.LocalDate
55+
import java.time.LocalDate.now
5556
import java.time.LocalDateTime
5657
import java.time.YearMonth
5758
import kotlin.test.assertEquals
@@ -499,11 +500,12 @@ internal class UklassifisertInntektRouteTest {
499500
} returns
500501
StoredInntektMedMetadata(
501502
inntektId,
502-
inntekt =
503-
jacksonObjectMapper.readValue(body!!),
503+
inntekt = jacksonObjectMapper.readValue(body!!),
504504
manueltRedigert = false,
505505
timestamp = LocalDateTime.now(),
506506
fødselsnummer = fødselsnummer,
507+
beregningsdato = now(),
508+
storedInntektPeriode = null,
507509
)
508510

509511
val response =
@@ -544,7 +546,7 @@ internal class UklassifisertInntektRouteTest {
544546
aktørId = "123456789",
545547
fnr = null,
546548
kontekstId = "kontekstId",
547-
beregningsdato = LocalDate.now(),
549+
beregningsdato = now(),
548550
timestamp = LocalDateTime.now(),
549551
kontekstType = "kontekstType",
550552
)

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import no.nav.dagpenger.inntekt.inntektskomponenten.v1.TilleggInformasjon
1212
import no.nav.dagpenger.inntekt.serder.jacksonObjectMapper
1313
import org.junit.jupiter.api.Test
1414
import java.math.BigDecimal
15+
import java.time.LocalDate.now
1516
import java.time.YearMonth
1617
import kotlin.test.assertEquals
1718
import kotlin.test.assertFalse
@@ -189,6 +190,8 @@ class MapToInntektFrontendTest {
189190
inntektkomponentResponse.mapToFrontend(
190191
mottaker,
191192
organisasjoner,
193+
beregningsdato = now(),
194+
storedInntektPeriode = null,
192195
)
193196

194197
assertEquals(2, mappedToInntektFrontend.virksomheter.size)
@@ -331,7 +334,12 @@ class MapToInntektFrontendTest {
331334
)
332335

333336
val mapTilFrontendMedNullVirksomhet =
334-
inntektkomponentResponseMedTomVirksomhet.mapToFrontend(mottaker, organisasjoner)
337+
inntektkomponentResponseMedTomVirksomhet.mapToFrontend(
338+
mottaker,
339+
organisasjoner,
340+
beregningsdato = now(),
341+
storedInntektPeriode = null,
342+
)
335343
assertEquals(3, mapTilFrontendMedNullVirksomhet.virksomheter.size)
336344
assertEquals(2, mapTilFrontendMedNullVirksomhet.virksomheter.filter { it.virksomhetsnummer == "" }.size)
337345
assertEquals(1, mapTilFrontendMedNullVirksomhet.virksomheter.filter { it.virksomhetsnummer == "896929120" }.size)

0 commit comments

Comments
 (0)