Skip to content

Commit

Permalink
VirkningstidspunktGrunnlag legg til avslag og visningsnavn kodeverk (#…
Browse files Browse the repository at this point in the history
…102)

* VirkningstidspunktGrunnlag legg til avslag

* Endring av visningsnavn inntekt
  • Loading branch information
ugur93 authored Apr 11, 2024
1 parent 63e5624 commit 6f68af3
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import io.mockk.mockkObject
import io.mockk.mockkStatic
import no.nav.bidrag.commons.service.KodeverkProvider
import no.nav.bidrag.commons.service.finnVisningsnavn
import no.nav.bidrag.commons.service.finnVisningsnavnForKode
import no.nav.bidrag.commons.service.finnVisningsnavnLønnsbeskrivelse
import no.nav.bidrag.commons.service.finnVisningsnavnSkattegrunnlag
import no.nav.bidrag.commons.service.sjablon.SjablonProvider
Expand All @@ -19,6 +20,8 @@ fun stubKodeverkProvider() {
mockkStatic(::finnVisningsnavnSkattegrunnlag)
mockkStatic(::finnVisningsnavnLønnsbeskrivelse)
mockkStatic(::finnVisningsnavn)
mockkStatic(::finnVisningsnavnForKode)
every { finnVisningsnavnForKode(any(), any()) } returns "Visningsnavn"
every { finnVisningsnavn(any()) } returns "Visningsnavn"
every {
finnVisningsnavnLønnsbeskrivelse(any())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,24 @@

package no.nav.bidrag.commons.service

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.fasterxml.jackson.module.kotlin.readValue
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import com.github.benmanes.caffeine.cache.Cache
import com.github.benmanes.caffeine.cache.Caffeine
import no.nav.bidrag.commons.CorrelationId
import no.nav.bidrag.commons.cache.InvaliderCacheFørStartenAvArbeidsdag
import no.nav.bidrag.domene.util.Visningsnavn
import org.slf4j.LoggerFactory
import org.springframework.boot.web.client.RestTemplateBuilder
import org.springframework.web.client.RestTemplate
import org.springframework.web.client.getForEntity
import java.time.LocalDate
import java.util.concurrent.atomic.AtomicReference

internal val objectmapper = ObjectMapper(YAMLFactory()).findAndRegisterModules().registerKotlinModule()
private val visningsnavnCache: Map<String, Map<String, String>> = emptyMap()
private val kodeverkUrl = AtomicReference("")
const val POSTNUMMER = "Postnummer"
const val LANDKODER = "Landkoder"
Expand All @@ -30,29 +37,30 @@ private val kodeverkCache: Cache<String, KodeverkKoderBetydningerResponse> =
private val log = LoggerFactory.getLogger(KodeverkProvider::class.java)

fun finnVisningsnavnSkattegrunnlag(fulltNavnInntektspost: String): String =
finnVisningsnavn(fulltNavnInntektspost, SUMMERT_SKATTEGRUNNLAG) ?: ""
finnVisningsnavnForKode(fulltNavnInntektspost, SUMMERT_SKATTEGRUNNLAG) ?: ""

fun finnPoststedForPostnummer(postnummer: String): String? = finnVisningsnavn(postnummer, POSTNUMMER)
fun finnPoststedForPostnummer(postnummer: String): String? = finnVisningsnavnForKode(postnummer, POSTNUMMER)

fun finnLandkodeForLandkoder(landkode: String): String? = finnVisningsnavn(landkode, LANDKODER)
fun finnLandkodeForLandkoder(landkode: String): String? = finnVisningsnavnForKode(landkode, LANDKODER)

fun finnLandkodeForLandkoderIso2(landkode: String): String? = finnVisningsnavn(landkode, LANDKODER_ISO2)
fun finnLandkodeForLandkoderIso2(landkode: String): String? = finnVisningsnavnForKode(landkode, LANDKODER_ISO2)

fun finnVisningsnavnLønnsbeskrivelse(fulltNavnInntektspost: String): String =
finnVisningsnavn(fulltNavnInntektspost, LOENNSBESKRIVELSE) ?: ""
finnVisningsnavnForKode(fulltNavnInntektspost, LOENNSBESKRIVELSE) ?: ""

fun finnVisningsnavnKodeverk(
fulltNavnInntektspost: String,
kodeverk: String,
): String = finnVisningsnavn(fulltNavnInntektspost, kodeverk) ?: ""
): String = finnVisningsnavnForKode(fulltNavnInntektspost, kodeverk) ?: ""

fun finnVisningsnavn(fulltNavnInntektspost: String): String {
return finnVisningsnavn(fulltNavnInntektspost, SUMMERT_SKATTEGRUNNLAG)
?: finnVisningsnavn(fulltNavnInntektspost, LOENNSBESKRIVELSE)
?: finnVisningsnavn(fulltNavnInntektspost, YTELSEFRAOFFENTLIGE)
?: finnVisningsnavn(fulltNavnInntektspost, PENSJONELLERTRYGDEBESKRIVELSE)
?: finnVisningsnavn(fulltNavnInntektspost, NAERINGSINNTEKTSBESKRIVELSE)
?: finnVisningsnavn(fulltNavnInntektspost, SPESIFISERT_SUMMERT_SKATTEGRUNNLAG)
return finnVisningsnavnFraFil(fulltNavnInntektspost)
?: finnVisningsnavnForKode(fulltNavnInntektspost, SUMMERT_SKATTEGRUNNLAG)
?: finnVisningsnavnForKode(fulltNavnInntektspost, LOENNSBESKRIVELSE)
?: finnVisningsnavnForKode(fulltNavnInntektspost, YTELSEFRAOFFENTLIGE)
?: finnVisningsnavnForKode(fulltNavnInntektspost, PENSJONELLERTRYGDEBESKRIVELSE)
?: finnVisningsnavnForKode(fulltNavnInntektspost, NAERINGSINNTEKTSBESKRIVELSE)
?: finnVisningsnavnForKode(fulltNavnInntektspost, SPESIFISERT_SUMMERT_SKATTEGRUNNLAG)
?: ""
}

Expand Down Expand Up @@ -82,7 +90,7 @@ class KodeverkProvider {
}
}

private fun finnVisningsnavn(
fun finnVisningsnavnForKode(
kode: String,
kodeverk: String,
): String? {
Expand All @@ -93,6 +101,11 @@ private fun finnVisningsnavn(
return if (betydning?.tekst.isNullOrEmpty()) betydning?.term else betydning?.tekst
}

private fun finnVisningsnavnFraFil(kode: String): String? {
val visningsnavnMap = lastVisningsnavnFraFil("inntektsposter.yaml")
return visningsnavnMap[kode]
}

private fun hentKodeverk(kodeverk: String): KodeverkKoderBetydningerResponse {
val kodeverkContext = "${kodeverkUrl.get()}/api/v1/kodeverk/$kodeverk/koder/betydninger?ekskluderUgyldige=false&spraak=nb"
val restTemplate: RestTemplate =
Expand All @@ -118,3 +131,16 @@ data class KodeverkBeskrivelse(
val tekst: String,
val term: String,
)

private fun lastVisningsnavnFraFil(filnavn: String): Map<String, String> {
val fil = hentFil("/kodeverk/visningsnavn/$filnavn")
return visningsnavnCache.getOrDefault(
filnavn,
objectmapper.readValue(fil),
)
}

private fun hentFil(filsti: String) =
Visningsnavn::class.java.getResource(
filsti,
) ?: throw RuntimeException("Fant ingen fil på sti $filsti")
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
overgangsstoenadTilEnsligMorEllerFarSomBegynteAaLoepe1April2014EllerSenere: "Overgangsstønad"
overgangsstoenadTilEnsligMorEllerFarSomBegynteAaLoepe31Mars2014EllerTidligere: "Overgangsstønad"
overgangsstoenadTilGjenlevendeEktefelle: "Overgangsstønad"
overgangsstoenadTilEnsligForelder: "Overgangsstønad"
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package no.nav.bidrag.commons.service

import io.kotest.matchers.shouldBe
import io.mockk.every
import io.mockk.mockkObject
import io.mockk.mockkStatic
import org.junit.jupiter.api.Test

fun stubKodeverkProvider() {
mockkObject(KodeverkProvider)
mockkStatic(::finnVisningsnavnSkattegrunnlag)
mockkStatic(::finnVisningsnavnLønnsbeskrivelse)
mockkStatic(::finnVisningsnavnForKode)
every { finnVisningsnavnForKode(any(), any()) } returns "Visningsnavn"
every {
finnVisningsnavnLønnsbeskrivelse(any())
} returns "Visningsnavn lønnsbeskrivelse"
every { finnVisningsnavnSkattegrunnlag(any()) } returns "Visningsnavn skattegrunnlag"
}

class KodeverkProviderKtTest {
@Test
fun `skal hente visningsnavn`() {
stubKodeverkProvider()
finnVisningsnavn("overgangsstoenadTilEnsligForelder") shouldBe "Overgangsstønad"
finnVisningsnavn("overgangsstoenadTilEnsligMorEllerFarSomBegynteAaLoepe31Mars2014EllerTidligere") shouldBe "Overgangsstønad"
finnVisningsnavn("overgangsstoenadTilEnsligMorEllerFarSomBegynteAaLoepe1April2014EllerSenere") shouldBe "Overgangsstønad"
finnVisningsnavn("overgangsstoenadTilGjenlevendeEktefelle") shouldBe "Overgangsstønad"
finnVisningsnavn("annet") shouldBe "Visningsnavn"
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.bidrag.transport.behandling.felles.grunnlag

import no.nav.bidrag.domene.enums.beregning.Resultatkode
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.enums.vedtak.VirkningstidspunktÅrsakstype
import java.time.LocalDate
Expand All @@ -12,5 +13,6 @@ data class SøknadGrunnlag(

data class VirkningstidspunktGrunnlag(
val virkningstidspunkt: LocalDate,
val årsak: VirkningstidspunktÅrsakstype,
val årsak: VirkningstidspunktÅrsakstype? = null,
val avslag: Resultatkode? = null,
) : GrunnlagInnhold

0 comments on commit 6f68af3

Please sign in to comment.