Skip to content

Commit

Permalink
Fix: ignorer aktivitet med tilkommet inntekt i utregning av uttaksgra…
Browse files Browse the repository at this point in the history
…dering (#424)
  • Loading branch information
tendestad authored Sep 4, 2023
1 parent f94ca91 commit ef2c1a6
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class BeregningsgrunnlagPrArbeidsforhold {
private BigDecimal bruttoPrÅr;
private Arbeidsforhold arbeidsforhold;
private BigDecimal refusjonPrÅr;
private Boolean erAndelMedTilkommetInntekt;

// Beregnet eller skjønnsfastsatt inntekt
private BigDecimal inntektsgrunnlagPrÅr;
Expand Down Expand Up @@ -105,6 +106,10 @@ public Arbeidsforhold getArbeidsforhold() {
return Optional.ofNullable(finnGradert(refusjonPrÅr));
}

public Boolean erAndelMedTilkommetInntekt() {
return erAndelMedTilkommetInntekt;
}

public Optional<BigDecimal> getGradertBruttoInkludertNaturalytelsePrÅr() {
Optional<BigDecimal> brutto = getBruttoInkludertNaturalytelsePrÅr();
return brutto.map(this::finnGradert);
Expand Down Expand Up @@ -248,6 +253,11 @@ public Builder erNytt(boolean erNytt) {
return this;
}

public Builder medErAndelMedTilkommetInntekt(Boolean erAndelMedTilkommetInntekt) {
mal.erAndelMedTilkommetInntekt = erAndelMedTilkommetInntekt;
return this;
}

public Builder medMaksimalRefusjonPrÅr(BigDecimal maksimalRefusjonPrÅr) {
mal.maksimalRefusjonPrÅr = maksimalRefusjonPrÅr;
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class BeregningsgrunnlagPrStatus {
// Alltid full utbetaling for foreldrepenger
private BigDecimal utbetalingsprosent = BigDecimal.valueOf(100);
private BigDecimal aktivitetsgrad; // For bruk til å regne fortsatt arbeid (Mer nøyaktig enn å se på (1-utbetalingsprosent)
private Boolean erAndelMedTilkommetInntekt;
private BigDecimal andelsmessigFørGraderingPrAar;
private BigDecimal bruttoPrÅr;

Expand Down Expand Up @@ -144,6 +145,10 @@ public Optional<BigDecimal> getAktivitetsgrad() {
return Optional.ofNullable(aktivitetsgrad);
}

public Boolean erAndelMedTilkommetInntekt() {
return erAndelMedTilkommetInntekt;
}

public List<BeregningsgrunnlagPrArbeidsforhold> getArbeidsforholdSomSkalBrukes() {
return getArbeidsforhold().stream().filter(BeregningsgrunnlagPrArbeidsforhold::getErSøktYtelseFor).toList();
}
Expand Down Expand Up @@ -303,12 +308,17 @@ public Builder medUtbetalingsprosent(BigDecimal utbetalingsprosent) {

public Builder medAktivitetsgrad(BigDecimal aktivitetsgrad) {
if (aktivitetsgrad != null && (aktivitetsgrad.compareTo(BigDecimal.ZERO) < 0 || aktivitetsgrad.compareTo(BigDecimal.valueOf(100)) > 0)) {
throw new IllegalArgumentException("Aktivitetsgrad må ha verdi fra 0 til 100, faktisk: " + aktivitetsgrad);
throw new IllegalArgumentException("Aktivitetsgrad må ha verdi fra 0 til 100, faktisk: " + aktivitetsgrad);
}
beregningsgrunnlagPrStatusMal.aktivitetsgrad = aktivitetsgrad;
return this;
}

public Builder medErAndelMedTilkommetInntekt(Boolean erAndelMedTilkommetInntekt) {
beregningsgrunnlagPrStatusMal.erAndelMedTilkommetInntekt = erAndelMedTilkommetInntekt;
return this;
}

public BeregningsgrunnlagPrStatus build() {
verifyStateForBuild();
return beregningsgrunnlagPrStatusMal;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) {

}

static BigDecimal min(BigDecimal a, BigDecimal b){
static BigDecimal min(BigDecimal a, BigDecimal b) {
return a.compareTo(b) > 0 ? b : a;
}

Expand All @@ -77,24 +77,31 @@ private static BigDecimal summerAvkortetGradertMotUttak(BeregningsgrunnlagPeriod
for (BeregningsgrunnlagPrStatus bps : grunnlag.getBeregningsgrunnlagPrStatusSomSkalBrukes()) {
if (bps.erArbeidstakerEllerFrilanser()) {
sum = sum.add(bps.getArbeidsforholdSomSkalBrukes().stream()
.filter(arb -> !Boolean.TRUE.equals(arb.erAndelMedTilkommetInntekt()))
.map(arb -> arb.getAndelsmessigFørGraderingPrAar().multiply(arb.getUtbetalingsprosent().scaleByPowerOfTen(-2)))
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
} else {
sum = sum.add(bps.getAndelsmessigFørGraderingPrAar().multiply(bps.getUtbetalingsprosent().scaleByPowerOfTen(-2)));
if (!Boolean.TRUE.equals(bps.erAndelMedTilkommetInntekt())) {
sum = sum.add(bps.getAndelsmessigFørGraderingPrAar().multiply(bps.getUtbetalingsprosent().scaleByPowerOfTen(-2)));
}
}
}
return sum;
}


private static BigDecimal summerAvkortet(BeregningsgrunnlagPeriode grunnlag) {
BigDecimal sum = BigDecimal.ZERO;
for (BeregningsgrunnlagPrStatus bps : grunnlag.getBeregningsgrunnlagPrStatusSomSkalBrukes()) {
if (bps.erArbeidstakerEllerFrilanser()) {
sum = sum.add(bps.getArbeidsforholdSomSkalBrukes().stream()
.filter(arb -> !Boolean.TRUE.equals(arb.erAndelMedTilkommetInntekt()))
.map(arb -> arb.getAndelsmessigFørGraderingPrAar())
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
} else {
sum = sum.add(bps.getAndelsmessigFørGraderingPrAar());
if (!Boolean.TRUE.equals(bps.erAndelMedTilkommetInntekt())) {
sum = sum.add(bps.getAndelsmessigFørGraderingPrAar());
}
}
}
return sum;
Expand Down

0 comments on commit ef2c1a6

Please sign in to comment.