Skip to content

Commit

Permalink
Visning av beregningsdetaljer tilsynsutgift
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 committed Dec 13, 2024
1 parent 149f4e5 commit 2f12666
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,20 @@ data class UnderholdskostnadDto(
) {
data class Beregningsdetaljer(
val tilsynsutgifterBarn: List<TilsynsutgiftBarn> = emptyList(),
val sjablonMaksTilsynsutgift: BigDecimal,
val totalTilsynsutgift: BigDecimal,
val sumTilsynsutgifter: BigDecimal,
val endeligBeløp: BigDecimal,
val faktiskBeløp: BigDecimal,
val nettoBeløp: BigDecimal,
val erBegrensetAvMaksTilsyn: Boolean,
val fordelingFaktor: BigDecimal,
val skattefradrag: BigDecimal,
)

data class TilsynsutgiftBarn(
val gjelderBarn: PersoninfoDto,
val totalTilsynsutgift: BigDecimal,
val beløp: BigDecimal,
val kostpenger: BigDecimal? = null,
val tilleggsstønad: BigDecimal? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,13 @@ import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBidragsberegningBarnDto
import no.nav.bidrag.behandling.dto.v1.beregning.ResultatForskuddsberegningBarn
import no.nav.bidrag.behandling.dto.v1.beregning.ResultatSærbidragsberegningDto
import no.nav.bidrag.behandling.dto.v2.behandling.GebyrRolleDto
import no.nav.bidrag.behandling.dto.v2.behandling.PersoninfoDto
import no.nav.bidrag.behandling.dto.v2.behandling.UtgiftBeregningDto
import no.nav.bidrag.behandling.dto.v2.behandling.UtgiftspostDto
import no.nav.bidrag.behandling.dto.v2.underhold.DatoperiodeDto
import no.nav.bidrag.behandling.dto.v2.underhold.UnderholdskostnadDto
import no.nav.bidrag.behandling.dto.v2.underhold.UnderholdskostnadDto.Beregningsdetaljer
import no.nav.bidrag.behandling.service.hentPersonVisningsnavn
import no.nav.bidrag.behandling.transformers.behandling.tilDto
import no.nav.bidrag.behandling.transformers.utgift.tilBeregningDto
import no.nav.bidrag.behandling.transformers.utgift.tilDto
Expand Down Expand Up @@ -47,31 +50,40 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragsevn
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragspliktigesAndel
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragspliktigesBeregnedeTotalbidrag
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningNettoBarnetillegg
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningNettoTilsynsutgift
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningSamværsfradrag
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningSamværsklasse
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningSumInntekt
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningTilleggsstønad
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningUnderholdskostnad
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningUtgift
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningVoksneIHusstand
import no.nav.bidrag.transport.behandling.felles.grunnlag.FaktiskUtgiftPeriode
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.InnholdMedReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.Person
import no.nav.bidrag.transport.behandling.felles.grunnlag.SamværsklassePeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SivilstandPeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SjablonBidragsevnePeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SjablonMaksTilsynPeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SjablonSjablontallPeriode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SluttberegningBarnebidrag
import no.nav.bidrag.transport.behandling.felles.grunnlag.TilsynsutgiftBarn
import no.nav.bidrag.transport.behandling.felles.grunnlag.bidragspliktig
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåEgenReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerOgKonverterBasertPåEgenReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertAv
import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe
import no.nav.bidrag.transport.behandling.felles.grunnlag.finnOgKonverterGrunnlagSomErReferertAv
import no.nav.bidrag.transport.behandling.felles.grunnlag.finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe
import no.nav.bidrag.transport.behandling.felles.grunnlag.hentAllePersoner
import no.nav.bidrag.transport.behandling.felles.grunnlag.hentPersonMedReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt
import no.nav.bidrag.transport.behandling.felles.grunnlag.personIdent
import no.nav.bidrag.transport.behandling.felles.grunnlag.tilGrunnlagstype
import no.nav.bidrag.transport.felles.ifTrue
import java.math.BigDecimal
import java.math.RoundingMode
import java.time.LocalDate

fun BeregnGebyrResultat.tilDto(rolle: Rolle): GebyrRolleDto {
Expand Down Expand Up @@ -433,9 +445,10 @@ fun List<GrunnlagDto>.finnDelberegningSamværsfradrag(
)
}

fun List<DelberegningUnderholdskostnad>.tilUnderholdskostnadDto() =
fun List<InnholdMedReferanse<DelberegningUnderholdskostnad>>.tilUnderholdskostnadDto(underholdBeregning: List<GrunnlagDto>) =
this
.map {
.map { delberegning ->
val it = delberegning.innhold
UnderholdskostnadDto(
stønadTilBarnetilsyn = it.barnetilsynMedStønad ?: BigDecimal.ZERO,
tilsynsutgifter = it.nettoTilsynsutgift ?: BigDecimal.ZERO,
Expand All @@ -450,16 +463,87 @@ fun List<DelberegningUnderholdskostnad>.tilUnderholdskostnadDto() =
barnetrygd = it.barnetrygd,
boutgifter = it.boutgift,
total = it.underholdskostnad,
beregningsdetaljer =
underholdBeregning.tilUnderholdskostnadDetaljer(
delberegning.grunnlag.grunnlagsreferanseListe,
delberegning.gjelderBarnReferanse,
),
)
}.toSet()

fun List<GrunnlagDto>.finnAlleDelberegningUnderholdskostnad(): List<DelberegningUnderholdskostnad> =
fun List<GrunnlagDto>.tilUnderholdskostnadDetaljer(
grunnlagsreferanseListe: List<Grunnlagsreferanse>,
gjelderBarnReferanse: String?,
): Beregningsdetaljer? {
val nettoTilsyn =
finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe<DelberegningNettoTilsynsutgift>(
Grunnlagstype.DELBEREGNING_NETTO_TILSYNSUTGIFT,
grunnlagsreferanseListe,
).firstOrNull() ?: return null

val sjablonMaksTilsyn =
finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe<SjablonMaksTilsynPeriode>(
Grunnlagstype.SJABLON_MAKS_TILSYN,
grunnlagsreferanseListe,
)
val maksTilsynBeløp = sjablonMaksTilsyn.firstOrNull()?.innhold?.maksBeløpTilsyn ?: BigDecimal.ZERO
val søknadsbarnEndeligBeløp =
nettoTilsyn.innhold.tilsynsutgiftBarnListe
.find { it.gjelderBarn == gjelderBarnReferanse }
?.endeligSumTilsynsutgifter
?: BigDecimal.ZERO
val sumTilsynsutgifter = nettoTilsyn.innhold.tilsynsutgiftBarnListe.sumOf { it.sumTilsynsutgifter }
val erBegrensetAvMaksTilsyn =
nettoTilsyn.innhold.totalTilsynsutgift.setScale(0, RoundingMode.HALF_UP) != sumTilsynsutgifter.setScale(0, RoundingMode.HALF_UP)
return Beregningsdetaljer(
erBegrensetAvMaksTilsyn = erBegrensetAvMaksTilsyn,
endeligBeløp = søknadsbarnEndeligBeløp,
sjablonMaksTilsynsutgift = maksTilsynBeløp,
faktiskBeløp = nettoTilsyn.innhold.andelTilsynsutgiftBeløp,
nettoBeløp = nettoTilsyn.innhold.nettoTilsynsutgift,
totalTilsynsutgift = nettoTilsyn.innhold.totalTilsynsutgift,
sumTilsynsutgifter = sumTilsynsutgifter,
fordelingFaktor = nettoTilsyn.innhold.andelTilsynsutgiftFaktor,
skattefradrag = nettoTilsyn.innhold.skattefradrag,
tilsynsutgifterBarn =
nettoTilsyn.innhold.tilsynsutgiftBarnListe.sortedBy { it.gjelderBarn }.map { fu ->
tilsynsutgifterBarn(grunnlagsreferanseListe, fu)
},
)
}

fun List<GrunnlagDto>.tilsynsutgifterBarn(
grunnlagsreferanseListe: List<Grunnlagsreferanse>,
tilsynsutgiftBarn: TilsynsutgiftBarn,
): UnderholdskostnadDto.TilsynsutgiftBarn {
val faktiskUtgiftPeriode =
finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe<FaktiskUtgiftPeriode>(
Grunnlagstype.FAKTISK_UTGIFT_PERIODE,
grunnlagsreferanseListe,
).find { it.gjelderBarnReferanse == tilsynsutgiftBarn.gjelderBarn }!!

val delberegningTilleggsstønad =
finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe<DelberegningTilleggsstønad>(
Grunnlagstype.DELBEREGNING_TILLEGGSSTØNAD,
grunnlagsreferanseListe,
).find { it.gjelderBarnReferanse == tilsynsutgiftBarn.gjelderBarn }
val person = hentPersonMedReferanse(tilsynsutgiftBarn.gjelderBarn)?.innholdTilObjekt<Person>()
val navn = if (person?.navn.isNullOrEmpty()) hentPersonVisningsnavn(person?.ident?.verdi) else person?.navn
return UnderholdskostnadDto.TilsynsutgiftBarn(
gjelderBarn = PersoninfoDto(1, person?.ident, navn),
totalTilsynsutgift = faktiskUtgiftPeriode.innhold.faktiskUtgiftBeløp,
beløp = tilsynsutgiftBarn.sumTilsynsutgifter,
kostpenger = faktiskUtgiftPeriode.innhold.kostpengerBeløp,
tilleggsstønad = delberegningTilleggsstønad?.innhold?.beregnetBeløp,
)
}

fun List<GrunnlagDto>.finnAlleDelberegningUnderholdskostnad(): List<InnholdMedReferanse<DelberegningUnderholdskostnad>> =
this
.filtrerBasertPåEgenReferanse(
.filtrerOgKonverterBasertPåEgenReferanse<DelberegningUnderholdskostnad>(
Grunnlagstype.DELBEREGNING_UNDERHOLDSKOSTNAD,
).innholdTilObjekt<DelberegningUnderholdskostnad>()
.sortedBy {
it.periode.fom
).sortedBy {
it.innhold.periode.fom
}

fun List<GrunnlagDto>.finnBarnetillegg(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,10 +206,10 @@ class Dtomapper(
this.søknadsbarn.first(),
)

return beregnBarnebidragApi
.beregnNettoTilsynsutgiftOgUnderholdskostnad(grunnlag)
val underholdBeregning = beregnBarnebidragApi.beregnNettoTilsynsutgiftOgUnderholdskostnad(grunnlag)
return underholdBeregning
.finnAlleDelberegningUnderholdskostnad()
.tilUnderholdskostnadDto()
.tilUnderholdskostnadDto((underholdBeregning + grunnlag.grunnlagListe).toSet().toList())
}

private fun Person.tilPersoninfoDto(rolle: Rolle?): PersoninfoDto {
Expand Down

0 comments on commit 2f12666

Please sign in to comment.