From 37c98f33991d53826f8ce7cf215361aac0b9371a Mon Sep 17 00:00:00 2001 From: Anders Palfi Date: Fri, 25 Oct 2024 11:09:06 +0200 Subject: [PATCH] TFP-5732 forenkler utleding av behandlingsresultat type i revurdering --- ...3\245BehandlingsresultatTjenesteTest.java" | 8 +- ...3\245BehandlingsresultatTjenesteTest.java" | 11 +- ...ingsresultatVedAvslagP\303\245Avslag.java" | 32 --- ...rP\303\245Skj\303\246ringstidsspunkt.java" | 19 -- ...eringBehandlingsresultatutlederFelles.java | 161 ++++++-------- .../felles/SettOpph\303\270rOgIkkeRett.java" | 23 -- .../felles/UttakResultatHolder.java | 5 +- .../ytelse/fp/UttakResultatHolderFP.java | 2 +- .../ytelse/svp/UttakResultatHolderSVP.java | 2 +- ...takAvsl\303\245ttMed\303\205rsakTest.java" | 4 +- ...resultatVedAvslagP\303\245AvslagTest.java" | 83 ------- ...03\245Skj\303\246ringstidsspunktTest.java" | 209 ------------------ ...gBehandlingsresultatutlederFellesTest.java | 106 +++++++++ ...rderingBehandlingsresultatutlederTest.java | 3 +- .../ytelse/svp/UttakResultatHolderTest.java | 8 +- .../domene/medlem/MedlemTjeneste.java | 43 +--- 16 files changed, 185 insertions(+), 534 deletions(-) delete mode 100644 "domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245Avslag.java" delete mode 100644 "domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunkt.java" delete mode 100644 "domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/SettOpph\303\270rOgIkkeRett.java" delete mode 100644 "domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunktTest.java" create mode 100644 domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFellesTest.java diff --git "a/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/fp/Foresl\303\245BehandlingsresultatTjenesteTest.java" "b/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/fp/Foresl\303\245BehandlingsresultatTjenesteTest.java" index 6d752c6ebe2..776b4868839 100644 --- "a/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/fp/Foresl\303\245BehandlingsresultatTjenesteTest.java" +++ "b/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/fp/Foresl\303\245BehandlingsresultatTjenesteTest.java" @@ -53,10 +53,8 @@ import no.nav.foreldrepenger.skjæringstidspunkt.SkjæringstidspunktTjeneste; class ForeslåBehandlingsresultatTjenesteTest extends EntityManagerAwareTest { - private static final LocalDate SKJÆRINGSTIDSPUNKT = LocalDate.now(); private BehandlingRepositoryProvider repositoryProvider; - private BehandlingGrunnlagRepositoryProvider grunnlagRepositoryProvider; private final DokumentBehandlingTjeneste dokumentBehandlingTjeneste = mock(DokumentBehandlingTjeneste.class); private final OpphørUttakTjeneste opphørUttakTjeneste = mock(OpphørUttakTjeneste.class); @@ -71,15 +69,13 @@ class ForeslåBehandlingsresultatTjenesteTest extends EntityManagerAwareTest { @BeforeEach public void setup() { - when(medlemTjeneste.utledVilkårUtfall(any())).thenReturn(new MedlemTjeneste.VilkårUtfallMedÅrsak(VilkårUtfallType.OPPFYLT, Avslagsårsak.UDEFINERT)); when(beregningTjeneste.hent(any())).thenReturn(Optional.empty()); var entityManager = getEntityManager(); repositoryProvider = new BehandlingRepositoryProvider(entityManager); - grunnlagRepositoryProvider = new BehandlingGrunnlagRepositoryProvider(entityManager); + var grunnlagRepositoryProvider = new BehandlingGrunnlagRepositoryProvider(entityManager); fpUttakRepository = this.repositoryProvider.getFpUttakRepository(); var uttakTjeneste = new ForeldrepengerUttakTjeneste(fpUttakRepository); - revurderingBehandlingsresultatutleder = spy(new RevurderingBehandlingsresultatutleder(repositoryProvider, - grunnlagRepositoryProvider, + revurderingBehandlingsresultatutleder = spy(new RevurderingBehandlingsresultatutleder(repositoryProvider, grunnlagRepositoryProvider, beregningTjeneste, opphørUttakTjeneste, skjæringstidspunktTjeneste, diff --git "a/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/svp/Foresl\303\245BehandlingsresultatTjenesteTest.java" "b/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/svp/Foresl\303\245BehandlingsresultatTjenesteTest.java" index d57d805cd06..bb86bbc5187 100644 --- "a/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/svp/Foresl\303\245BehandlingsresultatTjenesteTest.java" +++ "b/behandlingsprosess/src/test/java/no/nav/foreldrepenger/behandling/steg/foresl\303\245resultat/svp/Foresl\303\245BehandlingsresultatTjenesteTest.java" @@ -1,12 +1,10 @@ package no.nav.foreldrepenger.behandling.steg.foreslåresultat.svp; import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; import java.time.LocalDate; import java.time.LocalDateTime; @@ -57,10 +55,7 @@ class ForeslåBehandlingsresultatTjenesteTest extends EntityManagerAwareTest { - private static final LocalDate SKJÆRINGSTIDSPUNKT = LocalDate.now(); - private BehandlingRepositoryProvider repositoryProvider; - private BehandlingGrunnlagRepositoryProvider grunnlagRepositoryProvider; private final BeregningTjeneste beregningTjeneste = mock(BeregningTjeneste.class); private final DokumentBehandlingTjeneste dokumentBehandlingTjeneste = mock(DokumentBehandlingTjeneste.class); @@ -75,15 +70,13 @@ class ForeslåBehandlingsresultatTjenesteTest extends EntityManagerAwareTest { @BeforeEach public void setup() { - when(medlemTjeneste.utledVilkårUtfall(any())).thenReturn(new MedlemTjeneste.VilkårUtfallMedÅrsak(VilkårUtfallType.OPPFYLT, Avslagsårsak.UDEFINERT)); var entityManager = getEntityManager(); repositoryProvider = new BehandlingRepositoryProvider(entityManager); - grunnlagRepositoryProvider = new BehandlingGrunnlagRepositoryProvider(entityManager); + var grunnlagRepositoryProvider = new BehandlingGrunnlagRepositoryProvider(entityManager); behandlingRepository = repositoryProvider.getBehandlingRepository(); behandlingVedtakRepository = repositoryProvider.getBehandlingVedtakRepository(); var svpUttakRepository = new SvangerskapspengerUttakResultatRepository(entityManager); - revurderingBehandlingsresultatutleder = spy(new RevurderingBehandlingsresultatutleder(repositoryProvider, - grunnlagRepositoryProvider, + revurderingBehandlingsresultatutleder = spy(new RevurderingBehandlingsresultatutleder(repositoryProvider, grunnlagRepositoryProvider, svpUttakRepository, beregningTjeneste, opphørUttakTjeneste, diff --git "a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245Avslag.java" "b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245Avslag.java" deleted file mode 100644 index 8ca36eecb01..00000000000 --- "a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245Avslag.java" +++ /dev/null @@ -1,32 +0,0 @@ -package no.nav.foreldrepenger.behandling.revurdering.felles; - -import java.util.List; -import java.util.Optional; - -import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingResultatType; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingType; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; -import no.nav.foreldrepenger.behandlingslager.behandling.KonsekvensForYtelsen; -import no.nav.foreldrepenger.behandlingslager.behandling.RettenTil; -import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.Vedtaksbrev; - -class FastsettBehandlingsresultatVedAvslagPåAvslag { - - private FastsettBehandlingsresultatVedAvslagPåAvslag() { - } - - static boolean vurder(Optional resRevurdering, Optional resOriginal, BehandlingType originalType) { - return resOriginal.isPresent() && resRevurdering.isPresent() && BehandlingType.FØRSTEGANGSSØKNAD.equals(originalType) && erAvslagPåAvslag( - resRevurdering.get(), resOriginal.get()); - } - - static Behandlingsresultat fastsett(Behandling revurdering, Behandlingsresultat behandlingsresultat) { - return RevurderingBehandlingsresultatutlederFelles.buildBehandlingsresultat(revurdering, behandlingsresultat, - BehandlingResultatType.INGEN_ENDRING, RettenTil.HAR_RETT_TIL_FP, Vedtaksbrev.INGEN, List.of(KonsekvensForYtelsen.INGEN_ENDRING)); - } - - private static boolean erAvslagPåAvslag(Behandlingsresultat resRevurdering, Behandlingsresultat resOriginal) { - return resRevurdering.isVilkårAvslått() && resOriginal.isBehandlingsresultatAvslått(); - } -} diff --git "a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunkt.java" "b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunkt.java" deleted file mode 100644 index 9babefd98dd..00000000000 --- "a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunkt.java" +++ /dev/null @@ -1,19 +0,0 @@ -package no.nav.foreldrepenger.behandling.revurdering.felles; - -import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; -import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.Vedtaksbrev; - -class OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt { - - private OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt() { - } - - public static boolean vurder(Behandlingsresultat revurdering) { - return revurdering.isInngangsVilkårAvslått(); - } - - public static Behandlingsresultat fastsett(Behandling revurdering, Behandlingsresultat behandlingsresultat) { - return SettOpphørOgIkkeRett.fastsett(revurdering, behandlingsresultat, Vedtaksbrev.AUTOMATISK); - } -} diff --git a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFelles.java b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFelles.java index 991fb397b4b..2979b9fe9c9 100644 --- a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFelles.java +++ b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFelles.java @@ -3,7 +3,6 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.function.Predicate; @@ -33,7 +32,6 @@ import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.BehandlingVedtak; import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.BehandlingVedtakRepository; import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.Vedtaksbrev; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallType; import no.nav.foreldrepenger.behandlingslager.fagsak.Fagsak; import no.nav.foreldrepenger.behandlingslager.fagsak.FagsakYtelseType; import no.nav.foreldrepenger.domene.medlem.MedlemTjeneste; @@ -83,8 +81,7 @@ public RevurderingBehandlingsresultatutlederFelles(BehandlingRepositoryProvider this.dekningsgradTjeneste = dekningsgradTjeneste; } - public Behandlingsresultat bestemBehandlingsresultatForRevurdering(BehandlingReferanse revurderingRef, - boolean erVarselOmRevurderingSendt) { + public Behandlingsresultat bestemBehandlingsresultatForRevurdering(BehandlingReferanse revurderingRef, boolean erVarselOmRevurderingSendt) { var revurdering = behandlingRepository.hentBehandling(revurderingRef.behandlingId()); var originalBehandlingId = revurdering.getOriginalBehandlingId() @@ -93,90 +90,77 @@ public Behandlingsresultat bestemBehandlingsresultatForRevurdering(BehandlingRef var revurderingUttak = getUttakResultat(revurderingRef.behandlingId()); var originalBehandlingUttak = getUttakResultat(originalBehandlingId); - return bestemBehandlingsresultatForRevurderingCore(revurderingRef, revurdering, - behandlingRepository.hentBehandling(originalBehandlingId), revurderingUttak, originalBehandlingUttak, - erVarselOmRevurderingSendt); + return bestemBehandlingsresultatForRevurderingCore(revurdering, behandlingRepository.hentBehandling(originalBehandlingId), + revurderingUttak, originalBehandlingUttak, erVarselOmRevurderingSendt); } protected abstract UttakResultatHolder getUttakResultat(Long behandlingId); - private Behandlingsresultat bestemBehandlingsresultatForRevurderingCore(BehandlingReferanse revurderingRef, - Behandling revurdering, + private Behandlingsresultat bestemBehandlingsresultatForRevurderingCore(Behandling revurdering, Behandling originalBehandling, - UttakResultatHolder uttakresultatRevurderingOpt, - UttakResultatHolder uttakresultatOriginalOpt, + UttakResultatHolder uttakresultatRevurdering, + UttakResultatHolder uttakresultatOriginal, boolean erVarselOmRevurderingSendt) { if (!revurdering.getType().equals(BehandlingType.REVURDERING)) { throw new IllegalStateException("Utviklerfeil: Skal ikke kunne havne her uten en revurderingssak"); } - validerReferanser(revurderingRef, revurdering.getId()); - var behandlingId = revurderingRef.behandlingId(); + var behandlingId = revurdering.getId(); - var behandlingsresultatRevurdering = behandlingsresultatRepository.hentHvisEksisterer(behandlingId); - var behandlingsresultatOriginal = finnBehandlingsresultatPåOriginalBehandling(originalBehandling.getId()); + var behandlingsresultatRevurdering = behandlingsresultatRepository.hentHvisEksisterer(behandlingId).orElseThrow(); + var behandlingsresultatOriginal = finnBehandlingsresultatPåOriginalBehandling(originalBehandling.getId()).orElseThrow(); if (SpesialBehandling.erOppsagtUttak(revurdering)) { - return buildBehandlingsresultat(revurdering, behandlingsresultatRevurdering.orElse(null), - BehandlingResultatType.FORELDREPENGER_SENERE, RettenTil.HAR_RETT_TIL_FP, - Vedtaksbrev.AUTOMATISK, List.of(KonsekvensForYtelsen.ENDRING_I_UTTAK)); + return buildBehandlingsresultat(revurdering, behandlingsresultatRevurdering, BehandlingResultatType.FORELDREPENGER_SENERE, + RettenTil.HAR_RETT_TIL_FP, Vedtaksbrev.AUTOMATISK, List.of(KonsekvensForYtelsen.ENDRING_I_UTTAK)); } - if (FastsettBehandlingsresultatVedAvslagPåAvslag.vurder(behandlingsresultatRevurdering, - behandlingsresultatOriginal, originalBehandling.getType())) { - /* 2b */ - return FastsettBehandlingsresultatVedAvslagPåAvslag.fastsett(revurdering, - behandlingsresultatRevurdering.orElse(null)); + if (erAvslagPåAvslag(behandlingsresultatRevurdering, behandlingsresultatOriginal)) { + return buildBehandlingsresultat(revurdering, behandlingsresultatRevurdering, BehandlingResultatType.INGEN_ENDRING, + RettenTil.HAR_IKKE_RETT_TIL_FP, Vedtaksbrev.INGEN, List.of(KonsekvensForYtelsen.INGEN_ENDRING)); } - if (OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.vurder(behandlingsresultatRevurdering.orElse(null))) { - /* 2c */ - return OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.fastsett(revurdering, - behandlingsresultatRevurdering.orElse(null)); - } - - //TODO rydd bort når behandlinger med løpende medlem vilkår er avsluttet - var utfall = medlemTjeneste.utledVilkårUtfall(revurdering); - if (!utfall.vilkårUtfallType().equals(VilkårUtfallType.OPPFYLT)) { - var behandlingsresultat = behandlingsresultatRepository.hent(behandlingId); - behandlingsresultat.setAvslagsårsak(utfall.avslagsårsak()); - return buildBehandlingsresultat(revurdering, behandlingsresultat, - BehandlingResultatType.OPPHØR, RettenTil.HAR_IKKE_RETT_TIL_FP, - Vedtaksbrev.AUTOMATISK, List.of(KonsekvensForYtelsen.FORELDREPENGER_OPPHØRER)); + if (behandlingsresultatRevurdering.isInngangsVilkårAvslått()) { + return opphør(revurdering, behandlingsresultatRevurdering); } var opphørsdato = medlemTjeneste.hentOpphørsdatoHvisEksisterer(behandlingId); if (opphørsdato.isPresent()) { - var behandlingsresultat = behandlingsresultatRepository.hent(behandlingId); - behandlingsresultat.setAvslagsårsak(medlemTjeneste.hentAvslagsårsak(behandlingId).orElse(null)); - return buildBehandlingsresultat(revurdering, behandlingsresultat, - BehandlingResultatType.OPPHØR, RettenTil.HAR_IKKE_RETT_TIL_FP, - Vedtaksbrev.AUTOMATISK, List.of(KonsekvensForYtelsen.FORELDREPENGER_OPPHØRER)); + behandlingsresultatRevurdering.setAvslagsårsak(medlemTjeneste.hentAvslagsårsak(behandlingId).orElse(null)); + return opphør(revurdering, behandlingsresultatRevurdering); } - var erEndringIUttakFraEndringstidspunkt = uttakresultatOriginalOpt.harUlikUttaksplan(uttakresultatRevurderingOpt) || - uttakresultatOriginalOpt.harUlikKontoEllerMinsterett(uttakresultatRevurderingOpt) || - dekningsgradTjeneste.behandlingHarEndretDekningsgrad(revurderingRef); - if (erEndringIUttakFraEndringstidspunkt - && uttakresultatRevurderingOpt.kontrollerErSisteUttakAvslåttMedÅrsak()) { + var revurderingRef = BehandlingReferanse.fra(revurdering); + var erEndringIUttak = uttakresultatOriginal.harUlikUttaksplan(uttakresultatRevurdering) || uttakresultatOriginal.harUlikKontoEllerMinsterett( + uttakresultatRevurdering) || dekningsgradTjeneste.behandlingHarEndretDekningsgrad(revurderingRef); + if (erEndringIUttak && uttakresultatRevurdering.erOpphør()) { // Endret ifm TFP-5356 la bruker søke på restdager av minsterett også etter ny stønadsperiode // Aktuell kode for TFP-5360 - håndtering av søknad som gir både innvilget og avslått/opphør-perioder - var opphør = !uttakresultatOriginalOpt.harOpphørsUttakNyeInnvilgetePerioder(uttakresultatRevurderingOpt) || !totette(revurdering); + var opphør = !uttakresultatOriginal.harOpphørsUttakNyeInnvilgetePerioder(uttakresultatRevurdering) || !totette(revurdering); if (opphør) { - return SettOpphørOgIkkeRett.fastsett(revurdering, behandlingsresultatRevurdering.orElse(null), Vedtaksbrev.AUTOMATISK); + return opphør(revurdering, behandlingsresultatRevurdering); } } - var revurderingsGrunnlagOpt = beregningTjeneste.hent(BehandlingReferanse.fra(revurdering)).flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag); - var originalGrunnlagOpt = beregningTjeneste.hent(BehandlingReferanse.fra(originalBehandling)).flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag); + var revurderingsGrunnlagOpt = beregningTjeneste.hent(BehandlingReferanse.fra(revurdering)) + .flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag); + var originalGrunnlagOpt = beregningTjeneste.hent(BehandlingReferanse.fra(originalBehandling)) + .flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag); var erEndringISkalHindreTilbaketrekk = erEndringISkalHindreTilbaketrekk(revurdering, originalBehandling); var erEndringIBeregning = ErEndringIBeregning.vurder(revurderingsGrunnlagOpt, originalGrunnlagOpt); - var erKunEndringIFordelingAvYtelsen = ErKunEndringIFordelingAvYtelsen.vurder(erEndringIBeregning, - erEndringIUttakFraEndringstidspunkt, revurderingsGrunnlagOpt, originalGrunnlagOpt, - erEndringISkalHindreTilbaketrekk); + var erKunEndringIFordelingAvYtelsen = ErKunEndringIFordelingAvYtelsen.vurder(erEndringIBeregning, erEndringIUttak, revurderingsGrunnlagOpt, + originalGrunnlagOpt, erEndringISkalHindreTilbaketrekk); + + return fastsettResultatVedEndringer(revurdering, uttakresultatOriginal, erOpphørtFørDagensDato(), erEndringIBeregning, erEndringIUttak, + erVarselOmRevurderingSendt, erKunEndringIFordelingAvYtelsen, harInnvilgetIkkeOpphørtVedtak(revurdering.getFagsak())); + } + + private static Behandlingsresultat opphør(Behandling revurdering, Behandlingsresultat behandlingsresultatRevurdering) { + return buildBehandlingsresultat(revurdering, behandlingsresultatRevurdering, BehandlingResultatType.OPPHØR, RettenTil.HAR_IKKE_RETT_TIL_FP, + Vedtaksbrev.AUTOMATISK, List.of(KonsekvensForYtelsen.FORELDREPENGER_OPPHØRER)); + } - return fastsettResultatVedEndringer(revurdering, uttakresultatOriginalOpt, erOpphørtFørDagensDato(), - erEndringIBeregning, erEndringIUttakFraEndringstidspunkt, erVarselOmRevurderingSendt, - erKunEndringIFordelingAvYtelsen, harInnvilgetIkkeOpphørtVedtak(revurdering.getFagsak())); + static boolean erAvslagPåAvslag(Behandlingsresultat resRevurdering, Behandlingsresultat resOriginal) { + return resRevurdering.isVilkårAvslått() && resOriginal.isBehandlingsresultatAvslått(); } private Optional finnBehandlingsresultatPåOriginalBehandling(Long originalBehandlingId) { @@ -184,8 +168,7 @@ private Behandlingsresultat bestemBehandlingsresultatForRevurderingCore(Behandli if (behandlingsresultatOriginal.isPresent()) { // Dersom originalBehandling er et beslutningsvedtak må vi lete videre etter det // faktiske resultatet for å kunne vurdere avslag på avslag - if (BehandlingResultatType.INGEN_ENDRING.equals( - behandlingsresultatOriginal.get().getBehandlingResultatType())) { + if (BehandlingResultatType.INGEN_ENDRING.equals(behandlingsresultatOriginal.get().getBehandlingResultatType())) { var forrigeBehandlingId = behandlingRepository.hentBehandling(originalBehandlingId) .getOriginalBehandlingId() .orElseThrow(() -> new IllegalStateException( @@ -199,8 +182,7 @@ private Behandlingsresultat bestemBehandlingsresultatForRevurderingCore(Behandli } private boolean harInnvilgetIkkeOpphørtVedtak(Fagsak fagsak) { - var sisteInnvilgede = behandlingRepository.finnSisteAvsluttedeIkkeHenlagteBehandling(fagsak.getId()) - .orElse(null); + var sisteInnvilgede = behandlingRepository.finnSisteAvsluttedeIkkeHenlagteBehandling(fagsak.getId()).orElse(null); if (sisteInnvilgede == null) { return false; } @@ -227,8 +209,7 @@ private boolean erFattetEtter(Behandling sisteInnvilget, BehandlingVedtak vedtak } private Predicate opphørvedtak() { - return vedtak -> BehandlingResultatType.OPPHØR.equals( - vedtak.getBehandlingsresultat().getBehandlingResultatType()); + return vedtak -> BehandlingResultatType.OPPHØR.equals(vedtak.getBehandlingsresultat().getBehandlingResultatType()); } private VurderOpphørFørDagensDato erOpphørtFørDagensDato() { @@ -239,18 +220,9 @@ private boolean erFattetEtter(Behandling sisteInnvilget, BehandlingVedtak vedtak }; } - private void validerReferanser(BehandlingReferanse ref, Long behandlingId) { - if (!Objects.equals(ref.behandlingId(), behandlingId)) { - throw new IllegalStateException( - "BehandlingReferanse [" + ref.behandlingId() + "] matcher ikke forventet [" + behandlingId + "]"); - } - } - private boolean erEndringISkalHindreTilbaketrekk(Behandling revurdering, Behandling originalBehandling) { - var beregningsresultatFPAggregatEntitet = beregningsresultatRepository.hentBeregningsresultatAggregat( - revurdering.getId()); - var orginalBeregningsresultatFPAggregatEntitet = beregningsresultatRepository.hentBeregningsresultatAggregat( - originalBehandling.getId()); + var beregningsresultatFPAggregatEntitet = beregningsresultatRepository.hentBeregningsresultatAggregat(revurdering.getId()); + var orginalBeregningsresultatFPAggregatEntitet = beregningsresultatRepository.hentBeregningsresultatAggregat(originalBehandling.getId()); if (beregningsresultatFPAggregatEntitet.isPresent() && orginalBeregningsresultatFPAggregatEntitet.isPresent()) { return !beregningsresultatFPAggregatEntitet.get() @@ -268,8 +240,7 @@ public Behandlingsresultat fastsettResultatVedEndringer(Behandling revurdering, boolean erVarselOmRevurderingSendt, boolean erKunEndringIFordelingAvYtelsen, boolean erMinstEnInnvilgetBehandlingUtenPåfølgendeOpphør) { - var konsekvenserForYtelsen = utledKonsekvensForYtelsen(erEndringIBeregning, - erEndringIUttakFraEndringstidspunkt); + var konsekvenserForYtelsen = utledKonsekvensForYtelsen(erEndringIBeregning, erEndringIUttakFraEndringstidspunkt); if (!harUttakIkkeOpphørt(uttakresultatFraOriginalBehandling, opphørFørDagensDato)) { return fastsettForIkkeEtablertYtelse(revurdering, konsekvenserForYtelsen); @@ -280,17 +251,16 @@ public Behandlingsresultat fastsettResultatVedEndringer(Behandling revurdering, } if (erKunEndringIFordelingAvYtelsen) { - return ErKunEndringIFordelingAvYtelsen.fastsett(revurdering, - behandlingsresultatRepository.hent(revurdering.getId()), erVarselOmRevurderingSendt); + return ErKunEndringIFordelingAvYtelsen.fastsett(revurdering, behandlingsresultatRepository.hent(revurdering.getId()), + erVarselOmRevurderingSendt); } var vedtaksbrev = utledVedtaksbrev(konsekvenserForYtelsen, erVarselOmRevurderingSendt); var behandlingResultatType = utledBehandlingResultatType(konsekvenserForYtelsen); - return buildBehandlingsresultat(revurdering, behandlingsresultatRepository.hent(revurdering.getId()), - behandlingResultatType, RettenTil.HAR_RETT_TIL_FP, vedtaksbrev, konsekvenserForYtelsen); + return buildBehandlingsresultat(revurdering, behandlingsresultatRepository.hent(revurdering.getId()), behandlingResultatType, + RettenTil.HAR_RETT_TIL_FP, vedtaksbrev, konsekvenserForYtelsen); } - private boolean harUttakIkkeOpphørt(UttakResultatHolder uttakResultatHolder, - VurderOpphørFørDagensDato opphørFørDagensDato) { + private boolean harUttakIkkeOpphørt(UttakResultatHolder uttakResultatHolder, VurderOpphørFørDagensDato opphørFørDagensDato) { if (!uttakResultatHolder.eksistererUttakResultat()) { return false; } @@ -304,16 +274,13 @@ public Behandlingsresultat fastsettResultatVedEndringer(Behandling revurdering, return !opphørtFørDagensDato; } - private Behandlingsresultat fastsettForIkkeEtablertYtelse(Behandling revurdering, - List konsekvenserForYtelsen) { + private Behandlingsresultat fastsettForIkkeEtablertYtelse(Behandling revurdering, List konsekvenserForYtelsen) { var behandlingsresultat = behandlingsresultatRepository.hentHvisEksisterer(revurdering.getId()).orElse(null); - return buildBehandlingsresultat(revurdering, behandlingsresultat, - BehandlingResultatType.INNVILGET, RettenTil.HAR_RETT_TIL_FP, + return buildBehandlingsresultat(revurdering, behandlingsresultat, BehandlingResultatType.INNVILGET, RettenTil.HAR_RETT_TIL_FP, Vedtaksbrev.AUTOMATISK, konsekvenserForYtelsen); } - private Vedtaksbrev utledVedtaksbrev(List konsekvenserForYtelsen, - boolean erVarselOmRevurderingSendt) { + private Vedtaksbrev utledVedtaksbrev(List konsekvenserForYtelsen, boolean erVarselOmRevurderingSendt) { if (!erVarselOmRevurderingSendt && konsekvenserForYtelsen.contains(KonsekvensForYtelsen.INGEN_ENDRING)) { return Vedtaksbrev.INGEN; } @@ -327,8 +294,7 @@ private BehandlingResultatType utledBehandlingResultatType(List utledKonsekvensForYtelsen(boolean erEndringIBeregning, - boolean erEndringIUttakFraEndringstidspunkt) { + private List utledKonsekvensForYtelsen(boolean erEndringIBeregning, boolean erEndringIUttakFraEndringstidspunkt) { List konsekvensForYtelsen = new ArrayList<>(); if (erEndringIBeregning) { @@ -360,13 +326,14 @@ static Behandlingsresultat buildBehandlingsresultat(Behandling revurdering, private boolean totette(Behandling behandling) { var gjeldendeFamilieHendelsedato = familieHendelseRepository.hentAggregatHvisEksisterer(behandling.getId()) .map(FamilieHendelseGrunnlagEntitet::getGjeldendeVersjon) - .map(FamilieHendelseEntitet::getSkjæringstidspunkt).orElse(null); - return FagsakYtelseType.FORELDREPENGER.equals(behandling.getFagsakYtelseType()) && gjeldendeFamilieHendelsedato != null && - behandling.harBehandlingÅrsak(BehandlingÅrsakType.RE_ENDRING_FRA_BRUKER) && - nesteSakRepository.hentGrunnlag(behandling.getId()).map(NesteSakGrunnlagEntitet::getHendelsedato) - .filter(h -> h.isBefore(gjeldendeFamilieHendelsedato.plusDays(1) - .plusWeeks(UttakParametre.ukerMellomTetteFødsler(gjeldendeFamilieHendelsedato)))) - .isPresent(); + .map(FamilieHendelseEntitet::getSkjæringstidspunkt) + .orElse(null); + return FagsakYtelseType.FORELDREPENGER.equals(behandling.getFagsakYtelseType()) && gjeldendeFamilieHendelsedato != null + && behandling.harBehandlingÅrsak(BehandlingÅrsakType.RE_ENDRING_FRA_BRUKER) && nesteSakRepository.hentGrunnlag(behandling.getId()) + .map(NesteSakGrunnlagEntitet::getHendelsedato) + .filter(h -> h.isBefore( + gjeldendeFamilieHendelsedato.plusDays(1).plusWeeks(UttakParametre.ukerMellomTetteFødsler(gjeldendeFamilieHendelsedato)))) + .isPresent(); } diff --git "a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/SettOpph\303\270rOgIkkeRett.java" "b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/SettOpph\303\270rOgIkkeRett.java" deleted file mode 100644 index 1d9b80cf36c..00000000000 --- "a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/SettOpph\303\270rOgIkkeRett.java" +++ /dev/null @@ -1,23 +0,0 @@ -package no.nav.foreldrepenger.behandling.revurdering.felles; - - -import java.util.List; - -import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingResultatType; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; -import no.nav.foreldrepenger.behandlingslager.behandling.KonsekvensForYtelsen; -import no.nav.foreldrepenger.behandlingslager.behandling.RettenTil; -import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.Vedtaksbrev; - -public class SettOpphørOgIkkeRett { - - private SettOpphørOgIkkeRett() { - } - - public static Behandlingsresultat fastsett(Behandling revurdering, Behandlingsresultat behandlingsresultat, Vedtaksbrev vedtaksbrev) { - return RevurderingBehandlingsresultatutlederFelles.buildBehandlingsresultat(revurdering, behandlingsresultat, - BehandlingResultatType.OPPHØR, RettenTil.HAR_IKKE_RETT_TIL_FP, - vedtaksbrev, List.of(KonsekvensForYtelsen.FORELDREPENGER_OPPHØRER)); - } -} diff --git a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/UttakResultatHolder.java b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/UttakResultatHolder.java index 3d86f08cf52..63790878b0b 100644 --- a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/UttakResultatHolder.java +++ b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/felles/UttakResultatHolder.java @@ -18,10 +18,7 @@ public interface UttakResultatHolder { interface VurderOpphørFørDagensDato extends Predicate { } - /** - * Bare FP - */ - boolean kontrollerErSisteUttakAvslåttMedÅrsak(); + boolean erOpphør(); default boolean harOpphørsUttakNyeInnvilgetePerioder(UttakResultatHolder other) { return false; diff --git a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/UttakResultatHolderFP.java b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/UttakResultatHolderFP.java index e2b2c29a437..31cf75d0818 100644 --- a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/UttakResultatHolderFP.java +++ b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/UttakResultatHolderFP.java @@ -64,7 +64,7 @@ private Optional finnSisteUttaksperiode() { } @Override - public boolean kontrollerErSisteUttakAvslåttMedÅrsak() { + public boolean erOpphør() { var opphørsAvslagÅrsaker = PeriodeResultatÅrsak.opphørsAvslagÅrsaker(); return finnSisteUttaksperiode().map(ForeldrepengerUttakPeriode::getResultatÅrsak).map(opphørsAvslagÅrsaker::contains).orElse(false); } diff --git a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderSVP.java b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderSVP.java index 27db47e5c59..295a10c4cd1 100644 --- a/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderSVP.java +++ b/domenetjenester/behandling-revurdering/src/main/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderSVP.java @@ -50,7 +50,7 @@ public boolean eksistererUttakResultat() { } @Override - public boolean kontrollerErSisteUttakAvslåttMedÅrsak() { + public boolean erOpphør() { if (uttakresultat.isEmpty()) { return false; } diff --git "a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/ErSisteUttakAvsl\303\245ttMed\303\205rsakTest.java" "b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/ErSisteUttakAvsl\303\245ttMed\303\205rsakTest.java" index 65160faf930..397ecdff34c 100644 --- "a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/ErSisteUttakAvsl\303\245ttMed\303\205rsakTest.java" +++ "b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/ErSisteUttakAvsl\303\245ttMed\303\205rsakTest.java" @@ -118,7 +118,7 @@ public void setUp() { // Act var holder = new UttakResultatHolderFP(Optional.of(ForeldrepengerUttakTjeneste.map(uttakresultatRevurdering)), null); - var harOpphørsårsak = holder.kontrollerErSisteUttakAvslåttMedÅrsak(); + var harOpphørsårsak = holder.erOpphør(); // Assert assertThat(harOpphørsårsak).isTrue(); @@ -132,7 +132,7 @@ public void setUp() { // Act var holder = new UttakResultatHolderFP(Optional.of(ForeldrepengerUttakTjeneste.map(uttakresultatRevurdering)), null); - var harOpphørsårsak = holder.kontrollerErSisteUttakAvslåttMedÅrsak(); + var harOpphørsårsak = holder.erOpphør(); // Assert assertThat(harOpphørsårsak).isFalse(); diff --git "a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245AvslagTest.java" "b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245AvslagTest.java" index d345dada93f..3da9e3fd03a 100644 --- "a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245AvslagTest.java" +++ "b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/FastsettBehandlingsresultatVedAvslagP\303\245AvslagTest.java" @@ -1,29 +1,12 @@ package no.nav.foreldrepenger.behandling.revurdering.felles; -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Optional; - import jakarta.persistence.EntityManager; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingResultatType; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingType; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsak; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsakType; -import no.nav.foreldrepenger.behandlingslager.behandling.KonsekvensForYtelsen; import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingRepository; import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingRepositoryProvider; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.Avslagsårsak; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårResultat; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårType; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallType; -import no.nav.foreldrepenger.behandlingslager.testutilities.behandling.ScenarioMorSøkerForeldrepenger; import no.nav.foreldrepenger.dbstoette.JpaExtension; @ExtendWith(JpaExtension.class) @@ -38,71 +21,5 @@ public void setUp(EntityManager entityManager) { repositoryProvider = new BehandlingRepositoryProvider(entityManager); } - @Test - void skal_ikke_gi_avslag_på_avslag() { - // Arrange - var originalBehandling = opprettOriginalBehandling(); - var revurdering = lagRevurdering(originalBehandling); - - // Act - var erAvslagPåAvslag = FastsettBehandlingsresultatVedAvslagPåAvslag.vurder( - lagBehandlingsresultat(revurdering, BehandlingResultatType.INGEN_ENDRING, - KonsekvensForYtelsen.INGEN_ENDRING, VilkårUtfallType.OPPFYLT), - lagBehandlingsresultat(originalBehandling, BehandlingResultatType.INNVILGET, - KonsekvensForYtelsen.UDEFINERT, VilkårUtfallType.OPPFYLT), - originalBehandling.getType()); - - // Assert - assertThat(erAvslagPåAvslag).isFalse(); - } - - @Test - void skal_gi_avslag_på_avslag() { - // Arrange - var originalBehandling = opprettOriginalBehandling(); - var revurdering = lagRevurdering(originalBehandling); - - // Act - var erAvslagPåAvslag = FastsettBehandlingsresultatVedAvslagPåAvslag.vurder( - lagBehandlingsresultat(revurdering, BehandlingResultatType.INGEN_ENDRING, - KonsekvensForYtelsen.INGEN_ENDRING, VilkårUtfallType.IKKE_OPPFYLT), - lagBehandlingsresultat(originalBehandling, BehandlingResultatType.AVSLÅTT, KonsekvensForYtelsen.UDEFINERT, VilkårUtfallType.IKKE_OPPFYLT), - originalBehandling.getType()); - - // Assert - assertThat(erAvslagPåAvslag).isTrue(); - } - - private Behandling lagRevurdering(Behandling originalBehandling) { - var revurdering = Behandling.fraTidligereBehandling(originalBehandling, BehandlingType.REVURDERING) - .medBehandlingÅrsak( - BehandlingÅrsak.builder(BehandlingÅrsakType.RE_ENDRING_FRA_BRUKER) - .medManueltOpprettet(true) - .medOriginalBehandlingId(originalBehandling.getId())) - .build(); - behandlingRepository.lagre(revurdering, behandlingRepository.taSkriveLås(revurdering)); - return revurdering; - } - - private Behandling opprettOriginalBehandling() { - var scenario = ScenarioMorSøkerForeldrepenger.forFødsel(); - var originalBehandling = scenario.lagre(repositoryProvider); - originalBehandling.avsluttBehandling(); - return originalBehandling; - } - - private Optional lagBehandlingsresultat(Behandling behandling, BehandlingResultatType resultatType, - KonsekvensForYtelsen konsekvensForYtelsen, VilkårUtfallType utfallType) { - var behandlingsresultat = Behandlingsresultat.builder().medBehandlingResultatType(resultatType) - .leggTilKonsekvensForYtelsen(konsekvensForYtelsen).buildFor(behandling); - VilkårResultat.builder() - .overstyrVilkår(VilkårType.SØKERSOPPLYSNINGSPLIKT, utfallType, - VilkårUtfallType.IKKE_OPPFYLT.equals(utfallType) ? Avslagsårsak.MANGLENDE_DOKUMENTASJON : Avslagsårsak.UDEFINERT) - .buildFor(behandling); - behandlingRepository.lagre(behandling.getBehandlingsresultat().getVilkårResultat(), - behandlingRepository.taSkriveLås(behandling)); - - return Optional.of(behandlingsresultat); - } } diff --git "a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunktTest.java" "b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunktTest.java" deleted file mode 100644 index 7a5d087df95..00000000000 --- "a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/OppfyllerIkkeInngangsvilk\303\245rP\303\245Skj\303\246ringstidsspunktTest.java" +++ /dev/null @@ -1,209 +0,0 @@ -package no.nav.foreldrepenger.behandling.revurdering.felles; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -import jakarta.inject.Inject; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import no.nav.foreldrepenger.behandling.BehandlingRevurderingTjeneste; -import no.nav.foreldrepenger.behandling.revurdering.BeregningRevurderingTestUtil; -import no.nav.foreldrepenger.behandling.revurdering.RevurderingEndring; -import no.nav.foreldrepenger.behandling.revurdering.RevurderingTjenesteFelles; -import no.nav.foreldrepenger.behandling.revurdering.ytelse.fp.RevurderingTjenesteImpl; -import no.nav.foreldrepenger.behandlingskontroll.FagsakYtelseTypeRef; -import no.nav.foreldrepenger.behandlingskontroll.impl.BehandlingskontrollTjenesteImpl; -import no.nav.foreldrepenger.behandlingskontroll.spi.BehandlingskontrollServiceProvider; -import no.nav.foreldrepenger.behandlingslager.aktør.OrganisasjonsEnhet; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingResultatType; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingStegType; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; -import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsakType; -import no.nav.foreldrepenger.behandlingslager.behandling.KonsekvensForYtelsen; -import no.nav.foreldrepenger.behandlingslager.behandling.RettenTil; -import no.nav.foreldrepenger.behandlingslager.behandling.aksjonspunkt.AksjonspunktDefinisjon; -import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingGrunnlagRepositoryProvider; -import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingRepositoryProvider; -import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.VedtakResultatType; -import no.nav.foreldrepenger.behandlingslager.behandling.vedtak.Vedtaksbrev; -import no.nav.foreldrepenger.behandlingslager.behandling.verge.VergeRepository; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.Avslagsårsak; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårResultat; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårType; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallMerknad; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallType; -import no.nav.foreldrepenger.behandlingslager.fagsak.FagsakYtelseType; -import no.nav.foreldrepenger.behandlingslager.testutilities.behandling.ScenarioMorSøkerForeldrepenger; -import no.nav.foreldrepenger.dbstoette.CdiDbAwareTest; -import no.nav.foreldrepenger.domene.arbeidsforhold.InntektArbeidYtelseTjeneste; - -@CdiDbAwareTest -class OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunktTest { - - @Inject - private BehandlingskontrollServiceProvider serviceProvider; - - @Inject - private InntektArbeidYtelseTjeneste iayTjeneste; - @Inject - private BeregningRevurderingTestUtil revurderingTestUtil; - @Inject - @FagsakYtelseTypeRef(FagsakYtelseType.FORELDREPENGER) - private RevurderingEndring revurderingEndring; - - @Inject - private VergeRepository vergeRepository; - - @Inject - private BehandlingRepositoryProvider repositoryProvider; - @Inject - private BehandlingGrunnlagRepositoryProvider grunnlagRepositoryProvider; - @Inject - private BehandlingRevurderingTjeneste behandlingRevurderingTjeneste; - - private Behandling revurdering; - private Behandlingsresultat revurderingResultat; - - @BeforeEach - public void setUp() { - var scenario = ScenarioMorSøkerForeldrepenger.forFødsel(); - scenario.leggTilAksjonspunkt(AksjonspunktDefinisjon.AVKLAR_TERMINBEKREFTELSE, - BehandlingStegType.KONTROLLER_FAKTA); - scenario.medBehandlingVedtak() - .medVedtakstidspunkt(LocalDateTime.now()) - .medVedtakResultatType(VedtakResultatType.INNVILGET); - var behandlingSomSkalRevurderes = scenario.lagre(repositoryProvider); - repositoryProvider.getOpptjeningRepository() - .lagreOpptjeningsperiode(behandlingSomSkalRevurderes, LocalDate.now().minusYears(1), LocalDate.now(), - false); - revurderingTestUtil.avsluttBehandling(behandlingSomSkalRevurderes); - var behandlingskontrollTjeneste = new BehandlingskontrollTjenesteImpl(serviceProvider); - var revurderingTjenesteFelles = new RevurderingTjenesteFelles(repositoryProvider, behandlingRevurderingTjeneste); - var revurderingTjeneste = new RevurderingTjenesteImpl(repositoryProvider, grunnlagRepositoryProvider, - behandlingskontrollTjeneste, iayTjeneste, revurderingEndring, revurderingTjenesteFelles, vergeRepository); - revurdering = revurderingTjeneste - .opprettAutomatiskRevurdering(behandlingSomSkalRevurderes.getFagsak(), - BehandlingÅrsakType.RE_HENDELSE_FØDSEL, new OrganisasjonsEnhet("1234", "Test")); - revurderingResultat = repositoryProvider.getBehandlingsresultatRepository() - .hentHvisEksisterer(revurdering.getId()) - .orElse(null); - } - - @Test - void skal_teste_at_alle_inngangsvilkår_oppfylt_gir_positivt_utfall() { - // Arrange - VilkårResultat.builder() - .leggTilVilkårOppfylt(VilkårType.FØDSELSVILKÅRET_MOR) - .leggTilVilkårOppfylt(VilkårType.OPPTJENINGSVILKÅRET) - .leggTilVilkårOppfylt(VilkårType.SØKERSOPPLYSNINGSPLIKT) - .leggTilVilkårOppfylt(VilkårType.MEDLEMSKAPSVILKÅRET) - .leggTilVilkårOppfylt(VilkårType.SØKNADSFRISTVILKÅRET) - .leggTilVilkårOppfylt(VilkårType.BEREGNINGSGRUNNLAGVILKÅR) - .leggTilVilkårOppfylt(VilkårType.OPPTJENINGSPERIODEVILKÅR) - .leggTilVilkårOppfylt(VilkårType.OPPTJENINGSVILKÅRET) - .leggTilVilkårOppfylt(VilkårType.OMSORGSVILKÅRET) - .buildFor(revurdering); - - // Act - var oppfyllerIkkjeInngangsvilkår = OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.vurder( - revurderingResultat); - - // Assert - assertThat(oppfyllerIkkjeInngangsvilkår).isFalse(); - } - - @Test - void skal_teste_at_inngangsvilkår_ikke_oppfylt_gir_negativt_utfall() { - // Arrange - VilkårResultat.builder() - .leggTilVilkårOppfylt(VilkårType.FØDSELSVILKÅRET_MOR) - .leggTilVilkårOppfylt(VilkårType.OPPTJENINGSVILKÅRET) - .leggTilVilkårAvslått(VilkårType.SØKERSOPPLYSNINGSPLIKT, VilkårUtfallMerknad.VM_1019) - .buildFor(revurdering); - - // Act - var oppfyllerIkkjeInngangsvilkår = OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.vurder( - revurderingResultat); - - // Assert - assertThat(oppfyllerIkkjeInngangsvilkår).isTrue(); - } - - @Test - void skal_teste_at_inngangsvilkår_ikke_vurdert_gir_samme_som_omliggende() { - // Arrange - VilkårResultat.builder() - .leggTilVilkårOppfylt(VilkårType.FØDSELSVILKÅRET_MOR) - .leggTilVilkårIkkeVurdert(VilkårType.OPPTJENINGSVILKÅRET) - .leggTilVilkårOppfylt(VilkårType.SØKERSOPPLYSNINGSPLIKT) - .buildFor(revurdering); - - // Act - var oppfyllerIkkjeInngangsvilkår = OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.vurder( - revurderingResultat); - - // Assert - assertThat(oppfyllerIkkjeInngangsvilkår).isFalse(); - } - - @Test - void skal_teste_negativ_medlemsskapsvilkår_gir_negativt_resultat() { - // Arrange - VilkårResultat.builder() - .leggTilVilkårOppfylt(VilkårType.FØDSELSVILKÅRET_MOR) - .leggTilVilkårOppfylt(VilkårType.OPPTJENINGSVILKÅRET) - .leggTilVilkårOppfylt(VilkårType.SØKERSOPPLYSNINGSPLIKT) - .leggTilVilkårAvslått(VilkårType.MEDLEMSKAPSVILKÅRET, VilkårUtfallMerknad.VM_1025) - .buildFor(revurdering); - - // Act - var oppfyllerIkkjeInngangsvilkår = OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.vurder( - revurderingResultat); - - // Assert - assertThat(oppfyllerIkkjeInngangsvilkår).isTrue(); - } - - @Test - void skal_teste_at_behandlingsresultatet_fastsettes_korrekt() { - // Act - var oppfyllerIkkjeInngangsvilkår = OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.fastsett( - revurdering, revurderingResultat); - - // Assert - assertThat(oppfyllerIkkjeInngangsvilkår).isNotNull(); - assertThat(oppfyllerIkkjeInngangsvilkår.getBehandlingResultatType()).isEqualTo(BehandlingResultatType.OPPHØR); - assertThat(oppfyllerIkkjeInngangsvilkår.getRettenTil()).isEqualTo(RettenTil.HAR_IKKE_RETT_TIL_FP); - assertThat(oppfyllerIkkjeInngangsvilkår.getVedtaksbrev()).isEqualTo(Vedtaksbrev.AUTOMATISK); - assertThat(oppfyllerIkkjeInngangsvilkår.getKonsekvenserForYtelsen()).hasSize(1); - assertThat(oppfyllerIkkjeInngangsvilkår.getKonsekvenserForYtelsen().get(0)).isEqualTo( - KonsekvensForYtelsen.FORELDREPENGER_OPPHØRER); - } - - @Test - void skal_teste_at_behandlingsresultatet_fastsettes_korrekt_for_saker_med_avslagsårsak_null() { - // Arrange - VilkårResultat.builder() - .manueltVilkår(VilkårType.BEREGNINGSGRUNNLAGVILKÅR, VilkårUtfallType.IKKE_OPPFYLT, Avslagsårsak.FOR_LAVT_BEREGNINGSGRUNNLAG) - .buildFor(revurdering); - - // Act - var oppfyllerIkkjeInngangsvilkår = OppfyllerIkkeInngangsvilkårPåSkjæringstidsspunkt.fastsett( - revurdering, revurderingResultat); - - // Assert - assertThat(oppfyllerIkkjeInngangsvilkår).isNotNull(); - assertThat(oppfyllerIkkjeInngangsvilkår.getBehandlingResultatType()).isEqualTo(BehandlingResultatType.OPPHØR); - assertThat(oppfyllerIkkjeInngangsvilkår.getRettenTil()).isEqualTo(RettenTil.HAR_IKKE_RETT_TIL_FP); - assertThat(oppfyllerIkkjeInngangsvilkår.getVedtaksbrev()).isEqualTo(Vedtaksbrev.AUTOMATISK); - assertThat(oppfyllerIkkjeInngangsvilkår.getKonsekvenserForYtelsen()).hasSize(1); - assertThat(oppfyllerIkkjeInngangsvilkår.getKonsekvenserForYtelsen().get(0)).isEqualTo( - KonsekvensForYtelsen.FORELDREPENGER_OPPHØRER); - } - -} diff --git a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFellesTest.java b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFellesTest.java new file mode 100644 index 00000000000..392151f4fe5 --- /dev/null +++ b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/felles/RevurderingBehandlingsresultatutlederFellesTest.java @@ -0,0 +1,106 @@ +package no.nav.foreldrepenger.behandling.revurdering.felles; + +import static no.nav.foreldrepenger.behandling.revurdering.felles.RevurderingBehandlingsresultatutlederFelles.erAvslagPåAvslag; +import static org.assertj.core.api.Assertions.assertThat; + +import jakarta.persistence.EntityManager; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + +import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; +import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingResultatType; +import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingType; +import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; +import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsak; +import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsakType; +import no.nav.foreldrepenger.behandlingslager.behandling.KonsekvensForYtelsen; +import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingRepository; +import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingRepositoryProvider; +import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.Avslagsårsak; +import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårResultat; +import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårType; +import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallType; +import no.nav.foreldrepenger.behandlingslager.testutilities.behandling.ScenarioMorSøkerForeldrepenger; +import no.nav.foreldrepenger.dbstoette.JpaExtension; + +@ExtendWith(JpaExtension.class) +class RevurderingBehandlingsresultatutlederFellesTest { + + private BehandlingRepository behandlingRepository; + private BehandlingRepositoryProvider repositoryProvider; + + @BeforeEach + public void setUp(EntityManager entityManager) { + behandlingRepository = new BehandlingRepository(entityManager); + repositoryProvider = new BehandlingRepositoryProvider(entityManager); + } + + @Test + void skal_ikke_gi_avslag_på_avslag() { + // Arrange + var originalBehandling = opprettOriginalBehandling(); + var revurdering = lagRevurdering(originalBehandling); + + // Act + var erAvslagPåAvslag = erAvslagPåAvslag( + lagBehandlingsresultat(revurdering, BehandlingResultatType.INGEN_ENDRING, + KonsekvensForYtelsen.INGEN_ENDRING, VilkårUtfallType.OPPFYLT), + lagBehandlingsresultat(originalBehandling, BehandlingResultatType.INNVILGET, + KonsekvensForYtelsen.UDEFINERT, VilkårUtfallType.OPPFYLT)); + + // Assert + assertThat(erAvslagPåAvslag).isFalse(); + } + + @Test + void skal_gi_avslag_på_avslag() { + // Arrange + var originalBehandling = opprettOriginalBehandling(); + var revurdering = lagRevurdering(originalBehandling); + + // Act + var erAvslagPåAvslag = erAvslagPåAvslag( + lagBehandlingsresultat(revurdering, BehandlingResultatType.INGEN_ENDRING, + KonsekvensForYtelsen.INGEN_ENDRING, VilkårUtfallType.IKKE_OPPFYLT), + lagBehandlingsresultat(originalBehandling, BehandlingResultatType.AVSLÅTT, KonsekvensForYtelsen.UDEFINERT, VilkårUtfallType.IKKE_OPPFYLT)); + + // Assert + assertThat(erAvslagPåAvslag).isTrue(); + } + + private Behandling lagRevurdering(Behandling originalBehandling) { + var revurdering = Behandling.fraTidligereBehandling(originalBehandling, BehandlingType.REVURDERING) + .medBehandlingÅrsak( + BehandlingÅrsak.builder(BehandlingÅrsakType.RE_ENDRING_FRA_BRUKER) + .medManueltOpprettet(true) + .medOriginalBehandlingId(originalBehandling.getId())) + .build(); + behandlingRepository.lagre(revurdering, behandlingRepository.taSkriveLås(revurdering)); + return revurdering; + } + + private Behandling opprettOriginalBehandling() { + var scenario = ScenarioMorSøkerForeldrepenger.forFødsel(); + var originalBehandling = scenario.lagre(repositoryProvider); + originalBehandling.avsluttBehandling(); + return originalBehandling; + } + + private Behandlingsresultat lagBehandlingsresultat(Behandling behandling, BehandlingResultatType resultatType, + KonsekvensForYtelsen konsekvensForYtelsen, VilkårUtfallType utfallType) { + var behandlingsresultat = Behandlingsresultat.builder().medBehandlingResultatType(resultatType) + .leggTilKonsekvensForYtelsen(konsekvensForYtelsen).buildFor(behandling); + + VilkårResultat.builder() + .overstyrVilkår(VilkårType.SØKERSOPPLYSNINGSPLIKT, utfallType, + VilkårUtfallType.IKKE_OPPFYLT.equals(utfallType) ? Avslagsårsak.MANGLENDE_DOKUMENTASJON : Avslagsårsak.UDEFINERT) + .buildFor(behandling); + behandlingRepository.lagre(behandling.getBehandlingsresultat().getVilkårResultat(), + behandlingRepository.taSkriveLås(behandling)); + + return behandlingsresultat; + } + +} diff --git a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/RevurderingBehandlingsresultatutlederTest.java b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/RevurderingBehandlingsresultatutlederTest.java index 3fb3987fd02..fd97eb7d801 100644 --- a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/RevurderingBehandlingsresultatutlederTest.java +++ b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/fp/RevurderingBehandlingsresultatutlederTest.java @@ -223,8 +223,7 @@ private Behandling opprettRevurdering(Behandling førstegangsbehandling) { .leggTilVilkårOppfylt(VilkårType.FORELDREANSVARSVILKÅRET_2_LEDD) .leggTilVilkårOppfylt(VilkårType.OPPTJENINGSVILKÅRET) .leggTilVilkårOppfylt(VilkårType.SØKERSOPPLYSNINGSPLIKT) - .leggTilVilkårOppfylt(VilkårType.MEDLEMSKAPSVILKÅRET) - .leggTilVilkårAvslått(VilkårType.MEDLEMSKAPSVILKÅRET_LØPENDE, VilkårUtfallMerknad.VM_1020) + .leggTilVilkårAvslått(VilkårType.MEDLEMSKAPSVILKÅRET, VilkårUtfallMerknad.VM_1020) .buildFor(revurdering); var lås = behandlingRepository.taSkriveLås(revurdering); diff --git a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderTest.java b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderTest.java index 68d28185d44..ff1ba08c39a 100644 --- a/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderTest.java +++ b/domenetjenester/behandling-revurdering/src/test/java/no/nav/foreldrepenger/behandling/revurdering/ytelse/svp/UttakResultatHolderTest.java @@ -25,7 +25,7 @@ class UttakResultatHolderTest { var uttakResultatHolder = new UttakResultatHolderSVP(Optional.empty(), null); // Act - var resultat = uttakResultatHolder.kontrollerErSisteUttakAvslåttMedÅrsak(); + var resultat = uttakResultatHolder.erOpphør(); // Assert assertThat(resultat).isFalse(); @@ -49,7 +49,7 @@ class UttakResultatHolderTest { var uttakResultatHolder = new UttakResultatHolderSVP(Optional.of(uttakResultat), null); // Act - var resultat = uttakResultatHolder.kontrollerErSisteUttakAvslåttMedÅrsak(); + var resultat = uttakResultatHolder.erOpphør(); // Assert assertThat(resultat).isTrue(); @@ -81,7 +81,7 @@ class UttakResultatHolderTest { var uttakResultatHolder = new UttakResultatHolderSVP(Optional.of(uttakResultat), null); // Act - var resultat = uttakResultatHolder.kontrollerErSisteUttakAvslåttMedÅrsak(); + var resultat = uttakResultatHolder.erOpphør(); // Assert assertThat(resultat).isTrue(); @@ -113,7 +113,7 @@ class UttakResultatHolderTest { var uttakResultatHolder = new UttakResultatHolderSVP(Optional.of(uttakResultat), null); // Act - var resultat = uttakResultatHolder.kontrollerErSisteUttakAvslåttMedÅrsak(); + var resultat = uttakResultatHolder.erOpphør(); // Assert assertThat(resultat).isFalse(); diff --git a/domenetjenester/medlem/src/main/java/no/nav/foreldrepenger/domene/medlem/MedlemTjeneste.java b/domenetjenester/medlem/src/main/java/no/nav/foreldrepenger/domene/medlem/MedlemTjeneste.java index 238f08fd2cd..3820fb7c564 100644 --- a/domenetjenester/medlem/src/main/java/no/nav/foreldrepenger/domene/medlem/MedlemTjeneste.java +++ b/domenetjenester/medlem/src/main/java/no/nav/foreldrepenger/domene/medlem/MedlemTjeneste.java @@ -7,8 +7,6 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandling; -import no.nav.foreldrepenger.behandlingslager.behandling.Behandlingsresultat; import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingsresultatRepository; import no.nav.foreldrepenger.behandlingslager.behandling.EndringsresultatSnapshot; import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.MedlemskapAggregat; @@ -19,8 +17,6 @@ import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.VilkårMedlemskapRepository; import no.nav.foreldrepenger.behandlingslager.behandling.repository.BehandlingRepositoryProvider; import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.Avslagsårsak; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.AvslagsårsakMapper; -import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.Vilkår; import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårType; import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallType; import no.nav.foreldrepenger.domene.medlem.medl2.HentMedlemskapFraRegister; @@ -89,15 +85,7 @@ public EndringsresultatSnapshot finnAktivGrunnlagId(Long behandlingId) { if (medlemskapsvilkåret.get().erIkkeOppfylt()) { skjæringstidspunktTjeneste.getSkjæringstidspunkter(behandlingId).getSkjæringstidspunktHvisUtledet(); } - return vilkårMedlemskapRepository.hentHvisEksisterer(behandlingId) - .flatMap(VilkårMedlemskap::getOpphør) - .map(MedlemskapOpphør::fom); - } - - private Optional finnVilkår(Behandlingsresultat behandlingsresultat, VilkårType vilkårType) { - return behandlingsresultat.getVilkårResultat().getVilkårene().stream() - .filter(vt -> vt.getVilkårType().equals(vilkårType)) - .findFirst(); + return vilkårMedlemskapRepository.hentHvisEksisterer(behandlingId).flatMap(VilkårMedlemskap::getOpphør).map(MedlemskapOpphør::fom); } public Optional hentAvslagsårsak(Long behandlingId) { @@ -137,35 +125,6 @@ public Optional hentMedlemFomDato(Long behandlingId) { .flatMap(VilkårMedlemskap::getMedlemFom); } - public record VilkårUtfallMedÅrsak(VilkårUtfallType vilkårUtfallType, Avslagsårsak avslagsårsak) { - } - - public VilkårUtfallMedÅrsak utledVilkårUtfall(Behandling revurdering) { - var behandlingsresultat = behandlingsresultatRepository.hent(revurdering.getId()); - var medlemOpt = finnVilkår(behandlingsresultat, VilkårType.MEDLEMSKAPSVILKÅRET); - - if (medlemOpt.isPresent()) { - var medlem = medlemOpt.get(); - if (medlem.getGjeldendeVilkårUtfall().equals(VilkårUtfallType.IKKE_OPPFYLT)) { - return new VilkårUtfallMedÅrsak(medlem.getGjeldendeVilkårUtfall(), - AvslagsårsakMapper.fraVilkårUtfallMerknad(medlem.getVilkårUtfallMerknad())); - } - var løpendeOpt = finnVilkår(behandlingsresultat, VilkårType.MEDLEMSKAPSVILKÅRET_LØPENDE); - if (løpendeOpt.isPresent()) { - var løpende = løpendeOpt.get(); - if (løpende.getGjeldendeVilkårUtfall().equals(VilkårUtfallType.IKKE_OPPFYLT) && !løpende.erOverstyrt()) { - return new VilkårUtfallMedÅrsak(VilkårUtfallType.IKKE_OPPFYLT, - AvslagsårsakMapper.fraVilkårUtfallMerknad(løpende.getVilkårUtfallMerknad())); - } - if (løpende.getGjeldendeVilkårUtfall().equals(VilkårUtfallType.IKKE_OPPFYLT) && løpende.erOverstyrt()) { - return new VilkårUtfallMedÅrsak(VilkårUtfallType.IKKE_OPPFYLT, løpende.getAvslagsårsak()); - } - } - return new VilkårUtfallMedÅrsak(VilkårUtfallType.OPPFYLT, Avslagsårsak.UDEFINERT); - } - throw new IllegalStateException("Kan ikke utlede vilkår utfall type når medlemskapsvilkåret ikke finnes"); - } - public Optional hentGrunnlagPåId(Long grunnlagId) { return medlemskapRepository.hentGrunnlagPåId(grunnlagId); }