Skip to content

Commit

Permalink
Grunnlag barnetilsyn (#612)
Browse files Browse the repository at this point in the history
* Update UnderholdControllerTest.kt

* Innhenting av barnetilsyn

* Justere underholdsperioder etter virkningstidspunkt

* Sette harTilsynsordning til sann når tilsynstabeller oppdateres

* Sette skolealder automatisk for innhenta barnetilsyn. Bevare kilde offentlig for endringer som ikke endrer periode.
  • Loading branch information
s148719 authored Dec 5, 2024
1 parent e202f7e commit afc226e
Show file tree
Hide file tree
Showing 33 changed files with 1,919 additions and 166 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,6 @@ open class Behandling(
val søknadsbarn get() = roller.filter { it.rolletype == Rolletype.BARN }
val bidragsmottaker get() = roller.find { it.rolletype == Rolletype.BIDRAGSMOTTAKER }
val bidragspliktig get() = roller.find { it.rolletype == Rolletype.BIDRAGSPLIKTIG }
val rolleGrunnlagSkalHentesFor get() = if (stonadstype == Stønadstype.FORSKUDD) bidragsmottaker else bidragspliktig

val erVedtakFattet get() = vedtaksid != null
val virkningstidspunktEllerSøktFomDato get() = virkningstidspunkt ?: søktFomDato
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import jakarta.persistence.GeneratedValue
import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.OneToMany
import no.nav.bidrag.domene.ident.Personident
import java.time.LocalDate
import java.time.LocalDateTime

Expand Down Expand Up @@ -34,6 +35,10 @@ open class Person(
)
open val rolle: MutableSet<Rolle> = mutableSetOf(),
) {
val personident get() = ident?.let { Personident(it) } ?: rolle.first().ident?.let { Personident(it) }

val henteFødselsdato get() = fødselsdato ?: rolle.first().fødselsdato

override fun toString(): String =
"Person(id=$id, ident=$ident, navn=$navn, fødselsdato=$fødselsdato, opprettet=$opprettet, roller=$rolle)"
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,10 @@ open class Rolle(
)
open var person: Person? = null,
) {
val personident get() = person?.ident?.let { Personident(it) } ?: this.ident?.let { Personident(it) }

val henteFødselsdato get() = person?.fødselsdato ?: this.fødselsdato

override fun toString(): String =
"Rolle(id=$id, behandling=${behandling.id}, rolletype=$rolletype, ident=$ident, fødselsdato=$fødselsdato, opprettet=$opprettet, navn=$navn, deleted=$deleted, innbetaltBeløp=$innbetaltBeløp)"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat
import com.fasterxml.jackson.annotation.JsonIgnore
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.behandling.database.datamodell.Behandling
import no.nav.bidrag.behandling.dto.v1.behandling.BegrunnelseDto
import no.nav.bidrag.behandling.dto.v1.behandling.RolleDto
import no.nav.bidrag.behandling.dto.v1.behandling.SivilstandDto
Expand All @@ -13,10 +14,12 @@ import no.nav.bidrag.behandling.dto.v2.gebyr.GebyrValideringsfeilDto
import no.nav.bidrag.behandling.dto.v2.inntekt.InntekterDtoV2
import no.nav.bidrag.behandling.dto.v2.inntekt.InntektspostDtoV2
import no.nav.bidrag.behandling.dto.v2.samvær.SamværDto
import no.nav.bidrag.behandling.dto.v2.underhold.StønadTilBarnetilsynDto
import no.nav.bidrag.behandling.dto.v2.underhold.UnderholdDto
import no.nav.bidrag.behandling.dto.v2.utgift.MaksGodkjentBeløpDto
import no.nav.bidrag.behandling.dto.v2.validering.UtgiftValideringsfeilDto
import no.nav.bidrag.behandling.transformers.PeriodeDeserialiserer
import no.nav.bidrag.behandling.transformers.tilType
import no.nav.bidrag.domene.enums.behandling.TypeBehandling
import no.nav.bidrag.domene.enums.beregning.Resultatkode
import no.nav.bidrag.domene.enums.diverse.Kilde
Expand All @@ -40,6 +43,7 @@ import no.nav.bidrag.domene.util.visningsnavn
import no.nav.bidrag.domene.util.visningsnavnIntern
import no.nav.bidrag.organisasjon.dto.SaksbehandlerDto
import no.nav.bidrag.transport.behandling.grunnlag.response.ArbeidsforholdGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.BarnetilsynGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.SivilstandGrunnlagDto
import java.math.BigDecimal
import java.time.LocalDate
Expand Down Expand Up @@ -246,6 +250,7 @@ data class AktiveGrunnlagsdata(
val husstandsmedlem: Set<HusstandsmedlemGrunnlagDto>,
val andreVoksneIHusstanden: AndreVoksneIHusstandenGrunnlagDto? = null,
val sivilstand: SivilstandAktivGrunnlagDto? = null,
val stønadTilBarnetilsyn: StønadTilBarnetilsynAktiveGrunnlagDto? = null,
) {
@Deprecated("Erstattes av husstandsmedlem")
@Schema(description = "Erstattes av husstandsmedlem", deprecated = true)
Expand All @@ -258,6 +263,7 @@ data class IkkeAktiveGrunnlagsdata(
val arbeidsforhold: Set<ArbeidsforholdGrunnlagDto> = emptySet(),
val andreVoksneIHusstanden: AndreVoksneIHusstandenGrunnlagDto? = null,
val sivilstand: SivilstandIkkeAktivGrunnlagDto? = null,
val stønadTilBarnetilsyn: StønadTilBarnetilsynIkkeAktiveGrunnlagDto? = null,
) {
@Deprecated("Erstattes av husstandsmedlem")
@Schema(description = "Erstattes av husstandsmedlem", deprecated = true)
Expand Down Expand Up @@ -335,6 +341,17 @@ data class SivilstandIkkeAktivGrunnlagDto(
val innhentetTidspunkt: LocalDateTime = LocalDateTime.now(),
)

data class StønadTilBarnetilsynAktiveGrunnlagDto(
val grunnlag: Map<Personident, Set<BarnetilsynGrunnlagDto>> = emptyMap(),
val innhentetTidspunkt: LocalDateTime = LocalDateTime.now(),
)

data class StønadTilBarnetilsynIkkeAktiveGrunnlagDto(
val stønadTilBarnetilsyn: Map<Personident, Set<StønadTilBarnetilsynDto>> = emptyMap(),
val grunnlag: Map<Personident, Set<BarnetilsynGrunnlagDto>> = emptyMap(),
val innhentetTidspunkt: LocalDateTime = LocalDateTime.now(),
)

data class HusstandsmedlemGrunnlagDto(
val perioder: Set<BostatusperiodeGrunnlagDto>,
val ident: String? = null,
Expand Down Expand Up @@ -386,7 +403,7 @@ data class AndreVoksneIHusstandenDetaljerDto(

@Schema(enumAsRef = true, name = "OpplysningerType")
enum class Grunnlagsdatatype(
val behandlinstypeMotRolletyper: Map<TypeBehandling, Set<Rolletype>> = emptyMap(),
val behandlingstypeMotRolletyper: Map<TypeBehandling, Set<Rolletype>> = emptyMap(),
val erGjeldende: Boolean = true,
) {
ARBEIDSFORHOLD(
Expand Down Expand Up @@ -496,11 +513,11 @@ enum class Grunnlagsdatatype(
when (rolletype != null) {
true ->
entries
.filter { it.behandlinstypeMotRolletyper.keys.contains(behandlingstype) }
.filter { it.behandlinstypeMotRolletyper.values.any { roller -> roller.contains(rolletype) } }
.filter { it.behandlingstypeMotRolletyper.keys.contains(behandlingstype) }
.filter { it.behandlingstypeMotRolletyper.values.any { roller -> roller.contains(rolletype) } }
.toSet()

false -> entries.filter { it.behandlinstypeMotRolletyper.keys.contains(behandlingstype) }.toSet()
false -> entries.filter { it.behandlingstypeMotRolletyper.keys.contains(behandlingstype) }.toSet()
}

fun gjeldende() = Grunnlagsdatatype.entries.filter { it.erGjeldende }
Expand All @@ -526,3 +543,19 @@ fun Grunnlagsdatatype.tilInntektrapporteringYtelse() =
Grunnlagsdatatype.KONTANTSTØTTE -> Inntektsrapportering.KONTANTSTØTTE
else -> null
}

fun Grunnlagsdatatype.innhentesForRolle(behandling: Behandling) =
when (this) {
Grunnlagsdatatype.BARNETILSYN, Grunnlagsdatatype.BOFORHOLD, Grunnlagsdatatype.BOFORHOLD_ANDRE_VOKSNE_I_HUSSTANDEN -> {
val t = this.behandlingstypeMotRolletyper[behandling.tilType()]
t?.let {
when (it.first()) {
Rolletype.BIDRAGSMOTTAKER -> behandling.bidragsmottaker
Rolletype.BIDRAGSPLIKTIG -> behandling.bidragspliktig
else -> null
}
}
}

else -> null
}
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,8 @@ data class FaktiskTilsynsutgiftDto(
data class StønadTilBarnetilsynDto(
val id: Long? = null,
val periode: DatoperiodeDto,
val skolealder: Skolealder,
val tilsynstype: Tilsynstype,
val skolealder: Skolealder? = null,
val tilsynstype: Tilsynstype? = null,
val kilde: Kilde = Kilde.MANUELL,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,11 @@ class BehandlingService(
) {
val erVirkningstidspunktEndret = request.virkningstidspunkt != behandling.virkningstidspunkt

fun oppdatereUnderhold() {
log.info { "Tilpasse perioder for underhold til ny virkningsdato i behandling ${behandling.id}" }
underholdService.tilpasseUnderholdEtterVirkningsdato(behandling)
}

fun oppdaterBoforhold() {
log.info { "Virkningstidspunkt er endret. Beregner husstandsmedlemsperioder på ny for behandling ${behandling.id}" }
grunnlagService.oppdaterAktiveBoforholdEtterEndretVirkningstidspunkt(behandling)
Expand Down Expand Up @@ -353,8 +358,8 @@ class BehandlingService(
oppdaterBoforhold()
oppdaterAndreVoksneIHusstanden()
oppdaterInntekter()
oppdatereUnderhold()
oppdaterSamvær()
// TODO Underholdskostnad
}
}
}
Expand Down Expand Up @@ -482,7 +487,7 @@ class BehandlingService(
oppdatereHusstandsmedlemmerForRoller(behandling, rollerSomLeggesTil)
oppdatereSamværForRoller(behandling, rollerSomLeggesTil)

// TODO oppdater underholdskostnader ( legge til når ny barn legges til )
// TODO: Underholdskostnad versjon 3: Opprette underholdskostnad for nytt søknadsbarn

behandlingRepository.save(behandling)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import no.nav.bidrag.behandling.dto.v1.behandling.BoforholdValideringsfeil
import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagsdatatype
import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagstype
import no.nav.bidrag.behandling.dto.v2.behandling.OppdatereBegrunnelse
import no.nav.bidrag.behandling.dto.v2.behandling.innhentesForRolle
import no.nav.bidrag.behandling.dto.v2.boforhold.OppdatereAndreVoksneIHusstanden
import no.nav.bidrag.behandling.dto.v2.boforhold.OppdatereBoforholdResponse
import no.nav.bidrag.behandling.dto.v2.boforhold.OppdatereHusstandsmedlem
Expand Down Expand Up @@ -107,7 +108,7 @@ class BoforholdService(
behandling = behandling,
notattype = Notattype.BOFORHOLD,
notattekst = request.henteNyttNotat() ?: "",
rolle = behandling.rolleGrunnlagSkalHentesFor!!,
rolle = Grunnlagsdatatype.BOFORHOLD.innhentesForRolle(behandling)!!,
)

return OppdatereBoforholdResponse(
Expand Down Expand Up @@ -1187,7 +1188,7 @@ class BoforholdService(
data = tilJson(boforholdrespons),
innhentet = LocalDateTime.now(),
aktiv = LocalDateTime.now(),
rolle = behandling.rolleGrunnlagSkalHentesFor!!,
rolle = Grunnlagsdatatype.BOFORHOLD.innhentesForRolle(behandling)!!,
gjelder = personidentBarn.verdi,
),
)
Expand Down
Loading

0 comments on commit afc226e

Please sign in to comment.