diff --git "a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/utenlandskperiodebel\303\270p/UtenlandskPeriodebel\303\270p.kt" "b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/utenlandskperiodebel\303\270p/UtenlandskPeriodebel\303\270p.kt" index 73dffb4bc48..d1261d86771 100644 --- "a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/utenlandskperiodebel\303\270p/UtenlandskPeriodebel\303\270p.kt" +++ "b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/utenlandskperiodebel\303\270p/UtenlandskPeriodebel\303\270p.kt" @@ -19,6 +19,10 @@ import no.nav.familie.ba.sak.common.YearMonthConverter import no.nav.familie.ba.sak.kjerne.eøs.differanseberegning.domene.Intervall import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaEntitet import no.nav.familie.ba.sak.kjerne.personident.Aktør +import no.nav.familie.ba.sak.kjerne.tidslinje.Periode +import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt +import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunkt +import no.nav.familie.ba.sak.kjerne.tidslinje.tilTidslinje import no.nav.familie.ba.sak.sikkerhet.RollestyringMotDatabase import java.math.BigDecimal import java.time.YearMonth @@ -84,7 +88,69 @@ data class UtenlandskPeriodebeløp( barnAktører = barnAktører.toSet(), // .toSet() brukes for at det skal bli et nytt sett (to objekter kan ikke ha referanse til samme sett) ) + fun erObligatoriskeFelterSatt() = fom != null && + erObligatoriskeFelterUtenomTidsperioderSatt() + + fun erObligatoriskeFelterUtenomTidsperioderSatt() = + this.valutakode != null && + this.beløp != null && + this.intervall != null && + this.utbetalingsland != null && + this.barnAktører.isNotEmpty() + companion object { val NULL = UtenlandskPeriodebeløp(null, null, emptySet()) } } + +sealed interface IUtenlandskPeriodebeløp { + val id: Long + val behandlingId: Long +} + +data class TomUtenlandskPeriodebeløp( + override val id: Long, + override val behandlingId: Long, +) : IUtenlandskPeriodebeløp + +data class UtfyltUtenlandskPeriodebeløp( + override val id: Long, + override val behandlingId: Long, + val fom: YearMonth, + val tom: YearMonth?, + val barnAktører: Set, + val beløp: BigDecimal, + val valutakode: String, + val intervall: Intervall, + val utbetalingsland: String, +) : IUtenlandskPeriodebeløp + +fun UtenlandskPeriodebeløp.tilIUtenlandskPeriodebeløp(): IUtenlandskPeriodebeløp { + return if (this.erObligatoriskeFelterSatt()) { + UtfyltUtenlandskPeriodebeløp( + id = this.id, + behandlingId = this.behandlingId, + fom = this.fom!!, + tom = this.tom, + barnAktører = this.barnAktører, + beløp = this.beløp!!, + valutakode = this.valutakode!!, + intervall = this.intervall!!, + utbetalingsland = this.utbetalingsland!!, + ) + } else { + TomUtenlandskPeriodebeløp( + id = this.id, + behandlingId = this.behandlingId, + ) + } +} + +fun List.tilTidslinje() = + this.map { + Periode( + fraOgMed = it.fom.tilTidspunkt(), + tilOgMed = it.tom?.tilTidspunkt() ?: MånedTidspunkt.uendeligLengeTil(), + innhold = it, + ) + }.tilTidslinje() diff --git "a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/valutakurs/Valutakurs.kt" "b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/valutakurs/Valutakurs.kt" index a4663c2d28a..d4692e10ffe 100644 --- "a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/valutakurs/Valutakurs.kt" +++ "b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/e\303\270s/valutakurs/Valutakurs.kt" @@ -16,6 +16,10 @@ import jakarta.persistence.Table import no.nav.familie.ba.sak.common.YearMonthConverter import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaEntitet import no.nav.familie.ba.sak.kjerne.personident.Aktør +import no.nav.familie.ba.sak.kjerne.tidslinje.Periode +import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt +import no.nav.familie.ba.sak.kjerne.tidslinje.tidspunkt.MånedTidspunkt.Companion.tilTidspunkt +import no.nav.familie.ba.sak.kjerne.tidslinje.tilTidslinje import no.nav.familie.ba.sak.sikkerhet.RollestyringMotDatabase import java.math.BigDecimal import java.time.LocalDate @@ -75,7 +79,67 @@ data class Valutakurs( barnAktører = barnAktører, ) + fun erObligatoriskeFelterSatt() = fom != null && + erObligatoriskeFelterUtenomTidsperioderSatt() + + fun erObligatoriskeFelterUtenomTidsperioderSatt() = + this.valutakode != null && + this.kurs != null && + this.valutakursdato != null && + this.valutakode != null && + this.barnAktører.isNotEmpty() + companion object { val NULL = Valutakurs(null, null, emptySet()) } } + +sealed interface IValutakurs { + val id: Long + val behandlingId: Long +} + +data class TomValutakurs( + override val id: Long, + override val behandlingId: Long, +) : IValutakurs + +data class UtfyltValutakurs( + override val id: Long, + override val behandlingId: Long, + val fom: YearMonth, + val tom: YearMonth?, + val barnAktører: Set, + val valutakursdato: LocalDate, + val valutakode: String, + val kurs: BigDecimal, +) : IValutakurs + +fun Valutakurs.tilIValutakurs(): IValutakurs { + return if (this.erObligatoriskeFelterSatt()) { + UtfyltValutakurs( + id = this.id, + behandlingId = this.behandlingId, + fom = this.fom!!, + tom = this.tom, + barnAktører = this.barnAktører, + valutakursdato = this.valutakursdato!!, + valutakode = this.valutakode!!, + kurs = this.kurs!!, + ) + } else { + TomValutakurs( + id = this.id, + behandlingId = this.behandlingId, + ) + } +} + +fun List.tilTidslinje() = + this.map { + Periode( + fraOgMed = it.fom.tilTidspunkt(), + tilOgMed = it.tom?.tilTidspunkt() ?: MånedTidspunkt.uendeligLengeTil(), + innhold = it, + ) + }.tilTidslinje() diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeService.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeService.kt index 21decae4ace..b78f3f02702 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeService.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeService.kt @@ -31,6 +31,8 @@ import no.nav.familie.ba.sak.kjerne.brev.brevBegrunnelseProdusent.GrunnlagForBeg import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.EndretUtbetalingAndelRepository import no.nav.familie.ba.sak.kjerne.eøs.felles.PeriodeOgBarnSkjemaRepository import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløpRepository +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.ValutakursRepository import no.nav.familie.ba.sak.kjerne.fagsak.FagsakStatus import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Målform.NB import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Målform.NN @@ -87,6 +89,8 @@ class VedtaksperiodeService( private val småbarnstilleggService: SmåbarnstilleggService, private val refusjonEøsRepository: RefusjonEøsRepository, private val integrasjonClient: IntegrasjonClient, + private val valutakursRepository: ValutakursRepository, + private val utenlandskPeriodebeløpRepository: UtenlandskPeriodebeløpRepository, ) { fun oppdaterVedtaksperiodeMedFritekster( vedtaksperiodeId: Long, @@ -316,6 +320,8 @@ class VedtaksperiodeService( personResultater = vilkårsvurderingService.hentAktivForBehandling(this.id)?.personResultater ?: emptySet(), behandling = this, kompetanser = kompetanseRepository.finnFraBehandlingId(this.id).toList(), + valutakurs = valutakursRepository.finnFraBehandlingId(this.id).toList(), + utenlandskPeriodebeløp = utenlandskPeriodebeløpRepository.finnFraBehandlingId(this.id).toList(), endredeUtbetalinger = endretUtbetalingAndelRepository.findByBehandlingId(this.id), andelerTilkjentYtelse = andelTilkjentYtelseRepository.finnAndelerTilkjentYtelseForBehandling(this.id), perioderOvergangsstønad = småbarnstilleggService.hentPerioderMedFullOvergangsstønad(this), diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/BegrunnelseGrunnlagForPersonIPeriode.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/BegrunnelseGrunnlagForPersonIPeriode.kt index 1a546fe8b26..c7e8c6ec606 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/BegrunnelseGrunnlagForPersonIPeriode.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/BegrunnelseGrunnlagForPersonIPeriode.kt @@ -4,6 +4,8 @@ import no.nav.familie.ba.sak.kjerne.autovedtak.fødselshendelse.Resultat import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.tilTidslinje import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.Årsak import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.tilTidslinje +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.tilTidslinje +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.tilTidslinje import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Person import no.nav.familie.ba.sak.kjerne.tidslinje.Tidslinje import no.nav.familie.ba.sak.kjerne.tidslinje.komposisjon.kombiner @@ -17,6 +19,8 @@ import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusen import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.IEndretUtbetalingAndelForVedtaksperiode import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.KompetanseForVedtaksperiode import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.OvergangsstønadForVedtaksperiode +import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.UtenlandskPeriodebeløpForVedtaksperiode +import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.ValutakursForVedtaksperiode import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.VilkårResultatForVedtaksperiode import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.filtrerPåAktør import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.hentErUtbetalingSmåbarnstilleggTidslinje @@ -32,6 +36,8 @@ data class BegrunnelseGrunnlagForPersonIPeriode( val vilkårResultater: Iterable, val andeler: Iterable, val kompetanse: KompetanseForVedtaksperiode? = null, + val utenlandskPeriodebeløp: UtenlandskPeriodebeløpForVedtaksperiode? = null, + val valutakurs: ValutakursForVedtaksperiode? = null, val endretUtbetalingAndel: IEndretUtbetalingAndelForVedtaksperiode? = null, val overgangsstønad: OvergangsstønadForVedtaksperiode? = null, ) { @@ -71,6 +77,12 @@ fun BehandlingsGrunnlagForVedtaksperioder.lagBegrunnelseGrunnlagForPersonTidslin val kompetanseTidslinje = this.utfylteKompetanser.filtrerPåAktør(person.aktør) .tilTidslinje().mapIkkeNull { KompetanseForVedtaksperiode(it) } + val utenlandskPeriodebeløpTidslinje = utfylteUtenlandskPeriodebeløp.filtrerPåAktør(person.aktør) + .tilTidslinje().mapIkkeNull { UtenlandskPeriodebeløpForVedtaksperiode(it) } + + val valutakursTidslinje = utfylteValutakurs.filtrerPåAktør(person.aktør) + .tilTidslinje().mapIkkeNull { ValutakursForVedtaksperiode(it) } + val endredeUtbetalingerTidslinje = this.utfylteEndredeUtbetalinger.filtrerPåAktør(person.aktør) .tilTidslinje().mapIkkeNull { it.tilEndretUtbetalingAndelForVedtaksperiode() } @@ -94,6 +106,10 @@ fun BehandlingsGrunnlagForVedtaksperioder.lagBegrunnelseGrunnlagForPersonTidslin } }.kombinerMedNullable(kompetanseTidslinje) { grunnlagForPerson, kompetanse -> grunnlagForPerson?.let { grunnlagForPerson.copy(kompetanse = kompetanse) } + }.kombinerMedNullable(valutakursTidslinje) { grunnlagForPerson, valutakurs -> + grunnlagForPerson?.let { grunnlagForPerson.copy(valutakurs = valutakurs) } + }.kombinerMedNullable(utenlandskPeriodebeløpTidslinje) { grunnlagForPerson, utenlandskPeriodebeløp -> + grunnlagForPerson?.let { grunnlagForPerson.copy(utenlandskPeriodebeløp = utenlandskPeriodebeløp) } }.kombinerMedNullable(endredeUtbetalingerTidslinje) { grunnlagForPerson, endretUtbetalingAndel -> grunnlagForPerson?.let { grunnlagForPerson.copy(endretUtbetalingAndel = endretUtbetalingAndel) } }.kombinerMedNullable(overgangsstønadTidslinje) { grunnlagForPerson, overgangsstønad -> diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/VedtakBegrunnelseProdusent.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/VedtakBegrunnelseProdusent.kt index 170b1514438..d55612464c9 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/VedtakBegrunnelseProdusent.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtakBegrunnelseProdusent/VedtakBegrunnelseProdusent.kt @@ -427,15 +427,20 @@ private fun hentEØSStandardBegrunnelser( ) } - val filtrertPåKompetanse = begrunnelserFiltrertPåPerioderesultatOgBrevPeriodeType.filterValues { begrunnelse -> - erEndringIKompetanse(begrunnelseGrunnlag) && begrunnelse.erLikKompetanseIPeriode(begrunnelseGrunnlag) + val filtrertPåKompetanseValutakursOgUtenlandskperiodeBeløp = begrunnelserFiltrertPåPerioderesultatOgBrevPeriodeType.filterValues { begrunnelse -> + val endringIKompetanseValutakursEllerUtenlandskPeriodebeløp = + erEndringIKompetanse(begrunnelseGrunnlag) || erEndringIValutakurs(begrunnelseGrunnlag) || erEndringIUtenlandskPeriodebeløp( + begrunnelseGrunnlag, + ) + + endringIKompetanseValutakursEllerUtenlandskPeriodebeløp && begrunnelse.erLikKompetanseIPeriode(begrunnelseGrunnlag) } val filtrertPåPeriodeResultat = begrunnelserFiltrertPåPeriodetype.filterValues { filtrerPåPeriodeResultat(relevantePeriodeResultater, it) } - return filtrertPåVilkår + filtrertPåKompetanse + filtrertPåPeriodeResultat + return filtrertPåVilkår + filtrertPåKompetanseValutakursOgUtenlandskperiodeBeløp + filtrertPåPeriodeResultat } private fun filtrerPåPeriodeResultat( @@ -857,6 +862,12 @@ private fun SanityBegrunnelse.matcherPerioderesultat( private fun erEndringIKompetanse(begrunnelseGrunnlag: IBegrunnelseGrunnlagForPeriode) = begrunnelseGrunnlag.dennePerioden.kompetanse != begrunnelseGrunnlag.forrigePeriode?.kompetanse +private fun erEndringIValutakurs(begrunnelseGrunnlag: IBegrunnelseGrunnlagForPeriode) = + begrunnelseGrunnlag.dennePerioden.valutakurs != begrunnelseGrunnlag.forrigePeriode?.valutakurs + +private fun erEndringIUtenlandskPeriodebeløp(begrunnelseGrunnlag: IBegrunnelseGrunnlagForPeriode) = + begrunnelseGrunnlag.dennePerioden.utenlandskPeriodebeløp != begrunnelseGrunnlag.forrigePeriode?.utenlandskPeriodebeløp + fun ISanityBegrunnelse.erGjeldendeForBrevPeriodeType( vedtaksperiode: VedtaksperiodeMedBegrunnelser, erUtbetalingEllerDeltBostedIPeriode: Boolean, diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/BehandlingsGrunnlagForVedtaksperioder.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/BehandlingsGrunnlagForVedtaksperioder.kt index d13ea06bc9c..62765f04fa6 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/BehandlingsGrunnlagForVedtaksperioder.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/BehandlingsGrunnlagForVedtaksperioder.kt @@ -17,6 +17,14 @@ import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.UtfyltKompetanse import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.tilIKompetanse import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.tilTidslinje +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtfyltUtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.tilIUtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.tilTidslinje +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.UtfyltValutakurs +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.Valutakurs +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.tilIValutakurs +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.tilTidslinje import no.nav.familie.ba.sak.kjerne.fagsak.FagsakType import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Person import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonType @@ -67,6 +75,8 @@ data class BehandlingsGrunnlagForVedtaksperioder( val andelerTilkjentYtelse: List, val perioderOvergangsstønad: List, val uregistrerteBarn: List, + val utenlandskPeriodebeløp: List, + val valutakurs: List, ) { val utfylteEndredeUtbetalinger = endredeUtbetalinger .map { it.tilIEndretUtbetalingAndel() } @@ -76,6 +86,14 @@ data class BehandlingsGrunnlagForVedtaksperioder( .map { it.tilIKompetanse() } .filterIsInstance() + val utfylteValutakurs = valutakurs + .map { it.tilIValutakurs() } + .filterIsInstance() + + val utfylteUtenlandskPeriodebeløp = utenlandskPeriodebeløp + .map { it.tilIUtenlandskPeriodebeløp() } + .filterIsInstance() + fun utledGrunnlagTidslinjePerPerson(): Map { val søker = persongrunnlag.søker val ordinæreVilkårForSøkerForskjøvetTidslinje = @@ -198,6 +216,12 @@ data class BehandlingsGrunnlagForVedtaksperioder( val kompetanseTidslinje = utfylteKompetanser.filtrerPåAktør(person.aktør) .tilTidslinje().mapIkkeNull { KompetanseForVedtaksperiode(it) } + val utenlandskPeriodebeløpTidslinje = utfylteUtenlandskPeriodebeløp.filtrerPåAktør(person.aktør) + .tilTidslinje().mapIkkeNull { UtenlandskPeriodebeløpForVedtaksperiode(it) } + + val valutakursTidslinje = utfylteValutakurs.filtrerPåAktør(person.aktør) + .tilTidslinje().mapIkkeNull { ValutakursForVedtaksperiode(it) } + val endredeUtbetalingerTidslinje = utfylteEndredeUtbetalinger.filtrerPåAktør(person.aktør) .tilTidslinje().mapIkkeNull { it.tilEndretUtbetalingAndelForVedtaksperiode() } @@ -219,6 +243,10 @@ data class BehandlingsGrunnlagForVedtaksperioder( ) }.kombinerMedNullable(kompetanseTidslinje) { grunnlagForPerson, kompetanse -> lagGrunnlagMedKompetanse(grunnlagForPerson, kompetanse) + }.kombinerMedNullable(valutakursTidslinje) { grunnlagForPerson, valutakurs -> + lagGrunnlagMedValutakurs(grunnlagForPerson, valutakurs) + }.kombinerMedNullable(utenlandskPeriodebeløpTidslinje) { grunnlagForPerson, utenlandskPeriodebeløp -> + lagGrunnlagMedUtenlandskPeriodebeløp(grunnlagForPerson, utenlandskPeriodebeløp) }.kombinerMedNullable(endredeUtbetalingerTidslinje) { grunnlagForPerson, endretUtbetalingAndel -> lagGrunnlagMedEndretUtbetalingAndel(grunnlagForPerson, endretUtbetalingAndel) }.kombinerMedNullable(overgangsstønadTidslinje) { grunnlagForPerson, overgangsstønad -> @@ -409,6 +437,24 @@ private fun lagGrunnlagMedKompetanse( null -> null } +private fun lagGrunnlagMedValutakurs( + vedtaksperiodeGrunnlagForPerson: VedtaksperiodeGrunnlagForPerson?, + valutakursForVedtaksperiode: ValutakursForVedtaksperiode?, +) = when (vedtaksperiodeGrunnlagForPerson) { + is VedtaksperiodeGrunnlagForPersonVilkårInnvilget -> vedtaksperiodeGrunnlagForPerson.copy(valutakurs = valutakursForVedtaksperiode) + is VedtaksperiodeGrunnlagForPersonVilkårIkkeInnvilget -> vedtaksperiodeGrunnlagForPerson + null -> null +} + +private fun lagGrunnlagMedUtenlandskPeriodebeløp( + vedtaksperiodeGrunnlagForPerson: VedtaksperiodeGrunnlagForPerson?, + utenlandskPeriodebeløp: UtenlandskPeriodebeløpForVedtaksperiode?, +) = when (vedtaksperiodeGrunnlagForPerson) { + is VedtaksperiodeGrunnlagForPersonVilkårInnvilget -> vedtaksperiodeGrunnlagForPerson.copy(utenlandskPeriodebeløp = utenlandskPeriodebeløp) + is VedtaksperiodeGrunnlagForPersonVilkårIkkeInnvilget -> vedtaksperiodeGrunnlagForPerson + null -> null +} + private fun lagGrunnlagMedEndretUtbetalingAndel( vedtaksperiodeGrunnlagForPerson: VedtaksperiodeGrunnlagForPerson?, endretUtbetalingAndel: IEndretUtbetalingAndelForVedtaksperiode?, @@ -495,6 +541,14 @@ fun List.filtrerPåAktør(aktør: Aktør) = fun List.filtrerPåAktør(aktør: Aktør) = this.filter { it.barnAktører.contains(aktør) } +@JvmName("utfyltValutakursFiltrerPåAktør") +fun List.filtrerPåAktør(aktør: Aktør) = + this.filter { it.barnAktører.contains(aktør) } + +@JvmName("utfyltUtenlandskPeriodebeløpFiltrerPåAktør") +fun List.filtrerPåAktør(aktør: Aktør) = + this.filter { it.barnAktører.contains(aktør) } + @JvmName("vilkårResultatFiltrerPåAktør") fun List.filtrerPåAktør(aktør: Aktør) = filter { it.personResultat?.aktør == aktør } diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/VedtaksperiodeGrunnlagForPerson.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/VedtaksperiodeGrunnlagForPerson.kt index 354bb310d7a..39cf9ffa0a2 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/VedtaksperiodeGrunnlagForPerson.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/vedtaksperiodeProdusent/VedtaksperiodeGrunnlagForPerson.kt @@ -6,9 +6,12 @@ import no.nav.familie.ba.sak.kjerne.beregning.domene.AndelTilkjentYtelse import no.nav.familie.ba.sak.kjerne.beregning.domene.InternPeriodeOvergangsstønad import no.nav.familie.ba.sak.kjerne.beregning.domene.YtelseType import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.Årsak +import no.nav.familie.ba.sak.kjerne.eøs.differanseberegning.domene.Intervall import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.KompetanseAktivitet import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.KompetanseResultat import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.UtfyltKompetanse +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtfyltUtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.UtfyltValutakurs import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Person import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonType import no.nav.familie.ba.sak.kjerne.personident.Aktør @@ -59,6 +62,8 @@ data class VedtaksperiodeGrunnlagForPersonVilkårInnvilget( val andeler: Iterable, val kompetanse: KompetanseForVedtaksperiode? = null, val endretUtbetalingAndel: IEndretUtbetalingAndelForVedtaksperiode? = null, + val utenlandskPeriodebeløp: UtenlandskPeriodebeløpForVedtaksperiode? = null, + val valutakurs: ValutakursForVedtaksperiode? = null, val overgangsstønad: OvergangsstønadForVedtaksperiode? = null, ) : VedtaksperiodeGrunnlagForPerson { fun erInnvilgetEndretUtbetaling() = @@ -187,6 +192,36 @@ data class KompetanseForVedtaksperiode( ) } +data class ValutakursForVedtaksperiode( + val barnAktører: Set, + val valutakursdato: LocalDate, + val valutakode: String, + val kurs: BigDecimal, +) { + constructor(valutakurs: UtfyltValutakurs) : this( + barnAktører = valutakurs.barnAktører, + valutakursdato = valutakurs.valutakursdato, + valutakode = valutakurs.valutakode, + kurs = valutakurs.kurs, + ) +} + +data class UtenlandskPeriodebeløpForVedtaksperiode( + val barnAktører: Set, + val beløp: BigDecimal, + val valutakode: String, + val intervall: Intervall, + val utbetalingsland: String, +) { + constructor(utenlandskPeriodebeløp: UtfyltUtenlandskPeriodebeløp) : this( + barnAktører = utenlandskPeriodebeløp.barnAktører, + beløp = utenlandskPeriodebeløp.beløp, + valutakode = utenlandskPeriodebeløp.valutakode, + intervall = utenlandskPeriodebeløp.intervall, + utbetalingsland = utenlandskPeriodebeløp.utbetalingsland, + ) +} + data class OvergangsstønadForVedtaksperiode( val fom: LocalDate, val tom: LocalDate, diff --git a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeServiceTest.kt b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeServiceTest.kt index 6f69e85ba49..7b0eb3a650f 100644 --- a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeServiceTest.kt +++ b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vedtak/vedtaksperiode/VedtaksperiodeServiceTest.kt @@ -63,6 +63,8 @@ class VedtaksperiodeServiceTest { småbarnstilleggService = småbarnstilleggService, refusjonEøsRepository = refusjonEøsRepository, integrasjonClient = integrasjonClient, + valutakursRepository = mockk(), + utenlandskPeriodebeløpRepository = mockk(), ), ) diff --git a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/BegrunnelseTeksterStepDefinition.kt b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/BegrunnelseTeksterStepDefinition.kt index 3dff57229c7..70bc6fbe0d1 100644 --- a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/BegrunnelseTeksterStepDefinition.kt +++ b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/BegrunnelseTeksterStepDefinition.kt @@ -23,6 +23,8 @@ import no.nav.familie.ba.sak.kjerne.brev.domene.SanityEØSBegrunnelse import no.nav.familie.ba.sak.kjerne.brev.domene.maler.brevperioder.BrevPeriode import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.EndretUtbetalingAndel import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.Valutakurs import no.nav.familie.ba.sak.kjerne.fagsak.Fagsak import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Målform import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonopplysningGrunnlag @@ -58,6 +60,8 @@ class BegrunnelseTeksterStepDefinition { private var personResultater = mutableMapOf>() private var vedtaksperioderMedBegrunnelser = listOf() private var kompetanser = mutableMapOf>() + private var valutakurs = mutableMapOf>() + private var utenlandskPeriodebeløp = mutableMapOf>() private var endredeUtbetalinger = mutableMapOf>() private var andelerTilkjentYtelse = mutableMapOf>() private var overstyrteEndringstidspunkt = mutableMapOf() @@ -138,6 +142,27 @@ class BegrunnelseTeksterStepDefinition { kompetanser = lagKompetanser(nyeKompetanserPerBarn, persongrunnlag) } + /** + * Mulige felt: + * | AktørId | Fra dato | Til dato | BehandlingId | Valutakursdato | Valuta kode | Kurs + */ + + @Og("med valutakurs for begrunnelse") + fun `med valutakurs for begrunnelse`(dataTable: DataTable) { + val nyeValutakursPerBarn = dataTable.asMaps() + valutakurs = lagValutakurs(nyeValutakursPerBarn, persongrunnlag) + } + + /** + * Mulige felt: + * | AktørId | Fra dato | Til dato | BehandlingId | Beløp | Valuta kode | Intervall | Utbetalingsland + */ + @Og("med utenlandsk periodebeløp for begrunnelse") + fun `med utenlandsk periodebeløp for begrunnelse`(dataTable: DataTable) { + val nyeUtenlandskPeriodebeløpPerBarn = dataTable.asMaps() + utenlandskPeriodebeløp = lagUtenlandskperiodeBeløp(nyeUtenlandskPeriodebeløpPerBarn, persongrunnlag) + } + /** * Mulige verdier: | AktørId | Fra dato | Til dato | BehandlingId | Årsak | Prosent | Søknadstidspunkt | */ @@ -239,6 +264,8 @@ class BegrunnelseTeksterStepDefinition { andelerTilkjentYtelse = andelerTilkjentYtelse[behandlingId] ?: emptyList(), perioderOvergangsstønad = overgangsstønadForVedtaksperiode[behandlingId] ?: emptyList(), uregistrerteBarn = emptyList(), + utenlandskPeriodebeløp = utenlandskPeriodebeløp[behandlingId] ?: emptyList(), + valutakurs = valutakurs[behandlingId] ?: emptyList(), ) val grunnlagForVedtaksperiodeForrigeBehandling = forrigeBehandlingId?.let { @@ -253,6 +280,8 @@ class BegrunnelseTeksterStepDefinition { andelerTilkjentYtelse = andelerTilkjentYtelse[forrigeBehandlingId] ?: emptyList(), perioderOvergangsstønad = overgangsstønadForVedtaksperiode[forrigeBehandlingId] ?: emptyList(), uregistrerteBarn = emptyList(), + utenlandskPeriodebeløp = utenlandskPeriodebeløp[forrigeBehandlingId] ?: emptyList(), + valutakurs = valutakurs[forrigeBehandlingId] ?: emptyList(), ) } diff --git a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeMedBegrunnelserStepDefinition.kt b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeMedBegrunnelserStepDefinition.kt index 51156c7b083..1525a48b399 100644 --- a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeMedBegrunnelserStepDefinition.kt +++ b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeMedBegrunnelserStepDefinition.kt @@ -18,6 +18,8 @@ import no.nav.familie.ba.sak.kjerne.beregning.domene.AndelTilkjentYtelse import no.nav.familie.ba.sak.kjerne.beregning.domene.InternPeriodeOvergangsstønad import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.EndretUtbetalingAndel import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.Valutakurs import no.nav.familie.ba.sak.kjerne.fagsak.Fagsak import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonopplysningGrunnlag import no.nav.familie.ba.sak.kjerne.vedtak.Vedtak @@ -36,6 +38,8 @@ class VedtaksperiodeMedBegrunnelserStepDefinition { private var personResultater = mutableMapOf>() private var vedtaksperioderMedBegrunnelser = listOf() private var kompetanser = mutableMapOf>() + private var valutakurs = mutableMapOf>() + private var utenlandskPeriodebeløp = mutableMapOf>() private var endredeUtbetalinger = mutableMapOf>() private var andelerTilkjentYtelse = mutableMapOf>() private var overstyrteEndringstidspunkt = mapOf() @@ -167,6 +171,8 @@ class VedtaksperiodeMedBegrunnelserStepDefinition { overgangsstønad = overgangsstønad, uregistrerteBarn = uregistrerteBarn, nåDato = dagensDato, + valutakurs = valutakurs, + utenlandskPeriodebeløp = utenlandskPeriodebeløp, ) } diff --git a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeUtil.kt b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeUtil.kt index f1ce683e6eb..d02bfaf4df1 100644 --- a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeUtil.kt +++ b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/VedtaksperiodeUtil.kt @@ -15,6 +15,7 @@ import no.nav.familie.ba.sak.cucumber.domeneparser.BrevPeriodeParser import no.nav.familie.ba.sak.cucumber.domeneparser.Domenebegrep import no.nav.familie.ba.sak.cucumber.domeneparser.DomeneparserUtil.groupByBehandlingId import no.nav.familie.ba.sak.cucumber.domeneparser.VedtaksperiodeMedBegrunnelserParser +import no.nav.familie.ba.sak.cucumber.domeneparser.parseBigDecimal import no.nav.familie.ba.sak.cucumber.domeneparser.parseDato import no.nav.familie.ba.sak.cucumber.domeneparser.parseEnum import no.nav.familie.ba.sak.cucumber.domeneparser.parseEnumListe @@ -41,9 +42,12 @@ import no.nav.familie.ba.sak.kjerne.beregning.domene.slåSammenTidligerePerioder import no.nav.familie.ba.sak.kjerne.beregning.splittOgSlåSammen import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.EndretUtbetalingAndel import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.Årsak +import no.nav.familie.ba.sak.kjerne.eøs.differanseberegning.domene.Intervall import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.Kompetanse import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.KompetanseAktivitet import no.nav.familie.ba.sak.kjerne.eøs.kompetanse.domene.KompetanseResultat +import no.nav.familie.ba.sak.kjerne.eøs.utenlandskperiodebeløp.UtenlandskPeriodebeløp +import no.nav.familie.ba.sak.kjerne.eøs.valutakurs.Valutakurs import no.nav.familie.ba.sak.kjerne.fagsak.Fagsak import no.nav.familie.ba.sak.kjerne.fagsak.FagsakType import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonopplysningGrunnlag @@ -245,6 +249,57 @@ fun lagKompetanser( }.groupBy { it.behandlingId } .toMutableMap() +fun lagValutakurs( + nyeValutakursPerBarn: MutableList>, + personopplysningGrunnlag: Map, +) = + nyeValutakursPerBarn.map { rad -> + val aktørerForValutakurs = VedtaksperiodeMedBegrunnelserParser.parseAktørIdListe(rad) + val behandlingId = parseLong(Domenebegrep.BEHANDLING_ID, rad) + + Valutakurs( + fom = parseValgfriDato(Domenebegrep.FRA_DATO, rad)?.toYearMonth(), + tom = parseValgfriDato(Domenebegrep.TIL_DATO, rad)?.toYearMonth(), + barnAktører = personopplysningGrunnlag.finnPersonGrunnlagForBehandling(behandlingId).personer + .filter { aktørerForValutakurs.contains(it.aktør.aktørId) } + .map { it.aktør } + .toSet(), + valutakursdato = parseValgfriDato(VedtaksperiodeMedBegrunnelserParser.DomenebegrepValutakurs.VALUTAKURSDATO, rad), + valutakode = parseValgfriString( + VedtaksperiodeMedBegrunnelserParser.DomenebegrepValutakurs.VALUTA_KODE, + rad, + ), + kurs = parseBigDecimal(VedtaksperiodeMedBegrunnelserParser.DomenebegrepValutakurs.KURS, rad), + ).also { it.behandlingId = behandlingId } + }.groupBy { it.behandlingId } + .toMutableMap() + +fun lagUtenlandskperiodeBeløp( + nyeUtenlandskPeriodebeløpPerBarn: MutableList>, + personopplysningGrunnlag: Map, +) = + nyeUtenlandskPeriodebeløpPerBarn.map { rad -> + val aktørerForValutakurs = VedtaksperiodeMedBegrunnelserParser.parseAktørIdListe(rad) + val behandlingId = parseLong(Domenebegrep.BEHANDLING_ID, rad) + + UtenlandskPeriodebeløp( + fom = parseValgfriDato(Domenebegrep.FRA_DATO, rad)?.toYearMonth(), + tom = parseValgfriDato(Domenebegrep.TIL_DATO, rad)?.toYearMonth(), + barnAktører = personopplysningGrunnlag.finnPersonGrunnlagForBehandling(behandlingId).personer + .filter { aktørerForValutakurs.contains(it.aktør.aktørId) } + .map { it.aktør } + .toSet(), + beløp = parseBigDecimal(VedtaksperiodeMedBegrunnelserParser.DomenebegrepUtenlandskPeriodebeløp.BELØP, rad), + valutakode = parseValgfriString( + VedtaksperiodeMedBegrunnelserParser.DomenebegrepUtenlandskPeriodebeløp.VALUTA_KODE, + rad, + ), + intervall = parseValgfriEnum(VedtaksperiodeMedBegrunnelserParser.DomenebegrepUtenlandskPeriodebeløp.INTERVALL, rad), + utbetalingsland = parseValgfriString(VedtaksperiodeMedBegrunnelserParser.DomenebegrepUtenlandskPeriodebeløp.UTBETALINGSLAND, rad), + ).also { it.behandlingId = behandlingId } + }.groupBy { it.behandlingId } + .toMutableMap() + private fun validerErLandkode(it: String) { if (it.length != 2) { error("$it er ikke en landkode") @@ -375,6 +430,8 @@ fun lagVedtaksPerioder( personGrunnlag: Map, personResultater: Map>, kompetanser: Map>, + utenlandskPeriodebeløp: Map>, + valutakurs: Map>, endredeUtbetalinger: Map>, andelerTilkjentYtelse: Map>, overstyrteEndringstidspunkt: Map, @@ -395,6 +452,8 @@ fun lagVedtaksPerioder( andelerTilkjentYtelse = andelerTilkjentYtelse[behandlingId] ?: emptyList(), perioderOvergangsstønad = overgangsstønad[behandlingId] ?: emptyList(), uregistrerteBarn = uregistrerteBarn, + utenlandskPeriodebeløp = utenlandskPeriodebeløp[behandlingId] ?: emptyList(), + valutakurs = valutakurs[behandlingId] ?: emptyList(), ) val forrigeBehandlingId = behandlingTilForrigeBehandling[behandlingId] @@ -411,6 +470,8 @@ fun lagVedtaksPerioder( andelerTilkjentYtelse = andelerTilkjentYtelse[forrigeBehandlingId] ?: emptyList(), perioderOvergangsstønad = overgangsstønad[behandlingId] ?: emptyList(), uregistrerteBarn = emptyList(), + utenlandskPeriodebeløp = utenlandskPeriodebeløp[forrigeBehandlingId] ?: emptyList(), + valutakurs = valutakurs[forrigeBehandlingId] ?: emptyList(), ) } diff --git a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/domeneparser/VedtaksperiodeMedBegrunnelserParser.kt b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/domeneparser/VedtaksperiodeMedBegrunnelserParser.kt index b43090447e7..382af637961 100644 --- a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/domeneparser/VedtaksperiodeMedBegrunnelserParser.kt +++ b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/domeneparser/VedtaksperiodeMedBegrunnelserParser.kt @@ -72,6 +72,19 @@ object VedtaksperiodeMedBegrunnelserParser { RESULTAT("Resultat"), } + enum class DomenebegrepValutakurs(override val nøkkel: String) : Domenenøkkel { + VALUTAKURSDATO("Valutakursdato"), + VALUTA_KODE("Valuta kode"), + KURS("Kurs"), + } + + enum class DomenebegrepUtenlandskPeriodebeløp(override val nøkkel: String) : Domenenøkkel { + BELØP("Beløp"), + VALUTA_KODE("Valuta kode"), + INTERVALL("Intervall"), + UTBETALINGSLAND("Utbetalingsland"), + } + enum class DomenebegrepEndretUtbetaling(override val nøkkel: String) : Domenenøkkel { PROSENT("Prosent"), ÅRSAK("Årsak"), diff --git "a/src/test/resources/no/nav/familie/ba/sak/cucumber/begrunnelsetekster/utenlandsk_periodebel\303\270p.feature" "b/src/test/resources/no/nav/familie/ba/sak/cucumber/begrunnelsetekster/utenlandsk_periodebel\303\270p.feature" new file mode 100644 index 00000000000..053e84eaaee --- /dev/null +++ "b/src/test/resources/no/nav/familie/ba/sak/cucumber/begrunnelsetekster/utenlandsk_periodebel\303\270p.feature" @@ -0,0 +1,89 @@ +# language: no +# encoding: UTF-8 + +Egenskap: Gyldige begrunnelser for utenlandsk periodebeløp + + Bakgrunn: + Gitt følgende fagsaker for begrunnelse + | FagsakId | Fagsaktype | + | 1 | NORMAL | + + Gitt følgende behandling + | BehandlingId | FagsakId | ForrigeBehandlingId | Behandlingsresultat | Behandlingsårsak | Skal behandles automatisk | Behandlingskategori | + | 1 | 1 | | ENDRET_UTBETALING | SATSENDRING | Ja | EØS | + | 2 | 1 | 1 | ENDRET_UTBETALING | ÅRLIG_KONTROLL | Nei | EØS | + + Og følgende persongrunnlag for begrunnelse + | BehandlingId | AktørId | Persontype | Fødselsdato | + | 1 | 1 | SØKER | 14.10.1987 | + | 1 | 2 | BARN | 10.10.2019 | + | 2 | 1 | SØKER | 14.10.1987 | + | 2 | 2 | BARN | 10.10.2019 | + + Scenario: Vis kompetansebegrunnelser dersom det er lagt til utenlandskperiode beløp for periode + Og følgende dagens dato 24.10.2023 + Og lag personresultater for begrunnelse for behandling 1 + Og lag personresultater for begrunnelse for behandling 2 + + Og legg til nye vilkårresultater for begrunnelse for behandling 1 + | AktørId | Vilkår | Utdypende vilkår | Fra dato | Til dato | Resultat | Er eksplisitt avslag | Standardbegrunnelser | + | 1 | BOSATT_I_RIKET | OMFATTET_AV_NORSK_LOVGIVNING | 10.10.2019 | | OPPFYLT | Nei | | + | 1 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + + | 2 | BOSATT_I_RIKET | BARN_BOR_I_EØS | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | GIFT_PARTNERSKAP | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | UNDER_18_ÅR | | 10.10.2019 | 09.10.2037 | OPPFYLT | Nei | | + | 2 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | BOR_MED_SØKER | BARN_BOR_I_EØS_MED_SØKER | 10.10.2019 | | OPPFYLT | Nei | | + + Og legg til nye vilkårresultater for begrunnelse for behandling 2 + | AktørId | Vilkår | Utdypende vilkår | Fra dato | Til dato | Resultat | Er eksplisitt avslag | Standardbegrunnelser | + | 1 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + | 1 | BOSATT_I_RIKET | OMFATTET_AV_NORSK_LOVGIVNING | 10.10.2019 | | OPPFYLT | Nei | | + + | 2 | GIFT_PARTNERSKAP | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | BOSATT_I_RIKET | BARN_BOR_I_EØS | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | UNDER_18_ÅR | | 10.10.2019 | 09.10.2037 | OPPFYLT | Nei | | + | 2 | BOR_MED_SØKER | BARN_BOR_I_EØS_MED_SØKER | 10.10.2019 | | OPPFYLT | Nei | | + + Og med andeler tilkjent ytelse for begrunnelse + | AktørId | BehandlingId | Fra dato | Til dato | Beløp | Ytelse type | Prosent | Sats | + | 2 | 1 | 01.11.2019 | 31.12.2019 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 1 | 01.01.2020 | 31.08.2020 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 1 | 01.09.2020 | 31.12.2020 | 206 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 1 | 01.01.2021 | 31.08.2021 | 268 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 1 | 01.09.2021 | 31.12.2021 | 568 | ORDINÆR_BARNETRYGD | 100 | 1654 | + | 2 | 1 | 01.01.2022 | 28.02.2023 | 590 | ORDINÆR_BARNETRYGD | 100 | 1676 | + | 2 | 1 | 01.03.2023 | 30.06.2023 | 637 | ORDINÆR_BARNETRYGD | 100 | 1723 | + | 2 | 1 | 01.07.2023 | 30.09.2025 | 680 | ORDINÆR_BARNETRYGD | 100 | 1766 | + | 2 | 1 | 01.10.2025 | 30.09.2037 | 224 | ORDINÆR_BARNETRYGD | 100 | 1310 | + + | 2 | 2 | 01.11.2019 | 31.12.2019 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 2 | 01.01.2020 | 31.08.2020 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 2 | 01.09.2020 | 31.12.2020 | 206 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 2 | 01.01.2021 | 31.08.2021 | 268 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 2 | 01.09.2021 | 31.12.2021 | 568 | ORDINÆR_BARNETRYGD | 100 | 1654 | + | 2 | 2 | 01.01.2022 | 28.02.2023 | 553 | ORDINÆR_BARNETRYGD | 100 | 1676 | + | 2 | 2 | 01.03.2023 | 30.06.2023 | 600 | ORDINÆR_BARNETRYGD | 100 | 1723 | + | 2 | 2 | 01.07.2023 | 30.09.2025 | 643 | ORDINÆR_BARNETRYGD | 100 | 1766 | + | 2 | 2 | 01.10.2025 | 30.09.2037 | 187 | ORDINÆR_BARNETRYGD | 100 | 1310 | + + Og med kompetanser for begrunnelse + | AktørId | Fra dato | Til dato | Resultat | BehandlingId | Søkers aktivitet | Annen forelders aktivitet | Søkers aktivitetsland | Annen forelders aktivitetsland | Barnets bostedsland | + | 2 | 01.11.2019 | | NORGE_ER_SEKUNDÆRLAND | 1 | ARBEIDER | I_ARBEID | NO | PL | PL | + | 2 | 01.11.2019 | | NORGE_ER_SEKUNDÆRLAND | 2 | ARBEIDER | I_ARBEID | NO | PL | PL | + + Og med utenlandsk periodebeløp for begrunnelse + | AktørId | Fra dato | Til dato | BehandlingId | Beløp | Valuta kode | Intervall | Utbetalingsland | + | 2 | 01.01.2022 | | 2 | 500 | PLN | ÅRLIG | NO | + + Når vedtaksperiodene genereres for behandling 2 + + Så forvent at følgende begrunnelser er gyldige + | Fra dato | Til dato | VedtaksperiodeType | Regelverk Gyldige begrunnelser | Gyldige begrunnelser | Ugyldige begrunnelser | + | 01.01.2022 | 28.02.2023 | UTBETALING | EØS_FORORDNINGEN | INNVILGET_TILLEGGSTEKST_VALUTAJUSTERING | | + | 01.03.2023 | 30.06.2023 | UTBETALING | | INNVILGET_SATSENDRING | | + | 01.07.2023 | 30.09.2025 | UTBETALING | | INNVILGET_SATSENDRING | | + | 01.10.2025 | 30.09.2037 | UTBETALING | | | | + | 01.10.2037 | | OPPHØR | | | | diff --git a/src/test/resources/no/nav/familie/ba/sak/cucumber/begrunnelsetekster/valutakurs.feature b/src/test/resources/no/nav/familie/ba/sak/cucumber/begrunnelsetekster/valutakurs.feature new file mode 100644 index 00000000000..370984aec8b --- /dev/null +++ b/src/test/resources/no/nav/familie/ba/sak/cucumber/begrunnelsetekster/valutakurs.feature @@ -0,0 +1,89 @@ +# language: no +# encoding: UTF-8 + +Egenskap: Gyldige begrunnelser for valutakurs + + Bakgrunn: + Gitt følgende fagsaker for begrunnelse + | FagsakId | Fagsaktype | + | 1 | NORMAL | + + Gitt følgende behandling + | BehandlingId | FagsakId | ForrigeBehandlingId | Behandlingsresultat | Behandlingsårsak | Skal behandles automatisk | Behandlingskategori | + | 1 | 1 | | ENDRET_UTBETALING | SATSENDRING | Ja | EØS | + | 2 | 1 | 1 | ENDRET_UTBETALING | ÅRLIG_KONTROLL | Nei | EØS | + + Og følgende persongrunnlag for begrunnelse + | BehandlingId | AktørId | Persontype | Fødselsdato | + | 1 | 1 | SØKER | 14.10.1987 | + | 1 | 2 | BARN | 10.10.2019 | + | 2 | 1 | SØKER | 14.10.1987 | + | 2 | 2 | BARN | 10.10.2019 | + + Scenario: Vis kompetansebegrunnelser dersom det er lagt til valutakurs for periode + Og følgende dagens dato 24.10.2023 + Og lag personresultater for begrunnelse for behandling 1 + Og lag personresultater for begrunnelse for behandling 2 + + Og legg til nye vilkårresultater for begrunnelse for behandling 1 + | AktørId | Vilkår | Utdypende vilkår | Fra dato | Til dato | Resultat | Er eksplisitt avslag | Standardbegrunnelser | + | 1 | BOSATT_I_RIKET | OMFATTET_AV_NORSK_LOVGIVNING | 10.10.2019 | | OPPFYLT | Nei | | + | 1 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + + | 2 | BOSATT_I_RIKET | BARN_BOR_I_EØS | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | GIFT_PARTNERSKAP | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | UNDER_18_ÅR | | 10.10.2019 | 09.10.2037 | OPPFYLT | Nei | | + | 2 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | BOR_MED_SØKER | BARN_BOR_I_EØS_MED_SØKER | 10.10.2019 | | OPPFYLT | Nei | | + + Og legg til nye vilkårresultater for begrunnelse for behandling 2 + | AktørId | Vilkår | Utdypende vilkår | Fra dato | Til dato | Resultat | Er eksplisitt avslag | Standardbegrunnelser | + | 1 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + | 1 | BOSATT_I_RIKET | OMFATTET_AV_NORSK_LOVGIVNING | 10.10.2019 | | OPPFYLT | Nei | | + + | 2 | GIFT_PARTNERSKAP | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | BOSATT_I_RIKET | BARN_BOR_I_EØS | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | LOVLIG_OPPHOLD | | 10.10.2019 | | OPPFYLT | Nei | | + | 2 | UNDER_18_ÅR | | 10.10.2019 | 09.10.2037 | OPPFYLT | Nei | | + | 2 | BOR_MED_SØKER | BARN_BOR_I_EØS_MED_SØKER | 10.10.2019 | | OPPFYLT | Nei | | + + Og med andeler tilkjent ytelse for begrunnelse + | AktørId | BehandlingId | Fra dato | Til dato | Beløp | Ytelse type | Prosent | Sats | + | 2 | 1 | 01.11.2019 | 31.12.2019 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 1 | 01.01.2020 | 31.08.2020 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 1 | 01.09.2020 | 31.12.2020 | 206 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 1 | 01.01.2021 | 31.08.2021 | 268 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 1 | 01.09.2021 | 31.12.2021 | 568 | ORDINÆR_BARNETRYGD | 100 | 1654 | + | 2 | 1 | 01.01.2022 | 28.02.2023 | 590 | ORDINÆR_BARNETRYGD | 100 | 1676 | + | 2 | 1 | 01.03.2023 | 30.06.2023 | 637 | ORDINÆR_BARNETRYGD | 100 | 1723 | + | 2 | 1 | 01.07.2023 | 30.09.2025 | 680 | ORDINÆR_BARNETRYGD | 100 | 1766 | + | 2 | 1 | 01.10.2025 | 30.09.2037 | 224 | ORDINÆR_BARNETRYGD | 100 | 1310 | + + | 2 | 2 | 01.11.2019 | 31.12.2019 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 2 | 01.01.2020 | 31.08.2020 | 0 | ORDINÆR_BARNETRYGD | 100 | 1054 | + | 2 | 2 | 01.09.2020 | 31.12.2020 | 206 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 2 | 01.01.2021 | 31.08.2021 | 268 | ORDINÆR_BARNETRYGD | 100 | 1354 | + | 2 | 2 | 01.09.2021 | 31.12.2021 | 568 | ORDINÆR_BARNETRYGD | 100 | 1654 | + | 2 | 2 | 01.01.2022 | 28.02.2023 | 553 | ORDINÆR_BARNETRYGD | 100 | 1676 | + | 2 | 2 | 01.03.2023 | 30.06.2023 | 600 | ORDINÆR_BARNETRYGD | 100 | 1723 | + | 2 | 2 | 01.07.2023 | 30.09.2025 | 643 | ORDINÆR_BARNETRYGD | 100 | 1766 | + | 2 | 2 | 01.10.2025 | 30.09.2037 | 187 | ORDINÆR_BARNETRYGD | 100 | 1310 | + + Og med kompetanser for begrunnelse + | AktørId | Fra dato | Til dato | Resultat | BehandlingId | Søkers aktivitet | Annen forelders aktivitet | Søkers aktivitetsland | Annen forelders aktivitetsland | Barnets bostedsland | + | 2 | 01.11.2019 | | NORGE_ER_SEKUNDÆRLAND | 1 | ARBEIDER | I_ARBEID | NO | PL | PL | + | 2 | 01.11.2019 | | NORGE_ER_SEKUNDÆRLAND | 2 | ARBEIDER | I_ARBEID | NO | PL | PL | + + Og med valutakurs for begrunnelse + | AktørId | Fra dato | Til dato | BehandlingId | Valutakursdato | Valuta kode | Kurs | + | 2 | 01.01.2022 | | 2 | 30.12.2022 | PLN | 2.24 | + + Når vedtaksperiodene genereres for behandling 2 + + Så forvent at følgende begrunnelser er gyldige + | Fra dato | Til dato | VedtaksperiodeType | Regelverk Gyldige begrunnelser | Gyldige begrunnelser | Ugyldige begrunnelser | + | 01.01.2022 | 28.02.2023 | UTBETALING | EØS_FORORDNINGEN | INNVILGET_TILLEGGSTEKST_VALUTAJUSTERING | | + | 01.03.2023 | 30.06.2023 | UTBETALING | | INNVILGET_SATSENDRING | | + | 01.07.2023 | 30.09.2025 | UTBETALING | | INNVILGET_SATSENDRING | | + | 01.10.2025 | 30.09.2037 | UTBETALING | | | | + | 01.10.2037 | | OPPHØR | | | |