-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
FAGSYSTEM-363084: Sjekker inntektsgrunnlag og ikkje brutto pr år for …
…å bestemme om grunnlag er over 6G ved beregning av grenseverdi uten fordeling
- Loading branch information
Showing
12 changed files
with
228 additions
and
13 deletions.
There are no files selected for viewing
1 change: 1 addition & 0 deletions
1
...main/java/no/nav/folketrygdloven/beregningsgrunnlag/grenseverdi/RegelFinnGrenseverdi.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
...gsgrunnlag/grenseverdi/utenfordeling/AvkortBGAndelerSomIkkeGjelderArbeidsforholdTil0.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package no.nav.folketrygdloven.beregningsgrunnlag.grenseverdi.utenfordeling; | ||
|
||
import java.math.BigDecimal; | ||
import java.util.HashMap; | ||
import java.util.Map; | ||
|
||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.AktivitetStatus; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPeriode; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPrArbeidsforhold; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPrStatus; | ||
import no.nav.fpsak.nare.doc.RuleDocumentation; | ||
import no.nav.fpsak.nare.evaluation.Evaluation; | ||
import no.nav.fpsak.nare.specification.LeafSpecification; | ||
|
||
@RuleDocumentation(AvkortBGAndelerSomIkkeGjelderArbeidsforholdTil0.ID) | ||
class AvkortBGAndelerSomIkkeGjelderArbeidsforholdTil0 extends LeafSpecification<BeregningsgrunnlagPeriode> { | ||
static final String ID = "FP_BR 29.8.3"; | ||
static final String BESKRIVELSE = "Avkort alle beregningsgrunnlagsandeler som ikke gjelder arbeidsforhold til 0."; | ||
|
||
AvkortBGAndelerSomIkkeGjelderArbeidsforholdTil0() { | ||
super(ID, BESKRIVELSE); | ||
} | ||
|
||
@Override | ||
public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { | ||
|
||
Map<String, Object> resultater = new HashMap<>(); | ||
grunnlag.getBeregningsgrunnlagPrStatus().stream() | ||
.filter(bgps -> !bgps.erArbeidstakerEllerFrilanser()) | ||
.forEach(bgps -> { | ||
BeregningsgrunnlagPrStatus.builder(bgps) | ||
.medAndelsmessigFørGraderingPrAar(BigDecimal.ZERO) | ||
.build(); | ||
resultater.put("avkortetPrÅr.status." + bgps.getAktivitetStatus().name(), bgps.getAvkortetPrÅr()); | ||
}); | ||
|
||
BeregningsgrunnlagPrStatus atfl = grunnlag.getBeregningsgrunnlagPrStatus(AktivitetStatus.ATFL); | ||
if (atfl != null) { | ||
atfl.getFrilansArbeidsforhold().ifPresent(af -> { | ||
BeregningsgrunnlagPrArbeidsforhold.builder(af) | ||
.medAndelsmessigFørGraderingPrAar(BigDecimal.ZERO) | ||
.build(); | ||
resultater.put("avkortetPrÅr.status." + atfl.getAktivitetStatus().name() + "." + af.getArbeidsgiverId(), af.getAvkortetPrÅr()); | ||
}); | ||
} | ||
return beregnet(resultater); | ||
|
||
} | ||
|
||
|
||
|
||
} |
2 changes: 1 addition & 1 deletion
2
...tAndelForArbeidsforholdUtenFordeling.java → ...tAndelForArbeidsforholdUtenFordeling.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...omGjelderArbeidsforholdUtenFordeling.java → ...omGjelderArbeidsforholdUtenFordeling.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...di/RegelFinnGrenseverdiUtenFordeling.java → ...ng/RegelFinnGrenseverdiUtenFordeling.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
...erdi/utenfordeling/SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package no.nav.folketrygdloven.beregningsgrunnlag.grenseverdi.utenfordeling; | ||
|
||
|
||
import java.math.BigDecimal; | ||
|
||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.AktivitetStatus; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPeriode; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPrArbeidsforhold; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPrStatus; | ||
import no.nav.fpsak.nare.doc.RuleDocumentation; | ||
import no.nav.fpsak.nare.evaluation.Evaluation; | ||
import no.nav.fpsak.nare.evaluation.node.SingleEvaluation; | ||
import no.nav.fpsak.nare.specification.LeafSpecification; | ||
|
||
@RuleDocumentation(SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling.ID) | ||
class SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling extends LeafSpecification<BeregningsgrunnlagPeriode> { | ||
|
||
static final String ID = "FP_BR_29.8.2_uten_fordeling"; | ||
static final String BESKRIVELSE = "Er totalt intektsgrunnlag for andeler fra arbeidsforhold større enn 6G?"; | ||
|
||
SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling() { | ||
super(ID, BESKRIVELSE); | ||
} | ||
|
||
@Override | ||
public Evaluation evaluate(BeregningsgrunnlagPeriode grunnlag) { | ||
BigDecimal grenseverdi = grunnlag.getGrenseverdi(); | ||
BeregningsgrunnlagPrStatus atfl = grunnlag.getBeregningsgrunnlagPrStatus(AktivitetStatus.ATFL); | ||
BigDecimal totaltBG = atfl == null ? BigDecimal.ZERO : atfl.getArbeidsforholdIkkeFrilans().stream() | ||
.map(BeregningsgrunnlagPrArbeidsforhold::getInntektsgrunnlagInkludertNaturalytelsePrÅr) | ||
.reduce(BigDecimal.ZERO, BigDecimal::add); | ||
SingleEvaluation resultat = totaltBG.compareTo(grenseverdi) > 0 ? ja() : nei(); | ||
resultat.setEvaluationProperty("totaltBeregningsgrunnlagFraArbeidsforhold", totaltBG); | ||
resultat.setEvaluationProperty("grunnbeløp", grunnlag.getGrunnbeløp()); | ||
resultat.setEvaluationProperty("grenseverdi", grenseverdi); | ||
return resultat; | ||
} | ||
} |
124 changes: 124 additions & 0 deletions
124
.../utenfordeling/SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordelingTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
package no.nav.folketrygdloven.beregningsgrunnlag.grenseverdi.utenfordeling; | ||
|
||
import static no.nav.folketrygdloven.beregningsgrunnlag.util.DateUtil.TIDENES_ENDE; | ||
import static org.assertj.core.api.AssertionsForClassTypes.assertThat; | ||
import static org.junit.jupiter.api.Assertions.*; | ||
|
||
import java.math.BigDecimal; | ||
import java.time.LocalDate; | ||
|
||
import org.junit.jupiter.api.Test; | ||
|
||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.Aktivitet; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.AktivitetStatus; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.Periode; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.Beregningsgrunnlag; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPeriode; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPrArbeidsforhold; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.fastsett.BeregningsgrunnlagPrStatus; | ||
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.grunnlag.inntekt.Arbeidsforhold; | ||
import no.nav.fpsak.nare.evaluation.Evaluation; | ||
import no.nav.fpsak.nare.evaluation.Resultat; | ||
|
||
class SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordelingTest { | ||
|
||
@Test | ||
void skal_gi_resultat_JA_for_inntektsgrunnlag_over_grenseverdi() { | ||
BeregningsgrunnlagPeriode periode = BeregningsgrunnlagPeriode.builder() | ||
.medPeriode(Periode.of(LocalDate.now(), TIDENES_ENDE)) | ||
.medBeregningsgrunnlagPrStatus(BeregningsgrunnlagPrStatus | ||
.builder() | ||
.medAktivitetStatus(AktivitetStatus.ATFL) | ||
.medArbeidsforhold(BeregningsgrunnlagPrArbeidsforhold.builder() | ||
.medAndelNr(1L) | ||
.medBruttoPrÅr(BigDecimal.valueOf(100_000)) | ||
.medInntektsgrunnlagPrÅr(BigDecimal.valueOf(1_000_000)) | ||
.medArbeidsforhold(Arbeidsforhold.builder() | ||
.medOrgnr("999999999") | ||
.medAktivitet(Aktivitet.ARBEIDSTAKERINNTEKT).build()).build()) | ||
.build()).build(); | ||
|
||
Beregningsgrunnlag.builder() | ||
.medBeregningsgrunnlagPeriode(periode) | ||
.medGrunnbeløp(BigDecimal.valueOf(100_000)); | ||
|
||
var evaluate = new SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling().evaluate(periode); | ||
|
||
assertThat(evaluate.result()).isEqualTo(Resultat.JA); | ||
} | ||
|
||
@Test | ||
void skal_gi_resultat_NEI_for_inntektsgrunnlag_under_grenseverdi() { | ||
BeregningsgrunnlagPeriode periode = BeregningsgrunnlagPeriode.builder() | ||
.medPeriode(Periode.of(LocalDate.now(), TIDENES_ENDE)) | ||
.medBeregningsgrunnlagPrStatus(BeregningsgrunnlagPrStatus | ||
.builder() | ||
.medAktivitetStatus(AktivitetStatus.ATFL) | ||
.medArbeidsforhold(BeregningsgrunnlagPrArbeidsforhold.builder() | ||
.medAndelNr(1L) | ||
.medBruttoPrÅr(BigDecimal.valueOf(800_000)) | ||
.medInntektsgrunnlagPrÅr(BigDecimal.valueOf(500_000)) | ||
.medArbeidsforhold(Arbeidsforhold.builder() | ||
.medOrgnr("999999999") | ||
.medAktivitet(Aktivitet.ARBEIDSTAKERINNTEKT).build()).build()) | ||
.build()).build(); | ||
|
||
Beregningsgrunnlag.builder() | ||
.medBeregningsgrunnlagPeriode(periode) | ||
.medGrunnbeløp(BigDecimal.valueOf(100_000)); | ||
|
||
var evaluate = new SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling().evaluate(periode); | ||
|
||
assertThat(evaluate.result()).isEqualTo(Resultat.NEI); | ||
} | ||
|
||
@Test | ||
void skal_gi_resultat_NEI_for_inntektsgrunnlag_ikke_satt() { | ||
BeregningsgrunnlagPeriode periode = BeregningsgrunnlagPeriode.builder() | ||
.medPeriode(Periode.of(LocalDate.now(), TIDENES_ENDE)) | ||
.medBeregningsgrunnlagPrStatus(BeregningsgrunnlagPrStatus | ||
.builder() | ||
.medAktivitetStatus(AktivitetStatus.ATFL) | ||
.medArbeidsforhold(BeregningsgrunnlagPrArbeidsforhold.builder() | ||
.medAndelNr(1L) | ||
.medBruttoPrÅr(BigDecimal.valueOf(800_000)) | ||
.medArbeidsforhold(Arbeidsforhold.builder() | ||
.medOrgnr("999999999") | ||
.medAktivitet(Aktivitet.ARBEIDSTAKERINNTEKT).build()).build()) | ||
.build()).build(); | ||
|
||
Beregningsgrunnlag.builder() | ||
.medBeregningsgrunnlagPeriode(periode) | ||
.medGrunnbeløp(BigDecimal.valueOf(100_000)); | ||
|
||
var evaluate = new SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling().evaluate(periode); | ||
|
||
assertThat(evaluate.result()).isEqualTo(Resultat.NEI); | ||
} | ||
|
||
@Test | ||
void skal_gi_resultat_NEI_for_inntektsgrunnlag_lik_grenseverdi() { | ||
BeregningsgrunnlagPeriode periode = BeregningsgrunnlagPeriode.builder() | ||
.medPeriode(Periode.of(LocalDate.now(), TIDENES_ENDE)) | ||
.medBeregningsgrunnlagPrStatus(BeregningsgrunnlagPrStatus | ||
.builder() | ||
.medAktivitetStatus(AktivitetStatus.ATFL) | ||
.medArbeidsforhold(BeregningsgrunnlagPrArbeidsforhold.builder() | ||
.medAndelNr(1L) | ||
.medBruttoPrÅr(BigDecimal.valueOf(800_000)) | ||
.medInntektsgrunnlagPrÅr(BigDecimal.valueOf(600_000)) | ||
.medArbeidsforhold(Arbeidsforhold.builder() | ||
.medOrgnr("999999999") | ||
.medAktivitet(Aktivitet.ARBEIDSTAKERINNTEKT).build()).build()) | ||
.build()).build(); | ||
|
||
Beregningsgrunnlag.builder() | ||
.medBeregningsgrunnlagPeriode(periode) | ||
.medGrunnbeløp(BigDecimal.valueOf(100_000)); | ||
|
||
var evaluate = new SjekkOmTotaltBGForArbeidsforholdStørreEnnGrenseverdiUtenFordeling().evaluate(periode); | ||
|
||
assertThat(evaluate.result()).isEqualTo(Resultat.NEI); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters