Skip to content

Commit d706650

Browse files
authored
TFP-6443 første del av opprydding i søknaddto (#7644)
1 parent c3a528a commit d706650

File tree

19 files changed

+408
-281
lines changed

19 files changed

+408
-281
lines changed

domenetjenester/inngangsvilkar/src/main/java/no/nav/foreldrepenger/inngangsvilkaar/søknad/InngangsvilkårEngangsstønadSøknadsfrist.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public class InngangsvilkårEngangsstønadSøknadsfrist implements Inngangsvilk
4141
}
4242

4343
private VilkårData vurderSøknadsfristOppfyltAutomatisk(BehandlingReferanse ref) {
44-
var fristdata = fristTjeneste.finnSøknadsfrist(ref.behandlingId()).orElseThrow();
44+
var fristdata = fristTjeneste.finnSøknadsfrist(ref.behandlingId());
4545

4646
var søknadMottattDato = fristdata.getSøknadMottattDato();
4747
var fristdato = fristdata.getUtledetSøknadsfrist();
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package no.nav.foreldrepenger.skjæringstidspunkt;
22

3-
import java.util.Optional;
4-
53
import no.nav.foreldrepenger.behandling.Søknadsfristdatoer;
64

75
public interface SøknadsperiodeFristTjeneste {
86

9-
Optional<Søknadsfristdatoer> finnSøknadsfrist(Long behandlingId);
7+
Søknadsfristdatoer finnSøknadsfrist(Long behandlingId);
108

119
}

domenetjenester/skjaeringstidspunkt/src/main/java/no/nav/foreldrepenger/skjæringstidspunkt/SøknadsperiodeFristTjenesteImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package no.nav.foreldrepenger.skjæringstidspunkt;
22

3-
import java.util.Optional;
4-
53
import jakarta.enterprise.context.ApplicationScoped;
64
import jakarta.inject.Inject;
75

@@ -34,7 +32,7 @@ public class SøknadsperiodeFristTjenesteImpl implements SøknadsperiodeFristTje
3432
}
3533

3634
@Override
37-
public Optional<Søknadsfristdatoer> finnSøknadsfrist(Long behandlingId) {
35+
public Søknadsfristdatoer finnSøknadsfrist(Long behandlingId) {
3836
var behandling = behandlingRepository.hentBehandling(behandlingId);
3937
if (behandling.erYtelseBehandling()) {
4038
if (FagsakYtelseType.ENGANGSTØNAD.equals(behandling.getFagsakYtelseType())) {
@@ -50,7 +48,7 @@ public class SøknadsperiodeFristTjenesteImpl implements SøknadsperiodeFristTje
5048
}
5149
// returner tom container for andre behandlingtyper
5250
// (så ser vi om det evt. er noen call paths som kaller på noen form for skjæringstidspunkt)
53-
return Optional.of(Søknadsfristdatoer.builder().build());
51+
return Søknadsfristdatoer.builder().build();
5452
}
5553

5654
}

domenetjenester/skjaeringstidspunkt/src/main/java/no/nav/foreldrepenger/skjæringstidspunkt/es/SøknadsperiodeFristTjenesteImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.time.LocalDate;
77
import java.time.Period;
88
import java.util.EnumSet;
9-
import java.util.Optional;
109

1110
import jakarta.enterprise.context.ApplicationScoped;
1211
import jakarta.inject.Inject;
@@ -44,14 +43,14 @@ public class SøknadsperiodeFristTjenesteImpl implements SøknadsperiodeFristTje
4443
}
4544

4645
@Override
47-
public Optional<Søknadsfristdatoer> finnSøknadsfrist(Long behandlingId) {
46+
public Søknadsfristdatoer finnSøknadsfrist(Long behandlingId) {
4847
var intervall = familieGrunnlagRepository.hentAggregatHvisEksisterer(behandlingId)
4948
.map(FamilieHendelseGrunnlagEntitet::getGjeldendeVersjon)
5049
.map(FamilieHendelseEntitet::getSkjæringstidspunkt)
5150
.map(fhdato -> new LocalDateInterval(fhdato, fhdato))
5251
.orElse(null);
5352

54-
return Optional.of(finnSøknadsfrist(behandlingId, intervall));
53+
return finnSøknadsfrist(behandlingId, intervall);
5554
}
5655

5756
private Søknadsfristdatoer finnSøknadsfrist(Long behandlingId, LocalDateInterval søknadsperiode) {

domenetjenester/skjaeringstidspunkt/src/main/java/no/nav/foreldrepenger/skjæringstidspunkt/fp/SøknadsperiodeFristTjenesteImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import java.time.LocalDate;
66
import java.util.Comparator;
77
import java.util.List;
8-
import java.util.Optional;
98

109
import jakarta.enterprise.context.ApplicationScoped;
1110
import jakarta.inject.Inject;
@@ -43,7 +42,7 @@ public class SøknadsperiodeFristTjenesteImpl implements SøknadsperiodeFristTje
4342
}
4443

4544
@Override
46-
public Optional<Søknadsfristdatoer> finnSøknadsfrist(Long behandlingId) {
45+
public Søknadsfristdatoer finnSøknadsfrist(Long behandlingId) {
4746
var søknadMottattDato = søknadRepository.hentSøknadHvisEksisterer(behandlingId)
4847
.map(SøknadEntitet::getMottattDato).orElse(null);
4948
var perioder = ytelsesFordelingRepository.hentAggregatHvisEksisterer(behandlingId)
@@ -55,7 +54,7 @@ public class SøknadsperiodeFristTjenesteImpl implements SøknadsperiodeFristTje
5554
var max = perioder.stream().map(OppgittPeriodeEntitet::getTom).max(Comparator.naturalOrder());
5655
var periode = min.map(m -> new LocalDateInterval(m, max.orElseThrow())).orElse(null);
5756

58-
return Optional.of(finnSøknadsfrist(behandlingId, periode));
57+
return finnSøknadsfrist(behandlingId, periode);
5958
}
6059

6160
private Søknadsfristdatoer finnSøknadsfrist(Long behandlingId, LocalDateInterval søknadsperiode) {

domenetjenester/skjaeringstidspunkt/src/main/java/no/nav/foreldrepenger/skjæringstidspunkt/svp/SøknadsperiodeFristTjenesteImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,22 +54,22 @@ public class SøknadsperiodeFristTjenesteImpl implements SøknadsperiodeFristTje
5454
}
5555

5656
@Override
57-
public Optional<Søknadsfristdatoer> finnSøknadsfrist(Long behandlingId) {
57+
public Søknadsfristdatoer finnSøknadsfrist(Long behandlingId) {
5858
var familieHendelseEntitet = familieHendelseRepository.hentAggregatHvisEksisterer(behandlingId)
5959
.map(FamilieHendelseGrunnlagEntitet::getGjeldendeVersjon);
6060
var tilretteleggingFom = svangerskapspengerRepository.hentGrunnlag(behandlingId)
6161
.flatMap(SøknadsperiodeFristTjenesteImpl::utledNettoSøknadsperiodeFomFraGrunnlag);
6262

6363
if (fødselFørTilrettelegging(familieHendelseEntitet, tilretteleggingFom)) {
64-
return Optional.of(finnSøknadsfrist(behandlingId, null));
64+
return finnSøknadsfrist(behandlingId, null);
6565
}
6666

6767
var tomFraTermin = familieHendelseEntitet
6868
.flatMap(SøknadsperiodeFristTjenesteImpl::utledTilretteleggingTomFraTermin);
6969

7070
var periode = tilretteleggingFom.map(fom -> new LocalDateInterval(fom, tomFraTermin.orElse(fom))).orElse(null);
7171

72-
return Optional.of(finnSøknadsfrist(behandlingId, periode));
72+
return finnSøknadsfrist(behandlingId, periode);
7373
}
7474

7575
private boolean fødselFørTilrettelegging(Optional<FamilieHendelseEntitet> familieHendelseEntitet, Optional<LocalDate> tilretteleggingFom) {

domenetjenester/skjaeringstidspunkt/src/test/java/no/nav/foreldrepenger/skjæringstidspunkt/fp/SøknadsperiodeFristTjenesteImplTest.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,8 @@ void skal_ignorere_utsettelser() {
5353

5454
var tjeneste = tjeneste(repositoryProvider);
5555

56-
assertThat(tjeneste.finnSøknadsfrist(behandling.getId())).isPresent();
57-
assertThat(tjeneste.finnSøknadsfrist(behandling.getId()).orElseThrow().getSøknadGjelderPeriode().getFomDato()).isEqualTo(fedrekvoteFom);
58-
assertThat(tjeneste.finnSøknadsfrist(behandling.getId()).orElseThrow().getSøknadGjelderPeriode().getTomDato()).isEqualTo(fedrekvoteTom);
56+
assertThat(tjeneste.finnSøknadsfrist(behandling.getId()).getSøknadGjelderPeriode().getFomDato()).isEqualTo(fedrekvoteFom);
57+
assertThat(tjeneste.finnSøknadsfrist(behandling.getId()).getSøknadGjelderPeriode().getTomDato()).isEqualTo(fedrekvoteTom);
5958
}
6059

6160
@Test
@@ -72,10 +71,7 @@ void skal_returnere_empty_hvis_bare_utsettelser() {
7271

7372
var tjeneste = tjeneste(repositoryProvider);
7473
var resultat = tjeneste.finnSøknadsfrist(behandling.getId());
75-
System.out.println(resultat);
76-
assertThat(resultat)
77-
.isPresent()
78-
.hasValueSatisfying(r -> assertThat(r.getSøknadGjelderPeriode()).isNull());
74+
assertThat(resultat.getSøknadGjelderPeriode()).isNull();
7975
}
8076

8177
private SøknadsperiodeFristTjeneste tjeneste(BehandlingRepositoryProvider repositoryProvider) {

web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/behandling/dto/behandling/BehandlingDtoTjeneste.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656
import no.nav.foreldrepenger.domene.uttak.beregnkontoer.UtregnetStønadskontoTjeneste;
5757
import no.nav.foreldrepenger.domene.vedtak.TotrinnTjeneste;
5858
import no.nav.foreldrepenger.domene.vedtak.intern.VedtaksbrevStatusUtleder;
59-
import no.nav.foreldrepenger.konfig.Environment;
6059
import no.nav.foreldrepenger.skjæringstidspunkt.SkjæringstidspunktTjeneste;
6160
import no.nav.foreldrepenger.web.app.rest.ResourceLink;
6261
import no.nav.foreldrepenger.web.app.tjenester.behandling.BehandlingRestTjeneste;
@@ -354,7 +353,8 @@ private UtvidetBehandlingDto utvideBehandlingDto(Behandling behandling, UtvidetB
354353
var harSakenSøknad = søknadRepository.hentSøknadHvisEksisterer(behandling.getId()).isPresent();
355354
dto.setHarRegisterdata(harInnhentetRegisterData);
356355
dto.setHarSøknad(harSakenSøknad);
357-
dto.leggTil(get(SøknadRestTjeneste.SOKNAD_PATH, "soknad", uuidDto));
356+
dto.leggTil(get(SøknadRestTjeneste.SOKNAD_PATH, "soknad", uuidDto)); //TODO TFP-6443 slett
357+
dto.leggTil(get(SøknadRestTjeneste.SØKNAD_PATH, "søknad", uuidDto));
358358

359359
if (dto.isErAktivPapirsoknad()) {
360360
return dto;

web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/behandling/medlem/MedlemDtoTjeneste.java

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
import java.time.LocalDate;
99
import java.util.HashSet;
10+
import java.util.List;
1011
import java.util.Optional;
1112
import java.util.Set;
1213
import java.util.UUID;
14+
import java.util.function.Predicate;
1315
import java.util.stream.Collectors;
1416

1517
import jakarta.enterprise.context.ApplicationScoped;
@@ -20,6 +22,7 @@
2022
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingStegType;
2123
import no.nav.foreldrepenger.behandlingslager.behandling.aksjonspunkt.AksjonspunktDefinisjon;
2224
import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.MedlemskapAggregat;
25+
import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.MedlemskapOppgittLandOppholdEntitet;
2326
import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.MedlemskapOppgittTilknytningEntitet;
2427
import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.MedlemskapRepository;
2528
import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.VurdertMedlemskap;
@@ -31,6 +34,7 @@
3134
import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.Avslagsårsak;
3235
import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårResultatRepository;
3336
import no.nav.foreldrepenger.behandlingslager.behandling.vilkår.VilkårUtfallType;
37+
import no.nav.foreldrepenger.behandlingslager.geografisk.Landkoder;
3438
import no.nav.foreldrepenger.behandlingsprosess.prosessering.BehandlingProsesseringTjeneste;
3539
import no.nav.foreldrepenger.domene.medlem.MedlemTjeneste;
3640
import no.nav.foreldrepenger.domene.personopplysning.PersonopplysningTjeneste;
@@ -111,7 +115,7 @@ public Optional<MedlemskapDto> lagMedlemskap(UUID behandlingId) {
111115
.map(MedlemskapOppgittTilknytningEntitet::getOpphold)
112116
.orElse(Set.of())
113117
.stream()
114-
.map(MedlemskapDto.Utenlandsopphold::map)
118+
.map(MedlemskapDto.Utlandsopphold::map)
115119
.collect(Collectors.toSet());
116120

117121
var adresser = personopplysningerAggregat.getAdresserFor(aktørId, forPeriode)
@@ -133,8 +137,26 @@ public Optional<MedlemskapDto> lagMedlemskap(UUID behandlingId) {
133137
var annenpart = annenpart(personopplysningerAggregat, forPeriode, stp).orElse(null);
134138
var avvik = utledAvvik(behandling);
135139

136-
return Optional.of(new MedlemskapDto(manuellBehandling.orElse(null), legacyManuellBehandling, regioner, personstatuser, utenlandsopphold, adresser,
137-
oppholdstillatelser, medlemskapsperioder, avvik, annenpart));
140+
var oppgittUtenlandsopphold = medlemskap.flatMap(MedlemskapAggregat::getOppgittTilknytning).map(m -> {
141+
var utlandsoppholdFør = mapUtenlandsperiode(m.getOpphold(), MedlemskapOppgittLandOppholdEntitet::isTidligereOpphold);
142+
var utlandsoppholdEtter = mapUtenlandsperiode(m.getOpphold(),
143+
medlemskapOppgittLandOppholdEntitet -> !medlemskapOppgittLandOppholdEntitet.isTidligereOpphold());
144+
return new MedlemskapDto.OppgittUtlandsopphold(m.isOppholdINorgeSistePeriode(), m.isOppholdINorgeNestePeriode(), utlandsoppholdFør,
145+
utlandsoppholdEtter);
146+
}).orElse(null);
147+
148+
return Optional.of(
149+
new MedlemskapDto(manuellBehandling.orElse(null), legacyManuellBehandling, regioner, personstatuser, oppgittUtenlandsopphold,
150+
utenlandsopphold, adresser, oppholdstillatelser, medlemskapsperioder, avvik, annenpart));
151+
}
152+
153+
private List<MedlemskapDto.Utlandsopphold> mapUtenlandsperiode(Set<MedlemskapOppgittLandOppholdEntitet> opphold,
154+
Predicate<MedlemskapOppgittLandOppholdEntitet> filter) {
155+
return opphold.stream()
156+
.filter(filter)
157+
.filter(o -> !o.getLand().equals(Landkoder.NOR))
158+
.map(MedlemskapDto.Utlandsopphold::map)
159+
.toList();
138160
}
139161

140162
private Optional<LocalDate> failsoftSkjæringstidspunkt(Long behandlingId) {
@@ -193,17 +215,16 @@ private Optional<MedlemskapDto.ManuellBehandlingResultat> manuellBehandling(Beha
193215
.filter(v -> v.erManueltVurdert() || v.erOverstyrt())
194216
.findFirst()
195217
.map((v -> {
196-
var opphørsdato = v.getGjeldendeVilkårUtfall()
197-
.equals(VilkårUtfallType.OPPFYLT) ? medlemTjeneste.hentOpphørsdatoHvisEksisterer(behandling.getId()).orElse(null) : null;
218+
var opphørsdato = v.getGjeldendeVilkårUtfall().equals(VilkårUtfallType.OPPFYLT) ? medlemTjeneste.hentOpphørsdatoHvisEksisterer(
219+
behandling.getId()).orElse(null) : null;
198220
var avslagskode = medlemTjeneste.hentAvslagsårsak(behandling.getId()).filter(å -> !å.equals(Avslagsårsak.UDEFINERT)).orElse(null);
199221
var medlemFom = medlemTjeneste.hentMedlemFomDato(behandling.getId()).orElse(null);
200222
return new MedlemskapDto.ManuellBehandlingResultat(avslagskode, medlemFom, opphørsdato);
201223
}));
202224
}
203225

204226
private static boolean aksjonspunktErOpprettetEllerLøst(Behandling behandling) {
205-
return VURDER_MEDLEMSKAPSVILKÅRET_AKSJONSPUNKT
206-
.stream()
227+
return VURDER_MEDLEMSKAPSVILKÅRET_AKSJONSPUNKT.stream()
207228
.anyMatch(a -> behandling.harUtførtAksjonspunktMedType(a) || behandling.harÅpentAksjonspunktMedType(a));
208229
}
209230

web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/behandling/medlem/MedlemskapDto.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import static com.fasterxml.jackson.annotation.JsonInclude.Include;
44

55
import java.time.LocalDate;
6+
import java.util.List;
67
import java.util.Set;
78

8-
import com.fasterxml.jackson.annotation.JsonInclude;
9-
109
import jakarta.validation.constraints.NotNull;
1110

11+
import com.fasterxml.jackson.annotation.JsonInclude;
12+
1213
import no.nav.foreldrepenger.behandlingslager.aktør.OppholdstillatelseType;
1314
import no.nav.foreldrepenger.behandlingslager.aktør.PersonstatusType;
1415
import no.nav.foreldrepenger.behandlingslager.behandling.medlemskap.MedlemskapDekningType;
@@ -27,12 +28,12 @@ public record MedlemskapDto(ManuellBehandlingResultat manuellBehandlingResultat,
2728
LegacyManuellBehandling legacyManuellBehandling,
2829
@NotNull Set<Region> regioner,
2930
@NotNull Set<Personstatus> personstatuser,
30-
@NotNull Set<Utenlandsopphold> utenlandsopphold,
31+
@NotNull MedlemskapDto.OppgittUtlandsopphold oppgittUtlandsopphold,
32+
@NotNull Set<Utlandsopphold> utenlandsopphold, //TODO TFP-6443 slett
3133
@NotNull Set<PersonadresseDto> adresser,
3234
@NotNull Set<Oppholdstillatelse> oppholdstillatelser,
3335
@NotNull Set<MedlemskapPeriode> medlemskapsperioder,
34-
@NotNull Set<MedlemskapAvvik> avvik,
35-
Annenpart annenpart) {
36+
@NotNull Set<MedlemskapAvvik> avvik, Annenpart annenpart) {
3637

3738
private static final LocalDate OPPHOLD_CUTOFF = LocalDate.of(2018, 7, 1);
3839

@@ -49,13 +50,8 @@ record ManuellBehandlingResultat(Avslagsårsak avslagskode, LocalDate medlemFom,
4950
record LegacyManuellBehandling(@NotNull Set<MedlemPeriode> perioder) {
5051

5152
@JsonInclude(Include.NON_NULL)
52-
record MedlemPeriode(@NotNull LocalDate vurderingsdato,
53-
Boolean oppholdsrettVurdering,
54-
Boolean erEosBorger,
55-
Boolean lovligOppholdVurdering,
56-
Boolean bosattVurdering,
57-
MedlemskapManuellVurderingType medlemskapManuellVurderingType,
58-
String begrunnelse) {
53+
record MedlemPeriode(@NotNull LocalDate vurderingsdato, Boolean oppholdsrettVurdering, Boolean erEosBorger, Boolean lovligOppholdVurdering,
54+
Boolean bosattVurdering, MedlemskapManuellVurderingType medlemskapManuellVurderingType, String begrunnelse) {
5955
}
6056
}
6157

@@ -68,9 +64,9 @@ public static Personstatus map(PersonstatusIntervall pse) {
6864
}
6965
}
7066

71-
record Utenlandsopphold(@NotNull LocalDate fom, LocalDate tom, @NotNull Landkoder landkode) {
72-
public static Utenlandsopphold map(MedlemskapOppgittLandOppholdEntitet moloe) {
73-
return new Utenlandsopphold(moloe.getPeriodeFom(), moloe.getPeriodeTom(), moloe.getLand());
67+
record Utlandsopphold(@NotNull LocalDate fom, LocalDate tom, @NotNull Landkoder landkode, @NotNull String landNavn) {
68+
public static Utlandsopphold map(MedlemskapOppgittLandOppholdEntitet moloe) {
69+
return new Utlandsopphold(moloe.getPeriodeFom(), moloe.getPeriodeTom(), moloe.getLand(), Landkoder.navnLesbart(moloe.getLand()));
7470
}
7571
}
7672

@@ -91,5 +87,10 @@ public static MedlemskapPeriode map(MedlemskapPerioderEntitet mpe) {
9187

9288
record Annenpart(@NotNull Set<PersonadresseDto> adresser, @NotNull Set<Region> regioner, @NotNull Set<Personstatus> personstatuser) {
9389
}
90+
91+
record OppgittUtlandsopphold(@NotNull boolean oppholdSistePeriode, @NotNull boolean oppholdNestePeriode,
92+
@NotNull List<Utlandsopphold> utlandsoppholdFør, @NotNull List<Utlandsopphold> utlandsoppholdEtter) {
93+
94+
}
9495
}
9596

0 commit comments

Comments
 (0)