Skip to content

Commit

Permalink
TFP-5849: Mapper inn vilkårssporing, fjerner bruk av entitet / repo f… (
Browse files Browse the repository at this point in the history
#6700)

TFP-5849: Mapper inn vilkårssporing, fjerner bruk av entitet / repo fra totrinn og greg task
  • Loading branch information
pekern authored Sep 16, 2024
1 parent f72a02d commit 7263e7f
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
import jakarta.enterprise.context.Dependent;
import jakarta.inject.Inject;

import no.nav.foreldrepenger.behandling.BehandlingReferanse;
import no.nav.foreldrepenger.domene.modell.Beregningsgrunnlag;
import no.nav.foreldrepenger.domene.modell.BeregningsgrunnlagGrunnlag;
import no.nav.foreldrepenger.domene.prosess.BeregningTjeneste;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -20,8 +25,6 @@
import no.nav.foreldrepenger.behandlingslager.fagsak.FagsakRepository;
import no.nav.foreldrepenger.behandlingslager.task.FagsakProsessTask;
import no.nav.foreldrepenger.behandlingsprosess.prosessering.BehandlingProsesseringTjeneste;
import no.nav.foreldrepenger.domene.entiteter.BeregningsgrunnlagEntitet;
import no.nav.foreldrepenger.domene.entiteter.BeregningsgrunnlagRepository;
import no.nav.foreldrepenger.domene.typer.Beløp;
import no.nav.foreldrepenger.produksjonsstyring.behandlingenhet.BehandlendeEnhetTjeneste;
import no.nav.foreldrepenger.skjæringstidspunkt.SkjæringstidspunktTjeneste;
Expand All @@ -40,7 +43,7 @@ public class GrunnbeløpReguleringTask extends FagsakProsessTask {
private final BehandlingRepository behandlingRepository;
private final FagsakRepository fagsakRepository;
private final BehandlingProsesseringTjeneste behandlingProsesseringTjeneste;
private final BeregningsgrunnlagRepository beregningsgrunnlagRepository;
private final BeregningTjeneste beregningTjeneste;
private final SatsRepository satsRepository;
private final SkjæringstidspunktTjeneste skjæringstidspunktTjeneste;
private final BehandlendeEnhetTjeneste enhetTjeneste;
Expand All @@ -50,16 +53,16 @@ public class GrunnbeløpReguleringTask extends FagsakProsessTask {
public GrunnbeløpReguleringTask(BehandlingRepositoryProvider repositoryProvider,
SkjæringstidspunktTjeneste skjæringstidspunktTjeneste,
BehandlingProsesseringTjeneste behandlingProsesseringTjeneste,
BeregningsgrunnlagRepository beregningsgrunnlagRepository,
BeregningTjeneste beregningTjeneste,
SatsRepository satsRepository,
BehandlendeEnhetTjeneste enhetTjeneste,
BehandlingFlytkontroll flytkontroll) {
super(repositoryProvider.getFagsakLåsRepository(), repositoryProvider.getBehandlingLåsRepository());
this.behandlingRepository = repositoryProvider.getBehandlingRepository();
this.fagsakRepository = repositoryProvider.getFagsakRepository();
this.beregningsgrunnlagRepository = beregningsgrunnlagRepository;
this.behandlingProsesseringTjeneste = behandlingProsesseringTjeneste;
this.skjæringstidspunktTjeneste = skjæringstidspunktTjeneste;
this.beregningTjeneste = beregningTjeneste;
this.satsRepository = satsRepository;
this.enhetTjeneste = enhetTjeneste;
this.flytkontroll = flytkontroll;
Expand All @@ -80,9 +83,12 @@ protected void prosesser(ProsessTaskData prosessTaskData, Long fagsakId, Long be
if (prosessTaskData.getPropertyValue(MANUELL_KEY) == null) {
var sisteVedtatte = behandlingRepository.finnSisteAvsluttedeIkkeHenlagteBehandling(fagsakId).orElseThrow();
var skjæringstidspunkt = skjæringstidspunktTjeneste.getSkjæringstidspunkterForAvsluttetBehandling(sisteVedtatte.getId());
var grunnbeløpFraSisteVedtatt = beregningsgrunnlagRepository.hentBeregningsgrunnlagForBehandling(sisteVedtatte.getId())
.map(BeregningsgrunnlagEntitet::getGrunnbeløp)
.map(Beløp::getVerdi).map(BigDecimal::longValue).orElse(0L);
var grunnbeløpFraSisteVedtatt = beregningTjeneste.hent(BehandlingReferanse.fra(sisteVedtatte))
.flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag)
.map(Beregningsgrunnlag::getGrunnbeløp)
.map(Beløp::getVerdi)
.map(BigDecimal::longValue)
.orElse(0L);
var skalBrukeGrunnbeløp = satsRepository.finnEksaktSats(BeregningSatsType.GRUNNBELØP, skjæringstidspunkt.getFørsteUttaksdatoGrunnbeløp()).getVerdi();
if (grunnbeløpFraSisteVedtatt == skalBrukeGrunnbeløp) {
LOG.info("GrunnbeløpRegulering har rett G for saksnummer = {} stp {}", fagsak.getSaksnummer().getVerdi(), skjæringstidspunkt.getFørsteUttaksdatoGrunnbeløp());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@

import no.nav.foreldrepenger.behandlingslager.behandling.beregning.SatsRepository;

import no.nav.foreldrepenger.domene.modell.Beregningsgrunnlag;
import no.nav.foreldrepenger.domene.modell.BeregningsgrunnlagGrunnlagBuilder;
import no.nav.foreldrepenger.domene.modell.kodeverk.BeregningsgrunnlagTilstand;
import no.nav.foreldrepenger.domene.prosess.BeregningTjeneste;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand Down Expand Up @@ -42,8 +47,6 @@
import no.nav.foreldrepenger.behandlingslager.testutilities.behandling.ScenarioMorSøkerForeldrepenger;
import no.nav.foreldrepenger.behandlingsprosess.prosessering.BehandlingProsesseringTjeneste;
import no.nav.foreldrepenger.dbstoette.JpaExtension;
import no.nav.foreldrepenger.domene.entiteter.BeregningsgrunnlagEntitet;
import no.nav.foreldrepenger.domene.entiteter.BeregningsgrunnlagRepository;
import no.nav.foreldrepenger.domene.tid.DatoIntervallEntitet;
import no.nav.foreldrepenger.domene.typer.Beløp;
import no.nav.foreldrepenger.produksjonsstyring.behandlingenhet.BehandlendeEnhetTjeneste;
Expand All @@ -67,7 +70,7 @@ class GrunnbeløpReguleringTaskTest {
@Mock
private SkjæringstidspunktTjeneste skjæringstidspunktTjeneste;
@Mock
private BeregningsgrunnlagRepository beregningsgrunnlagRepository;
private BeregningTjeneste beregningTjeneste;
@Mock
private SatsRepository satsRepository;

Expand All @@ -78,8 +81,10 @@ class GrunnbeløpReguleringTaskTest {
void setUp(EntityManager entityManager) {
repositoryProvider = new BehandlingRepositoryProvider(entityManager);
behandlingRepository = new BehandlingRepository(entityManager);
lenient().when(beregningsgrunnlagRepository.hentBeregningsgrunnlagForBehandling(any())).thenReturn(Optional.of(BeregningsgrunnlagEntitet.ny()
.medGrunnbeløp(EKSISTERENDE_G).medSkjæringstidspunkt(EKSISTERENDE_STP_B).build()));
var gr = BeregningsgrunnlagGrunnlagBuilder.nytt()
.medBeregningsgrunnlag(Beregningsgrunnlag.builder().medGrunnbeløp(EKSISTERENDE_G).medSkjæringstidspunkt(EKSISTERENDE_STP_B).build())
.build(BeregningsgrunnlagTilstand.FASTSATT);
lenient().when(beregningTjeneste.hent(any())).thenReturn(Optional.of(gr));
lenient().when(satsRepository.finnEksaktSats(eq(BeregningSatsType.GRUNNBELØP), any()))
.thenReturn(new BeregningSats(BeregningSatsType.GRUNNBELØP, DatoIntervallEntitet.fraOgMedTilOgMed(TERMINDATO.minusYears(1), TERMINDATO),
EKSISTERENDE_G.getVerdi().longValue() + 1000));
Expand Down Expand Up @@ -121,7 +126,7 @@ private void assertIngenRevurdering(Fagsak fagsak) {

private GrunnbeløpReguleringTask createTask() {
return new GrunnbeløpReguleringTask(repositoryProvider,
skjæringstidspunktTjeneste, prosesseringTjeneste, beregningsgrunnlagRepository, satsRepository, enhetsTjeneste, flytkontroll);
skjæringstidspunktTjeneste, prosesseringTjeneste, beregningTjeneste, satsRepository, enhetsTjeneste, flytkontroll);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,9 @@ public Optional<BeregningsgrunnlagGrunnlag> hent(BehandlingReferanse referanse)
var request = lagBeregningRequest(behandlingReferanse, kobling, beregningSteg, originalKobling);
var respons = klient.beregn(request);
var prosessResultat = new BeregningsgrunnlagVilkårOgAkjonspunktResultat(respons.aksjonspunkter());
// TODO Finn ut hvordan vi løser sporing av vilkåret
prosessResultat.setVilkårOppfylt(respons.erVilkårOppfylt(), null, null, null);
if (respons.vilkårdata() != null) {
prosessResultat.setVilkårOppfylt(respons.vilkårdata().erVilkårOppfylt(), respons.vilkårdata().regelEvalueringSporing(), respons.vilkårdata().regelInputSporing(), respons.vilkårdata().regelVersjon());
}
oppdaterKoblingMedData(behandlingReferanse, stegType, kobling);
return prosessResultat;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ public KalkulusRespons beregn(BeregnRequestDto request) {
try {
var respons = restClient.sendReturnOptional(restRequest, TilstandResponse.class).orElseThrow(() -> new IllegalStateException("Ugyldig tilstand, tomt svar fra kalkulus"));
var aksjonspunkter = respons.getAvklaringsbehovMedTilstandDto().stream().map(BeregningAksjonspunktResultatMapper::mapKontrakt).toList();
return new KalkulusRespons(aksjonspunkter, respons.getVilkarOppfylt());
var vilkårRespons = respons.getVilkårResultat();
var vilkårResponsDto = vilkårRespons == null ? null : new KalkulusRespons.VilkårRespons(vilkårRespons.getErVilkarOppfylt(),
vilkårRespons.getRegelEvalueringSporing(), vilkårRespons.getRegelInputSporing(), vilkårRespons.getRegelVersjon());
return new KalkulusRespons(aksjonspunkter, vilkårResponsDto);
} catch (Exception e) {
throw new TekniskException("FP-503800", "Feil ved kall til fpkalkulus: " + e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,6 @@

import java.util.List;

public record KalkulusRespons (List<AksjonspunktResultat> aksjonspunkter, Boolean erVilkårOppfylt) {}
public record KalkulusRespons (List<AksjonspunktResultat> aksjonspunkter, VilkårRespons vilkårdata) {
protected record VilkårRespons (Boolean erVilkårOppfylt, String regelEvalueringSporing, String regelInputSporing, String regelVersjon) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ void setup() {
when(koblingRepository.hentKobling(behandlingReferanse.behandlingId())).thenReturn(Optional.empty());
when(koblingRepository.opprettKobling(behandlingReferanse)).thenReturn(new BeregningsgrunnlagKobling(behandlingReferanse
.behandlingId(), behandlingReferanse.behandlingUuid()));
when(kalkulusKlient.beregn(any())).thenReturn(new KalkulusRespons(List.of(), true));
when(kalkulusKlient.beregn(any())).thenReturn(new KalkulusRespons(List.of(), new KalkulusRespons.VilkårRespons(true, "", "", "")));
// Act
beregningKalkulus.beregn(behandlingReferanse, BehandlingStegType.FASTSETT_SKJÆRINGSTIDSPUNKT_BEREGNING);

Expand All @@ -84,7 +84,7 @@ void setup() {
var behandlingReferanse = lagRef();
when(koblingRepository.hentKobling(behandlingReferanse.behandlingId())).thenReturn(Optional.of(new BeregningsgrunnlagKobling(behandlingReferanse
.behandlingId(), behandlingReferanse.behandlingUuid())));
when(kalkulusKlient.beregn(any())).thenReturn(new KalkulusRespons(List.of(), true));
when(kalkulusKlient.beregn(any())).thenReturn(new KalkulusRespons(List.of(), new KalkulusRespons.VilkårRespons(true, "", "", "")));

// Act
beregningKalkulus.beregn(behandlingReferanse, BehandlingStegType.FORESLÅ_BEREGNINGSGRUNNLAG);
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
<fp-tidsserie.version>2.7.1</fp-tidsserie.version>
<fp-nare.version>2.6.3</fp-nare.version>
<fp-inngangsvilkar.version>1.1.0</fp-inngangsvilkar.version>
<beregning.version>5.4.9</beregning.version>
<beregning.version>5.4.11</beregning.version>
<fp-uttak.version>15.3.0</fp-uttak.version>
<fp-stonadskonto.version>2.1.1</fp-stonadskonto.version>
<svp-uttak.version>2.4.4</svp-uttak.version>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,42 +1,44 @@
package no.nav.foreldrepenger.web.app.tjenester.behandling.vedtak.app;

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

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;

import no.nav.foreldrepenger.behandling.BehandlingReferanse;
import no.nav.foreldrepenger.behandlingslager.behandling.Behandling;
import no.nav.foreldrepenger.behandlingslager.behandling.aksjonspunkt.AksjonspunktDefinisjon;
import no.nav.foreldrepenger.behandlingslager.behandling.beregning.AktivitetStatus;
import no.nav.foreldrepenger.behandlingslager.behandling.totrinn.Totrinnsvurdering;
import no.nav.foreldrepenger.domene.entiteter.BeregningsgrunnlagEntitet;
import no.nav.foreldrepenger.domene.modell.Beregningsgrunnlag;
import no.nav.foreldrepenger.domene.modell.BeregningsgrunnlagGrunnlag;
import no.nav.foreldrepenger.domene.modell.kodeverk.FaktaOmBeregningTilfelle;
import no.nav.foreldrepenger.domene.prosess.HentOgLagreBeregningsgrunnlagTjeneste;
import no.nav.foreldrepenger.domene.prosess.BeregningTjeneste;
import no.nav.foreldrepenger.web.app.tjenester.behandling.vedtak.dto.TotrinnsBeregningDto;

@ApplicationScoped
public class TotrinnsBeregningDtoTjeneste {
private HentOgLagreBeregningsgrunnlagTjeneste beregningsgrunnlagTjeneste;
private BeregningTjeneste beregningTjeneste;

protected TotrinnsBeregningDtoTjeneste() {
// for CDI proxy
}

@Inject
public TotrinnsBeregningDtoTjeneste(HentOgLagreBeregningsgrunnlagTjeneste beregningsgrunnlagTjeneste) {
this.beregningsgrunnlagTjeneste = beregningsgrunnlagTjeneste;
public TotrinnsBeregningDtoTjeneste(BeregningTjeneste beregningTjeneste) {
this.beregningTjeneste = beregningTjeneste;
}

TotrinnsBeregningDto hentBeregningDto(Totrinnsvurdering aksjonspunkt,
Behandling behandling) {
var dto = new TotrinnsBeregningDto();
var ref = BehandlingReferanse.fra(behandling);
if (aksjonspunkt.getAksjonspunktDefinisjon().equals(AksjonspunktDefinisjon.VURDER_VARIG_ENDRET_ELLER_NYOPPSTARTET_NÆRING_SELVSTENDIG_NÆRINGSDRIVENDE)) {
dto.setFastsattVarigEndringNaering(erVarigEndringFastsattForSelvstendingNæringsdrivendeGittBehandlingId(behandling.getId()));
dto.setFastsattVarigEndringNaering(erVarigEndringFastsattForSelvstendingNæringsdrivendeGittBehandlingId(ref));
}
if (AksjonspunktDefinisjon.VURDER_FAKTA_FOR_ATFL_SN.equals(aksjonspunkt.getAksjonspunktDefinisjon())) {
var bg = hentBeregningsgrunnlag(behandling.getId());
var tilfeller = bg.map(BeregningsgrunnlagEntitet::getFaktaOmBeregningTilfeller).orElseGet(List::of);
var bg = beregningTjeneste.hent(ref).flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag);
var tilfeller = bg.map(Beregningsgrunnlag::getFaktaOmBeregningTilfeller).orElseGet(List::of);
dto.setFaktaOmBeregningTilfeller(mapTilfelle(tilfeller));
}
return dto;
Expand All @@ -46,14 +48,10 @@ private List<FaktaOmBeregningTilfelle> mapTilfelle(List<FaktaOmBeregningTilfelle
return tilfeller.stream().map(t -> FaktaOmBeregningTilfelle.fraKode(t.getKode())).toList();
}

private Optional<BeregningsgrunnlagEntitet> hentBeregningsgrunnlag(Long behandlingId) {
return beregningsgrunnlagTjeneste.hentBeregningsgrunnlagEntitetForBehandling(behandlingId);
}

private boolean erVarigEndringFastsattForSelvstendingNæringsdrivendeGittBehandlingId(Long behandlingId) {
var beregningsgrunnlag = hentBeregningsgrunnlag(behandlingId);
private boolean erVarigEndringFastsattForSelvstendingNæringsdrivendeGittBehandlingId(BehandlingReferanse ref) {
var beregningsgrunnlag = beregningTjeneste.hent(ref).flatMap(BeregningsgrunnlagGrunnlag::getBeregningsgrunnlag);

return beregningsgrunnlag.map(BeregningsgrunnlagEntitet::getBeregningsgrunnlagPerioder).orElseGet(List::of).stream()
return beregningsgrunnlag.map(Beregningsgrunnlag::getBeregningsgrunnlagPerioder).orElseGet(List::of).stream()
.flatMap(bgps -> bgps.getBeregningsgrunnlagPrStatusOgAndelList().stream())
.filter(andel -> AktivitetStatus.SELVSTENDIG_NÆRINGSDRIVENDE.equals(AktivitetStatus.fraKode(andel.getAktivitetStatus().getKode())))
.anyMatch(andel -> andel.getOverstyrtPrÅr() != null);
Expand Down

0 comments on commit 7263e7f

Please sign in to comment.