Skip to content

Commit c128d57

Browse files
authored
TFP-5708 - laget eget endepunkt som ikke kopierer med seg nye inntekt… (#2505)
TFP-5708 - laget eget endepunkt som ikke kopierer med seg nye inntektsmeldinger. Gjelder for spesialbehandlinger
1 parent b8ef9bb commit c128d57

File tree

3 files changed

+84
-6
lines changed

3 files changed

+84
-6
lines changed

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/InntektArbeidYtelseTjeneste.java

+16-2
Original file line numberDiff line numberDiff line change
@@ -184,16 +184,23 @@ public boolean erGrunnlagAktivt(UUID eksternReferanse) {
184184
*
185185
* @param ytelseType
186186
* @param dataset
187+
* @param beholdOpprinngeligeIM
187188
*/
188189
public void kopierGrunnlagFraEksisterendeBehandling(YtelseType ytelseType,
189190
AktørId aktørId,
190191
Saksnummer saksnummer,
191192
KoblingReferanse fraKobling,
192193
KoblingReferanse tilKobling,
193-
Set<Dataset> dataset) {
194+
Set<Dataset> dataset,
195+
boolean beholdOpprinngeligeIM) {
194196
var origAggregat = hentGrunnlagFor(fraKobling);
195197
if (origAggregat.isPresent()) {
196-
kopierGrunnlagPlussNyereInntektsmeldingerForFagsak(tilKobling, ytelseType, aktørId, saksnummer, origAggregat.get(), dataset);
198+
if (beholdOpprinngeligeIM) {
199+
//gjelder spesialbehandlinger(berørt, feriepenger og utsatt start)
200+
kopierGrunnlagBeholdInntektsmeldinger(tilKobling, origAggregat.get(), dataset);
201+
} else {
202+
kopierGrunnlagPlussNyereInntektsmeldingerForFagsak(tilKobling, ytelseType, aktørId, saksnummer, origAggregat.get(), dataset);
203+
}
197204
}
198205
}
199206

@@ -257,7 +264,14 @@ private InntektArbeidYtelseGrunnlagBuilder kopierGrunnlagPlussNyereInntektsmeldi
257264
}
258265
lagre(tilKobling, builder);
259266
return builder;
267+
}
260268

269+
private InntektArbeidYtelseGrunnlagBuilder kopierGrunnlagBeholdInntektsmeldinger(KoblingReferanse tilKobling,
270+
InntektArbeidYtelseGrunnlag original,
271+
Set<Dataset> dataset) {
272+
var builder = InntektArbeidYtelseGrunnlagBuilder.kopierDeler(original, dataset);
273+
lagre(tilKobling, builder);
274+
return builder;
261275
}
262276

263277
private Inntektsmelding finnSisteEksisterendeInntektsmelding(Collection<Inntektsmelding> inntektsmeldinger) {

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/tjeneste/GrunnlagRestTjeneste.java

+24-1
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,30 @@ public Response kopierOgLagreGrunnlag(@NotNull @Valid KopierGrunnlagRequestAbac
320320
var kobling = oppdaterKobling(request);
321321

322322
iayTjeneste.kopierGrunnlagFraEksisterendeBehandling(kobling.getYtelseType(), kobling.getAktørId(), new Saksnummer(request.getSaksnummer()),
323-
new KoblingReferanse(request.getGammelReferanse()), new KoblingReferanse(request.getNyReferanse()), request.getDataset());
323+
new KoblingReferanse(request.getGammelReferanse()), new KoblingReferanse(request.getNyReferanse()), request.getDataset(), false);
324+
325+
koblingLås.ifPresent(lås -> koblingTjeneste.oppdaterLåsVersjon(lås));
326+
327+
return Response.ok().build();
328+
}
329+
330+
@POST
331+
@Path("/kopier-behold-im")
332+
@Consumes(MediaType.APPLICATION_JSON)
333+
@Produces(MediaType.APPLICATION_JSON)
334+
@Operation(description = "Kopier grunnlag behold opprinnelige inntektsmeldinger", tags = "iay-grunnlag")
335+
@BeskyttetRessurs(actionType = ActionType.CREATE, resource = GRUNNLAG)
336+
@SuppressWarnings("findsecbugs:JAXRS_ENDPOINT")
337+
public Response kopierOgLagreGrunnlagBeholdIM(@NotNull @Valid KopierGrunnlagRequestAbac request) {
338+
var ref = new KoblingReferanse(request.getNyReferanse());
339+
var koblingLås = Optional.ofNullable(koblingTjeneste.taSkrivesLås(ref)); // alltid ta lås før skrive operasjoner
340+
341+
setupLogMdcFraKoblingReferanse(ref);
342+
343+
var kobling = oppdaterKobling(request);
344+
345+
iayTjeneste.kopierGrunnlagFraEksisterendeBehandling(kobling.getYtelseType(), kobling.getAktørId(), new Saksnummer(request.getSaksnummer()),
346+
new KoblingReferanse(request.getGammelReferanse()), new KoblingReferanse(request.getNyReferanse()), request.getDataset(), true);
324347

325348
koblingLås.ifPresent(lås -> koblingTjeneste.oppdaterLåsVersjon(lås));
326349

domenetjenester/iay/src/test/java/no/nav/foreldrepenger/abakus/iay/tjeneste/InntektArbeidYtelseTjenesteTest.java

+44-3
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ void skal_kopiere_iay_grunnlag() {
6161
var iayt = new InntektArbeidYtelseTjeneste(iayr);
6262
iayt.kopierGrunnlagFraEksisterendeBehandling(null, null, null, new KoblingReferanse(UUID.randomUUID()),
6363
new KoblingReferanse(UUID.randomUUID()),
64-
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT));
64+
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT), false);
6565

6666
// Assert
6767
ArgumentCaptor<InntektArbeidYtelseGrunnlagBuilder> iaygBuilderCaptor = ArgumentCaptor.forClass(InntektArbeidYtelseGrunnlagBuilder.class);
@@ -77,6 +77,47 @@ void skal_kopiere_iay_grunnlag() {
7777
assertThat(sisteIms.getInnsendingstidspunkt()).isEqualTo(ny.getInnsendingstidspunkt());
7878
}
7979

80+
@Test
81+
void skal_kopiere_iay_grunnlag_og_beholde_opprinnelige_inntektsmeldinger() {
82+
83+
// Arrange
84+
LocalDateTime innsendingstidspunkt = LocalDateTime.now().minusDays(10);
85+
var = nyInntektsmelding(innsendingstidspunkt, "1");
86+
var ny = nyInntektsmelding(innsendingstidspunkt.plusDays(1), "2");
87+
var gammel = nyInntektsmelding(innsendingstidspunkt.minusDays(1), "3");
88+
89+
var iaygBuilder = InntektArbeidYtelseGrunnlagBuilder.nytt();
90+
iaygBuilder.setInntektsmeldinger(new InntektsmeldingAggregat(List.of(gammel, )));
91+
92+
var iayr = Mockito.spy(new InntektArbeidYtelseRepository(Mockito.mock(EntityManager.class)));
93+
Mockito.doNothing().when(iayr).lagre(any(KoblingReferanse.class), any(InntektArbeidYtelseGrunnlagBuilder.class));
94+
95+
Mockito.doAnswer(i -> Optional.of(iaygBuilder.build())).when(iayr).hentInntektArbeidYtelseGrunnlagForBehandling(any());
96+
Mockito.doReturn(Map.of(gammel, nyArbeidsforholdInformasjon(), ny, nyArbeidsforholdInformasjon()))
97+
.when(iayr)
98+
.hentArbeidsforholdInfoInntektsmeldingerMapFor(any(), any(), any());
99+
100+
// Act
101+
var iayt = new InntektArbeidYtelseTjeneste(iayr);
102+
iayt.kopierGrunnlagFraEksisterendeBehandling(null, null, null, new KoblingReferanse(UUID.randomUUID()),
103+
new KoblingReferanse(UUID.randomUUID()),
104+
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT), true);
105+
106+
// Assert
107+
ArgumentCaptor<InntektArbeidYtelseGrunnlagBuilder> iaygBuilderCaptor = ArgumentCaptor.forClass(InntektArbeidYtelseGrunnlagBuilder.class);
108+
Mockito.verify(iayr).lagre(any(KoblingReferanse.class), iaygBuilderCaptor.capture());
109+
var lagret = iaygBuilderCaptor.getValue();
110+
var nyIay = lagret.build(); // denne skal aldri ha vært kalt siden vi stubbet ut
111+
assertThat(nyIay).isNotNull();
112+
assertThat(nyIay.getInntektsmeldinger()).isPresent();
113+
var sisteInntektsmeldinger = nyIay.getInntektsmeldinger().get().getInntektsmeldinger();
114+
assertThat(sisteInntektsmeldinger).hasSize(2);
115+
116+
//Assert skal kun ha siste inntektsmelding siden alle 3 hadde samme arbeidsgiver
117+
assertThat(sisteInntektsmeldinger.stream().map(Inntektsmelding::getJournalpostId).anyMatch(journalpostId -> "1".equals(journalpostId.getVerdi()))).isTrue();
118+
assertThat(sisteInntektsmeldinger.stream().map(Inntektsmelding::getJournalpostId).anyMatch(journalpostId -> "3".equals(journalpostId.getVerdi()))).isTrue();
119+
}
120+
80121
@Test
81122
void skal_kopiere_inntektsmelding_og_ekstern_ref_hvis_finnes_paa_ny() {
82123

@@ -101,7 +142,7 @@ void skal_kopiere_inntektsmelding_og_ekstern_ref_hvis_finnes_paa_ny() {
101142
var iayt = new InntektArbeidYtelseTjeneste(iayr);
102143
iayt.kopierGrunnlagFraEksisterendeBehandling(null, null, null, new KoblingReferanse(UUID.randomUUID()),
103144
new KoblingReferanse(UUID.randomUUID()),
104-
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT));
145+
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT), false);
105146

106147
// Assert
107148
ArgumentCaptor<InntektArbeidYtelseGrunnlagBuilder> iaygBuilderCaptor = ArgumentCaptor.forClass(InntektArbeidYtelseGrunnlagBuilder.class);
@@ -142,7 +183,7 @@ void skal_kopiere_inntektsmelding_og_ekstern_ref_hvis_finnes_fra_for() {
142183
var iayt = new InntektArbeidYtelseTjeneste(iayr);
143184
iayt.kopierGrunnlagFraEksisterendeBehandling(null, null, null, new KoblingReferanse(UUID.randomUUID()),
144185
new KoblingReferanse(UUID.randomUUID()),
145-
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT));
186+
EnumSet.of(Dataset.OPPGITT_OPPTJENING, Dataset.INNTEKTSMELDING, Dataset.REGISTER, Dataset.OVERSTYRT), false);
146187

147188
// Assert
148189
ArgumentCaptor<InntektArbeidYtelseGrunnlagBuilder> iaygBuilderCaptor = ArgumentCaptor.forClass(InntektArbeidYtelseGrunnlagBuilder.class);

0 commit comments

Comments
 (0)