Skip to content

Commit 8a77b4c

Browse files
authored
TFP-5791: Tillater å endre tittel om det er kun 1 dokument og den er forskjellig fra journalpost tittel. (#2501)
1 parent 9828601 commit 8a77b4c

File tree

2 files changed

+71
-44
lines changed

2 files changed

+71
-44
lines changed

web/src/main/java/no/nav/foreldrepenger/fordel/web/app/rest/journalføring/FerdigstillJournalføringRestTjeneste.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ public SaksnummerDto oppdaterOgFerdigstillJournalfoering(@Parameter(description
9292
List<FerdigstillJournalføringTjeneste.DokumenterMedNyTittel> dokumenter = new ArrayList<>();
9393
String nyJournalpostTittel = null;
9494
DokumentTypeId nyDokumentTypeId = null;
95-
if (request.oppdaterTitlerDto != null) {
96-
if (!request.oppdaterTitlerDto.dokumenter().isEmpty()) {
97-
dokumenter = mapTilDokumenter(request.oppdaterTitlerDto.dokumenter());
95+
if (request.oppdaterTitlerDto() != null) {
96+
if (!request.oppdaterTitlerDto().dokumenter().isEmpty()) {
97+
dokumenter = mapTilDokumenter(request.oppdaterTitlerDto().dokumenter());
9898
}
9999
nyJournalpostTittel = request.oppdaterTitlerDto().journalpostTittel() != null ? request.oppdaterTitlerDto().journalpostTittel() : null;
100100
if (nyJournalpostTittel != null) {

web/src/main/java/no/nav/foreldrepenger/fordel/web/app/rest/journalføring/FerdigstillJournalføringTjeneste.java

+68-41
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public class FerdigstillJournalføringTjeneste {
6060
static final String BRUKER_MANGLER = "Journalpost mangler knyting til bruker - prøv igjen om et halv minutt";
6161
static final String JOURNALPOST_IKKE_INNGÅENDE = "Journalpost ikke Inngående";
6262
private static final Logger LOG = LoggerFactory.getLogger(FerdigstillJournalføringTjeneste.class);
63+
protected static final String ENDELIG = "ENDELIG";
6364
private VLKlargjører klargjører;
6465
private Fagsak fagsak;
6566
private PersonInformasjon pdl;
@@ -89,8 +90,11 @@ public class FerdigstillJournalføringTjeneste {
8990
this.dokumentRepository = dokumentRepository;
9091
}
9192

92-
public void oppdaterJournalpostOgFerdigstill(String enhetId, String saksnummer, ArkivJournalpost journalpost,
93-
String nyJournalpostTittel, List<DokumenterMedNyTittel> dokumenterMedNyTittel,
93+
public void oppdaterJournalpostOgFerdigstill(String enhetId,
94+
String saksnummer,
95+
ArkivJournalpost journalpost,
96+
String nyJournalpostTittel,
97+
List<DokumenterMedNyTittel> dokumenterMedNyTittel,
9498
DokumentTypeId nyDokumentTypeId) {
9599

96100
validerJournalposttype(journalpost.getJournalposttype());
@@ -137,25 +141,29 @@ public void oppdaterJournalpostOgFerdigstill(String enhetId, String saksnummer,
137141
String eksternReferanseId = null;
138142
if (DokumentTypeId.INNTEKTSMELDING.equals(brukDokumentTypeId)) {
139143
eksternReferanseId =
140-
journalpost.getEksternReferanseId() != null ? journalpost.getEksternReferanseId() : arkivTjeneste.hentEksternReferanseId(
141-
journalpost.getOriginalJournalpost()).orElse(null);
144+
journalpost.getEksternReferanseId() != null ? journalpost.getEksternReferanseId() : arkivTjeneste.hentEksternReferanseId(
145+
journalpost.getOriginalJournalpost()).orElse(null);
142146
}
143147

144148
var mottattTidspunkt = Optional.ofNullable(journalpost.getDatoOpprettet()).orElseGet(LocalDateTime::now);
145149

146150
final var xml = hentDokumentSettMetadata(saksnummer, behandlingTema, aktørIdFagsak, journalpost);
147-
klargjører.klargjør(xml, saksnummer, journalpost.getJournalpostId(), brukDokumentTypeId, mottattTidspunkt, behandlingTema, forsendelseId.orElse(null),
148-
dokumentKategori, enhetId, eksternReferanseId);
151+
klargjører.klargjør(xml, saksnummer, journalpost.getJournalpostId(), brukDokumentTypeId, mottattTidspunkt, behandlingTema,
152+
forsendelseId.orElse(null), dokumentKategori, enhetId, eksternReferanseId);
149153

150154
// For å unngå klonede journalposter fra GOSYS - de kan komme via Kafka.
151-
dokumentRepository.lagreJournalpostLokal(journalpost.getJournalpostId(), journalpost.getKanal(), "ENDELIG", journalpost.getEksternReferanseId());
155+
dokumentRepository.lagreJournalpostLokal(journalpost.getJournalpostId(), journalpost.getKanal(), ENDELIG,
156+
journalpost.getEksternReferanseId());
152157

153158
opprettFerdigstillOppgaveTask(JournalpostId.fra(journalpost.getJournalpostId()));
154159
}
155160

156-
public void oppdaterJournalpostOgFerdigstillGenerellSak(String enhetId, ArkivJournalpost journalpost, String aktørId,
157-
String nyJournalpostTittel, List<DokumenterMedNyTittel> dokumenterMedNyTittel,
158-
DokumentTypeId nyDokumentTypeId) {
161+
public void oppdaterJournalpostOgFerdigstillGenerellSak(String enhetId,
162+
ArkivJournalpost journalpost,
163+
String aktørId,
164+
String nyJournalpostTittel,
165+
List<DokumenterMedNyTittel> dokumenterMedNyTittel,
166+
DokumentTypeId nyDokumentTypeId) {
159167

160168
validerJournalposttype(journalpost.getJournalposttype());
161169

@@ -171,7 +179,8 @@ public void oppdaterJournalpostOgFerdigstillGenerellSak(String enhetId, ArkivJou
171179

172180
// For å unngå klonede journalposter fra GOSYS - de kan komme via Kafka - må skje før vi ferdigstiller.
173181
// Ellers kan kan kafka hendelsen komme tidligere en vi klarer å lagre og oppretter en ny oppgave.
174-
dokumentRepository.lagreJournalpostLokal(journalpost.getJournalpostId(), journalpost.getKanal(), "ENDELIG", journalpost.getEksternReferanseId());
182+
dokumentRepository.lagreJournalpostLokal(journalpost.getJournalpostId(), journalpost.getKanal(), ENDELIG,
183+
journalpost.getEksternReferanseId());
175184

176185
if (Journalstatus.MOTTATT.equals(journalpost.getTilstand())) {
177186
oppdaterJournalpostMedTittelOgMangler(journalpost, nyJournalpostTittel, dokumenterMedNyTittel, aktørId, behandlingTema);
@@ -189,13 +198,26 @@ public void oppdaterJournalpostOgFerdigstillGenerellSak(String enhetId, ArkivJou
189198
}
190199

191200

192-
public void oppdaterJournalpostMedTittelOgMangler(ArkivJournalpost journalpost, String nyJournalpostTittel, List<DokumenterMedNyTittel> dokumenterMedNyTittel, String aktørId, BehandlingTema behandlingTema) {
201+
public void oppdaterJournalpostMedTittelOgMangler(ArkivJournalpost journalpost,
202+
String nyJournalpostTittel,
203+
List<DokumenterMedNyTittel> dokumenterMedNyTittel,
204+
String aktørId,
205+
BehandlingTema behandlingTema) {
193206
var journalpostId = journalpost.getJournalpostId();
194207
var kanal = journalpost.getKanal();
195208

196-
if ((nyJournalpostTittel != null || !dokumenterMedNyTittel.isEmpty()) && (MottakKanal.SELVBETJENING.getKode().equals(kanal) || MottakKanal.ALTINN.getKode().equals(kanal))) {
197-
throw new FunksjonellException("FP-963071", String.format("Kan ikke endre tittel på journalpost med id %s som kommer fra Selvbetjening eller Altinn.", journalpostId),
209+
if ((nyJournalpostTittel != null || !dokumenterMedNyTittel.isEmpty()) && List.of(MottakKanal.SELVBETJENING.getKode(),
210+
MottakKanal.ALTINN.getKode()).contains(kanal)) {
211+
// TFP-5791: Det er spesialhåndtering av tilfeller hvor klage/anke journalpost tittel ble endret i gosys uten at man har endret dokument tittel samtidig.
212+
if (nyJournalpostTittel == null && dokumenterMedNyTittel.size() == 1) {
213+
LOG.info(
214+
"FPFORDEL RESTJOURNALFØRING: Det endres dokument tittel på et dokument som kommer fra {}. Gjelder journalpost: {}:{}. Ny dokument tittel: {}.",
215+
kanal, journalpostId, journalpost.getTittel(), dokumenterMedNyTittel.getFirst().dokumentTittel());
216+
} else {
217+
throw new FunksjonellException("FP-963071",
218+
String.format("Kan ikke endre tittel på journalpost med id %s som kommer fra Selvbetjening eller Altinn.", journalpostId),
198219
"Tittel kan ikke endres når journalposten kommer fra selvbetjening eller altinn");
220+
}
199221
}
200222

201223
LOG.info("FPFORDEL RESTJOURNALFØRING: Oppdaterer generelle mangler og titler for journalpostId: {}", journalpostId);
@@ -210,15 +232,16 @@ public void oppdaterJournalpostMedTittelOgMangler(ArkivJournalpost journalpost,
210232

211233
if (!utledetDokType.getTermNavn().equals(nyJournalpostTittel)) {
212234
LOG.info("FPFORDEL RESTJOURNALFØRING: Ny journalpost-tittel: {} avviker fra utledet journalpost-tittel: {} for journalpostId: {}",
213-
nyJournalpostTittel, utledetDokType.getTermNavn(), journalpostId);
235+
nyJournalpostTittel, utledetDokType.getTermNavn(), journalpostId);
214236
}
215237
}
216238
List<OppdaterJournalpostRequest.DokumentInfoOppdater> dokumenterÅOppdatere = new ArrayList<>();
217239

218240
if (!dokumenterMedNyTittel.isEmpty()) {
219241
dokumenterÅOppdatere = mapDokumenterTilOppdatering(dokumenterMedNyTittel);
220242
}
221-
arkivTjeneste.oppdaterJournalpostVedManuellJournalføring(journalpostId, nyJournalpostTittel, dokumenterÅOppdatere, journalpost, aktørId, behandlingTema);
243+
arkivTjeneste.oppdaterJournalpostVedManuellJournalføring(journalpostId, nyJournalpostTittel, dokumenterÅOppdatere, journalpost, aktørId,
244+
behandlingTema);
222245

223246
}
224247

@@ -227,13 +250,13 @@ public record DokumenterMedNyTittel(String dokumentId, String dokumentTittel) {
227250

228251
private List<no.nav.vedtak.felles.integrasjon.dokarkiv.dto.OppdaterJournalpostRequest.DokumentInfoOppdater> mapDokumenterTilOppdatering(List<DokumenterMedNyTittel> dokumenter) {
229252
return dokumenter.stream()
230-
.filter(dt -> dt.dokumentId() != null && dt.dokumentTittel() != null)
231-
.map(dt -> new no.nav.vedtak.felles.integrasjon.dokarkiv.dto.OppdaterJournalpostRequest.DokumentInfoOppdater(dt.dokumentId(), dt.dokumentTittel(), null))
232-
.toList();
253+
.filter(dt -> dt.dokumentId() != null && dt.dokumentTittel() != null)
254+
.map(dt -> new no.nav.vedtak.felles.integrasjon.dokarkiv.dto.OppdaterJournalpostRequest.DokumentInfoOppdater(dt.dokumentId(),
255+
dt.dokumentTittel(), null))
256+
.toList();
233257
}
234258

235-
private static Set<DokumentTypeId> utledDokumentTyper(List<DokumenterMedNyTittel> dokumenterMedNyTittel,
236-
List<DokumentInfo> dokumenterFraArkiv) {
259+
private static Set<DokumentTypeId> utledDokumentTyper(List<DokumenterMedNyTittel> dokumenterMedNyTittel, List<DokumentInfo> dokumenterFraArkiv) {
237260
Set<DokumentTypeId> dokumentTyper = new HashSet<>();
238261
Set<String> oppdatereDokIder = dokumenterMedNyTittel.stream().map(DokumenterMedNyTittel::dokumentId).collect(Collectors.toSet());
239262

@@ -267,13 +290,15 @@ private static Optional<UUID> asUUID(String eksternReferanseId) {
267290

268291
String opprettSak(ArkivJournalpost journalpost, FerdigstillJournalføringRestTjeneste.OpprettSak opprettSakInfo, DokumentTypeId nyDokumentTypeId) {
269292
new ManuellOpprettSakValidator(arkivTjeneste).validerKonsistensMedSakJP(journalpost, opprettSakInfo.ytelseType(), opprettSakInfo.aktørId(),
270-
nyDokumentTypeId);
293+
nyDokumentTypeId);
271294

272295
return fagsak.opprettSak(opprettSakRequest(journalpost.getJournalpostId(), opprettSakInfo)).getSaksnummer();
273296
}
274297

275298
// Validerer mot eksisterende men sikrer at det opprettes ny sak
276-
String opprettNySak(ArkivJournalpost journalpost, FerdigstillJournalføringRestTjeneste.OpprettSak opprettSakInfo, DokumentTypeId nyDokumentTypeId) {
299+
String opprettNySak(ArkivJournalpost journalpost,
300+
FerdigstillJournalføringRestTjeneste.OpprettSak opprettSakInfo,
301+
DokumentTypeId nyDokumentTypeId) {
277302
new ManuellOpprettSakValidator(arkivTjeneste).validerKonsistensMedSakJP(journalpost, opprettSakInfo.ytelseType(), opprettSakInfo.aktørId(),
278303
nyDokumentTypeId);
279304

@@ -319,15 +344,16 @@ public JournalpostId knyttTilAnnenSak(ArkivJournalpost journalpost, String enhet
319344
var mottattTidspunkt = Optional.ofNullable(journalpost.getDatoOpprettet()).orElseGet(LocalDateTime::now);
320345
String eksternReferanseId = null;
321346
if (DokumentTypeId.INNTEKTSMELDING.equals(brukDokumentTypeId)) {
322-
eksternReferanseId = journalpost.getEksternReferanseId() != null ? journalpost.getEksternReferanseId() :
323-
arkivTjeneste.hentEksternReferanseId(journalpost.getOriginalJournalpost()).orElse(null);
347+
eksternReferanseId =
348+
journalpost.getEksternReferanseId() != null ? journalpost.getEksternReferanseId() : arkivTjeneste.hentEksternReferanseId(
349+
journalpost.getOriginalJournalpost()).orElse(null);
324350
}
325351

326352
klargjører.klargjør(xml, saksnummer, nyJournalpostId, brukDokumentTypeId, mottattTidspunkt, behandlingTema, forsendelseId.orElse(null),
327353
dokumentKategori, enhetId, eksternReferanseId);
328354

329355
// For å unngå klonede journalposter fra GOSYS - de kan komme via Kafka.
330-
dokumentRepository.lagreJournalpostLokal(nyJournalpostId, journalpost.getKanal(), "ENDELIG", journalpost.getEksternReferanseId());
356+
dokumentRepository.lagreJournalpostLokal(nyJournalpostId, journalpost.getKanal(), ENDELIG, journalpost.getEksternReferanseId());
331357

332358
return Optional.ofNullable(nyJournalpostId).map(JournalpostId::fra).orElse(null);
333359
}
@@ -351,12 +377,13 @@ public JournalpostId knyttTilAnnenSak(ArkivJournalpost journalpost, String enhet
351377
var mottattTidspunkt = Optional.ofNullable(journalpost.getDatoOpprettet()).orElseGet(LocalDateTime::now);
352378
String eksternReferanseId = null;
353379
if (DokumentTypeId.INNTEKTSMELDING.equals(brukDokumentTypeId)) {
354-
eksternReferanseId = journalpost.getEksternReferanseId() != null ? journalpost.getEksternReferanseId() :
355-
arkivTjeneste.hentEksternReferanseId(journalpost.getOriginalJournalpost()).orElse(null);
380+
eksternReferanseId =
381+
journalpost.getEksternReferanseId() != null ? journalpost.getEksternReferanseId() : arkivTjeneste.hentEksternReferanseId(
382+
journalpost.getOriginalJournalpost()).orElse(null);
356383
}
357384

358-
klargjører.klargjør(xml, saksnummer, journalpost.getJournalpostId(), brukDokumentTypeId, mottattTidspunkt, behandlingTema, forsendelseId.orElse(null),
359-
dokumentKategori, null, eksternReferanseId);
385+
klargjører.klargjør(xml, saksnummer, journalpost.getJournalpostId(), brukDokumentTypeId, mottattTidspunkt, behandlingTema,
386+
forsendelseId.orElse(null), dokumentKategori, null, eksternReferanseId);
360387
}
361388

362389

@@ -373,10 +400,10 @@ private static BehandlingTema validerOgVelgBehandlingTema(BehandlingTema behandl
373400
return behandlingTemaFagsak;
374401
}
375402
if ((gjelderForeldrepenger(behandlingTemaFagsak) && !gjelderForeldrepenger(behandlingTemaDok)) || (
376-
BehandlingTema.gjelderEngangsstønad(behandlingTemaFagsak) && !BehandlingTema.gjelderEngangsstønad(behandlingTemaDok)) || (
377-
BehandlingTema.gjelderSvangerskapspenger(behandlingTemaFagsak) && !BehandlingTema.gjelderSvangerskapspenger(behandlingTemaDok))) {
403+
BehandlingTema.gjelderEngangsstønad(behandlingTemaFagsak) && !BehandlingTema.gjelderEngangsstønad(behandlingTemaDok)) || (
404+
BehandlingTema.gjelderSvangerskapspenger(behandlingTemaFagsak) && !BehandlingTema.gjelderSvangerskapspenger(behandlingTemaDok))) {
378405
throw new FunksjonellException("FP-963079", "Dokumentet samsvarer ikke med sakens type - kan ikke journalføre",
379-
"Journalfør på annen sak eller opprett ny sak");
406+
"Journalfør på annen sak eller opprett ny sak");
380407
}
381408
return BehandlingTema.ikkeSpesifikkHendelse(behandlingTemaDok) ? behandlingTemaFagsak : behandlingTemaDok;
382409
}
@@ -385,9 +412,9 @@ private static BehandlingTema validerOgVelgBehandlingTema(BehandlingTema behandl
385412
DokumentTypeId dokumentTypeId,
386413
DokumentKategori dokumentKategori) {
387414
if (BehandlingTema.UDEFINERT.equals(behandlingTema) && (DokumentTypeId.KLAGE_DOKUMENT.equals(dokumentTypeId)
388-
|| DokumentKategori.KLAGE_ELLER_ANKE.equals(dokumentKategori))) {
415+
|| DokumentKategori.KLAGE_ELLER_ANKE.equals(dokumentKategori))) {
389416
throw new FunksjonellException("FP-963074", "Klager må journalføres på sak med tidligere behandling",
390-
"Journalføre klagen på sak med avsluttet behandling");
417+
"Journalføre klagen på sak med avsluttet behandling");
391418
}
392419
}
393420

@@ -401,21 +428,21 @@ private static void validerDokumentData(MottakMeldingDataWrapper dataWrapper,
401428
if (gjelderForeldrepenger(behandlingTemaFraIM)) {
402429
if (dataWrapper.getInntektsmeldingStartDato().isEmpty()) { // Kommer ingen vei uten startdato
403430
throw new FunksjonellException("FP-963076", "Inntektsmelding mangler startdato - kan ikke journalføre",
404-
"Be om ny Inntektsmelding med startdato");
431+
"Be om ny Inntektsmelding med startdato");
405432

406433
} else if (!gjelderForeldrepenger(behandlingTema)) { // Prøver journalføre på annen
407434
// fagsak - ytelsetype
408435
throw new FunksjonellException("FP-963075", "Inntektsmelding årsak samsvarer ikke med sakens type - kan ikke journalføre",
409-
"Be om ny Inntektsmelding for Foreldrepenger");
436+
"Be om ny Inntektsmelding for Foreldrepenger");
410437
}
411438
} else if (!behandlingTemaFraIM.equals(behandlingTema)) {
412439
throw new FunksjonellException("FP-963075", "Inntektsmelding årsak samsvarer ikke med sakens type - kan ikke journalføre",
413-
"Be om ny Inntektsmelding for Foreldrepenger");
440+
"Be om ny Inntektsmelding for Foreldrepenger");
414441
}
415442
}
416443
if (gjelderForeldrepenger(behandlingTema) && startDato.isBefore(KonfigVerdier.ENDRING_BEREGNING_DATO)) {
417444
throw new FunksjonellException("FP-963077", "For tidlig uttak",
418-
"Søknad om uttak med oppstart i 2018 skal journalføres mot sak i Infotrygd");
445+
"Søknad om uttak med oppstart i 2018 skal journalføres mot sak i Infotrygd");
419446
}
420447
}
421448

@@ -428,11 +455,11 @@ private FagsakInfomasjonDto hentOgValiderFagsak(String saksnummer, ArkivJournalp
428455
final var brukerAktørId = journalpost.getBrukerAktørId();
429456

430457
final var fagsakFraRequestSomTrefferRettAktør = hentFagsakInfo(saksnummer).filter(
431-
f -> brukerAktørId.isEmpty() || Objects.equals(f.getAktørId(), brukerAktørId.get()));
458+
f -> brukerAktørId.isEmpty() || Objects.equals(f.getAktørId(), brukerAktørId.get()));
432459

433460
if (fagsakFraRequestSomTrefferRettAktør.isEmpty()) {
434461
throw new FunksjonellException("FP-963070", "Kan ikke journalføre på saksnummer: " + saksnummer,
435-
"Journalføre dokument på annen sak i VL");
462+
"Journalføre dokument på annen sak i VL");
436463
}
437464

438465
LOG.info("FPFORDEL RESTJOURNALFØRING: Fant en FP-sak med saksnummer {} som har rett aktør", saksnummer);

0 commit comments

Comments
 (0)