Skip to content

Commit da07ee6

Browse files
Send tilbake inntekt uten å kombinere med allerede lagret inntekt og lagt til test
1 parent 0a8ddb1 commit da07ee6

File tree

3 files changed

+167
-61
lines changed

3 files changed

+167
-61
lines changed

.github/workflows/deploy.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
deploy-dev:
5050
name: Deploy to dev
5151
needs: [build]
52-
if: github.ref == 'refs/heads/uncached-inntekt-med-inntekt-id'
52+
if: github.ref == 'refs/heads/main'
5353
runs-on: ubuntu-latest
5454
permissions:
5555
contents: "read"

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

Lines changed: 13 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ import no.nav.dagpenger.inntekt.db.Inntektparametre
2929
import no.nav.dagpenger.inntekt.db.ManueltRedigert
3030
import no.nav.dagpenger.inntekt.db.RegelKontekst
3131
import no.nav.dagpenger.inntekt.db.StoreInntektCommand
32+
import no.nav.dagpenger.inntekt.db.StoredInntektMedMetadata
3233
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
3334
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
34-
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentResponse
3535
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektskomponentClient
3636
import no.nav.dagpenger.inntekt.mapping.GUIInntekt
3737
import no.nav.dagpenger.inntekt.mapping.Inntektsmottaker
@@ -322,20 +322,20 @@ fun Route.uklassifisertInntekt(
322322
?.toList() ?: emptyList(),
323323
)
324324

325-
val kombinerFraInntektskomponentenOgStoredInntekt =
326-
kombinerInntektFraInntektskomponentenOgStoredInntekt(
327-
it,
328-
storedInntektMedMetadata.inntekt,
329-
)
330-
val oppdatertInntekt =
331-
storedInntektMedMetadata.copy(
332-
inntekt = kombinerFraInntektskomponentenOgStoredInntekt,
333-
)
334-
335-
kombinerFraInntektskomponentenOgStoredInntekt.mapToFrontend(
325+
it.mapToFrontend(
336326
person = inntektsmottaker,
337327
organisasjoner = organisasjoner,
338-
storedInntektMedMetadata = oppdatertInntekt,
328+
storedInntektMedMetadata =
329+
StoredInntektMedMetadata(
330+
inntektId = inntektId,
331+
fødselsnummer = storedInntektMedMetadata.fødselsnummer,
332+
inntekt = it,
333+
manueltRedigert = false,
334+
timestamp = storedInntektMedMetadata.timestamp,
335+
beregningsdato = storedInntektMedMetadata.beregningsdato,
336+
storedInntektPeriode = storedInntektMedMetadata.storedInntektPeriode,
337+
begrunnelse = "",
338+
),
339339
)
340340
}.let {
341341
call.respond(HttpStatusCode.OK, it)
@@ -352,53 +352,6 @@ fun Route.uklassifisertInntekt(
352352
}
353353
}
354354

355-
fun kombinerInntektFraInntektskomponentenOgStoredInntekt(
356-
inntektKomponentFraAInntekt: InntektkomponentResponse,
357-
inntektKomponentFraDB: InntektkomponentResponse,
358-
): InntektkomponentResponse {
359-
logger.info { "Kombinerer data fra A-Inntekt og fra databasen" }
360-
var inntektMånederFraAInntekt = inntektKomponentFraAInntekt.arbeidsInntektMaaned ?: emptyList()
361-
362-
logger.info("Antall fra A-Inntekt: ${inntektMånederFraAInntekt.size}")
363-
logger.info("Antall fra Db: ${inntektKomponentFraDB.arbeidsInntektMaaned?.size ?: 0}")
364-
365-
inntektKomponentFraDB.arbeidsInntektMaaned?.map { storedInntektMåned ->
366-
val inntektKomponentMåned = inntektMånederFraAInntekt.find { it.aarMaaned == storedInntektMåned.aarMaaned }
367-
if (inntektKomponentMåned != null) {
368-
inntektKomponentMåned.arbeidsInntektInformasjon?.inntektListe.orEmpty().forEach { inntekt ->
369-
val matchIndex =
370-
storedInntektMåned.arbeidsInntektInformasjon
371-
?.inntektListe
372-
?.indexOfFirst {
373-
it.virksomhet?.identifikator == inntekt.virksomhet?.identifikator &&
374-
it.utbetaltIMaaned == inntekt.utbetaltIMaaned &&
375-
it.beskrivelse == inntekt.beskrivelse
376-
}
377-
if (matchIndex != null && matchIndex >= 0) {
378-
storedInntektMåned.arbeidsInntektInformasjon.inntektListe.let {
379-
it.toMutableList()[matchIndex] = inntekt
380-
}
381-
}
382-
}
383-
inntektMånederFraAInntekt =
384-
inntektMånederFraAInntekt.filter { it.aarMaaned != storedInntektMåned.aarMaaned }
385-
}
386-
}
387-
388-
inntektKomponentFraDB.copy(
389-
arbeidsInntektMaaned =
390-
(inntektKomponentFraDB.arbeidsInntektMaaned ?: emptyList()) +
391-
inntektMånederFraAInntekt.map {
392-
it.copy(
393-
arbeidsInntektInformasjon = it.arbeidsInntektInformasjon?.copy(inntektListe = emptyList()),
394-
)
395-
},
396-
)
397-
logger.info("Total antall inntektsmåneder etter kombinasjon: ${inntektKomponentFraDB.arbeidsInntektMaaned?.size ?: 0}")
398-
399-
return inntektKomponentFraDB
400-
}
401-
402355
private suspend fun hentOrganisasjoner(
403356
enhetsregisterClient: EnhetsregisterClient,
404357
organisasjonsNummerListe: List<String>?,

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

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ import no.nav.dagpenger.inntekt.db.StoredInntektMedMetadata
3737
import no.nav.dagpenger.inntekt.db.StoredInntektPeriode
3838
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Aktoer
3939
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.AktoerType
40+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektInformasjon
41+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.ArbeidsInntektMaaned
42+
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.Inntekt
4043
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektBeskrivelse
4144
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektType
4245
import no.nav.dagpenger.inntekt.inntektskomponenten.v1.InntektkomponentRequest
@@ -588,4 +591,154 @@ internal class UklassifisertInntektRouteTest {
588591
storeInntektCommandSlot.captured.manueltRedigert!!.redigertAv shouldBe TEST_OAUTH_USER
589592
storeInntektCommandSlot.captured.manueltRedigert!!.begrunnelse shouldBe "Dette er en begrunnelse."
590593
}
594+
595+
@Test
596+
fun `Get request for uncached uklassifisert inntekt skal returnere 200 OK og inntekt`() {
597+
val enhetsregisterClientMock = mockk<EnhetsregisterClient>(relaxed = true)
598+
val inntektKomponentClientMock = mockk<InntektskomponentClient>(relaxed = true)
599+
return withMockAuthServerAndTestApplication(
600+
mockInntektApi(
601+
inntektskomponentClient = inntektKomponentClientMock,
602+
inntektStore = inntektStoreMock,
603+
personOppslag = personOppslagMock,
604+
enhetsregisterClient = enhetsregisterClientMock,
605+
),
606+
) {
607+
val body =
608+
UklassifisertInntektRouteTest::class.java
609+
.getResource("/test-data/example-inntekt-med-inntektId-payload.json")
610+
?.readText()
611+
every {
612+
inntektStoreMock.getStoredInntektMedMetadata(inntektId)
613+
} returns
614+
StoredInntektMedMetadata(
615+
inntektId,
616+
inntekt = jacksonObjectMapper.readValue(body!!),
617+
manueltRedigert = false,
618+
timestamp = LocalDateTime.now(),
619+
fødselsnummer = fødselsnummer,
620+
beregningsdato = now(),
621+
storedInntektPeriode =
622+
StoredInntektPeriode(
623+
fraOgMed = YearMonth.of(2023, 1),
624+
tilOgMed = YearMonth.of(2025, 5),
625+
),
626+
)
627+
628+
val inntektKomponentResponseFraAInntekt =
629+
InntektkomponentResponse(
630+
arbeidsInntektMaaned =
631+
listOf(
632+
ArbeidsInntektMaaned(
633+
aarMaaned = YearMonth.parse("2019-01"),
634+
avvikListe = null,
635+
arbeidsInntektInformasjon =
636+
ArbeidsInntektInformasjon(
637+
inntektListe =
638+
listOf(
639+
Inntekt(
640+
inntektType = InntektType.NAERINGSINNTEKT,
641+
beloep = BigDecimal(250000),
642+
fordel = "kontantytelse",
643+
inntektskilde = "A-ordningen",
644+
inntektsperiodetype = "Maaned",
645+
inntektsstatus = "LoependeInnrapportert",
646+
leveringstidspunkt = YearMonth.parse("2019-02"),
647+
utbetaltIMaaned = YearMonth.parse("2018-03"),
648+
opplysningspliktig =
649+
Aktoer(
650+
aktoerType = AktoerType.ORGANISASJON,
651+
identifikator = "1111111",
652+
),
653+
virksomhet =
654+
Aktoer(
655+
aktoerType = AktoerType.ORGANISASJON,
656+
identifikator = "1111111",
657+
),
658+
inntektsmottaker =
659+
Aktoer(
660+
aktoerType = AktoerType.NATURLIG_IDENT,
661+
identifikator = "99999999999",
662+
),
663+
inngaarIGrunnlagForTrekk = true,
664+
utloeserArbeidsgiveravgift = true,
665+
informasjonsstatus = "InngaarAlltid",
666+
beskrivelse = InntektBeskrivelse.LOTT_KUN_TRYGDEAVGIFT,
667+
),
668+
),
669+
),
670+
),
671+
ArbeidsInntektMaaned(
672+
aarMaaned = YearMonth.parse("2018-03"),
673+
avvikListe = null,
674+
arbeidsInntektInformasjon =
675+
ArbeidsInntektInformasjon(
676+
inntektListe =
677+
listOf(
678+
Inntekt(
679+
inntektType = InntektType.NAERINGSINNTEKT,
680+
beloep = BigDecimal(250000),
681+
fordel = "kontantytelse",
682+
inntektskilde = "A-ordningen",
683+
inntektsperiodetype = "Maaned",
684+
inntektsstatus = "LoependeInnrapportert",
685+
leveringstidspunkt = YearMonth.parse("2019-02"),
686+
utbetaltIMaaned = YearMonth.parse("2018-03"),
687+
opplysningspliktig =
688+
Aktoer(
689+
aktoerType = AktoerType.ORGANISASJON,
690+
identifikator = "1111111",
691+
),
692+
virksomhet =
693+
Aktoer(
694+
aktoerType = AktoerType.ORGANISASJON,
695+
identifikator = "1111111",
696+
),
697+
inntektsmottaker =
698+
Aktoer(
699+
aktoerType = AktoerType.NATURLIG_IDENT,
700+
identifikator = "99999999999",
701+
),
702+
inngaarIGrunnlagForTrekk = true,
703+
utloeserArbeidsgiveravgift = true,
704+
informasjonsstatus = "InngaarAlltid",
705+
beskrivelse = InntektBeskrivelse.LOTT_KUN_TRYGDEAVGIFT,
706+
),
707+
),
708+
),
709+
),
710+
),
711+
ident =
712+
Aktoer(
713+
aktoerType = AktoerType.NATURLIG_IDENT,
714+
identifikator = "-1",
715+
),
716+
)
717+
coEvery {
718+
inntektKomponentClientMock.getInntekt(
719+
request = any(),
720+
callId = any(),
721+
)
722+
} returns inntektKomponentResponseFraAInntekt
723+
724+
val bodyFraEr =
725+
FullVirksomhetsInformasjon::class.java
726+
.getResource("/test-data/example-virksomhet-info.json")!!
727+
.readText()
728+
coEvery { enhetsregisterClientMock.hentEnhet("1111111") } returns bodyFraEr
729+
730+
val response =
731+
autentisert(
732+
httpMethod = HttpMethod.Get,
733+
endepunkt = "$uklassifisertInntekt/uncached/${inntektId.id}",
734+
)
735+
736+
assertEquals(OK, response.status)
737+
738+
val storedInntekt =
739+
jacksonObjectMapper.readValue<InntekterDto>(response.bodyAsText())
740+
storedInntekt.virksomheter shouldHaveSize 1
741+
storedInntekt.virksomheter[0].inntekter?.shouldHaveSize((2))
742+
}
743+
}
591744
}

0 commit comments

Comments
 (0)