Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -59,12 +59,14 @@
import no.nav.ung.sak.kontrakt.behandling.ReåpneBehandlingDto;
import no.nav.ung.sak.kontrakt.behandling.SaksnummerDto;
import no.nav.ung.sak.kontrakt.behandling.SettBehandlingPaVentDto;
import no.nav.ung.sak.typer.Periode;
import no.nav.ung.sak.typer.Saksnummer;
import no.nav.ung.sak.web.app.rest.Redirect;
import no.nav.ung.sak.web.app.tjenester.behandling.aksjonspunkt.BehandlingsutredningApplikasjonTjeneste;
import no.nav.ung.sak.web.server.abac.AbacAttributtSupplier;

import java.net.URISyntaxException;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
Expand Down Expand Up @@ -354,10 +356,6 @@ public Response opprettNyBehandling(@Context HttpServletRequest request,
Fagsak fagsak = funnetFagsak.get();
if (BehandlingType.REVURDERING.getKode().equals(behandlingType.getKode())) {
BehandlingÅrsakType behandlingÅrsakType = BehandlingÅrsakType.fraKode(dto.getBehandlingArsakType().getKode());

if (behandlingÅrsakType == BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT && dto.getPeriode() == null) {
throw new UnsupportedOperationException("Ikke implementert støtte for å opprette revurdering for inntektskontroll uten definert periode");
}
Behandling behandling = behandlingsoppretterTjeneste.opprettManuellRevurdering(fagsak, behandlingÅrsakType, dto.getPeriode() == null ? Optional.empty() : Optional.of(DatoIntervallEntitet.fra(dto.getPeriode())));
String gruppe = behandlingsprosessTjeneste.asynkStartBehandlingsprosess(behandling);
return Redirect.tilBehandlingPollStatus(request, behandling.getUuid(), Optional.of(gruppe));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@
import no.nav.ung.sak.behandlingslager.behandling.repository.BehandlingRepositoryProvider;
import no.nav.ung.sak.behandlingslager.fagsak.Fagsak;
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
import no.nav.ung.sak.kontrakt.behandling.ÅrsakOgPerioderDto;
import no.nav.ung.sak.klage.domenetjenester.KlageVurderingTjeneste;
import no.nav.ung.sak.kontrakt.behandling.ÅrsakOgPerioderDto;
import no.nav.ung.sak.produksjonsstyring.behandlingenhet.BehandlendeEnhetTjeneste;
import no.nav.ung.sak.typer.Saksnummer;

import java.time.LocalDate;
import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

import static no.nav.k9.felles.feil.LogLevel.INFO;

Expand Down Expand Up @@ -83,6 +85,10 @@ private Behandling opprettRevurdering(Fagsak fagsak, BehandlingÅrsakType behand
if (!kanRevurderingOpprettes) {
throw BehandlingsoppretterTjeneste.BehandlingsoppretterTjenesteFeil.FACTORY.kanIkkeOppretteRevurdering(fagsak.getSaksnummer()).toException();
}
if (!periodeKanRevurderesForÅrsak(fagsak, behandlingÅrsakType, periode)) {
throw new IllegalArgumentException("Perioden er ikke tidligere kontrollert");
}

var origBehandling = behandlingRepository.finnSisteAvsluttedeIkkeHenlagteYtelsebehandling(fagsak.getId())
.orElseThrow(() -> RevurderingFeil.FACTORY.tjenesteFinnerIkkeBehandlingForRevurdering(fagsak.getId()).toException());

Expand Down Expand Up @@ -115,7 +121,7 @@ private Behandling opprettBehandling(Fagsak fagsak, BehandlingType behandlingTyp
}
beh.setBehandlingstidFrist(LocalDate.now().plusWeeks(behandlingType.getBehandlingstidFristUker()));
beh.setBehandlendeEnhet(enhet);
});
});
}

public boolean kanOppretteNyBehandlingAvType(Long fagsakId, BehandlingType type) {
Expand Down Expand Up @@ -172,4 +178,21 @@ public void opprettHistorikkinnslag(Behandling behandling, boolean manueltOppret

historikkinnslagRepository.lagre(historikkBuilder.build());
}

private boolean periodeKanRevurderesForÅrsak(Fagsak fagsak, BehandlingÅrsakType behandlingÅrsakType, Optional<DatoIntervallEntitet> periode) {
var gyldigePerioderForRevurderingPrÅrsak = finnGyldigeVurderingsperioderPrÅrsak(fagsak.getId());
boolean skalSjekkeGyldighetAvPeriode = gyldigePerioderForRevurderingPrÅrsak.stream().anyMatch(dto -> dto.årsak() == behandlingÅrsakType);
//Dersom det ikke er utledet gyldige perioder for årsak så aksepteres alle perioder, også ingen periode.
if (!skalSjekkeGyldighetAvPeriode) {
return true;
}
if (periode.isEmpty()) {
return false;
}
return gyldigePerioderForRevurderingPrÅrsak.stream().filter(
dto -> dto.årsak() == behandlingÅrsakType).flatMap(dto -> dto.perioder().stream())
.map(DatoIntervallEntitet::fra)
.anyMatch(periode.get()::equals);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
import no.nav.ung.sak.behandlingslager.fagsak.Fagsak;
import no.nav.ung.sak.behandlingslager.tilkjentytelse.TilkjentYtelseRepository;
import no.nav.ung.sak.db.util.JpaExtension;
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
import no.nav.ung.sak.klage.domenetjenester.KlageVurderingTjeneste;
import no.nav.ung.sak.kontrakt.behandling.ÅrsakOgPerioderDto;
import no.nav.ung.sak.produksjonsstyring.behandlingenhet.BehandlendeEnhetTjeneste;
import no.nav.ung.sak.test.util.UnitTestLookupInstanceImpl;
import no.nav.ung.sak.test.util.behandling.TestScenarioBuilder;
Expand All @@ -29,11 +31,14 @@
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mockito;

import java.util.List;
import java.util.Optional;
import java.util.Set;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@ExtendWith(CdiAwareExtension.class)
Expand Down Expand Up @@ -73,20 +78,23 @@ class BehandlingsoppretterTjenesteTest {

private Behandling behandling;
private BehandlendeEnhetTjeneste behandlendeEnhetTjeneste;
private GyldigePerioderForRevurderingAvInntektskontrollPrÅrsakUtleder gyldigePerioderForRevurderingUtleder = mock(GyldigePerioderForRevurderingAvInntektskontrollPrÅrsakUtleder.class);


@BeforeEach
void setUp() {
opprettRevurderingsKandidat();
behandlendeEnhetTjeneste = Mockito.mock(BehandlendeEnhetTjeneste.class);
when(behandlendeEnhetTjeneste.finnBehandlendeEnhetFor(any())).thenReturn(new OrganisasjonsEnhet("1234", "Nav Test"));
behandlingsoppretterTjeneste = new BehandlingsoppretterTjeneste(repositoryProvider, behandlendeEnhetTjeneste, new UnitTestLookupInstanceImpl<>(new GyldigePerioderForRevurderingAvInntektskontrollPrÅrsakUtleder(tilkjentYtelseRepository, behandlingRepository)), behandlingskontrollTjeneste, klageVurderingTjeneste, personopplysningRepository, historikkinnslagRepository);
when(gyldigePerioderForRevurderingUtleder.utledPerioder(anyLong())).thenReturn(new ÅrsakOgPerioderDto(BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT, List.of()));
behandlingsoppretterTjeneste = new BehandlingsoppretterTjeneste(repositoryProvider, behandlendeEnhetTjeneste, new UnitTestLookupInstanceImpl<>(gyldigePerioderForRevurderingUtleder), behandlingskontrollTjeneste, klageVurderingTjeneste, personopplysningRepository, historikkinnslagRepository);
}

@Test
void skalOppretteProsesstriggerNårPeriodeErOppgitt() {
Fagsak fagsak = behandling.getFagsak();
var periode = behandling.getFagsak().getPeriode();
when(gyldigePerioderForRevurderingUtleder.utledPerioder(anyLong())).thenReturn(new ÅrsakOgPerioderDto(BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT, List.of(periode.tilPeriode())));
var revurdering = behandlingsoppretterTjeneste.opprettManuellRevurdering(fagsak, BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT, Optional.of(periode));
assertTrue(revurdering.erRevurdering());

Expand All @@ -101,7 +109,7 @@ void setUp() {
@Test
void skalOppretteProsesstriggerNårPeriodeIkkeErOppgitt() {
Fagsak fagsak = behandling.getFagsak();
var revurdering = behandlingsoppretterTjeneste.opprettManuellRevurdering(fagsak, BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT, Optional.empty());
var revurdering = behandlingsoppretterTjeneste.opprettManuellRevurdering(fagsak, BehandlingÅrsakType.RE_SATS_ENDRING, Optional.empty());
assertTrue(revurdering.erRevurdering());

Optional<ProsessTriggere> prosessTriggere = prosessTriggereRepository.hentGrunnlag(revurdering.getId());
Expand Down