Skip to content

Commit

Permalink
Refaktorering av innhentet grunnlagsstruktur (#68)
Browse files Browse the repository at this point in the history
* Refaktorering av innhentet grunnlagsstruktur

* Refaktorering av innhentet grunnlagsstruktur
  • Loading branch information
ugur93 authored Feb 19, 2024
1 parent c5f8025 commit e2d9ce5
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ enum class Grunnlagstype {
// Inntekt som er beregnet av bidrag-inntekt
BEREGNET_INNTEKT,

INNHENTET_HUSSTANDSMEDLEM_PERIODE,
INNHENTET_SIVILSTAND_PERIODE,
INNHENTET_ARBEIDSFORHOLD_PERIODE,
INNHENTET_HUSSTANDSMEDLEM,
INNHENTET_SIVILSTAND,
INNHENTET_ARBEIDSFORHOLD,
INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE,
INNHENTET_INNTEKT_AORDNING_PERIODE,
INNHENTET_INNTEKT_BARNETILLEGG_PERIODE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,16 @@ interface GrunnlagPeriodeInnhold : GrunnlagInnhold {
val manueltRegistrert: Boolean
}

interface InnhentetGrunnlagPeriodeInnhold : GrunnlagInnhold {
val periode: Datoperiode
}

interface InnhentetGrunnlagInnhold<out T> : InnhentetGrunnlagPeriodeInnhold {
interface InnhentetGrunnlagInnhold<out T> : GrunnlagInnhold {
@get:Schema(description = "Tidspunkt data hentet fra kilden")
val hentetTidspunkt: LocalDateTime
val grunnlag: T
}

interface InnhentetGrunnlagPeriodeInnhold<out T> : InnhentetGrunnlagInnhold<T> {
val periode: Datoperiode
}

@Schema(description = "Informasjon om en person som er inkludert i vedtaket")
data class Person(
val ident: Personident? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ inline fun <reified T : GrunnlagInnhold> BaseGrunnlag.innholdTilObjekt(): T {

inline fun <reified T : GrunnlagInnhold> List<BaseGrunnlag>.innholdTilObjekt(): List<T> = map(BaseGrunnlag::innholdTilObjekt)

fun List<BaseGrunnlag>.hentAllePersoner(): List<BaseGrunnlag> = filter { it.type.name.startsWith("PERSON_") }
fun List<BaseGrunnlag>.hentAllePersoner(): List<BaseGrunnlag> = filter { it.erPerson() }

fun BaseGrunnlag.erPerson(): Boolean = type.name.startsWith("PERSON_")

fun List<BaseGrunnlag>.filtrerBasertPåFremmedReferanse(
grunnlagType: Grunnlagstype? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,20 @@ package no.nav.bidrag.transport.behandling.felles.grunnlag
import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import no.nav.bidrag.transport.behandling.grunnlag.response.AinntektGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.ArbeidsforholdGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.BarnetilleggGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.BarnetilsynGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.BorISammeHusstandDto
import no.nav.bidrag.transport.behandling.grunnlag.response.KontantstøtteGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.RelatertPersonGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.SivilstandGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.SkattegrunnlagGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.SmåbarnstilleggGrunnlagDto
import no.nav.bidrag.transport.behandling.grunnlag.response.UtvidetBarnetrygdGrunnlagDto
import no.nav.bidrag.transport.felles.toCompactString
import java.time.LocalDate

fun Grunnlagstype.tilPersonreferanse(
dseldato: String,
identifikator: String,
id: Int,
) = "person_${this}_${fødseldato}_$id"

fun RelatertPersonGrunnlagDto.tilGrunnlagsreferanse(index: Int) =
Grunnlagstype.PERSON_HUSSTANDSMEDLEM.tilPersonreferanse(
fødselsdato?.toCompactString() ?: LocalDate.MIN.toCompactString(),
index,
)

fun SivilstandGrunnlagDto.tilGrunnlagsreferanse(
referanseGjelder: Grunnlagsreferanse,
index: Int,
) = "innhentet_sivilstand_${referanseGjelder}_${type}_${gyldigFom.toCompactString()}_$index"

fun BorISammeHusstandDto.tilGrunnlagsreferanse(
referanseGjelder: Grunnlagsreferanse,
referanseRelatertTil: Grunnlagsreferanse,
) = "innhentet_husstandsmedlem_${referanseGjelder}_${referanseRelatertTil}_${periodeFra.toCompactString()}"

fun ArbeidsforholdGrunnlagDto.tilGrunnlagsreferanse(referanseGjelder: Grunnlagsreferanse) =
"innhentet_arbeidsforhold_${referanseGjelder}_${arbeidsgiverOrgnummer}_${startdato.toCompactString()}"
) = "person_${this}_${identifikator}_$id"

// Bidrag-grunnlag objekter til referanse
fun SmåbarnstilleggGrunnlagDto.tilGrunnlagsreferanse(referanseGjelder: Grunnlagsreferanse) =
"innhentet_småbarnstillegg_${referanseGjelder}_${periodeFra.toCompactString()}"

Expand Down Expand Up @@ -68,6 +45,16 @@ fun SkattegrunnlagGrunnlagDto.tilGrunnlagsreferanse(referanseGjelder: Grunnlagsr
fun AinntektGrunnlagDto.tilGrunnlagsreferanse(referanseGjelder: Grunnlagsreferanse) =
"innhentet_ainntekt_${referanseGjelder}_${periodeFra.toCompactString()}"

fun opprettInnhentetHusstandsmedlemGrunnlagsreferanse(
referanseGjelder: Grunnlagsreferanse,
referanseRelatertTil: Grunnlagsreferanse,
) = "innhentet_husstandsmedlem_${referanseGjelder}_$referanseRelatertTil"

fun opprettArbeidsforholdGrunnlagsreferanse(referanseGjelder: Grunnlagsreferanse) = "innhentet_arbeidsforhold_$referanseGjelder"

fun opprettInnhentetSivilstandGrunnlagsreferanse(referanseGjelder: Grunnlagsreferanse) = "innhentet_sivilstand_$referanseGjelder"

// Beregning
fun opprettSluttberegningreferanse(
barnreferanse: Grunnlagsreferanse,
periode: ÅrMånedsperiode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,30 @@ import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.domene.enums.person.Bostatuskode
import no.nav.bidrag.domene.tid.Datoperiode
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import java.time.LocalDate
import java.time.LocalDateTime

data class InnhentetHusstandsmedlem(
override val periode: Datoperiode,
override val grunnlag: HusstandsmedlemPDL,
override val hentetTidspunkt: LocalDateTime,
) : InnhentetGrunnlagInnhold<InnhentetHusstandsmedlem.HusstandsmedlemPDL> {
data class HusstandsmedlemPDL(
@Schema(description = "Referanse til person som er husstandsmedlem")
val relatertPerson: Grunnlagsreferanse?,
val erBarnAvBmBp: Boolean,
@Schema(description = "Navn på den relaterte personen, format <Fornavn, mellomnavn, Etternavn")
val navn: String? = null,
@Schema(description = "Den relaterte personens fødselsdato")
valdselsdato: LocalDate? = null,
val perioder: List<Datoperiode>,
)
}

@Schema(description = "Bostatus for person")
data class BostatusPeriode(
override val periode: ÅrMånedsperiode,
val bostatus: Bostatuskode,
@Schema(description = "Referanse til BM eller BP som bosstatus for personen som gjelder")
val relatertTilPart: Grunnlagsreferanse,
override val manueltRegistrert: Boolean,
) : GrunnlagPeriodeInnhold
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,9 @@ import java.time.LocalDateTime
import java.time.YearMonth

data class InnhentetArbeidsforhold(
override val periode: Datoperiode,
override val grunnlag: Arbeidsforhold,
override val grunnlag: List<Arbeidsforhold>,
override val hentetTidspunkt: LocalDateTime,
) : InnhentetGrunnlagInnhold<InnhentetArbeidsforhold.Arbeidsforhold> {
) : InnhentetGrunnlagInnhold<List<InnhentetArbeidsforhold.Arbeidsforhold>> {
data class Arbeidsforhold(
@Schema(description = "Startdato for arbeidsforholdet")
val startdato: LocalDate?,
Expand Down Expand Up @@ -74,7 +73,7 @@ data class InnhentetSkattegrunnlag(
val år: Int = periode.fom.year,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: Skattegrunnlag,
) : InnhentetGrunnlagInnhold<InnhentetSkattegrunnlag.Skattegrunnlag> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetSkattegrunnlag.Skattegrunnlag> {
data class Skattegrunnlag(
val skattegrunnlagListe: List<Skattegrunnlagspost>,
)
Expand All @@ -97,7 +96,7 @@ data class InnhentetBarnetillegg(
override val periode: Datoperiode,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: Barnetillegg,
) : InnhentetGrunnlagInnhold<InnhentetBarnetillegg.Barnetillegg> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetBarnetillegg.Barnetillegg> {
data class Barnetillegg(
@Schema(description = "Referansen barnet barnetillegget er rapportert for")
val gjelderBarn: Grunnlagsreferanse,
Expand All @@ -113,7 +112,7 @@ data class InnhentetAinntekt(
override val periode: Datoperiode,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: AinntektInnhentet,
) : InnhentetGrunnlagInnhold<InnhentetAinntekt.AinntektInnhentet> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetAinntekt.AinntektInnhentet> {
data class AinntektInnhentet(
val ainntektspostListe: List<Ainntektspost>,
)
Expand All @@ -136,7 +135,7 @@ data class InnhentetUtvidetBarnetrygd(
override val periode: Datoperiode,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: UtvidetBarnetrygd,
) : InnhentetGrunnlagInnhold<InnhentetUtvidetBarnetrygd.UtvidetBarnetrygd> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetUtvidetBarnetrygd.UtvidetBarnetrygd> {
data class UtvidetBarnetrygd(
@Schema(description = "Beløp")
val beløp: BigDecimal,
Expand All @@ -149,7 +148,7 @@ data class InnhentetSmåbarnstillegg(
override val periode: Datoperiode,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: Småbarnstillegg,
) : InnhentetGrunnlagInnhold<InnhentetSmåbarnstillegg.Småbarnstillegg> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetSmåbarnstillegg.Småbarnstillegg> {
data class Småbarnstillegg(
@Schema(description = "Beløp")
val beløp: BigDecimal,
Expand All @@ -162,7 +161,7 @@ data class InnhentetBarnetilsyn(
override val periode: Datoperiode,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: Barnetilsyn,
) : InnhentetGrunnlagInnhold<InnhentetBarnetilsyn.Barnetilsyn> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetBarnetilsyn.Barnetilsyn> {
data class Barnetilsyn(
val gjelderBarn: Grunnlagsreferanse,
val beløp: Int?,
Expand All @@ -175,7 +174,7 @@ data class InnhentetKontantstøtte(
override val periode: Datoperiode,
override val hentetTidspunkt: LocalDateTime,
override val grunnlag: Kontantstøtte,
) : InnhentetGrunnlagInnhold<InnhentetKontantstøtte.Kontantstøtte> {
) : InnhentetGrunnlagPeriodeInnhold<InnhentetKontantstøtte.Kontantstøtte> {
data class Kontantstøtte(
val gjelderBarn: Grunnlagsreferanse,
val beløp: Int,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,16 @@ package no.nav.bidrag.transport.behandling.felles.grunnlag
import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.domene.enums.person.Sivilstandskode
import no.nav.bidrag.domene.enums.person.SivilstandskodePDL
import no.nav.bidrag.domene.tid.Datoperiode
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import java.time.LocalDate
import java.time.LocalDateTime

data class InnhentetSivilstand(
override val periode: Datoperiode,
override val grunnlag: SivilstandPDL,
override val grunnlag: List<SivilstandPDL>,
override val hentetTidspunkt: LocalDateTime,
) : InnhentetGrunnlagInnhold<InnhentetSivilstand.SivilstandPDL> {
) : InnhentetGrunnlagInnhold<List<InnhentetSivilstand.SivilstandPDL>> {
data class SivilstandPDL(
val gyldigFom: LocalDate?,
@Schema(description = "Type sivilstand fra PDL")
val sivilstand: SivilstandskodePDL?,
@Schema(description = "Dato NAV tidligst har fått bekreftet sivilstanden")
Expand All @@ -22,6 +21,8 @@ data class InnhentetSivilstand(
val master: String?,
@Schema(description = "Angir om sivilstanden er historisk (true) eller aktiv (false)")
val historisk: Boolean?,
@Schema(description = "Tidspunktet sivilstanden er registrert")
val registrert: LocalDateTime?,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ class BeregninFellesTest {
periode = ÅrMånedsperiode(LocalDate.parse("2020-01-01"), null),
manueltRegistrert = false,
bostatus = Bostatuskode.MED_FORELDER,
relatertTilPart = "person_bm_2",
),
),
),
Expand Down

0 comments on commit e2d9ce5

Please sign in to comment.