Skip to content

Commit

Permalink
Merge branch 'master' into TFP-5853/papirsoknad
Browse files Browse the repository at this point in the history
  • Loading branch information
espenwaaga authored Oct 24, 2024
2 parents 058d0e0 + c392d13 commit 829c5c4
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 57 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<NaturalYtelse> bortfalteNaturalytelser,
List<Refusjon> 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<Naturalytelse> bortfalteNaturalytelser, List<Refusjon> 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
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -127,7 +126,7 @@ public static List<FpSakInntektsmeldingDto.Refusjon> 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)));
}

Expand All @@ -136,11 +135,11 @@ public static List<FpSakInntektsmeldingDto.Refusjon> lagRefusjonsperioder(Inntek
return mutableRefusjon;
}

public static List<FpSakInntektsmeldingDto.NaturalYtelse> konverterAktivePerioderTilBortfaltePerioder(List<NaturalYtelse> aktiveNaturalytelser) {
public static List<FpSakInntektsmeldingDto.Naturalytelse> konverterAktivePerioderTilBortfaltePerioder(List<NaturalYtelse> aktiveNaturalytelser) {
var gruppertPåType = aktiveNaturalytelser.stream()
.collect(Collectors.groupingBy(NaturalYtelse::getType));

List<FpSakInntektsmeldingDto.NaturalYtelse> bortfalteNaturalytelser = new ArrayList<>();
List<FpSakInntektsmeldingDto.Naturalytelse> bortfalteNaturalytelser = new ArrayList<>();

gruppertPåType.forEach((key, value) -> {
var sortert = value.stream()
Expand All @@ -158,11 +157,11 @@ public static List<FpSakInntektsmeldingDto.NaturalYtelse> 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);
Expand All @@ -171,4 +170,29 @@ public static List<FpSakInntektsmeldingDto.NaturalYtelse> 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);
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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())));
Expand Down Expand Up @@ -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);

Expand All @@ -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);

Expand All @@ -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())
Expand Down

0 comments on commit 829c5c4

Please sign in to comment.