Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Oppdatere beregn forskudd api #82

Merged
merged 16 commits into from
Nov 24, 2023
Merged
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>1.9.20</kotlin.version>
<bidrag-commons.version>20231103132440_edabbf8</bidrag-commons.version>
<bidrag-transport.version>20231106083046_e69b4f4</bidrag-transport.version>
<bidrag-commons.version>20231114143627_14d61cd</bidrag-commons.version>
<bidrag-transport.version>20231123151257_652ccbb</bidrag-transport.version>
<logback-encoder.version>7.4</logback-encoder.version>
<token-support.version>3.1.8</token-support.version>
<springdoc.version>2.2.0</springdoc.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import no.nav.bidrag.behandling.transformers.toCompactString
import no.nav.bidrag.behandling.transformers.toNoString
import no.nav.bidrag.beregn.felles.enums.BostatusKode
import no.nav.bidrag.beregn.felles.enums.SivilstandKode
import no.nav.bidrag.domene.enums.Grunnlagstype
import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag
import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag
Expand All @@ -28,22 +28,21 @@ import java.time.LocalDate

@Service
class ForskuddBeregning {
private fun prepareSoknadsBarn(
fun lagePersonobjektForSøknadsbarn(
soknadBarn: Rolle,
fDato: String,
): List<Grunnlag> =
listOf(
Grunnlag(
navn = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id,
type = Grunnlagstype.SOKNADSBARN_INFO,
innhold =
POJONode(
SoknadsBarnNode(
soknadsbarnId = soknadBarn.id!!.toInt(),
fodselsdato = fDato,
),
fødselsdato: String,
): Grunnlag =
Grunnlag(
referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id,
type = Grunnlagstype.PERSON,
innhold =
POJONode(
SoknadsBarnNode(
ident = soknadBarn.ident ?: "",
navn = soknadBarn.navn ?: "",
fødselsdato = fødselsdato,
),
),
),
)

// TODO BostatusKode
Expand All @@ -57,14 +56,13 @@ class ForskuddBeregning {

private fun prepareBostatus(
husstandsBarnPerioder: List<HusstandsBarnPeriodeModel>,
soknadsBarnIdent: String,
soknadBarn: Rolle,
søknadsbarn: Grunnlag,
): List<Grunnlag> =
husstandsBarnPerioder
.filter { soknadsBarnIdent == it.ident }
.filter { søknadsbarn.referanse == it.referanseTilBarn }
.map {
Grunnlag(
navn = "Mottatt_Bostatus_" + it.datoFom.toCompactString(),
referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(),
type = Grunnlagstype.BOSTATUS,
innhold =
POJONode(
Expand All @@ -82,7 +80,7 @@ class ForskuddBeregning {
splitPeriods(behandlingBeregningModel.husstandsBarnPerioder)
.map {
Grunnlag(
navn = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""),
referanse = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""),
type = Grunnlagstype.BARN_I_HUSSTAND,
innhold = POJONode(it),
)
Expand All @@ -96,7 +94,7 @@ class ForskuddBeregning {
inntekter
.map {
Grunnlag(
navn = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}",
referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}",
type = Grunnlagstype.INNTEKT,
innhold =
POJONode(
Expand All @@ -113,7 +111,7 @@ class ForskuddBeregning {
barnetillegg
.map {
Grunnlag(
navn = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(),
referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(),
type = Grunnlagstype.INNTEKT,
innhold =
POJONode(
Expand All @@ -130,7 +128,7 @@ class ForskuddBeregning {
utvidetbarnetrygd
.map {
Grunnlag(
navn = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(),
referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(),
type = Grunnlagstype.INNTEKT,
innhold =
POJONode(
Expand All @@ -156,7 +154,7 @@ class ForskuddBeregning {
private fun prepareSivilstand(sivilstand: List<SivilstandModel>): List<Grunnlag> =
sivilstand.map {
Grunnlag(
navn = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(),
referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(),
type = Grunnlagstype.SIVILSTAND,
innhold =
POJONode(
Expand Down Expand Up @@ -233,15 +231,15 @@ class ForskuddBeregning {

fun toPayload(
b: BehandlingBeregningModel,
soknadsBarn: Rolle,
fDato: String,
søknadsbarn: Grunnlag,
): BeregnGrunnlag =
BeregnGrunnlag(
periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom),
søknadsbarnReferanse = søknadsbarn.referanse,
grunnlagListe =
prepareSoknadsBarn(soknadsBarn, fDato) +
listOf(søknadsbarn) +
prepareBarnIHusstand(b) +
prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) +
prepareBostatus(b.husstandsBarnPerioder, søknadsbarn) +
prepareInntekterForBeregning(
b.inntekter,
b.barnetillegg,
Expand Down Expand Up @@ -275,8 +273,9 @@ data class BostatusNode(
)

data class SoknadsBarnNode(
val soknadsbarnId: Int,
val fodselsdato: String,
val ident: String,
val navn: String,
val fødselsdato: String,
)

data class InntektNode(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import no.nav.bidrag.behandling.database.datamodell.Sivilstand
import no.nav.bidrag.behandling.database.datamodell.SivilstandType
import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd
import no.nav.bidrag.behandling.transformers.toLocalDate
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.rolle.Rolletype
import java.math.BigDecimal
import java.time.LocalDate
import java.util.Date
Expand Down Expand Up @@ -121,7 +121,7 @@ data class BehandlingBeregningModel private constructor(
it.datoFom?.toLocalDate()
?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"),
datoTom = it.datoTom?.toLocalDate(),
ident = it.husstandsBarn.ident,
referanseTilBarn = it.husstandsBarn.ident,
boStatus = it.boStatus,
)
}
Expand All @@ -145,7 +145,7 @@ data class BehandlingBeregningModel private constructor(
data class HusstandsBarnPeriodeModel(
val datoFom: LocalDate,
val datoTom: LocalDate? = null,
val ident: String?,
val referanseTilBarn: String?,
val boStatus: BoStatusType?,
// TODO ENDRE til bostatusKode fra felles
// import no.nav.bidrag.beregn.felles.enums.BostatusKode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer
import no.nav.bidrag.behandling.consumer.BidragPersonConsumer
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons
import no.nav.bidrag.behandling.fantIkkeFødselsdatoTilSøknadsbarn
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.behandling.transformers.toLocalDate
import no.nav.bidrag.behandling.transformers.toNoString
Expand Down Expand Up @@ -54,14 +55,22 @@ class BehandlingBeregnForskuddController(
behandling
.getSøknadsBarn()
.mapOrAccumulate {
val fDato =
if (it.fodtDato == null) {
val fødselsdatoSøknadsbarn =
if (it.fodtDato == null && it.ident != null) {
bidragPersonConsumer.hentPerson(it.ident).fødselsdato
} else {
it.fodtDato.toLocalDate().toNoString()
it.fodtDato?.toLocalDate()?.toNoString() ?: null
}

val payload = forskuddBeregning.toPayload(behandlingModel, it, fDato)
// Avbryter prosesering dersom fødselsdato til søknadsbarn er ukjent
if (fødselsdatoSøknadsbarn == null) {
fantIkkeFødselsdatoTilSøknadsbarn(behandlingId)
}

var søknadsbarn =
forskuddBeregning.lagePersonobjektForSøknadsbarn(it, fødselsdatoSøknadsbarn)

val payload = forskuddBeregning.toPayload(behandlingModel, søknadsbarn)

try {
val respons =
Expand All @@ -79,7 +88,7 @@ class BehandlingBeregnForskuddController(
}?.sivilstandType
}
ForskuddBeregningPerBarn(
ident = it.ident,
referanseTilBarn = søknadsbarn.referanse,
beregnetForskuddPeriodeListe = beregnetForskuddPeriodeListe,
grunnlagListe = respons.grunnlagListe,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ import jakarta.persistence.GeneratedValue
import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.OneToMany
import no.nav.bidrag.domene.enums.Engangsbeløptype
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.Stønadstype
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.domene.enums.rolle.Rolletype
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype
import no.nav.bidrag.domene.enums.vedtak.Stønadstype
import org.hibernate.annotations.SQLDelete
import org.hibernate.annotations.Where
import java.util.Date
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import jakarta.persistence.GenerationType
import jakarta.persistence.Id
import jakarta.persistence.JoinColumn
import jakarta.persistence.ManyToOne
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.rolle.Rolletype
import org.hibernate.annotations.SQLDelete
import org.hibernate.annotations.Where
import java.util.Date
Expand All @@ -23,7 +23,7 @@ class Rolle(
val behandling: Behandling,
@Enumerated(EnumType.STRING)
val rolleType: Rolletype,
val ident: String,
val ident: String?,
val fodtDato: Date?,
val opprettetDato: Date?,
@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import no.nav.bidrag.behandling.database.datamodell.Behandlingstype
import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import java.time.LocalDate

// TODO: Flytt dette til bidrag-transport
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.Size
import no.nav.bidrag.behandling.database.datamodell.Behandlingstype
import no.nav.bidrag.behandling.database.datamodell.SoknadType
import no.nav.bidrag.domene.enums.Engangsbeløptype
import no.nav.bidrag.domene.enums.Stønadstype
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype
import no.nav.bidrag.domene.enums.vedtak.Stønadstype
import java.util.Date

data class CreateBehandlingRequest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ data class ForskuddBeregningRespons(
)

data class ForskuddBeregningPerBarn(
val ident: String,
val referanseTilBarn: String?,
val beregnetForskuddPeriodeListe: List<ResultatPeriode>,
val grunnlagListe: List<Grunnlag>? = null,
)
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package no.nav.bidrag.behandling.dto.forsendelse

import no.nav.bidrag.domene.enums.Engangsbeløptype
import no.nav.bidrag.domene.enums.Stønadstype
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.domene.enums.Vedtakstype
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype
import no.nav.bidrag.domene.enums.vedtak.Stønadstype
import no.nav.bidrag.domene.enums.vedtak.Vedtakstype

data class BehandlingInfoDto(
val vedtakId: Long? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@ package no.nav.bidrag.behandling.dto.forsendelse

import jakarta.validation.constraints.NotBlank
import jakarta.validation.constraints.Size
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.rolle.Rolletype
import no.nav.bidrag.domene.ident.Personident

data class InitalizeForsendelseRequest(
@field:NotBlank(message = "Saksnummer kan ikke være blank")
@field:Size(max = 7, message = "Saksnummer kan ikke være lengre enn 7 tegn")
val saksnummer: String,
val behandlingInfo: BehandlingInfoDto,
val enhet: String,
val enhet: String? = null,
val tema: String? = null,
val roller: List<ForsendelseRolleDto>,
val behandlingStatus: BehandlingStatus? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.behandling.service.ForsendelseService
import no.nav.bidrag.behandling.transformers.tilForsendelseRolleDto
import no.nav.bidrag.domene.enums.BehandlingsrefKilde
import no.nav.bidrag.domene.enums.vedtak.BehandlingsrefKilde
import no.nav.bidrag.transport.behandling.vedtak.VedtakHendelse
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.annotation.KafkaListener
Expand Down Expand Up @@ -50,7 +50,7 @@ class VedtakHendelseListener(
forsendelseService.slettEllerOpprettForsendelse(
InitalizeForsendelseRequest(
saksnummer = vedtak.saksnummer,
enhet = vedtak.enhetsnummer.verdi,
enhet = vedtak.enhetsnummer?.verdi,
behandlingInfo =
BehandlingInfoDto(
soknadId = vedtak.soknadId ?: behandling.soknadId,
Expand Down Expand Up @@ -81,7 +81,7 @@ val VedtakHendelse.engangsbelopType get() = this.engangsbeløpListe?.firstOrNull
val VedtakHendelse.soknadId
get() =
this.behandlingsreferanseListe?.find {
it.kilde == BehandlingsrefKilde.BISYS_SOKNAD.name
it.kilde == BehandlingsrefKilde.BISYS_SØKNAD.name
}?.referanse?.toLong()
val VedtakHendelse.behandlingId
get() =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest
import no.nav.bidrag.behandling.transformers.tilForsendelseRolleDto
import no.nav.bidrag.behandling.transformers.tilVedtakType
import no.nav.bidrag.behandling.transformers.toRolle
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.rolle.Rolletype
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.util.Date
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto
import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest
import no.nav.bidrag.behandling.dto.forsendelse.MottakerDto
import no.nav.bidrag.behandling.dto.forsendelse.OpprettForsendelseForespørsel
import no.nav.bidrag.domene.enums.Engangsbeløptype
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.Stønadstype
import no.nav.bidrag.domene.enums.Vedtakstype
import no.nav.bidrag.domene.enums.rolle.Rolletype
import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype
import no.nav.bidrag.domene.enums.vedtak.Stønadstype
import no.nav.bidrag.domene.enums.vedtak.Vedtakstype
import no.nav.bidrag.transport.dokument.BidragEnhet.ENHET_FARSKAP
import org.springframework.stereotype.Service

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto
import no.nav.bidrag.behandling.dto.inntekt.InntektDto
import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto
import no.nav.bidrag.behandling.dto.opplysninger.OpplysningerDto
import no.nav.bidrag.domene.enums.Rolletype
import no.nav.bidrag.domene.enums.Vedtakstype
import no.nav.bidrag.domene.enums.rolle.Rolletype
import no.nav.bidrag.domene.enums.vedtak.Vedtakstype
import no.nav.bidrag.domene.ident.Personident
import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost

Expand Down Expand Up @@ -209,7 +209,7 @@ fun CreateRolleDto.toRolle(behandling: Behandling): Rolle =
CreateRolleRolleType.BARN -> Rolletype.BARN
CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT
},
this.ident ?: "",
this.ident,
this.fodtDato,
this.opprettetDato,
navn = this.navn,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType
import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.behandling.service.BehandlingServiceTest
import no.nav.bidrag.domene.enums.Stønadstype
import no.nav.bidrag.domene.enums.SøktAvType
import no.nav.bidrag.domene.enums.rolle.SøktAvType
import no.nav.bidrag.domene.enums.vedtak.Stønadstype
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
Expand Down
Loading