Skip to content

Commit

Permalink
Fikse visningsmodus gebyr (#636)
Browse files Browse the repository at this point in the history
* Fikse visningsmodus gebyr

* Fikse visningsmodus gebyr

* Gebyr lesemodus

* Gebyr lesemodus
  • Loading branch information
ugur93 authored Dec 9, 2024
1 parent 81ded40 commit dcd4b59
Show file tree
Hide file tree
Showing 10 changed files with 218 additions and 39 deletions.
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 @@ -620,7 +620,7 @@ class Dtomapper(
}

fun Behandling.mapGebyr() =
if (roller.filter { it.harGebyrsøknad }.isNotEmpty()) {
if (roller.any { it.harGebyrsøknad }) {
GebyrDto(
gebyrRoller =
roller.sortedBy { it.rolletype }.filter { it.harGebyrsøknad }.map { rolle ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,10 +203,12 @@ fun List<Grunnlag>.tilBeregnetInntekt(personobjekter: Set<GrunnlagDto>): Set<Gru
)
}.toSet()

fun List<Grunnlag>.tilInnhentetGrunnlagUnderholdskostnad(personobjekter: Set<GrunnlagDto>): Set<GrunnlagDto> =
mapBarnetilsyn(personobjekter)

fun List<Grunnlag>.tilInnhentetGrunnlagInntekt(personobjekter: Set<GrunnlagDto>): Set<GrunnlagDto> =
mapSkattegrunnlag(personobjekter) + mapAinntekt(personobjekter) +
mapKontantstøtte(personobjekter) +
mapBarnetilsyn(personobjekter) +
mapBarnetillegg(personobjekter) +
mapUtvidetbarnetrygd(personobjekter) + mapSmåbarnstillegg(personobjekter)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ class VedtakTilBehandlingMapping(
)

behandling.roller = grunnlagListe.mapRoller(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 @@ -7,6 +7,7 @@ import no.nav.bidrag.behandling.database.datamodell.Husstandsmedlem
import no.nav.bidrag.behandling.database.datamodell.Inntekt
import no.nav.bidrag.behandling.database.datamodell.Inntektspost
import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.database.datamodell.RolleManueltOverstyrtGebyr
import no.nav.bidrag.behandling.database.datamodell.Sivilstand
import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBeregningBarnDto
import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBidragberegningDto
Expand Down Expand Up @@ -40,12 +41,15 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.BostatusPeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.GrunnlagDto
import no.nav.bidrag.transport.behandling.felles.grunnlag.Grunnlagsreferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.InntektsrapporteringPeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.ManueltOverstyrtGebyr
import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag
import no.nav.bidrag.transport.behandling.felles.grunnlag.Person
import no.nav.bidrag.transport.behandling.felles.grunnlag.SivilstandPeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SluttberegningGebyr
import no.nav.bidrag.transport.behandling.felles.grunnlag.SøknadGrunnlag
import no.nav.bidrag.transport.behandling.felles.grunnlag.VirkningstidspunktGrunnlag
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåEgenReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertAv
import no.nav.bidrag.transport.behandling.felles.grunnlag.hentPerson
import no.nav.bidrag.transport.behandling.felles.grunnlag.hentPersonMedReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt
Expand Down Expand Up @@ -147,8 +151,35 @@ internal fun List<GrunnlagDto>.mapRoller(
lesemodus: Boolean,
): MutableSet<Rolle> =
filter { grunnlagstyperRolle.contains(it.type) }
.mapIndexed { i, it -> it.tilRolle(behandling, if (lesemodus) i.toLong() else null) }
.toMutableSet()
.mapIndexed { i, it ->
it.tilRolle(behandling, if (lesemodus) i.toLong() else null)
}.toMutableSet()

internal fun List<GrunnlagDto>.oppdaterRolleGebyr(behandling: Behandling) =
filtrerBasertPåEgenReferanse(Grunnlagstype.SLUTTBEREGNING_GEBYR)
.groupBy { it.gjelderReferanse }
.forEach { (gjelderReferanse, grunnlag) ->
val person = hentPersonMedReferanse(gjelderReferanse)!!
val rolle = behandling.roller.find { it.ident == person.personIdent }!!
rolle.harGebyrsøknad = true
val sluttberegning = grunnlag.first().innholdTilObjekt<SluttberegningGebyr>()
val manueltOverstyrtGebyr =
finnGrunnlagSomErReferertAv(
Grunnlagstype.MANUELT_OVERSTYRT_GEBYR,
grunnlag.first(),
).firstOrNull()?.innholdTilObjekt<ManueltOverstyrtGebyr>()
rolle.manueltOverstyrtGebyr =
RolleManueltOverstyrtGebyr(
manueltOverstyrtGebyr != null,
sluttberegning.ilagtGebyr,
manueltOverstyrtGebyr?.begrunnelse,
if (manueltOverstyrtGebyr != null) {
!sluttberegning.ilagtGebyr
} else {
sluttberegning.ilagtGebyr
},
)
}

internal fun List<GrunnlagDto>.mapHusstandsmedlem(
behandling: Behandling,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import no.nav.bidrag.behandling.transformers.grunnlag.tilBeregnetInntekt
import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagsreferanse
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetArbeidsforhold
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetGrunnlagInntekt
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetGrunnlagUnderholdskostnad
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetHusstandsmedlemmer
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetSivilstand
import no.nav.bidrag.behandling.transformers.grunnlag.valider
Expand Down Expand Up @@ -103,8 +104,11 @@ class BehandlingTilGrunnlagMappingV2(
sortertGrunnlagsListeIkkeBearbeidet.tilInnhentetHusstandsmedlemmer(personobjekter)
val beregnetInntekt = sortertGrunnlagsListeBearbeidet.tilBeregnetInntekt(personobjekter)
val innhentetInntekter = sortertGrunnlagsListeIkkeBearbeidet.tilInnhentetGrunnlagInntekt(personobjekter)
val innhentetUnderholdskostnad = sortertGrunnlagsListeIkkeBearbeidet.tilInnhentetGrunnlagUnderholdskostnad(personobjekter)

return innhentetInntekter + innhentetArbeidsforhold + innhentetHusstandsmedlemmer + innhentetSivilstand + beregnetInntekt
return innhentetInntekter + innhentetArbeidsforhold + innhentetHusstandsmedlemmer +
innhentetSivilstand + beregnetInntekt +
innhentetUnderholdskostnad
}

fun Rolle.tilGrunnlagsreferanse() = rolletype.tilGrunnlagstype().tilPersonreferanse(fødselsdato.toCompactString(), id!!.toInt())
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 @@ -8,6 +8,7 @@ import no.nav.bidrag.behandling.database.datamodell.Rolle
import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagPerson
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetArbeidsforhold
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetGrunnlagInntekt
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetGrunnlagUnderholdskostnad
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetHusstandsmedlemmer
import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetSivilstand
import no.nav.bidrag.behandling.utils.opprettAinntektGrunnlagListe
Expand Down Expand Up @@ -686,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 Expand Up @@ -766,23 +767,6 @@ class VedtakInnhentetGrunnlagTest {
}
}
}
assertSoftly(hentBarnetilsyn()) {
it shouldHaveSize 1
assertSoftly(it[0]) {
it.gjelderReferanse.shouldBe(grunnlagBm.referanse)
val barnetilsyn = it.innholdTilObjekt<InnhentetBarnetilsyn>()
barnetilsyn.grunnlag shouldHaveSize 2
barnetilsyn.datakilde shouldBe GrunnlagDatakilde.FAMILIE_EF_SAK
barnetilsyn.hentBarnetilsynForBarn(søknadsbarnGrunnlag1.referanse) shouldHaveSize 2
barnetilsyn.hentBarnetilsynForBarn(søknadsbarnGrunnlag2.referanse) shouldHaveSize 0
assertSoftly(barnetilsyn.grunnlag[0]) {
periode.fom shouldBe LocalDate.parse("2022-01-01")
periode.til shouldBe LocalDate.parse("2022-07-31")
tilsynstype shouldBe Tilsynstype.HELTID
skolealder shouldBe Skolealder.OVER
}
}
}
}
}

Expand All @@ -797,8 +781,6 @@ class VedtakInnhentetGrunnlagTest {
fun List<GrunnlagDto>.hentBarnetillegg() = this.filter { it.type == Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG }

fun List<GrunnlagDto>.hentKontantstøtte() = this.filter { it.type == Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE }

fun List<GrunnlagDto>.hentBarnetilsyn() = this.filter { it.type == Grunnlagstype.INNHENTET_INNTEKT_BARNETILSYN }
}

@Nested
Expand Down Expand Up @@ -862,4 +844,48 @@ class VedtakInnhentetGrunnlagTest {
}
}
}

@Nested
inner class InnhentetUnderholdskostnadTest {
fun List<GrunnlagDto>.hentBarnetilsyn() = this.filter { it.type == Grunnlagstype.INNHENTET_INNTEKT_BARNETILSYN }

@Test
fun `skal mappe innhentet barnetilsyn`() {
val behandling = oppretteBehandling()
behandling.roller =
mutableSetOf(
opprettRolle(behandling, testdataBM),
opprettRolle(behandling, testdataBarn1),
opprettRolle(behandling, testdataBarn2),
)
val grunnlagListe =
listOf(
opprettBarnetilsynListe().tilGrunnlagEntity(behandling),
).flatten()
assertSoftly(
grunnlagListe
.tilInnhentetGrunnlagUnderholdskostnad(personobjekter)
.toList(),
) {
this shouldHaveSize 1
assertSoftly(hentBarnetilsyn()) {
it shouldHaveSize 1
assertSoftly(it[0]) {
it.gjelderReferanse.shouldBe(grunnlagBm.referanse)
val barnetilsyn = it.innholdTilObjekt<InnhentetBarnetilsyn>()
barnetilsyn.grunnlag shouldHaveSize 2
barnetilsyn.datakilde shouldBe GrunnlagDatakilde.FAMILIE_EF_SAK
barnetilsyn.hentBarnetilsynForBarn(søknadsbarnGrunnlag1.referanse) shouldHaveSize 2
barnetilsyn.hentBarnetilsynForBarn(søknadsbarnGrunnlag2.referanse) shouldHaveSize 0
assertSoftly(barnetilsyn.grunnlag[0]) {
periode.fom shouldBe LocalDate.parse("2022-01-01")
periode.til shouldBe LocalDate.parse("2022-07-31")
tilsynstype shouldBe Tilsynstype.HELTID
skolealder shouldBe Skolealder.OVER
}
}
}
}
}
}
}
Loading

0 comments on commit dcd4b59

Please sign in to comment.