Skip to content

Commit

Permalink
TFP-5605: Henter data om tilkjent ytelse fra eget endepunkt i fpsak
Browse files Browse the repository at this point in the history
  • Loading branch information
pekern committed Oct 23, 2023
1 parent 318e7d7 commit 6fb6c5a
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ private boolean gjelderMor(FagsakBackend fagsak) {
private void mapAvslåttePerioder(Behandling behandling,
ForeldrepengerAvslagDokumentdata.Builder dokumentdataBuilder,
Optional<ForeldrepengerUttak> uttakResultatPerioder) {
var tilkjentYtelseFP = domeneobjektProvider.hentTilkjentYtelseFPHvisFinnes(behandling);
var tilkjentYtelseFP = domeneobjektProvider.hentTilkjentYtelseDagytelseHvisFinnes(behandling);
var avslåttePerioderOgLovhjemmel = AvslåttPeriodeMapper.mapAvslåttePerioderOgLovhjemmel(behandling,
tilkjentYtelseFP.map(TilkjentYtelseForeldrepenger::getPerioder).orElse(Collections.emptyList()), uttakResultatPerioder);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public String getTemplateNavn() {
var svpUttaksresultat = domeneobjektProvider.hentSvangerskapspengerUttakHvisFinnes(behandling);
var familieHendelse = domeneobjektProvider.hentFamiliehendelse(behandling);
var iay = domeneobjektProvider.hentInntektsmeldinger(behandling);
var tilkjentYtelsePerioder = domeneobjektProvider.hentTilkjentYtelseFPHvisFinnes(behandling)
var tilkjentYtelsePerioder = domeneobjektProvider.hentTilkjentYtelseDagytelseHvisFinnes(behandling)
.map(TilkjentYtelseForeldrepenger::getPerioder)
.orElse(Collections.emptyList());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,13 @@ public Optional<Behandling> hentOriginalBehandlingHvisFinnes(Behandling behandli
}

public TilkjentYtelseForeldrepenger hentTilkjentYtelseForeldrepenger(Behandling behandling) {
return TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto(
behandlingRestKlient.hentTilkjentYtelseForeldrepenger(behandling.getResourceLinker()), arbeidsgiverTjeneste::hentArbeidsgiverNavn);
return TilkjentYtelseDtoMapper.mapTilkjentYtelseDagytelseFraDto(
behandlingRestKlient.hentTilkjentYtelseDagytelse(behandling.getResourceLinker()), arbeidsgiverTjeneste::hentArbeidsgiverNavn);
}

public Optional<TilkjentYtelseForeldrepenger> hentTilkjentYtelseFPHvisFinnes(Behandling behandling) {
return behandlingRestKlient.hentTilkjentYtelseForeldrepengerHvisFinnes(behandling.getResourceLinker())
.map(r -> TilkjentYtelseDtoMapper.mapTilkjentYtelseFPFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn));
public Optional<TilkjentYtelseForeldrepenger> hentTilkjentYtelseDagytelseHvisFinnes(Behandling behandling) {
return behandlingRestKlient.hentTilkjentYtelseDagytelseHvisFinnes(behandling.getResourceLinker())
.map(r -> TilkjentYtelseDtoMapper.mapTilkjentYtelseDagytelseFraDto(r, arbeidsgiverTjeneste::hentArbeidsgiverNavn));
}

public FamilieHendelse hentFamiliehendelse(Behandling behandling) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.personopplysning.VergeDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.soknad.SoknadBackendDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseEngangsstønadDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseMedUttaksplanDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.StartdatoUtsattDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.UttakResultatPerioderDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.YtelseFordelingDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.saldo.SaldoerDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.uttak.svp.SvangerskapspengerUttakResultatDto;
import no.nav.foreldrepenger.kontrakter.formidling.v1.DokumentProdusertDto;
import no.nav.foreldrepenger.kontrakter.fpsak.beregningsgrunnlag.v2.BeregningsgrunnlagDto;
import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseDagytelseDto;

public interface Behandlinger {

Expand Down Expand Up @@ -69,7 +69,7 @@ default Optional<FamilieHendelseGrunnlagDto> hentFamiliehendelseHvisFinnes(List<

default Optional<TilkjentYtelseEngangsstønadDto> hentTilkjentYtelseEngangsstønadHvisFinnes(List<BehandlingResourceLink> resourceLinker) {
return resourceLinker.stream()
.filter(dto -> "beregningsresultat-engangsstonad".equals(dto.getRel()))
.filter(dto -> "tilkjentytelse-engangsstonad".equals(dto.getRel()))
.findFirst()
.flatMap(link -> hentDtoFraLink(link, TilkjentYtelseEngangsstønadDto.class));
}
Expand All @@ -79,17 +79,17 @@ default Optional<FamilieHendelseGrunnlagDto> hentFamiliehendelseHvisFinnes(List<
() -> new IllegalStateException("Klarte ikke hente Tilkjent ytelse engangsstønad for behandling: " + hentBehandlingId(resourceLinker)));
}

default TilkjentYtelseMedUttaksplanDto hentTilkjentYtelseForeldrepenger(List<BehandlingResourceLink> resourceLinker) {
return hentTilkjentYtelseForeldrepengerHvisFinnes(resourceLinker).orElseThrow(() -> {
default TilkjentYtelseDagytelseDto hentTilkjentYtelseDagytelse(List<BehandlingResourceLink> resourceLinker) {
return hentTilkjentYtelseDagytelseHvisFinnes(resourceLinker).orElseThrow(() -> {
throw new IllegalStateException("Klarte ikke hente Tilkjent ytelse foreldrepenger for behandling: " + hentBehandlingId(resourceLinker));
});
}

default Optional<TilkjentYtelseMedUttaksplanDto> hentTilkjentYtelseForeldrepengerHvisFinnes(List<BehandlingResourceLink> resourceLinker) {
default Optional<TilkjentYtelseDagytelseDto> hentTilkjentYtelseDagytelseHvisFinnes(List<BehandlingResourceLink> resourceLinker) {
return resourceLinker.stream()
.filter(dto -> "beregningsresultat-dagytelse".equals(dto.getRel()))
.filter(dto -> "tilkjentytelse-dagytelse".equals(dto.getRel()))
.findFirst()
.flatMap(link -> hentDtoFraLink(link, TilkjentYtelseMedUttaksplanDto.class));
.flatMap(link -> hentDtoFraLink(link, TilkjentYtelseDagytelseDto.class));
}

default Optional<SoknadBackendDto> hentSoknadHvisFinnes(List<BehandlingResourceLink> resourceLinker) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.UnaryOperator;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.AktivitetStatus;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseAndelDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseEngangsstønadDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelseMedUttaksplanDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.tilkjentytelse.TilkjentYtelsePeriodeDto;
import no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.mapper.sortering.PeriodeComparator;
import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseAndel;
import no.nav.foreldrepenger.fpformidling.tilkjentytelse.TilkjentYtelseEngangsstønad;
Expand All @@ -18,6 +16,7 @@
import no.nav.foreldrepenger.fpformidling.typer.ArbeidsforholdRef;
import no.nav.foreldrepenger.fpformidling.typer.DatoIntervall;
import no.nav.foreldrepenger.fpformidling.virksomhet.Arbeidsgiver;
import no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse.TilkjentYtelseDagytelseDto;

public class TilkjentYtelseDtoMapper {

Expand All @@ -29,31 +28,32 @@ private TilkjentYtelseDtoMapper() {
return new TilkjentYtelseEngangsstønad(dto.beregnetTilkjentYtelse());
}

public static TilkjentYtelseForeldrepenger mapTilkjentYtelseFPFraDto(TilkjentYtelseMedUttaksplanDto dto, UnaryOperator<String> hentNavn) {
var tilkjentYtelsePerioder = Arrays.stream(dto.getPerioder())
public static TilkjentYtelseForeldrepenger mapTilkjentYtelseDagytelseFraDto(TilkjentYtelseDagytelseDto dto, UnaryOperator<String> hentNavn) {
var tilkjentYtelsePerioder = dto.perioder()
.stream()
.map(p -> mapPeriodeFraDto(p, hentNavn))
.sorted(PeriodeComparator.TILKJENTYTELSERESULTAT)
.toList();
return TilkjentYtelseForeldrepenger.ny().leggTilPerioder(tilkjentYtelsePerioder).build();
}


private static TilkjentYtelsePeriode mapPeriodeFraDto(TilkjentYtelsePeriodeDto dto, UnaryOperator<String> hentNavn) {
private static TilkjentYtelsePeriode mapPeriodeFraDto(TilkjentYtelseDagytelseDto.@Valid @NotNull TilkjentYtelsePeriodeDto dto, UnaryOperator<String> hentNavn) {
List<TilkjentYtelseAndel> andelListe = new ArrayList<>();
for (var tilkjentYtelseAndelDto : dto.getAndeler()) {
for (var tilkjentYtelseAndelDto : dto.andeler()) {
andelListe.add(mapAndelFraDto(tilkjentYtelseAndelDto, hentNavn));
}
return TilkjentYtelsePeriode.ny()
.medDagsats((long) dto.getDagsats())
.medPeriode(DatoIntervall.fraOgMedTilOgMed(dto.getFom(), dto.getTom()))
.medDagsats((long) dto.dagsats())
.medPeriode(DatoIntervall.fraOgMedTilOgMed(dto.fom(), dto.tom()))
.medAndeler(andelListe)
.build();
}

//Fpsak slår sammen andeler i dto, så vi må eventuelt splitte dem opp igjen
private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseAndelDto dto, UnaryOperator<String> hentNavn) {
private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseDagytelseDto.@Valid @NotNull TilkjentYtelseAndelDto dto, UnaryOperator<String> hentNavn) {
return TilkjentYtelseAndel.ny()
.medAktivitetStatus(dto.aktivitetStatus())
.medAktivitetStatus(mapAktivitetstatusFraKontrakt(dto.aktivitetstatus()))
.medArbeidsforholdRef(
dto.arbeidsforholdId() != null && !dto.arbeidsforholdId().isEmpty() ? ArbeidsforholdRef.ref(dto.arbeidsforholdId()) : null)
.medArbeidsgiver(mapArbeidsgiverFraDto(dto, hentNavn))
Expand All @@ -65,14 +65,32 @@ private static TilkjentYtelseAndel mapAndelFraDto(TilkjentYtelseAndelDto dto, Un
.build();
}

private static Arbeidsgiver mapArbeidsgiverFraDto(TilkjentYtelseAndelDto dto, UnaryOperator<String> hentNavn) {
if (!AktivitetStatus.ARBEIDSTAKER.equals(dto.aktivitetStatus()) || dto.arbeidsgiverReferanse() == null) {
private static AktivitetStatus mapAktivitetstatusFraKontrakt(TilkjentYtelseDagytelseDto.Aktivitetstatus aktivitetstatus) {
return switch(aktivitetstatus) {
case ARBEIDSAVKLARINGSPENGER -> AktivitetStatus.ARBEIDSAVKLARINGSPENGER;
case ARBEIDSTAKER -> AktivitetStatus.ARBEIDSTAKER;
case DAGPENGER -> AktivitetStatus.DAGPENGER;
case FRILANSER -> AktivitetStatus.FRILANSER;
case MILITÆR_ELLER_SIVIL -> AktivitetStatus.MILITÆR_ELLER_SIVIL;
case SELVSTENDIG_NÆRINGSDRIVENDE -> AktivitetStatus.SELVSTENDIG_NÆRINGSDRIVENDE;
case BRUKERS_ANDEL -> AktivitetStatus.BRUKERS_ANDEL;
case KUN_YTELSE -> AktivitetStatus.KUN_YTELSE;
case TTLSTØTENDE_YTELSE -> AktivitetStatus.TTLSTØTENDE_YTELSE;
case VENTELØNN_VARTPENGER -> AktivitetStatus.VENTELØNN_VARTPENGER;
case KOMBINERT_AT_FL, KOMBINERT_AT_SN, KOMBINERT_FL_SN,
KOMBINERT_AT_FL_SN, UDEFINERT -> throw new IllegalStateException("Ugyldig aktivitetstatus for tilkjent ytelse andel: " + aktivitetstatus);
};
}


private static Arbeidsgiver mapArbeidsgiverFraDto(TilkjentYtelseDagytelseDto.@Valid @NotNull TilkjentYtelseAndelDto dto, UnaryOperator<String> hentNavn) {
if (!TilkjentYtelseDagytelseDto.Aktivitetstatus.ARBEIDSTAKER.equals(dto.aktivitetstatus()) || dto.arbeidsgiverReferanse() == null) {
return null;
}
return new Arbeidsgiver(dto.arbeidsgiverReferanse(), hentNavn.apply(dto.arbeidsgiverReferanse()));
}

private static int summerDagsats(TilkjentYtelseAndelDto dto) {
private static int summerDagsats(TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto dto) {
var sum = 0;
if (dto.tilSoker() != null) {
sum += dto.tilSoker();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ void before() {
when(domeneobjektProvider.hentFagsakBackend(any(Behandling.class))).thenReturn(opprettFagsakBackend());
when(domeneobjektProvider.hentMottatteDokumenter(any(Behandling.class))).thenReturn(opprettMottattDokument());
when(domeneobjektProvider.hentFamiliehendelse(any(Behandling.class))).thenReturn(opprettFamiliehendelse());
when(domeneobjektProvider.hentTilkjentYtelseFPHvisFinnes(any(Behandling.class))).thenReturn(opprettTilkjentYtelseFP());
when(domeneobjektProvider.hentTilkjentYtelseDagytelseHvisFinnes(any(Behandling.class))).thenReturn(opprettTilkjentYtelseFP());
when(domeneobjektProvider.hentBeregningsgrunnlagHvisFinnes(any(Behandling.class))).thenReturn(opprettBeregningsgrunnlag());
lenient().when(domeneobjektProvider.hentForeldrepengerUttakHvisFinnes(any(Behandling.class))).thenReturn(opprettUttaksresultat());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void before() {
when(domeneobjektProvider.hentFamiliehendelse(any(Behandling.class))).thenReturn(opprettFamiliehendelse());
when(domeneobjektProvider.hentBeregningsgrunnlagHvisFinnes(any(Behandling.class))).thenReturn(opprettBeregningsgrunnlag());
when(domeneobjektProvider.hentSvangerskapspengerUttakHvisFinnes(any(Behandling.class))).thenReturn(opprettUttaksresultat());
when(domeneobjektProvider.hentTilkjentYtelseFPHvisFinnes(any(Behandling.class))).thenReturn(opprettTilkjentYtelse());
when(domeneobjektProvider.hentTilkjentYtelseDagytelseHvisFinnes(any(Behandling.class))).thenReturn(opprettTilkjentYtelse());
}

@Test
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
<!-- Felles artefakter -->
<felles.version>5.1.1</felles.version>
<prosesstask.version>4.0.0</prosesstask.version>
<kontrakter.version>7.1.1</kontrakter.version>
<kontrakter.version>7.1.3</kontrakter.version>

<!-- Eksterne -->
<handlebars.version>4.3.1</handlebars.version>
Expand Down

0 comments on commit 6fb6c5a

Please sign in to comment.