From 485e206b70976794f1b12366ad49888acbbba748 Mon Sep 17 00:00:00 2001 From: Espen Johansen Velsvik Date: Thu, 27 Jun 2024 14:51:04 +0200 Subject: [PATCH] =?UTF-8?q?=C3=85pner=20opp=20for=20=C3=A5=20resette=20per?= =?UTF-8?q?ioder=20som=20har=20vurdering=20kopiert=20fra=20forrige=20behan?= =?UTF-8?q?dling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PeriodiserOgFastsettRefusjonTjeneste.java | 5 +++- .../BGAndelArbeidsforholdDto.java | 7 ++---- ...iodiserOgFastsettRefusjonTjenesteTest.java | 25 +++++++++++++++++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/avklaringsbehov/refusjon/PeriodiserOgFastsettRefusjonTjeneste.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/avklaringsbehov/refusjon/PeriodiserOgFastsettRefusjonTjeneste.java index 46c6e5e3..e7c0b926 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/avklaringsbehov/refusjon/PeriodiserOgFastsettRefusjonTjeneste.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/avklaringsbehov/refusjon/PeriodiserOgFastsettRefusjonTjeneste.java @@ -73,6 +73,9 @@ private static BeregningsgrunnlagDto oppdaterRefusjonIRelevantePerioder(Beregnin if (matchetSplittAndel.isPresent() && refusjonSkalEndres(eksisterendePeriode, matchetSplittAndel.get().getStartdatoRefusjon())) { BGAndelArbeidsforholdDto.Builder bgAndelArbforBuilder = BGAndelArbeidsforholdDto.Builder.oppdater(eksisterendeAndel.getBgAndelArbeidsforhold()); bgAndelArbforBuilder.medSaksbehandletRefusjonPrÅr(matchetSplittAndel.get().getDelvisRefusjonBeløpPrÅr()); + } else if (matchetSplittAndel.isPresent()) { + BGAndelArbeidsforholdDto.Builder bgAndelArbforBuilder = BGAndelArbeidsforholdDto.Builder.oppdater(eksisterendeAndel.getBgAndelArbeidsforhold()); + bgAndelArbforBuilder.medSaksbehandletRefusjonPrÅr(null); } })); return nyttGrunnlag; @@ -89,7 +92,7 @@ private static boolean refusjonSkalEndres(BeregningsgrunnlagPeriodeDto eksistere return eksisterendePeriode.getBeregningsgrunnlagPeriodeFom().isBefore(startdatoRefusjon); } - private static Optional finnFastsattAndelForBGAndel(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, List splittAndeler) { + private static Optional finnFastsattAndelForBGAndel(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, List splittAndeler) { return splittAndeler.stream().filter(splittAndel -> splittAndel.gjelderFor(bgAndel)).findFirst(); } diff --git a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/modell/beregningsgrunnlag/BGAndelArbeidsforholdDto.java b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/modell/beregningsgrunnlag/BGAndelArbeidsforholdDto.java index 6a9c09f8..8704af73 100644 --- a/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/modell/beregningsgrunnlag/BGAndelArbeidsforholdDto.java +++ b/kalkulator/src/main/java/no/nav/folketrygdloven/kalkulator/modell/beregningsgrunnlag/BGAndelArbeidsforholdDto.java @@ -125,12 +125,9 @@ public Hjemmel getHjemmelForRefusjonskravfrist() { } private void medSaksbehandletRefusjonPrÅr(Beløp saksbehandletRefusjonPrÅr) { - if (saksbehandletRefusjonPrÅr == null) { - return; - } - if (refusjon == null) { + if (refusjon == null && saksbehandletRefusjonPrÅr != null) { refusjon = Refusjon.medSaksbehandletRefusjonPrÅr(saksbehandletRefusjonPrÅr); - } else { + } else if (refusjon != null) { refusjon.setSaksbehandletRefusjonPrÅr(saksbehandletRefusjonPrÅr); } } diff --git a/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/refusjon/PeriodiserOgFastsettRefusjonTjenesteTest.java b/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/refusjon/PeriodiserOgFastsettRefusjonTjenesteTest.java index 872cbc1c..47b8a87f 100644 --- a/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/refusjon/PeriodiserOgFastsettRefusjonTjenesteTest.java +++ b/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/refusjon/PeriodiserOgFastsettRefusjonTjenesteTest.java @@ -73,8 +73,21 @@ void skal_ikke_splitte_noe_hvis_refusjon_aggregat_er_tomt() { assertPeriode(STP, UENDELIG, AG1, REF1, 250000, resultat, 1); } + @Test + void skal_kunne_resette_periode_satt_i_tidligere_behandling() { + lagBGPeriode(STP, UENDELIG, lagBGAndel(AG1, REF1, 250000, 0)); + lagSaksbehandlerDto(AG1, REF1, STP); - @Test + BeregningsgrunnlagDto resultat = oppdater(); + + assertThat(resultat).isEqualTo(grunnlagBuilder.build()); + assertThat(resultat.getBeregningsgrunnlagPerioder()).hasSize(1); + assertPeriode(STP, UENDELIG, AG1, REF1, 250000, resultat, 1); + } + + + + @Test void skal_kopiere_med_tidligere_andeler_som_ikke_er_arbeidstakerandeler() { lagBGPeriode(STP, null, lagBGAndel(AG1, REF1, 150000), lagBGAndel(null, null, 0)); lagSaksbehandlerDto(AG1, REF1, dagerEtterSTP(10)); @@ -299,7 +312,12 @@ private LocalDate dagerEtterSTP(int i) { return STP.plusDays(i); } - private BeregningsgrunnlagPrStatusOgAndelDto.Builder lagBGAndel(Arbeidsgiver ag, InternArbeidsforholdRefDto ref, int refusjonPrÅr) { + + private BeregningsgrunnlagPrStatusOgAndelDto.Builder lagBGAndel(Arbeidsgiver ag, InternArbeidsforholdRefDto ref, int refusjonPrÅr) { + return lagBGAndel(ag, ref, refusjonPrÅr, null); + } + + private BeregningsgrunnlagPrStatusOgAndelDto.Builder lagBGAndel(Arbeidsgiver ag, InternArbeidsforholdRefDto ref, int refusjonPrÅr, Integer saksbehandletRefusjonPrÅr) { BeregningsgrunnlagPrStatusOgAndelDto.Builder andelBuilder = BeregningsgrunnlagPrStatusOgAndelDto.ny() .medAktivitetStatus(ag == null ? AktivitetStatus.SELVSTENDIG_NÆRINGSDRIVENDE : AktivitetStatus.ARBEIDSTAKER); if (ag != null) { @@ -307,6 +325,9 @@ private BeregningsgrunnlagPrStatusOgAndelDto.Builder lagBGAndel(Arbeidsgiver ag, .medRefusjonskravPrÅr(Beløp.fra(refusjonPrÅr), Utfall.GODKJENT) .medArbeidsforholdRef(ref) .medArbeidsgiver(ag); + if (saksbehandletRefusjonPrÅr != null) { + arbforBuilder.medSaksbehandletRefusjonPrÅr(Beløp.fra(saksbehandletRefusjonPrÅr)); + } andelBuilder.medBGAndelArbeidsforhold(arbforBuilder); } return andelBuilder;