From 76a4b9c6ebddc71f3bea4f7eaaa84664ce707411 Mon Sep 17 00:00:00 2001 From: anjaaalerud Date: Tue, 15 Aug 2023 16:28:55 +0200 Subject: [PATCH] =?UTF-8?q?TFP-5544=20Opphold=20pga=20sykepenger=20skal=20?= =?UTF-8?q?ikke=20p=C3=A5virkes=20av=20helligdager?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domene/s\303\270knad/Opphold.java" | 38 ++++++++++--------- .../domene/s\303\270knad/OppholdTest.java" | 12 ++++++ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git "a/src/main/java/no/nav/svangerskapspenger/domene/s\303\270knad/Opphold.java" "b/src/main/java/no/nav/svangerskapspenger/domene/s\303\270knad/Opphold.java" index e5c3707..479803d 100644 --- "a/src/main/java/no/nav/svangerskapspenger/domene/s\303\270knad/Opphold.java" +++ "b/src/main/java/no/nav/svangerskapspenger/domene/s\303\270knad/Opphold.java" @@ -24,23 +24,27 @@ private Opphold(LocalDate fom, LocalDate tom, SvpOppholdÅrsak årsak) { public static List opprett(LocalDate fom, LocalDate tom, SvpOppholdÅrsak årsak) { var oppholdPerioder = new ArrayList(); 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); + } } } } diff --git "a/src/test/java/no/nav/svangerskapspenger/domene/s\303\270knad/OppholdTest.java" "b/src/test/java/no/nav/svangerskapspenger/domene/s\303\270knad/OppholdTest.java" index 457ee33..0fd0b1e 100644 --- "a/src/test/java/no/nav/svangerskapspenger/domene/s\303\270knad/OppholdTest.java" +++ "b/src/test/java/no/nav/svangerskapspenger/domene/s\303\270knad/OppholdTest.java" @@ -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); + } + }