Skip to content

Commit

Permalink
Støtte for fatte vedtak og lesemodus (#599)
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 authored Nov 22, 2024
1 parent 7ec5081 commit 2fc26d4
Show file tree
Hide file tree
Showing 51 changed files with 5,076 additions and 2,353 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
<properties>
<java.version>21</java.version>
<kotlin.version>2.0.21</kotlin.version>
<bidrag-felles.version>2024.11.19.144735</bidrag-felles.version>
<bidrag-beregn-felles.version>2024.11.20.083200</bidrag-beregn-felles.version>
<bidrag-felles.version>2024.11.21.153205</bidrag-felles.version>
<bidrag-beregn-felles.version>2024.11.21.100414</bidrag-beregn-felles.version>
<h2.version>2.3.232</h2.version>
<logback-encoder.version>8.0</logback-encoder.version>
<token-support.version>3.2.0</token-support.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import no.nav.bidrag.domene.enums.samværskalkulator.SamværskalkulatorFerietype
import no.nav.bidrag.domene.enums.samværskalkulator.SamværskalkulatorNetterFrekvens
import no.nav.bidrag.domene.enums.særbidrag.Særbidragskategori
import no.nav.bidrag.domene.enums.særbidrag.Utgiftstype
import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype
import no.nav.bidrag.domene.enums.vedtak.Vedtakstype
import no.nav.bidrag.domene.enums.vedtak.VirkningstidspunktÅrsakstype
import no.nav.bidrag.domene.util.visningsnavn
Expand All @@ -31,5 +32,6 @@ class VisningsnavnController {
Samværsklasse.entries.associate { it.name to it.visningsnavn.intern } +
SamværskalkulatorFerietype.entries.associate { it.name to it.visningsnavn.intern } +
SamværskalkulatorNetterFrekvens.entries.associate { it.name to it.visningsnavn.intern } +
Engangsbeløptype.entries.associate { it.name to it.visningsnavn.intern } +
Utgiftstype.entries.associate { it.name to it.visningsnavn.intern }
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import java.time.LocalDate
open class Barnetilsyn(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
open val id: Long? = null,
open var id: Long? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "underholdskostnad_id", nullable = false)
open val underholdskostnad: Underholdskostnad,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import java.time.LocalDate
open class FaktiskTilsynsutgift(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
open val id: Long? = null,
open var id: Long? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "underholdskostnad_id", nullable = false)
open val underholdskostnad: Underholdskostnad,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import java.time.LocalDate
class Tilleggsstønad(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
open val id: Long? = null,
open var id: Long? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "underholdskostnad_id", nullable = false)
open var underholdskostnad: Underholdskostnad,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ open class Underholdskostnad(
nullable = false,
)
open val behandling: Behandling,
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "person_id", nullable = false)
@ManyToOne(
fetch = FetchType.LAZY,
cascade = [CascadeType.PERSIST],
)
@JoinColumn(name = "person_id", nullable = false)
open val person: Person,
open var harTilsynsordning: Boolean? = null,
@OneToMany(
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.nav.bidrag.behandling.database.repository

import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad
import org.springframework.data.repository.CrudRepository

interface UnderholdskostnadRepository : CrudRepository<Underholdskostnad, Long>
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragspli
import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningUnderholdskostnad
import no.nav.bidrag.transport.behandling.felles.grunnlag.SluttberegningBarnebidrag
import java.math.BigDecimal
import java.math.RoundingMode

data class ResultatBidragsberegningBarn(
val barn: ResultatRolle,
val resultat: BeregnetBarnebidragResultat,
val avslaskode: Resultatkode? = null,
)

data class ResultatBidragberegningDto(
Expand All @@ -32,13 +32,13 @@ data class ResultatBarnebidragsberegningPeriodeDto(
val samværsfradrag: BigDecimal,
val beregnetBidrag: BigDecimal,
val faktiskBidrag: BigDecimal,
val resultatKode: Resultatkode,
val resultatKode: Resultatkode?,
val erDirekteAvslag: Boolean = false,
val beregningsdetaljer: BidragPeriodeBeregningsdetaljer? = null,
) {
@Suppress("unused")
val resultatkodeVisningsnavn get() =
if (resultatKode.erDirekteAvslag()) {
if (resultatKode?.erDirekteAvslag() == true) {
resultatKode.visningsnavnIntern()
} else {
beregningsdetaljer
Expand All @@ -52,6 +52,8 @@ data class BidragPeriodeBeregningsdetaljer(
val bpHarEvne: Boolean,
val antallBarnIHusstanden: Double? = null,
val forskuddssats: BigDecimal,
val barnetilleggBM: DelberegningBarnetilleggDto,
val barnetilleggBP: DelberegningBarnetilleggDto,
val voksenIHusstanden: Boolean? = null,
val enesteVoksenIHusstandenErEgetBarn: Boolean? = null,
val bpsAndel: DelberegningBidragspliktigesAndel? = null,
Expand All @@ -68,36 +70,5 @@ data class BidragPeriodeBeregningsdetaljer(
val gjennomsnittligSamværPerMåned: BigDecimal,
)

val underholdskostnadMinusBMsNettoBarnetillegg get() =
maxOf(
delberegningUnderholdskostnad!!.underholdskostnad - sluttberegning!!.nettoBarnetilleggBM,
BigDecimal.ZERO,
)
val beløpEtterVurderingAv25ProsentInntektOgEvne get(): BigDecimal {
if (sluttberegning!!.justertNedTil25ProsentAvInntekt) return delberegningBidragsevne?.sumInntekt25Prosent ?: BigDecimal.ZERO
if (sluttberegning.justertNedTilEvne) return delberegningBidragsevne?.bidragsevne ?: BigDecimal.ZERO
return bpsAndel?.andelBeløp ?: BigDecimal.ZERO
}
val beløpEtterVurderingAvBMsBarnetillegg get(): BigDecimal {
if (sluttberegning!!.justertForNettoBarnetilleggBM) return underholdskostnadMinusBMsNettoBarnetillegg
return beløpEtterVurderingAv25ProsentInntektOgEvne
}
val beløpSamværsfradragTrekkesFra get(): BigDecimal {
if (sluttberegning!!.justertForNettoBarnetilleggBP) return sluttberegning.nettoBarnetilleggBP
return beløpEtterVurderingAvBMsBarnetillegg
}

val beløpEtterFratrekkDeltBosted get() =
if (deltBosted) {
bpsAndel!!.andelBeløp -
delberegningUnderholdskostnad!!.underholdskostnad.divide(BigDecimal(2), RoundingMode.HALF_UP)
} else {
bpsAndel!!.andelBeløp
}

val deltBosted get() =
listOf(
Resultatkode.DELT_BOSTED,
Resultatkode.BIDRAG_IKKE_BEREGNET_DELT_BOSTED,
).contains(sluttberegning!!.resultatKode)
val deltBosted get() = sluttberegning!!.resultat == SluttberegningBarnebidrag::bidragJustertForDeltBosted.name
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,18 @@ data class DelberegningBidragspliktigesBeregnedeTotalbidragDto(
)
}

data class DelberegningBarnetilleggDto(
val barnetillegg: List<BarnetilleggDetaljerDto> = emptyList(),
val skattFaktor: BigDecimal = BigDecimal.ZERO,
val nettoBeløp: BigDecimal = BigDecimal.ZERO,
) {
data class BarnetilleggDetaljerDto(
val bruttoBeløp: BigDecimal,
val nettoBeløp: BigDecimal,
val visningsnavn: String,
)
}

data class DelberegningBidragsevneDto(
val sumInntekt25Prosent: BigDecimal,
val bidragsevne: BigDecimal,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class BehandlingService(
private val tilgangskontrollService: TilgangskontrollService,
private val grunnlagService: GrunnlagService,
private val inntektService: InntektService,
private val samværService: SamværService,
private val mapper: Dtomapper,
private val validerBehandlingService: ValiderBehandlingService,
private val underholdService: UnderholdService,
Expand Down Expand Up @@ -291,6 +292,11 @@ class BehandlingService(
grunnlagService.aktivereSivilstandHvisEndringIkkeKreverGodkjenning(behandling)
}

fun oppdaterSamvær() {
log.info { "Virkningstidspunkt er endret. Oppdaterer perioder på samvær for behandling ${behandling.id}" }
samværService.rekalkulerPerioderSamvær(behandling.id!!)
}

fun oppdaterInntekter() {
log.info { "Virkningstidspunkt er endret. Oppdaterer perioder på inntekter for behandling ${behandling.id}" }
inntektService.rekalkulerPerioderInntekter(behandling.id!!)
Expand Down Expand Up @@ -324,8 +330,8 @@ class BehandlingService(
oppdaterBoforhold()
oppdaterAndreVoksneIHusstanden()
oppdaterInntekter()
oppdaterSamvær()
// TODO Underholdskostnad
// TODO Samvær
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ class BeregningService(
private fun Behandling.tilResultatAvslagBidrag(barn: Rolle) =
ResultatBidragsberegningBarn(
barn = barn.mapTilResultatBarn(),
avslaskode = avslag,
resultat =
BeregnetBarnebidragResultat(
beregnetBarnebidragPeriodeListe =
Expand All @@ -166,8 +167,7 @@ class BeregningService(
periode = ÅrMånedsperiode(virkningstidspunkt!!, null),
resultat =
ResultatBeregningBidrag(
beløp = BigDecimal.ZERO, // TODO null eller 0?
kode = avslag!!,
beløp = BigDecimal.ZERO,
),
),
),
Expand Down
24 changes: 21 additions & 3 deletions src/main/kotlin/no/nav/bidrag/behandling/service/SamværService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.bidrag.behandling.service
import io.github.oshai.kotlinlogging.KotlinLogging
import no.nav.bidrag.behandling.database.datamodell.Samvær
import no.nav.bidrag.behandling.database.datamodell.Samværsperiode
import no.nav.bidrag.behandling.database.repository.BehandlingRepository
import no.nav.bidrag.behandling.database.repository.SamværRepository
import no.nav.bidrag.behandling.dto.v2.samvær.OppdaterSamværDto
import no.nav.bidrag.behandling.dto.v2.samvær.OppdaterSamværResponsDto
Expand All @@ -28,15 +29,15 @@ private val log = KotlinLogging.logger {}
@Import(BeregnSamværsklasseApi::class)
class SamværService(
private val samværRepository: SamværRepository,
private val behandlingService: BehandlingService,
private val behandlingRepository: BehandlingRepository,
private val notatService: NotatService,
private val beregnSamværsklasseApi: BeregnSamværsklasseApi,
) {
fun oppdaterSamvær(
behandlingsid: Long,
request: OppdaterSamværDto,
): OppdaterSamværResponsDto {
val behandling = behandlingService.hentBehandlingById(behandlingsid)
val behandling = behandlingRepository.findBehandlingById(behandlingsid).get()
request.valider()
log.info { "Oppdaterer samvær for behandling $behandlingsid" }
secureLogger.info { "Oppdaterer samvær for behandling $behandlingsid, forespørsel=$request" }
Expand Down Expand Up @@ -94,7 +95,7 @@ class SamværService(
behandlingsid: Long,
request: SletteSamværsperiodeElementDto,
): OppdaterSamværResponsDto {
val behandling = behandlingService.hentBehandlingById(behandlingsid)
val behandling = behandlingRepository.findBehandlingById(behandlingsid).get()
log.info { "Sletter samværsperiode $request for behandling $behandlingsid" }
val oppdaterSamvær =
behandling.samvær.finnSamværForBarn(request.gjelderBarn)
Expand All @@ -118,4 +119,21 @@ class SamværService(
private fun Samvær.hentPeriode(id: Long) =
perioder.find { it.id == id }
?: ugyldigForespørsel("Fant ikke samværsperiode med id $id i samvær $id")

fun rekalkulerPerioderSamvær(behandlingsid: Long) {
val behandling = behandlingRepository.findBehandlingById(behandlingsid).get()
val virkningstidspunkt = behandling.virkningstidspunkt ?: return

behandling.samvær.forEach {
it.perioder
.filter { it.fom < virkningstidspunkt }
.forEach { periode ->
if (periode.tom != null && virkningstidspunkt >= periode.tom) {
it.perioder.remove(periode)
} else {
periode.fom = virkningstidspunkt
}
}
}
}
}
Loading

0 comments on commit 2fc26d4

Please sign in to comment.