Skip to content

Commit

Permalink
Lag samording av ytelser utenfor folketrgyden etter
Browse files Browse the repository at this point in the history
praksis

Den nedjusteret til, men ikke under, 3% av grunnbeløpet

Co-authored-by: Geir André Lund <[email protected]>
Co-authored-by: Richard Andre Martinsen <[email protected]>
Co-authored-by: Eivind Havnelid Røyrvik <[email protected]>
  • Loading branch information
4 people committed Nov 21, 2024
1 parent a6a3d13 commit 0ed16e9
Show file tree
Hide file tree
Showing 11 changed files with 221 additions and 151 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import no.nav.dagpenger.opplysning.regel.divisjon
import no.nav.dagpenger.opplysning.regel.enAv
import no.nav.dagpenger.opplysning.regel.høyesteAv
import no.nav.dagpenger.opplysning.regel.innhentes
import no.nav.dagpenger.opplysning.regel.minstAv
import no.nav.dagpenger.opplysning.regel.multiplikasjon
import no.nav.dagpenger.opplysning.regel.oppslag
import no.nav.dagpenger.opplysning.regel.substraksjonTilNull
Expand All @@ -22,35 +23,35 @@ import no.nav.dagpenger.regel.fastsetting.DagpengenesStørrelse.arbeidsdagerPerU
object SamordingUtenforFolketrygden {
val andreYtelser = Opplysningstype.somBoolsk("Oppgitt andre ytelser utenfor NAV i søknaden".id(OppgittAndreYtelserUtenforNav))

val pensjonFraOffentligTjenestepensjonsordning = Opplysningstype.somBoolsk("Mottar pensjon fra en offentlig tjenestepensjonsordning")
val redusertUførepensjon = Opplysningstype.somBoolsk("Mottar redusert uførepensjon fra offentlig pensjonsordning")
val vartpenger = Opplysningstype.somBoolsk("Mottar vartpenger")
val ventelønn = Opplysningstype.somBoolsk("Mottar ventelønn")
val etterlønn = Opplysningstype.somBoolsk("Mottar etterlønn")
val garantilottGFF = Opplysningstype.somBoolsk("Mottar garantilott fra Garantikassen for fiskere.")
private val pensjonFraOffentligTjenestepensjonsordning =
Opplysningstype.somBoolsk(
"Mottar pensjon fra en offentlig tjenestepensjonsordning",
)
private val redusertUførepensjon = Opplysningstype.somBoolsk("Mottar redusert uførepensjon fra offentlig pensjonsordning")
private val vartpenger = Opplysningstype.somBoolsk("Mottar vartpenger")
private val ventelønn = Opplysningstype.somBoolsk("Mottar ventelønn")
private val etterlønn = Opplysningstype.somBoolsk("Mottar etterlønn")
private val garantilottGFF = Opplysningstype.somBoolsk("Mottar garantilott fra Garantikassen for fiskere.")
val andreØkonomiskeYtelser =
Opplysningstype.somBoolsk(
"Mottar andre økonomiske ytelser fra arbeidsgiver eller tidligere arbeidsgiver enn lønn".id(AndreØkonomiskeYtelser),
)

val terskelVedSamordning = Opplysningstype.somDesimaltall("Hvor mange prosent av G skal brukes som terskel ved samordning")
val minsteUkessatsEtterSamordning = Opplysningstype.somBeløp("Beløp tilsvarende nedre terskel av G")
private val terskelVedSamordning = Opplysningstype.somDesimaltall("Hvor mange prosent av G skal brukes som terskel ved samordning")
val nedreGrenseForSamordning = Opplysningstype.somBeløp("Beløp tilsvarende nedre terskel av G")
val skalSamordnesUtenforFolketrygden = Opplysningstype.somBoolsk("Skal samordnes med ytelser utenfor folketrygden")

val sumDetSkalSamordnesMot = Opplysningstype.somBeløp("Penger fra utsida som skal samordnes mot")
val denRosaStrekenUnderDenRøde = Opplysningstype.somBeløp("Rosa strek")
val redusertUkessatsEtterSamordning = Opplysningstype.somBeløp("Redusert")
val samordnetUkessats = Opplysningstype.somBeløp("Samordnet")
val enAnnenUkessats = Opplysningstype.somBeløp("Samordnet ukessats uten barnetillegg")
val dobbeltSåSamordnetDagsats = Opplysningstype.somBeløp("Samordnet innvending og utvending dagsats uten barnetillegg")
val sumAvYtelserUtenforFolketrygden = Opplysningstype.somBeløp("Sum av ytelser utenfor folketrygden")
val samordnetUkessatsUtenBarnetillegg = Opplysningstype.somBeløp("Samordnet ukessats uten barnetillegg")
private val minsteMuligeUkessats = Opplysningstype.somBeløp("Minste mulige ukessats som som kan brukes")
private val samordnetUkessatsUtenforFolketrygden = Opplysningstype.somBeløp("Ukessats trukket ned for ytelser utenfor folketrygden")
val samordnetUkessats = Opplysningstype.somBeløp("Samordnet ukessats med ytelser utenfor folketrygden")
val dagsatsSamordnetUtenforFolketrygden = Opplysningstype.somBeløp("Dagsats uten barnetillegg samordnet")

val regelsett =
Regelsett("§ 4-26.Samordning med ytelser utenfor folketrygden") {
regel(andreYtelser) { innhentes }

regel(terskelVedSamordning) { oppslag(prøvingsdato) { 0.03 } }
regel(minsteUkessatsEtterSamordning) { multiplikasjon(grunnbeløpForDagpengeGrunnlag, terskelVedSamordning) }

regel(pensjonFraOffentligTjenestepensjonsordning) { oppslag(prøvingsdato) { false } }
regel(redusertUførepensjon) { oppslag(prøvingsdato) { false } }
regel(vartpenger) { oppslag(prøvingsdato) { false } }
Expand All @@ -60,15 +61,20 @@ object SamordingUtenforFolketrygden {

regel(andreØkonomiskeYtelser) { innhentes }

regel(sumDetSkalSamordnesMot) { oppslag(prøvingsdato) { Beløp(0.0) } }
regel(denRosaStrekenUnderDenRøde) { substraksjonTilNull(minsteUkessatsEtterSamordning, sumDetSkalSamordnesMot) }
regel(sumAvYtelserUtenforFolketrygden) { oppslag(prøvingsdato) { Beløp(0.0) } }

regel(enAnnenUkessats) { multiplikasjon(samordnetDagsats, arbeidsdagerPerUke) }
regel(redusertUkessatsEtterSamordning) { substraksjonTilNull(enAnnenUkessats, sumDetSkalSamordnesMot) }
regel(terskelVedSamordning) { oppslag(prøvingsdato) { 0.03 } }
regel(nedreGrenseForSamordning) { multiplikasjon(grunnbeløpForDagpengeGrunnlag, terskelVedSamordning) }

regel(samordnetUkessatsUtenBarnetillegg) { multiplikasjon(samordnetDagsats, arbeidsdagerPerUke) }

regel(samordnetUkessats) { høyesteAv(redusertUkessatsEtterSamordning, denRosaStrekenUnderDenRøde) }
regel(minsteMuligeUkessats) { minstAv(samordnetUkessatsUtenBarnetillegg, nedreGrenseForSamordning) }
regel(samordnetUkessatsUtenforFolketrygden) {
substraksjonTilNull(samordnetUkessatsUtenBarnetillegg, sumAvYtelserUtenforFolketrygden)
}
regel(samordnetUkessats) { høyesteAv(minsteMuligeUkessats, samordnetUkessatsUtenforFolketrygden) }

regel(dobbeltSåSamordnetDagsats) { divisjon(samordnetUkessats, arbeidsdagerPerUke) }
regel(dagsatsSamordnetUtenforFolketrygden) { divisjon(samordnetUkessats, arbeidsdagerPerUke) }

regel(skalSamordnesUtenforFolketrygden) {
enAv(
Expand All @@ -84,7 +90,7 @@ object SamordingUtenforFolketrygden {
}
}

val ønsketResultat = listOf(skalSamordnesUtenforFolketrygden)
val ønsketResultat = listOf(skalSamordnesUtenforFolketrygden, dagsatsSamordnetUtenforFolketrygden)

val YtelserUtenforFolketrygdenKontrollPunkt =
Kontrollpunkt(sjekker = Avklaringspunkter.YtelserUtenforFolketrygden) { opplysninger ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import no.nav.dagpenger.opplysning.regel.substraksjonTilNull
import no.nav.dagpenger.opplysning.verdier.Beløp
import no.nav.dagpenger.regel.Avklaringspunkter.BarnMåGodkjennes
import no.nav.dagpenger.regel.Behov.Barnetillegg
import no.nav.dagpenger.regel.Samordning.samordnetDagsats
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.dagsatsSamordnetUtenforFolketrygden
import no.nav.dagpenger.regel.Søknadstidspunkt.prøvingsdato
import no.nav.dagpenger.regel.Søknadstidspunkt.søknadIdOpplysningstype
import java.math.BigDecimal
Expand Down Expand Up @@ -91,7 +91,7 @@ object DagpengenesStørrelse {
regel(dagsatsEtterNittiProsent) { substraksjonTilNull(avrundetDagsatsUtenBarnetillegg, beløpOverMaks) }

// Regn ut samordnet dagsats med barnetillegg, begrenset til 90% av dagpengegrunnlaget
regel(samordnetDagsatsMedBarnetillegg) { addisjon(samordnetDagsats, barnetillegg) }
regel(samordnetDagsatsMedBarnetillegg) { addisjon(dagsatsSamordnetUtenforFolketrygden, barnetillegg) }
regel(dagsatsEtterSamordningMedBarnetillegg) { minstAv(samordnetDagsatsMedBarnetillegg, avrundetMaksSats) }

// Regn ut ukessats
Expand All @@ -101,7 +101,7 @@ object DagpengenesStørrelse {
regel(harBarnetillegg) { størreEnnEllerLik(barnetillegg, barnetilleggetsStørrelse) }
}

val ønsketResultat = listOf(ukessats, samordnetDagsats)
val ønsketResultat = listOf(ukessats, dagsatsSamordnetUtenforFolketrygden)

val BarnetilleggKontroll =
Kontrollpunkt(BarnMåGodkjennes) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ import no.nav.dagpenger.opplysning.verdier.Beløp
import no.nav.dagpenger.regel.RegelverkDagpenger
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.andreYtelser
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.andreØkonomiskeYtelser
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.enAnnenUkessats
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.minsteUkessatsEtterSamordning
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.nedreGrenseForSamordning
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.samordnetUkessats
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.samordnetUkessatsUtenBarnetillegg
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.skalSamordnesUtenforFolketrygden
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.sumDetSkalSamordnesMot
import no.nav.dagpenger.regel.SamordingUtenforFolketrygden.sumAvYtelserUtenforFolketrygden
import no.nav.dagpenger.regel.Søknadstidspunkt
import no.nav.dagpenger.regel.fastsetting.DagpengenesStørrelse.arbeidsdagerPerUke

Expand Down Expand Up @@ -55,17 +55,17 @@ class SamordningUtenforFolketrygdenSteg : No {
}

Gitt("søker har ukessats {string}") { sats: String ->
opplysninger.leggTil(Faktum(enAnnenUkessats, Beløp(sats.toBigDecimal())))
opplysninger.leggTil(Faktum(samordnetUkessatsUtenBarnetillegg, Beløp(sats.toBigDecimal())))
}

Gitt("søker har oppgitt ytelse med {string} utbetalt per uke") { beløp: String ->
opplysninger.leggTil(Faktum(andreYtelser, true))
opplysninger.leggTil(Faktum(sumDetSkalSamordnesMot, Beløp(beløp.toBigDecimal())))
opplysninger.leggTil(Faktum(sumAvYtelserUtenforFolketrygden, Beløp(beløp.toBigDecimal())))
regelkjøring.evaluer()
}

Så("skal vi endre ukessats til {string}") { nySats: String ->
opplysninger.finnOpplysning(minsteUkessatsEtterSamordning).verdi shouldBe Beløp(3720.84)
opplysninger.finnOpplysning(nedreGrenseForSamordning).verdi shouldBe Beløp(3720.84)
opplysninger.finnOpplysning(samordnetUkessats).verdi shouldBe Beløp(nySats.toBigDecimal())
}
Så("skal vi endre dagsats til {string}") { nySats: String ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ Egenskap: § 4-26.Samordning med ytelser utenfor folketrygden
Og skal vi endre dagsats til "<samordnet dagsats>"
Eksempler:
| ukessats | beløp | samordnet ukessats | samordnet dagsats |
| 1000 | 500 | 3220.84 | 644.168 |
| 3000 | 500 | 3220.84 | 644.168 |
| 3800 | 500 | 3300 | 660 |
| 3800 | 1500 | 2300 | 460 |
| 1000 | 500 | 1000 | 200 |
| 3000 | 500 | 3000 | 600 |
| 3800 | 500 | 3720.84 | 744.168 |
| 3800 | 1500 | 3720.84 | 744.168 |
| 6000 | 500 | 5500 | 1100 |
| 3200 | 15000 | 0 | 0 |
| 3200 | 15000 | 3200 | 640 |
Loading

0 comments on commit 0ed16e9

Please sign in to comment.