From c392d13feb8c1d998482c31651d3755e4eb5139a Mon Sep 17 00:00:00 2001 From: Johannes Moskvil Date: Thu, 24 Oct 2024 10:20:09 +0200 Subject: [PATCH] =?UTF-8?q?Gj=C3=B8r=20eksplisitt=20mapping=20av=20Natural?= =?UTF-8?q?ytelse=20Enum=20til=20FpOversikt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fpoversikt/FpSakInntektsmeldingDto.java | 50 +++++++++++-------- .../InntektsmeldingDtoTjeneste.java | 36 ++++++++++--- .../InntektsmeldingDtoTjenesteTest.java | 48 +++++++----------- 3 files changed, 77 insertions(+), 57 deletions(-) diff --git a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/FpSakInntektsmeldingDto.java b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/FpSakInntektsmeldingDto.java index 05259bc0b26..4897fb02316 100644 --- a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/FpSakInntektsmeldingDto.java +++ b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/FpSakInntektsmeldingDto.java @@ -11,27 +11,35 @@ import no.nav.foreldrepenger.domene.typer.JournalpostId; @JsonInclude(JsonInclude.Include.NON_NULL) -record FpSakInntektsmeldingDto(Boolean erAktiv, BigDecimal stillingsprosent, - BigDecimal inntektPrMnd, - BigDecimal refusjonPrMnd, - String arbeidsgiverNavn, - String arbeidsgiverIdent, - String journalpostId, - LocalDateTime mottattTidspunkt, - LocalDate startDatoPermisjon, - List bortfalteNaturalytelser, - List refusjonsperioder -){ - record NaturalYtelse( - LocalDate fomDato, - LocalDate tomDato, - BigDecimal beløpPerMnd, - NaturalYtelseType type - ) {} +record FpSakInntektsmeldingDto(Boolean erAktiv, BigDecimal stillingsprosent, BigDecimal inntektPrMnd, BigDecimal refusjonPrMnd, + String arbeidsgiverNavn, String arbeidsgiverIdent, String journalpostId, LocalDateTime mottattTidspunkt, + LocalDate startDatoPermisjon, List bortfalteNaturalytelser, List refusjonsperioder) { + record Naturalytelse(LocalDate fomDato, LocalDate tomDato, BigDecimal beløpPerMnd, NaturalytelseType type) { + } - record Refusjon( - BigDecimal refusjonsbeløpMnd, - LocalDate fomDato - ) {} + record Refusjon(BigDecimal refusjonsbeløpMnd, LocalDate fomDato) { + } + + enum NaturalytelseType { + ELEKTRISK_KOMMUNIKASJON, + AKSJER_GRUNNFONDSBEVIS_TIL_UNDERKURS, + LOSJI, + KOST_DØGN, + BESØKSREISER_HJEMMET_ANNET, + KOSTBESPARELSE_I_HJEMMET, + RENTEFORDEL_LÅN, + BIL, + KOST_DAGER, + BOLIG, + SKATTEPLIKTIG_DEL_FORSIKRINGER, + FRI_TRANSPORT, + OPSJONER, + TILSKUDD_BARNEHAGEPLASS, + ANNET, + BEDRIFTSBARNEHAGEPLASS, + YRKEBIL_TJENESTLIGBEHOV_KILOMETER, + YRKEBIL_TJENESTLIGBEHOV_LISTEPRIS, + INNBETALING_TIL_UTENLANDSK_PENSJONSORDNING + } } diff --git a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjeneste.java b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjeneste.java index b4f2f5b1501..63a0af57368 100644 --- a/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjeneste.java +++ b/web/src/main/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjeneste.java @@ -31,7 +31,6 @@ import no.nav.foreldrepenger.domene.iay.modell.kodeverk.NaturalYtelseType; import no.nav.foreldrepenger.domene.typer.Saksnummer; import no.nav.foreldrepenger.domene.typer.Stillingsprosent; -import no.nav.vedtak.konfig.Tid; import static no.nav.vedtak.konfig.Tid.TIDENES_ENDE; @@ -127,7 +126,7 @@ public static List lagRefusjonsperioder(Inntek var mutableRefusjon = new ArrayList<>(refusjon); // Representer opphøring av refusjon som en periode med 0 som refusjon - if (inntektsmelding.getRefusjonOpphører() != null && !Tid.TIDENES_ENDE.equals(inntektsmelding.getRefusjonOpphører() )) { + if (inntektsmelding.getRefusjonOpphører() != null && !TIDENES_ENDE.equals(inntektsmelding.getRefusjonOpphører() )) { mutableRefusjon.add(new FpSakInntektsmeldingDto.Refusjon(new BigDecimal(0), inntektsmelding.getRefusjonOpphører().plusDays(1))); } @@ -136,11 +135,11 @@ public static List lagRefusjonsperioder(Inntek return mutableRefusjon; } - public static List konverterAktivePerioderTilBortfaltePerioder(List aktiveNaturalytelser) { + public static List konverterAktivePerioderTilBortfaltePerioder(List aktiveNaturalytelser) { var gruppertPåType = aktiveNaturalytelser.stream() .collect(Collectors.groupingBy(NaturalYtelse::getType)); - List bortfalteNaturalytelser = new ArrayList<>(); + List bortfalteNaturalytelser = new ArrayList<>(); gruppertPåType.forEach((key, value) -> { var sortert = value.stream() @@ -158,11 +157,11 @@ public static List konverterAktivePeriode continue; } - var newYtelse = new FpSakInntektsmeldingDto.NaturalYtelse( + var newYtelse = new FpSakInntektsmeldingDto.Naturalytelse( nyFom.plusDays(1), (nyTom != null) ? nyTom.minusDays(1) : TIDENES_ENDE, current.getBeloepPerMnd().getVerdi(), - current.getType() + mapTilFpSakIMDTONaturalytelseType(current.getType()) ); bortfalteNaturalytelser.add(newYtelse); @@ -171,4 +170,29 @@ public static List konverterAktivePeriode return bortfalteNaturalytelser; } + + private static FpSakInntektsmeldingDto.NaturalytelseType mapTilFpSakIMDTONaturalytelseType(NaturalYtelseType naturalytelseType) { + return switch (naturalytelseType) { + case ELEKTRISK_KOMMUNIKASJON -> FpSakInntektsmeldingDto.NaturalytelseType.ELEKTRISK_KOMMUNIKASJON; + case AKSJER_GRUNNFONDSBEVIS_TIL_UNDERKURS -> FpSakInntektsmeldingDto.NaturalytelseType.AKSJER_GRUNNFONDSBEVIS_TIL_UNDERKURS; + case LOSJI -> FpSakInntektsmeldingDto.NaturalytelseType.LOSJI; + case KOST_DØGN -> FpSakInntektsmeldingDto.NaturalytelseType.KOST_DØGN; + case BESØKSREISER_HJEMMET_ANNET -> FpSakInntektsmeldingDto.NaturalytelseType.BESØKSREISER_HJEMMET_ANNET; + case KOSTBESPARELSE_I_HJEMMET -> FpSakInntektsmeldingDto.NaturalytelseType.KOSTBESPARELSE_I_HJEMMET; + case RENTEFORDEL_LÅN -> FpSakInntektsmeldingDto.NaturalytelseType.RENTEFORDEL_LÅN; + case BIL -> FpSakInntektsmeldingDto.NaturalytelseType.BIL; + case KOST_DAGER -> FpSakInntektsmeldingDto.NaturalytelseType.KOST_DAGER; + case BOLIG -> FpSakInntektsmeldingDto.NaturalytelseType.BOLIG; + case SKATTEPLIKTIG_DEL_FORSIKRINGER -> FpSakInntektsmeldingDto.NaturalytelseType.SKATTEPLIKTIG_DEL_FORSIKRINGER; + case FRI_TRANSPORT -> FpSakInntektsmeldingDto.NaturalytelseType.FRI_TRANSPORT; + case OPSJONER -> FpSakInntektsmeldingDto.NaturalytelseType.OPSJONER; + case TILSKUDD_BARNEHAGEPLASS -> FpSakInntektsmeldingDto.NaturalytelseType.TILSKUDD_BARNEHAGEPLASS; + case ANNET -> FpSakInntektsmeldingDto.NaturalytelseType.ANNET; + case BEDRIFTSBARNEHAGEPLASS -> FpSakInntektsmeldingDto.NaturalytelseType.BEDRIFTSBARNEHAGEPLASS; + case YRKEBIL_TJENESTLIGBEHOV_KILOMETER -> FpSakInntektsmeldingDto.NaturalytelseType.YRKEBIL_TJENESTLIGBEHOV_KILOMETER; + case YRKEBIL_TJENESTLIGBEHOV_LISTEPRIS -> FpSakInntektsmeldingDto.NaturalytelseType.YRKEBIL_TJENESTLIGBEHOV_LISTEPRIS; + case INNBETALING_TIL_UTENLANDSK_PENSJONSORDNING -> FpSakInntektsmeldingDto.NaturalytelseType.INNBETALING_TIL_UTENLANDSK_PENSJONSORDNING; + case UDEFINERT -> throw new IllegalStateException("Kunne ikke mappe NaturalytelseType til FpSakInntektsmeldingDto.NaturalytelseType: " + naturalytelseType); + }; + } } diff --git a/web/src/test/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjenesteTest.java b/web/src/test/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjenesteTest.java index c797fb0bbf3..d22c034d261 100644 --- a/web/src/test/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjenesteTest.java +++ b/web/src/test/java/no/nav/foreldrepenger/web/app/tjenester/fpoversikt/InntektsmeldingDtoTjenesteTest.java @@ -66,14 +66,8 @@ void henter_im(EntityManager entityManager) { var iayTjeneste = new AbakusInMemoryInntektArbeidYtelseTjeneste(); var repositoryProvider = new BehandlingRepositoryProvider(entityManager); - var imTjeneste = new InntektsmeldingDtoTjeneste( - new InntektsmeldingTjeneste(iayTjeneste), - repositoryProvider.getMottatteDokumentRepository(), - new VirksomhetTjeneste(), arbeidsgiverTjeneste, - behandlingRepository, - fagsakRepository, - iayTjeneste - ); + var imTjeneste = new InntektsmeldingDtoTjeneste(new InntektsmeldingTjeneste(iayTjeneste), repositoryProvider.getMottatteDokumentRepository(), + new VirksomhetTjeneste(), arbeidsgiverTjeneste, behandlingRepository, fagsakRepository, iayTjeneste); // Sak og behandling var scenario = ScenarioMorSøkerForeldrepenger.forFødsel(); @@ -102,9 +96,7 @@ void henter_im(EntityManager entityManager) { .medArbeidType(ArbeidType.ORDINÆRT_ARBEIDSFORHOLD) .medArbeidsgiver(arbeidsgiver) .medArbeidsforholdId(arbeidsforholdRef) - .leggTilAktivitetsAvtale(AktivitetsAvtaleBuilder.ny() - .medPeriode(periode) - .medSisteLønnsendringsdato(periode.getFomDato())) + .leggTilAktivitetsAvtale(AktivitetsAvtaleBuilder.ny().medPeriode(periode).medSisteLønnsendringsdato(periode.getFomDato())) .leggTilAktivitetsAvtale(AktivitetsAvtaleBuilder.ny() .medProsentsats(new Stillingsprosent(80)) .medPeriode(DatoIntervallEntitet.fraOgMedTilOgMed(LocalDate.now().minusMonths(10), LocalDate.now()))); @@ -134,13 +126,9 @@ void henter_im(EntityManager entityManager) { @Test void lagRefusjonsperioderNårOpphørerErSatt() { - var refusjonsperioder = List.of( - new Refusjon(BigDecimal.valueOf(300), LocalDate.of(2024, 11, 1)), - new Refusjon(BigDecimal.valueOf(100), LocalDate.of(2024, 8, 1)), - new Refusjon(BigDecimal.valueOf(200), LocalDate.of(2024, 9, 1)) - ); - var imBuilder = InntektsmeldingBuilder.builder() - .medRefusjon(BigDecimal.valueOf(1000), LocalDate.of(2024, 10, 17)); + var refusjonsperioder = List.of(new Refusjon(BigDecimal.valueOf(300), LocalDate.of(2024, 11, 1)), + new Refusjon(BigDecimal.valueOf(100), LocalDate.of(2024, 8, 1)), new Refusjon(BigDecimal.valueOf(200), LocalDate.of(2024, 9, 1))); + var imBuilder = InntektsmeldingBuilder.builder().medRefusjon(BigDecimal.valueOf(1000), LocalDate.of(2024, 10, 17)); refusjonsperioder.forEach(imBuilder::leggTil); @@ -159,11 +147,8 @@ void henter_im(EntityManager entityManager) { @Test void lagRefusjonsperioderUtenOpphører() { - var refusjonsperioder = List.of( - new Refusjon(BigDecimal.valueOf(300), LocalDate.of(2024, 11, 1)), - new Refusjon(BigDecimal.valueOf(100), LocalDate.of(2024, 8, 1)), - new Refusjon(BigDecimal.valueOf(200), LocalDate.of(2024, 9, 1)) - ); + var refusjonsperioder = List.of(new Refusjon(BigDecimal.valueOf(300), LocalDate.of(2024, 11, 1)), + new Refusjon(BigDecimal.valueOf(100), LocalDate.of(2024, 8, 1)), new Refusjon(BigDecimal.valueOf(200), LocalDate.of(2024, 9, 1))); var imBuilder = InntektsmeldingBuilder.builder(); refusjonsperioder.forEach(imBuilder::leggTil); @@ -182,18 +167,21 @@ void henter_im(EntityManager entityManager) { void konverterAktiveNaturalytelserTilBortfalte() { var aktiveNaturalytelser = List.of( new NaturalYtelse(Tid.TIDENES_BEGYNNELSE, LocalDate.of(2024, 10, 16), new BigDecimal(1000), NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON), - new NaturalYtelse(LocalDate.of(2024, 11, 16), LocalDate.of(2024, 11, 20), new BigDecimal(1000), NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON), - new NaturalYtelse(LocalDate.of(2024, 12, 16), Tid.TIDENES_ENDE, new BigDecimal(1000), NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON) - ); + new NaturalYtelse(LocalDate.of(2024, 11, 16), LocalDate.of(2024, 11, 20), new BigDecimal(1000), + NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON), + new NaturalYtelse(LocalDate.of(2024, 12, 16), Tid.TIDENES_ENDE, new BigDecimal(1000), NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON)); var bortfaltePerioder = InntektsmeldingDtoTjeneste.konverterAktivePerioderTilBortfaltePerioder(aktiveNaturalytelser); assertThat(bortfaltePerioder).hasSize(2); - assertThat(bortfaltePerioder.get(0)).isEqualTo(new FpSakInntektsmeldingDto.NaturalYtelse(LocalDate.of(2024, 10, 17), LocalDate.of(2024, 11, 15), new BigDecimal(1000), NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON)); - assertThat(bortfaltePerioder.get(1)).isEqualTo(new FpSakInntektsmeldingDto.NaturalYtelse(LocalDate.of(2024, 11, 21), LocalDate.of(2024, 12, 15), new BigDecimal(1000), NaturalYtelseType.ELEKTRISK_KOMMUNIKASJON)); + assertThat(bortfaltePerioder.get(0)).isEqualTo( + new FpSakInntektsmeldingDto.Naturalytelse(LocalDate.of(2024, 10, 17), LocalDate.of(2024, 11, 15), new BigDecimal(1000), + FpSakInntektsmeldingDto.NaturalytelseType.ELEKTRISK_KOMMUNIKASJON)); + assertThat(bortfaltePerioder.get(1)).isEqualTo( + new FpSakInntektsmeldingDto.Naturalytelse(LocalDate.of(2024, 11, 21), LocalDate.of(2024, 12, 15), new BigDecimal(1000), + FpSakInntektsmeldingDto.NaturalytelseType.ELEKTRISK_KOMMUNIKASJON)); } private static MottattDokument mottattDokument(Behandling behandling, JournalpostId journalPostId, LocalDateTime mottattTidspunkt) { - return new MottattDokument.Builder() - .medJournalPostId(journalPostId) + return new MottattDokument.Builder().medJournalPostId(journalPostId) .medMottattTidspunkt(mottattTidspunkt) .medFagsakId(behandling.getFagsakId()) .medBehandlingId(behandling.getId())