Skip to content

Commit

Permalink
Merge pull request #686 from navikt/teller_dager_i_KontrollPeriode_re…
Browse files Browse the repository at this point in the history
…gel33

teller nå antall dager i kontrollperioden og ikke alle dager i hele p…
  • Loading branch information
hjmNav authored Oct 25, 2024
2 parents cbcc4d1 + af1d133 commit 3a484c0
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,20 @@ data class Arbeidsforhold(
}
return antallDagerIHverPermisjon.sum().toInt()
}
fun List<PermisjonPermittering>.totaltantallDagerIKontrollPeriode(kontrollPeriode: Kontrollperiode): Int {

val antallDagerIHverPermisjon = this.map {

var fom = kontrollPeriode.fom
if (it.periode.fom != null && it.periode.fom.isAfter(kontrollPeriode.periode.fom)){
fom = it.periode.fom
}
val tom = it.periode.tom ?: LocalDate.now()
ChronoUnit.DAYS.between(fom,tom)
}
return antallDagerIHverPermisjon.sum().toInt()
}


fun List<Arbeidsforhold>.alleAktiveYrkeskoderDerTomErNull(): List<String> {
return this.flatMap { arbeidsforhold ->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package no.nav.medlemskap.regler.v1.arbeidsforhold

import mu.KotlinLogging
import no.nav.medlemskap.domene.Datagrunnlag
import no.nav.medlemskap.domene.Periode
import no.nav.medlemskap.domene.Ytelse
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.hentAllePermisjonerSiden
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.totaltantallDager
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.totaltantallDagerIKontrollPeriode
import no.nav.medlemskap.regler.common.RegelId
import no.nav.medlemskap.regler.common.Resultat
import no.nav.medlemskap.regler.common.Resultat.Companion.ja
Expand All @@ -26,7 +25,7 @@ class ErSummenAvPermisjonenMerEnn30DagerSiste12Mnd(


val allePermisjonerSomLøperForMindreEnEtÅrSiden = arbeidsforhold.hentAllePermisjonerSiden(startDatoForYtelse.minusYears(1))
val totaltAntallDagerPermisjon = allePermisjonerSomLøperForMindreEnEtÅrSiden.totaltantallDager()
val totaltAntallDagerPermisjon = allePermisjonerSomLøperForMindreEnEtÅrSiden.totaltantallDagerIKontrollPeriode(kontrollPeriodeForArbeidsforhold)
if (totaltAntallDagerPermisjon > 30){
return ja(regelId)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package no.nav.medlemskap.domene.arbeidsforhold

import assertk.assertThat
import assertk.assertions.isEqualTo
import kotlinx.serialization.builtins.LongArraySerializer
import no.nav.medlemskap.domene.Kontrollperiode
import no.nav.medlemskap.domene.Periode
import no.nav.medlemskap.domene.Ytelse
Expand All @@ -14,7 +13,7 @@ import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.erArbeid
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.filtrerUtArbeidsgivereMedFærreEnn6Ansatte
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.fraOgMedDatoForArbeidsforhold
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.harBrukerJobbetMerEnnGittStillingsprosentTilEnhverTid
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.totaltantallDager
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.totaltantallDagerIKontrollPeriode
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.vektetStillingsprosentForArbeidsforhold
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Assertions.*
Expand All @@ -39,6 +38,7 @@ class ArbeidsforholdTest {

@Test
fun `Tell antall dager med Permisjoner i PermisjonsPermiteringsLista uten null verdier`() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjon = PermisjonPermittering(
Periode(
fom = LocalDate.now().minusDays(10),
Expand All @@ -49,11 +49,12 @@ class ArbeidsforholdTest {
PermisjonPermitteringType.ANDRE_IKKE_LOVFESTEDE_PERMISJONER,
varslingskode = ""
)
val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDager()
val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(10,antall_dager)
}
@Test
fun `Tell antall dager med Permisjoner i PermisjonsPermiteringsLista med null verdi i tom`() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjon = PermisjonPermittering(
Periode(
fom = LocalDate.now().minusDays(10),
Expand All @@ -64,11 +65,12 @@ class ArbeidsforholdTest {
PermisjonPermitteringType.ANDRE_IKKE_LOVFESTEDE_PERMISJONER,
varslingskode = ""
)
val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDager()
val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(10,antall_dager)
}
@Test
fun `Tell antall dager med Permisjoner i PermisjonsPermiteringsLista med null verdi i fom`() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjon = PermisjonPermittering(
Periode(
fom = null,
Expand All @@ -79,12 +81,13 @@ class ArbeidsforholdTest {
PermisjonPermitteringType.ANDRE_IKKE_LOVFESTEDE_PERMISJONER,
varslingskode = ""
)
val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDager()
val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(20,antall_dager)
}

@Test
fun `Tell antall dager med Permisjoner i PermisjonsPermiteringsLista med flere verdier null verdi i tom`() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjon = PermisjonPermittering(
Periode(
fom = LocalDate.now().minusDays(10),
Expand All @@ -105,10 +108,46 @@ class ArbeidsforholdTest {
PermisjonPermitteringType.ANDRE_LOVFESTEDE_PERMISJONER,
varslingskode = ""
)
val antall_dager = listOf<PermisjonPermittering>(permisjon,permitering).totaltantallDager()
val antall_dager = listOf<PermisjonPermittering>(permisjon,permitering).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(18,antall_dager)
}

@Test
fun `Tell antall dager skal kunn tele dager innenfor kontrollPerioden`() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjon = PermisjonPermittering(
Periode(
fom = LocalDate.now().minusYears(1).minusMonths(3),
tom = LocalDate.now().minusYears(1).plusDays(10),
),
permisjonPermitteringId = UUID.randomUUID().toString(),
prosent = 10.0,
PermisjonPermitteringType.ANDRE_IKKE_LOVFESTEDE_PERMISJONER,
varslingskode = ""
)

val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(10,antall_dager)
}

@Test
fun `Tell antall dager skal kunn telle dager innenfor kontrollPerioden permisjon starter i kontroll periode`() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjon = PermisjonPermittering(
Periode(
fom = LocalDate.now().minusMonths(2),
tom = LocalDate.now().minusMonths(2).plusDays(10),
),
permisjonPermitteringId = UUID.randomUUID().toString(),
prosent = 10.0,
PermisjonPermitteringType.ANDRE_IKKE_LOVFESTEDE_PERMISJONER,
varslingskode = ""
)

val antall_dager = listOf<PermisjonPermittering>(permisjon).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(10,antall_dager)
}



@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package no.nav.medlemskap.domene.arbeidsforhold

import no.nav.medlemskap.domene.Kontrollperiode
import no.nav.medlemskap.domene.Periode
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.finnOverlappendePermisjoner
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.totaltantallDager
import no.nav.medlemskap.domene.arbeidsforhold.Arbeidsforhold.Companion.totaltantallDagerIKontrollPeriode

import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import java.time.LocalDate
Expand Down Expand Up @@ -74,6 +76,7 @@ class PermisjonPermiteringTest {
}
@Test
fun TellAlleDagerIPermisjonsTestMedEnPermitering() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjonPermittering = PermisjonPermittering(
Periode(fom = LocalDate.now().minusDays(10),
tom = LocalDate.now().plusDays(10)),
Expand All @@ -83,11 +86,12 @@ class PermisjonPermiteringTest {
varslingskode = "",
)

val antallDagerPermisjon = listOf(permisjonPermittering).totaltantallDager()
val antallDagerPermisjon = listOf(permisjonPermittering).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(20,antallDagerPermisjon,"Totalt antall dager er ikke kalkulert korrekt")
}
@Test
fun TellAlleDagerIPermisjonsTestFlerePermiteringer() {
val kontrollperiode = Kontrollperiode(LocalDate.now().minusYears(1), LocalDate.now())
val permisjonPermittering = PermisjonPermittering(
Periode(fom = LocalDate.now().minusDays(10),
tom = LocalDate.now().plusDays(10)),
Expand All @@ -97,7 +101,7 @@ class PermisjonPermiteringTest {
varslingskode = "",
)

val antallDagerPermisjon = listOf(permisjonPermittering,permisjonPermittering).totaltantallDager()
val antallDagerPermisjon = listOf(permisjonPermittering,permisjonPermittering).totaltantallDagerIKontrollPeriode(kontrollperiode)
Assertions.assertEquals(40,antallDagerPermisjon,"Totalt antall dager er ikke kalkulert korrekt")
}

Expand Down

0 comments on commit 3a484c0

Please sign in to comment.