Skip to content

Commit

Permalink
Åpner opp for å resette perioder som har vurdering kopiert fra forrig…
Browse files Browse the repository at this point in the history
…e behandling (#511)
  • Loading branch information
espenjv authored Jun 28, 2024
1 parent 65f9d5e commit 41ef854
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ 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()) {
// Dersom refusjonen ikkje skal settes manuelt må vi sørge for at det ikkje ligger verdi i saksbehandletRefusjonPrÅr
// Dette kan skje ved kopiering/spoling av grunnlag til steg-ut grunnlaget i kopieringslogikken som kjører før lagring i kalkulus
BGAndelArbeidsforholdDto.Builder bgAndelArbforBuilder = BGAndelArbeidsforholdDto.Builder.oppdater(eksisterendeAndel.getBgAndelArbeidsforhold());
bgAndelArbforBuilder.medSaksbehandletRefusjonPrÅr(null);
}
}));
return nyttGrunnlag;
Expand All @@ -89,7 +94,7 @@ private static boolean refusjonSkalEndres(BeregningsgrunnlagPeriodeDto eksistere
return eksisterendePeriode.getBeregningsgrunnlagPeriodeFom().isBefore(startdatoRefusjon);
}

private static Optional<RefusjonSplittAndel> finnFastsattAndelForBGAndel(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, List<RefusjonSplittAndel> splittAndeler) {
private static Optional<RefusjonSplittAndel> finnFastsattAndelForBGAndel(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, List<RefusjonSplittAndel> splittAndeler) {
return splittAndeler.stream().filter(splittAndel -> splittAndel.gjelderFor(bgAndel)).findFirst();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,13 +125,13 @@ 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);
if (refusjon.getGjeldendeRefusjonPrÅr() == null) {
refusjon = null;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

import org.junit.jupiter.api.Test;

import no.nav.folketrygdloven.kalkulator.modell.typer.Arbeidsgiver;
import no.nav.folketrygdloven.kalkulator.modell.typer.Beløp;
import no.nav.folketrygdloven.kalkulus.kodeverk.Utfall;

class BGAndelArbeidsforholdDtoTest {

private static final Arbeidsgiver AG = Arbeidsgiver.virksomhet("999999999");

@Test
void saksbehandlet_refusjon_skal_sette_refusjon() {
var arb = BGAndelArbeidsforholdDto.builder()
.medArbeidsgiver(AG)
.medSaksbehandletRefusjonPrÅr(Beløp.fra(100))
.build();

assertThat(arb.getRefusjon().isPresent()).isTrue();
assertThat(arb.getRefusjon().get().getSaksbehandletRefusjonPrÅr().compareTo(Beløp.fra(100))).isEqualTo(0);
}


@Test
void saksbehandlet_refusjon_skal_ignorere_null_om_ikke_satt_fra_før() {
var arb = BGAndelArbeidsforholdDto.builder()
.medArbeidsgiver(AG)
.medSaksbehandletRefusjonPrÅr(null)
.build();

assertThat(arb.getRefusjon().isPresent()).isFalse();
}

@Test
void saksbehandlet_refusjon_skal_nulle_ut_refusjon_om_satt() {
var arb = BGAndelArbeidsforholdDto.builder()
.medArbeidsgiver(AG)
.medSaksbehandletRefusjonPrÅr(Beløp.fra(100))
.build();

var ny = BGAndelArbeidsforholdDto.builder(arb).medSaksbehandletRefusjonPrÅr(null).build();

assertThat(ny.getRefusjon().isPresent()).isFalse();
}

@Test
void saksbehandlet_refusjon_skal_kun_nulle_ut_felt_om_andre_felter_satt() {
var arb = BGAndelArbeidsforholdDto.builder()
.medArbeidsgiver(AG)
.medRefusjonskravPrÅr(Beløp.ZERO, Utfall.UNDERKJENT)
.medSaksbehandletRefusjonPrÅr(Beløp.fra(100))
.build();

var ny = BGAndelArbeidsforholdDto.builder(arb).medSaksbehandletRefusjonPrÅr(null).build();

assertThat(ny.getRefusjon().isPresent()).isTrue();
assertThat(ny.getRefusjon().get().getSaksbehandletRefusjonPrÅr()).isNull();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down Expand Up @@ -299,14 +312,22 @@ 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) {
BGAndelArbeidsforholdDto.Builder arbforBuilder = BGAndelArbeidsforholdDto.builder()
.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;
Expand Down

0 comments on commit 41ef854

Please sign in to comment.