Skip to content

Commit

Permalink
TSF-2434 Lagt til et flag som sier om et Utenlandsopphold er innenfor…
Browse files Browse the repository at this point in the history
… EØS (#473)

Lagt til et felt erEøsLand i Utenlandsopphold DTO objektet.
  • Loading branch information
Johan Henrik authored Mar 31, 2022
1 parent c89ae02 commit 16ce449
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package no.nav.pleiepengerbarn.uttak.kontrakter

class RegionUtil {
fun erIEØS(landkode: String?): Boolean {
val eøsLand: List<String> = listOf(
"ALA", "AUT", "BEL", "BGR", "CYP", "CZE",
"DEU", "DNK", "ESP", "EST", "FIN", "FRA", "FRO", "GBR", "GRC", "GRL",
"HRV", "HUN", "IRL", "ISL", "ITA", "LIE", "LTU", "LUX", "LVA", "MLT",
"NLD", "NOR", "POL", "PRT", "ROU", "SVK", "SVN", "SWE"
)

return eøsLand.contains(landkode)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,13 @@ data class GraderingMotTilsyn @JsonCreator constructor(
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.ANY)
data class Utenlandsopphold @JsonCreator constructor(
@JsonProperty("erEøsLand") val erEøsLand: Boolean?,
@JsonProperty("landkode") val landkode: String? = null,
@JsonProperty("årsak") val årsak: UtenlandsoppholdÅrsak = UtenlandsoppholdÅrsak.INGEN
)
) {
constructor(landkode: String?, utenlandsoppholdÅrsak: UtenlandsoppholdÅrsak) : this(
RegionUtil().erIEØS(landkode),
landkode,
utenlandsoppholdÅrsak
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ private const val MAX_DAGER_PER_ÅR = 8 * 5

internal class UtenlandsoppholdRegel : UttaksplanRegel {


override fun kjør(uttaksplan: Uttaksplan, grunnlag: RegelGrunnlag): Uttaksplan {

val featureToggleUtenlandsoppholdRgel = System.getenv("UTENLANDSOPPHOLD_REGEL").toBoolean()
Expand Down Expand Up @@ -47,18 +46,13 @@ internal class UtenlandsoppholdRegel : UttaksplanRegel {
}
return uttaksplan.copy(perioder = nyePerioder)
}

}

private fun RegelGrunnlag.overlapperMedUtenlandsoppholdUtenGyldigÅrsakUtenforEøs(periode: LukketPeriode): Boolean {
val eøsLand: List<String> = listOf("ALA", "AUT", "BEL", "BGR", "CYP", "CZE",
"DEU", "DNK", "ESP", "EST", "FIN", "FRA", "FRO", "GBR", "GRC", "GRL",
"HRV", "HUN", "IRL", "ISL", "ITA", "LIE", "LTU", "LUX", "LVA", "MLT",
"NLD", "NOR", "POL", "PRT", "ROU", "SVK", "SVN", "SWE")
return this.utenlandsoppholdperioder.any {
(periode.overlapperDelvis(it.key)
&& it.value.utenlandsoppholdÅrsak == UtenlandsoppholdÅrsak.INGEN)
&& !eøsLand.contains(it.value.landkode)
&& !RegionUtil().erIEØS(it.value.landkode)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1280,7 +1280,7 @@ class UttakplanApiTest(@Autowired val restTemplate: TestRestTemplate) {
}

@Test
internal fun `Oppfylte perioder skal lagres med korrekte default verdier for landkode og utenlandsoppholdÅrsak`() {
internal fun `Oppfylte perioder skal lagres med korrekte default verdier for erEøsLand, landkode og utenlandsoppholdÅrsak`() {
val saksnummer = opprettUttakUtenlandsopphold(LukketPeriode("2021-01-04/2021-02-28"))

val søknadsperiode = LukketPeriode("2021-12-13/2021-12-17")
Expand Down Expand Up @@ -1369,6 +1369,46 @@ class UttakplanApiTest(@Autowired val restTemplate: TestRestTemplate) {
landkode = "USA")
}

@Test
internal fun `Oppfylte perioder med utenlandsopphold skal lagres med korrekt verdi for erEøsLand i UttaksperiodeInfo`() {
val søknadsperiode = LukketPeriode("2021-01-04/2021-01-08")

val grunnlag = lagGrunnlag(
søknadsperiode = søknadsperiode,
arbeid = listOf(
Arbeid(ARBEIDSFORHOLD1, mapOf(søknadsperiode to ArbeidsforholdPeriodeInfo(jobberNormalt = FULL_DAG, jobberNå = INGENTING)))
),
pleiebehov = mapOf(søknadsperiode to Pleiebehov.PROSENT_100),
).copy(
utenlandsoppholdperioder = mapOf(LukketPeriode("2021-01-05/2021-01-07")
to UtenlandsoppholdInfo(UtenlandsoppholdÅrsak.INGEN, "SWE"))
)
val uttaksplan = grunnlag.opprettUttaksplan()

uttaksplan.assertOppfylt(periode = LukketPeriode("2021-01-05/2021-01-07"), utenlandsoppholdUtenÅrsak = false,
utenlandsoppholdÅrsak = UtenlandsoppholdÅrsak.INGEN, landkode = "SWE")
}

@Test
internal fun `Ikke oppfylte perioder med utenlandsopphold skal lagres med korrekt verdi for erEøsLand i UttaksperiodeInfo`() {
val søknadsperiode = LukketPeriode("2021-01-04/2021-01-08")

val grunnlag = lagGrunnlag(
søknadsperiode = søknadsperiode,
arbeid = listOf(
Arbeid(ARBEIDSFORHOLD1, mapOf(søknadsperiode to ArbeidsforholdPeriodeInfo(jobberNormalt = FULL_DAG, jobberNå = INGENTING)))
),
pleiebehov = mapOf(søknadsperiode to Pleiebehov.PROSENT_100),
).copy(
utenlandsoppholdperioder = mapOf(LukketPeriode("2021-01-05/2021-01-07")
to UtenlandsoppholdInfo(UtenlandsoppholdÅrsak.BARNET_INNLAGT_I_HELSEINSTITUSJON_FOR_NORSK_OFFENTLIG_REGNING, "USA"))
)
val uttaksplan = grunnlag.opprettUttaksplan()

uttaksplan.assertOppfylt(periode = LukketPeriode("2021-01-05/2021-01-07"), utenlandsoppholdUtenÅrsak = false,
utenlandsoppholdÅrsak = UtenlandsoppholdÅrsak.BARNET_INNLAGT_I_HELSEINSTITUSJON_FOR_NORSK_OFFENTLIG_REGNING, landkode = "USA")
}

@Test
internal fun `Oppfylte perioder med utenlandsopphold skal lagres med korrekt utenlandsoppholdÅrsak i UttaksperiodeInfo`() {
val søknadsperiode = LukketPeriode("2021-01-04/2021-01-08")
Expand Down Expand Up @@ -1546,6 +1586,7 @@ class UttakplanApiTest(@Autowired val restTemplate: TestRestTemplate) {
val periodeInfo = perioder[periode] ?: fail("Finner ikke periode: $periode")
when (periodeInfo.utfall) {
Utfall.OPPFYLT -> {
assertThat(periodeInfo.utenlandsopphold?.erEøsLand).isEqualTo(RegionUtil().erIEØS(landkode))
assertThat(periodeInfo.utenlandsopphold?.landkode).isEqualTo(landkode)
assertThat(periodeInfo.utenlandsopphold?.årsak).isEqualTo(utenlandsoppholdÅrsak)
}
Expand Down Expand Up @@ -1585,6 +1626,7 @@ class UttakplanApiTest(@Autowired val restTemplate: TestRestTemplate) {
val periodeInfo = perioder[periode] ?: fail("Finner ikke periode: $periode")
when (periodeInfo.utfall) {
Utfall.IKKE_OPPFYLT -> {
assertThat(periodeInfo.utenlandsopphold?.erEøsLand).isEqualTo(RegionUtil().erIEØS(landkode))
assertThat(periodeInfo.utenlandsopphold?.landkode).isEqualTo(landkode)
assertThat(periodeInfo.utenlandsopphold?.årsak).isEqualTo(utenlandsoppholdÅrsak)
}
Expand Down

0 comments on commit 16ce449

Please sign in to comment.