diff --git a/bidrag-domene/src/main/kotlin/no/nav/bidrag/domene/enums/grunnlag/Grunnlagstype.kt b/bidrag-domene/src/main/kotlin/no/nav/bidrag/domene/enums/grunnlag/Grunnlagstype.kt index afc739d..c30039e 100644 --- a/bidrag-domene/src/main/kotlin/no/nav/bidrag/domene/enums/grunnlag/Grunnlagstype.kt +++ b/bidrag-domene/src/main/kotlin/no/nav/bidrag/domene/enums/grunnlag/Grunnlagstype.kt @@ -41,6 +41,7 @@ enum class Grunnlagstype { NOTAT, // Særbidrag + SÆRBIDRAGSPERIODE, SÆRBIDRAG_KATEGORI, UTGIFT_DIREKTE_BETALT, UTGIFTSPOSTER, diff --git "a/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/felles/grunnlag/S\303\246rbidrag.kt" "b/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/felles/grunnlag/S\303\246rbidrag.kt" index 66266df..b99a787 100644 --- "a/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/felles/grunnlag/S\303\246rbidrag.kt" +++ "b/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/felles/grunnlag/S\303\246rbidrag.kt" @@ -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, @@ -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)) +} diff --git a/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/vedtak/response/VedtakExtensions.kt b/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/vedtak/response/VedtakExtensions.kt index 7c49972..3570ca4 100644 --- a/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/vedtak/response/VedtakExtensions.kt +++ b/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/behandling/vedtak/response/VedtakExtensions.kt @@ -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() = @@ -29,8 +35,28 @@ val VedtakDto.søknadKlageRefId get() = val VedtakDto.virkningstidspunkt get() = grunnlagListe - .filtrerBasertPåFremmedReferanse( + .filtrerBasertPåEgenReferanse( Grunnlagstype.VIRKNINGSTIDSPUNKT, ).firstOrNull() ?.innholdTilObjekt() ?.virkningstidspunkt + +val VedtakDto.særbidragsperiode get() = + grunnlagListe + .filtrerBasertPåEgenReferanse( + Grunnlagstype.SÆRBIDRAGSPERIODE, + ).firstOrNull() + ?.innholdTilObjekt() + ?.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() + ?.let { it.avslag != null } + ?: engangsbeløpListe.firstOrNull()?.resultatkode?.let { Resultatkode.fraKode(it)?.erDirekteAvslag() } + ?: false diff --git a/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/felles/KotlinExtensions.kt b/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/felles/KotlinExtensions.kt new file mode 100644 index 0000000..b7e9b60 --- /dev/null +++ b/bidrag-transport/src/main/kotlin/no/nav/bidrag/transport/felles/KotlinExtensions.kt @@ -0,0 +1,5 @@ +package no.nav.bidrag.transport.felles + +fun Boolean?.ifTrue(block: (Boolean) -> T?): T? = if (this == true) block(this) else null + +fun Boolean?.ifFalse(block: (Boolean) -> T?): T? = if (this == false) block(this) else null