Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sende ytelse/behandlingsnummer til PDL #2438

Merged
merged 1 commit into from
Oct 23, 2023
Merged
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 @@ -2,7 +2,6 @@

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

import no.nav.foreldrepenger.fpformidling.behandling.Behandling;
import no.nav.foreldrepenger.fpformidling.brevproduksjon.tjenester.DomeneobjektProvider;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
Expand Down Expand Up @@ -50,7 +49,9 @@ private DokumentMalType utledDokumentType(FagsakYtelseType ytelseType, Behandlin
}

private Behandling hentBehandling(DokumentHendelse dokumentHendelse) {
return domeneobjektProvider.hentBehandling(dokumentHendelse.getBehandlingUuid());
var behandling = domeneobjektProvider.hentBehandling(dokumentHendelse.getBehandlingUuid());
domeneobjektProvider.hentFagsakBackend(behandling);
return behandling;
}

private DokumentMalType utledDokumentMal(Behandling behandling, DokumentHendelse dokumentHendelse) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

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

import no.nav.foreldrepenger.fpformidling.aktør.Personinfo;
import no.nav.foreldrepenger.fpformidling.behandling.Behandling;
import no.nav.foreldrepenger.fpformidling.brevproduksjon.tjenester.DomeneobjektProvider;
import no.nav.foreldrepenger.fpformidling.dokumentdata.DokumentData;
import no.nav.foreldrepenger.fpformidling.dokumentdata.DokumentFelles;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.integrasjon.organisasjon.Virksomhet;
import no.nav.foreldrepenger.fpformidling.integrasjon.organisasjon.VirksomhetTjeneste;
import no.nav.foreldrepenger.fpformidling.integrasjon.pdl.PersonAdapter;
Expand Down Expand Up @@ -39,35 +39,38 @@ public DokumentFellesDataMapper(PersonAdapter personAdapter, DomeneobjektProvide

void opprettDokumentDataForBehandling(Behandling behandling, DokumentData dokumentData) {

final var søkersAktørId = domeneobjektProvider.hentFagsakBackend(behandling).getAktørId();
final var fagsak = domeneobjektProvider.hentFagsakBackend(behandling);
final var søkersAktørId = fagsak.getAktørId();
final var ytelseType = fagsak.getYtelseType();

var vergeOpt = domeneobjektProvider.hentVerge(behandling);
if (vergeOpt.isEmpty()) {
opprettDokumentDataForMottaker(behandling, dokumentData, søkersAktørId, søkersAktørId);
opprettDokumentDataForMottaker(behandling, dokumentData, ytelseType, søkersAktørId, søkersAktørId);
return;
}

// kopien går til søker
opprettDokumentDataForMottaker(behandling, dokumentData, søkersAktørId, søkersAktørId, DokumentFelles.Kopi.JA);
opprettDokumentDataForMottaker(behandling, dokumentData, ytelseType, søkersAktørId, søkersAktørId, DokumentFelles.Kopi.JA);

// orginalen går til verge
var verge = vergeOpt.get();
if (verge.aktoerId() != null) {
var vergesAktørId = new AktørId(verge.aktoerId());
opprettDokumentDataForMottaker(behandling, dokumentData, vergesAktørId, søkersAktørId, DokumentFelles.Kopi.NEI);
opprettDokumentDataForMottaker(behandling, dokumentData, ytelseType, vergesAktørId, søkersAktørId, DokumentFelles.Kopi.NEI);
} else if (verge.organisasjonsnummer() != null) {
opprettDokumentDataForOrganisasjonsMottaker(behandling, dokumentData, verge, søkersAktørId, DokumentFelles.Kopi.NEI);
opprettDokumentDataForOrganisasjonsMottaker(behandling, dokumentData, ytelseType, verge, søkersAktørId, DokumentFelles.Kopi.NEI);
}
}

private void opprettDokumentDataForOrganisasjonsMottaker(Behandling behandling,
DokumentData dokumentData,
FagsakYtelseType ytelseType,
Verge verge,
AktørId aktørIdBruker,
DokumentFelles.Kopi erKopi) {
var virksomhet = getVirksomhet(verge);

var personinfoBruker = personAdapter.hentBrukerForAktør(aktørIdBruker)
var personinfoBruker = personAdapter.hentBrukerForAktør(ytelseType, aktørIdBruker)
.orElseThrow(() -> new TekniskException("FPFORMIDLING-109013",
String.format("Fant ikke fødselsnummer for aktørId: %s. Kan ikke bestille dokument", aktørIdBruker)));

Expand All @@ -78,20 +81,21 @@ private Virksomhet getVirksomhet(Verge verge) {
return virksomhetTjeneste.getOrganisasjon(verge.organisasjonsnummer());
}

private void opprettDokumentDataForMottaker(Behandling behandling, DokumentData dokumentData, AktørId aktørIdMottaker, AktørId aktørIdBruker) {

opprettDokumentDataForMottaker(behandling, dokumentData, aktørIdMottaker, aktørIdBruker, null);
private void opprettDokumentDataForMottaker(Behandling behandling, DokumentData dokumentData, FagsakYtelseType ytelseType,
AktørId aktørIdMottaker, AktørId aktørIdBruker) {
opprettDokumentDataForMottaker(behandling, dokumentData, ytelseType, aktørIdMottaker, aktørIdBruker, null);
}

private void opprettDokumentDataForMottaker(Behandling behandling,
DokumentData dokumentData,
FagsakYtelseType ytelseType,
AktørId aktørIdMottaker,
AktørId aktørIdBruker,
DokumentFelles.Kopi erKopi) {

var personinfoMottaker = personAdapter.hentBrukerForAktør(aktørIdMottaker)
var personinfoMottaker = personAdapter.hentBrukerForAktør(ytelseType, aktørIdMottaker)
.orElseThrow(() -> new TekniskException("FPFORMIDLING-119013", String.format(FANT_IKKE_BRUKER, aktørIdMottaker)));
var personinfoBruker = personAdapter.hentBrukerForAktør(aktørIdBruker)
var personinfoBruker = personAdapter.hentBrukerForAktør(ytelseType, aktørIdBruker)
.orElseThrow(() -> new TekniskException("FPFORMIDLING-109013", String.format(FANT_IKKE_BRUKER, aktørIdBruker)));

buildDokumentFellesPerson(behandling, dokumentData, personinfoBruker, personinfoMottaker, erKopi);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

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

import no.nav.foreldrepenger.fpformidling.aktør.Personinfo;
import no.nav.foreldrepenger.fpformidling.behandling.Behandling;
import no.nav.foreldrepenger.fpformidling.brevproduksjon.mapper.felles.BrevParametere;
Expand All @@ -19,6 +18,7 @@
import no.nav.foreldrepenger.fpformidling.dokumentdata.DokumentFelles;
import no.nav.foreldrepenger.fpformidling.dokumentdata.DokumentMalTypeRef;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakBackend;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.familiehendelse.FamilieHendelse;
import no.nav.foreldrepenger.fpformidling.hendelser.DokumentHendelse;
import no.nav.foreldrepenger.fpformidling.integrasjon.dokgen.dto.EngangsstønadAvslagDokumentdata;
Expand Down Expand Up @@ -93,14 +93,14 @@ public String getTemplateNavn() {

String utledRelasjonsRolle(FagsakBackend fagsak) {
if (!RelasjonsRolleType.erRegistrertForeldre(fagsak.getRelasjonsRolleType())) {
return hentKjønnOgMapRelasjonsrolle(fagsak.getAktørId());
return hentKjønnOgMapRelasjonsrolle(fagsak.getYtelseType(), fagsak.getAktørId());
} else {
return fagsak.getRelasjonsRolleType().toString();
}
}

private String hentKjønnOgMapRelasjonsrolle(AktørId aktørId) {
var kjønn = personAdapter.hentBrukerForAktør(aktørId).map(Personinfo::getKjønn).orElseThrow();
private String hentKjønnOgMapRelasjonsrolle(FagsakYtelseType ytelseType, AktørId aktørId) {
var kjønn = personAdapter.hentBrukerForAktør(ytelseType, aktørId).map(Personinfo::getKjønn).orElseThrow();
return NavBrukerKjønn.MANN.equals(kjønn) ? RelasjonsRolleType.FARA.getKode() : RelasjonsRolleType.MEDMOR.getKode();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

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

import no.nav.foreldrepenger.fpformidling.behandling.Behandling;
import no.nav.foreldrepenger.fpformidling.behandling.innsyn.Innsyn;
import no.nav.foreldrepenger.fpformidling.beregningsgrunnlag.Beregningsgrunnlag;
Expand Down Expand Up @@ -64,6 +63,7 @@ public FagsakBackend hentFagsakBackend(Behandling behandling) {
var fagsakDto = behandlingRestKlient.hentFagsak(behandling.getResourceLinker());
var fagsak = FagsakBackend.ny()
.medSaksnummer(fagsakDto.saksnummer())
.medFagsakYtelseType(fagsakDto.fagsakYtelseType())
.medBrukerRolle(fagsakDto.relasjonsRolleType())
.medAktørId(new AktørId(fagsakDto.aktørId()))
.medDekningsgrad(fagsakDto.dekningsgrad())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

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

import no.nav.foreldrepenger.fpformidling.aktør.Personinfo;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.inntektarbeidytelse.OrganisasjonsNummerValidator;
import no.nav.foreldrepenger.fpformidling.integrasjon.organisasjon.VirksomhetTjeneste;
import no.nav.foreldrepenger.fpformidling.integrasjon.pdl.PersonAdapter;
Expand Down Expand Up @@ -76,7 +76,7 @@ private Optional<String> hentVirksomhetNavn(String orgNummer) {

private Optional<Personinfo> hentInformasjonFraTps(String arbeidsgiver) {
try {
return personAdapter.hentBrukerForAktør(new AktørId(arbeidsgiver));
return personAdapter.hentBrukerForAktør(FagsakYtelseType.FORELDREPENGER, new AktørId(arbeidsgiver));
} catch (VLException | IllegalArgumentException feil) {
// Ønsker ikke å gi GUI problemer ved å eksponere exceptions
return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.foreldrepenger.fpformidling.integrasjon.fpsak.dto.fagsak;

import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.personopplysning.RelasjonsRolleType;

public record FagsakDto(String saksnummer, RelasjonsRolleType relasjonsRolleType, String aktørId, Integer dekningsgrad) {
public record FagsakDto(String saksnummer, FagsakYtelseType fagsakYtelseType, RelasjonsRolleType relasjonsRolleType, String aktørId, Integer dekningsgrad) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

import java.util.Optional;

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

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

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import no.nav.foreldrepenger.fpformidling.aktør.Personinfo;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.typer.AktørId;
import no.nav.vedtak.felles.integrasjon.person.PdlException;

Expand All @@ -28,10 +28,10 @@ public PersonAdapter(PersondataTjeneste persondataTjeneste) {
this.persondataTjeneste = persondataTjeneste;
}

public Optional<Personinfo> hentBrukerForAktør(AktørId aktørId) {
public Optional<Personinfo> hentBrukerForAktør(FagsakYtelseType ytelseType, AktørId aktørId) {
try {
var funnetFnr = persondataTjeneste.hentPersonIdentForAktørId(aktørId);
return funnetFnr.map(pi -> persondataTjeneste.hentPersoninfo(aktørId, pi));
return funnetFnr.map(pi -> persondataTjeneste.hentPersoninfo(ytelseType, aktørId, pi));
} catch (PdlException pdlException) {
LOG.error("Fikk feil ved kall til PDL. Detaljer: type={}, cause={}, policy={}", pdlException.getDetails().type(),
pdlException.getDetails().cause(), pdlException.getDetails().policy());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@

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

import no.nav.foreldrepenger.fpformidling.aktør.Personinfo;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.personopplysning.NavBrukerKjønn;
import no.nav.foreldrepenger.fpformidling.typer.AktørId;
import no.nav.foreldrepenger.fpformidling.typer.PersonIdent;
Expand Down Expand Up @@ -88,7 +88,7 @@ public PersondataTjeneste(Persondata pdlKlient) {
return ident;
}

public Personinfo hentPersoninfo(AktørId aktørId, PersonIdent personIdent) {
public Personinfo hentPersoninfo(FagsakYtelseType ytelseType, AktørId aktørId, PersonIdent personIdent) {

var query = new HentPersonQueryRequest();
query.setIdent(aktørId.getId());
Expand All @@ -98,7 +98,8 @@ public Personinfo hentPersoninfo(AktørId aktørId, PersonIdent personIdent) {
.kjoenn(new KjoennResponseProjection().kjoenn())
.folkeregisterpersonstatus(new FolkeregisterpersonstatusResponseProjection().forenkletStatus());

var person = pdlKlient.hentPerson(query, projection);
var ytelse = utledYtelse(ytelseType);
var person = pdlKlient.hentPerson(ytelse, query, projection);

var fødselsdato = person.getFoedsel()
.stream()
Expand Down Expand Up @@ -148,4 +149,14 @@ private static String mapNavn(Navn navn) {
}
return KjoennType.KVINNE.equals(kode) ? NavBrukerKjønn.KVINNE : NavBrukerKjønn.UDEFINERT;
}

private static Persondata.Ytelse utledYtelse(FagsakYtelseType ytelseType) {
if (FagsakYtelseType.ENGANGSTØNAD.equals(ytelseType)) {
return Persondata.Ytelse.ENGANGSSTØNAD;
} else if (FagsakYtelseType.SVANGERSKAPSPENGER.equals(ytelseType)) {
return Persondata.Ytelse.SVANGERSKAPSPENGER;
} else {
return Persondata.Ytelse.FORELDREPENGER;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ void skal_utlede_riktig_dokument_type_hvis_fritekst_er_valgt() {
verify(dokgenBrevproduksjonTjeneste).bestillBrev(dokumentHendelse, behandling, DokumentMalType.FRITEKSTBREV, DokumentMalType.FORELDREPENGER_INNVILGELSE);
verify(dokumentMalUtleder).utledDokumentType(behandling, dokumentHendelse.getYtelseType(), true);
verify(dokumentMalUtleder).utledDokumentmal(behandling, dokumentHendelse);
verify(domeneobjektProvider).hentFagsakBackend(behandling);

verifyNoMoreInteractions(dokumentMalUtleder, dokgenBrevproduksjonTjeneste, domeneobjektProvider);
}
Expand All @@ -181,6 +182,7 @@ void skal_ikke_utlede_riktig_dokument_type_om_ikke_fritekst() {
verify(dokgenBrevproduksjonTjeneste).bestillBrev(dokumentHendelse, behandling, DokumentMalType.FORELDREPENGER_INNVILGELSE, DokumentMalType.FORELDREPENGER_INNVILGELSE);
verify(dokumentMalUtleder).utledDokumentmal(behandling, dokumentHendelse);
verify(dokumentMalUtleder, never()).utledDokumentType(behandling, dokumentHendelse.getYtelseType(), false);
verify(domeneobjektProvider).hentFagsakBackend(behandling);

verifyNoMoreInteractions(dokumentMalUtleder, dokgenBrevproduksjonTjeneste, domeneobjektProvider);
}
Expand All @@ -204,6 +206,7 @@ void skal_ikke_utlede_riktig_dokument_type_om_ikke_fritekst() {
verify(dokgenBrevproduksjonTjeneste).forhåndsvisBrev(dokumentHendelse, behandling, DokumentMalType.FORELDREPENGER_ANNULLERT);
verify(dokumentMalUtleder).utledDokumentmal(behandling, dokumentHendelse);
verify(dokumentMalUtleder, never()).utledDokumentType(behandling, dokumentHendelse.getYtelseType(), false);
verify(domeneobjektProvider).hentFagsakBackend(behandling);

verifyNoMoreInteractions(dokumentMalUtleder, dokgenBrevproduksjonTjeneste, domeneobjektProvider);
}
Expand Down Expand Up @@ -238,15 +241,15 @@ void skal_ikke_utlede_riktig_dokument_type_om_ikke_fritekst() {

private Personinfo mockPdl(boolean harVerge) {
var personinfoSøker = Personinfo.getbuilder(SØKER).medPersonIdent(SØKER_FNR).medNavn(NAVN).medNavBrukerKjønn(NavBrukerKjønn.MANN).build();
lenient().when(personAdapter.hentBrukerForAktør(eq(SØKER))).thenReturn(Optional.of(personinfoSøker));
lenient().when(personAdapter.hentBrukerForAktør(any(), eq(SØKER))).thenReturn(Optional.of(personinfoSøker));

if (harVerge) {
var personinfoVerge = Personinfo.getbuilder(VERGE)
.medPersonIdent(VERGE_FNR)
.medNavn("Verge Vergesen")
.medNavBrukerKjønn(NavBrukerKjønn.KVINNE)
.build();
lenient().when(personAdapter.hentBrukerForAktør(eq(VERGE))).thenReturn(Optional.of(personinfoVerge));
lenient().when(personAdapter.hentBrukerForAktør(any(), eq(VERGE))).thenReturn(Optional.of(personinfoVerge));
}
return personinfoSøker;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ void setUp() {
.medNavn("Nav Navesen")
.medNavBrukerKjønn(NavBrukerKjønn.KVINNE)
.build();
lenient().when(personAdapter.hentBrukerForAktør(any())).thenReturn(Optional.of(personinfo));
lenient().when(personAdapter.hentBrukerForAktør(any(), any())).thenReturn(Optional.of(personinfo));

engangsstønadAvslagDokumentdataMapper = new EngangsstønadAvslagDokumentdataMapper(DatamapperTestUtil.getBrevParametere(),
domeneobjektProvider, personAdapter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public class FagsakBackend {

private AktørId aktørId;
private Saksnummer saksnummer;
private FagsakYtelseType ytelseType;
private RelasjonsRolleType brukerRolle;
private Integer dekningsgrad;

Expand All @@ -22,6 +23,10 @@ public Saksnummer getSaksnummer() {
return saksnummer;
}

public FagsakYtelseType getYtelseType() {
return ytelseType;
}

public RelasjonsRolleType getRelasjonsRolleType() {
return brukerRolle;
}
Expand Down Expand Up @@ -51,6 +56,11 @@ public Builder medSaksnummer(String saksnummer) {
return this;
}

public Builder medFagsakYtelseType(FagsakYtelseType ytelseType) {
this.kladd.ytelseType = ytelseType;
return this;
}

public Builder medAktørId(AktørId aktørId) {
this.kladd.aktørId = aktørId;
return this;
Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@
<sonar.projectKey>navikt_fp-formidling</sonar.projectKey>

<!-- Felles artefakter -->
<felles.version>5.1.1</felles.version>
<felles.version>5.1.3</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
Loading