From 2fc26d4f6bcc319d6804571fdc17ef633c05936c Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Fri, 22 Nov 2024 12:01:27 +0100 Subject: [PATCH] =?UTF-8?q?St=C3=B8tte=20for=20fatte=20vedtak=20og=20lesem?= =?UTF-8?q?odus=20(#599)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../controller/VisningsnavnController.kt | 2 + .../database/datamodell/Barnetilsyn.kt | 2 +- .../datamodell/FaktiskTilsynsutgift.kt | 2 +- .../datamodell/Tilleggsst\303\270nad.kt" | 2 +- .../database/datamodell/Underholdskostnad.kt | 6 +- .../repository/UnderholdRepositories.kt | 15 - .../repository/UnderholdskostnadRepository.kt | 6 + .../v1/beregning/ResultatBidragberegning.kt | 41 +- .../ResultatS\303\246rbidragsberegning.kt" | 12 + .../behandling/service/BehandlingService.kt | 8 +- .../behandling/service/BeregningService.kt | 4 +- .../service/Samv\303\246rService.kt" | 24 +- .../behandling/service/UnderholdService.kt | 95 +- .../transformers/BeregningDtoMapping.kt | 61 +- .../behandling/BehandlingDtoMapping.kt | 8 +- .../fravedtak/VedtakTilBehandlingMapping.kt | 200 +- .../BehandlingTilGrunnlagMappingV2.kt | 25 +- .../tilvedtak/BehandlingTilVedtakMapping.kt | 117 +- .../mapping/tilvedtak/GrunnlagByggerBidrag.kt | 51 +- .../mapping/tilvedtak/GrunnlagByggerFelles.kt | 15 +- .../mapping/tilvedtak/Grunnlagsreferanser.kt | 6 + .../mapping/tilvedtak/VedtakGrunnlagMapper.kt | 5 +- .../service/CommonVedtakTilBehandlingTest.kt | 135 + .../service/UnderholdServiceTest.kt | 76 +- .../VedtakTilBehandlingForskuddTest.kt | 96 +- ...edtakTilBehandlingS\303\246rbidragTest.kt" | 97 +- .../service/VedtakserviceBidragTest.kt | 2187 +++-------- .../service/VedtakserviceForskuddTest.kt | 101 +- .../VedtakserviceS\303\246rbidragTest.kt" | 1 + .../behandling/service/VedtakserviceTest.kt | 231 +- .../VedtakInnhentetGrunnlagTest.kt | 2 +- .../nav/bidrag/behandling/utils/StubUtils.kt | 28 + .../behandling/utils/TestdataGrunnlag.kt | 2 +- .../utils/VedtakTestdataExtensions.kt | 8 + .../behandling/utils/testdata/Testdata.kt | 263 +- .../utils/testdata/TestdataGrunnlag.kt | 3 +- .../__files/bidragbbm/bbm-beregning_2.json | 2 +- .../__files/grunnlagresponse_bp.json | 3396 +++++++++++++++++ .../stonad/alle-st\303\270nader-bp-tom.json" | 3 + .../stonad/alle-st\303\270nader-bp.json" | 29 + .../l\303\270pende-bidragssaker-bp_2.json" | 2 +- .../vedtak-for-st\303\270nad-barn1_2.json" | 18 +- .../vedtak-grunnlagrespons-forskudd-bm.json | 8 +- .../vedtak/vedtak-grunnlagrespons-sb-bm.json | 4 +- .../vedtak/vedtak-grunnlagrespons-sb-bp.json | 6 +- ...dtak_respons_avslag-s\303\246rbidrag.json" | 4 +- ...ons_avslag_s\303\246rbidrag-foreldet.json" | 4 +- ...avslag_s\303\246rbidrag-forskuddsats.json" | 4 +- .../vedtak_response-s\303\246rbidrag.json" | 4 +- ...se-s\303\246rbidrag_maksbel\303\270p.json" | 4 +- 51 files changed, 5076 insertions(+), 2353 deletions(-) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdRepositories.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdskostnadRepository.kt create mode 100644 src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt create mode 100644 src/test/resources/__files/grunnlagresponse_bp.json create mode 100644 "src/test/resources/__files/stonad/alle-st\303\270nader-bp-tom.json" create mode 100644 "src/test/resources/__files/stonad/alle-st\303\270nader-bp.json" diff --git a/pom.xml b/pom.xml index 03977a778..86aeb1d63 100644 --- a/pom.xml +++ b/pom.xml @@ -16,8 +16,8 @@ 21 2.0.21 - 2024.11.19.144735 - 2024.11.20.083200 + 2024.11.21.153205 + 2024.11.21.100414 2.3.232 8.0 3.2.0 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt index 69e31c914..7e590285e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt @@ -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 @@ -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 } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetilsyn.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetilsyn.kt index 94c37eaa2..8e3c7049d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetilsyn.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Barnetilsyn.kt @@ -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, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/FaktiskTilsynsutgift.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/FaktiskTilsynsutgift.kt index 2fc13dd5b..47cab5fbd 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/FaktiskTilsynsutgift.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/FaktiskTilsynsutgift.kt @@ -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, diff --git "a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Tilleggsst\303\270nad.kt" "b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Tilleggsst\303\270nad.kt" index 006cc5bf2..94a1d9df9 100644 --- "a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Tilleggsst\303\270nad.kt" +++ "b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Tilleggsst\303\270nad.kt" @@ -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, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Underholdskostnad.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Underholdskostnad.kt index 5a0ddab29..720b5bdb9 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Underholdskostnad.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Underholdskostnad.kt @@ -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( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdRepositories.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdRepositories.kt deleted file mode 100644 index 079450a3b..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdRepositories.kt +++ /dev/null @@ -1,15 +0,0 @@ -package no.nav.bidrag.behandling.database.repository - -import no.nav.bidrag.behandling.database.datamodell.Barnetilsyn -import no.nav.bidrag.behandling.database.datamodell.FaktiskTilsynsutgift -import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad -import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad -import org.springframework.data.repository.CrudRepository - -interface BarnetilsynRepository : CrudRepository - -interface FaktiskTilsynsutgiftRepository : CrudRepository - -interface TilleggsstønadRepository : CrudRepository - -interface UnderholdskostnadRepository : CrudRepository diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdskostnadRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdskostnadRepository.kt new file mode 100644 index 000000000..e774032c6 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/UnderholdskostnadRepository.kt @@ -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 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatBidragberegning.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatBidragberegning.kt index 40ca46196..8f302b42a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatBidragberegning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatBidragberegning.kt @@ -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( @@ -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 @@ -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, @@ -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 } diff --git "a/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatS\303\246rbidragsberegning.kt" "b/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatS\303\246rbidragsberegning.kt" index 0aee1a19c..11d1aa040 100644 --- "a/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatS\303\246rbidragsberegning.kt" +++ "b/src/main/kotlin/no/nav/bidrag/behandling/dto/v1/beregning/ResultatS\303\246rbidragsberegning.kt" @@ -47,6 +47,18 @@ data class DelberegningBidragspliktigesBeregnedeTotalbidragDto( ) } +data class DelberegningBarnetilleggDto( + val barnetillegg: List = 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, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt index 0e58af6bf..feb58f113 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -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, @@ -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!!) @@ -324,8 +330,8 @@ class BehandlingService( oppdaterBoforhold() oppdaterAndreVoksneIHusstanden() oppdaterInntekter() + oppdaterSamvær() // TODO Underholdskostnad - // TODO Samvær } } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt index dbad50de3..b5ccb4edf 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BeregningService.kt @@ -157,6 +157,7 @@ class BeregningService( private fun Behandling.tilResultatAvslagBidrag(barn: Rolle) = ResultatBidragsberegningBarn( barn = barn.mapTilResultatBarn(), + avslaskode = avslag, resultat = BeregnetBarnebidragResultat( beregnetBarnebidragPeriodeListe = @@ -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, ), ), ), diff --git "a/src/main/kotlin/no/nav/bidrag/behandling/service/Samv\303\246rService.kt" "b/src/main/kotlin/no/nav/bidrag/behandling/service/Samv\303\246rService.kt" index d394e8f7d..637d0dd3f 100644 --- "a/src/main/kotlin/no/nav/bidrag/behandling/service/Samv\303\246rService.kt" +++ "b/src/main/kotlin/no/nav/bidrag/behandling/service/Samv\303\246rService.kt" @@ -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 @@ -28,7 +29,7 @@ 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, ) { @@ -36,7 +37,7 @@ class SamværService( 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" } @@ -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) @@ -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 + } + } + } + } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt index 215a3fcb8..2ac5dcc2f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/UnderholdService.kt @@ -6,10 +6,7 @@ import no.nav.bidrag.behandling.database.datamodell.FaktiskTilsynsutgift import no.nav.bidrag.behandling.database.datamodell.Person import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad -import no.nav.bidrag.behandling.database.repository.BarnetilsynRepository -import no.nav.bidrag.behandling.database.repository.FaktiskTilsynsutgiftRepository import no.nav.bidrag.behandling.database.repository.PersonRepository -import no.nav.bidrag.behandling.database.repository.TilleggsstønadRepository import no.nav.bidrag.behandling.database.repository.UnderholdskostnadRepository import no.nav.bidrag.behandling.dto.v2.underhold.BarnDto import no.nav.bidrag.behandling.dto.v2.underhold.OppdatereBegrunnelseRequest @@ -36,9 +33,6 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag.NotatTyp @Service class UnderholdService( - private val barnetilsynRepository: BarnetilsynRepository, - private val faktiskTilsynsutgiftRepository: FaktiskTilsynsutgiftRepository, - private val tilleggsstønadRepository: TilleggsstønadRepository, private val underholdskostnadRepository: UnderholdskostnadRepository, private val personRepository: PersonRepository, private val notatService: NotatService, @@ -118,28 +112,27 @@ class UnderholdService( gjelderBarn: BarnDto, ): Underholdskostnad { gjelderBarn.validere() - gjelderBarn.personident?.let { personidentBarn -> + + return gjelderBarn.personident?.let { personidentBarn -> val rolleSøknadsbarn = behandling.søknadsbarn.find { it.ident == personidentBarn.verdi } - val eksisterendePerson = personRepository.findFirstByIdent(personidentBarn.verdi) - if (eksisterendePerson == null) { + personRepository.findFirstByIdent(personidentBarn.verdi)?.let { eksisterendePerson -> + rolleSøknadsbarn?.let { eksisterendePerson.rolle.add(it) } + rolleSøknadsbarn?.person = eksisterendePerson + lagreUnderholdskostnad(behandling, eksisterendePerson) + } ?: run { val person = - personRepository.save( - Person( - ident = personidentBarn.verdi, - rolle = rolleSøknadsbarn?.let { mutableSetOf(it) } ?: mutableSetOf(), - ), + Person( + ident = personidentBarn.verdi, + rolle = rolleSøknadsbarn?.let { mutableSetOf(it) } ?: mutableSetOf(), ) person.rolle.forEach { it.person = person } - return lagreUnderholdskostnad(behandling, person) - } else { - rolleSøknadsbarn?.let { eksisterendePerson.rolle.add(it) } - rolleSøknadsbarn?.person = eksisterendePerson - return lagreUnderholdskostnad(behandling, eksisterendePerson) + + lagreUnderholdskostnad(behandling, person) } } ?: run { - return lagreUnderholdskostnad( + lagreUnderholdskostnad( behandling, - personRepository.save(Person(navn = gjelderBarn.navn, fødselsdato = gjelderBarn.fødselsdato)), + Person(navn = gjelderBarn.navn, fødselsdato = gjelderBarn.fødselsdato), ) } } @@ -167,23 +160,21 @@ class UnderholdService( barnetilsyn } ?: run { val barnetilsyn = - barnetilsynRepository.save( - Barnetilsyn( - fom = request.periode.fom, - tom = request.periode.tom, - under_skolealder = - when (request.skolealder) { - Skolealder.UNDER -> true - Skolealder.OVER -> false - else -> null - }, - omfang = request.tilsynstype, - kilde = Kilde.MANUELL, - underholdskostnad = underholdskostnad, - ), + Barnetilsyn( + fom = request.periode.fom, + tom = request.periode.tom, + under_skolealder = + when (request.skolealder) { + Skolealder.UNDER -> true + Skolealder.OVER -> false + else -> null + }, + omfang = request.tilsynstype, + kilde = Kilde.MANUELL, + underholdskostnad = underholdskostnad, ) underholdskostnad.barnetilsyn.add(barnetilsyn) - barnetilsyn + underholdskostnadRepository.save(underholdskostnad).barnetilsyn.last() } return OppdatereUnderholdResponse( @@ -213,18 +204,16 @@ class UnderholdService( faktiskTilsynsutgift } ?: run { val faktiskTilsynsutgift = - faktiskTilsynsutgiftRepository.save( - FaktiskTilsynsutgift( - fom = request.periode.fom, - tom = request.periode.tom, - kostpenger = request.kostpenger, - tilsynsutgift = request.utgift, - kommentar = request.kommentar, - underholdskostnad = underholdskostnad, - ), + FaktiskTilsynsutgift( + fom = request.periode.fom, + tom = request.periode.tom, + kostpenger = request.kostpenger, + tilsynsutgift = request.utgift, + kommentar = request.kommentar, + underholdskostnad = underholdskostnad, ) underholdskostnad.faktiskeTilsynsutgifter.add(faktiskTilsynsutgift) - faktiskTilsynsutgift + underholdskostnadRepository.save(underholdskostnad).faktiskeTilsynsutgifter.last() } return OppdatereUnderholdResponse( faktiskTilsynsutgift = dtomapper.tilFaktiskTilsynsutgiftDto(oppdatertFaktiskTilsynsutgift), @@ -253,16 +242,14 @@ class UnderholdService( tilleggsstønad } ?: run { val tilleggsstønad = - tilleggsstønadRepository.save( - Tilleggsstønad( - fom = request.periode.fom, - tom = request.periode.tom, - dagsats = request.dagsats, - underholdskostnad = underholdskostnad, - ), + Tilleggsstønad( + fom = request.periode.fom, + tom = request.periode.tom, + dagsats = request.dagsats, + underholdskostnad = underholdskostnad, ) underholdskostnad.tilleggsstønad.add(tilleggsstønad) - tilleggsstønad + underholdskostnadRepository.save(underholdskostnad).tilleggsstønad.last() } return OppdatereUnderholdResponse( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt index 296db575e..965d204ce 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/BeregningDtoMapping.kt @@ -3,6 +3,7 @@ package no.nav.bidrag.behandling.transformers import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.dto.v1.beregning.BidragPeriodeBeregningsdetaljer +import no.nav.bidrag.behandling.dto.v1.beregning.DelberegningBarnetilleggDto import no.nav.bidrag.behandling.dto.v1.beregning.DelberegningBidragsevneDto import no.nav.bidrag.behandling.dto.v1.beregning.DelberegningBidragspliktigesBeregnedeTotalbidragDto import no.nav.bidrag.behandling.dto.v1.beregning.ResultatBarnebidragsberegningPeriodeDto @@ -25,6 +26,7 @@ import no.nav.bidrag.domene.enums.beregning.Resultatkode import no.nav.bidrag.domene.enums.beregning.Resultatkode.Companion.erAvslag import no.nav.bidrag.domene.enums.beregning.Resultatkode.Companion.erDirekteAvslag import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.domene.enums.person.Bostatuskode import no.nav.bidrag.domene.enums.person.Sivilstandskode import no.nav.bidrag.domene.enums.rolle.Rolletype @@ -32,6 +34,7 @@ import no.nav.bidrag.domene.enums.sjablon.SjablonTallNavn import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.domene.tid.ÅrMånedsperiode +import no.nav.bidrag.domene.util.visningsnavn import no.nav.bidrag.transport.behandling.beregning.felles.BeregnValgteInntekterGrunnlag import no.nav.bidrag.transport.behandling.beregning.felles.InntektsgrunnlagPeriode import no.nav.bidrag.transport.behandling.beregning.særbidrag.BeregnetSærbidragResultat @@ -48,6 +51,7 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningUtgift import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningVoksneIHusstand import no.nav.bidrag.transport.behandling.felles.grunnlag.GrunnlagDto import no.nav.bidrag.transport.behandling.felles.grunnlag.Grunnlagsreferanse +import no.nav.bidrag.transport.behandling.felles.grunnlag.InntektsrapporteringPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.SamværsklassePeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.SivilstandPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.SjablonBidragsevnePeriode @@ -64,6 +68,7 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.personIdent import no.nav.bidrag.transport.behandling.felles.grunnlag.tilGrunnlagstype import no.nav.bidrag.transport.felles.ifTrue import java.math.BigDecimal +import java.math.RoundingMode import java.time.LocalDate fun Behandling.tilInntektberegningDto(rolle: Rolle): BeregnValgteInntekterGrunnlag = @@ -99,7 +104,7 @@ fun List.tilDto(): ResultatBidragberegningDto = grunnlagsListe.byggResultatBidragsberegning( it.periode, it.resultat.beløp, - it.resultat.kode, + resultat.avslaskode, it.grunnlagsreferanseListe, ) }, @@ -144,7 +149,7 @@ fun List.byggResultatSærbidragInntekter(grunnlagsreferanseListe: L fun List.byggResultatBidragsberegning( periode: ÅrMånedsperiode, resultat: BigDecimal?, - resultatkode: Resultatkode, + resultatkode: Resultatkode?, grunnlagsreferanseListe: List, ): ResultatBarnebidragsberegningPeriodeDto { val bpsAndel = finnDelberegningBidragspliktigesAndel(grunnlagsreferanseListe) @@ -157,12 +162,14 @@ fun List.byggResultatBidragsberegning( beregnetBidrag = sluttberegning?.beregnetBeløp ?: BigDecimal.ZERO, samværsfradrag = finnSamværsfradrag(grunnlagsreferanseListe), bpsAndelU = bpsAndel?.endeligAndelFaktor ?: BigDecimal.ZERO, - erDirekteAvslag = resultatkode.erDirekteAvslag(), + erDirekteAvslag = resultatkode?.erDirekteAvslag() ?: false, beregningsdetaljer = - if (!resultatkode.erAvslag()) { + if (resultatkode?.erAvslag() != true) { val delberegningBPsEvne = finnDelberegningBidragsevne(grunnlagsreferanseListe) BidragPeriodeBeregningsdetaljer( delberegningBidragsevne = delberegningBPsEvne, + barnetilleggBM = finnBarnetillegg(grunnlagsreferanseListe, Grunnlagstype.PERSON_BIDRAGSMOTTAKER), + barnetilleggBP = finnBarnetillegg(grunnlagsreferanseListe, Grunnlagstype.PERSON_BIDRAGSPLIKTIG), samværsfradrag = finnDelberegningSamværsfradrag( grunnlagsreferanseListe, @@ -457,6 +464,52 @@ fun List.finnAlleDelberegningUnderholdskostnad(): List.finnBarnetillegg( + grunnlagsreferanseListe: List, + personGrunnlagstype: Grunnlagstype, +): DelberegningBarnetilleggDto { + val personGrunnlag = find { it.type == personGrunnlagstype } ?: return DelberegningBarnetilleggDto() + val sluttberegning = finnSluttberegningIReferanser(grunnlagsreferanseListe) ?: return DelberegningBarnetilleggDto() + val evne = + filtrerBasertPåEgenReferanse( + Grunnlagstype.DELBEREGNING_BIDRAGSEVNE, + ).lastOrNull() ?: return DelberegningBarnetilleggDto() + + val skattFaktor = evne.innholdTilObjekt().skatt.sumSkattFaktor + val barnetillegg = + finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( + Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE, + sluttberegning.grunnlagsreferanseListe, + ).filter { it.gjelderReferanse == personGrunnlag.referanse } + .filter { it.innholdTilObjekt().inntektsrapportering == Inntektsrapportering.BARNETILLEGG } + + val sumBarnetillegg = barnetillegg.sumOf { it.innholdTilObjekt().beløp } + return DelberegningBarnetilleggDto( + skattFaktor = skattFaktor, + nettoBeløp = beregnNettoBarnetillegg(sumBarnetillegg, skattFaktor), + barnetillegg = + barnetillegg + .map { it.innholdTilObjekt() } + .map { + DelberegningBarnetilleggDto.BarnetilleggDetaljerDto( + bruttoBeløp = it.beløp.divide(BigDecimal(12), 10, RoundingMode.HALF_UP), + nettoBeløp = + beregnNettoBarnetillegg(it.beløp, skattFaktor), + visningsnavn = + it.inntekstpostListe + .first() + .inntekstype!! + .visningsnavn.intern, + ) + }, + ) +} + +private fun beregnNettoBarnetillegg( + bruttoBeløp: BigDecimal, + skattfaktor: BigDecimal, +): BigDecimal = (bruttoBeløp - (bruttoBeløp * skattfaktor)).divide(BigDecimal(12), 10, RoundingMode.HALF_UP) + fun List.finnDelberegningUnderholdskostnad(grunnlagsreferanseListe: List): DelberegningUnderholdskostnad? { val sluttberegning = finnSluttberegningIReferanser(grunnlagsreferanseListe) ?: return null val delberegningUnderholdskostnad = diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt index 357bcdf61..d68a4b4c6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/behandling/BehandlingDtoMapping.kt @@ -377,7 +377,13 @@ fun Behandling.henteRolleForNotat( forRolle } } - Notattype.UNDERHOLDSKOSTNAD -> this.bidragspliktig!! + Notattype.UNDERHOLDSKOSTNAD -> + if (forRolle == null) { + log.warn { "Notattype $notattype krever spesifisering av hvilken rolle notatet gjelder." } + this.bidragsmottaker!! + } else { + forRolle + } Notattype.SAMVÆR -> forRolle!! } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/fravedtak/VedtakTilBehandlingMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/fravedtak/VedtakTilBehandlingMapping.kt index 97287b041..979a6f02d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/fravedtak/VedtakTilBehandlingMapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/fravedtak/VedtakTilBehandlingMapping.kt @@ -1,12 +1,19 @@ package no.nav.bidrag.behandling.transformers.vedtak.mapping.fravedtak +import no.nav.bidrag.behandling.database.datamodell.Barnetilsyn import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.FaktiskTilsynsutgift +import no.nav.bidrag.behandling.database.datamodell.Person import no.nav.bidrag.behandling.database.datamodell.Samvær import no.nav.bidrag.behandling.database.datamodell.Samværsperiode +import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad +import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad import no.nav.bidrag.behandling.database.datamodell.Utgift import no.nav.bidrag.behandling.database.datamodell.Utgiftspost import no.nav.bidrag.behandling.dto.v1.beregning.ResultatSærbidragsberegningDto import no.nav.bidrag.behandling.dto.v2.behandling.UtgiftBeregningDto +import no.nav.bidrag.behandling.dto.v2.underhold.BarnDto +import no.nav.bidrag.behandling.service.UnderholdService import no.nav.bidrag.behandling.transformers.behandling.tilNotat import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning import no.nav.bidrag.behandling.transformers.beregning.erAvslagSomInneholderUtgifter @@ -17,22 +24,30 @@ import no.nav.bidrag.behandling.transformers.utgift.tilBeregningDto import no.nav.bidrag.behandling.transformers.utgift.tilDto import no.nav.bidrag.commons.security.utils.TokenUtils import no.nav.bidrag.commons.service.organisasjon.SaksbehandlernavnProvider +import no.nav.bidrag.domene.enums.barnetilsyn.Skolealder import no.nav.bidrag.domene.enums.behandling.TypeBehandling import no.nav.bidrag.domene.enums.beregning.Resultatkode +import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype +import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Innkrevingstype import no.nav.bidrag.domene.enums.vedtak.Vedtakstype +import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.transport.behandling.beregning.samvær.SamværskalkulatorDetaljer +import no.nav.bidrag.transport.behandling.felles.grunnlag.BarnetilsynMedStønadPeriode +import no.nav.bidrag.transport.behandling.felles.grunnlag.FaktiskUtgiftPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.GrunnlagDto import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag import no.nav.bidrag.transport.behandling.felles.grunnlag.SamværsperiodeGrunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.TilleggsstønadPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåEgenReferanse import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe import no.nav.bidrag.transport.behandling.felles.grunnlag.hentPerson import no.nav.bidrag.transport.behandling.felles.grunnlag.hentPersonMedReferanse import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt import no.nav.bidrag.transport.behandling.felles.grunnlag.personIdent +import no.nav.bidrag.transport.behandling.felles.grunnlag.personObjekt import no.nav.bidrag.transport.behandling.felles.grunnlag.særbidragskategori import no.nav.bidrag.transport.behandling.felles.grunnlag.utgiftDirekteBetalt import no.nav.bidrag.transport.behandling.felles.grunnlag.utgiftMaksGodkjentBeløp @@ -52,6 +67,7 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag.NotatTyp @Component class VedtakTilBehandlingMapping( val validerBeregning: ValiderBeregning, + private val underholdService: UnderholdService, ) { fun VedtakDto.tilBehandling( vedtakId: Long, @@ -128,6 +144,7 @@ class VedtakTilBehandlingMapping( behandling.sivilstand = grunnlagListe.mapSivilstand(behandling, lesemodus) behandling.utgift = grunnlagListe.mapUtgifter(behandling, lesemodus) behandling.samvær = grunnlagListe.mapSamvær(behandling, lesemodus) + behandling.underholdskostnader = grunnlagListe.mapUnderholdskostnad(behandling, lesemodus) behandling.grunnlag = grunnlagListe.mapGrunnlag(behandling, lesemodus) notatMedType(NotatGrunnlag.NotatType.BOFORHOLD, false)?.let { @@ -144,12 +161,18 @@ class VedtakTilBehandlingMapping( behandling.notater.add(behandling.tilNotat(NotatGrunnlag.NotatType.INNTEKT, it, r)) } } - behandling.søknadsbarn.forEach { r -> + behandling.roller.forEach { r -> notatMedType(NotatGrunnlag.NotatType.SAMVÆR, false, grunnlagListe.hentPerson(r.ident)?.referanse)?.let { behandling.notater.add(behandling.tilNotat(NotatGrunnlag.NotatType.SAMVÆR, it, r)) } } + behandling.roller.forEach { r -> + notatMedType(NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, false, grunnlagListe.hentPerson(r.ident)?.referanse)?.let { + behandling.notater.add(behandling.tilNotat(NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, it, r)) + } + } + return behandling } @@ -205,6 +228,142 @@ class VedtakTilBehandlingMapping( return utgift } + private fun List.mapUnderholdskostnad( + behandling: Behandling, + lesemodus: Boolean, + ): MutableSet { + if (behandling.tilType() != TypeBehandling.BIDRAG) return mutableSetOf() + val underholdskostnadSøknadsbarn = + behandling.roller + .filter { Rolletype.BARN == it.rolletype } + .mapIndexed { index, rolle -> + val underholdskostnad = + if (lesemodus) { + Underholdskostnad( + id = index.toLong(), + behandling = behandling, + person = Person(ident = rolle.ident!!, rolle = mutableSetOf(rolle)), + ) + } else { + underholdService.oppretteUnderholdskostnad(behandling, BarnDto(personident = Personident(rolle.ident!!))) + } + + underholdskostnad.tilleggsstønad.addAll( + filtrerBasertPåEgenReferanse(Grunnlagstype.TILLEGGSSTØNAD_PERIODE) + .map { it.innholdTilObjekt() } + .filter { + hentPersonMedReferanse(it.gjelderBarn)!!.personIdent == rolle.ident + }.mapTillegsstønad(underholdskostnad, lesemodus), + ) + + underholdskostnad.faktiskeTilsynsutgifter.addAll( + filtrerBasertPåEgenReferanse(Grunnlagstype.FAKTISK_UTGIFT_PERIODE) + .map { it.innholdTilObjekt() } + .filter { + hentPersonMedReferanse(it.gjelderBarn)!!.personIdent == rolle.ident + }.mapFaktiskTilsynsutgift(underholdskostnad, lesemodus), + ) + + underholdskostnad.barnetilsyn.addAll( + filtrerBasertPåEgenReferanse(Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE) + .map { it.innholdTilObjekt() } + .filter { ts -> + hentPersonMedReferanse(ts.gjelderBarn)!!.personIdent == rolle.ident + }.mapBarnetilsyn(underholdskostnad, lesemodus), + ) + underholdskostnad + }.toMutableSet() + + val underholdskostnadAndreBarn = + filtrerBasertPåEgenReferanse(Grunnlagstype.FAKTISK_UTGIFT_PERIODE) + .map { it.innholdTilObjekt() } + .filter { + val gjelderBarnIdent = hentPersonMedReferanse(it.gjelderBarn)!!.personIdent + behandling.roller.none { it.ident == gjelderBarnIdent } + }.groupBy { it.gjelderBarn } + .map { (gjelderBarnReferanse, innhold) -> + val gjelderBarn = hentPersonMedReferanse(gjelderBarnReferanse)!!.personObjekt + + val underholdskostnad = + if (lesemodus) { + Underholdskostnad( + id = 1, + behandling = behandling, + person = + Person( + ident = gjelderBarn.ident?.verdi, + navn = gjelderBarn.navn, + fødselsdato = gjelderBarn.fødselsdato, + ), + ) + } else { + underholdService.oppretteUnderholdskostnad( + behandling, + BarnDto(personident = gjelderBarn.ident, navn = gjelderBarn.navn, fødselsdato = gjelderBarn.fødselsdato), + ) + } + underholdskostnad.faktiskeTilsynsutgifter.addAll(innhold.mapFaktiskTilsynsutgift(underholdskostnad, lesemodus)) + underholdskostnad + }.toMutableSet() + + return (underholdskostnadAndreBarn + underholdskostnadSøknadsbarn).toMutableSet() + } + + private fun List.mapTillegsstønad( + underholdskostnad: Underholdskostnad, + lesemodus: Boolean, + ): List = + mapIndexed { index, it -> + Tilleggsstønad( + id = if (lesemodus) index.toLong() else null, + underholdskostnad = underholdskostnad, + fom = it.periode.fom.atDay(1), + tom = + it.periode.til + ?.minusMonths(1) + ?.atEndOfMonth(), + dagsats = it.beløpDagsats, + ) + } + + private fun List.mapFaktiskTilsynsutgift( + underholdskostnad: Underholdskostnad, + lesemodus: Boolean, + ): List = + mapIndexed { index, it -> + FaktiskTilsynsutgift( + id = if (lesemodus) index.toLong() else null, + underholdskostnad = underholdskostnad, + fom = it.periode.fom.atDay(1), + tom = + it.periode.til + ?.minusMonths(1) + ?.atEndOfMonth(), + tilsynsutgift = it.faktiskUtgiftBeløp, + kostpenger = it.kostpengerBeløp, + kommentar = it.kommentar, + ) + } + + private fun List.mapBarnetilsyn( + underholdskostnad: Underholdskostnad, + lesemodus: Boolean, + ): List = + mapIndexed { index, it -> + Barnetilsyn( + id = if (lesemodus) index.toLong() else null, + underholdskostnad = underholdskostnad, + fom = it.periode.fom.atDay(1), + tom = + it.periode.til + ?.minusMonths(1) + ?.atEndOfMonth(), + under_skolealder = it.skolealder == Skolealder.UNDER, + omfang = it.tilsynstype, + kilde = Kilde.OFFENTLIG, + ) + } + private fun List.mapSamvær( behandling: Behandling, lesemodus: Boolean, @@ -216,29 +375,32 @@ class VedtakTilBehandlingMapping( val person = hentPersonMedReferanse(gjelderReferanse)!! val samvær = Samvær( + id = if (lesemodus) 1 else null, behandling = behandling, rolle = behandling.roller.find { it.ident == person.personIdent }!!, perioder = mutableSetOf(), ) - perioder.mapIndexed { index, it -> - val periodeInnhold = it.innholdTilObjekt() - val beregning = - finnGrunnlagSomErReferertFraGrunnlagsreferanseListe(Grunnlagstype.SAMVÆRSKALKULATOR, it.grunnlagsreferanseListe) - .firstOrNull() - ?.innholdTilObjekt() - Samværsperiode( - id = if (lesemodus) index.toLong() else null, - samvær = samvær, - fom = periodeInnhold.periode.fom.atDay(1), - tom = - periodeInnhold.periode.til - ?.minusMonths(1) - ?.atEndOfMonth(), - samværsklasse = periodeInnhold.samværsklasse, - beregningJson = beregning?.let { commonObjectmapper.writeValueAsString(it) }, - ) - } + samvær.perioder.addAll( + perioder.mapIndexed { index, it -> + val periodeInnhold = it.innholdTilObjekt() + val beregning = + finnGrunnlagSomErReferertFraGrunnlagsreferanseListe(Grunnlagstype.SAMVÆRSKALKULATOR, it.grunnlagsreferanseListe) + .firstOrNull() + ?.innholdTilObjekt() + Samværsperiode( + id = if (lesemodus) index.toLong() else null, + samvær = samvær, + fom = periodeInnhold.periode.fom.atDay(1), + tom = + periodeInnhold.periode.til + ?.minusMonths(1) + ?.atEndOfMonth(), + samværsklasse = periodeInnhold.samværsklasse, + beregningJson = beregning?.let { commonObjectmapper.writeValueAsString(it) }, + ) + }, + ) samvær }.toMutableSet() } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilGrunnlagMappingV2.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilGrunnlagMappingV2.kt index de3fb2fda..fd8b52900 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilGrunnlagMappingV2.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilGrunnlagMappingV2.kt @@ -9,6 +9,7 @@ import no.nav.bidrag.behandling.database.datamodell.hentSisteAktiv import no.nav.bidrag.behandling.fantIkkeFødselsdatoTilSøknadsbarn import no.nav.bidrag.behandling.service.PersonService import no.nav.bidrag.behandling.transformers.grunnlag.tilBeregnetInntekt +import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagsreferanse import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetArbeidsforhold import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetGrunnlagInntekt import no.nav.bidrag.behandling.transformers.grunnlag.tilInnhentetHusstandsmedlemmer @@ -30,6 +31,7 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.SivilstandPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.bidragsmottaker import no.nav.bidrag.transport.behandling.felles.grunnlag.bidragspliktig import no.nav.bidrag.transport.behandling.felles.grunnlag.erPerson +import no.nav.bidrag.transport.behandling.felles.grunnlag.hentPerson import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettInnhentetSivilstandGrunnlagsreferanse import no.nav.bidrag.transport.behandling.felles.grunnlag.personIdent import no.nav.bidrag.transport.behandling.felles.grunnlag.personObjekt @@ -154,11 +156,11 @@ class BehandlingTilGrunnlagMappingV2( return grunnlagBosstatus + personobjekterHusstandsmedlem } - fun Behandling.tilGrunnlagUnderholdskostnad() = + fun Behandling.tilGrunnlagUnderholdskostnad(personobjekter: Set = emptySet()) = listOf( tilGrunnlagBarnetilsyn(), tilGrunnlagTilleggsstønad(), - tilGrunnlagFaktiskeTilsynsutgifter(), + tilGrunnlagFaktiskeTilsynsutgifter(personobjekter), ).flatten() fun Behandling.tilGrunnlagInntekt( @@ -233,13 +235,7 @@ class BehandlingTilGrunnlagMappingV2( it.beregning?.let { beregnSamværsklasseApi.beregnSamværsklasse(it) } ?: emptyList() val grunnlagPeriode = GrunnlagDto( - referanse = - "samvær_${Grunnlagstype.SAMVÆRSPERIODE}" + - "_${it.fom.toCompactString()}${ - it.tom?.let { - "_${it.toCompactString()}" - } - }_${samvær.rolle.tilGrunnlagPerson().referanse}", + referanse = it.tilGrunnlagsreferanseSamværsperiode(), type = Grunnlagstype.SAMVÆRSPERIODE, gjelderReferanse = samvær.rolle.tilGrunnlagPerson().referanse, grunnlagsreferanseListe = grunnlagBeregning.map { it.referanse }, @@ -256,7 +252,7 @@ class BehandlingTilGrunnlagMappingV2( } } - private fun Behandling.tilGrunnlagFaktiskeTilsynsutgifter(): List { + private fun Behandling.tilGrunnlagFaktiskeTilsynsutgifter(personobjekter: Set = emptySet()): List { val grunnlagslistePersoner: MutableList = mutableListOf() fun FaktiskTilsynsutgift.tilPersonGrunnlag(): GrunnlagDto { @@ -267,11 +263,11 @@ class BehandlingTilGrunnlagMappingV2( return GrunnlagDto( referanse = - Grunnlagstype.PERSON_BIDRAGSMOTTAKER.tilPersonreferanse( + Grunnlagstype.PERSON_BARN_BIDRAGSMOTTAKER.tilPersonreferanse( fødselsdato.toCompactString(), (person.ident + person.fødselsdato + person.navn).hashCode(), ), - type = Grunnlagstype.PERSON_BIDRAGSMOTTAKER, + type = Grunnlagstype.PERSON_BARN_BIDRAGSMOTTAKER, innhold = POJONode( Person( @@ -293,11 +289,13 @@ class BehandlingTilGrunnlagMappingV2( .flatMap { u -> u.faktiskeTilsynsutgifter.map { val underholdRolle = u.person.rolle.find { it.behandling.id == id } - val gjelderBarn = underholdRolle?.tilGrunnlagPerson() ?: it.opprettPersonGrunnlag() + val gjelderBarn = + underholdRolle?.tilGrunnlagPerson() ?: personobjekter.hentPerson(u.person.ident) ?: it.opprettPersonGrunnlag() val gjelderBarnReferanse = gjelderBarn.referanse GrunnlagDto( referanse = it.tilGrunnlagsreferanseFaktiskTilsynsutgift(gjelderBarnReferanse), type = Grunnlagstype.FAKTISK_UTGIFT_PERIODE, + gjelderReferanse = bidragsmottaker!!.tilGrunnlagsreferanse(), innhold = POJONode( FaktiskUtgiftPeriode( @@ -306,6 +304,7 @@ class BehandlingTilGrunnlagMappingV2( gjelderBarn = gjelderBarnReferanse, kostpengerBeløp = it.kostpenger ?: BigDecimal.ZERO, faktiskUtgiftBeløp = it.tilsynsutgift, + kommentar = it.kommentar, manueltRegistrert = true, ), ), diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilVedtakMapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilVedtakMapping.kt index df90e6c82..d57f5c20d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilVedtakMapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/BehandlingTilVedtakMapping.kt @@ -30,6 +30,7 @@ import no.nav.bidrag.transport.behandling.vedtak.request.OpprettPeriodeRequestDt import no.nav.bidrag.transport.behandling.vedtak.request.OpprettStønadsendringRequestDto import no.nav.bidrag.transport.behandling.vedtak.request.OpprettVedtakRequestDto import no.nav.bidrag.transport.behandling.vedtak.response.VedtakDto +import no.nav.bidrag.transport.sak.BidragssakDto import org.springframework.http.HttpStatus import org.springframework.stereotype.Service import org.springframework.web.client.HttpClientErrorException @@ -87,59 +88,78 @@ class BehandlingTilVedtakMapping( ) }, engangsbeløpListe = - listOf( - OpprettEngangsbeløpRequestDto( - type = Engangsbeløptype.GEBYR_SKYLDNER, - beløp = BigDecimal.ZERO, // TODO: Gebyr fra beregning - betaltBeløp = null, - resultatkode = "GIGI", // TODO: Resultat fra beregning - eksternReferanse = null, - beslutning = Beslutningstype.ENDRING, - grunnlagReferanseListe = emptyList(), - innkreving = Innkrevingstype.MED_INNKREVING, - skyldner = Personident(behandling.bidragspliktig!!.ident!!), - kravhaver = skyldnerNav, - mottaker = skyldnerNav, - valutakode = "NOK", - sak = Saksnummer(saksnummer), - ), - OpprettEngangsbeløpRequestDto( - type = Engangsbeløptype.GEBYR_MOTTAKER, - beløp = BigDecimal.ZERO, // TODO: Gebyr fra beregning - betaltBeløp = null, - resultatkode = "GIGI", // TODO: Resultat fra beregning - eksternReferanse = null, - beslutning = Beslutningstype.ENDRING, - grunnlagReferanseListe = emptyList(), - innkreving = Innkrevingstype.MED_INNKREVING, - skyldner = Personident(behandling.bidragsmottaker!!.ident!!), - kravhaver = skyldnerNav, - mottaker = skyldnerNav, - valutakode = "NOK", - sak = Saksnummer(saksnummer), - ), - OpprettEngangsbeløpRequestDto( - type = Engangsbeløptype.DIREKTE_OPPGJØR, - beløp = BigDecimal.ZERO, // TODO: Gebyr fra beregning - betaltBeløp = null, - resultatkode = "DIREKTE_OPPGJØR", // TODO: Resultat fra beregning - eksternReferanse = null, - beslutning = Beslutningstype.ENDRING, - grunnlagReferanseListe = emptyList(), - innkreving = innkrevingstype!!, - skyldner = Personident(behandling.bidragsmottaker!!.ident!!), - kravhaver = Personident(""), - mottaker = Personident(""), - valutakode = "NOK", - omgjørVedtakId = refVedtaksid?.toInt(), - sak = Saksnummer(saksnummer), - ), - ), + mapEngangsbeløpGebyr() + mapEngangsbeløpDirekteOppgjør(sak), grunnlagListe = grunnlagListe.map(GrunnlagDto::tilOpprettRequestDto), ) } } + private fun Behandling.mapEngangsbeløpGebyr() = + listOf( + OpprettEngangsbeløpRequestDto( + type = Engangsbeløptype.GEBYR_SKYLDNER, + beløp = BigDecimal.ZERO, // TODO: Gebyr fra beregning + betaltBeløp = null, + resultatkode = Resultatkode.GEBYR_ILAGT.name, // TODO: Resultat fra beregning + eksternReferanse = null, + beslutning = Beslutningstype.ENDRING, + grunnlagReferanseListe = emptyList(), + innkreving = Innkrevingstype.MED_INNKREVING, + skyldner = Personident(bidragspliktig!!.ident!!), + kravhaver = skyldnerNav, + mottaker = skyldnerNav, + valutakode = "NOK", + sak = Saksnummer(saksnummer), + ), + OpprettEngangsbeløpRequestDto( + type = Engangsbeløptype.GEBYR_MOTTAKER, + beløp = BigDecimal.ZERO, // TODO: Gebyr fra beregning + betaltBeløp = null, + resultatkode = Resultatkode.GEBYR_ILAGT.name, // TODO: Resultat fra beregning + eksternReferanse = null, + beslutning = Beslutningstype.ENDRING, + grunnlagReferanseListe = emptyList(), + innkreving = Innkrevingstype.MED_INNKREVING, + skyldner = Personident(bidragsmottaker!!.ident!!), + kravhaver = skyldnerNav, + mottaker = skyldnerNav, + valutakode = "NOK", + sak = Saksnummer(saksnummer), + ), + ) + + private fun Behandling.mapEngangsbeløpDirekteOppgjør(sak: BidragssakDto) = + søknadsbarn + .filter { + it.innbetaltBeløp != null && + it.innbetaltBeløp!! > BigDecimal.ZERO + }.map { + mapper.run { + OpprettEngangsbeløpRequestDto( + type = Engangsbeløptype.DIREKTE_OPPGJØR, + beløp = it.innbetaltBeløp, + betaltBeløp = null, + resultatkode = Resultatkode.DIREKTE_OPPJØR.name, + eksternReferanse = null, + beslutning = Beslutningstype.ENDRING, + grunnlagReferanseListe = emptyList(), + innkreving = innkrevingstype!!, + skyldner = tilSkyldner(), + kravhaver = + it.tilNyestePersonident() + ?: rolleManglerIdent(Rolletype.BARN, id!!), + mottaker = + roller + .reelMottakerEllerBidragsmottaker( + sak.hentRolleMedFnr(it.ident!!), + ), + valutakode = "NOK", + omgjørVedtakId = refVedtaksid?.toInt(), + sak = Saksnummer(saksnummer), + ) + } + } + fun Behandling.byggOpprettVedtakRequestAvslagForBidrag(): OpprettVedtakRequestDto = mapper.run { val sak = sakConsumer.hentSak(saksnummer) @@ -147,6 +167,7 @@ class BehandlingTilVedtakMapping( return byggOpprettVedtakRequestObjekt() .copy( + engangsbeløpListe = mapEngangsbeløpGebyr(), stønadsendringListe = søknadsbarn.map { OpprettStønadsendringRequestDto( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerBidrag.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerBidrag.kt index fcfa5707c..3aa1be8d9 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerBidrag.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerBidrag.kt @@ -9,7 +9,9 @@ import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagsreferanse import no.nav.bidrag.behandling.transformers.vedtak.StønadsendringPeriode import no.nav.bidrag.behandling.ugyldigForespørsel import no.nav.bidrag.domene.enums.barnetilsyn.Skolealder +import no.nav.bidrag.domene.enums.barnetilsyn.Tilsynstype import no.nav.bidrag.domene.enums.beregning.Resultatkode +import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.tid.ÅrMånedsperiode @@ -18,30 +20,36 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.GrunnlagDto import no.nav.bidrag.transport.behandling.felles.grunnlag.TilleggsstønadPeriode import no.nav.bidrag.transport.behandling.vedtak.request.OpprettPeriodeRequestDto -fun Behandling.tilGrunnlagBarnetilsyn(): List = +fun Behandling.tilGrunnlagBarnetilsyn(inkluderIkkeAngitt: Boolean = false): List = underholdskostnader .flatMap { u -> - u.barnetilsyn.map { - val underholdRolle = u.person.rolle.find { it.behandling.id == id } - val gjelderBarn = - underholdRolle?.tilGrunnlagPerson() - ?: ugyldigForespørsel("Fant ikke person for underholdskostnad i behandlingen") - val gjelderBarnReferanse = gjelderBarn.referanse - GrunnlagDto( - referanse = it.tilGrunnlagsreferanseBarnetilsyn(gjelderBarnReferanse), - type = Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE, - innhold = - POJONode( - BarnetilsynMedStønadPeriode( - periode = ÅrMånedsperiode(it.fom, it.tom?.plusDays(1)), - gjelderBarn = gjelderBarnReferanse, - tilsynstype = it.omfang, - skolealder = if (it.under_skolealder == true) Skolealder.UNDER else Skolealder.OVER, - manueltRegistrert = true, + u.barnetilsyn + .filter { inkluderIkkeAngitt || it.omfang != Tilsynstype.IKKE_ANGITT && it.under_skolealder != null } + .map { + val underholdRolle = u.person.rolle.find { it.behandling.id == id } + val gjelderBarn = + underholdRolle?.tilGrunnlagPerson() + ?: ugyldigForespørsel("Fant ikke person for underholdskostnad i behandlingen") + val gjelderBarnReferanse = gjelderBarn.referanse + GrunnlagDto( + referanse = it.tilGrunnlagsreferanseBarnetilsyn(gjelderBarnReferanse), + type = Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE, + gjelderReferanse = bidragsmottaker!!.tilGrunnlagsreferanse(), + innhold = + POJONode( + BarnetilsynMedStønadPeriode( + periode = ÅrMånedsperiode(it.fom, it.tom?.plusDays(1)), + gjelderBarn = gjelderBarnReferanse, + tilsynstype = it.omfang, + skolealder = + it.under_skolealder?.let { + if (it) Skolealder.UNDER else Skolealder.OVER + } ?: Skolealder.IKKE_ANGITT, + manueltRegistrert = if (it.kilde == Kilde.OFFENTLIG) false else true, + ), ), - ), - ) - } + ) + } } fun Behandling.tilGrunnlagTilleggsstønad(): List = @@ -55,6 +63,7 @@ fun Behandling.tilGrunnlagTilleggsstønad(): List = GrunnlagDto( referanse = it.tilGrunnlagsreferanseTilleggsstønad(gjelderBarnReferanse), type = Grunnlagstype.TILLEGGSSTØNAD_PERIODE, + gjelderReferanse = bidragsmottaker!!.tilGrunnlagsreferanse(), innhold = POJONode( TilleggsstønadPeriode( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerFelles.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerFelles.kt index ebc93e149..d7e88c4fb 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerFelles.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/GrunnlagByggerFelles.kt @@ -150,15 +150,16 @@ fun Behandling.byggGrunnlagNotater(): Set { }, ).filterNotNull() val notatUnderhold = - søknadsbarn.mapNotNull { - henteNotatForTypeOgRolle(this, Notattype.UNDERHOLDSKOSTNAD, it)?.takeIfNotNullOrEmpty { innhold -> - opprettGrunnlagNotat(Notattype.UNDERHOLDSKOSTNAD, false, innhold) + roller + .mapNotNull { rolle -> + henteNotatForTypeOgRolle(this, Notattype.UNDERHOLDSKOSTNAD, rolle)?.takeIfNotNullOrEmpty { innhold -> + opprettGrunnlagNotat(Notattype.UNDERHOLDSKOSTNAD, false, innhold, rolle.tilGrunnlagsreferanse()) + } } - } val notatSamvær = - søknadsbarn.mapNotNull { - henteSamværsnotat(this, it)?.takeIfNotNullOrEmpty { innhold -> - opprettGrunnlagNotat(Notattype.SAMVÆR, false, innhold) + roller.mapNotNull { rolle -> + henteSamværsnotat(this, rolle)?.takeIfNotNullOrEmpty { innhold -> + opprettGrunnlagNotat(Notattype.SAMVÆR, false, innhold, rolle.tilGrunnlagsreferanse()) } } val notatGrunnlagInntekter = diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/Grunnlagsreferanser.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/Grunnlagsreferanser.kt index 77e840116..3f83556f7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/Grunnlagsreferanser.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/Grunnlagsreferanser.kt @@ -2,11 +2,17 @@ package no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak import no.nav.bidrag.behandling.database.datamodell.Barnetilsyn import no.nav.bidrag.behandling.database.datamodell.FaktiskTilsynsutgift +import no.nav.bidrag.behandling.database.datamodell.Samværsperiode import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad +import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagPerson import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.transport.behandling.felles.grunnlag.Grunnlagsreferanse import no.nav.bidrag.transport.felles.toCompactString +fun Samværsperiode.tilGrunnlagsreferanseSamværsperiode() = + "samvær_${Grunnlagstype.SAMVÆRSPERIODE}_${fom.toCompactString()}" + + "${tom?.let { "_${it.toCompactString()}" } ?: ""}_${samvær.rolle.tilGrunnlagPerson().referanse}" + fun Barnetilsyn.tilGrunnlagsreferanseBarnetilsyn(gjelderBarnReferanse: Grunnlagsreferanse) = "${Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE}_${gjelderBarnReferanse}_${fom.toCompactString()}${tom?.let { "_${it.toCompactString()}" diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/VedtakGrunnlagMapper.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/VedtakGrunnlagMapper.kt index d0478f411..cb4a28fee 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/VedtakGrunnlagMapper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/vedtak/mapping/tilvedtak/VedtakGrunnlagMapper.kt @@ -97,7 +97,7 @@ class VedtakGrunnlagMapper( grunnlagsliste.addAll(grunnlagLøpendeBidrag) } TypeBehandling.BIDRAG -> { - grunnlagsliste.addAll(tilGrunnlagUnderholdskostnad()) + grunnlagsliste.addAll(tilGrunnlagUnderholdskostnad(grunnlagsliste)) grunnlagsliste.addAll(tilGrunnlagSamvær(søknadsbarn)) } @@ -140,6 +140,9 @@ class VedtakGrunnlagMapper( grunnlagListe.addAll( byggGrunnlagUtgiftsposter() + byggGrunnlagUtgiftDirekteBetalt() + byggGrunnlagUtgiftMaksGodkjentBeløp(), ) + TypeBehandling.BIDRAG -> { + grunnlagListe.addAll(tilGrunnlagBarnetilsyn(true)) + } else -> {} } return grunnlagListe.toSet() diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt new file mode 100644 index 000000000..82d40bebd --- /dev/null +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/CommonVedtakTilBehandlingTest.kt @@ -0,0 +1,135 @@ +package no.nav.bidrag.behandling.service + +import com.ninjasquad.springmockk.MockkBean +import io.getunleash.FakeUnleash +import io.mockk.every +import io.mockk.impl.annotations.MockK +import no.nav.bidrag.behandling.consumer.BidragPersonConsumer +import no.nav.bidrag.behandling.consumer.BidragSakConsumer +import no.nav.bidrag.behandling.consumer.BidragVedtakConsumer +import no.nav.bidrag.behandling.database.repository.PersonRepository +import no.nav.bidrag.behandling.database.repository.UnderholdskostnadRepository +import no.nav.bidrag.behandling.transformers.Dtomapper +import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning +import no.nav.bidrag.behandling.transformers.vedtak.mapping.fravedtak.VedtakTilBehandlingMapping +import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2 +import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilVedtakMapping +import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper +import no.nav.bidrag.beregn.barnebidrag.BeregnBarnebidragApi +import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi +import no.nav.bidrag.commons.web.mock.stubKodeverkProvider +import no.nav.bidrag.commons.web.mock.stubSjablonProvider +import no.nav.bidrag.commons.web.mock.stubSjablonService +import no.nav.bidrag.transport.behandling.vedtak.response.OpprettVedtakResponseDto +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.extension.ExtendWith +import org.springframework.test.context.junit.jupiter.SpringExtension +import stubPersonConsumer +import stubPersonRepository +import stubSaksbehandlernavnProvider +import stubTokenUtils + +@ExtendWith(SpringExtension::class) +abstract class CommonVedtakTilBehandlingTest { + @MockkBean + lateinit var behandlingService: BehandlingService + + @MockkBean + lateinit var grunnlagService: GrunnlagService + + @MockkBean + lateinit var notatOpplysningerService: NotatOpplysningerService + + @MockkBean + lateinit var tilgangskontrollService: TilgangskontrollService + + @MockkBean + lateinit var vedtakConsumer: BidragVedtakConsumer + + @MockkBean + lateinit var evnevurderingService: BeregningEvnevurderingService + + @MockkBean + lateinit var validerBehandlingService: ValiderBehandlingService + + @MockK + lateinit var underholdskostnadRepository: UnderholdskostnadRepository + + lateinit var personRepository: PersonRepository + + @MockkBean + lateinit var sakConsumer: BidragSakConsumer + lateinit var personConsumer: BidragPersonConsumer + lateinit var vedtakService: VedtakService + lateinit var beregningService: BeregningService + lateinit var dtomapper: Dtomapper + val unleash = FakeUnleash() + val notatService = NotatService() + + @BeforeEach + fun initMocks() { + val validerBeregning = ValiderBeregning() + personRepository = stubPersonRepository() + personConsumer = stubPersonConsumer() + val personService = PersonService(personConsumer) + val behandlingTilGrunnlagMappingV2 = BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())) + dtomapper = + Dtomapper( + tilgangskontrollService, + validerBeregning, + validerBehandlingService, + VedtakGrunnlagMapper(behandlingTilGrunnlagMappingV2, validerBeregning, evnevurderingService, personService), + BeregnBarnebidragApi(), + ) + val underholdService = + UnderholdService( + underholdskostnadRepository, + personRepository, + notatService, + dtomapper, + ) + val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning, underholdService = underholdService) + val vedtakGrunnlagMapper = + VedtakGrunnlagMapper( + BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())), + validerBeregning, + evnevurderingService, + personService, + ) + + beregningService = + BeregningService( + behandlingService, + vedtakGrunnlagMapper, + ) + val behandlingTilVedtakMapping = BehandlingTilVedtakMapping(sakConsumer, vedtakGrunnlagMapper, beregningService) + + vedtakService = + VedtakService( + behandlingService, + grunnlagService, + notatOpplysningerService, + tilgangskontrollService, + vedtakConsumer, + unleash, + validerBeregning, + vedtakTilBehandlingMapping, + behandlingTilVedtakMapping, + validerBehandlingService, + ) + unleash.enableAll() + every { grunnlagService.oppdatereGrunnlagForBehandling(any()) } returns Unit + every { tilgangskontrollService.sjekkTilgangPersonISak(any(), any()) } returns Unit + every { tilgangskontrollService.sjekkTilgangBehandling(any()) } returns Unit + every { tilgangskontrollService.sjekkTilgangVedtak(any()) } returns Unit + every { notatOpplysningerService.opprettNotat(any()) } returns "213" + every { behandlingService.oppdaterVedtakFattetStatus(any(), any()) } returns Unit + every { validerBehandlingService.validerKanBehandlesINyLøsning(any()) } returns Unit + every { vedtakConsumer.fatteVedtak(any()) } returns OpprettVedtakResponseDto(1, emptyList()) + stubSjablonProvider() + stubPersonConsumer() + stubTokenUtils() + stubSaksbehandlernavnProvider() + stubKodeverkProvider() + } +} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt index 4a537d808..41212f275 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/UnderholdServiceTest.kt @@ -17,10 +17,7 @@ import no.nav.bidrag.behandling.database.datamodell.FaktiskTilsynsutgift import no.nav.bidrag.behandling.database.datamodell.Person import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad -import no.nav.bidrag.behandling.database.repository.BarnetilsynRepository -import no.nav.bidrag.behandling.database.repository.FaktiskTilsynsutgiftRepository import no.nav.bidrag.behandling.database.repository.PersonRepository -import no.nav.bidrag.behandling.database.repository.TilleggsstønadRepository import no.nav.bidrag.behandling.database.repository.UnderholdskostnadRepository import no.nav.bidrag.behandling.dto.v2.underhold.BarnDto import no.nav.bidrag.behandling.dto.v2.underhold.DatoperiodeDto @@ -58,15 +55,6 @@ import kotlin.test.assertFailsWith @ExtendWith(MockKExtension::class) class UnderholdServiceTest { - @MockK - lateinit var barnetilsynRepository: BarnetilsynRepository - - @MockK - lateinit var faktiskTilsynsutgiftRepository: FaktiskTilsynsutgiftRepository - - @MockK - lateinit var tilleggsstønadRepository: TilleggsstønadRepository - @MockK lateinit var underholdskostnadRepository: UnderholdskostnadRepository @@ -125,14 +113,19 @@ class UnderholdServiceTest { ) underholdService = UnderholdService( - barnetilsynRepository, - faktiskTilsynsutgiftRepository, - tilleggsstønadRepository, underholdskostnadRepository, personRepository, notatService, dtomapper, ) + + every { underholdskostnadRepository.save(any()) }.answers { + val underholdskostnad = firstArg() + underholdskostnad.tilleggsstønad.forEachIndexed { index, tilleggsstønad -> tilleggsstønad.id = index.toLong() } + underholdskostnad.barnetilsyn.forEachIndexed { index, barnetilsyn -> barnetilsyn.id = index.toLong() } + underholdskostnad.faktiskeTilsynsutgifter.forEachIndexed { index, faktiskeTilsynsutgifter -> faktiskeTilsynsutgifter.id = index.toLong() } + underholdskostnad + } } @Nested @@ -303,14 +296,15 @@ class UnderholdServiceTest { dagsats = BigDecimal(365), ) - every { tilleggsstønadRepository.save(any()) } returns + underholdskostnad.tilleggsstønad.add( Tilleggsstønad( 1L, underholdskostnad, fom = request.periode.fom, tom = request.periode.tom, request.dagsats, - ) + ), + ) // hvis underholdService.oppdatereTilleggsstønad(underholdskostnad, request) @@ -369,15 +363,6 @@ class UnderholdServiceTest { dagsats = BigDecimal(365), ) - every { tilleggsstønadRepository.save(any()) } returns - Tilleggsstønad( - 1L, - underholdskostnad, - fom = request.periode.fom, - tom = request.periode.tom, - request.dagsats, - ) - // hvis underholdService.oppdatereTilleggsstønad(underholdskostnad, request) @@ -432,7 +417,7 @@ class UnderholdServiceTest { tilsynstype = Tilsynstype.HELTID, ) - every { barnetilsynRepository.save(any()) } returns + underholdskostnad.barnetilsyn.add( Barnetilsyn( 1L, underholdskostnad, @@ -446,8 +431,8 @@ class UnderholdServiceTest { }, request.tilsynstype, kilde = Kilde.OFFENTLIG, - ) - + ), + ) // hvis underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request) @@ -511,22 +496,6 @@ class UnderholdServiceTest { tilsynstype = Tilsynstype.DELTID, ) - every { barnetilsynRepository.save(any()) } returns - Barnetilsyn( - 1L, - underholdskostnad, - fom = request.periode.fom, - tom = request.periode.tom, - under_skolealder = - when (request.skolealder) { - Skolealder.OVER -> false - Skolealder.UNDER -> true - else -> null - }, - request.tilsynstype, - kilde = Kilde.OFFENTLIG, - ) - // hvis underholdService.oppdatereStønadTilBarnetilsynManuelt(underholdskostnad, request) @@ -583,7 +552,7 @@ class UnderholdServiceTest { kommentar = "Kostpenger gjelder ikke fredager", ) - every { faktiskTilsynsutgiftRepository.save(any()) } returns + underholdskostnad.faktiskeTilsynsutgifter.add( FaktiskTilsynsutgift( 1L, underholdskostnad, @@ -592,8 +561,8 @@ class UnderholdServiceTest { tilsynsutgift = request.utgift, kostpenger = request.kostpenger, kommentar = request.kommentar, - ) - + ), + ) // hvis underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request) @@ -657,17 +626,6 @@ class UnderholdServiceTest { kommentar = "Kostpenger gjelder ikke fredager", ) - every { faktiskTilsynsutgiftRepository.save(any()) } returns - FaktiskTilsynsutgift( - 1L, - underholdskostnad, - fom = request.periode.fom, - tom = request.periode.tom, - tilsynsutgift = request.utgift, - kostpenger = request.kostpenger, - kommentar = request.kommentar, - ) - // hvis underholdService.oppdatereFaktiskeTilsynsutgifter(underholdskostnad, request) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingForskuddTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingForskuddTest.kt index 39494271e..ef41977f0 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingForskuddTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingForskuddTest.kt @@ -1,16 +1,11 @@ package no.nav.bidrag.behandling.service -import com.ninjasquad.springmockk.MockkBean -import createPersonServiceMock -import io.getunleash.FakeUnleash import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldContain import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import io.mockk.every -import no.nav.bidrag.behandling.consumer.BidragSakConsumer -import no.nav.bidrag.behandling.consumer.BidragVedtakConsumer import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.konvertereData @@ -19,13 +14,8 @@ import no.nav.bidrag.behandling.dto.v1.behandling.OpprettBehandlingFraVedtakRequ import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagsdatatype import no.nav.bidrag.behandling.service.NotatService.Companion.henteInntektsnotat import no.nav.bidrag.behandling.service.NotatService.Companion.henteNotatinnhold -import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning import no.nav.bidrag.behandling.transformers.grunnlag.ainntektListe import no.nav.bidrag.behandling.transformers.grunnlag.skattegrunnlagListe -import no.nav.bidrag.behandling.transformers.vedtak.mapping.fravedtak.VedtakTilBehandlingMapping -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2 -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilVedtakMapping -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper import no.nav.bidrag.behandling.utils.testdata.SAKSBEHANDLER_IDENT import no.nav.bidrag.behandling.utils.testdata.SAKSNUMMER import no.nav.bidrag.behandling.utils.testdata.filtrerEtterTypeOgIdent @@ -35,10 +25,6 @@ import no.nav.bidrag.behandling.utils.testdata.testdataBM import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 import no.nav.bidrag.behandling.utils.testdata.testdataBarn2 import no.nav.bidrag.behandling.utils.testdata.testdataHusstandsmedlem1 -import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi -import no.nav.bidrag.commons.web.mock.stubKodeverkProvider -import no.nav.bidrag.commons.web.mock.stubSjablonProvider -import no.nav.bidrag.commons.web.mock.stubSjablonService import no.nav.bidrag.domene.enums.beregning.Resultatkode import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering @@ -51,94 +37,14 @@ import no.nav.bidrag.domene.enums.vedtak.Stønadstype import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.domene.enums.vedtak.VirkningstidspunktÅrsakstype import no.nav.bidrag.transport.behandling.inntekt.response.SummertÅrsinntekt -import no.nav.bidrag.transport.behandling.vedtak.response.OpprettVedtakResponseDto import no.nav.bidrag.transport.behandling.vedtak.response.VedtakDto import no.nav.bidrag.transport.felles.commonObjectmapper -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.springframework.test.context.junit.jupiter.SpringExtension -import stubPersonConsumer -import stubSaksbehandlernavnProvider -import stubTokenUtils import java.math.BigDecimal import java.time.LocalDate import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag.NotatType as Notattype -@ExtendWith(SpringExtension::class) -class VedtakTilBehandlingForskuddTest { - @MockkBean - lateinit var behandlingService: BehandlingService - - @MockkBean - lateinit var grunnlagService: GrunnlagService - - @MockkBean - lateinit var notatOpplysningerService: NotatOpplysningerService - - @MockkBean - lateinit var tilgangskontrollService: TilgangskontrollService - - @MockkBean - lateinit var vedtakConsumer: BidragVedtakConsumer - - @MockkBean - lateinit var evnevurderingService: BeregningEvnevurderingService - - @MockkBean - lateinit var validerBehandlingService: ValiderBehandlingService - - @MockkBean - lateinit var sakConsumer: BidragSakConsumer - lateinit var vedtakService: VedtakService - lateinit var beregningService: BeregningService - - val unleash = FakeUnleash() - - @BeforeEach - fun initMocks() { - val personService = createPersonServiceMock() - val validerBeregning = ValiderBeregning() - val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning) - val vedtakGrunnlagMapper = - VedtakGrunnlagMapper( - BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())), - validerBeregning, - evnevurderingService, - personService, - ) - beregningService = - BeregningService( - behandlingService, - vedtakGrunnlagMapper, - ) - val behandlingTilVedtakMapping = BehandlingTilVedtakMapping(sakConsumer, vedtakGrunnlagMapper, beregningService) - vedtakService = - VedtakService( - behandlingService, - grunnlagService, - notatOpplysningerService, - tilgangskontrollService, - vedtakConsumer, - unleash, - validerBeregning, - vedtakTilBehandlingMapping, - behandlingTilVedtakMapping, - validerBehandlingService, - ) - every { grunnlagService.oppdatereGrunnlagForBehandling(any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangPersonISak(any(), any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangBehandling(any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangVedtak(any()) } returns Unit - every { notatOpplysningerService.opprettNotat(any()) } returns "213" - every { vedtakConsumer.fatteVedtak(any()) } returns OpprettVedtakResponseDto(1, emptyList()) - stubSjablonProvider() - stubPersonConsumer() - stubTokenUtils() - stubSaksbehandlernavnProvider() - stubKodeverkProvider() - } - +class VedtakTilBehandlingForskuddTest : CommonVedtakTilBehandlingTest() { @Test fun `Skal konvertere vedtak til behandling for lesemodus for FORSKUDD`() { every { vedtakConsumer.hentVedtak(any()) } returns filTilVedtakDto("vedtak_response") diff --git "a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingS\303\246rbidragTest.kt" "b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingS\303\246rbidragTest.kt" index 5533c8a3b..a4397bf46 100644 --- "a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingS\303\246rbidragTest.kt" +++ "b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakTilBehandlingS\303\246rbidragTest.kt" @@ -1,17 +1,12 @@ package no.nav.bidrag.behandling.service import com.fasterxml.jackson.databind.node.POJONode -import com.ninjasquad.springmockk.MockkBean -import createPersonServiceMock -import io.getunleash.FakeUnleash import io.kotest.assertions.assertSoftly import io.kotest.matchers.collections.shouldContain import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import io.mockk.every -import no.nav.bidrag.behandling.consumer.BidragSakConsumer -import no.nav.bidrag.behandling.consumer.BidragVedtakConsumer import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.barn import no.nav.bidrag.behandling.database.datamodell.konvertereData @@ -19,13 +14,8 @@ import no.nav.bidrag.behandling.database.datamodell.voksneIHusstanden import no.nav.bidrag.behandling.database.grunnlag.SummerteInntekter import no.nav.bidrag.behandling.dto.v1.behandling.OpprettBehandlingFraVedtakRequest import no.nav.bidrag.behandling.dto.v2.behandling.Grunnlagsdatatype -import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning import no.nav.bidrag.behandling.transformers.grunnlag.ainntektListe import no.nav.bidrag.behandling.transformers.grunnlag.skattegrunnlagListe -import no.nav.bidrag.behandling.transformers.vedtak.mapping.fravedtak.VedtakTilBehandlingMapping -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2 -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilVedtakMapping -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper import no.nav.bidrag.behandling.utils.testdata.SAKSNUMMER import no.nav.bidrag.behandling.utils.testdata.filtrerEtterTypeOgIdent import no.nav.bidrag.behandling.utils.testdata.lagVedtaksdata @@ -33,10 +23,6 @@ import no.nav.bidrag.behandling.utils.testdata.oppretteBehandling import no.nav.bidrag.behandling.utils.testdata.testdataBM import no.nav.bidrag.behandling.utils.testdata.testdataBP import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 -import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi -import no.nav.bidrag.commons.web.mock.stubKodeverkProvider -import no.nav.bidrag.commons.web.mock.stubSjablonProvider -import no.nav.bidrag.commons.web.mock.stubSjablonService import no.nav.bidrag.domene.enums.beregning.Resultatkode import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype @@ -51,94 +37,13 @@ import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.transport.behandling.felles.grunnlag.SøknadGrunnlag import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt import no.nav.bidrag.transport.behandling.inntekt.response.SummertÅrsinntekt -import no.nav.bidrag.transport.behandling.vedtak.response.OpprettVedtakResponseDto -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.springframework.test.context.junit.jupiter.SpringExtension -import stubPersonConsumer -import stubSaksbehandlernavnProvider -import stubTokenUtils import java.math.BigDecimal import java.math.MathContext import java.time.LocalDate import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag.NotatType as Notattype -@ExtendWith(SpringExtension::class) -class VedtakTilBehandlingSærbidragTest { - @MockkBean - lateinit var behandlingService: BehandlingService - - @MockkBean - lateinit var grunnlagService: GrunnlagService - - @MockkBean - lateinit var notatOpplysningerService: NotatOpplysningerService - - @MockkBean - lateinit var tilgangskontrollService: TilgangskontrollService - - @MockkBean - lateinit var evnevurderingService: BeregningEvnevurderingService - - @MockkBean - lateinit var vedtakConsumer: BidragVedtakConsumer - - @MockkBean - lateinit var validerBehandlingService: ValiderBehandlingService - - @MockkBean - lateinit var sakConsumer: BidragSakConsumer - lateinit var vedtakService: VedtakService - lateinit var beregningService: BeregningService - - val unleash = FakeUnleash() - - @BeforeEach - fun initMocks() { - val personService = createPersonServiceMock() - val validerBeregning = ValiderBeregning() - val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning) - val vedtakGrunnlagMapper = - VedtakGrunnlagMapper( - BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())), - validerBeregning, - evnevurderingService, - personService, - ) - beregningService = - BeregningService( - behandlingService, - vedtakGrunnlagMapper, - ) - val behandlingTilVedtakMapping = BehandlingTilVedtakMapping(sakConsumer, vedtakGrunnlagMapper, beregningService) - vedtakService = - VedtakService( - behandlingService, - grunnlagService, - notatOpplysningerService, - tilgangskontrollService, - vedtakConsumer, - unleash, - validerBeregning, - vedtakTilBehandlingMapping, - behandlingTilVedtakMapping, - validerBehandlingService, - ) - every { validerBehandlingService.validerKanBehandlesINyLøsning(any()) } returns Unit - every { grunnlagService.oppdatereGrunnlagForBehandling(any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangPersonISak(any(), any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangBehandling(any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangVedtak(any()) } returns Unit - every { notatOpplysningerService.opprettNotat(any()) } returns "213" - every { vedtakConsumer.fatteVedtak(any()) } returns OpprettVedtakResponseDto(1, emptyList()) - stubSjablonProvider() - stubPersonConsumer() - stubTokenUtils() - stubSaksbehandlernavnProvider() - stubKodeverkProvider() - } - +class VedtakTilBehandlingSærbidragTest : CommonVedtakTilBehandlingTest() { @Test fun `Skal konvertere vedtak til behandling for lesemodus for SÆRBIDRAG`() { every { vedtakConsumer.hentVedtak(any()) } returns lagVedtaksdata("vedtak_response-særbidrag") diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt index 9c7703056..915790eb5 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceBidragTest.kt @@ -2,9 +2,8 @@ package no.nav.bidrag.behandling.service import io.kotest.assertions.assertSoftly import io.kotest.assertions.withClue -import io.kotest.matchers.collections.shouldBeEmpty +import io.kotest.matchers.booleans.shouldBeTrue import io.kotest.matchers.collections.shouldHaveSize -import io.kotest.matchers.collections.shouldNotBeEmpty import io.kotest.matchers.date.shouldHaveSameDayAs import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe @@ -12,25 +11,34 @@ import io.mockk.every import io.mockk.slot import io.mockk.verify import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.Utgiftspost import no.nav.bidrag.behandling.service.NotatService.Companion.henteNotatinnhold -import no.nav.bidrag.behandling.transformers.validering.virkningstidspunkt import no.nav.bidrag.behandling.utils.hentGrunnlagstype import no.nav.bidrag.behandling.utils.hentGrunnlagstyper +import no.nav.bidrag.behandling.utils.hentGrunnlagstyperForReferanser +import no.nav.bidrag.behandling.utils.hentNotat import no.nav.bidrag.behandling.utils.hentPerson import no.nav.bidrag.behandling.utils.shouldContainPerson import no.nav.bidrag.behandling.utils.søknad -import no.nav.bidrag.behandling.utils.testdata.SAKSBEHANDLER_IDENT -import no.nav.bidrag.behandling.utils.testdata.initGrunnlagRespons +import no.nav.bidrag.behandling.utils.testdata.SAKSNUMMER +import no.nav.bidrag.behandling.utils.testdata.erstattVariablerITestFil +import no.nav.bidrag.behandling.utils.testdata.leggTilBarnetillegg +import no.nav.bidrag.behandling.utils.testdata.leggTilBarnetilsyn +import no.nav.bidrag.behandling.utils.testdata.leggTilFaktiskTilsynsutgift import no.nav.bidrag.behandling.utils.testdata.leggTilNotat +import no.nav.bidrag.behandling.utils.testdata.leggTilSamvær +import no.nav.bidrag.behandling.utils.testdata.leggTilTillegsstønad +import no.nav.bidrag.behandling.utils.testdata.opprettAlleAktiveGrunnlagFraFil import no.nav.bidrag.behandling.utils.testdata.opprettGyldigBehandlingForBeregningOgVedtak -import no.nav.bidrag.behandling.utils.testdata.opprettInntekt import no.nav.bidrag.behandling.utils.testdata.opprettSakForBehandling +import no.nav.bidrag.behandling.utils.testdata.opprettSakForBehandlingMedReelMottaker import no.nav.bidrag.behandling.utils.testdata.testdataBM import no.nav.bidrag.behandling.utils.testdata.testdataBP import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 +import no.nav.bidrag.behandling.utils.testdata.testdataBarnBm import no.nav.bidrag.behandling.utils.testdata.testdataHusstandsmedlem1 import no.nav.bidrag.behandling.utils.virkningsdato +import no.nav.bidrag.domene.enums.barnetilsyn.Skolealder +import no.nav.bidrag.domene.enums.barnetilsyn.Tilsynstype import no.nav.bidrag.domene.enums.behandling.TypeBehandling import no.nav.bidrag.domene.enums.beregning.Resultatkode import no.nav.bidrag.domene.enums.beregning.Samværsklasse @@ -38,128 +46,108 @@ import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.domene.enums.person.Bostatuskode -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.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Beslutningstype import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import no.nav.bidrag.domene.enums.vedtak.Innkrevingstype import no.nav.bidrag.domene.enums.vedtak.Stønadstype import no.nav.bidrag.domene.enums.vedtak.Vedtakstype +import no.nav.bidrag.domene.enums.vedtak.VirkningstidspunktÅrsakstype import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.domene.sak.Saksnummer import no.nav.bidrag.domene.tid.ÅrMånedsperiode +import no.nav.bidrag.transport.behandling.beregning.samvær.SamværskalkulatorDetaljer +import no.nav.bidrag.transport.behandling.felles.grunnlag.BarnetilsynMedStønadPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.BeregnetInntekt import no.nav.bidrag.transport.behandling.felles.grunnlag.BostatusPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragsevne import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragspliktigesAndel -import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningBidragspliktigesBeregnedeTotalbidrag -import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningUtgift +import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningSamværsfradrag +import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningSamværsklasse +import no.nav.bidrag.transport.behandling.felles.grunnlag.DelberegningUnderholdskostnad +import no.nav.bidrag.transport.behandling.felles.grunnlag.FaktiskUtgiftPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.InntektsrapporteringPeriode -import no.nav.bidrag.transport.behandling.felles.grunnlag.LøpendeBidragGrunnlag import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag -import no.nav.bidrag.transport.behandling.felles.grunnlag.SluttberegningSærbidrag -import no.nav.bidrag.transport.behandling.felles.grunnlag.SærbidragskategoriGrunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.SamværsperiodeGrunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.SluttberegningBarnebidrag import no.nav.bidrag.transport.behandling.felles.grunnlag.SøknadGrunnlag -import no.nav.bidrag.transport.behandling.felles.grunnlag.UtgiftDirekteBetaltGrunnlag -import no.nav.bidrag.transport.behandling.felles.grunnlag.UtgiftMaksGodkjentBeløpGrunnlag -import no.nav.bidrag.transport.behandling.felles.grunnlag.UtgiftspostGrunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.TilleggsstønadPeriode import no.nav.bidrag.transport.behandling.felles.grunnlag.VirkningstidspunktGrunnlag -import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåEgenReferanse import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåFremmedReferanse import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertAv import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt -import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjektListe -import no.nav.bidrag.transport.behandling.vedtak.request.OpprettGrunnlagRequestDto import no.nav.bidrag.transport.behandling.vedtak.request.OpprettVedtakRequestDto import no.nav.bidrag.transport.behandling.vedtak.response.OpprettVedtakResponseDto import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith import org.springframework.test.context.junit.jupiter.SpringExtension -import org.springframework.transaction.annotation.Transactional -import stubHentPersonNyIdent import stubPersonConsumer import java.math.BigDecimal -import java.math.RoundingMode -import java.time.LocalDate -import java.time.LocalDateTime import java.time.YearMonth @ExtendWith(SpringExtension::class) -class VedtakserviceBidragTest : VedtakserviceTest() { +class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() { @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling`() { + fun `Skal fatte vedtak og opprette grunnlagsstruktur for en bidrag behandling`() { stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Notat inntekt BM", + val behandling = opprettGyldigBehandlingForBeregningOgVedtak(true, typeBehandling = TypeBehandling.BIDRAG) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!, behandling.virkningstidspunkt!!.plusMonths(1)), samværsklasse = Samværsklasse.SAMVÆRSKLASSE_1, medId = true) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), medId = true) + behandling.leggTilTillegsstønad(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(4), null), medId = true) + behandling.leggTilFaktiskTilsynsutgift(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), testdataHusstandsmedlem1, medId = true) + behandling.leggTilFaktiskTilsynsutgift( + ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), + testdataBarnBm, + medId = true, + ) + behandling.leggTilFaktiskTilsynsutgift(ÅrMånedsperiode(behandling.virkningstidspunkt!!, null), medId = true) + behandling.leggTilBarnetilsyn(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), generateId = true) + behandling.leggTilBarnetilsyn( + ÅrMånedsperiode(behandling.virkningstidspunkt!!, behandling.virkningstidspunkt!!.plusMonths(1)), + generateId = true, + tilsynstype = Tilsynstype.IKKE_ANGITT, + under_skolealder = null, + kilde = Kilde.OFFENTLIG, + ) + behandling.leggTilBarnetillegg(testdataBarn1, behandling.bidragsmottaker!!, medId = true) + behandling.leggTilBarnetillegg(testdataBarn1, behandling.bidragspliktig!!, medId = true) + behandling.leggTilNotat( + "Inntektsbegrunnelse kun i notat", NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, + behandling.bidragsmottaker, ) behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, + "Virkningstidspunkt kun i notat", + NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT, ) behandling.leggTilNotat( - "Notat inntekt BA", - NotatGrunnlag.NotatType.INNTEKT, - behandling.søknadsbarn.first()!!, + "Boforhold", + NotatGrunnlag.NotatType.BOFORHOLD, ) behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, + "Samvær", + NotatGrunnlag.NotatType.SAMVÆR, + behandling.søknadsbarn.first(), ) behandling.leggTilNotat( - "Boforhold", - NotatGrunnlag.NotatType.BOFORHOLD, + "Underhold barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.søknadsbarn.first(), + ) + behandling.leggTilNotat( + "Underhold andre barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.bidragsmottaker, ) behandling.refVedtaksid = 553 - behandling.klageMottattdato = LocalDate.now() - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.maksGodkjentBeløp = BigDecimal(4000) - behandling.utgift!!.maksGodkjentBeløpBegrunnelse = "Maks godkjent beløp" - behandling.utgift!!.maksGodkjentBeløpTaMed = false - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), + behandling.grunnlag = + opprettAlleAktiveGrunnlagFraFil( + behandling, + erstattVariablerITestFil("grunnlagresponse_bp"), ) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) + every { behandlingService.hentBehandlingById(any()) } returns behandling every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) @@ -171,155 +159,90 @@ class VedtakserviceBidragTest : VedtakserviceTest() { ) vedtakService.fatteVedtak(behandling.id!!) - entityManager.flush() - entityManager.refresh(behandling) - val opprettVedtakRequest = opprettVedtakSlot.captured - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } + val opprettVedtakRequest = opprettVedtakSlot.captured assertSoftly(opprettVedtakRequest) { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 + request.stønadsendringListe shouldHaveSize 1 + request.engangsbeløpListe.shouldHaveSize(2) withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") { - request.grunnlagListe shouldHaveSize 109 + request.grunnlagListe shouldHaveSize 167 } } + assertSoftly(opprettVedtakRequest.engangsbeløpListe) { + shouldHaveSize(2) + val gebyrMottaker = it.find { it.type == Engangsbeløptype.GEBYR_MOTTAKER }!! + + gebyrMottaker.beløp shouldBe BigDecimal(0) + gebyrMottaker.kravhaver shouldBe Personident("NAV") + gebyrMottaker.mottaker shouldBe Personident("NAV") + gebyrMottaker.innkreving shouldBe Innkrevingstype.MED_INNKREVING + gebyrMottaker.resultatkode shouldBe Resultatkode.GEBYR_ILAGT.name + gebyrMottaker.sak shouldBe Saksnummer(SAKSNUMMER) + gebyrMottaker.skyldner shouldBe Personident(testdataBM.ident) + + val gebyrSkyldner = it.find { it.type == Engangsbeløptype.GEBYR_SKYLDNER }!! + + gebyrSkyldner.beløp shouldBe BigDecimal(0) + gebyrSkyldner.kravhaver shouldBe Personident("NAV") + gebyrSkyldner.mottaker shouldBe Personident("NAV") + gebyrSkyldner.innkreving shouldBe Innkrevingstype.MED_INNKREVING + gebyrSkyldner.resultatkode shouldBe Resultatkode.GEBYR_ILAGT.name + gebyrSkyldner.sak shouldBe Saksnummer(SAKSNUMMER) + gebyrSkyldner.skyldner shouldBe Personident(testdataBP.ident) + } opprettVedtakRequest.validerVedtaksdetaljer(behandling) opprettVedtakRequest.validerPersongrunnlag() - opprettVedtakRequest.validerSluttberegning(behandling.virkningstidspunkt!!) - opprettVedtakRequest.validerBosstatusPerioder(behandling.virkningstidspunkt!!) + opprettVedtakRequest.validerSluttberegning() + opprettVedtakRequest.validerBosstatusPerioder() opprettVedtakRequest.validerInntekter() -// - - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe BigDecimal(9839) - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.SÆRBIDRAG_INNVILGET.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 9 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SÆRBIDRAG_KATEGORI, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.NOTAT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 5 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SØKNAD, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.VIRKNINGSTIDSPUNKT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - it.betaltBeløp shouldBe BigDecimal(500) - } + opprettVedtakRequest.validerSamvær() + opprettVedtakRequest.validerUndeholdskostnad() + assertSoftly(opprettVedtakRequest) { - val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! - val barn1Grunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! - assertSoftly(hentGrunnlagstyper(Grunnlagstype.SÆRBIDRAG_KATEGORI)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.kategori shouldBe Særbidragskategori.KONFIRMASJON - innhold.beskrivelse shouldBe null - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløpDirekteBetalt shouldBe BigDecimal(500) - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER)) { - shouldHaveSize(1) - val innholdList = innholdTilObjektListe>().first() - innholdList shouldHaveSize 3 - val utgiftspost = innholdList.find { it.type == Utgiftstype.KONFIRMASJONSAVGIFT.name }!! - utgiftspost.dato shouldBe LocalDate.now().minusMonths(3) - utgiftspost.type shouldBe Utgiftstype.KONFIRMASJONSAVGIFT.name - utgiftspost.kravbeløp shouldBe BigDecimal(15000) - utgiftspost.godkjentBeløp shouldBe BigDecimal(5000) - utgiftspost.kommentar shouldBe "Inneholder avgifter for alkohol og pynt" - } - - assertSoftly(hentGrunnlagstyper(Grunnlagstype.LØPENDE_BIDRAG)) { - it.shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.løpendeBidragListe shouldHaveSize 3 - innhold.løpendeBidragListe[0].type shouldBe Stønadstype.BIDRAG - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[0].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_SØKNADSBARN - innhold.løpendeBidragListe[1].type shouldBe Stønadstype.BIDRAG - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[1].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_HUSSTANDSMEDLEM - innhold.løpendeBidragListe[2].type shouldBe Stønadstype.BIDRAG18AAR - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[1].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_HUSSTANDSMEDLEM - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { - shouldHaveSize(5) - val innholdListe = innholdTilObjekt() - innholdListe.find { it.type == NotatGrunnlag.NotatType.UTGIFTER }!!.innhold shouldBe - henteNotatinnhold(behandling, NotatGrunnlag.NotatType.UTGIFTER) - val notatInntekter = this.filter { it.innholdTilObjekt().type == NotatGrunnlag.NotatType.INNTEKT } - notatInntekter.find { it.gjelderReferanse == bmGrunnlag.referanse }!!.innholdTilObjekt().innhold shouldBe - "Notat inntekt BM" - notatInntekter.find { it.gjelderReferanse == bpGrunnlag.referanse }!!.innholdTilObjekt().innhold shouldBe - "Notat inntekt BP" - notatInntekter.find { it.gjelderReferanse == barn1Grunnlag.referanse }!!.innholdTilObjekt().innhold shouldBe - "Notat inntekt BA" - } + assertSoftly(hentGrunnlagstype(Grunnlagstype.BEREGNET_INNTEKT, bpGrunnlag.referanse)) { + val innhold = it!!.innholdTilObjekt() + it.gjelderReferanse.shouldBe(bpGrunnlag.referanse) + innhold.summertMånedsinntektListe.shouldHaveSize(13) + } + assertSoftly(hentGrunnlagstyper(Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE)) { + shouldHaveSize(2) + assertSoftly(this[0].innholdTilObjekt()) { + skolealder shouldBe Skolealder.UNDER + tilsynstype shouldBe Tilsynstype.HELTID + } + assertSoftly(this[1].innholdTilObjekt()) { + skolealder shouldBe Skolealder.IKKE_ANGITT + tilsynstype shouldBe Tilsynstype.IKKE_ANGITT + } + } + validerNotater(behandling) + hentGrunnlagstyper(Grunnlagstype.TILLEGGSSTØNAD_PERIODE) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.FAKTISK_UTGIFT_PERIODE) shouldHaveSize 3 + hentGrunnlagstyper(Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.SAMVÆRSPERIODE) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE_NETTER) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.SAMVÆRSKALKULATOR) shouldHaveSize 1 hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFT_MAKS_GODKJENT_BELØP) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 3 // TODO: Hvorfor 3? - hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 7 - hentGrunnlagstyper(Grunnlagstype.SJABLON_BIDRAGSEVNE) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.SJABLON_TRINNVIS_SKATTESATS) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 8 + hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 3 + hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 31 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 5 hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 3 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) - .find { it.gjelderReferanse == bmGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) - .find { it.gjelderReferanse == bpGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) - .find { it.gjelderReferanse == barn1Grunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 2 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) - .find { it.gjelderReferanse == bmGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) - .find { it.gjelderReferanse == bpGrunnlag.referanse } shouldNotBe null + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILSYN) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 1 hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 1 hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 1 hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 3 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ANDRE_VOKSNE_I_HUSSTANDEN) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 11 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 5 hentGrunnlagstyper(Grunnlagstype.INNHENTET_SIVILSTAND) shouldHaveSize 0 } @@ -330,552 +253,49 @@ class VedtakserviceBidragTest : VedtakserviceTest() { } @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling hvor betalt av BP og direkte betalt av BP er satt`() { - stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Notat inntekt BM", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, - ) - behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) - behandling.leggTilNotat( - "Notat inntekt BA", - NotatGrunnlag.NotatType.INNTEKT, - behandling.søknadsbarn.first()!!, - ) - behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, - ) - behandling.leggTilNotat( - "Boforhold", - NotatGrunnlag.NotatType.BOFORHOLD, - ) - behandling.refVedtaksid = 553 - behandling.klageMottattdato = LocalDate.now() - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.maksGodkjentBeløp = BigDecimal(4000) - behandling.utgift!!.maksGodkjentBeløpBegrunnelse = "Maks godkjent beløp" - behandling.utgift!!.maksGodkjentBeløpTaMed = false - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - betaltAvBp = true, - ), - ) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - entityManager.flush() - entityManager.refresh(behandling) - val opprettVedtakRequest = opprettVedtakSlot.captured - - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } - - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe BigDecimal(9839) - it.betaltBeløp shouldBe BigDecimal(5500) - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.SÆRBIDRAG_INNVILGET.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - } - - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } - } - - @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling med løpende bidrag og personobjekter`() { - stubPersonConsumer() - stubUtils.stubBidragStonadLøpendeSaker("løpende-bidragssaker-bp_annen_barn") - stubUtils.stubBidraBBMHentBeregning("bbm-beregning_annen_barn") - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.refVedtaksid = 553 - behandling.klageMottattdato = LocalDate.now() - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), - ) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - entityManager.flush() - entityManager.refresh(behandling) - val opprettVedtakRequest = opprettVedtakSlot.captured - - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - - assertSoftly(opprettVedtakRequest) { - grunnlagsliste shouldHaveSize 106 - assertSoftly(hentGrunnlagstyper(Grunnlagstype.LØPENDE_BIDRAG)) { - it.shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.løpendeBidragListe shouldHaveSize 4 - innhold.løpendeBidragListe[0].type shouldBe Stønadstype.BIDRAG - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[0].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_SØKNADSBARN - innhold.løpendeBidragListe[1].type shouldBe Stønadstype.BIDRAG - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[1].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_HUSSTANDSMEDLEM - innhold.løpendeBidragListe[2].type shouldBe Stønadstype.BIDRAG18AAR - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[2].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_BARN_BIDRAGSPLIKTIG - innhold.løpendeBidragListe[3].type shouldBe Stønadstype.BIDRAG - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[3].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_BARN_BIDRAGSPLIKTIG - } - } - - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } - } - - @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling med løpende bidrag med flere vedtak`() { - stubPersonConsumer() - stubUtils.stubBidragVedtakForStønad(testdataBarn1.ident, "vedtak-for-stønad-barn1_2") - stubUtils.stubBidragStonadLøpendeSaker("løpende-bidragssaker-bp_2") - stubUtils.stubBidraBBMHentBeregning("bbm-beregning_2") - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.refVedtaksid = 553 - behandling.klageMottattdato = LocalDate.now() - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), - ) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - entityManager.flush() - entityManager.refresh(behandling) - val opprettVedtakRequest = opprettVedtakSlot.captured - - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - - assertSoftly(opprettVedtakRequest) { - grunnlagsliste shouldHaveSize 102 - assertSoftly(hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_BEREGNEDE_TOTALBIDRAG)) { - shouldHaveSize(1) - val grunnlag = it.first() - val innhold = grunnlag.innholdTilObjekt() - innhold.bidragspliktigesBeregnedeTotalbidrag shouldBe BigDecimal("4208.00") - grunnlagsliste - .finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SJABLON_SAMVARSFRADRAG, - grunnlag.grunnlagsreferanseListe, - ).shouldNotBeEmpty() - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_BIDRAGSEVNE)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløp shouldBe BigDecimal("13939.20") - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_ANDEL)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.endeligAndelFaktor shouldBe BigDecimal("0.4919354839") - innhold.andelBeløp shouldBe BigDecimal("9838.71") - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_BEREGNEDE_TOTALBIDRAG)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.bidragspliktigesBeregnedeTotalbidrag shouldBe BigDecimal("4208.00") - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.LØPENDE_BIDRAG)) { - it.shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.løpendeBidragListe shouldHaveSize 1 - innhold.løpendeBidragListe[0].type shouldBe Stønadstype.BIDRAG - innhold.løpendeBidragListe[0].løpendeBeløp shouldBe BigDecimal.ZERO - innhold.løpendeBidragListe[0].beregnetBeløp shouldBe BigDecimal("3159.00") - innhold.løpendeBidragListe[0].samværsklasse shouldBe Samværsklasse.SAMVÆRSKLASSE_2 - grunnlagsliste.filtrerBasertPåEgenReferanse(referanse = innhold.løpendeBidragListe[0].gjelderBarn).first().type shouldBe - Grunnlagstype.PERSON_SØKNADSBARN - } - } - - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } - } - - @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling med maks beløp satt`() { + fun `Skal fatte vedtak med reel mottaker`() { stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) + val behandling = opprettGyldigBehandlingForBeregningOgVedtak(true, typeBehandling = TypeBehandling.BIDRAG) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!, behandling.virkningstidspunkt!!.plusMonths(1)), samværsklasse = Samværsklasse.SAMVÆRSKLASSE_1, medId = true) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), medId = true) behandling.leggTilNotat( - "Notat inntekt BM", + "Inntektsbegrunnelse kun i notat", NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, + behandling.bidragsmottaker, ) behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) - behandling.leggTilNotat( - "Notat inntekt BA", - NotatGrunnlag.NotatType.INNTEKT, - behandling.søknadsbarn.first()!!, - ) - behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, + "Virkningstidspunkt kun i notat", + NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT, ) behandling.leggTilNotat( "Boforhold", NotatGrunnlag.NotatType.BOFORHOLD, ) - behandling.refVedtaksid = 553 - behandling.klageMottattdato = LocalDate.now() - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.utgift!!.maksGodkjentBeløp = BigDecimal(4000) - behandling.utgift!!.maksGodkjentBeløpBegrunnelse = "Maks godkjent beløp" - behandling.utgift!!.maksGodkjentBeløpTaMed = true - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), - ) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - entityManager.flush() - entityManager.refresh(behandling) - val opprettVedtakRequest = opprettVedtakSlot.captured - - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } - - assertSoftly(opprettVedtakRequest) { - val request = opprettVedtakRequest - request.type shouldBe Vedtakstype.FASTSETTELSE - - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") { - request.grunnlagListe shouldHaveSize 110 - } - } - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - val sluttberegningSærbidrag = grunnlagsliste.hentGrunnlagstyper(Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG) - - assertSoftly(sluttberegningSærbidrag) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.resultatKode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.SÆRBIDRAG_INNVILGET - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - innhold.beregnetBeløp shouldBe BigDecimal("1967.74") - innhold.resultatBeløp shouldBe BigDecimal(1968) - } - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.beløp shouldBe BigDecimal(1968) - it.betaltBeløp shouldBe BigDecimal(500) - } - - assertSoftly(opprettVedtakRequest) { - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFT_MAKS_GODKJENT_BELØP)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløp shouldBe BigDecimal(4000) - innhold.begrunnelse shouldBe "Maks godkjent beløp" - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_UTGIFT)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.sumGodkjent shouldBe BigDecimal(4000) - innhold.sumBetaltAvBp shouldBe BigDecimal(500) - } - } - - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } - } - - @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling avslag`() { - stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Notat inntekt BM", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, - ) - behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) behandling.leggTilNotat( - "Notat inntekt BA", - NotatGrunnlag.NotatType.INNTEKT, + "Samvær", + NotatGrunnlag.NotatType.SAMVÆR, behandling.søknadsbarn.first(), ) behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, + "Underhold barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.søknadsbarn.first(), ) behandling.leggTilNotat( - "Boforhold", - NotatGrunnlag.NotatType.BOFORHOLD, + "Underhold andre barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.bidragsmottaker, ) behandling.refVedtaksid = 553 - behandling.klageMottattdato = LocalDate.now() - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), + behandling.grunnlag = + opprettAlleAktiveGrunnlagFraFil( + behandling, + erstattVariablerITestFil("grunnlagresponse_bp"), ) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.inntekter.add( - opprettInntekt( - datoFom = virkningstidspunkt, - type = Inntektsrapportering.SAKSBEHANDLER_BEREGNET_INNTEKT, - ident = behandling.bidragspliktig!!.ident!!, - beløp = BigDecimal(100000), - kilde = Kilde.MANUELL, - taMed = true, - behandling = behandling, - medId = false, - ), - ) - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) + every { behandlingService.hentBehandlingById(any()) } returns behandling + + every { sakConsumer.hentSak(any()) } returns opprettSakForBehandlingMedReelMottaker(behandling) val opprettVedtakSlot = slot() every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns @@ -887,347 +307,68 @@ class VedtakserviceBidragTest : VedtakserviceTest() { vedtakService.fatteVedtak(behandling.id!!) val opprettVedtakRequest = opprettVedtakSlot.captured - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } + assertSoftly(opprettVedtakRequest) { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") { - request.grunnlagListe shouldHaveSize 110 + request.stønadsendringListe shouldHaveSize 1 + assertSoftly(request.stønadsendringListe[0]) { + skyldner.verdi shouldBe testdataBP.ident + kravhaver.verdi shouldBe testdataBarn1.ident + mottaker.verdi shouldBe "REEL_MOTTAKER" } } - opprettVedtakRequest.validerVedtaksdetaljer(behandling) - opprettVedtakRequest.validerPersongrunnlag() - - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe null - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.SÆRBIDRAG_IKKE_FULL_BIDRAGSEVNE.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 9 - it.betaltBeløp shouldBe BigDecimal(500) - } - assertSoftly(opprettVedtakRequest) { - val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! - val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! - val barn1Grunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! - val sluttberegningSærbidrag = hentGrunnlagstyper(Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG) - - assertSoftly(sluttberegningSærbidrag) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.resultatKode shouldBe Resultatkode.SÆRBIDRAG_IKKE_FULL_BIDRAGSEVNE - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - innhold.beregnetBeløp shouldBe BigDecimal("2580.65") - innhold.resultatBeløp shouldBe null - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.SÆRBIDRAG_KATEGORI)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.kategori shouldBe Særbidragskategori.KONFIRMASJON - innhold.beskrivelse shouldBe null - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløpDirekteBetalt shouldBe BigDecimal(500) - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER)) { - shouldHaveSize(1) - val innholdList = innholdTilObjektListe>().first() - innholdList shouldHaveSize 3 - val utgiftspost = innholdList.find { it.type == Utgiftstype.KONFIRMASJONSAVGIFT.name }!! - utgiftspost.dato shouldBe LocalDate.now().minusMonths(3) - utgiftspost.type shouldBe Utgiftstype.KONFIRMASJONSAVGIFT.name - utgiftspost.kravbeløp shouldBe BigDecimal(15000) - utgiftspost.godkjentBeløp shouldBe BigDecimal(5000) - utgiftspost.kommentar shouldBe "Inneholder avgifter for alkohol og pynt" - } - - assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { - shouldHaveSize(5) - val innholdListe = innholdTilObjekt() - innholdListe.find { it.type == NotatGrunnlag.NotatType.UTGIFTER }!!.innhold shouldBe - henteNotatinnhold(behandling, NotatGrunnlag.NotatType.UTGIFTER) - val notatInntekter = this.filter { it.innholdTilObjekt().type == NotatGrunnlag.NotatType.INNTEKT } - notatInntekter.find { it.gjelderReferanse == bmGrunnlag.referanse }!!.innholdTilObjekt().innhold shouldBe - "Notat inntekt BM" - notatInntekter.find { it.gjelderReferanse == bpGrunnlag.referanse }!!.innholdTilObjekt().innhold shouldBe - "Notat inntekt BP" - notatInntekter.find { it.gjelderReferanse == barn1Grunnlag.referanse }!!.innholdTilObjekt().innhold shouldBe - "Notat inntekt BA" - } - - hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.LØPENDE_BIDRAG) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 3 // TODO: Hvorfor 3? - hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 7 - hentGrunnlagstyper(Grunnlagstype.SJABLON_BIDRAGSEVNE) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.SJABLON_TRINNVIS_SKATTESATS) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 8 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 3 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) - .find { it.gjelderReferanse == bmGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) - .find { it.gjelderReferanse == bpGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) - .find { it.gjelderReferanse == barn1Grunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 2 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) - .find { it.gjelderReferanse == bmGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) - .find { it.gjelderReferanse == bpGrunnlag.referanse } shouldNotBe null - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 3 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ANDRE_VOKSNE_I_HUSSTANDEN) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 11 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_SIVILSTAND) shouldHaveSize 0 - } - verify(exactly = 1) { vedtakConsumer.fatteVedtak(any()) } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } } @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling direkte avslag`() { + fun `Skal fatte vedtak med innbetalt beløp`() { stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Notat inntekt BM", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, - ) - behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) + val innbetaltBeløp = BigDecimal(10000) + val behandling = opprettGyldigBehandlingForBeregningOgVedtak(true, typeBehandling = TypeBehandling.BIDRAG) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!, behandling.virkningstidspunkt!!.plusMonths(1)), samværsklasse = Samværsklasse.SAMVÆRSKLASSE_1, medId = true) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), medId = true) behandling.leggTilNotat( - "Notat inntekt BA", + "Inntektsbegrunnelse kun i notat", NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, + behandling.bidragsmottaker, ) behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, + "Virkningstidspunkt kun i notat", + NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT, ) behandling.leggTilNotat( "Boforhold", NotatGrunnlag.NotatType.BOFORHOLD, ) - behandling.refVedtaksid = 553 - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.avslag = Resultatkode.IKKE_NØDVENDIGE_UTGIFTER - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.ANNET.name - behandling.kategoriBeskrivelse = "Batterier til høreapparat" - behandling.utgift = null - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - - val opprettVedtakRequest = opprettVedtakSlot.captured - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } - assertSoftly(opprettVedtakRequest) { - val request = opprettVedtakRequest - request.type shouldBe Vedtakstype.FASTSETTELSE - - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - withClue("Grunnlagliste skal inneholde 7 grunnlag") { - request.grunnlagListe shouldHaveSize 7 - } - } - - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe null - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.IKKE_NØDVENDIGE_UTGIFTER.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 4 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG, - it.grunnlagReferanseListe, - ) shouldHaveSize - 0 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SÆRBIDRAG_KATEGORI, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.NOTAT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SØKNAD, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.VIRKNINGSTIDSPUNKT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - it.betaltBeløp shouldBe null - } - assertSoftly(opprettVedtakRequest) { - assertSoftly(hentGrunnlagstyper(Grunnlagstype.SÆRBIDRAG_KATEGORI)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.kategori shouldBe Særbidragskategori.ANNET - innhold.beskrivelse shouldBe "Batterier til høreapparat" - } - - assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { - shouldHaveSize(1) - val innholdListe = innholdTilObjekt() - innholdListe.find { it.type == NotatGrunnlag.NotatType.UTGIFTER }!!.innhold shouldBe - henteNotatinnhold(behandling, NotatGrunnlag.NotatType.UTGIFTER) - } - - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSMOTTAKER) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSPLIKTIG) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_SØKNADSBARN) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ANDRE_VOKSNE_I_HUSSTANDEN) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_SIVILSTAND) shouldHaveSize 0 - } - - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } - } - - @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling avslag alle utgifter foreldet`() { - stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Notat inntekt BM", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, - ) - behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) behandling.leggTilNotat( - "Notat inntekt BA", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, + "Samvær", + NotatGrunnlag.NotatType.SAMVÆR, + behandling.søknadsbarn.first(), ) behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, + "Underhold barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.søknadsbarn.first(), ) behandling.leggTilNotat( - "Boforhold", - NotatGrunnlag.NotatType.BOFORHOLD, + "Underhold andre barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.bidragsmottaker, ) behandling.refVedtaksid = 553 - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusYears(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(0), - ), - Utgiftspost( - dato = LocalDate.now().minusYears(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(0), - ), - Utgiftspost( - dato = LocalDate.now().minusYears(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(0), - ), + behandling.søknadsbarn.first().innbetaltBeløp = innbetaltBeløp + behandling.grunnlag = + opprettAlleAktiveGrunnlagFraFil( + behandling, + erstattVariablerITestFil("grunnlagresponse_bp"), ) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(0) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) + every { behandlingService.hentBehandlingById(any()) } returns behandling every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) @@ -1241,175 +382,53 @@ class VedtakserviceBidragTest : VedtakserviceTest() { vedtakService.fatteVedtak(behandling.id!!) val opprettVedtakRequest = opprettVedtakSlot.captured - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } + assertSoftly(opprettVedtakRequest) { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - withClue("Grunnlagliste skal inneholde 9 grunnlag") { - request.grunnlagListe shouldHaveSize 9 - } + request.stønadsendringListe shouldHaveSize 1 } + assertSoftly(opprettVedtakRequest.engangsbeløpListe) { + shouldHaveSize(3) - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe null - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.ALLE_UTGIFTER_ER_FORELDET.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 6 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG, - it.grunnlagReferanseListe, - ) shouldHaveSize - 0 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SÆRBIDRAG_KATEGORI, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.NOTAT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SØKNAD, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.VIRKNINGSTIDSPUNKT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - it.betaltBeløp shouldBe null - } - assertSoftly(opprettVedtakRequest) { - assertSoftly(hentGrunnlagstyper(Grunnlagstype.SÆRBIDRAG_KATEGORI)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.kategori shouldBe Særbidragskategori.KONFIRMASJON - innhold.beskrivelse shouldBe null - } - - assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { - shouldHaveSize(1) - val innholdListe = innholdTilObjekt() - innholdListe.find { it.type == NotatGrunnlag.NotatType.UTGIFTER }!!.innhold shouldBe - henteNotatinnhold(behandling, NotatGrunnlag.NotatType.UTGIFTER) - } - - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløpDirekteBetalt shouldBe BigDecimal(0) + it.any { it.type == Engangsbeløptype.GEBYR_MOTTAKER }.shouldBeTrue() + it.any { it.type == Engangsbeløptype.GEBYR_SKYLDNER }.shouldBeTrue() + it.any { it.type == Engangsbeløptype.DIREKTE_OPPGJØR }.shouldBeTrue() + assertSoftly(it.find { it.type == Engangsbeløptype.DIREKTE_OPPGJØR }!!) { + beløp shouldBe innbetaltBeløp + skyldner shouldBe Personident(testdataBP.ident) + kravhaver shouldBe Personident(testdataBarn1.ident) + mottaker shouldBe Personident(testdataBM.ident) + innkreving shouldBe Innkrevingstype.MED_INNKREVING + resultatkode shouldBe Resultatkode.DIREKTE_OPPJØR.name + sak shouldBe Saksnummer(SAKSNUMMER) + beslutning shouldBe Beslutningstype.ENDRING } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER)) { - shouldHaveSize(1) - val innholdList = innholdTilObjektListe>().first() - innholdList shouldHaveSize 3 - val utgiftspost = innholdList.find { it.type == Utgiftstype.KONFIRMASJONSAVGIFT.name }!! - utgiftspost.dato shouldBe LocalDate.now().minusYears(3) - utgiftspost.type shouldBe Utgiftstype.KONFIRMASJONSAVGIFT.name - utgiftspost.kravbeløp shouldBe BigDecimal(15000) - utgiftspost.godkjentBeløp shouldBe BigDecimal(0) - utgiftspost.kommentar shouldBe null - } - - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSMOTTAKER) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSPLIKTIG) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_SØKNADSBARN) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ANDRE_VOKSNE_I_HUSSTANDEN) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_SIVILSTAND) shouldHaveSize 0 } verify(exactly = 1) { vedtakConsumer.fatteVedtak(any()) } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } } @Test - @Transactional - fun `Skal fatte vedtak og opprette grunnlagsstruktur for en særbidrag behandling avslag godkjent beløp lavere enn forskuddsats`() { + fun `Skal fatte vedtak med direkte avslag`() { stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Notat inntekt BM", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragsmottaker!!, - ) + val behandling = opprettGyldigBehandlingForBeregningOgVedtak(true, typeBehandling = TypeBehandling.BIDRAG) behandling.leggTilNotat( - "Notat inntekt BP", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) - behandling.leggTilNotat( - "Notat inntekt BA", - NotatGrunnlag.NotatType.INNTEKT, - behandling.bidragspliktig!!, - ) - behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, - ) - behandling.leggTilNotat( - "Boforhold", - NotatGrunnlag.NotatType.BOFORHOLD, + "Virkningstidspunkt kun i notat", + NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT, ) + behandling.avslag = Resultatkode.BIDRAGSPLIKTIG_ER_DØD behandling.refVedtaksid = 553 - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(500), - kommentar = "Begrunnelse", - ), + behandling.grunnlag = + opprettAlleAktiveGrunnlagFraFil( + behandling, + erstattVariablerITestFil("grunnlagresponse_bp"), ) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(0) - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) + every { behandlingService.hentBehandlingById(any()) } returns behandling every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) @@ -1423,297 +442,46 @@ class VedtakserviceBidragTest : VedtakserviceTest() { vedtakService.fatteVedtak(behandling.id!!) val opprettVedtakRequest = opprettVedtakSlot.captured - assertSoftly(behandling) { - vedtaksid shouldBe testVedtakResponsId - vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() - vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT - } + assertSoftly(opprettVedtakRequest) { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") { - request.grunnlagListe shouldHaveSize 12 - } - val sluttberegningSærbidrag = hentGrunnlagstyper(Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG) - - assertSoftly(sluttberegningSærbidrag) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.resultatKode shouldBe Resultatkode.GODKJENT_BELØP_ER_LAVERE_ENN_FORSKUDDSSATS - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - innhold.beregnetBeløp shouldBe BigDecimal(0) - innhold.resultatBeløp shouldBe null - } - } - - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe null - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.GODKJENT_BELØP_ER_LAVERE_ENN_FORSKUDDSSATS.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 5 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SÆRBIDRAG_KATEGORI, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.NOTAT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SØKNAD, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.VIRKNINGSTIDSPUNKT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - it.betaltBeløp shouldBe BigDecimal.ZERO - } - assertSoftly(opprettVedtakRequest) { - assertSoftly(hentGrunnlagstyper(Grunnlagstype.SÆRBIDRAG_KATEGORI)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.kategori shouldBe Særbidragskategori.KONFIRMASJON - innhold.beskrivelse shouldBe null - } - - assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { + request.grunnlagListe shouldHaveSize 5 + hentGrunnlagstyper(Grunnlagstype.NOTAT) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSMOTTAKER) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.PERSON_SØKNADSBARN) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSPLIKTIG) shouldHaveSize 1 + assertSoftly(hentGrunnlagstyper(Grunnlagstype.SØKNAD)) { shouldHaveSize(1) - val innholdListe = innholdTilObjekt() - innholdListe.find { it.type == NotatGrunnlag.NotatType.UTGIFTER }!!.innhold shouldBe - henteNotatinnhold(behandling, NotatGrunnlag.NotatType.UTGIFTER) + val innhold = it[0].innholdTilObjekt() + innhold.søktAv shouldBe SøktAvType.BIDRAGSMOTTAKER } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløpDirekteBetalt shouldBe BigDecimal(0) - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER)) { - shouldHaveSize(1) - val innholdList = innholdTilObjektListe>().first() - innholdList shouldHaveSize 1 - val utgiftspost = innholdList.find { it.type == Utgiftstype.KONFIRMASJONSAVGIFT.name }!! - utgiftspost.dato shouldBe LocalDate.now().minusMonths(3) - utgiftspost.type shouldBe Utgiftstype.KONFIRMASJONSAVGIFT.name - utgiftspost.kravbeløp shouldBe BigDecimal(15000) - utgiftspost.godkjentBeløp shouldBe BigDecimal(500) - utgiftspost.kommentar shouldBe "Begrunnelse" + request.stønadsendringListe shouldHaveSize 1 + assertSoftly(request.stønadsendringListe[0]) { + it.type shouldBe Stønadstype.BIDRAG + it.beslutning shouldBe Beslutningstype.ENDRING + it.innkreving shouldBe Innkrevingstype.MED_INNKREVING + it.sak shouldBe Saksnummer(SAKSNUMMER) + it.skyldner shouldBe Personident(testdataBP.ident) + it.kravhaver shouldBe Personident(testdataBarn1.ident) + it.mottaker shouldBe Personident(testdataBM.ident) + it.grunnlagReferanseListe shouldHaveSize 2 + it.periodeListe shouldHaveSize 1 + assertSoftly(it.periodeListe[0]) { + it.periode.fom shouldBe YearMonth.from(behandling.virkningstidspunkt) + it.periode.til shouldBe null + it.beløp shouldBe null + it.resultatkode shouldBe Resultatkode.BIDRAGSPLIKTIG_ER_DØD.name + } } - - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSMOTTAKER) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSPLIKTIG) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_SØKNADSBARN) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_ANDRE_VOKSNE_I_HUSSTANDEN) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.INNHENTET_SIVILSTAND) shouldHaveSize 0 - } - - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } - } - - @Test - @Transactional - fun `Skal bruke nyeste identer for særbidrag`() { - val nyIdentBm = "ny_ident_bm" - val nyIdentBp = "ny_ident_bp" - val nyIdentBarn1 = "ny_ident_barn_1" - stubHentPersonNyIdent(testdataBarn1.ident, nyIdentBarn1, bidragPersonConsumer) - stubHentPersonNyIdent(testdataBM.ident, nyIdentBm, bidragPersonConsumer) - stubHentPersonNyIdent(testdataBP.ident, nyIdentBp, bidragPersonConsumer) - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, - ) - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - testdataManager.lagreBehandling(behandling) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), - ) - behandling.initGrunnlagRespons(stubUtils) - - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - - val opprettVedtakRequest = opprettVedtakSlot.captured - - val grunnlagsliste = opprettVedtakRequest.grunnlagListe - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(nyIdentBp) - it.kravhaver shouldBe Personident(nyIdentBarn1) - it.mottaker shouldBe Personident(nyIdentBm) - it.beløp shouldBe BigDecimal(9836) - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe no.nav.bidrag.domene.enums.beregning.Resultatkode.SÆRBIDRAG_INNVILGET.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 5 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SÆRBIDRAG_KATEGORI, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.NOTAT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.SØKNAD, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( - Grunnlagstype.VIRKNINGSTIDSPUNKT, - it.grunnlagReferanseListe, - ) shouldHaveSize - 1 - it.betaltBeløp shouldBe BigDecimal(500) } + assertSoftly(opprettVedtakRequest.engangsbeløpListe) { + shouldHaveSize(2) - verify(exactly = 1) { - vedtakConsumer.fatteVedtak(any()) - } - } - - @Test - @Transactional - fun `Skal bruke nyeste identer for avslag`() { - val nyIdentBm = "ny_ident_bm" - val nyIdentBp = "ny_ident_bp" - val nyIdentBarn1 = "ny_ident_barn_1" - val mock = stubHentPersonNyIdent(testdataBarn1.ident, nyIdentBarn1) - stubHentPersonNyIdent(testdataBM.ident, nyIdentBm, mock) - stubHentPersonNyIdent(testdataBP.ident, nyIdentBp, mock) - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) - behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, - ) - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.avslag = Resultatkode.PRIVAT_AVTALE - testdataManager.lagreBehandling(behandling) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift = null - behandling.initGrunnlagRespons(stubUtils) - - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) - - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) - - val opprettVedtakSlot = slot() - every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns - OpprettVedtakResponseDto( - 1, - emptyList(), - ) - - vedtakService.fatteVedtak(behandling.id!!) - - val opprettVedtakRequest = opprettVedtakSlot.captured - - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(nyIdentBp) - it.kravhaver shouldBe Personident(nyIdentBarn1) - it.mottaker shouldBe Personident(nyIdentBm) - it.beløp shouldBe null - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe Resultatkode.PRIVAT_AVTALE.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 4 - it.betaltBeløp shouldBe null + it.any { it.type == Engangsbeløptype.GEBYR_MOTTAKER }.shouldBeTrue() + it.any { it.type == Engangsbeløptype.GEBYR_SKYLDNER }.shouldBeTrue() } verify(exactly = 1) { @@ -1722,57 +490,24 @@ class VedtakserviceBidragTest : VedtakserviceTest() { } @Test - @Transactional - fun `Skal fatte vedtak med avslag for særbidrag behandling`() { + fun `Skal fatte vedtak med direkte avslag med reel mottaker`() { stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) + val behandling = opprettGyldigBehandlingForBeregningOgVedtak(true, typeBehandling = TypeBehandling.BIDRAG) behandling.leggTilNotat( - "Utgiftsbegrunnelse", - NotatGrunnlag.NotatType.UTGIFTER, + "Virkningstidspunkt kun i notat", + NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT, ) - behandling.inntekter = mutableSetOf() - behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.avslag = Resultatkode.PRIVAT_AVTALE - behandling.klageMottattdato = LocalDate.now() - testdataManager.lagreBehandling(behandling) - stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - behandling.utgift!!.beløpDirekteBetaltAvBp = BigDecimal(500) - behandling.kategori = Særbidragskategori.KONFIRMASJON.name - behandling.utgift!!.utgiftsposter = - mutableSetOf( - Utgiftspost( - dato = LocalDate.now().minusMonths(3), - type = Utgiftstype.KONFIRMASJONSAVGIFT.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(15000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder avgifter for alkohol og pynt", - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(8), - type = Utgiftstype.KLÆR.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(10000), - ), - Utgiftspost( - dato = LocalDate.now().minusMonths(5), - type = Utgiftstype.SELSKAP.name, - utgift = behandling.utgift!!, - kravbeløp = BigDecimal(10000), - godkjentBeløp = BigDecimal(5000), - kommentar = "Inneholder utgifter til mat og drikke", - ), + behandling.avslag = Resultatkode.BIDRAGSPLIKTIG_ER_DØD + behandling.refVedtaksid = 553 + behandling.grunnlag = + opprettAlleAktiveGrunnlagFraFil( + behandling, + erstattVariablerITestFil("grunnlagresponse_bp"), ) - behandling.initGrunnlagRespons(stubUtils) - grunnlagService.oppdatereGrunnlagForBehandling(behandling) - entityManager.flush() - entityManager.refresh(behandling) + every { behandlingService.hentBehandlingById(any()) } returns behandling - every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) + every { sakConsumer.hentSak(any()) } returns opprettSakForBehandlingMedReelMottaker(behandling) val opprettVedtakSlot = slot() every { vedtakConsumer.fatteVedtak(capture(opprettVedtakSlot)) } returns @@ -1789,192 +524,32 @@ class VedtakserviceBidragTest : VedtakserviceTest() { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - withClue("Grunnlagliste skal inneholde 7 grunnlag") { - request.grunnlagListe shouldHaveSize 7 + request.stønadsendringListe shouldHaveSize 1 + assertSoftly(request.stønadsendringListe[0]) { + it.skyldner shouldBe Personident(testdataBP.ident) + it.kravhaver shouldBe Personident(testdataBarn1.ident) + it.mottaker shouldBe Personident("REEL_MOTTAKER") } } - opprettVedtakRequest.validerVedtaksdetaljer(behandling) - assertSoftly(opprettVedtakRequest.engangsbeløpListe[0]) { - it.type shouldBe Engangsbeløptype.SÆRBIDRAG - it.sak shouldBe Saksnummer(behandling.saksnummer) - it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) - it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) - it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) - it.beløp shouldBe null - it.valutakode shouldBe "NOK" - it.resultatkode shouldBe Resultatkode.PRIVAT_AVTALE.name - it.innkreving shouldBe Innkrevingstype.MED_INNKREVING - it.beslutning shouldBe Beslutningstype.ENDRING - it.grunnlagReferanseListe shouldHaveSize 4 - it.betaltBeløp shouldBe null - } - assertSoftly(opprettVedtakRequest) { - assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { - shouldHaveSize(1) - val innholdListe = innholdTilObjekt() - innholdListe.find { it.type == NotatGrunnlag.NotatType.UTGIFTER }!!.innhold shouldBe - henteNotatinnhold(behandling, NotatGrunnlag.NotatType.UTGIFTER) - } - assertSoftly(hentGrunnlagstyper(Grunnlagstype.SÆRBIDRAG_KATEGORI)) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.kategori shouldBe Særbidragskategori.KONFIRMASJON - innhold.beskrivelse shouldBe null - } - - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSPLIKTIG) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSMOTTAKER) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.PERSON_SØKNADSBARN) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 - hentGrunnlagstyper(Grunnlagstype.UTGIFTSPOSTER) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.UTGIFT_DIREKTE_BETALT) shouldHaveSize 0 - hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 - } - verify(exactly = 1) { vedtakConsumer.fatteVedtak(any()) } } - private fun OpprettVedtakRequestDto.validerBosstatusPerioder(virkningstidspunkt: LocalDate) { - val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! - val søknadsbarn1Grunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! - val husstandsmedlemGrunnlag = grunnlagListe.hentPerson(testdataHusstandsmedlem1.ident)!! - assertSoftly(hentGrunnlagstyper(Grunnlagstype.BOSTATUS_PERIODE)) { - shouldHaveSize(5) - val bostatusSøknadsbarn1 = - it.filtrerBasertPåFremmedReferanse(referanse = søknadsbarn1Grunnlag.referanse) - bostatusSøknadsbarn1.shouldHaveSize(1) - - assertSoftly(bostatusSøknadsbarn1[0].innholdTilObjekt()) { - bostatus shouldBe Bostatuskode.MED_FORELDER - periode.fom shouldBe YearMonth.from(virkningstidspunkt) - periode.til shouldBe null - relatertTilPart shouldBe bpGrunnlag.referanse - } - val bostatusBp = - it.filtrerBasertPåFremmedReferanse(referanse = bpGrunnlag.referanse) - bostatusBp.shouldHaveSize(1) - assertSoftly(bostatusBp[0].innholdTilObjekt()) { - bostatus shouldBe Bostatuskode.BOR_MED_ANDRE_VOKSNE - periode.fom shouldBe YearMonth.from(virkningstidspunkt) - periode.til shouldBe null - relatertTilPart shouldBe bpGrunnlag.referanse - } - it - .filtrerBasertPåFremmedReferanse(referanse = husstandsmedlemGrunnlag.referanse) - .shouldHaveSize(1) - } - } - - private fun OpprettVedtakRequestDto.validerInntekter() { - val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! - val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! - val søknadsbarnGrunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! - assertSoftly(hentGrunnlagstyper(Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE)) { - shouldHaveSize(23) - val inntekterBM = it.filter { it.gjelderReferanse == bmGrunnlag.referanse } - val inntekterBP = it.filter { it.gjelderReferanse == bpGrunnlag.referanse } - val inntekterBA = it.filter { it.gjelderReferanse == søknadsbarnGrunnlag.referanse } - inntekterBM shouldHaveSize 11 - inntekterBP shouldHaveSize 8 - inntekterBA shouldHaveSize 4 - - val inntektBm = - inntekterBM.map { it.innholdTilObjekt() }.find { - it.inntektsrapportering == - Inntektsrapportering.AINNTEKT_BEREGNET_3MND - }!! - inntektBm.beløp shouldBe BigDecimal(720000) - inntektBm.valgt shouldBe true - } - assertSoftly(hentGrunnlagstype(Grunnlagstype.BEREGNET_INNTEKT, søknadsbarnGrunnlag.referanse)) { - val innhold = it!!.innholdTilObjekt() - innhold.summertMånedsinntektListe.shouldHaveSize(3) - } - assertSoftly(hentGrunnlagstype(Grunnlagstype.BEREGNET_INNTEKT, bmGrunnlag.referanse)) { - val innhold = it!!.innholdTilObjekt() - innhold.summertMånedsinntektListe.shouldHaveSize(12) - } - assertSoftly(hentGrunnlagstype(Grunnlagstype.BEREGNET_INNTEKT, bpGrunnlag.referanse)) { - val innhold = it!!.innholdTilObjekt() - innhold.summertMånedsinntektListe.shouldHaveSize(12) - } - } - - private fun OpprettVedtakRequestDto.validerSluttberegning(virkningstidspunkt: LocalDate) { - val sluttberegningSærbidrag = hentGrunnlagstyper(Grunnlagstype.SLUTTBEREGNING_SÆRBIDRAG) - - assertSoftly(sluttberegningSærbidrag) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.resultatKode shouldBe Resultatkode.SÆRBIDRAG_INNVILGET - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - innhold.beregnetBeløp shouldBe BigDecimal("9838.71") - innhold.resultatBeløp shouldBe BigDecimal(9839) - } - - val delberegningBidragsevne = - grunnlagListe - .finnGrunnlagSomErReferertAv( - Grunnlagstype.DELBEREGNING_BIDRAGSEVNE, - sluttberegningSærbidrag.first(), - ).toList() as List - - assertSoftly(delberegningBidragsevne) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.beløp shouldBe BigDecimal("13939.20") - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - } - - val delberegningBPsBeregnedeTotalbidragGrunnlag = - grunnlagListe - .finnGrunnlagSomErReferertAv( - Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_BEREGNEDE_TOTALBIDRAG, - sluttberegningSærbidrag.first(), - ).first() - - assertSoftly(delberegningBPsBeregnedeTotalbidragGrunnlag) { - val innhold = it.innholdTilObjekt() - innhold.bidragspliktigesBeregnedeTotalbidrag.setScale(0, RoundingMode.HALF_UP) shouldBe BigDecimal(9263) - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - } - - val delberegningBpsAndel = - grunnlagListe - .finnGrunnlagSomErReferertAv( - Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_ANDEL, - sluttberegningSærbidrag.first(), - ).toList() - - assertSoftly(delberegningBpsAndel) { - shouldHaveSize(1) - val innhold = innholdTilObjekt().first() - innhold.endeligAndelFaktor shouldBe "0.4919354839".toBigDecimal() - innhold.andelProsent shouldBe "49.19".toBigDecimal() - innhold.andelBeløp shouldBe BigDecimal("9838.71") - innhold.barnetErSelvforsørget shouldBe false - innhold.periode shouldBe ÅrMånedsperiode(virkningstidspunkt, virkningstidspunkt.plusMonths(1)) - } - } - private fun OpprettVedtakRequestDto.validerVedtaksdetaljer(behandling: Behandling) { assertSoftly("Søknadsdetaljer") { grunnlagListe.virkningsdato shouldNotBe null val virkningsdato = grunnlagListe.virkningsdato?.innholdTilObjekt() virkningsdato!!.virkningstidspunkt shouldHaveSameDayAs behandling.virkningstidspunkt!! - virkningsdato.årsak shouldBe null + virkningsdato.årsak shouldBe VirkningstidspunktÅrsakstype.FRA_SØKNADSTIDSPUNKT grunnlagListe.søknad shouldNotBe null val søknad = grunnlagListe.søknad?.innholdTilObjekt() søknad!!.mottattDato shouldHaveSameDayAs behandling.mottattdato søknad.søktAv shouldBe behandling.soknadFra - søknad.klageMottattDato shouldBe LocalDate.now() + søknad.klageMottattDato shouldBe null søknad.søktFraDato shouldBe behandling.søktFomDato } @@ -1997,7 +572,7 @@ class VedtakserviceBidragTest : VedtakserviceTest() { it.shouldContainPerson(testdataBarn1.ident) } assertSoftly(hentGrunnlagstyper(Grunnlagstype.PERSON_HUSSTANDSMEDLEM)) { - shouldHaveSize(10) + shouldHaveSize(4) it.shouldContainPerson(testdataHusstandsmedlem1.ident) } assertSoftly(hentGrunnlagstyper(Grunnlagstype.PERSON_BIDRAGSMOTTAKER)) { @@ -2008,5 +583,241 @@ class VedtakserviceBidragTest : VedtakserviceTest() { shouldHaveSize(1) it.shouldContainPerson(testdataBP.ident) } + assertSoftly(hentGrunnlagstyper(Grunnlagstype.PERSON_BARN_BIDRAGSMOTTAKER)) { + shouldHaveSize(1) + it.shouldContainPerson(testdataBarnBm.ident) + } + } +} + +private fun OpprettVedtakRequestDto.validerNotater(behandling: Behandling) { + val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! + val søknadsbarnGrunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! + assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { + shouldHaveSize(6) + assertSoftly(it[0].innholdTilObjekt()) { + innhold shouldBe henteNotatinnhold(behandling, NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT) + erMedIVedtaksdokumentet shouldBe false + type shouldBe NotatGrunnlag.NotatType.VIRKNINGSTIDSPUNKT + } + + assertSoftly(hentNotat(NotatGrunnlag.NotatType.SAMVÆR, gjelderReferanse = søknadsbarnGrunnlag.referanse)) { + it shouldNotBe null + val innhold = it!!.innholdTilObjekt() + innhold.innhold shouldBe "Samvær" + } + + assertSoftly(hentNotat(NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, gjelderReferanse = søknadsbarnGrunnlag.referanse)) { + it shouldNotBe null + val innhold = it!!.innholdTilObjekt() + innhold.innhold shouldBe "Underhold barn" + } + + assertSoftly(hentNotat(NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, gjelderReferanse = bmGrunnlag.referanse)) { + it shouldNotBe null + val innhold = it!!.innholdTilObjekt() + innhold.innhold shouldBe "Underhold andre barn" + } + + assertSoftly(hentNotat(NotatGrunnlag.NotatType.INNTEKT, gjelderReferanse = bmGrunnlag.referanse)) { + it shouldNotBe null + val innhold = it!!.innholdTilObjekt() + innhold.innhold shouldBe "Inntektsbegrunnelse kun i notat" + } + } +} + +private fun OpprettVedtakRequestDto.validerSluttberegning() { + val sluttberegning = + hentGrunnlagstyper(Grunnlagstype.SLUTTBEREGNING_BARNEBIDRAG) + sluttberegning shouldHaveSize (8) + val søknadsbarn1Grunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! + + val sluttberegningPeriode = sluttberegning[6] + assertSoftly(sluttberegningPeriode) { + val innhold = innholdTilObjekt() + innhold.resultatVisningsnavn!!.intern shouldBe "Kostnadsberegnet bidrag" + innhold.beregnetBeløp shouldBe BigDecimal("6121.53") + innhold.resultatBeløp shouldBe BigDecimal("6120") + it.grunnlagsreferanseListe shouldHaveSize 8 + hentGrunnlagstyperForReferanser(Grunnlagstype.PERSON_SØKNADSBARN, it.grunnlagsreferanseListe) shouldHaveSize 1 + hentGrunnlagstyperForReferanser(Grunnlagstype.PERSON_SØKNADSBARN, it.grunnlagsreferanseListe).first().referanse shouldBe søknadsbarn1Grunnlag.referanse + hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_BIDRAGSEVNE, it.grunnlagsreferanseListe) shouldHaveSize 1 + hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_SAMVÆRSFRADRAG, it.grunnlagsreferanseListe) shouldHaveSize 1 + hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_ANDEL, it.grunnlagsreferanseListe) shouldHaveSize 1 + hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_UNDERHOLDSKOSTNAD, it.grunnlagsreferanseListe) shouldHaveSize 1 + hentGrunnlagstyperForReferanser(Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE, it.grunnlagsreferanseListe) shouldHaveSize 2 + hentGrunnlagstyperForReferanser(Grunnlagstype.SAMVÆRSPERIODE, it.grunnlagsreferanseListe) shouldHaveSize 1 + } + + assertSoftly(hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_BIDRAGSEVNE, sluttberegningPeriode.grunnlagsreferanseListe).first()) { + val innhold = innholdTilObjekt() + innhold.beløp shouldBe BigDecimal("9482.45") + it.grunnlagsreferanseListe shouldHaveSize 14 + } + + assertSoftly(hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_BIDRAGSPLIKTIGES_ANDEL, sluttberegningPeriode.grunnlagsreferanseListe).first()) { + val innhold = innholdTilObjekt() + innhold.andelBeløp shouldBe BigDecimal("7132.53") + it.grunnlagsreferanseListe shouldHaveSize 10 + } + + assertSoftly(hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_UNDERHOLDSKOSTNAD, sluttberegningPeriode.grunnlagsreferanseListe).first()) { + val innhold = innholdTilObjekt() + innhold.underholdskostnad shouldBe BigDecimal("8559.04") + innhold.nettoTilsynsutgift shouldBe BigDecimal("1287.04") + innhold.barnetilsynMedStønad shouldBe BigDecimal("630.00") + it.grunnlagsreferanseListe shouldHaveSize 6 + } + + assertSoftly(hentGrunnlagstyperForReferanser(Grunnlagstype.DELBEREGNING_SAMVÆRSFRADRAG, sluttberegningPeriode.grunnlagsreferanseListe).first()) { + val innhold = innholdTilObjekt() + innhold.beløp shouldBe BigDecimal("1011.00") + it.grunnlagsreferanseListe shouldHaveSize 3 + } +} + +private fun OpprettVedtakRequestDto.validerBosstatusPerioder() { + val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! + val søknadsbarn1Grunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! + val husstandsmedlemGrunnlag = grunnlagListe.hentPerson(testdataHusstandsmedlem1.ident)!! + assertSoftly(hentGrunnlagstyper(Grunnlagstype.BOSTATUS_PERIODE)) { + shouldHaveSize(6) + val bostatusSøknadsbarn1 = + it.filtrerBasertPåFremmedReferanse(referanse = søknadsbarn1Grunnlag.referanse) + bostatusSøknadsbarn1.shouldHaveSize(2) + it[0].gjelderReferanse shouldBe søknadsbarn1Grunnlag.referanse + it[1].gjelderReferanse shouldBe søknadsbarn1Grunnlag.referanse + it[2].gjelderReferanse shouldBe husstandsmedlemGrunnlag.referanse + it[3].gjelderReferanse shouldBe husstandsmedlemGrunnlag.referanse + assertSoftly(bostatusSøknadsbarn1[0].innholdTilObjekt()) { + bostatus shouldBe Bostatuskode.MED_FORELDER + periode.fom shouldBe YearMonth.parse("2023-02") + periode.til shouldBe YearMonth.parse("2023-08") + relatertTilPart shouldBe bpGrunnlag.referanse + } + assertSoftly(bostatusSøknadsbarn1[1].innholdTilObjekt()) { + bostatus shouldBe Bostatuskode.IKKE_MED_FORELDER + periode.fom shouldBe YearMonth.parse("2023-08") + periode.til shouldBe null + relatertTilPart shouldBe bpGrunnlag.referanse + } + + it.filtrerBasertPåFremmedReferanse(referanse = husstandsmedlemGrunnlag.referanse).shouldHaveSize(2) + } +} + +private fun OpprettVedtakRequestDto.validerUndeholdskostnad() { + val søknadsbarnGrunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! + val husstandsmedlemGrunnlag = grunnlagListe.hentPerson(testdataHusstandsmedlem1.ident)!! + val bmBarnGrunnlag = grunnlagListe.hentPerson(testdataBarnBm.ident)!! + val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! + + assertSoftly(hentGrunnlagstyper(Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE)) { + shouldHaveSize(2) + assertSoftly(it[0]) { + val innhold = it.innholdTilObjekt() + innhold.gjelderBarn shouldBe søknadsbarnGrunnlag.referanse + gjelderReferanse shouldBe bmGrunnlag.referanse + } + } + assertSoftly(hentGrunnlagstyper(Grunnlagstype.TILLEGGSSTØNAD_PERIODE)) { + shouldHaveSize(1) + val innhold = it[0].innholdTilObjekt() + innhold.gjelderBarn shouldBe søknadsbarnGrunnlag.referanse + } + assertSoftly(hentGrunnlagstyper(Grunnlagstype.FAKTISK_UTGIFT_PERIODE)) { + shouldHaveSize(3) + it[0].gjelderReferanse shouldBe bmGrunnlag.referanse + it[1].gjelderReferanse shouldBe bmGrunnlag.referanse + it[2].gjelderReferanse shouldBe bmGrunnlag.referanse + + val søknadsbarnFU = it.find { it.innholdTilObjekt().gjelderBarn == søknadsbarnGrunnlag.referanse }!! + søknadsbarnFU shouldNotBe null + val innholdSøknadsbarnFU = søknadsbarnFU.innholdTilObjekt() + innholdSøknadsbarnFU.kommentar shouldBe "Kommentar på tilsynsutgift" + innholdSøknadsbarnFU.faktiskUtgiftBeløp shouldBe BigDecimal(4000) + innholdSøknadsbarnFU.kostpengerBeløp shouldBe BigDecimal(1000) + + val bmBarnFU = it.find { it.innholdTilObjekt().gjelderBarn == bmBarnGrunnlag.referanse } + bmBarnFU shouldNotBe null + + val hustandsmedlemFU = it.find { it.innholdTilObjekt().gjelderBarn == husstandsmedlemGrunnlag.referanse } + hustandsmedlemFU shouldNotBe null + } +} + +private fun OpprettVedtakRequestDto.validerSamvær() { + val samværsperioder = hentGrunnlagstyper(Grunnlagstype.SAMVÆRSPERIODE) + samværsperioder shouldHaveSize 2 + val manuellPeriode = samværsperioder.find { grunnlagListe.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE, it.grunnlagsreferanseListe).isEmpty() }!! + val beregnetPeriode = samværsperioder.find { grunnlagListe.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE, it.grunnlagsreferanseListe).isNotEmpty() }!! + assertSoftly(manuellPeriode) { + it.grunnlagsreferanseListe shouldHaveSize 0 + it.innholdTilObjekt().samværsklasse shouldBe Samværsklasse.SAMVÆRSKLASSE_1 + } + assertSoftly(beregnetPeriode) { + it.grunnlagsreferanseListe shouldHaveSize 8 + grunnlagListe.finnGrunnlagSomErReferertAv(Grunnlagstype.SJABLON_SAMVARSFRADRAG, it) shouldHaveSize 5 + grunnlagListe.finnGrunnlagSomErReferertAv(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE_NETTER, it) shouldHaveSize 1 + grunnlagListe.finnGrunnlagSomErReferertAv(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE, it) shouldHaveSize 1 + grunnlagListe.finnGrunnlagSomErReferertAv(Grunnlagstype.SAMVÆRSKALKULATOR, it) shouldHaveSize 1 + + val innhold = it.innholdTilObjekt() + innhold.samværsklasse shouldBe Samværsklasse.SAMVÆRSKLASSE_2 + val kalkulator = grunnlagListe.finnGrunnlagSomErReferertAv(Grunnlagstype.SAMVÆRSKALKULATOR, it).first() + val innholdKalkulator = kalkulator.innholdTilObjekt() + innholdKalkulator.ferier shouldHaveSize 5 + innholdKalkulator.regelmessigSamværNetter shouldBe BigDecimal(4) + + val delberegningSamværsklasse = grunnlagListe.finnGrunnlagSomErReferertAv(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE, it).first() + val innholdSamværsklasse = delberegningSamværsklasse.innholdTilObjekt() + innholdSamværsklasse.samværsklasse shouldBe Samværsklasse.SAMVÆRSKLASSE_2 + innholdSamværsklasse.gjennomsnittligSamværPerMåned shouldBe BigDecimal("8.01") + } +} + +private fun OpprettVedtakRequestDto.validerInntekter() { + val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! + val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! + val søknadsbarnGrunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! + assertSoftly(hentGrunnlagstyper(Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE)) { + shouldHaveSize(4) + it[0].gjelderReferanse.shouldBe(bpGrunnlag.referanse) + it[1].gjelderReferanse.shouldBe(bpGrunnlag.referanse) + it[2].gjelderReferanse.shouldBe(bmGrunnlag.referanse) + it[3].gjelderReferanse.shouldBe(bmGrunnlag.referanse) + + assertSoftly(it[0].innholdTilObjekt()) { + periode.fom shouldBe YearMonth.parse("2023-02") + periode.til shouldBe null + inntekstpostListe shouldHaveSize 0 + beløp shouldBe 500000.toBigDecimal() + inntektsrapportering shouldBe Inntektsrapportering.PERSONINNTEKT_EGNE_OPPLYSNINGER + gjelderBarn shouldBe null + valgt shouldBe true + manueltRegistrert shouldBe true + } + assertSoftly(it[1].innholdTilObjekt()) { + periode.fom shouldBe YearMonth.parse("2023-07") + periode.til shouldBe null + inntekstpostListe shouldHaveSize 1 + beløp shouldBe 3000.toBigDecimal() + inntektsrapportering shouldBe Inntektsrapportering.BARNETILLEGG + gjelderBarn shouldBe søknadsbarnGrunnlag.referanse + valgt shouldBe true + manueltRegistrert shouldBe true + } + + assertSoftly(it[3].innholdTilObjekt()) { + periode.fom shouldBe YearMonth.parse("2023-07") + periode.til shouldBe null + inntekstpostListe shouldHaveSize 1 + beløp shouldBe 3000.toBigDecimal() + inntektsrapportering shouldBe Inntektsrapportering.BARNETILLEGG + gjelderBarn shouldBe søknadsbarnGrunnlag.referanse + valgt shouldBe true + manueltRegistrert shouldBe true + } } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceForskuddTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceForskuddTest.kt index 605434a6b..8af1ce814 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceForskuddTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceForskuddTest.kt @@ -1,7 +1,5 @@ package no.nav.bidrag.behandling.service -import com.ninjasquad.springmockk.MockkBean -import io.getunleash.FakeUnleash import io.kotest.assertions.assertSoftly import io.kotest.assertions.withClue import io.kotest.matchers.collections.shouldBeEmpty @@ -9,22 +7,13 @@ import io.kotest.matchers.collections.shouldHaveSize import io.kotest.matchers.date.shouldHaveSameDayAs import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe -import io.mockk.clearAllMocks import io.mockk.every import io.mockk.slot import io.mockk.verify -import no.nav.bidrag.behandling.consumer.BidragPersonConsumer -import no.nav.bidrag.behandling.consumer.BidragSakConsumer -import no.nav.bidrag.behandling.consumer.BidragVedtakConsumer import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Bostatusperiode import no.nav.bidrag.behandling.database.datamodell.Husstandsmedlem import no.nav.bidrag.behandling.service.NotatService.Companion.henteNotatinnhold -import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning -import no.nav.bidrag.behandling.transformers.vedtak.mapping.fravedtak.VedtakTilBehandlingMapping -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2 -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilVedtakMapping -import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper import no.nav.bidrag.behandling.utils.hentGrunnlagstype import no.nav.bidrag.behandling.utils.hentGrunnlagstyper import no.nav.bidrag.behandling.utils.hentGrunnlagstyperForReferanser @@ -41,10 +30,6 @@ import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 import no.nav.bidrag.behandling.utils.testdata.testdataBarn2 import no.nav.bidrag.behandling.utils.testdata.testdataHusstandsmedlem1 import no.nav.bidrag.behandling.utils.virkningsdato -import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi -import no.nav.bidrag.commons.web.mock.stubKodeverkProvider -import no.nav.bidrag.commons.web.mock.stubSjablonProvider -import no.nav.bidrag.commons.web.mock.stubSjablonService import no.nav.bidrag.domene.enums.beregning.Resultatkode import no.nav.bidrag.domene.enums.diverse.Kilde import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype @@ -74,98 +59,14 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.personIdent import no.nav.bidrag.transport.behandling.felles.grunnlag.søknadsbarn import no.nav.bidrag.transport.behandling.vedtak.request.OpprettVedtakRequestDto import no.nav.bidrag.transport.behandling.vedtak.response.OpprettVedtakResponseDto -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.ExtendWith -import org.springframework.test.context.junit.jupiter.SpringExtension import stubHentPersonNyIdent import stubPersonConsumer import java.math.BigDecimal import java.time.LocalDate import java.time.YearMonth -@ExtendWith(SpringExtension::class) -class VedtakserviceForskuddTest { - @MockkBean - lateinit var behandlingService: BehandlingService - - @MockkBean - lateinit var grunnlagService: GrunnlagService - - @MockkBean - lateinit var notatOpplysningerService: NotatOpplysningerService - - @MockkBean - lateinit var tilgangskontrollService: TilgangskontrollService - - @MockkBean - lateinit var vedtakConsumer: BidragVedtakConsumer - - @MockkBean - lateinit var sakConsumer: BidragSakConsumer - - @MockkBean - lateinit var evnevurderingService: BeregningEvnevurderingService - - @MockkBean - lateinit var validerBehandlingService: ValiderBehandlingService - lateinit var vedtakService: VedtakService - lateinit var beregningService: BeregningService - lateinit var personConsumer: BidragPersonConsumer - - val unleash = FakeUnleash() - - @BeforeEach - fun initMocks() { - clearAllMocks() - unleash.enableAll() - personConsumer = stubPersonConsumer() - val personService = PersonService(personConsumer) - - val validerBeregning = ValiderBeregning() - val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning) - val vedtakGrunnlagMapper = - VedtakGrunnlagMapper( - BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())), - validerBeregning, - evnevurderingService, - personService, - ) - beregningService = - BeregningService( - behandlingService, - vedtakGrunnlagMapper, - ) - val behandlingTilVedtakMapping = BehandlingTilVedtakMapping(sakConsumer, vedtakGrunnlagMapper, beregningService) - vedtakService = - VedtakService( - behandlingService, - grunnlagService, - notatOpplysningerService, - tilgangskontrollService, - vedtakConsumer, - unleash, - validerBeregning, - vedtakTilBehandlingMapping, - behandlingTilVedtakMapping, - validerBehandlingService, - ) - every { notatOpplysningerService.opprettNotat(any()) } returns "213" - every { grunnlagService.oppdatereGrunnlagForBehandling(any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangPersonISak(any(), any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangBehandling(any()) } returns Unit - every { tilgangskontrollService.sjekkTilgangVedtak(any()) } returns Unit - every { - behandlingService.oppdaterVedtakFattetStatus( - any(), - any(), - ) - } returns Unit - every { vedtakConsumer.fatteVedtak(any()) } returns OpprettVedtakResponseDto(1, emptyList()) - stubSjablonProvider() - stubKodeverkProvider() - } - +class VedtakserviceForskuddTest : CommonVedtakTilBehandlingTest() { @Test fun `Skal fatte vedtak og opprette grunnlagsstruktur for en forskudd behandling`() { stubPersonConsumer() diff --git "a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceS\303\246rbidragTest.kt" "b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceS\303\246rbidragTest.kt" index f8ab9bf25..da3067424 100644 --- "a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceS\303\246rbidragTest.kt" +++ "b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceS\303\246rbidragTest.kt" @@ -26,6 +26,7 @@ import no.nav.bidrag.behandling.utils.testdata.leggTilNotat import no.nav.bidrag.behandling.utils.testdata.opprettGyldigBehandlingForBeregningOgVedtak import no.nav.bidrag.behandling.utils.testdata.opprettInntekt import no.nav.bidrag.behandling.utils.testdata.opprettSakForBehandling +import no.nav.bidrag.behandling.utils.testdata.taMedInntekt import no.nav.bidrag.behandling.utils.testdata.testdataBM import no.nav.bidrag.behandling.utils.testdata.testdataBP import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt index 5d040a2ee..57d4ffe07 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/VedtakserviceTest.kt @@ -4,11 +4,14 @@ import com.ninjasquad.springmockk.MockkBean import com.ninjasquad.springmockk.SpykBean import io.getunleash.FakeUnleash import io.kotest.assertions.assertSoftly -import io.kotest.matchers.collections.shouldBeEmpty +import io.kotest.assertions.withClue import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.date.shouldHaveSameDayAs import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe import io.mockk.clearAllMocks import io.mockk.every +import io.mockk.impl.annotations.MockK import io.mockk.slot import io.mockk.verify import jakarta.persistence.EntityManager @@ -16,29 +19,53 @@ import no.nav.bidrag.behandling.TestContainerRunner import no.nav.bidrag.behandling.consumer.BidragPersonConsumer import no.nav.bidrag.behandling.consumer.BidragSakConsumer import no.nav.bidrag.behandling.consumer.BidragVedtakConsumer -import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.database.repository.GrunnlagRepository +import no.nav.bidrag.behandling.database.repository.PersonRepository import no.nav.bidrag.behandling.database.repository.SivilstandRepository +import no.nav.bidrag.behandling.database.repository.UnderholdskostnadRepository +import no.nav.bidrag.behandling.transformers.Dtomapper import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning import no.nav.bidrag.behandling.transformers.vedtak.mapping.fravedtak.VedtakTilBehandlingMapping import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2 import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilVedtakMapping import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper +import no.nav.bidrag.behandling.utils.hentGrunnlagstyper +import no.nav.bidrag.behandling.utils.hentPerson +import no.nav.bidrag.behandling.utils.testdata.SAKSBEHANDLER_IDENT import no.nav.bidrag.behandling.utils.testdata.TestdataManager import no.nav.bidrag.behandling.utils.testdata.initGrunnlagRespons +import no.nav.bidrag.behandling.utils.testdata.leggTilBarnetillegg +import no.nav.bidrag.behandling.utils.testdata.leggTilBarnetilsyn +import no.nav.bidrag.behandling.utils.testdata.leggTilFaktiskTilsynsutgift +import no.nav.bidrag.behandling.utils.testdata.leggTilNotat +import no.nav.bidrag.behandling.utils.testdata.leggTilSamvær +import no.nav.bidrag.behandling.utils.testdata.leggTilTillegsstønad import no.nav.bidrag.behandling.utils.testdata.opprettGyldigBehandlingForBeregningOgVedtak import no.nav.bidrag.behandling.utils.testdata.opprettSakForBehandling +import no.nav.bidrag.behandling.utils.testdata.taMedInntekt +import no.nav.bidrag.behandling.utils.testdata.testdataBM +import no.nav.bidrag.behandling.utils.testdata.testdataBP +import no.nav.bidrag.behandling.utils.testdata.testdataBarn1 +import no.nav.bidrag.behandling.utils.testdata.testdataHusstandsmedlem1 +import no.nav.bidrag.beregn.barnebidrag.BeregnBarnebidragApi import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi import no.nav.bidrag.commons.web.mock.stubKodeverkProvider import no.nav.bidrag.commons.web.mock.stubSjablonProvider import no.nav.bidrag.commons.web.mock.stubSjablonService import no.nav.bidrag.domene.enums.behandling.TypeBehandling +import no.nav.bidrag.domene.enums.beregning.Samværsklasse +import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering -import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Beslutningstype +import no.nav.bidrag.domene.enums.vedtak.Innkrevingstype import no.nav.bidrag.domene.enums.vedtak.Stønadstype import no.nav.bidrag.domene.enums.vedtak.Vedtakstype +import no.nav.bidrag.domene.ident.Personident +import no.nav.bidrag.domene.sak.Saksnummer +import no.nav.bidrag.domene.tid.ÅrMånedsperiode +import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe import no.nav.bidrag.transport.behandling.vedtak.request.OpprettVedtakRequestDto import no.nav.bidrag.transport.behandling.vedtak.response.OpprettVedtakResponseDto import org.junit.jupiter.api.BeforeEach @@ -50,7 +77,9 @@ import org.springframework.test.context.junit.jupiter.SpringExtension import org.springframework.transaction.annotation.Transactional import stubPersonConsumer import stubTokenUtils +import java.math.BigDecimal import java.time.LocalDate +import java.time.LocalDateTime @ExtendWith(SpringExtension::class) class VedtakserviceTest : TestContainerRunner() { @@ -102,7 +131,14 @@ class VedtakserviceTest : TestContainerRunner() { lateinit var vedtakService: VedtakService lateinit var beregningService: BeregningService + @MockK + lateinit var underholdskostnadRepository: UnderholdskostnadRepository + + @MockK + lateinit var personRepository: PersonRepository + val unleash = FakeUnleash() + val notatService = NotatService() @BeforeEach fun initMocks() { @@ -112,7 +148,23 @@ class VedtakserviceTest : TestContainerRunner() { bidragPersonConsumer = stubPersonConsumer() val personService = PersonService(bidragPersonConsumer) val validerBeregning = ValiderBeregning() - val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning) + val behandlingTilGrunnlagMappingV2 = BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())) + val dtomapper = + Dtomapper( + tilgangskontrollService, + validerBeregning, + validerBehandlingService, + VedtakGrunnlagMapper(behandlingTilGrunnlagMappingV2, validerBeregning, evnevurderingService, personService), + BeregnBarnebidragApi(), + ) + val underholdService = + UnderholdService( + underholdskostnadRepository, + personRepository, + notatService, + dtomapper, + ) + val vedtakTilBehandlingMapping = VedtakTilBehandlingMapping(validerBeregning, underholdService) val vedtakGrunnlagMapper = VedtakGrunnlagMapper( BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())), @@ -120,6 +172,7 @@ class VedtakserviceTest : TestContainerRunner() { evnevurderingService, personService, ) + beregningService = BeregningService( behandlingService, @@ -150,6 +203,7 @@ class VedtakserviceTest : TestContainerRunner() { stubUtils.stubAlleBidragVedtakForStønad() stubUtils.stubBidraBBMHentBeregning() stubUtils.stubBidragStonadLøpendeSaker() + stubUtils.stubBidragStønaderForSkyldner() } @Test @@ -201,23 +255,67 @@ class VedtakserviceTest : TestContainerRunner() { @Test @Transactional - fun `Skal fatte vedtak for særbidrag`() { + fun `Skal fatte vedtak for bidrag behandling`() { stubPersonConsumer() - val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.SÆRBIDRAG) + val behandling = opprettGyldigBehandlingForBeregningOgVedtak(false, typeBehandling = TypeBehandling.BIDRAG) + behandling.leggTilNotat( + "Notat samvær BARN", + NotatGrunnlag.NotatType.SAMVÆR, + behandling.søknadsbarn.first(), + ) + behandling.leggTilNotat( + "Notat underholdskostnad BARN", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.søknadsbarn.first(), + ) + behandling.leggTilNotat( + "Notat underholdskostnad Andre barn", + NotatGrunnlag.NotatType.UNDERHOLDSKOSTNAD, + behandling.bidragsmottaker, + ) + behandling.leggTilNotat( + "Notat inntekt BM", + NotatGrunnlag.NotatType.INNTEKT, + behandling.bidragsmottaker!!, + ) + behandling.leggTilNotat( + "Notat inntekt BP", + NotatGrunnlag.NotatType.INNTEKT, + behandling.bidragspliktig!!, + ) + behandling.leggTilNotat( + "Notat inntekt BA", + NotatGrunnlag.NotatType.INNTEKT, + behandling.søknadsbarn.first()!!, + ) + behandling.leggTilNotat( + "Boforhold", + NotatGrunnlag.NotatType.BOFORHOLD, + ) + behandling.refVedtaksid = 553 + behandling.klageMottattdato = LocalDate.now() behandling.inntekter = mutableSetOf() behandling.grunnlag = mutableSetOf() - behandling.virkningstidspunkt = LocalDate.now().withDayOfMonth(1) - behandling.engangsbeloptype = Engangsbeløptype.SÆRBIDRAG - behandling.stonadstype = null + behandling.virkningstidspunkt = LocalDate.parse("2024-01-01") + behandling.søknadsbarn.first().innbetaltBeløp = BigDecimal(500) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!, behandling.virkningstidspunkt!!.plusMonths(1)), samværsklasse = Samværsklasse.SAMVÆRSKLASSE_1) + behandling.leggTilSamvær(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null)) + behandling.leggTilTillegsstønad(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(4), null)) + behandling.leggTilFaktiskTilsynsutgift(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null), testdataHusstandsmedlem1) + behandling.leggTilFaktiskTilsynsutgift(ÅrMånedsperiode(behandling.virkningstidspunkt!!, null)) + behandling.leggTilBarnetilsyn(ÅrMånedsperiode(behandling.virkningstidspunkt!!.plusMonths(1), null)) + behandling.leggTilBarnetillegg(testdataBarn1, behandling.bidragsmottaker!!) + behandling.leggTilBarnetillegg(testdataBarn1, behandling.bidragspliktig!!) + testdataManager.lagreBehandling(behandling) stubUtils.stubHentePersoninfo(personident = behandling.bidragsmottaker!!.ident!!) - behandling.initGrunnlagRespons(stubUtils) + behandling.initGrunnlagRespons(stubUtils) grunnlagService.oppdatereGrunnlagForBehandling(behandling) entityManager.flush() entityManager.refresh(behandling) - behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) - behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_3MND) + behandling.taMedInntekt(behandling.bidragsmottaker!!, Inntektsrapportering.AINNTEKT_BEREGNET_12MND) + behandling.taMedInntekt(behandling.bidragspliktig!!, Inntektsrapportering.AINNTEKT_BEREGNET_12MND) every { sakConsumer.hentSak(any()) } returns opprettSakForBehandling(behandling) @@ -229,29 +327,110 @@ class VedtakserviceTest : TestContainerRunner() { ) vedtakService.fatteVedtak(behandling.id!!) - + entityManager.flush() + entityManager.refresh(behandling) val opprettVedtakRequest = opprettVedtakSlot.captured + assertSoftly(behandling) { + vedtaksid shouldBe testVedtakResponsId + vedtakstidspunkt!! shouldHaveSameDayAs LocalDateTime.now() + vedtakFattetAv shouldBe SAKSBEHANDLER_IDENT + } + assertSoftly(opprettVedtakRequest) { val request = opprettVedtakRequest request.type shouldBe Vedtakstype.FASTSETTELSE - request.stønadsendringListe.shouldBeEmpty() - request.engangsbeløpListe shouldHaveSize 1 - request.engangsbeløpListe.first().type shouldBe Engangsbeløptype.SÆRBIDRAG + request.stønadsendringListe.shouldHaveSize(1) + request.engangsbeløpListe shouldHaveSize 3 + withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") { + request.grunnlagListe shouldHaveSize 176 + } + } + + val grunnlagsliste = opprettVedtakRequest.grunnlagListe + assertSoftly(opprettVedtakRequest.stønadsendringListe[0]) { + it.type shouldBe Stønadstype.BIDRAG + it.sak shouldBe Saksnummer(behandling.saksnummer) + it.skyldner shouldBe Personident(behandling.bidragspliktig!!.ident!!) + it.kravhaver shouldBe Personident(behandling.søknadsbarn.first().ident!!) + it.mottaker shouldBe Personident(behandling.bidragsmottaker!!.ident!!) + it.innkreving shouldBe Innkrevingstype.MED_INNKREVING + it.beslutning shouldBe Beslutningstype.ENDRING + + it.periodeListe shouldHaveSize 6 + it.grunnlagReferanseListe shouldHaveSize 9 + grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( + Grunnlagstype.NOTAT, + it.grunnlagReferanseListe, + ) shouldHaveSize + 7 + grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( + Grunnlagstype.SØKNAD, + it.grunnlagReferanseListe, + ) shouldHaveSize + 1 + grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( + Grunnlagstype.VIRKNINGSTIDSPUNKT, + it.grunnlagReferanseListe, + ) shouldHaveSize + 1 + + assertSoftly(it.periodeListe[0]) { + grunnlagsliste.finnGrunnlagSomErReferertFraGrunnlagsreferanseListe( + Grunnlagstype.SLUTTBEREGNING_BARNEBIDRAG, + it.grunnlagReferanseListe, + ) shouldHaveSize + 1 + } + } + assertSoftly(opprettVedtakRequest) { + val bmGrunnlag = grunnlagListe.hentPerson(testdataBM.ident)!! + val bpGrunnlag = grunnlagListe.hentPerson(testdataBP.ident)!! + val barn1Grunnlag = grunnlagListe.hentPerson(testdataBarn1.ident)!! + + assertSoftly(hentGrunnlagstyper(Grunnlagstype.NOTAT)) { + shouldHaveSize(7) + } + + hentGrunnlagstyper(Grunnlagstype.TILLEGGSSTØNAD_PERIODE) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.FAKTISK_UTGIFT_PERIODE) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.BARNETILSYN_MED_STØNAD_PERIODE) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.SAMVÆRSPERIODE) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.DELBEREGNING_SAMVÆRSKLASSE_NETTER) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.SAMVÆRSKALKULATOR) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.VIRKNINGSTIDSPUNKT) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.SØKNAD) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 3 // TODO: Hvorfor 3? + hentGrunnlagstyper(Grunnlagstype.SJABLON_SJABLONTALL) shouldHaveSize 22 + hentGrunnlagstyper(Grunnlagstype.SJABLON_BIDRAGSEVNE) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.SJABLON_TRINNVIS_SKATTESATS) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 8 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 3 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) + .find { it.gjelderReferanse == bmGrunnlag.referanse } shouldNotBe null + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) + .find { it.gjelderReferanse == bpGrunnlag.referanse } shouldNotBe null + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) + .find { it.gjelderReferanse == barn1Grunnlag.referanse } shouldNotBe null + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 2 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) + .find { it.gjelderReferanse == bmGrunnlag.referanse } shouldNotBe null + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) + .find { it.gjelderReferanse == bpGrunnlag.referanse } shouldNotBe null + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_ARBEIDSFORHOLD) shouldHaveSize 3 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_ANDRE_VOKSNE_I_HUSSTANDEN) shouldHaveSize 1 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_HUSSTANDSMEDLEM) shouldHaveSize 11 + hentGrunnlagstyper(Grunnlagstype.INNHENTET_SIVILSTAND) shouldHaveSize 0 } verify(exactly = 1) { vedtakConsumer.fatteVedtak(any()) } + verify(exactly = 1) { notatOpplysningerService.opprettNotat(any()) } } } - -fun Behandling.taMedInntekt( - rolle: Rolle, - type: Inntektsrapportering, -) { - val inntekt = inntekter.find { it.ident == rolle.ident && type == it.type }!! - inntekt.taMed = true - inntekt.datoFom = virkningstidspunkt -} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/transformers/VedtakInnhentetGrunnlagTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/transformers/VedtakInnhentetGrunnlagTest.kt index 41321f18d..def678875 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/transformers/VedtakInnhentetGrunnlagTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/transformers/VedtakInnhentetGrunnlagTest.kt @@ -779,7 +779,7 @@ class VedtakInnhentetGrunnlagTest { periode.fom shouldBe LocalDate.parse("2022-01-01") periode.til shouldBe LocalDate.parse("2022-07-31") tilsynstype shouldBe Tilsynstype.HELTID - skolealder shouldBe Skolealder.IKKE_ANGITT + skolealder shouldBe Skolealder.OVER } } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index 2e90dc5d2..ba7d5b09d 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -22,7 +22,9 @@ import no.nav.bidrag.behandling.consumer.BidragPersonConsumer import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo import no.nav.bidrag.behandling.consumer.OpprettForsendelseRespons import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Person import no.nav.bidrag.behandling.database.datamodell.Rolle +import no.nav.bidrag.behandling.database.repository.PersonRepository import no.nav.bidrag.behandling.service.PersonService import no.nav.bidrag.behandling.transformers.Jsonoperasjoner.Companion.tilJson import no.nav.bidrag.behandling.utils.testdata.BP_BARN_ANNEN_IDENT @@ -75,6 +77,20 @@ fun stubTokenUtils() { fun createPersonServiceMock(): PersonService = PersonService(stubPersonConsumer()) +fun stubPersonRepository(): PersonRepository { + val personRepositoryMock = mockkClass(PersonRepository::class) + every { personRepositoryMock.findFirstByIdent(any()) }.answers { + val personId = firstArg() + val personer = + listOf(testdataBM, testdataBarn1, testdataBarn2, testdataBP, testdataHusstandsmedlem1) + personer.find { it.ident == personId }?.tilPerson() ?: Person( + ident = firstArg(), + fødselsdato = LocalDate.parse("2015-05-01"), + ) + } + return personRepositoryMock +} + fun stubPersonConsumer(): BidragPersonConsumer { try { clearMocks(BidragPersonConsumer::class) @@ -144,6 +160,18 @@ class StubUtils { ) } + fun stubBidragStønaderForSkyldner( + filnavn: String = "alle-stønader-bp-tom", + ) { + WireMock.stubFor( + WireMock.post(urlMatching("/stonad/hent-alle-stonader-for-skyldner")).willReturn( + aClosedJsonResponse() + .withStatus(HttpStatus.OK.value()) + .withBody(erstattVariablerITestFil("stonad/$filnavn")), + ), + ) + } + fun stubBidragVedtakForStønad( kravhaverIdent: String, filnavn: String, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/TestdataGrunnlag.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/TestdataGrunnlag.kt index ac9e3f239..1315d8dde 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/TestdataGrunnlag.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/TestdataGrunnlag.kt @@ -450,7 +450,7 @@ fun opprettBarnetilsynListe() = periodeTil = LocalDate.parse("2022-07-31"), beløp = 1000, tilsynstype = Tilsynstype.HELTID, - skolealder = Skolealder.IKKE_ANGITT, + skolealder = Skolealder.OVER, ), BarnetilsynGrunnlagDto( partPersonId = testdataBM.ident, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/VedtakTestdataExtensions.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/VedtakTestdataExtensions.kt index dd509c98f..36f6dcf12 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/VedtakTestdataExtensions.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/VedtakTestdataExtensions.kt @@ -4,6 +4,7 @@ import io.kotest.assertions.withClue import io.kotest.matchers.shouldNotBe import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.transport.behandling.felles.grunnlag.Grunnlagsreferanse +import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag import no.nav.bidrag.transport.behandling.felles.grunnlag.Person import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt import no.nav.bidrag.transport.behandling.vedtak.request.OpprettGrunnlagRequestDto @@ -23,6 +24,13 @@ fun OpprettVedtakRequestDto.hentGrunnlagstype( it.type == grunnlagstype && (gjelderReferanse == null || it.gjelderReferanse == gjelderReferanse) } +fun OpprettVedtakRequestDto.hentNotat( + notatType: NotatGrunnlag.NotatType, + gjelderReferanse: String? = null, +) = grunnlagListe.find { + it.type == Grunnlagstype.NOTAT && (gjelderReferanse == null || it.gjelderReferanse == gjelderReferanse) && it.innholdTilObjekt().type == notatType +} + fun List.hentPerson(ident: String) = hentGrunnlagstyper("PERSON_") .find { grunnlag -> grunnlag.innholdTilObjekt().ident?.verdi == ident } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt index 90a6b7c28..0b1c52c22 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/testdata/Testdata.kt @@ -6,8 +6,10 @@ import no.nav.bidrag.behandling.consumer.BehandlingInfoResponseDto import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo +import no.nav.bidrag.behandling.database.datamodell.Barnetilsyn import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Bostatusperiode +import no.nav.bidrag.behandling.database.datamodell.FaktiskTilsynsutgift import no.nav.bidrag.behandling.database.datamodell.Grunnlag import no.nav.bidrag.behandling.database.datamodell.Husstandsmedlem import no.nav.bidrag.behandling.database.datamodell.Inntekt @@ -16,7 +18,9 @@ import no.nav.bidrag.behandling.database.datamodell.Notat import no.nav.bidrag.behandling.database.datamodell.Person import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.Samvær +import no.nav.bidrag.behandling.database.datamodell.Samværsperiode import no.nav.bidrag.behandling.database.datamodell.Sivilstand +import no.nav.bidrag.behandling.database.datamodell.Tilleggsstønad import no.nav.bidrag.behandling.database.datamodell.Underholdskostnad import no.nav.bidrag.behandling.database.datamodell.Utgift import no.nav.bidrag.behandling.database.datamodell.Utgiftspost @@ -38,8 +42,11 @@ import no.nav.bidrag.behandling.transformers.grunnlag.skattegrunnlagListe import no.nav.bidrag.behandling.transformers.grunnlag.tilGrunnlagPerson import no.nav.bidrag.behandling.transformers.grunnlag.tilInntekt import no.nav.bidrag.behandling.transformers.tilType +import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi import no.nav.bidrag.boforhold.BoforholdApi import no.nav.bidrag.boforhold.dto.BoforholdResponseV2 +import no.nav.bidrag.commons.web.mock.stubSjablonService +import no.nav.bidrag.domene.enums.barnetilsyn.Tilsynstype import no.nav.bidrag.domene.enums.behandling.TypeBehandling import no.nav.bidrag.domene.enums.beregning.Samværsklasse import no.nav.bidrag.domene.enums.diverse.Kilde @@ -53,6 +60,8 @@ import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.sak.Bidragssakstatus import no.nav.bidrag.domene.enums.sak.Sakskategori +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 @@ -64,12 +73,15 @@ import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.domene.ident.ReellMottager import no.nav.bidrag.domene.organisasjon.Enhetsnummer import no.nav.bidrag.domene.sak.Saksnummer +import no.nav.bidrag.domene.tid.ÅrMånedsperiode import no.nav.bidrag.inntekt.InntektApi import no.nav.bidrag.sivilstand.SivilstandApi import no.nav.bidrag.sivilstand.dto.SivilstandRequest import no.nav.bidrag.transport.behandling.beregning.felles.BidragBeregningResponsDto +import no.nav.bidrag.transport.behandling.beregning.samvær.SamværskalkulatorDetaljer import no.nav.bidrag.transport.behandling.felles.grunnlag.LøpendeBidrag import no.nav.bidrag.transport.behandling.felles.grunnlag.NotatGrunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.delberegningSamværsklasse import no.nav.bidrag.transport.behandling.grunnlag.response.AinntektspostDto import no.nav.bidrag.transport.behandling.grunnlag.response.Ansettelsesdetaljer import no.nav.bidrag.transport.behandling.grunnlag.response.ArbeidsforholdGrunnlagDto @@ -85,6 +97,7 @@ import no.nav.bidrag.transport.person.PersonDto import no.nav.bidrag.transport.sak.BidragssakDto import no.nav.bidrag.transport.sak.RolleDto import java.math.BigDecimal +import java.nio.charset.Charset import java.time.LocalDate import java.time.LocalDateTime import java.time.YearMonth @@ -135,6 +148,14 @@ val testdataHusstandsmedlem1 = fødselsdato = LocalDate.parse("2001-05-09"), ) +val testdataBarnBm = + TestDataPerson( + navn = "Huststand Dett", + ident = "3123123123123", + rolletype = Rolletype.BARN, + fødselsdato = LocalDate.parse("2001-05-09"), + ) + val voksenPersonIBpsHusstand = Testperson(navn = "Gillinger Owa", personident = "01010012345", fødselsdato = LocalDate.of(2000, 1, 1)) @@ -164,6 +185,17 @@ data class TestDataPerson( behandling = behandling, ) + fun tilPerson( + behandling: Behandling = oppretteBehandling(), + id: Long = 1, + ) = Person( + id = id + 1, + ident = ident, + navn = navn, + fødselsdato = fødselsdato, + rolle = mutableSetOf(tilRolle(behandling, id)), + ) + fun tilPersonDto() = PersonDto( ident = Personident(ident), @@ -368,7 +400,7 @@ fun oppretteBehandlingRoller( ), ) - if (typeBehandling != TypeBehandling.SÆRBIDRAG) { + if (typeBehandling == TypeBehandling.FORSKUDD) { roller.add( Rolle( ident = testdataBarn2.ident, @@ -625,7 +657,24 @@ fun opprettGyldigBehandlingForBeregningOgVedtak( behandling.stonadstype = Stønadstype.BIDRAG behandling.årsak = VirkningstidspunktÅrsakstype.FRA_SØKNADSTIDSPUNKT behandling.engangsbeloptype = null - behandling.samvær = mutableSetOf(Samvær(behandling, rolle = behandling.søknadsbarn.first())) + behandling.samvær = + behandling.søknadsbarn + .map { + Samvær( + behandling, + rolle = it, + id = if (generateId) 1 else null, + ) + }.toMutableSet() + behandling.underholdskostnader = + behandling.søknadsbarn + .map { + Underholdskostnad( + id = if (generateId) 1 else null, + behandling = behandling, + person = Person(ident = it.ident, rolle = mutableSetOf(it)), + ) + }.toMutableSet() husstandsmedlem.add( behandling.oppretteHusstandsmedlem( if (generateId) 2 else null, @@ -755,25 +804,31 @@ fun opprettAlleAktiveGrunnlagFraFil( behandling: Behandling, filnavn: String, ): MutableSet { + val filJsonString = + try { + hentFil("/__files/$filnavn").readText(Charset.defaultCharset()) + } catch (e: Exception) { + filnavn + } val grunnlagListe = listOf( - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.BOFORHOLD), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.ARBEIDSFORHOLD), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.BARNETILSYN), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.BARNETILLEGG), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.KONTANTSTØTTE), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.SMÅBARNSTILLEGG), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.UTVIDET_BARNETRYGD), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.SKATTEPLIKTIGE_INNTEKTER), - opprettBeregnetInntektFraGrunnlag(behandling, filnavn, testdataBM), - opprettBeregnetInntektFraGrunnlag(behandling, filnavn, testdataBarn1), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.BOFORHOLD), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.ARBEIDSFORHOLD), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.BARNETILSYN), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.BARNETILLEGG), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.KONTANTSTØTTE), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.SMÅBARNSTILLEGG), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.UTVIDET_BARNETRYGD), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.SKATTEPLIKTIGE_INNTEKTER), + opprettBeregnetInntektFraGrunnlag(behandling, filJsonString, testdataBM), + opprettBeregnetInntektFraGrunnlag(behandling, filJsonString, testdataBarn1), ).flatten().toMutableSet() when (behandling.tilType()) { TypeBehandling.FORSKUDD -> { grunnlagListe.addAll( listOf( - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.SIVILSTAND), - opprettBeregnetInntektFraGrunnlag(behandling, filnavn, testdataBarn2), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.SIVILSTAND), + opprettBeregnetInntektFraGrunnlag(behandling, filJsonString, testdataBarn2), ).flatten(), ) } @@ -781,8 +836,8 @@ fun opprettAlleAktiveGrunnlagFraFil( else -> { grunnlagListe.addAll( listOf( - opprettBeregnetInntektFraGrunnlag(behandling, filnavn, testdataBP), - opprettGrunnlagFraFil(behandling, filnavn, Grunnlagsdatatype.BOFORHOLD_ANDRE_VOKSNE_I_HUSSTANDEN), + opprettBeregnetInntektFraGrunnlag(behandling, filJsonString, testdataBP), + opprettGrunnlagFraFil(behandling, filJsonString, Grunnlagsdatatype.BOFORHOLD_ANDRE_VOKSNE_I_HUSSTANDEN), ).flatten(), ) } @@ -792,11 +847,10 @@ fun opprettAlleAktiveGrunnlagFraFil( fun opprettBeregnetInntektFraGrunnlag( behandling: Behandling, - filnavn: String, + filJson: String, testDataPerson: TestDataPerson, ): List { - val fil = hentFil("/__files/$filnavn") - val grunnlag: HentGrunnlagDto = commonObjectmapper.readValue(fil) + val grunnlag: HentGrunnlagDto = commonObjectmapper.readValue(filJson) val inntekterBearbeidet = InntektApi("").transformerInntekter( grunnlag.tilTransformerInntekterRequest( @@ -1480,9 +1534,8 @@ fun lagGrunnlagsdata( ): HentGrunnlagDto { val fil = hentFil("/__files/$filnavn") var stringValue = fil.readText().replace("{personId}", gjelderIdent) - stringValue = stringValue.replace("{barnId}", barnIdent) - stringValue = stringValue.replace("{barnId2}", barnIdent2) - stringValue = stringValue.replace("{barnId2}", barnIdent2) + stringValue = stringValue.replace("{barn1Ident}", barnIdent) + stringValue = stringValue.replace("{barn2Ident}", barnIdent2) stringValue = stringValue.replace("{hustandsmedlem1}", hustandsmedlem1) stringValue = stringValue.replace("{dagens_dato}", LocalDateTime.now().toString()) (0..24).forEach { @@ -1549,10 +1602,9 @@ fun erstattVariablerITestFil(filnavn: String): String { stringValue = stringValue.replace("{bmfDato}", testdataBM.fødselsdato.toString()) stringValue = stringValue.replace("{bpIdent}", testdataBP.ident) stringValue = stringValue.replace("{bpfDato}", testdataBP.fødselsdato.toString()) - stringValue = stringValue.replace("{barnId}", testdataBarn1.ident) - stringValue = stringValue.replace("{barnIdent}", testdataBarn1.ident) + stringValue = stringValue.replace("{barn1Ident}", testdataBarn1.ident) stringValue = stringValue.replace("{barnfDato}", testdataBarn1.fødselsdato.toString()) - stringValue = stringValue.replace("{barnId2}", testdataBarn2.ident) + stringValue = stringValue.replace("{barn2Ident}", testdataBarn2.ident) stringValue = stringValue.replace("{barn2fDato}", testdataBarn2.fødselsdato.toString()) stringValue = stringValue.replace("{saksnummer}", SAKSNUMMER) stringValue = stringValue.replace("{dagens_dato}", LocalDateTime.now().toString()) @@ -1608,3 +1660,164 @@ fun opprettEvnevurderingResultat(sakerFor: List { - val fil = hentFil("/__files/$filnavn") val grunnlag: HentGrunnlagDto = commonObjectmapper.readValue(fil) return when (type) { diff --git a/src/test/resources/__files/bidragbbm/bbm-beregning_2.json b/src/test/resources/__files/bidragbbm/bbm-beregning_2.json index 8fd685695..ed3e97c86 100644 --- a/src/test/resources/__files/bidragbbm/bbm-beregning_2.json +++ b/src/test/resources/__files/bidragbbm/bbm-beregning_2.json @@ -1,7 +1,7 @@ { "beregningListe" : [ { "saksnummer" : "{saksnummer}", - "personidentBarn" : "{barnIdent}", + "personidentBarn" : "{barn1Ident}", "gjelderFom" : "2023-09-01", "datoSøknad" : "2023-05-28", "beregnetBeløp" : 3159.00, diff --git a/src/test/resources/__files/grunnlagresponse_bp.json b/src/test/resources/__files/grunnlagresponse_bp.json new file mode 100644 index 000000000..eac9e9943 --- /dev/null +++ b/src/test/resources/__files/grunnlagresponse_bp.json @@ -0,0 +1,3396 @@ +{ + "ainntektListe": [ + { + "personId": "{barn1Ident}", + "periodeFra": "2023-01-01", + "periodeTil": "2024-02-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-01-01", + "periodeTil": "2023-02-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-01", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-02-01", + "periodeTil": "2023-03-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-02", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-03-01", + "periodeTil": "2023-04-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-03", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-04-01", + "periodeTil": "2023-05-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-04", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-05-01", + "periodeTil": "2023-06-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-05", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-06-01", + "periodeTil": "2023-07-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-06", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-07-01", + "periodeTil": "2023-08-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-07", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-08-01", + "periodeTil": "2023-09-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-08", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-09-01", + "periodeTil": "2023-10-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-09", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-10-01", + "periodeTil": "2023-11-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-10", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-11-01", + "periodeTil": "2023-12-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-11", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-12-01", + "periodeTil": "2024-01-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2023-12", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2024-01-01", + "periodeTil": "2024-02-01", + "ainntektspostListe": [ + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2022-05-31", + "opptjeningsperiodeTil": "2022-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-06-30", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-09-30", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2022-01-01", + "opptjeningsperiodeTil": "2022-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2022-07-31", + "opptjeningsperiodeTil": "2022-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": "2023-08-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 40000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2022-10-31", + "opptjeningsperiodeTil": "2023-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "947064649", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-05-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 800000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 500000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-07-31", + "opptjeningsperiodeTil": null, + "opplysningspliktigId": "963743254", + "virksomhetId": "896929119", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 600000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-11-01", + "opptjeningsperiodeTil": "2024-01-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 70000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-07-01", + "opptjeningsperiodeTil": "2023-09-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 60000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-09-01", + "opptjeningsperiodeTil": "2023-11-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 65000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-01-01", + "opptjeningsperiodeTil": "2023-06-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 50000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + }, + { + "utbetalingsperiode": "2024-01", + "opptjeningsperiodeFra": "2023-06-01", + "opptjeningsperiodeTil": "2023-07-01", + "opplysningspliktigId": "963743254", + "virksomhetId": "967170232", + "inntektType": "LOENNSINNTEKT", + "fordelType": "kontantytelse", + "beskrivelse": "fastloenn", + "belop": 80000, + "etterbetalingsperiodeFra": null, + "etterbetalingsperiodeTil": null + } + ] + } + ], + "skattegrunnlagListe": [ + { + "personId": "{bpIdent}", + "periodeFra": "2021-01-01", + "periodeTil": "2022-01-01", + "skattegrunnlagspostListe": [] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2022-01-01", + "periodeTil": "2023-01-01", + "skattegrunnlagspostListe": [ + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenArbeidsinntekt", + "belop": 5000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraAnnetFinansprodukt", + "belop": 4000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraVirtuellValuta", + "belop": 40000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "dagpengerForNaeringsdrivende", + "belop": 20000.0 + } + ] + }, + { + "personId": "{barn1Ident}", + "periodeFra": "2023-01-01", + "periodeTil": "2024-01-01", + "skattegrunnlagspostListe": [ + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenArbeidsinntekt", + "belop": 6000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraAnnetFinansprodukt", + "belop": 5000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraVirtuellValuta", + "belop": 50000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "arbeidsavklaringspenger", + "belop": 10000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "inntektFraGevinstOgTapskonto", + "belop": 30000.0 + } + ] + }, + { + "personId": "{bmIdent}", + "periodeFra": "2023-01-01", + "periodeTil": "2024-01-01", + "skattegrunnlagspostListe": [ + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenArbeidsinntekt", + "belop": 6000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraAnnetFinansprodukt", + "belop": 5000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraVirtuellValuta", + "belop": 50000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "arbeidsavklaringspenger", + "belop": 10000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "inntektFraGevinstOgTapskonto", + "belop": 30000.0 + } + ] + }, + { + "personId": "{bpIdent}", + "periodeFra": "2023-01-01", + "periodeTil": "2024-01-01", + "skattegrunnlagspostListe": [ + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenArbeidsinntekt", + "belop": 6000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraAnnetFinansprodukt", + "belop": 5000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "annenSkattepliktigKapitalinntektFraVirtuellValuta", + "belop": 50000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "arbeidsavklaringspenger", + "belop": 10000.0 + }, + { + "skattegrunnlagType": "ORDINÆR", + "inntektType": "inntektFraGevinstOgTapskonto", + "belop": 30000.0 + } + ] + } + ], + "utvidetBarnetrygdListe": [ + { + "personId": "{bpIdent}", + "periodeFra": "2022-01-01", + "periodeTil": "2022-03-31", + "manueltBeregnet": false, + "beløp": 1000.0 + } + ], + "småbarnstilleggListe": [ + { + "personId": "{bpIdent}", + "periodeFra": "2024-01-01", + "periodeTil": "2024-03-31", + "manueltBeregnet": false, + "beløp": 1000.0 + } + ], + "barnetilleggListe": [ + { + "partPersonId": "{bpIdent}", + "barnPersonId": "{barn1Ident}", + "periodeFra": "2023-01-01", + "periodeTil": "2024-01-01", + "barnetilleggType": "PENSJON", + "barnType": "FELLES", + "beløpBrutto": 1000.0 + } + ], + "kontantstøtteListe": [ + { + "partPersonId": "{bpIdent}", + "barnPersonId": "{barn1Ident}", + "periodeFra": "2023-01-01", + "periodeTil": "2023-03-31", + "beløp": 1000.0 + } + ], + "husstandsmedlemmerOgEgneBarnListe": [ + { + "partPersonId": "{bpIdent}", + "gjelderPersonId": "{barn1Ident}", + "navn": "GNIEN VAKLENDE PERLE", + "fødselsdato": "2020-03-01", + "relasjon": "BARN", + "borISammeHusstandDtoListe": [ + { + "periodeFra": "2016-11-30", + "periodeTil": "2016-12-31" + }, + { + "periodeFra": "2017-02-01", + "periodeTil": "2017-03-15" + }, + { + "periodeFra": "2017-03-30", + "periodeTil": null + } + ] + }, + { + "partPersonId": "{bpIdent}", + "gjelderPersonId": "443322112233", + "navn": "REALISTISK PUB", + "fødselsdato": "1978-09-11", + "relasjon": "INGEN", + "borISammeHusstandDtoListe": [ + { + "periodeFra": "2009-01-01", + "periodeTil": "2012-02-01" + }, + { + "periodeFra": "2023-07-31", + "periodeTil": null + } + ] + }, + { + "partPersonId": "{bpIdent}", + "gjelderPersonId": "{barn2Ident}", + "navn": "FLYKTIG BEFRIENDE ELV", + "fødselsdato": "2018-05-09", + "relasjon": "BARN", + "borISammeHusstandDtoListe": [ + { + "periodeFra": "2005-05-21", + "periodeTil": "2012-02-01" + }, + { + "periodeFra": "2017-03-30", + "periodeTil": null + } + ] + }, + { + "partPersonId": "{bpIdent}", + "gjelderPersonId": "98545454545", + "navn": "SALIG TORN", + "fødselsdato": "2005-06-23", + "relasjon": "BARN", + "borISammeHusstandDtoListe": [ + { + "periodeFra": "2010-10-06", + "periodeTil": "2023-01-02" + }, + { + "periodeFra": "2023-05-01", + "periodeTil": null + } + ] + }, + { + "partPersonId": "{bpIdent}", + "gjelderPersonId": "31231231231", + "navn": "FIKTIV PEDAGOG", + "fødselsdato": "2001-05-09", + "relasjon": "INGEN", + "borISammeHusstandDtoListe": [ + { + "periodeFra": "2017-03-30", + "periodeTil": null + } + ] + } + ], + "sivilstandListe": [ + { + "personId": "{bpIdent}", + "type": "UGIFT", + "gyldigFom": "1978-08-25", + "bekreftelsesdato": null, + "master": "FREG", + "registrert": "2024-01-05T07:45:19", + "historisk": true + }, + { + "personId": "{bpIdent}", + "type": "SKILT", + "gyldigFom": "2022-11-01", + "bekreftelsesdato": null, + "master": "FREG", + "registrert": "2024-01-05T07:45:19", + "historisk": false + }, + { + "personId": "{bpIdent}", + "type": "SKILT", + "gyldigFom": "2022-12-01", + "bekreftelsesdato": null, + "master": "PDL", + "registrert": "2024-01-05T07:45:19", + "historisk": false + } + ], + "barnetilsynListe": [ + { + "partPersonId": "{bmIdent}", + "barnPersonId": "{barn1Ident}", + "periodeFra": "2024-01-01", + "periodeTil": "2025-07-01", + "tilsynstype": "HELTID", + "skolealder": "OVER" + } + ], + "arbeidsforholdListe": [ + { + "partPersonId": "{bpIdent}", + "startdato": "2002-11-03", + "sluttdato": null, + "arbeidsgiverNavn": "SAUEFABRIKK", + "arbeidsgiverOrgnummer": "896929119", + "ansettelsesdetaljerListe": [ + { + "periodeFra": "2002-11", + "periodeTil": null, + "arbeidsforholdType": "Forenklet", + "arbeidstidsordningBeskrivelse": null, + "ansettelsesformBeskrivelse": null, + "yrkeBeskrivelse": "ALLMENNLÆRER", + "antallTimerPrUke": null, + "avtaltStillingsprosent": null, + "sisteStillingsprosentendringDato": null, + "sisteLønnsendringDato": null + } + ], + "permisjonListe": [], + "permitteringListe": [] + }, + { + "partPersonId": "{bpIdent}", + "startdato": "2003-12-08", + "sluttdato": null, + "arbeidsgiverNavn": "SJOKKERENDE ELEKTRIKER", + "arbeidsgiverOrgnummer": "947064649", + "ansettelsesdetaljerListe": [ + { + "periodeFra": "2024-01", + "periodeTil": null, + "arbeidsforholdType": "Ordinaer", + "arbeidstidsordningBeskrivelse": "Ikke skift", + "ansettelsesformBeskrivelse": "Fast ansettelse", + "yrkeBeskrivelse": "ALLMENNLÆRER", + "antallTimerPrUke": 37.5, + "avtaltStillingsprosent": 75.0, + "sisteStillingsprosentendringDato": null, + "sisteLønnsendringDato": null + } + ], + "permisjonListe": [ + { + "startdato": "2023-11-01", + "sluttdato": "2024-01-01", + "beskrivelse": "Permisjon", + "prosent": 100.0 + } + ], + "permitteringListe": [ + { + "startdato": "2023-01-01", + "sluttdato": "2023-01-31", + "beskrivelse": "Permittering", + "prosent": 100.0 + } + ] + }, + { + "partPersonId": "{bpIdent}", + "startdato": "2022-12-07", + "sluttdato": null, + "arbeidsgiverNavn": "SAUEFABRIKK", + "arbeidsgiverOrgnummer": "896929119", + "ansettelsesdetaljerListe": [ + { + "periodeFra": "2022-12", + "periodeTil": null, + "arbeidsforholdType": "Forenklet", + "arbeidstidsordningBeskrivelse": null, + "ansettelsesformBeskrivelse": null, + "yrkeBeskrivelse": "BYGNINGSSNEKKER", + "antallTimerPrUke": null, + "avtaltStillingsprosent": null, + "sisteStillingsprosentendringDato": null, + "sisteLønnsendringDato": null + } + ], + "permisjonListe": [], + "permitteringListe": [] + } + ], + "feilrapporteringListe": [], + "hentetTidspunkt": "2024-01-29T14:18:03.006031152" +} \ No newline at end of file diff --git "a/src/test/resources/__files/stonad/alle-st\303\270nader-bp-tom.json" "b/src/test/resources/__files/stonad/alle-st\303\270nader-bp-tom.json" new file mode 100644 index 000000000..1fee45dfc --- /dev/null +++ "b/src/test/resources/__files/stonad/alle-st\303\270nader-bp-tom.json" @@ -0,0 +1,3 @@ +{ + "stønader": [] +} \ No newline at end of file diff --git "a/src/test/resources/__files/stonad/alle-st\303\270nader-bp.json" "b/src/test/resources/__files/stonad/alle-st\303\270nader-bp.json" new file mode 100644 index 000000000..806857168 --- /dev/null +++ "b/src/test/resources/__files/stonad/alle-st\303\270nader-bp.json" @@ -0,0 +1,29 @@ +{ + "stønader": [ + { + "sak": "2400111", + "type": "BIDRAG18AAR", + "kravhaver": "14430655591" + }, + { + "sak": "2400111", + "type": "BIDRAG", + "kravhaver": "14430655591" + }, + { + "sak": "2400109", + "type": "BIDRAG", + "kravhaver": "15461398089" + }, + { + "sak": "2400110", + "type": "BIDRAG", + "kravhaver": "29501571456" + }, + { + "sak": "2400110", + "type": "BIDRAG", + "kravhaver": "18461877423" + } + ] +} \ No newline at end of file diff --git "a/src/test/resources/__files/stonad/l\303\270pende-bidragssaker-bp_2.json" "b/src/test/resources/__files/stonad/l\303\270pende-bidragssaker-bp_2.json" index da006788a..1f22bae8d 100644 --- "a/src/test/resources/__files/stonad/l\303\270pende-bidragssaker-bp_2.json" +++ "b/src/test/resources/__files/stonad/l\303\270pende-bidragssaker-bp_2.json" @@ -2,7 +2,7 @@ "bidragssakerListe" : [ { "sak" : "{saksnummer}", "type" : "BIDRAG", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "løpendeBeløp" : 0 } ] } \ No newline at end of file diff --git "a/src/test/resources/__files/vedtak/vedtak-for-st\303\270nad-barn1_2.json" "b/src/test/resources/__files/vedtak/vedtak-for-st\303\270nad-barn1_2.json" index b8cc25a72..58972788a 100644 --- "a/src/test/resources/__files/vedtak/vedtak-for-st\303\270nad-barn1_2.json" +++ "b/src/test/resources/__files/vedtak/vedtak-for-st\303\270nad-barn1_2.json" @@ -8,7 +8,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2019, "innkreving" : "MED_INNKREVING", @@ -81,7 +81,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2020, "innkreving" : "MED_INNKREVING", @@ -114,7 +114,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2020, "innkreving" : "MED_INNKREVING", @@ -177,7 +177,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2021, "innkreving" : "MED_INNKREVING", @@ -210,7 +210,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2022, "innkreving" : "MED_INNKREVING", @@ -243,7 +243,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2023, "innkreving" : "MED_INNKREVING", @@ -276,7 +276,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2023, "innkreving" : "MED_INNKREVING", @@ -309,7 +309,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2023, "innkreving" : "MED_INNKREVING", @@ -342,7 +342,7 @@ "type" : "BIDRAG", "sak" : "{saksnummer}", "skyldner" : "{bpIdent}", - "kravhaver" : "{barnIdent}", + "kravhaver" : "{barn1Ident}", "mottaker" : "{bmIdent}", "førsteIndeksreguleringsår" : 2024, "innkreving" : "MED_INNKREVING", diff --git a/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-forskudd-bm.json b/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-forskudd-bm.json index aedc1e181..d49561508 100644 --- a/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-forskudd-bm.json +++ b/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-forskudd-bm.json @@ -329,7 +329,7 @@ "barnetilleggListe": [ { "partPersonId": "{personId}", - "barnPersonId": "{barnId}", + "barnPersonId": "{barn1Ident}", "periodeFra": "{virkningstidspunkt-minus-5m}", "periodeTil": "{virkningstidspunkt-plus-8m}", "barnetilleggType": "PENSJON", @@ -340,7 +340,7 @@ "kontantstøtteListe": [ { "partPersonId": "{personId}", - "barnPersonId": "{barnId}", + "barnPersonId": "{barn1Ident}", "periodeFra": "2023-01-01", "periodeTil": "2023-03-31", "beløp": 1000.0 @@ -378,7 +378,7 @@ "relasjon": "BARN", "fødselsdato": "2017-07-07", "partPersonId": "{personId}", - "gjelderPersonId": "{barnId}", + "gjelderPersonId": "{barn1Ident}", "borISammeHusstandDtoListe": [ { "periodeFra": "2022-07-26", @@ -404,7 +404,7 @@ "relasjon": "BARN", "fødselsdato": "2015-05-13", "partPersonId": "{personId}", - "gjelderPersonId": "{barnId2}", + "gjelderPersonId": "{barn2Ident}", "borISammeHusstandDtoListe": [ { "periodeFra": "2022-07-26", diff --git a/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bm.json b/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bm.json index 5ed42be15..151d7ab27 100644 --- a/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bm.json +++ b/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bm.json @@ -329,7 +329,7 @@ "barnetilleggListe": [ { "partPersonId": "{personId}", - "barnPersonId": "{barnId}", + "barnPersonId": "{barn1Ident}", "periodeFra": "{virkningstidspunkt-minus-5m}", "periodeTil": "{virkningstidspunkt-plus-8m}", "barnetilleggType": "PENSJON", @@ -340,7 +340,7 @@ "kontantstøtteListe": [ { "partPersonId": "{personId}", - "barnPersonId": "{barnId}", + "barnPersonId": "{barn1Ident}", "periodeFra": "2023-01-01", "periodeTil": "2023-03-31", "beløp": 1000.0 diff --git a/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bp.json b/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bp.json index b87741cf0..f843201af 100644 --- a/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bp.json +++ b/src/test/resources/__files/vedtak/vedtak-grunnlagrespons-sb-bp.json @@ -313,7 +313,7 @@ "barnetilleggListe": [ { "partPersonId": "{personId}", - "barnPersonId": "{barnId}", + "barnPersonId": "{barn1Ident}", "periodeFra": "{virkningstidspunkt-minus-5m}", "periodeTil": "{virkningstidspunkt-plus-8m}", "barnetilleggType": "PENSJON", @@ -354,7 +354,7 @@ "relasjon": "BARN", "fødselsdato": "2017-07-07", "partPersonId": "{personId}", - "gjelderPersonId": "{barnId}", + "gjelderPersonId": "{barn1Ident}", "borISammeHusstandDtoListe": [ { "periodeFra": "2022-07-26", @@ -380,7 +380,7 @@ "relasjon": "BARN", "fødselsdato": "2015-05-13", "partPersonId": "{personId}", - "gjelderPersonId": "{barnId2}", + "gjelderPersonId": "{barn2Ident}", "borISammeHusstandDtoListe": [ { "periodeFra": "2022-07-26", diff --git "a/src/test/resources/__files/vedtak_respons_avslag-s\303\246rbidrag.json" "b/src/test/resources/__files/vedtak_respons_avslag-s\303\246rbidrag.json" index 2cbb2538c..585fb4999 100644 --- "a/src/test/resources/__files/vedtak_respons_avslag-s\303\246rbidrag.json" +++ "b/src/test/resources/__files/vedtak_respons_avslag-s\303\246rbidrag.json" @@ -70,7 +70,7 @@ "type": "PERSON_SØKNADSBARN", "innhold": { "navn": null, - "ident": "{barnId}", + "ident": "{barn1Ident}", "fødselsdato": "{barnfDato}" }, "grunnlagsreferanseListe": [], @@ -93,7 +93,7 @@ "type": "SÆRBIDRAG", "sak": "2400042", "skyldner": "{bpIdent}", - "kravhaver": "{barnId}", + "kravhaver": "{barn1Ident}", "mottaker": "{bmIdent}", "beløp": null, "valutakode": "NOK", diff --git "a/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-foreldet.json" "b/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-foreldet.json" index c05d5d806..7a66ee6c1 100644 --- "a/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-foreldet.json" +++ "b/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-foreldet.json" @@ -104,7 +104,7 @@ "type": "PERSON_SØKNADSBARN", "innhold": { "navn": null, - "ident": "{barnId}", + "ident": "{barn1Ident}", "fødselsdato": "{barnfDato}" }, "grunnlagsreferanseListe": [], @@ -117,7 +117,7 @@ "type": "SÆRBIDRAG", "sak": "2400067", "skyldner": "{bpIdent}", - "kravhaver": "{barnId}", + "kravhaver": "{barn1Ident}", "mottaker": "{bmIdent}", "beløp": null, "valutakode": "NOK", diff --git "a/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-forskuddsats.json" "b/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-forskuddsats.json" index 652849775..23fdef04b 100644 --- "a/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-forskuddsats.json" +++ "b/src/test/resources/__files/vedtak_respons_avslag_s\303\246rbidrag-forskuddsats.json" @@ -37,7 +37,7 @@ "type": "PERSON_SØKNADSBARN", "innhold": { "navn": null, - "ident": "{barnId}", + "ident": "{barn1Ident}", "fødselsdato": "{barnfDato}" }, "grunnlagsreferanseListe": [], @@ -166,7 +166,7 @@ "type": "SÆRBIDRAG", "sak": "2400067", "skyldner": "{bpIdent}", - "kravhaver": "{barnId}", + "kravhaver": "{barn1Ident}", "mottaker": "{bmIdent}", "beløp": null, "valutakode": "NOK", diff --git "a/src/test/resources/__files/vedtak_response-s\303\246rbidrag.json" "b/src/test/resources/__files/vedtak_response-s\303\246rbidrag.json" index d8c440a37..d7b7d3e5e 100644 --- "a/src/test/resources/__files/vedtak_response-s\303\246rbidrag.json" +++ "b/src/test/resources/__files/vedtak_response-s\303\246rbidrag.json" @@ -37,7 +37,7 @@ "type": "PERSON_SØKNADSBARN", "innhold": { "navn": null, - "ident": "{barnId}", + "ident": "{barn1Ident}", "fødselsdato": "{barnfDato}" }, "grunnlagsreferanseListe": [], @@ -1476,7 +1476,7 @@ "type": "SÆRBIDRAG", "sak": "1233333", "skyldner": "{bpIdent}", - "kravhaver": "{barnId}", + "kravhaver": "{barn1Ident}", "mottaker": "{bmIdent}", "beløp": 5796, "valutakode": "NOK", diff --git "a/src/test/resources/__files/vedtak_response-s\303\246rbidrag_maksbel\303\270p.json" "b/src/test/resources/__files/vedtak_response-s\303\246rbidrag_maksbel\303\270p.json" index 803a6b4b2..2b4e3d8e4 100644 --- "a/src/test/resources/__files/vedtak_response-s\303\246rbidrag_maksbel\303\270p.json" +++ "b/src/test/resources/__files/vedtak_response-s\303\246rbidrag_maksbel\303\270p.json" @@ -37,7 +37,7 @@ "type": "PERSON_SØKNADSBARN", "innhold": { "navn": null, - "ident": "{barnId}", + "ident": "{barn1Ident}", "fødselsdato": "{barnfDato}" }, "grunnlagsreferanseListe": [], @@ -3687,7 +3687,7 @@ "type": "SÆRBIDRAG", "sak": "2400066", "skyldner": "{bpIdent}", - "kravhaver": "{barnId}", + "kravhaver": "{barn1Ident}", "mottaker": "{bmIdent}", "beløp": 9185, "valutakode": "NOK",