Skip to content

Commit

Permalink
TFP-5544 Opphold pga sykepenger skal ikke påvirkes av helligdager
Browse files Browse the repository at this point in the history
  • Loading branch information
AnjaAalerud committed Aug 15, 2023
1 parent 15ac830 commit 76a4b9c
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 17 deletions.
38 changes: 21 additions & 17 deletions src/main/java/no/nav/svangerskapspenger/domene/søknad/Opphold.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,27 @@ private Opphold(LocalDate fom, LocalDate tom, SvpOppholdÅrsak årsak) {
public static List<Opphold> opprett(LocalDate fom, LocalDate tom, SvpOppholdÅrsak årsak) {
var oppholdPerioder = new ArrayList<Opphold>();
var opppholdPeriode = new Opphold(fom, tom, årsak);
var helligdager = BevegeligeHelligdagerUtil.finnBevegeligeHelligdagerUtenHelg(opppholdPeriode);
for (LocalDate helligdag : helligdager) {
if (opppholdPeriode.overlapper(helligdag)) {
var minstToOppholdDager = opppholdPeriode.getFom().isBefore(opppholdPeriode.getTom());
if (!minstToOppholdDager) {
//Bare en dag, og det er helligdag.
return Collections.emptyList();
} else if (helligdag.equals(opppholdPeriode.getFom())) {
//Helligdag på første dag i oppholdet, kutt en dag i starten av oppholdet.
opppholdPeriode = new Opphold(opppholdPeriode.getFom().plusDays(1), opppholdPeriode.getTom(), årsak);
} else if (helligdag.equals(opppholdPeriode.getTom())) {
//Helligdag på siste dag i oppholdet, kutt en dag i slutten av ophholdet. Resten av helligdagene må være etter oppholdet, og avbryter derfor loopen.
opppholdPeriode = new Opphold(opppholdPeriode.getFom(), opppholdPeriode.getTom().minusDays(1), årsak);
break;
} else {
oppholdPerioder.add(new Opphold(opppholdPeriode.getFom(), helligdag.minusDays(1), årsak));
opppholdPeriode = new Opphold(helligdag.plusDays(1), opppholdPeriode.getTom(), årsak);

//Når det er opphold pga annen ytelse (sykepenger)skal vi ikke ta hensyn til bevegelige helligdager
if (SvpOppholdÅrsak.FERIE.equals(årsak)) {
var helligdager = BevegeligeHelligdagerUtil.finnBevegeligeHelligdagerUtenHelg(opppholdPeriode);
for (LocalDate helligdag : helligdager) {
if (opppholdPeriode.overlapper(helligdag)) {
var minstToOppholdDager = opppholdPeriode.getFom().isBefore(opppholdPeriode.getTom());
if (!minstToOppholdDager) {
//Bare en dag, og det er helligdag.
return Collections.emptyList();
} else if (helligdag.equals(opppholdPeriode.getFom())) {
//Helligdag på første dag i oppholdet, kutt en dag i starten av oppholdet.
opppholdPeriode = new Opphold(opppholdPeriode.getFom().plusDays(1), opppholdPeriode.getTom(), årsak);
} else if (helligdag.equals(opppholdPeriode.getTom())) {
//Helligdag på siste dag i oppholdet, kutt en dag i slutten av ophholdet. Resten av helligdagene må være etter oppholdet, og avbryter derfor loopen.
opppholdPeriode = new Opphold(opppholdPeriode.getFom(), opppholdPeriode.getTom().minusDays(1), årsak);
break;
} else {
oppholdPerioder.add(new Opphold(opppholdPeriode.getFom(), helligdag.minusDays(1), årsak));
opppholdPeriode = new Opphold(helligdag.plusDays(1), opppholdPeriode.getTom(), årsak);
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,4 +138,16 @@ public class OppholdTest {
assertThat(ferieListe.get(1).getTom()).isEqualTo(tom);
}

@Test
public void opphold_grunnet_sykepenger_skal_ikke_påvirkes_av_helligdager() {
var fom = LocalDate.of(2019, 4, 29);
var tom = LocalDate.of(2019, 5, 16);

var ferieListe = Opphold.opprett(fom, tom, SvpOppholdÅrsak.SYKEPENGER);

assertThat(ferieListe).hasSize(1);
assertThat(ferieListe.get(0).getFom()).isEqualTo(fom);
assertThat(ferieListe.get(0).getTom()).isEqualTo(tom);
}

}

0 comments on commit 76a4b9c

Please sign in to comment.