Skip to content

Commit

Permalink
Nedjustering grunnet §8-47A skal gjøres uavhengig av uttaks- eller in…
Browse files Browse the repository at this point in the history
…ntektsgradering. I tillegg skal saksbehandler få se det nedjusterte tallet i tilkommet-inntektskjermbildet og stønadstatistikk få den riktige prosentsatsen oversendt. Derfor lagres 8-47A-justerte prosenter. (#440)
  • Loading branch information
stiangre authored Nov 21, 2023
1 parent 211eeec commit 826f1fb
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,12 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) {
grunnlag.setTotalUtbetalingsgradFraUttak(totalUtbetalingsgradFraUttak);
resultater.put("totalUtbetalingsgradFraUttak", totalUtbetalingsgradFraUttak);

//hvis §8-47a, skaler med fast faktor
var erInaktivTypeA = MidlertidigInaktivType.A.equals(grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivType());
if (erInaktivTypeA) {
BigDecimal reduksjonsfaktor = grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivTypeAReduksjonsfaktor();
grenseverdi = grenseverdi.multiply(reduksjonsfaktor);
resultater.put("grad847a", reduksjonsfaktor);
grunnlag.setReduksjonsfaktorInaktivTypeA(reduksjonsfaktor);
}

//juster ned med tilkommet inntekt hvis det gir lavere utbetaling enn overstående
BigDecimal totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = null;
if (grunnlag.getBeregningsgrunnlag().getToggles().isEnabled("GRADERING_MOT_INNTEKT", false) && !grunnlag.getTilkommetInntektsforholdListe().isEmpty()) {
BigDecimal graderingPåToppenAvUttakgraderingPgaTilkommetInntekt = andelBeholdtEtterGradertMotTilkommetInntekt(grunnlag);
resultater.put("graderingPåToppenAvUttakgraderingPgaTilkommetInntekt", min(BigDecimal.ONE, graderingPåToppenAvUttakgraderingPgaTilkommetInntekt));
BigDecimal totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = min(BigDecimal.ONE, totalUtbetalingsgradFraUttak.multiply(graderingPåToppenAvUttakgraderingPgaTilkommetInntekt));
totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = min(BigDecimal.ONE, totalUtbetalingsgradFraUttak.multiply(graderingPåToppenAvUttakgraderingPgaTilkommetInntekt));
resultater.put("totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt", totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);
grunnlag.setTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt(totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);

Expand All @@ -61,6 +53,26 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) {
resultater.put("inntektgraderingsprosent", grunnlag.getInntektsgraderingFraBruttoBeregningsgrunnlag());
}
}

//hvis §8-47a, skaler med fast faktor
var erInaktivTypeA = MidlertidigInaktivType.A.equals(grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivType());
if (erInaktivTypeA) {
BigDecimal reduksjonsfaktor = grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivTypeAReduksjonsfaktor();
grenseverdi = grenseverdi.multiply(reduksjonsfaktor);
resultater.put("grad847a", reduksjonsfaktor);
grunnlag.setReduksjonsfaktorInaktivTypeA(reduksjonsfaktor);

BigDecimal justertTotalUtbetalingsgradFraUttak = totalUtbetalingsgradFraUttak.multiply(reduksjonsfaktor);
grunnlag.setTotalUtbetalingsgradFraUttak(justertTotalUtbetalingsgradFraUttak);
resultater.put("totalUtbetalingsgradFraUttak", justertTotalUtbetalingsgradFraUttak);

if (totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt != null) {
BigDecimal justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt.multiply(reduksjonsfaktor);
grunnlag.setTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt(justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);
resultater.put("totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt", justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);
}
}

resultater.put("grenseverdi", grenseverdi);
grunnlag.setGrenseverdi(grenseverdi);
SingleEvaluation resultat = ja();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,13 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) {
grunnlag.setTotalUtbetalingsgradFraUttak(totalUtbetalingsgradFraUttak);
resultater.put("totalUtbetalingsgradFraUttak", totalUtbetalingsgradFraUttak);

//hvis §8-47a, skaler med fast faktor
var erInaktivTypeA = MidlertidigInaktivType.A.equals(grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivType());
if (erInaktivTypeA) {
BigDecimal reduksjonsfaktor = grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivTypeAReduksjonsfaktor();
grenseverdi = grenseverdi.multiply(reduksjonsfaktor);
resultater.put("grad847a", reduksjonsfaktor);
grunnlag.setReduksjonsfaktorInaktivTypeA(reduksjonsfaktor);
}

//juster ned med tilkommet inntekt hvis det gir lavere utbetaling enn overstående
BigDecimal totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = null;
if (grunnlag.getBeregningsgrunnlag().getToggles().isEnabled("GRADERING_MOT_INNTEKT", false) && !grunnlag.getTilkommetInntektsforholdListe().isEmpty()) {
BigDecimal graderingPåToppenAvUttakgraderingPgaTilkommetInntekt = andelBeholdtEtterGradertMotTilkommetInntekt(grunnlag);
resultater.put("graderingPåToppenAvUttakgraderingPgaTilkommetInntekt", min(BigDecimal.ONE, graderingPåToppenAvUttakgraderingPgaTilkommetInntekt));
BigDecimal totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = min(BigDecimal.ONE, totalUtbetalingsgradFraUttak.multiply(graderingPåToppenAvUttakgraderingPgaTilkommetInntekt));
totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = min(BigDecimal.ONE, totalUtbetalingsgradFraUttak.multiply(graderingPåToppenAvUttakgraderingPgaTilkommetInntekt));
resultater.put("totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt", totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);
grunnlag.setTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt(totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);

Expand All @@ -61,12 +54,31 @@ public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) {
resultater.put("inntektgraderingsprosent", grunnlag.getInntektsgraderingFraBruttoBeregningsgrunnlag());
}
}

//hvis §8-47a, skaler med fast faktor
var erInaktivTypeA = MidlertidigInaktivType.A.equals(grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivType());
if (erInaktivTypeA) {
BigDecimal reduksjonsfaktor = grunnlag.getBeregningsgrunnlag().getMidlertidigInaktivTypeAReduksjonsfaktor();
grenseverdi = grenseverdi.multiply(reduksjonsfaktor);
resultater.put("grad847a", reduksjonsfaktor);
grunnlag.setReduksjonsfaktorInaktivTypeA(reduksjonsfaktor);

BigDecimal justertTotalUtbetalingsgradFraUttak = totalUtbetalingsgradFraUttak.multiply(reduksjonsfaktor);
grunnlag.setTotalUtbetalingsgradFraUttak(justertTotalUtbetalingsgradFraUttak);
resultater.put("totalUtbetalingsgradFraUttak", justertTotalUtbetalingsgradFraUttak);

if (totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt != null) {
BigDecimal justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt = totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt.multiply(reduksjonsfaktor);
grunnlag.setTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt(justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);
resultater.put("totalUtbetalingsgradEtterReduksjonVedTilkommetInntekt", justertTotalUtbetalingsgradEtterReduksjonVedTilkommetInntekt);
}
}

resultater.put("grenseverdi", grenseverdi);
grunnlag.setGrenseverdi(grenseverdi);
SingleEvaluation resultat = ja();
resultat.setEvaluationProperties(resultater);
return resultat;

}

static BigDecimal min(BigDecimal a, BigDecimal b){
Expand Down

0 comments on commit 826f1fb

Please sign in to comment.