Skip to content

Commit

Permalink
Merge branch 'refs/heads/main' into feature/tilleggstonad_grunnlag
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/fravedtak/VedtakTilBehandlingMapping.kt
#	src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/fravedtak/VedtakTilBehandlingMappingFelles.kt
  • Loading branch information
ugur93 committed Dec 9, 2024
2 parents 0921bf0 + 4f2e727 commit 86706f8
Show file tree
Hide file tree
Showing 12 changed files with 248 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
package no.nav.bidrag.behandling.dto.v1.beregning

import no.nav.bidrag.domene.ident.Personident
import java.math.BigDecimal
import java.time.LocalDate

data class ResultatRolle(
val ident: Personident?,
val navn: String,
valdselsdato: LocalDate,
val innbetaltBeløp: BigDecimal? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import no.nav.bidrag.domene.ident.Personident
import no.nav.bidrag.domene.tid.Datoperiode
import no.nav.bidrag.transport.behandling.beregning.felles.InntektPerBarn
import java.math.BigDecimal
import java.math.RoundingMode
import java.time.LocalDate

data class InntektDtoV2(
Expand Down Expand Up @@ -46,7 +47,16 @@ data class InntektDtoV2(
@Schema(required = true)
val inntektstyper: Set<Inntektstype> = emptySet(),
val historisk: Boolean? = false,
)
) {
@get:Schema(description = "Avrundet månedsbeløp for barnetillegg")
val månedsbeløp: BigDecimal?
get() =
if (Inntektsrapportering.BARNETILLEGG == rapporteringstype) {
beløp.divide(BigDecimal(12), 0, RoundingMode.HALF_UP)
} else {
null
}
}

data class InntekterDtoV2(
val barnetillegg: Set<InntektDtoV2> = emptySet(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ private val LOGGER = KotlinLogging.logger {}

private fun Rolle.tilPersonident() = ident?.let { Personident(it) }

private fun Rolle.mapTilResultatBarn() = ResultatRolle(tilPersonident(), hentNavn(), fødselsdato)
private fun Rolle.mapTilResultatBarn() = ResultatRolle(tilPersonident(), hentNavn(), fødselsdato, innbetaltBeløp)

@Service
class BeregningService(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class GebyrService(
overstyrGebyr = false,
ilagtGebyr = beregning.ilagtGebyr,
beregnetIlagtGebyr = beregning.ilagtGebyr,
begrunnelse = null,
)
}
beregnetGebyrErEndret
Expand All @@ -47,6 +48,7 @@ class GebyrService(
overstyrGebyr = false,
ilagtGebyr = beregning.ilagtGebyr,
beregnetIlagtGebyr = beregning.ilagtGebyr,
begrunnelse = null,
)
}
}
Expand All @@ -67,7 +69,7 @@ class GebyrService(
overstyrGebyr = request.overstyrGebyr,
ilagtGebyr = request.overstyrGebyr != beregning.ilagtGebyr,
beregnetIlagtGebyr = beregning.ilagtGebyr,
begrunnelse = request.begrunnelse ?: it.begrunnelse,
begrunnelse = if (!request.overstyrGebyr) null else request.begrunnelse ?: it.begrunnelse,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,7 @@ fun Inntekt.tilInntektDtoV2() =
id = this.id,
taMed = this.taMed,
rapporteringstype = this.type,
beløp =
maxOf(
belop.nærmesteHeltall,
BigDecimal.ZERO,
),
beløp = maxOf(belop.nærmesteHeltall, BigDecimal.ZERO),
// Kapitalinntekt kan ha negativ verdi. Dette skal ikke vises i frontend
datoFom = this.datoFom,
datoTom = this.datoTom,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,9 @@ class VedtakTilBehandlingMapping(
)

behandling.roller = grunnlagListe.mapRoller(behandling, lesemodus)
oppdaterDirekteOppgjørBeløp(behandling, lesemodus)
grunnlagListe.oppdaterRolleGebyr(behandling)

behandling.inntekter = grunnlagListe.mapInntekter(behandling, lesemodus)
behandling.husstandsmedlem = grunnlagListe.mapHusstandsmedlem(behandling, lesemodus)
behandling.sivilstand = grunnlagListe.mapSivilstand(behandling, lesemodus)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype
import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering
import no.nav.bidrag.domene.enums.rolle.Rolletype
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype
import no.nav.bidrag.domene.enums.vedtak.Vedtakstype
import no.nav.bidrag.sivilstand.SivilstandApi
import no.nav.bidrag.transport.behandling.felles.grunnlag.BaseGrunnlag
Expand Down Expand Up @@ -119,6 +120,7 @@ fun VedtakDto.tilBeregningResultatBidrag(): ResultatBidragberegningDto =
barn.ident,
barn.navn ?: hentPersonVisningsnavn(barn.ident?.verdi)!!,
barn.fødselsdato,
hentDirekteOppgjørBeløp(barnIdent.verdi),
),
perioder =
stønadsendring.periodeListe.map {
Expand Down Expand Up @@ -155,6 +157,22 @@ internal fun List<GrunnlagDto>.mapRoller(
it.tilRolle(behandling, if (lesemodus) i.toLong() else null)
}.toMutableSet()

internal fun VedtakDto.oppdaterDirekteOppgjørBeløp(
behandling: Behandling,
lesemodus: Boolean,
) = if (lesemodus) {
behandling.søknadsbarn.forEach {
it.innbetaltBeløp = hentDirekteOppgjørBeløp(it.ident!!)
}
} else {
null
}

internal fun VedtakDto.hentDirekteOppgjørBeløp(kravhaver: String) =
engangsbeløpListe
.find { it.type == Engangsbeløptype.DIREKTE_OPPGJØR && it.kravhaver.verdi == kravhaver }
?.beløp

internal fun List<GrunnlagDto>.oppdaterRolleGebyr(behandling: Behandling) =
filtrerBasertPåEgenReferanse(Grunnlagstype.SLUTTBEREGNING_GEBYR)
.groupBy { it.gjelderReferanse }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ class GebyrServiceTest {
bm.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe "Begrunnelse"
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe null
}

@Test
Expand Down Expand Up @@ -207,14 +207,14 @@ class GebyrServiceTest {
fun `skal oppdatere gebyr når det endres til ikke avslag`() {
val behandling = opprettBehandlingForGebyrberegning(BigDecimal(100))
val bm = behandling.bidragsmottaker!!
bm.manueltOverstyrtGebyr = RolleManueltOverstyrtGebyr(false, true, "Begrunnelse", true)
bm.manueltOverstyrtGebyr = RolleManueltOverstyrtGebyr(true, false, "Begrunnelse", true)
gebyrService.oppdaterGebyrEtterEndringÅrsakAvslag(behandling)

bm.manueltOverstyrtGebyr.shouldNotBeNull()
bm.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe "Begrunnelse"
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe null
}

@Test
Expand All @@ -228,21 +228,21 @@ class GebyrServiceTest {
bm.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe "Begrunnelse"
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe null
}

@Test
fun `skal oppdatere gebyr når det endres til ikke avslag og sette ilagtGebyr basert på beregning`() {
val behandling = opprettBehandlingForGebyrberegning(BigDecimal(1000000000))
val bm = behandling.bidragsmottaker!!
bm.manueltOverstyrtGebyr = RolleManueltOverstyrtGebyr(true, false, "Begrunnelse")
bm.manueltOverstyrtGebyr = RolleManueltOverstyrtGebyr(true, false, "Begrunnelse", beregnetIlagtGebyr = true)
gebyrService.oppdaterGebyrEtterEndringÅrsakAvslag(behandling)

bm.manueltOverstyrtGebyr.shouldNotBeNull()
bm.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe true
bm.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe true
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe "Begrunnelse"
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe null
}

@Test
Expand Down Expand Up @@ -276,7 +276,7 @@ class GebyrServiceTest {
bm.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe false
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe "Begrunnelse"
bm.manueltOverstyrtGebyr!!.begrunnelse shouldBe null
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.node.POJONode
import io.kotest.assertions.assertSoftly
import io.kotest.matchers.collections.shouldContain
import io.kotest.matchers.collections.shouldHaveSize
import io.kotest.matchers.nulls.shouldNotBeNull
import io.kotest.matchers.shouldBe
import io.kotest.matchers.shouldNotBe
import io.mockk.every
Expand Down Expand Up @@ -386,6 +387,12 @@ class VedtakTilBehandlingBidragTest : CommonVedtakTilBehandlingTest() {
it.fødselsdato shouldBe testdataBM.fødselsdato
it.navn shouldBe null
it.deleted shouldBe false
it.harGebyrsøknad shouldBe true
it.manueltOverstyrtGebyr.shouldNotBeNull()
it.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe true
it.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe false
it.manueltOverstyrtGebyr!!.begrunnelse shouldBe "test"
it.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe true
}
val bidragspliktig = roller.find { it.rolletype == Rolletype.BIDRAGSPLIKTIG }
bidragspliktig shouldNotBe null
Expand All @@ -394,6 +401,12 @@ class VedtakTilBehandlingBidragTest : CommonVedtakTilBehandlingTest() {
it.fødselsdato shouldBe testdataBP.fødselsdato
it.navn shouldBe null
it.deleted shouldBe false
it.harGebyrsøknad shouldBe true
it.manueltOverstyrtGebyr.shouldNotBeNull()
it.manueltOverstyrtGebyr!!.overstyrGebyr shouldBe false
it.manueltOverstyrtGebyr!!.ilagtGebyr shouldBe true
it.manueltOverstyrtGebyr!!.begrunnelse shouldBe null
it.manueltOverstyrtGebyr!!.beregnetIlagtGebyr shouldBe true
}
val søknadsbarn = roller.find { it.rolletype == Rolletype.BARN }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -321,4 +321,87 @@ class DtoMapperMockTest {
it.harInnvilgetTilleggsstønad shouldBe true
}
}

@Test
fun `skal vise månedsinntekt`() {
// gitt
val behandling = opprettGyldigBehandlingForBeregningOgVedtak(true, typeBehandling = TypeBehandling.BIDRAG)
behandling.inntekter.add(
Inntekt(
belop = BigDecimal(2000),
datoFom = behandling.virkningstidspunkt?.plusMonths(1),
datoTom = null,
ident = behandling.bidragsmottaker!!.ident!!,
taMed = false,
gjelderBarn = behandling.søknadsbarn.first().ident,
kilde = Kilde.MANUELL,
behandling = behandling,
type = Inntektsrapportering.BARNETILLEGG,
id = 1,
),
)
behandling.inntekter.add(
Inntekt(
belop = BigDecimal(0),
datoFom = behandling.virkningstidspunkt?.plusMonths(2),
datoTom = null,
ident = behandling.bidragspliktig!!.ident!!,
gjelderBarn = behandling.søknadsbarn.first().ident,
taMed = true,
kilde = Kilde.MANUELL,
behandling = behandling,
type = Inntektsrapportering.BARNETILLEGG,
id = 1,
),
)

behandling.inntekter.add(
Inntekt(
belop = BigDecimal(-1),
datoFom = behandling.virkningstidspunkt?.plusMonths(2),
datoTom = null,
ident = behandling.bidragspliktig!!.ident!!,
gjelderBarn = behandling.søknadsbarn.first().ident,
taMed = true,
kilde = Kilde.MANUELL,
behandling = behandling,
type = Inntektsrapportering.BARNETILLEGG,
id = 1,
),
)

behandling.inntekter.add(
Inntekt(
belop = BigDecimal(144),
datoFom = behandling.virkningstidspunkt?.plusMonths(3),
datoTom = null,
ident = behandling.bidragspliktig!!.ident!!,
gjelderBarn = behandling.søknadsbarn.first().ident,
taMed = true,
kilde = Kilde.MANUELL,
behandling = behandling,
type = Inntektsrapportering.BARNETILLEGG,
id = 1,
),
)

// hvis
val behandlingDto = dtomapper.tilDto(behandling)

//
behandlingDto.shouldNotBeNull()

val barnetillegg = behandlingDto.inntekter.barnetillegg shouldHaveSize 3

assertSoftly(barnetillegg) { bt ->
bt.forEach {
when (it.beløp) {
BigDecimal(-1) -> it.månedsbeløp shouldBe BigDecimal.ZERO
BigDecimal.ZERO -> it.månedsbeløp shouldBe BigDecimal.ZERO
BigDecimal(144) -> it.månedsbeløp shouldBe BigDecimal(12)
BigDecimal(2000) -> it.månedsbeløp shouldBe BigDecimal(167)
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -687,7 +687,7 @@ class VedtakInnhentetGrunnlagTest {
.tilInnhentetGrunnlagInntekt(personobjekter)
.toList(),
) {
this shouldHaveSize 13
this shouldHaveSize 12
assertSoftly(hentBarnetillegg()) {
it shouldHaveSize 2
it.filtrerBasertPåFremmedReferanse(referanse = grunnlagBp.referanse) shouldHaveSize 1
Expand Down
Loading

0 comments on commit 86706f8

Please sign in to comment.