diff --git a/pom.xml b/pom.xml
index a2f9aaca..9908d92f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,7 @@
21
2.1.0
2024.12.11.070437
- 2024.12.10.160924
+ 2024.12.13.140638
2.3.232
8.0
3.2.0
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/underhold/Underhold.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/underhold/Underhold.kt
index 64859d18..dd1d4c76 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/underhold/Underhold.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/v2/underhold/Underhold.kt
@@ -114,6 +114,9 @@ data class UnderholdskostnadDto(
data class Beregningsdetaljer(
val tilsynsutgifterBarn: List = emptyList(),
val sjablonMaksTilsynsutgift: BigDecimal,
+ val sjablonMaksFradrag: BigDecimal,
+ val sjablonAntallBarn: Int,
+ val skattAlminneligInntektFaktor: BigDecimal,
val totalTilsynsutgift: BigDecimal,
val sumTilsynsutgifter: BigDecimal,
val endeligBeløp: BigDecimal,
@@ -123,7 +126,8 @@ data class UnderholdskostnadDto(
val erBegrensetAvMaksTilsyn: Boolean,
val fordelingFaktor: BigDecimal,
val skattefradrag: BigDecimal,
- val skattefradragFaktor: BigDecimal,
+ val maksFradragAndel: BigDecimal,
+ val beløpTrukkeFraSkattefradrag: BigDecimal,
)
data class TilsynsutgiftBarn(
diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt
index 46de7d66..ee3ff929 100644
--- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt
+++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt
@@ -66,6 +66,7 @@ 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.SjablonMaksFradragPeriode
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
@@ -486,6 +487,16 @@ fun List.tilUnderholdskostnadDetaljer(
Grunnlagstype.SJABLON_MAKS_TILSYN,
grunnlagsreferanseListe,
)
+ val sjablonMaksfradrag =
+ finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe(
+ Grunnlagstype.SJABLON_MAKS_FRADRAG,
+ grunnlagsreferanseListe,
+ )
+ val sjablonSkattesats =
+ finnOgKonverterGrunnlagSomErReferertFraGrunnlagsreferanseListe(
+ Grunnlagstype.SJABLON_SJABLONTALL,
+ nettoTilsyn.grunnlag.grunnlagsreferanseListe,
+ ).find { it.innhold.sjablon == SjablonTallNavn.SKATT_ALMINNELIG_INNTEKT_PROSENT }
val maksTilsynBeløp = sjablonMaksTilsyn.firstOrNull()?.innhold?.maksBeløpTilsyn ?: BigDecimal.ZERO
val søknadsbarnEndeligBeløp =
nettoTilsyn.innhold.tilsynsutgiftBarnListe
@@ -500,6 +511,9 @@ fun List.tilUnderholdskostnadDetaljer(
val sumTilsynsutgifter = nettoTilsyn.innhold.tilsynsutgiftBarnListe.sumOf { it.sumTilsynsutgifter }
val erBegrensetAvMaksTilsyn =
nettoTilsyn.innhold.totalTilsynsutgift.setScale(0, RoundingMode.HALF_UP) != sumTilsynsutgifter.setScale(0, RoundingMode.HALF_UP)
+ 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)
return Beregningsdetaljer(
erBegrensetAvMaksTilsyn = erBegrensetAvMaksTilsyn,
endeligBeløp = søknadsbarnEndeligBeløp,
@@ -511,7 +525,12 @@ fun List.tilUnderholdskostnadDetaljer(
sumTilsynsutgifter = sumTilsynsutgifter,
fordelingFaktor = nettoTilsyn.innhold.andelTilsynsutgiftFaktor,
skattefradrag = nettoTilsyn.innhold.skattefradrag,
- skattefradragFaktor = 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)