Skip to content

Commit 4c148e1

Browse files
committed
TFP-5383 Dropp permisjon utenfor innhentingsintervall
1 parent 22a3312 commit 4c148e1

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/tjeneste/dto/arbeidsforhold/ArbeidsforholdDtoTjeneste.java

+4-12
Original file line numberDiff line numberDiff line change
@@ -80,23 +80,23 @@ private List<ArbeidsavtaleDto> tilArbeidsavtaler(List<Arbeidsforhold> arbeidsfor
8080
}
8181

8282
private List<ArbeidsavtaleDto> mapArbeidsavtaler(Arbeidsforhold arbeidsforhold) {
83-
var ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom());
83+
var ansettelse = new LocalDateInterval(Tid.fomEllerMin(arbeidsforhold.getArbeidFom()), Tid.tomEllerMax(arbeidsforhold.getArbeidTom()));
8484
var arbeidsavtalerTidlinje = arbeidsforhold.getArbeidsavtaler().stream()
8585
.filter(arbeidsavtale -> !arbeidsavtale.getErAnsettelsesPerioden())
8686
.filter(arbeidsavtale -> arbeidsavtale.getStillingsprosent() != null)
87-
.map(a -> new LocalDateSegment<>(safeFom(a.getArbeidsavtaleFom()), safeTom(a.getArbeidsavtaleTom()), a.getStillingsprosent()))
87+
.map(a -> new LocalDateSegment<>(Tid.fomEllerMin(a.getArbeidsavtaleFom()), Tid.tomEllerMax(a.getArbeidsavtaleTom()), a.getStillingsprosent()))
8888
.collect(Collectors.collectingAndThen(Collectors.toList(), LocalDateTimeline::new));
8989
return arbeidsavtalerTidlinje.intersection(ansettelse).stream()
9090
.map(s -> new ArbeidsavtaleDto(new Periode(s.getFom(), s.getTom()), s.getValue()))
9191
.toList();
9292
}
9393

9494
private List<PermisjonDto> mapPermisjoner(Arbeidsforhold arbeidsforhold) {
95-
var ansettelse = new LocalDateInterval(arbeidsforhold.getArbeidFom(), arbeidsforhold.getArbeidTom());
95+
var ansettelse = new LocalDateInterval(Tid.fomEllerMin(arbeidsforhold.getArbeidFom()), Tid.tomEllerMax(arbeidsforhold.getArbeidTom()));
9696

9797
var permisjonTidslinje = arbeidsforhold.getPermisjoner().stream()
9898
.filter(permisjon -> permisjon.permisjonsprosent() != null)
99-
.map(p -> new LocalDateSegment<>(safeFom(p.permisjonFom()), safeTom(p.permisjonTom()),
99+
.map(p -> new LocalDateSegment<>(Tid.fomEllerMin(p.permisjonFom()), Tid.tomEllerMax(p.permisjonTom()),
100100
List.of(new PermisjonTidslinjeObjekt(p.permisjonsprosent(), p.permisjonsÅrsak()))))
101101
.collect(Collectors.collectingAndThen(Collectors.toList(), datoSegmenter -> new LocalDateTimeline<>(datoSegmenter,
102102
StandardCombinators::concatLists)));
@@ -113,14 +113,6 @@ private static List<PermisjonDto> tilPermisjonDto(LocalDateSegment<List<Permisjo
113113
.medProsentsats(permisjon.permisjonsprosent())).toList();
114114
}
115115

116-
private static LocalDate safeFom(LocalDate fom) {
117-
return fom != null ? fom : Tid.TIDENES_BEGYNNELSE;
118-
}
119-
120-
private static LocalDate safeTom(LocalDate tom) {
121-
return tom!= null ? tom: Tid.TIDENES_ENDE;
122-
}
123-
124116
private record PermisjonTidslinjeObjekt(BigDecimal permisjonsprosent, String permisjonsÅrsak) {}
125117

126118
private List<Periode> mapAnsettelsesPerioder(List<Arbeidsforhold> arbeidsforhold) {

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/registerdata/arbeidsforhold/ArbeidsforholdTjeneste.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.util.UUID;
88
import java.util.stream.Collectors;
99

10+
import no.nav.vedtak.konfig.Tid;
11+
1012
import org.slf4j.Logger;
1113
import org.slf4j.LoggerFactory;
1214

@@ -89,9 +91,13 @@ private Arbeidsforhold mapArbeidsforholdRSTilDto(ArbeidsforholdRS arbeidsforhold
8991
.map(aa -> byggArbeidsavtaleRS(aa, arbeidsforhold))
9092
.filter(av -> overlapperMedIntervall(av, intervall))
9193
.collect(Collectors.toList()));
94+
9295
builder.medAnsettelsesPeriode(byggAnsettelsesPeriodeRS(arbeidsforhold));
9396

94-
builder.medPermisjon(arbeidsforhold.getPermisjonPermitteringer().stream().map(this::byggPermisjonRS).collect(Collectors.toList()));
97+
builder.medPermisjon(arbeidsforhold.getPermisjonPermitteringer().stream()
98+
.map(this::byggPermisjonRS)
99+
.filter(p -> overlapperMedIntervall(p, intervall))
100+
.collect(Collectors.toList()));
95101

96102
return builder.build();
97103
}
@@ -173,6 +179,13 @@ private boolean overlapperMedIntervall(Arbeidsavtale av, IntervallEntitet interv
173179
return interval.overlapper(interval1);
174180
}
175181

182+
private boolean overlapperMedIntervall(Permisjon p, IntervallEntitet interval) {
183+
final var interval1 = p.permisjonTom() == null
184+
? IntervallEntitet.fraOgMed(Tid.fomEllerMin(p.permisjonFom()))
185+
: IntervallEntitet.fraOgMedTilOgMed(Tid.fomEllerMin(p.permisjonFom()), p.permisjonTom());
186+
return interval.overlapper(interval1);
187+
}
188+
176189
record Key(Arbeidsgiver arbeidsgiver, EksternArbeidsforholdRef arbeidsforholdId) {
177190
}
178191
}

0 commit comments

Comments
 (0)