From 0d556dd8637e8be9f5d254d1b6043e3f08a0aff5 Mon Sep 17 00:00:00 2001 From: bragejahren <70642183+bragejahren@users.noreply.github.com> Date: Wed, 18 Dec 2024 11:02:48 +0100 Subject: [PATCH] =?UTF-8?q?Overstyre=20sisteAndelPerKjede=20for=20utvidet?= =?UTF-8?q?=20barnetrygd=20dersom=20fagsak=20er=20over=20p=C3=A5=20ny=20kl?= =?UTF-8?q?assekode=20(#4970)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Favro: [NAV-23733](https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-23733) ### 💰 Hva skal gjøres, og hvorfor? I revurderinger i fagsaker vi har kjørt `OppdaterUtvidetKlassekodeTask` for, kommer ikke saksbehandler seg videre fra vilkårsvurdering pga feilende simulering mot Oppdrag. Dette skyldes hvordan vi utleder `sisteAndelPerKjede` og at vi etter `OppdaterUtvidetKlassekodeTask` ikke lenger har ett 1-1 forhold mellom andeler og kjedeelementer for utvidet barnetrygd. Andelen i en utvidet barnetrygd behandling strekker seg eksempelvis fra 01.07.23 -> 01.07.33, mens det siste kjedeelementet vi faktisk sendte til Oppdrag i autovedtaket strakk seg fra 01.01.25 -> 01.07.33. Oppdrag klager da når vi forsøker å opphøre (som vi alltid gjør i simulering) på at den ikke kjenner igjen kjedeelementet 01.07.23 -> 01.07.33, fordi den forventer det siste vi sendte som var 01.01.25 -> 01.07.33. Som en midlertidig løsning for å ikke hindre saksbehandlere fra å gjøre revurderinger i fagsaker vi har kjørt jobben `OppdaterUtvidetKlassekodeTask` for, legger vi her til logikk for å overstyre den siste andelen for utvidet kjeden med korrekt fom-dato. Dette gjøres ved å sjekke alle tidligere utbetalingsoppdrag til fagsak og finne det siste utbetalingsoppdraget som inneholdt den nye klassekoden for utvidet. Deretter velger vi ut det siste kjedeelementet for utvidet barnetrygd fra utbetalingsoppdraget basert på `fom`, og bruker denne `fom`-en i den siste andelen for utvidet kjeden. > Gjenskapte feilen i preprod og testet at jeg fikk revurdert etter å ha rullet ut disse endringene ### 🔎️ Er det noe spesielt du ønsker tilbakemelding om? Selv om dette vil fungere i lang tid, tror jeg det er lurt å tenkte litt nytt på den automatiske jobben vi kjører for å få fagsaker over på ny klassekode. Det lureste vil nok være å faktisk opprette en splitt i andelene slik at vi får tilbake 1-1 forholdet mellom andeler og kjedeelementer. ### ✅ Checklist - [x] Jeg har testet mine endringer i henhold til akseptansekriteriene 🕵️ - [ ] Jeg har config- eller sql-endringer. - [x] Jeg har skrevet tester. ### 💬 Ønsker du en muntlig gjennomgang? Tar gjerne en muntlig gjennomgang dersom det er enklere. --- .../featureToggle/FeatureToggleConfig.kt | 3 + .../BehandlingsinformasjonUtleder.kt" | 6 +- .../UtbetalingsoppdragGenerator.kt" | 55 +++++++- .../domene/TilkjentYtelseRepository.kt | 9 ++ .../BehandlingsinformasjonUtlederTest.kt" | 4 +- .../UtbetalingsoppdragGeneratorTest.kt" | 24 ++++ .../familie/ba/sak/cucumber/OppdragSteg.kt | 7 +- .../MockTilkjentYtelseRepository.kt | 5 + ...ppdaterUtvidetKlassekodeBehandling.feature | 119 ++++++++++++++++++ 9 files changed, 221 insertions(+), 11 deletions(-) create mode 100644 src/test/resources/no/nav/familie/ba/sak/cucumber/oppdrag/opphoerEtterOppdaterUtvidetKlassekodeBehandling.feature diff --git a/src/main/kotlin/no/nav/familie/ba/sak/config/featureToggle/FeatureToggleConfig.kt b/src/main/kotlin/no/nav/familie/ba/sak/config/featureToggle/FeatureToggleConfig.kt index 35980d99b8c..e7da291944a 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/config/featureToggle/FeatureToggleConfig.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/config/featureToggle/FeatureToggleConfig.kt @@ -24,6 +24,9 @@ class FeatureToggleConfig { // NAV-23449 - Skrud av/på ny refaktorert logikk for hjemler i brev, skal i teorien produsere det samme resultatet const val BRUK_OMSKRIVING_AV_HJEMLER_I_BREV = "familie-ba-sak.bruk_omskriving_av_hjemler_i_brev" + // NAV-23733 + const val BRUK_OVERSTYRING_AV_FOM_SISTE_ANDEL_UTVIDET = "familie-ba-sak.bruk-overstyring-av-fom-siste-andel-utvidet" + // satsendring // Oppretter satsendring-tasker for de som ikke har fått ny task const val SATSENDRING_ENABLET: String = "familie-ba-sak.satsendring-enablet" diff --git "a/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtleder.kt" "b/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtleder.kt" index d01984978eb..6e9d091148f 100644 --- "a/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtleder.kt" +++ "b/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtleder.kt" @@ -1,11 +1,11 @@ package no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag import no.nav.familie.ba.sak.common.ClockProvider -import no.nav.familie.ba.sak.kjerne.beregning.domene.AndelTilkjentYtelse import no.nav.familie.ba.sak.kjerne.beregning.domene.TilkjentYtelse 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.vedtak.Vedtak +import no.nav.familie.felles.utbetalingsgenerator.domain.AndelDataLongId import no.nav.familie.felles.utbetalingsgenerator.domain.Behandlingsinformasjon import no.nav.familie.felles.utbetalingsgenerator.domain.IdentOgType import org.springframework.stereotype.Component @@ -21,7 +21,7 @@ class BehandlingsinformasjonUtleder( saksbehandlerId: String, vedtak: Vedtak, forrigeTilkjentYtelse: TilkjentYtelse?, - sisteAndelPerKjede: Map, + sisteAndelPerKjede: Map, erSimulering: Boolean, ): Behandlingsinformasjon { val behandling = vedtak.behandling @@ -43,7 +43,7 @@ class BehandlingsinformasjonUtleder( private fun finnOpphørsdatoForAlleKjeder( forrigeTilkjentYtelse: TilkjentYtelse?, - sisteAndelPerKjede: Map, + sisteAndelPerKjede: Map, endretMigreringsdato: YearMonth?, ): YearMonth? = if (forrigeTilkjentYtelse == null || sisteAndelPerKjede.isEmpty()) { diff --git "a/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGenerator.kt" "b/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGenerator.kt" index 055a87dd258..e40fcc4dd6b 100644 --- "a/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGenerator.kt" +++ "b/src/main/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGenerator.kt" @@ -1,7 +1,9 @@ package no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag +import no.nav.familie.ba.sak.common.toYearMonth import no.nav.familie.ba.sak.config.FeatureToggleConfig import no.nav.familie.ba.sak.config.featureToggle.UnleashNextMedContextService +import no.nav.familie.ba.sak.integrasjoner.pdl.logger import no.nav.familie.ba.sak.kjerne.behandling.BehandlingHentOgPersisterService import no.nav.familie.ba.sak.kjerne.behandling.domene.Behandling import no.nav.familie.ba.sak.kjerne.behandling.domene.BehandlingÅrsak @@ -14,6 +16,8 @@ import no.nav.familie.felles.utbetalingsgenerator.Utbetalingsgenerator import no.nav.familie.felles.utbetalingsgenerator.domain.AndelDataLongId import no.nav.familie.felles.utbetalingsgenerator.domain.BeregnetUtbetalingsoppdragLongId import no.nav.familie.felles.utbetalingsgenerator.domain.IdentOgType +import no.nav.familie.felles.utbetalingsgenerator.domain.Utbetalingsoppdrag +import no.nav.familie.kontrakter.felles.objectMapper import org.springframework.stereotype.Component @Component @@ -72,7 +76,7 @@ class UtbetalingsoppdragGenerator( behandlingsinformasjon = behandlingsinformasjon, forrigeAndeler = forrigeAndeler, nyeAndeler = nyeAndeler, - sisteAndelPerKjede = sisteAndelPerKjede.mapValues { it.value.tilAndelDataLongId(skalBrukeNyKlassekodeForUtvidetBarnetrygd) }, + sisteAndelPerKjede = sisteAndelPerKjede, ) return klassifiseringKorrigerer.korrigerKlassifiseringVedBehov( @@ -81,15 +85,56 @@ class UtbetalingsoppdragGenerator( ) } - private fun hentSisteAndelTilkjentYtelse(behandling: Behandling): Map { + private fun hentSisteAndelTilkjentYtelse( + behandling: Behandling, + ): Map { val skalBrukeNyKlassekodeForUtvidetBarnetrygd = unleashNextMedContextService.isEnabled( toggleId = FeatureToggleConfig.SKAL_BRUKE_NY_KLASSEKODE_FOR_UTVIDET_BARNETRYGD, behandlingId = behandling.id, ) - return andelTilkjentYtelseRepository - .hentSisteAndelPerIdentOgType(fagsakId = behandling.fagsak.id) - .associateBy { IdentOgType(it.aktør.aktivFødselsnummer(), it.type.tilYtelseType(skalBrukeNyKlassekodeForUtvidetBarnetrygd)) } + + val sisteAndelPerKjede = + andelTilkjentYtelseRepository + .hentSisteAndelPerIdentOgType(fagsakId = behandling.fagsak.id) + .associateBy { IdentOgType(it.aktør.aktivFødselsnummer(), it.type.tilYtelseType(skalBrukeNyKlassekodeForUtvidetBarnetrygd)) } + + return if (unleashNextMedContextService.isEnabled(FeatureToggleConfig.BRUK_OVERSTYRING_AV_FOM_SISTE_ANDEL_UTVIDET)) { + overstyrSisteUtvidetBarnetrygdAndel(behandling, sisteAndelPerKjede, skalBrukeNyKlassekodeForUtvidetBarnetrygd) + } else { + sisteAndelPerKjede.mapValues { it.value.tilAndelDataLongId(skalBrukeNyKlassekodeForUtvidetBarnetrygd) } + } + } + + private fun overstyrSisteUtvidetBarnetrygdAndel( + behandling: Behandling, + sisteAndelPerKjede: Map, + skalBrukeNyKlassekodeForUtvidetBarnetrygd: Boolean, + ): Map { + val tilkjenteYtelserMedOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag = tilkjentYtelseRepository.findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(behandling.fagsak.id) + return sisteAndelPerKjede.mapValues { (identOgType, sisteAndelIKjede) -> + if (tilkjenteYtelserMedOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag.isNotEmpty() && identOgType.type == YtelsetypeBA.UTVIDET_BARNETRYGD) { + // Finner siste utbetalingsoppdraget som innehold kjedelementer med oppdatert utvidet klassekode + val sisteTilkjenteYtelseMedOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag = tilkjenteYtelserMedOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag.maxBy { tilkjentYtelse -> tilkjentYtelse.behandling.aktivertTidspunkt } + + // Finner det siste kjedelementet med oppdatert utvidet klassekode + val sistOversendteUtvidetBarnetrygdKjedeelement = + objectMapper + .readValue(sisteTilkjenteYtelseMedOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag.utbetalingsoppdrag, Utbetalingsoppdrag::class.java) + .utbetalingsperiode + .single { utbetalingsperiode -> utbetalingsperiode.periodeId == sisteAndelIKjede.periodeOffset && utbetalingsperiode.klassifisering == YtelsetypeBA.UTVIDET_BARNETRYGD.klassifisering } + + if (sisteAndelIKjede.stønadFom != sistOversendteUtvidetBarnetrygdKjedeelement.vedtakdatoFom.toYearMonth()) { + logger.warn("Overstyrer vedtakFom i andelDataLongId da fom til siste andel per kjede ikke stemmer overens med siste kjedelement oversendt til Oppdrag") + // Oppdaterer fom i AndelDataLongId til samme fom som sist oversendte, da det ikke er 1-1 mellom fom på siste andel og fom på siste kjedelement oversendt til Oppdrag. + sisteAndelIKjede.tilAndelDataLongId(skalBrukeNyKlassekodeForUtvidetBarnetrygd).copy(fom = sistOversendteUtvidetBarnetrygdKjedeelement.vedtakdatoFom.toYearMonth()) + } else { + sisteAndelIKjede.tilAndelDataLongId(skalBrukeNyKlassekodeForUtvidetBarnetrygd) + } + } else { + sisteAndelIKjede.tilAndelDataLongId(skalBrukeNyKlassekodeForUtvidetBarnetrygd) + } + } } private fun hentForrigeTilkjentYtelse(behandling: Behandling): TilkjentYtelse? = diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/beregning/domene/TilkjentYtelseRepository.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/beregning/domene/TilkjentYtelseRepository.kt index 729809d76ea..86fb37e2c53 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/beregning/domene/TilkjentYtelseRepository.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/beregning/domene/TilkjentYtelseRepository.kt @@ -29,4 +29,13 @@ interface TilkjentYtelseRepository : JpaRepository { """, ) fun harFagsakTattIBrukNyKlassekodeForUtvidetBarnetrygd(fagsakId: Long): Boolean + + @Query( + """ + SELECT ty FROM Behandling b + JOIN TilkjentYtelse ty ON ty.behandling.id = b.id + WHERE ty.utbetalingsoppdrag IS NOT NULL AND ty.utbetalingsoppdrag like '%"klassifisering":"BAUTV-OP"%' AND b.fagsak.id = :fagsakId + """, + ) + fun findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(fagsakId: Long): List } diff --git "a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtlederTest.kt" "b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtlederTest.kt" index 3a27708d7b5..83944a854bc 100644 --- "a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtlederTest.kt" +++ "b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/BehandlingsinformasjonUtlederTest.kt" @@ -240,7 +240,7 @@ class BehandlingsinformasjonUtlederTest { val sisteAndelPerKjede = mapOf( - IdentOgType("1", YtelsetypeBA.ORDINÆR_BARNETRYGD) to lagAndelTilkjentYtelse, + IdentOgType("1", YtelsetypeBA.ORDINÆR_BARNETRYGD) to lagAndelTilkjentYtelse.tilAndelDataLongId(true), ) every { @@ -311,7 +311,7 @@ class BehandlingsinformasjonUtlederTest { val sisteAndelPerKjede = mapOf( - IdentOgType("1", YtelsetypeBA.ORDINÆR_BARNETRYGD) to lagAndelTilkjentYtelse, + IdentOgType("1", YtelsetypeBA.ORDINÆR_BARNETRYGD) to lagAndelTilkjentYtelse.tilAndelDataLongId(true), ) every { diff --git "a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGeneratorTest.kt" "b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGeneratorTest.kt" index 375749d6a92..5dd20266296 100644 --- "a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGeneratorTest.kt" +++ "b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/integrasjoner/\303\270konomi/utbetalingsoppdrag/UtbetalingsoppdragGeneratorTest.kt" @@ -111,6 +111,12 @@ class UtbetalingsoppdragGeneratorTest { ) } returns true + every { + unleashNextMedContextService.isEnabled( + toggleId = FeatureToggleConfig.BRUK_OVERSTYRING_AV_FOM_SISTE_ANDEL_UTVIDET, + ) + } returns true + every { klassifiseringKorrigerer.korrigerKlassifiseringVedBehov( beregnetUtbetalingsoppdrag = any(), @@ -120,6 +126,8 @@ class UtbetalingsoppdragGeneratorTest { firstArg() } + every { tilkjentYtelseRepository.findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(any()) } returns emptyList() + // Act val beregnetUtbetalingsoppdragLongId = utbetalingsoppdragGenerator.lagUtbetalingsoppdrag( @@ -234,6 +242,12 @@ class UtbetalingsoppdragGeneratorTest { ) } returns true + every { + unleashNextMedContextService.isEnabled( + toggleId = FeatureToggleConfig.BRUK_OVERSTYRING_AV_FOM_SISTE_ANDEL_UTVIDET, + ) + } returns true + every { klassifiseringKorrigerer.korrigerKlassifiseringVedBehov( beregnetUtbetalingsoppdrag = any(), @@ -243,6 +257,8 @@ class UtbetalingsoppdragGeneratorTest { firstArg() } + every { tilkjentYtelseRepository.findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(any()) } returns emptyList() + // Act val beregnetUtbetalingsoppdragLongId = utbetalingsoppdragGenerator.lagUtbetalingsoppdrag( @@ -359,6 +375,12 @@ class UtbetalingsoppdragGeneratorTest { ) } returns true + every { + unleashNextMedContextService.isEnabled( + toggleId = FeatureToggleConfig.BRUK_OVERSTYRING_AV_FOM_SISTE_ANDEL_UTVIDET, + ) + } returns true + every { klassifiseringKorrigerer.korrigerKlassifiseringVedBehov( beregnetUtbetalingsoppdrag = any(), @@ -383,6 +405,8 @@ class UtbetalingsoppdragGeneratorTest { kildeBehandlingId = null, ), ) + + every { tilkjentYtelseRepository.findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(any()) } returns emptyList() // Act val beregnetUtbetalingsoppdragLongId = utbetalingsoppdragGenerator.lagUtbetalingsoppdrag( diff --git a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/OppdragSteg.kt b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/OppdragSteg.kt index dd9aeaa52de..7441aa01e82 100644 --- a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/OppdragSteg.kt +++ b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/OppdragSteg.kt @@ -31,6 +31,7 @@ import no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag.Behandlin import no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag.EndretMigreringsdatoUtleder import no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag.KlassifiseringKorrigerer import no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag.UtbetalingsoppdragGenerator +import no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag.YtelsetypeBA import no.nav.familie.ba.sak.integrasjoner.økonomi.utbetalingsoppdrag.tilRestUtbetalingsoppdrag import no.nav.familie.ba.sak.kjerne.behandling.BehandlingHentOgPersisterService import no.nav.familie.ba.sak.kjerne.behandling.BehandlingService @@ -43,6 +44,7 @@ import no.nav.familie.ba.sak.kjerne.beregning.domene.TilkjentYtelse import no.nav.familie.ba.sak.kjerne.beregning.domene.TilkjentYtelseRepository import no.nav.familie.felles.utbetalingsgenerator.Utbetalingsgenerator import no.nav.familie.felles.utbetalingsgenerator.domain.BeregnetUtbetalingsoppdragLongId +import no.nav.familie.kontrakter.felles.objectMapper import no.nav.familie.kontrakter.felles.oppdrag.Utbetalingsoppdrag import no.nav.familie.kontrakter.felles.oppdrag.Utbetalingsperiode import org.assertj.core.api.Assertions.assertThat @@ -174,7 +176,10 @@ class OppdragSteg { } returns tidligereTilkjenteYtelser.lastOrNull()?.behandling every { tilkjentYtelseRepository.findByBehandlingAndHasUtbetalingsoppdrag(any()) - } returns tidligereTilkjenteYtelser.lastOrNull() + } returns tidligereTilkjenteYtelser.lastOrNull()?.copy(utbetalingsoppdrag = objectMapper.writeValueAsString(beregnetUtbetalingsoppdrag[tidligereTilkjenteYtelser.last().behandling.id]?.utbetalingsoppdrag)) + every { + tilkjentYtelseRepository.findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(any()) + } returns tidligereTilkjenteYtelser.filter { beregnetUtbetalingsoppdrag[it.behandling.id]?.utbetalingsoppdrag?.utbetalingsperiode?.any { it.klassifisering == YtelsetypeBA.UTVIDET_BARNETRYGD.klassifisering } == true }.map { it.copy(utbetalingsoppdrag = objectMapper.writeValueAsString(beregnetUtbetalingsoppdrag[it.behandling.id]?.utbetalingsoppdrag)) } every { behandlingHentOgPersisterService.hentBehandlinger(any()) } returns behandlinger.filter { it.value.fagsak.id == tilkjentYtelse.behandling.fagsak.id }.values.toList() diff --git a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/mock/komponentMocks/MockTilkjentYtelseRepository.kt b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/mock/komponentMocks/MockTilkjentYtelseRepository.kt index 5f78e69ad35..411c33a50b3 100644 --- a/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/mock/komponentMocks/MockTilkjentYtelseRepository.kt +++ b/src/test/integrasjonstester/kotlin/no/nav/familie/ba/sak/cucumber/mock/komponentMocks/MockTilkjentYtelseRepository.kt @@ -46,5 +46,10 @@ fun mockTilkjentYtelseRepository(dataFraCucumber: VedtaksperioderOgBegrunnelserS .mapNotNull { it.utbetalingsoppdrag } .any { it.contains("\"klassifisering\":\"BAUTV-OP\"") } } + + every { tilkjentYtelseRepository.findByOppdatertUtvidetBarnetrygdKlassekodeIUtbetalingsoppdrag(any()) } answers { + val fagsakId = firstArg() + dataFraCucumber.tilkjenteYtelser.map { it.value }.filter { it.utbetalingsoppdrag != null && it.utbetalingsoppdrag!!.contains("\"klassifisering\":\"BAUTV-OP\"") } + } return tilkjentYtelseRepository } diff --git a/src/test/resources/no/nav/familie/ba/sak/cucumber/oppdrag/opphoerEtterOppdaterUtvidetKlassekodeBehandling.feature b/src/test/resources/no/nav/familie/ba/sak/cucumber/oppdrag/opphoerEtterOppdaterUtvidetKlassekodeBehandling.feature new file mode 100644 index 00000000000..247f59f3694 --- /dev/null +++ b/src/test/resources/no/nav/familie/ba/sak/cucumber/oppdrag/opphoerEtterOppdaterUtvidetKlassekodeBehandling.feature @@ -0,0 +1,119 @@ +# language: no +# encoding: UTF-8 + +Egenskap: Utbetalingsoppdrag: Opphør/simulering etter OppdaterUtvidetKlassekode-behandling + + Scenario: Opphør av utvidet barnetrygd etter behandling med årsak OPPDATER_UTVIDET_KLASSEKODE + + Gitt følgende feature toggles + | BehandlingId | FeatureToggleId | Er togglet på | + | 1 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Nei | + | 2 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + | 3 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + + + Gitt følgende tilkjente ytelser + | BehandlingId | Uten andeler | Fra dato | Til dato | Beløp | Ytelse | Behandlingsårsak | Behandlingstype | + | 1 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | | + | 2 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | OPPDATER_UTVIDET_KLASSEKODE | REVURDERING | + | 3 | Ja | | | 700 | UTVIDET_BARNETRYGD | | REVURDERING | + + Og inneværende måned er 12.2024 + + Når beregner utbetalingsoppdrag + + Så forvent følgende utbetalingsoppdrag + | BehandlingId | Fra dato | Til dato | Opphørsdato | Beløp | Kode endring | Er endring | Periode id | Forrige periode id | Ytelse | + | 1 | 07.2023 | 05.2034 | | 700 | NY | Nei | 0 | | UTVIDET_BARNETRYGD_GAMMEL | + | 2 | 01.2025 | 05.2034 | | 700 | ENDR | Nei | 1 | 0 | UTVIDET_BARNETRYGD | + | 3 | 01.2025 | 05.2034 | 07.2023 | 700 | ENDR | Ja | 1 | 0 | UTVIDET_BARNETRYGD | + + + Scenario: Endring av utvidet barnetrygd etter behandling med årsak OPPDATER_UTVIDET_KLASSEKODE + + Gitt følgende feature toggles + | BehandlingId | FeatureToggleId | Er togglet på | + | 1 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Nei | + | 2 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + | 3 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + + + Gitt følgende tilkjente ytelser + | BehandlingId | Uten andeler | Fra dato | Til dato | Beløp | Ytelse | Behandlingsårsak | Behandlingstype | + | 1 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | | + | 2 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | OPPDATER_UTVIDET_KLASSEKODE | REVURDERING | + | 3 | | 07.2023 | 05.2026 | 750 | UTVIDET_BARNETRYGD | | REVURDERING | + + Og inneværende måned er 12.2024 + + Når beregner utbetalingsoppdrag + + Så forvent følgende utbetalingsoppdrag + | BehandlingId | Fra dato | Til dato | Opphørsdato | Beløp | Kode endring | Er endring | Periode id | Forrige periode id | Ytelse | + | 1 | 07.2023 | 05.2034 | | 700 | NY | Nei | 0 | | UTVIDET_BARNETRYGD_GAMMEL | + | 2 | 01.2025 | 05.2034 | | 700 | ENDR | Nei | 1 | 0 | UTVIDET_BARNETRYGD | + | 3 | 07.2023 | 05.2026 | | 750 | ENDR | Nei | 2 | 1 | UTVIDET_BARNETRYGD | + + + Scenario: Opphør av utvidet barnetrygd 2 behandlinger etter behandling med årsak OPPDATER_UTVIDET_KLASSEKODE + + Gitt følgende feature toggles + | BehandlingId | FeatureToggleId | Er togglet på | + | 1 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Nei | + | 2 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + | 3 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + + + Gitt følgende tilkjente ytelser + | BehandlingId | Uten andeler | Fra dato | Til dato | Beløp | Ytelse | Behandlingsårsak | Behandlingstype | + | 1 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | | + | 2 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | OPPDATER_UTVIDET_KLASSEKODE | REVURDERING | + | 3 | | 07.2023 | 05.2026 | 500 | ORDINÆR_BARNETRYGD | | REVURDERING | + | 3 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | REVURDERING | + | 4 | | 07.2023 | 05.2026 | 400 | ORDINÆR_BARNETRYGD | | REVURDERING | + | 4 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | REVURDERING | + | 5 | | 07.2023 | 05.2026 | 400 | ORDINÆR_BARNETRYGD | | REVURDERING | + + Og inneværende måned er 12.2024 + + Når beregner utbetalingsoppdrag + + Så forvent følgende utbetalingsoppdrag + | BehandlingId | Fra dato | Til dato | Opphørsdato | Beløp | Kode endring | Er endring | Periode id | Forrige periode id | Ytelse | + | 1 | 07.2023 | 05.2034 | | 700 | NY | Nei | 0 | | UTVIDET_BARNETRYGD_GAMMEL | + | 2 | 01.2025 | 05.2034 | | 700 | ENDR | Nei | 1 | 0 | UTVIDET_BARNETRYGD | + | 3 | 07.2023 | 05.2026 | | 500 | ENDR | Nei | 2 | | ORDINÆR_BARNETRYGD | + | 4 | 07.2023 | 05.2026 | | 400 | ENDR | Nei | 3 | 2 | ORDINÆR_BARNETRYGD | + | 5 | 01.2025 | 05.2034 | 07.2023 | 700 | ENDR | Ja | 1 | 0 | UTVIDET_BARNETRYGD | + + Scenario: Opphør/forkorting av utvidet barnetrygd 2 behandlinger etter behandling med årsak OPPDATER_UTVIDET_KLASSEKODE + + Gitt følgende feature toggles + | BehandlingId | FeatureToggleId | Er togglet på | + | 1 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Nei | + | 2 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + | 3 | familie-ba-sak.skal-bruke-ny-klassekode-for-utvidet-barnetrygd | Ja | + + + Gitt følgende tilkjente ytelser + | BehandlingId | Uten andeler | Fra dato | Til dato | Beløp | Ytelse | Behandlingsårsak | Behandlingstype | + | 1 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | | + | 2 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | OPPDATER_UTVIDET_KLASSEKODE | REVURDERING | + | 3 | | 07.2023 | 05.2026 | 500 | ORDINÆR_BARNETRYGD | | REVURDERING | + | 3 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | REVURDERING | + | 4 | | 07.2023 | 05.2026 | 400 | ORDINÆR_BARNETRYGD | | REVURDERING | + | 4 | | 07.2023 | 05.2034 | 700 | UTVIDET_BARNETRYGD | | REVURDERING | + | 5 | | 07.2023 | 05.2026 | 400 | ORDINÆR_BARNETRYGD | | REVURDERING | + | 5 | | 07.2023 | 05.2030 | 700 | UTVIDET_BARNETRYGD | | REVURDERING | + + Og inneværende måned er 12.2024 + + Når beregner utbetalingsoppdrag + + Så forvent følgende utbetalingsoppdrag + | BehandlingId | Fra dato | Til dato | Opphørsdato | Beløp | Kode endring | Er endring | Periode id | Forrige periode id | Ytelse | + | 1 | 07.2023 | 05.2034 | | 700 | NY | Nei | 0 | | UTVIDET_BARNETRYGD_GAMMEL | + | 2 | 01.2025 | 05.2034 | | 700 | ENDR | Nei | 1 | 0 | UTVIDET_BARNETRYGD | + | 3 | 07.2023 | 05.2026 | | 500 | ENDR | Nei | 2 | | ORDINÆR_BARNETRYGD | + | 4 | 07.2023 | 05.2026 | | 400 | ENDR | Nei | 3 | 2 | ORDINÆR_BARNETRYGD | + | 5 | 01.2025 | 05.2034 | 06.2030 | 700 | ENDR | Ja | 1 | 0 | UTVIDET_BARNETRYGD | \ No newline at end of file