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 14, 2024
1 parent 21c3187 commit acc3c81
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import no.nav.bidrag.behandling.dto.v2.underhold.Underholdselement
import no.nav.bidrag.behandling.service.UnderholdService
import no.nav.bidrag.behandling.transformers.Dtomapper
import no.nav.bidrag.behandling.transformers.underhold.henteOgValidereUnderholdskostnad
import no.nav.bidrag.behandling.transformers.underhold.validerePerioder
import no.nav.bidrag.commons.util.secureLogger
import org.springframework.http.HttpStatus
import org.springframework.web.bind.annotation.DeleteMapping
Expand Down Expand Up @@ -145,7 +146,15 @@ class UnderholdController(

val underholdskostnad = henteOgValidereUnderholdskostnad(behandling, underholdsid)

return underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request)
val oppdatertFaktiskTilsynsutgift = underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request)
return OppdatereUnderholdResponse(
faktiskTilsynsutgift = dtomapper.tilFaktiskTilsynsutgiftDto(oppdatertFaktiskTilsynsutgift),
underholdskostnad =
dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(
underholdskostnad.behandling,
),
valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(),
)
}

@ResponseStatus(HttpStatus.CREATED)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,19 +115,21 @@ data class UnderholdskostnadDto(
val tilsynsutgifterBarn: List<TilsynsutgiftBarn> = emptyList(),
val sjablonMaksTilsynsutgift: BigDecimal,
val sjablonMaksFradrag: BigDecimal,
val sjablonAntallBarn: Int,
val skattAlminneligInntektFaktor: BigDecimal,
val antallBarn: Int,
val skattesatsFaktor: BigDecimal,
val totalTilsynsutgift: BigDecimal,
val sumTilsynsutgifter: BigDecimal,
val endeligBeløp: BigDecimal,
val faktiskBeløp: BigDecimal,
val bruttoBeløp: BigDecimal,
val andelBeløp: BigDecimal,
val nettoBeløp: BigDecimal,
val erBegrensetAvMaksTilsyn: Boolean,
val fordelingFaktor: BigDecimal,
val skattefradrag: BigDecimal,
val skattefradragPerBarn: BigDecimal,
val maksFradragAndel: BigDecimal,
val beløpTrukkeFraSkattefradrag: BigDecimal,
val skattefradrag: BigDecimal,
val skattMaksFradrag: BigDecimal,
val skattTotalTilsynsutgift: BigDecimal,
)

data class TilsynsutgiftBarn(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ class UnderholdService(
fun oppdatereFaktiskeTilsynsutgifter(
underholdskostnad: Underholdskostnad,
request: OppdatereFaktiskTilsynsutgiftRequest,
): OppdatereUnderholdResponse {
): FaktiskTilsynsutgift {
request.validere(underholdskostnad)

val oppdatertFaktiskTilsynsutgift =
Expand Down Expand Up @@ -322,14 +322,7 @@ class UnderholdService(
.sortedBy { it.id }
.last()
}
return OppdatereUnderholdResponse(
faktiskTilsynsutgift = dtomapper.tilFaktiskTilsynsutgiftDto(oppdatertFaktiskTilsynsutgift),
underholdskostnad =
dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(
underholdskostnad.behandling,
),
valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(),
)
return oppdatertFaktiskTilsynsutgift
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ 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.MathContext
import java.math.RoundingMode
import java.time.LocalDate

Expand Down Expand Up @@ -514,27 +515,31 @@ fun List<GrunnlagDto>.tilUnderholdskostnadDetaljer(
val sjablonMaksFradragBeløp = sjablonMaksfradrag.firstOrNull()?.innhold?.maksBeløpFradrag ?: BigDecimal.ZERO
val antallBarn = nettoTilsyn.innhold.tilsynsutgiftBarnListe.size
val maksfradragAndel = sjablonMaksFradragBeløp.divide(antallBarn.toBigDecimal(), 10, RoundingMode.HALF_UP)
val skattesatsFaktor = sjablonSkattesats?.innhold?.verdi?.divide(BigDecimal(100), 10, RoundingMode.HALF_UP) ?: BigDecimal.ZERO
val bruttoMaksFradrag = sjablonMaksFradragBeløp.multiply(skattesatsFaktor, MathContext(10, RoundingMode.HALF_UP))
val bruttoTotalTilsynsutgift = nettoTilsyn.innhold.totalTilsynsutgift.multiply(skattesatsFaktor, MathContext(10, RoundingMode.HALF_UP))
return Beregningsdetaljer(
erBegrensetAvMaksTilsyn = erBegrensetAvMaksTilsyn,
tilsynsutgifterBarn =
nettoTilsyn.innhold.tilsynsutgiftBarnListe.sortedBy { it.gjelderBarn }.map { fu ->
tilsynsutgifterBarn(grunnlagsreferanseListe, fu)
},
endeligBeløp = søknadsbarnEndeligBeløp,
faktiskBeløp = søknadsbarnFaktiskBeløp,
andelBeløp = nettoTilsyn.innhold.andelTilsynsutgiftBeløp,
nettoBeløp = nettoTilsyn.innhold.nettoTilsynsutgift,
bruttoBeløp = søknadsbarnFaktiskBeløp,
erBegrensetAvMaksTilsyn = erBegrensetAvMaksTilsyn,
sjablonMaksTilsynsutgift = maksTilsynBeløp,
totalTilsynsutgift = nettoTilsyn.innhold.totalTilsynsutgift,
sumTilsynsutgifter = sumTilsynsutgifter,
fordelingFaktor = nettoTilsyn.innhold.andelTilsynsutgiftFaktor,
skattefradrag = nettoTilsyn.innhold.skattefradrag,
skattefradragPerBarn = nettoTilsyn.innhold.skattefradrag,
maksFradragAndel = maksfradragAndel,
beløpTrukkeFraSkattefradrag = minOf(maksfradragAndel, nettoTilsyn.innhold.andelTilsynsutgiftBeløp),
sjablonMaksFradrag = sjablonMaksfradrag.firstOrNull()?.innhold?.maksBeløpFradrag ?: BigDecimal.ZERO,
skattAlminneligInntektFaktor =
sjablonSkattesats?.innhold?.verdi?.divide(BigDecimal(100), 10, RoundingMode.HALF_UP) ?: BigDecimal.ZERO,
sjablonAntallBarn = antallBarn,
tilsynsutgifterBarn =
nettoTilsyn.innhold.tilsynsutgiftBarnListe.sortedBy { it.gjelderBarn }.map { fu ->
tilsynsutgifterBarn(grunnlagsreferanseListe, fu)
},
skattTotalTilsynsutgift = bruttoTotalTilsynsutgift,
skattMaksFradrag = bruttoMaksFradrag,
skattefradrag = minOf(bruttoTotalTilsynsutgift, bruttoMaksFradrag),
skattesatsFaktor = skattesatsFaktor,
antallBarn = antallBarn,
andelBeløp = nettoTilsyn.innhold.andelTilsynsutgiftBeløp,
nettoBeløp = nettoTilsyn.innhold.nettoTilsynsutgift,
)
}

Expand Down

0 comments on commit acc3c81

Please sign in to comment.