Skip to content

Commit

Permalink
Oppdater underholdskostnad api
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 committed Dec 17, 2024
1 parent a046a58 commit 46fba2d
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ class UnderholdController(
val oppdatertBarnetilsyn = underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request)
return OppdatereUnderholdResponse(
stønadTilBarnetilsyn = oppdatertBarnetilsyn.tilStønadTilBarnetilsynDto(),
underholdskostnad =
dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling),
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().perioderForBarn(underholdskostnad.person) },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(),
)
}
Expand Down Expand Up @@ -156,10 +156,8 @@ class UnderholdController(
val oppdatertFaktiskTilsynsutgift = underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request)
return OppdatereUnderholdResponse(
faktiskTilsynsutgift = dtomapper.tilFaktiskTilsynsutgiftDto(oppdatertFaktiskTilsynsutgift),
underholdskostnad =
dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(
underholdskostnad.behandling,
),
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().first().perioder },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(),
)
}
Expand Down Expand Up @@ -197,8 +195,8 @@ class UnderholdController(
val oppdatertTilleggsstønad = underholdService.oppdatereTilleggsstønad(underholdskostnad, request)
return OppdatereUnderholdResponse(
tilleggsstønad = dtomapper.tilTilleggsstønadDto(oppdatertTilleggsstønad),
underholdskostnad =
dtomapper.tilUnderholdskostnadsperioderForBehandlingMedKunEttSøknadsbarn(underholdskostnad.behandling),
underholdskostnad = dtomapper.run { behandling.tilBeregnetUnderholdskostnad().first().perioder },
beregnetUnderholdskostnader = dtomapper.run { behandling.tilBeregnetUnderholdskostnad() },
valideringsfeil = underholdskostnad.barnetilsyn.validerePerioder(),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ open class Underholdskostnad(
)
open val faktiskeTilsynsutgifter: MutableSet<FaktiskTilsynsutgift> = mutableSetOf(),
) {
val barnetsRolleIBehandlingen get() = person.rolle.filter { behandling.id == it.behandling.id }.firstOrNull()
val barnetsRolleIBehandlingen get() = person.rolle.find { behandling.id == it.behandling.id }

override fun toString(): String =
"Underholdskostnad(id=$id, behandling=${behandling.id}, person=${person.id}, harTilsynsordning=$harTilsynsordning, faktiskeTilsynsutgifter=$faktiskeTilsynsutgifter, barnetilsyn=$barnetilsyn, tilleggsstønad=$tilleggsstønad)"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@ data class OppdatereUnderholdResponse(
val stønadTilBarnetilsyn: StønadTilBarnetilsynDto? = null,
val faktiskTilsynsutgift: FaktiskTilsynsutgiftDto? = null,
val tilleggsstønad: TilleggsstønadDto? = null,
@Deprecated("Bruk beregnetUnderholdskostnader")
val underholdskostnad: Set<UnderholdskostnadDto>,
val valideringsfeil: ValideringsfeilUnderhold? = null,
val beregnetUnderholdskostnader: Set<BeregnetUnderholdskostnad>,
)

data class SletteUnderholdselement(
Expand Down Expand Up @@ -50,6 +52,7 @@ data class UnderholdDto(
val tilleggsstønad: Set<TilleggsstønadDto> = emptySet(),
val underholdskostnad: Set<UnderholdskostnadDto>,
val begrunnelse: String? = null,
val beregnetUnderholdskostnad: Set<UnderholdskostnadDto>,
)

data class OppdatereUnderholdRequest(
Expand Down Expand Up @@ -101,6 +104,11 @@ data class ValideringsfeilUnderhold(
)
}

data class BeregnetUnderholdskostnad(
val gjelderBarn: PersoninfoDto,
val perioder: Set<UnderholdskostnadDto>,
)

data class UnderholdskostnadDto(
val periode: DatoperiodeDto,
val forbruk: BigDecimal = BigDecimal.ZERO,
Expand Down
71 changes: 48 additions & 23 deletions src/main/kotlin/no/nav/bidrag/behandling/transformers/Dtomapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@ import no.nav.bidrag.behandling.dto.v2.boforhold.HusstandsmedlemDtoV2
import no.nav.bidrag.behandling.dto.v2.boforhold.OppdatereBoforholdResponse
import no.nav.bidrag.behandling.dto.v2.boforhold.egetBarnErEnesteVoksenIHusstanden
import no.nav.bidrag.behandling.dto.v2.gebyr.validerGebyr
import no.nav.bidrag.behandling.dto.v2.underhold.BeregnetUnderholdskostnad
import no.nav.bidrag.behandling.dto.v2.underhold.DatoperiodeDto
import no.nav.bidrag.behandling.dto.v2.underhold.FaktiskTilsynsutgiftDto
import no.nav.bidrag.behandling.dto.v2.underhold.TilleggsstønadDto
import no.nav.bidrag.behandling.dto.v2.underhold.UnderholdDto
import no.nav.bidrag.behandling.dto.v2.underhold.UnderholdskostnadDto
import no.nav.bidrag.behandling.dto.v2.utgift.OppdatereUtgiftResponse
import no.nav.bidrag.behandling.objectmapper
import no.nav.bidrag.behandling.service.NotatService
Expand Down Expand Up @@ -179,17 +179,19 @@ class Dtomapper(
gjelderBarn = this.person.tilPersoninfoDto(rolleSøknadsbarn),
faktiskTilsynsutgift = this.faktiskeTilsynsutgifter.sortedBy { it.fom }.tilFaktiskeTilsynsutgiftDtos(),
stønadTilBarnetilsyn =
rolleSøknadsbarn?.let {
this.barnetilsyn
.sortedBy { it.fom }
.toSet()
.tilStønadTilBarnetilsynDtos()
}
?: emptySet(),
tilleggsstønad =
rolleSøknadsbarn?.let { this.tilleggsstønad.sortedBy { it.fom }.tilTilleggsstønadDtos() }
?: emptySet(),
underholdskostnad = rolleSøknadsbarn?.let { this.behandling.tilBeregnetUnderholdskostnad() } ?: emptySet(),
this.barnetilsyn
.sortedBy { it.fom }
.toSet()
.tilStønadTilBarnetilsynDtos(),
tilleggsstønad = this.tilleggsstønad.sortedBy { it.fom }.tilTilleggsstønadDtos(),
underholdskostnad =
this.behandling
.tilBeregnetUnderholdskostnad()
.perioderForBarn(person),
beregnetUnderholdskostnad =
this.behandling
.tilBeregnetUnderholdskostnad()
.perioderForBarn(person),
begrunnelse =
NotatService.henteUnderholdsnotat(
this.behandling,
Expand All @@ -198,18 +200,41 @@ class Dtomapper(
)
}

private fun Behandling.tilBeregnetUnderholdskostnad(): Set<UnderholdskostnadDto> {
// TODO: Beregning støtter per nå kun ett søknadsbarn. Skal støtte flere søknadsbarn i fremtiden.
val grunnlag =
vedtakGrunnlagMapper.byggGrunnlagForBeregning(
this,
this.søknadsbarn.first(),
)
fun Set<BeregnetUnderholdskostnad>.perioderForBarn(person: Person) =
find { bu ->
bu.gjelderBarn.ident?.verdi == person.ident
}?.perioder ?: emptySet()

fun Behandling.tilBeregnetUnderholdskostnad(): Set<BeregnetUnderholdskostnad> =
this.søknadsbarn
.map {
val grunnlag =
vedtakGrunnlagMapper.byggGrunnlagForBeregning(
this,
it,
)

val underholdBeregning = beregnBarnebidragApi.beregnNettoTilsynsutgiftOgUnderholdskostnad(grunnlag)
BeregnetUnderholdskostnad(
it.tilPersoninfoDto(),
underholdBeregning
.finnAlleDelberegningUnderholdskostnad()
.tilUnderholdskostnadDto(underholdBeregning),
)
}.toSet()

private fun Rolle.tilPersoninfoDto(): PersoninfoDto {
val personinfo =
this.ident?.let { vedtakGrunnlagMapper.mapper.personService.hentPerson(it) }

val underholdBeregning = beregnBarnebidragApi.beregnNettoTilsynsutgiftOgUnderholdskostnad(grunnlag)
return underholdBeregning
.finnAlleDelberegningUnderholdskostnad()
.tilUnderholdskostnadDto(underholdBeregning)
return PersoninfoDto(
id = this.id,
ident = ident?.let { Personident(it) } ?: this.ident?.let { Personident(it) },
navn = personinfo?.navn ?: this.navn,
fødselsdato = personinfo?.fødselsdato ?: this.fødselsdato,
kilde = ident?.let { Kilde.OFFENTLIG } ?: Kilde.MANUELL,
medIBehandlingen = ident != null,
)
}

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

0 comments on commit 46fba2d

Please sign in to comment.