Skip to content

Commit

Permalink
Tilkommet arbeidsforhold skal påvirke uttaksgraden for gamle regler
Browse files Browse the repository at this point in the history
  • Loading branch information
espenjv committed Dec 6, 2024
1 parent e0fe8d8 commit 9e96a13
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,20 @@ import java.time.Duration
import java.time.LocalDate

internal fun Map<Arbeidsforhold, ArbeidsforholdPeriodeInfo>.finnSøkersTapteArbeidstid(
skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper: Boolean
skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper: Boolean,
nyeReglerGjelder: Boolean
): Prosent {
var sumJobberNå = Duration.ZERO
var sumJobberNormalt = Duration.ZERO
val oppdatertArbeid = if (skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper) {
this.filter {
Arbeidstype.values()
.find { arbeidstype -> arbeidstype.kode == it.key.type } !in GRUPPE_SOM_SKAL_SPESIALHÅNDTERES
&& it.value.tilkommet != true
&& (it.value.tilkommet != true || !nyeReglerGjelder)
}
} else {
this.filter {
it.value.tilkommet != true
it.value.tilkommet != true || !nyeReglerGjelder
}
}
oppdatertArbeid.values.forEach {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ internal object BeregnGrader {
beregnGraderGrunnlag.nyeReglerUtbetalingsgrad
)
val søkersTapteArbeidstid =
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper)
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper, gjelderNyeRegler(beregnGraderGrunnlag))
val uttaksgradResultat = avklarUttaksgrad(
beregnGraderGrunnlag,
etablertTilsynsprosent,
Expand Down Expand Up @@ -110,14 +110,18 @@ internal object BeregnGrader {
beregnGraderGrunnlag: BeregnGraderGrunnlag,
maksGradIProsent: Prosent
): GraderBeregnet {
val nyeReglerGjelder = gjelderNyeRegler(beregnGraderGrunnlag)
val etablertTilsynsprosent = finnEtablertTilsynsprosent(beregnGraderGrunnlag.etablertTilsyn)
val skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper =
beregnGraderGrunnlag.arbeid.seBortFraAndreArbeidsforhold(
beregnGraderGrunnlag.periode,
beregnGraderGrunnlag.nyeReglerUtbetalingsgrad
)
val søkersTapteArbeidstid =
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper)
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(
skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper,
nyeReglerGjelder
)
val ønsketUttaksgradProsent = finnØnsketUttaksgradProsent(beregnGraderGrunnlag.oppgittTilsyn);
val ønsketUttaksgrad = minOf(ønsketUttaksgradProsent, maksGradIProsent)
val uttaksgradResultat = avklarUttaksgrad(
Expand Down Expand Up @@ -155,6 +159,12 @@ internal object BeregnGrader {
)
}

private fun gjelderNyeRegler(beregnGraderGrunnlag: BeregnGraderGrunnlag): Boolean {
val nyeReglerGjelder = beregnGraderGrunnlag.nyeReglerUtbetalingsgrad != null
&& !beregnGraderGrunnlag.periode.fom.isBefore(beregnGraderGrunnlag.nyeReglerUtbetalingsgrad)
return nyeReglerGjelder
}

private fun avklarUttaksgrad(
beregnGraderGrunnlag: BeregnGraderGrunnlag,
etablertTilsynprosent: Prosent,
Expand All @@ -167,7 +177,10 @@ internal object BeregnGrader {
beregnGraderGrunnlag.nyeReglerUtbetalingsgrad
)
val søkersTapteArbeidstid =
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper)
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(
skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper,
gjelderNyeRegler(beregnGraderGrunnlag)
)

val restTilSøker =
finnRestTilSøker(
Expand Down Expand Up @@ -201,7 +214,10 @@ internal object BeregnGrader {

if (skalSeBortIfraArbeidstidFraSpesialhåndterteArbeidtyper) {
val søkersTapteArbeidstidUtenAndreArbeidsforhold =
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(true)
beregnGraderGrunnlag.arbeid.finnSøkersTapteArbeidstid(
true,
gjelderNyeRegler(beregnGraderGrunnlag)
)
if (søkersTapteArbeidstidUtenAndreArbeidsforhold < TJUE_PROSENT) {
return UttaksgradResultat(
restTilSøker,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,10 @@ import no.nav.pleiepengerbarn.uttak.regler.NULL_PROSENT
import no.nav.pleiepengerbarn.uttak.regler.TJUE_PROSENT
import no.nav.pleiepengerbarn.uttak.regler.ÅTTI_PROSENT
import no.nav.pleiepengerbarn.uttak.testklient.*
import no.nav.pleiepengerbarn.uttak.testklient.FULL_DAG
import no.nav.security.mock.oauth2.MockOAuth2Server
import no.nav.security.token.support.spring.test.EnableMockOAuth2Server
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
Expand All @@ -24,7 +22,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension
import java.math.BigDecimal
import java.time.Duration
import java.time.LocalDate
import java.util.UUID
import kotlin.test.fail

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
Expand Down Expand Up @@ -732,8 +729,53 @@ class UttakplanApiTest(@Autowired val restTemplate: TestRestTemplate) {
}

@Test
internal fun `Vanlig arbeidsforhold kombinert med arbeidsforhold som er tilkommet`() {
internal fun `Vanlig arbeidsforhold kombinert med arbeidsforhold som er tilkommet - gamle regler`() {
val grunnlag = lagGrunnlag(
nyeReglerUtbetalingsgrad = LocalDate.of(2020, 10, 17),
søknadsperiode = LukketPeriode("2020-10-12/2020-10-16"),
arbeid = listOf(
Arbeid(
ARBEIDSFORHOLD2,
mapOf(
HELE_2020 to ArbeidsforholdPeriodeInfo(
jobberNormalt = FULL_DAG.prosent(70),
jobberNå = FULL_DAG.prosent(70).prosent(50),
tilkommet = true
)
)
),
Arbeid(
ARBEIDSFORHOLD3,
mapOf(
HELE_2020 to ArbeidsforholdPeriodeInfo(
jobberNormalt = FULL_DAG.prosent(20),
jobberNå = INGENTING
)
)
),
),
pleiebehov = mapOf(HELE_2020 to Pleiebehov.PROSENT_100),
)

val uttaksplan = grunnlag.opprettUttaksplan()

uttaksplan.assertOppfylt(
periode = LukketPeriode("2020-10-12/2020-10-16"),
grad = Prosent(61),
gradPerArbeidsforhold = mapOf(
ARBEIDSFORHOLD2 to Prosent(0),
ARBEIDSFORHOLD3 to Prosent(61)
),
oppfyltÅrsak = Årsak.AVKORTET_MOT_INNTEKT,
endringsstatus = Endringsstatus.NY
)
}


@Test
internal fun `Vanlig arbeidsforhold kombinert med arbeidsforhold som er tilkommet - nye regler`() {
val grunnlag = lagGrunnlag(
nyeReglerUtbetalingsgrad = LocalDate.of(2020, 10, 12),
søknadsperiode = LukketPeriode("2020-10-12/2020-10-16"),
arbeid = listOf(
Arbeid(
Expand Down Expand Up @@ -800,7 +842,15 @@ class UttakplanApiTest(@Autowired val restTemplate: TestRestTemplate) {
),
),
pleiebehov = mapOf(HELE_2020 to Pleiebehov.PROSENT_100),
).copy(inntektsgradering = mapOf(LukketPeriode("2020-10-12/2020-10-16") to Inntektsgradering( uttaksgrad = BigDecimal.valueOf(70))))
).copy(
inntektsgradering = mapOf(
LukketPeriode("2020-10-12/2020-10-16") to Inntektsgradering(
uttaksgrad = BigDecimal.valueOf(
70
)
)
)
)

val uttaksplan = grunnlag.opprettUttaksplan()

Expand Down

0 comments on commit 9e96a13

Please sign in to comment.