Skip to content

Commit

Permalink
Inntekt api for å hente faktor for kapitalinntekt (#292)
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 authored Aug 22, 2024
1 parent 174b2e1 commit e684831
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ object TestUtil {
no.nav.bidrag.beregn.særbidrag.core.bpsandelsærbidrag.dto.ResultatPeriodeCore(
periode = PeriodeCore(datoFom = LocalDate.parse("2020-08-01"), datoTil = LocalDate.parse("2020-09-01")),
resultat = no.nav.bidrag.beregn.særbidrag.core.bpsandelsærbidrag.dto.ResultatBeregningCore(
resultatAndelFaktor = BigDecimal.valueOf(10),
resultatAndelFaktor = BigDecimal.valueOf(0.10),
resultatAndelBeløp = BigDecimal.valueOf(100),
barnetErSelvforsørget = false,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ internal class BPsAndelSærbidragCoreTest {
ResultatPeriode(
periode = Periode(datoFom = LocalDate.parse("2020-01-01"), datoTil = LocalDate.parse("2020-02-01")),
resultat = ResultatBeregning(
resultatAndelFaktor = BigDecimal.valueOf(10),
resultatAndelFaktor = BigDecimal.valueOf(0.10),
resultatAndelBeløp = BigDecimal.valueOf(1000),
barnetErSelvforsørget = false,
sjablonListe = listOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ internal class BPsAndelSærbidragPeriodeTest {

private fun byggResultatBeregning(): ResultatBeregning {
return ResultatBeregning(
resultatAndelFaktor = BigDecimal.valueOf(60),
resultatAndelFaktor = BigDecimal.valueOf(0.60),
resultatAndelBeløp = BigDecimal.valueOf(6000),
barnetErSelvforsørget = false,
sjablonListe = emptyList(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ internal class SærbidragBeregningTest {
bidragsevne = Bidragsevne(referanse = TestUtil.BIDRAGSEVNE_REFERANSE, beløp = bidragsevneBeløp),
bPsAndelSærbidrag = BPsAndelSærbidrag(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
andelFaktor = BigDecimal.valueOf(60.6),
andelFaktor = BigDecimal.valueOf(0.606),
andelBeløp = bPsAndelBeløp,
barnetErSelvforsørget = false,
),
Expand All @@ -40,7 +40,7 @@ internal class SærbidragBeregningTest {
assertAll(
{ assertThat(beregnetBeløp).isEqualTo(bPsAndelBeløp) },
{ assertThat(resultatKode).isEqualTo(Resultatkode.SÆRBIDRAG_INNVILGET) },
{ assertThat(resultatBeløp).isEqualTo(maxOf(BigDecimal.ZERO, bPsAndelBeløp.subtract(beløpBetaltAvBP))) },
{ assertThat(resultatBeløp).isEqualTo(bPsAndelBeløp) },
)
}

Expand All @@ -56,7 +56,7 @@ internal class SærbidragBeregningTest {
bidragsevne = Bidragsevne(referanse = TestUtil.BIDRAGSEVNE_REFERANSE, beløp = bidragsevneBeløp),
bPsAndelSærbidrag = BPsAndelSærbidrag(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
andelFaktor = BigDecimal.valueOf(60.6),
andelFaktor = BigDecimal.valueOf(0.606),
andelBeløp = bPsAndelBeløp,
barnetErSelvforsørget = false,
),
Expand All @@ -83,7 +83,7 @@ internal class SærbidragBeregningTest {
bidragsevne = Bidragsevne(referanse = TestUtil.BIDRAGSEVNE_REFERANSE, beløp = bidragsevneBeløp),
bPsAndelSærbidrag = BPsAndelSærbidrag(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
andelFaktor = BigDecimal.valueOf(60.6),
andelFaktor = BigDecimal.valueOf(0.606),
andelBeløp = bPsAndelBeløp,
barnetErSelvforsørget = false,
),
Expand All @@ -110,7 +110,7 @@ internal class SærbidragBeregningTest {
bidragsevne = Bidragsevne(referanse = TestUtil.BIDRAGSEVNE_REFERANSE, beløp = bidragsevneBeløp),
bPsAndelSærbidrag = BPsAndelSærbidrag(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
andelFaktor = BigDecimal.valueOf(60.6),
andelFaktor = BigDecimal.valueOf(0.606),
andelBeløp = bPsAndelBeløp,
barnetErSelvforsørget = true,
),
Expand All @@ -137,7 +137,7 @@ internal class SærbidragBeregningTest {
bidragsevne = Bidragsevne(referanse = TestUtil.BIDRAGSEVNE_REFERANSE, beløp = bidragsevneBeløp),
bPsAndelSærbidrag = BPsAndelSærbidrag(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
andelFaktor = BigDecimal.valueOf(60.6),
andelFaktor = BigDecimal.valueOf(0.606),
andelBeløp = bPsAndelBeløp,
barnetErSelvforsørget = true,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ internal class SærbidragCoreTest {
BPsAndelSærbidragPeriodeCore(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
periode = PeriodeCore(datoFom = LocalDate.parse("2020-01-01"), datoTil = LocalDate.parse("2020-02-01")),
andelFaktor = BigDecimal.valueOf(100000),
andelFaktor = BigDecimal.valueOf(1.5),
andelBeløp = BigDecimal.valueOf(20000),
barnetErSelvforsørget = false,
),
Expand Down Expand Up @@ -125,7 +125,7 @@ internal class SærbidragCoreTest {
bidragsevne = Bidragsevne(referanse = TestUtil.BIDRAGSEVNE_REFERANSE, beløp = BigDecimal.valueOf(1000)),
bPsAndelSærbidrag = BPsAndelSærbidrag(
referanse = TestUtil.BPS_ANDEL_SÆRBIDRAG_REFERANSE,
andelFaktor = BigDecimal.valueOf(60),
andelFaktor = BigDecimal.valueOf(0.60),
andelBeløp = BigDecimal.valueOf(8000),
barnetErSelvforsørget = false,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ internal class SærbidragPeriodeTest {
datoTil = LocalDate.parse("2021-02-01"),
)
},
andelFaktor = BigDecimal.valueOf(60),
andelFaktor = BigDecimal.valueOf(0.60),
andelBeløp = BigDecimal.valueOf(6000),
barnetErSelvforsørget = false,
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
package no.nav.bidrag.inntekt.service

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.fasterxml.jackson.module.kotlin.readValue
import no.nav.bidrag.domene.enums.diverse.PlussMinus
import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import no.nav.bidrag.inntekt.util.hentMappingerKapitalinntekt
import no.nav.bidrag.inntekt.util.hentMappingerLigs
import no.nav.bidrag.transport.behandling.inntekt.request.SkattegrunnlagForLigningsår
import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost
import no.nav.bidrag.transport.behandling.inntekt.response.SummertÅrsinntekt
import org.springframework.core.io.ClassPathResource
import java.io.IOException
import java.math.BigDecimal
import java.math.RoundingMode
import java.time.Month
Expand All @@ -23,9 +20,8 @@ class SkattegrunnlagService {
inntektsrapportering: Inntektsrapportering,
): List<SummertÅrsinntekt> {
return if (skattegrunnlagListe.isNotEmpty()) {
val filnavn =
if (inntektsrapportering == Inntektsrapportering.KAPITALINNTEKT) "/files/mapping_kaps.yaml" else "files/mapping_ligs.yaml"
val mapping = hentMapping(filnavn)
val mapping =
if (inntektsrapportering == Inntektsrapportering.KAPITALINNTEKT) hentMappingerKapitalinntekt() else hentMappingerLigs()
beregnInntekt(
skattegrunnlagListe = skattegrunnlagListe,
mapping = mapping,
Expand Down Expand Up @@ -87,28 +83,6 @@ class SkattegrunnlagService {

return summertÅrsinntektListe
}

private fun hentMapping(path: String): List<MappingPoster> {
try {
val objectMapper = ObjectMapper(YAMLFactory())
objectMapper.findAndRegisterModules()
val pathKapsfil = ClassPathResource(path).inputStream
val mapping: Map<Post, List<PostKonfig>> = objectMapper.readValue(pathKapsfil)
return mapping.flatMap { (post, postKonfigs) ->
postKonfigs.map { postKonfig ->
MappingPoster(
fulltNavnInntektspost = post.fulltNavnInntektspost,
plussMinus = PlussMinus.valueOf(postKonfig.plussMinus),
sekkepost = postKonfig.sekkepost == "JA",
fom = Year.parse(postKonfig.fom),
tom = Year.parse(postKonfig.tom),
)
}
}
} catch (e: IOException) {
throw RuntimeException("Kunne ikke laste fil", e)
}
}
}

data class Post(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.fasterxml.jackson.module.kotlin.registerKotlinModule
import de.focus_shift.jollyday.core.HolidayCalendar
import de.focus_shift.jollyday.core.HolidayManager
import de.focus_shift.jollyday.core.ManagerParameters
import no.nav.bidrag.domene.enums.diverse.PlussMinus
import no.nav.bidrag.inntekt.service.Beskrivelser
import no.nav.bidrag.inntekt.service.YtelserService
import no.nav.bidrag.transport.behandling.inntekt.request.Ainntektspost
Expand Down Expand Up @@ -70,6 +71,14 @@ open class InntektUtil {
?: throw RuntimeException("Fant ingen fil på sti mapping_ytelser.yaml")
return objectmapper.readValue(fil)
}

// Brukes av bidrag-behandling for riktig visning fortegn på kapitalinntekter
@Suppress("unused")
fun kapitalinntektFaktor(postKode: String): Int {
return hentMappingerKapitalinntekt().find { it.fulltNavnInntektspost == postKode }?.let {
if (it.plussMinus == PlussMinus.MINUS) -1 else 1
} ?: 1
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package no.nav.bidrag.inntekt.util

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import com.fasterxml.jackson.module.kotlin.readValue
import no.nav.bidrag.domene.enums.diverse.PlussMinus
import no.nav.bidrag.inntekt.service.MappingPoster
import no.nav.bidrag.inntekt.service.Post
import no.nav.bidrag.inntekt.service.PostKonfig
import org.springframework.core.io.ClassPathResource
import java.io.IOException
import java.time.Year

fun hentMappingerKapitalinntekt(): List<MappingPoster> {
return hentMapping("/files/mapping_kaps.yaml")
}
fun hentMappingerLigs(): List<MappingPoster> {
return hentMapping("/files/mapping_ligs.yaml")
}
private fun hentMapping(path: String): List<MappingPoster> {
try {
val objectMapper = ObjectMapper(YAMLFactory())
objectMapper.findAndRegisterModules()
val pathKapsfil = ClassPathResource(path).inputStream
val mapping: Map<Post, List<PostKonfig>> = objectMapper.readValue(pathKapsfil)
return mapping.flatMap { (post, postKonfigs) ->
postKonfigs.map { postKonfig ->
MappingPoster(
fulltNavnInntektspost = post.fulltNavnInntektspost,
plussMinus = PlussMinus.valueOf(postKonfig.plussMinus),
sekkepost = postKonfig.sekkepost == "JA",
fom = Year.parse(postKonfig.fom),
tom = Year.parse(postKonfig.tom),
)
}
}
} catch (e: IOException) {
throw RuntimeException("Kunne ikke laste fil", e)
}
}

0 comments on commit e684831

Please sign in to comment.