Skip to content

Commit

Permalink
Grunnlag særbidragsperiode (#187)
Browse files Browse the repository at this point in the history
  • Loading branch information
ugur93 authored Jul 31, 2024
1 parent 0addcbb commit fe855fb
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ enum class Grunnlagstype {
NOTAT,

// Særbidrag
SÆRBIDRAGSPERIODE,
SÆRBIDRAG_KATEGORI,
UTGIFT_DIREKTE_BETALT,
UTGIFTSPOSTER,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ package no.nav.bidrag.transport.behandling.felles.grunnlag

import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.domene.enums.særbidrag.Særbidragskategori
import no.nav.bidrag.domene.tid.Datoperiode
import java.math.BigDecimal
import java.time.LocalDate
import java.time.YearMonth

data class SærbidragskategoriGrunnlag(
val kategori: Særbidragskategori,
Expand All @@ -30,3 +32,15 @@ data class UtgiftDirekteBetaltGrunnlag(
@Schema(description = "Beløp som er overført direkte til BM. Kan være 0 eller høyere")
val beløpDirekteBetalt: BigDecimal,
) : GrunnlagInnhold

data class SærbidragsperiodeGrunnlag(
@Schema(
description =
"Perioden særbidraget gjelder for. Er vanligvis lik starten og slutten av måneden på vedtakstidspunktet." +
" Hvis vedtaket gjelder en klage er det vedtakstidspunktet på originale vedtaket",
)
val periode: Datoperiode = Datoperiode(YearMonth.now().atDay(1), YearMonth.now().atEndOfMonth()),
) : GrunnlagInnhold {
constructor(virkningstidspunkt: YearMonth) : this(Datoperiode(virkningstidspunkt.atDay(1), virkningstidspunkt.atEndOfMonth()))
constructor(virkningstidspunkt: LocalDate) : this(YearMonth.from(virkningstidspunkt))
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package no.nav.bidrag.transport.behandling.vedtak.response

import no.nav.bidrag.domene.enums.beregning.Resultatkode
import no.nav.bidrag.domene.enums.beregning.Resultatkode.Companion.erDirekteAvslag
import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype
import no.nav.bidrag.domene.enums.vedtak.BehandlingsrefKilde
import no.nav.bidrag.domene.tid.Datoperiode
import no.nav.bidrag.transport.behandling.felles.grunnlag.SærbidragsperiodeGrunnlag
import no.nav.bidrag.transport.behandling.felles.grunnlag.VirkningstidspunktGrunnlag
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåFremmedReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerBasertPåEgenReferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.innholdTilObjekt
import no.nav.bidrag.transport.felles.ifTrue
import java.time.YearMonth

val VedtakDto.saksnummer get() = stønadsendringListe.firstOrNull()?.sak?.verdi ?: engangsbeløpListe.firstOrNull()?.sak?.verdi
val VedtakDto.behandlingId get() =
Expand All @@ -29,8 +35,28 @@ val VedtakDto.søknadKlageRefId get() =

val VedtakDto.virkningstidspunkt get() =
grunnlagListe
.filtrerBasertPåFremmedReferanse(
.filtrerBasertPåEgenReferanse(
Grunnlagstype.VIRKNINGSTIDSPUNKT,
).firstOrNull()
?.innholdTilObjekt<VirkningstidspunktGrunnlag>()
?.virkningstidspunkt

val VedtakDto.særbidragsperiode get() =
grunnlagListe
.filtrerBasertPåEgenReferanse(
Grunnlagstype.SÆRBIDRAGSPERIODE,
).firstOrNull()
?.innholdTilObjekt<SærbidragsperiodeGrunnlag>()
?.periode
?: (engangsbeløpListe.firstOrNull()?.omgjørVedtakId == null).ifTrue {
Datoperiode(YearMonth.from(vedtakstidspunkt), YearMonth.from(vedtakstidspunkt))
}
val VedtakDto.erDirekteAvslag get() =
grunnlagListe
.filtrerBasertPåEgenReferanse(
Grunnlagstype.VIRKNINGSTIDSPUNKT,
).firstOrNull()
?.innholdTilObjekt<VirkningstidspunktGrunnlag>()
?.let { it.avslag != null }
?: engangsbeløpListe.firstOrNull()?.resultatkode?.let { Resultatkode.fraKode(it)?.erDirekteAvslag() }
?: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package no.nav.bidrag.transport.felles

fun <T> Boolean?.ifTrue(block: (Boolean) -> T?): T? = if (this == true) block(this) else null

fun <T> Boolean?.ifFalse(block: (Boolean) -> T?): T? = if (this == false) block(this) else null

0 comments on commit fe855fb

Please sign in to comment.