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

TFP-5592: Journalfører fritekstbrev med original brevkode. #2419

Merged
merged 2 commits into from
Sep 28, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
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 @@ -7,6 +7,7 @@
import no.nav.foreldrepenger.fpformidling.brevproduksjon.tjenester.DomeneobjektProvider;
import no.nav.foreldrepenger.fpformidling.hendelser.DokumentHendelse;
import no.nav.foreldrepenger.fpformidling.kodeverk.kodeverdi.DokumentMalType;
import no.nav.foreldrepenger.fpformidling.vedtak.Vedtaksbrev;

@ApplicationScoped
public class BrevBestillerTjeneste {
Expand Down Expand Up @@ -37,7 +38,13 @@ public byte[] forhandsvisBrev(DokumentHendelse dokumentHendelse) {
public void bestillBrev(DokumentHendelse dokumentHendelse) {
var behandling = hentBehandling(dokumentHendelse);
var dokumentMal = utledDokumentMal(behandling, dokumentHendelse);
dokgenBrevproduksjonTjeneste.bestillBrev(dokumentHendelse, behandling, dokumentMal);
var dokumentType = utledDokumentType(dokumentHendelse, behandling, dokumentMal);
dokgenBrevproduksjonTjeneste.bestillBrev(dokumentHendelse, behandling, dokumentMal, dokumentType);
}

private DokumentMalType utledDokumentType(DokumentHendelse dokumentHendelse, Behandling behandling, DokumentMalType dokumentMal) {
return Vedtaksbrev.FRITEKST.equals(dokumentHendelse.getVedtaksbrev()) ? dokumentMalUtleder.utledDokumentType(behandling,
dokumentHendelse.getYtelseType()) : dokumentMal;
}

private Behandling hentBehandling(DokumentHendelse dokumentHendelse) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskTjeneste;
import no.nav.vedtak.mapper.json.DefaultJsonMapper;

import static io.micrometer.core.instrument.Metrics.counter;

@ApplicationScoped
public class DokgenBrevproduksjonTjeneste {
private static final Logger LOG = LoggerFactory.getLogger(DokgenBrevproduksjonTjeneste.class);
Expand Down Expand Up @@ -75,12 +77,12 @@ public DokgenBrevproduksjonTjeneste(DokumentFellesDataMapper dokumentFellesDataM
return genererDokument(dokumentHendelse, behandling, dokumentMal, dokumentData.getFørsteDokumentFelles(), utkast);
}

public void bestillBrev(DokumentHendelse dokumentHendelse, Behandling behandling, DokumentMalType dokumentMal) {
var bestill = BestillingType.BESTILL;
var dokumentData = lagreDokumentDataFor(behandling, dokumentMal, bestill);
public void bestillBrev(DokumentHendelse dokumentHendelse, Behandling behandling, DokumentMalType dokumentMal, DokumentMalType originalDokumentType) {
var bestillingType = BestillingType.BESTILL;
var dokumentData = lagreDokumentDataFor(behandling, dokumentMal, bestillingType);
var teller = 0;
for (var dokumentFelles : dokumentData.getDokumentFelles()) {
var brev = genererDokument(dokumentHendelse, behandling, dokumentMal, dokumentFelles, bestill);
var brev = genererDokument(dokumentHendelse, behandling, dokumentMal, dokumentFelles, bestillingType);

var unikBestillingsUuidPerDokFelles = dokumentHendelse.getBestillingUuid().toString();
if (teller > 0) {
Expand All @@ -92,7 +94,8 @@ public void bestillBrev(DokumentHendelse dokumentHendelse, Behandling behandling
var response = opprettJournalpostTjeneste.journalførUtsendelse(brev, dokumentMal, dokumentFelles, dokumentHendelse,
behandling.getFagsakBackend().getSaksnummer(), !innsynMedVedlegg,
behandling.getBehandlingsresultat() != null ? behandling.getBehandlingsresultat().getOverskrift() : null,
unikBestillingsUuidPerDokFelles) // NoSonar
unikBestillingsUuidPerDokFelles,
originalDokumentType) // NoSonar
;

var journalpostId = new JournalpostId(response.journalpostId());
Expand All @@ -103,8 +106,10 @@ public void bestillBrev(DokumentHendelse dokumentHendelse, Behandling behandling
leggTilVedleggOgFerdigstillForsendelse(dokumentHendelse.getBehandlingUuid(), journalpostId);
}

distribuerBrevOgLagHistorikk(dokumentHendelse, dokumentMal, response, journalpostId, innsynMedVedlegg,
dokumentFelles.getSaksnummer().getVerdi(), unikBestillingsUuidPerDokFelles);
distribuerBrevOgLagHistorikk(dokumentHendelse, response, journalpostId, innsynMedVedlegg,
dokumentFelles.getSaksnummer().getVerdi(), unikBestillingsUuidPerDokFelles, originalDokumentType);

counter("brev_distribuert", "malType", dokumentMal.getKode(), "brevType", originalDokumentType.getKode()).increment();
}
}

Expand Down Expand Up @@ -152,18 +157,18 @@ private DokumentData lagDokumentData(Behandling behandling, DokumentMalType doku
}

private void distribuerBrevOgLagHistorikk(DokumentHendelse dokumentHendelse,
DokumentMalType dokumentMal,
OpprettJournalpostResponse response,
JournalpostId journalpostId,
boolean innsynMedVedlegg,
String saksnummer,
String unikBestillingsId) {
String unikBestillingsId,
DokumentMalType originalDokumentType) {
var taskGruppe = new ProsessTaskGruppe();
taskGruppe.addNesteSekvensiell(opprettDistribuerBrevTask(journalpostId, innsynMedVedlegg, dokumentHendelse.getBehandlingUuid(),
DistribusjonstypeUtleder.utledFor(dokumentMal), saksnummer, unikBestillingsId));
DistribusjonstypeUtleder.utledFor(originalDokumentType), saksnummer, unikBestillingsId));

taskGruppe.addNesteSekvensiell(
opprettPubliserHistorikkTask(dokumentHendelse.getBehandlingUuid(), dokumentHendelse.getBestillingUuid(), dokumentMal,
opprettPubliserHistorikkTask(dokumentHendelse.getBehandlingUuid(), dokumentHendelse.getBestillingUuid(), originalDokumentType,
response.journalpostId(), response.dokumenter().get(0).dokumentInfoId()));
taskGruppe.setCallIdFraEksisterende();
taskTjeneste.lagre(taskGruppe);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,23 +103,27 @@ private TekniskException ukjentMalException(Behandling behandling) {
}

private DokumentMalType utledVedtaksbrev(Behandling behandling, DokumentHendelse hendelse) {
if (!Objects.equals(hendelse.getVedtaksbrev(), Vedtaksbrev.AUTOMATISK) && Objects.equals(behandling.getBehandlingsresultat().getVedtaksbrev(),
Vedtaksbrev.FRITEKST)) {
if (!Objects.equals(Vedtaksbrev.AUTOMATISK, hendelse.getVedtaksbrev())
&& Objects.equals(Vedtaksbrev.FRITEKST, behandling.getBehandlingsresultat().getVedtaksbrev())) {
return DokumentMalType.FRITEKSTBREV;
}
return utledDokumentType(behandling, hendelse.getYtelseType());
}

DokumentMalType utledDokumentType(Behandling behandling, FagsakYtelseType ytelseType) {
if (BehandlingType.KLAGE.equals(behandling.getBehandlingType())) {
return mapKlageBrev(behandling);
} else if (erRevurderingMedUendretUtfall(behandling)) {
return DokumentMalType.INGEN_ENDRING;
} else if (FagsakYtelseType.FORELDREPENGER.equals(hendelse.getYtelseType())) {
} else if (FagsakYtelseType.FORELDREPENGER.equals(ytelseType)) {
return mapForeldrepengerVedtaksbrev(behandling);
} else if (FagsakYtelseType.ENGANGSTØNAD.equals(hendelse.getYtelseType())) {
} else if (FagsakYtelseType.ENGANGSTØNAD.equals(ytelseType)) {
return mapEngangstønadVedtaksbrev(behandling);
} else if (FagsakYtelseType.SVANGERSKAPSPENGER.equals(hendelse.getYtelseType())) {
} else if (FagsakYtelseType.SVANGERSKAPSPENGER.equals(ytelseType)) {
return mapSvangerskapspengerVedtaksbrev(behandling);
}
throw new TekniskException("FPFORMIDLING-666916",
String.format("Ingen brevmal for ytelse %s for behandling %s.", hendelse.getYtelseType().getKode(), behandling.getUuid().toString()));
String.format("Ingen brevmal for ytelse %s for behandling %s.", ytelseType.getKode(), behandling.getUuid().toString()));
}

private boolean erRevurderingMedUendretUtfall(Behandling behandling) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
@ProsessTask(value = "formidling.opprettOppgave", maxFailedRuns = 2)
public class OpprettOppgaveTask implements ProsessTaskHandler {

private static final String OPPGAVEBESKRIVELSE = "Bruker har ukjent adresse. Kunne ikke sende brev. Send brev iht rutine.";
private static final String OPPGAVEBESKRIVELSE = "Brukeren har en ukjent adresse, og som følge av dette har det ikke vært mulig å sende brev til vedkommende. Vi ber om at det sendes brevet i henhold til gjeldende prosedyrer for slike tilfeller.";
mrsladek marked this conversation as resolved.
Show resolved Hide resolved
private final OppgaverTjeneste oppgaverTjeneste;
private final DomeneobjektProvider domeneobjektProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

import java.util.List;

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.dokumentdata.DokumentFelles;
import no.nav.foreldrepenger.fpformidling.fagsak.FagsakYtelseType;
import no.nav.foreldrepenger.fpformidling.hendelser.DokumentHendelse;
Expand Down Expand Up @@ -48,16 +47,16 @@ public OpprettJournalpostTjeneste(DokArkiv dokArkivKlient) {
Saksnummer saksnummer,
boolean ferdigstill,
String overskriftVedFritekstBrev,
String unikReferanse) {
String unikReferanse, DokumentMalType originalDokumentType) {
LOG.info("Starter journalføring av brev for behandling {} med malkode {}", dokumentHendelse.getBehandlingUuid(), dokumentMalType.getKode());

try {
var requestBuilder = lagRequestBuilder(brev, dokumentMalType, dokumentFelles, dokumentHendelse, saksnummer, ferdigstill,
overskriftVedFritekstBrev, unikReferanse);
overskriftVedFritekstBrev, unikReferanse, originalDokumentType);
var response = dokArkivKlient.opprettJournalpost(requestBuilder.build(), ferdigstill);

if (LOG.isWarnEnabled() && ferdigstill && !response.journalpostferdigstilt()) {
LOG.warn("Journalpost {} ble ikke ferdigstilt", response.journalpostId());
LOG.warn("Journalpost {} ble ikke ferdigstilt", response.journalpostId());

}
if (LOG.isInfoEnabled()) {
Expand All @@ -74,17 +73,18 @@ public OpprettJournalpostTjeneste(DokArkiv dokArkivKlient) {
}

private OpprettJournalpostRequest.OpprettJournalpostRequestBuilder lagRequestBuilder(byte[] brev,
DokumentMalType dokumentMalType,
DokumentMalType dokumentMal,
DokumentFelles dokumentFelles,
DokumentHendelse dokumentHendelse,
Saksnummer saksnummer,
boolean ferdigstill,
String overskriftVedFritekstbrev,
String bestillingsUidMedUnikReferanse) {
var tittel = getTittel(dokumentHendelse, dokumentMalType, overskriftVedFritekstbrev);
String bestillingsUidMedUnikReferanse,
DokumentMalType originalDokumentType) {
var tittel = getTittel(dokumentHendelse, dokumentMal, overskriftVedFritekstbrev, originalDokumentType);
var dokument = DokumentInfoOpprett.builder()
.medTittel(tittel)
.medBrevkode(dokumentMalType.getKode())
.medBrevkode(originalDokumentType.getKode())
.leggTilDokumentvariant(new Dokumentvariant(Dokumentvariant.Variantformat.ARKIV, Dokumentvariant.Filtype.PDFA, brev))
.build();
var bruker = new Bruker(dokumentFelles.getSakspartId(), Bruker.BrukerIdType.FNR);
Expand All @@ -107,13 +107,16 @@ private Sak sak(Saksnummer saksnummer) {
return new Sak(saksnummer.getVerdi(), Fagsystem.FPSAK.getOffisiellKode(), Sak.Sakstype.FAGSAK);
}

private String getTittel(DokumentHendelse dokumentHendelse, DokumentMalType dokumentMalType, String overskriftVedFritekstbrev) {
private String getTittel(DokumentHendelse dokumentHendelse,
DokumentMalType dokumentMal,
String overskriftVedFritekstbrev,
DokumentMalType originalDokumentType) {
if (dokumentHendelse.getTittel() != null) {
return dokumentHendelse.getTittel();
} else if (DokumentMalType.FRITEKSTBREV.equals(dokumentMalType) && overskriftVedFritekstbrev != null) {
} else if (DokumentMalType.FRITEKSTBREV.equals(dokumentMal) && overskriftVedFritekstbrev != null) {
return overskriftVedFritekstbrev;
} else {
return dokumentMalType.getNavn();
return originalDokumentType.getNavn();
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ void beforeEach() {
// Assert
verify(dokgenRestKlient, times(2)).genererPdf(anyString(), any(Språkkode.class), any(Dokumentdata.class));
verify(opprettJournalpostTjeneste, times(2)).journalførUtsendelse(eq(BREVET), eq(DOKUMENT_MAL_TYPE), any(DokumentFelles.class),
eq(dokumentHendelse), eq(SAKSNUMMER), eq(true), eq(null), any());
eq(dokumentHendelse), eq(SAKSNUMMER), eq(true), eq(null), any(), eq(DOKUMENT_MAL_TYPE));
verify(taskTjeneste, times(2)).lagre(taskCaptor.capture());

assertThat(taskCaptor.getValue().getTasks()).hasSize(2);
Expand Down Expand Up @@ -154,7 +154,7 @@ void beforeEach() {
// Assert
verify(dokgenRestKlient, times(1)).genererPdf(anyString(), any(Språkkode.class), any(Dokumentdata.class));
verify(opprettJournalpostTjeneste, times(1)).journalførUtsendelse(eq(BREVET), eq(DOKUMENT_MAL_TYPE), any(DokumentFelles.class),
eq(dokumentHendelse), eq(SAKSNUMMER), eq(true), eq(null), any());
eq(dokumentHendelse), eq(SAKSNUMMER), eq(true), eq(null), any(), eq(DOKUMENT_MAL_TYPE));
verify(taskTjeneste, times(1)).lagre(taskCaptor.capture());
assertThat(taskCaptor.getValue().getTasks()).hasSize(2);
assertThat(taskCaptor.getValue().getTasks().get(0).task().taskType()).isEqualTo(DIST_TASK);
Expand Down Expand Up @@ -212,6 +212,6 @@ private void mockJournal(DokumentHendelse dokumentHendelse) {
var dokumentOpprettResponse = new OpprettJournalpostResponse.DokumentInfoResponse(DOKUMENT_INFO_ID);
var opprettJournalpostResponse = new OpprettJournalpostResponse(JOURNALPOST.getVerdi(), true, List.of(dokumentOpprettResponse));
when(opprettJournalpostTjeneste.journalførUtsendelse(eq(BREVET), eq(DOKUMENT_MAL_TYPE), any(DokumentFelles.class), eq(dokumentHendelse),
eq(SAKSNUMMER), eq(true), eq(null), any())).thenReturn(opprettJournalpostResponse);
eq(SAKSNUMMER), eq(true), eq(null), any(), eq(DOKUMENT_MAL_TYPE))).thenReturn(opprettJournalpostResponse);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -194,9 +194,27 @@ void utled_fritekstbrev() {
var behandling = Behandling.builder()
.medUuid(UUID.randomUUID())
.medBehandlingType(BehandlingType.REVURDERING)
.medBehandlingsresultat(Behandlingsresultat.builder().medVedtaksbrev(Vedtaksbrev.FRITEKST).build())
.medBehandlingsresultat(Behandlingsresultat.builder()
.medVedtaksbrev(Vedtaksbrev.FRITEKST)
.medBehandlingResultatType(BehandlingResultatType.FORELDREPENGER_SENERE)
.build())
.build();
assertThat(dokumentMalUtleder.utledDokumentmal(behandling, hendelse).getKode()).isEqualTo(DokumentMalType.FRITEKSTBREV.getKode());
}

@Test
void utled_riktig_brevtype_ved_fritekst() {
hendelse = standardBuilder().medGjelderVedtak(true).build();
var behandling = Behandling.builder()
.medUuid(UUID.randomUUID())
.medBehandlingType(BehandlingType.REVURDERING)
.medBehandlingsresultat(Behandlingsresultat.builder()
.medVedtaksbrev(Vedtaksbrev.FRITEKST)
.medBehandlingResultatType(BehandlingResultatType.FORELDREPENGER_ENDRET)
.build())
.build();
assertThat(dokumentMalUtleder.utledDokumentmal(behandling, hendelse).getKode()).isEqualTo(DokumentMalType.FRITEKSTBREV.getKode());
assertThat(dokumentMalUtleder.utledDokumentType(behandling, hendelse.getYtelseType()).getKode()).isEqualTo(DokumentMalType.FORELDREPENGER_INNVILGELSE.getKode());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ void setup() {

// Act
var responseMocked = opprettJournalpost.journalførUtsendelse(GEN_BREV, DokumentMalType.ENGANGSSTØNAD_INNVILGELSE, dokumentFelles,
dokumentHendelse, saksnummer, true, null, unikBestillingsId);
dokumentHendelse, saksnummer, true, null, unikBestillingsId, DokumentMalType.ENGANGSSTØNAD_INNVILGELSE);

// Assert
Mockito.verify(dokArkivKlient).opprettJournalpost(requestCaptor.capture(), eq(true));
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>no.nav.foreldrepenger.felles</groupId>
<artifactId>fp-bom</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
</parent>

<groupId>no.nav.foreldrepenger.fpformidling</groupId>
Expand All @@ -30,9 +30,9 @@
<sonar.projectKey>navikt_fp-formidling</sonar.projectKey>

<!-- Felles artefakter -->
<felles.version>5.1.0</felles.version>
<felles.version>5.1.1</felles.version>
<prosesstask.version>4.0.0</prosesstask.version>
<kontrakter.version>7.0.1</kontrakter.version>
<kontrakter.version>7.0.2</kontrakter.version>

<!-- Eksterne -->
<handlebars.version>4.3.1</handlebars.version>
Expand All @@ -45,7 +45,7 @@
<dependency>
<groupId>no.nav.foreldrepenger.felles</groupId>
<artifactId>fp-bom</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Expand Down