Skip to content

Commit

Permalink
Merge branch 'master' into feature/TFP-5900
Browse files Browse the repository at this point in the history
  • Loading branch information
espenwaaga authored Jan 28, 2025
2 parents fe71b36 + 511938a commit 62450dd
Show file tree
Hide file tree
Showing 14 changed files with 218 additions and 72 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package no.nav.foreldrepenger.domene.rest.historikk;

import static no.nav.foreldrepenger.domene.rest.historikk.kalkulus.FastsettBGTidsbegrensetArbeidsforholdHistorikkKalkulusTjeneste.oppdaterFrilansInntektVedEndretVerdi;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
Expand Down Expand Up @@ -135,7 +137,7 @@ private void lagHistorikkInnslag(FastsettBGTidsbegrensetArbeidsforholdDto dto,
Map<String, List<Integer>> tilHistorikkInnslag,
BigDecimal forrigeFrilansInntekt) {
List<HistorikkinnslagLinjeBuilder> linjeBuilderList = new ArrayList<>(oppdaterVedEndretVerdi(tilHistorikkInnslag));
linjeBuilderList.addAll(oppdaterFrilansInntektVedEndretVerdi(forrigeFrilansInntekt, dto));
linjeBuilderList.addAll(oppdaterFrilansInntektVedEndretVerdi(forrigeFrilansInntekt, dto.getFrilansInntekt()));
linjeBuilderList.add(new HistorikkinnslagLinjeBuilder().tekst(dto.getBegrunnelse()));

var historikkinnslag = new Historikkinnslag.Builder().medAktør(HistorikkAktør.SAKSBEHANDLER)
Expand All @@ -160,21 +162,6 @@ private static List<HistorikkinnslagLinjeBuilder> oppdaterVedEndretVerdi(Map<Str
return linjeBuilderList;
}

private List<HistorikkinnslagLinjeBuilder> oppdaterFrilansInntektVedEndretVerdi(BigDecimal forrigeFrilansInntekt,
FastsettBGTidsbegrensetArbeidsforholdDto dto) {
List<HistorikkinnslagLinjeBuilder> linjeBuilderList = new ArrayList<>();
HistorikkinnslagLinjeBuilder linjeBuilder = new HistorikkinnslagLinjeBuilder();
if (forrigeFrilansInntekt != null && dto.getFrilansInntekt() != null) {
var fraInntekt = (int) Math.round(forrigeFrilansInntekt.doubleValue());
linjeBuilderList.add(linjeBuilder.fraTil("Frilansinntekt", fraInntekt, dto.getFrilansInntekt()));
linjeBuilderList.add(HistorikkinnslagLinjeBuilder.LINJESKIFT);
} else if (dto.getFrilansInntekt() != null) {
linjeBuilderList.add(linjeBuilder.fraTil("Frilansinntekt", null, dto.getFrilansInntekt()));
linjeBuilderList.add(HistorikkinnslagLinjeBuilder.LINJESKIFT);
}
return linjeBuilderList;
}

private static String formaterInntekter(List<Integer> inntekter) {
if (inntekter.size() > 1) {
var inntekterString = inntekter.stream().map(String::valueOf).collect(Collectors.joining(", "));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -120,7 +121,7 @@ private void lagHistorikkInnslag(FastsettBGTidsbegrensetArbeidsforholdDto dto,
Map<String, List<Integer>> tilHistorikkInnslag,
BigDecimal forrigeFrilansInntekt) {
List<HistorikkinnslagLinjeBuilder> linjeBuilderList = new ArrayList<>(oppdaterVedEndretVerdi(tilHistorikkInnslag));
linjeBuilderList.addAll(oppdaterFrilansInntektVedEndretVerdi(forrigeFrilansInntekt, dto));
linjeBuilderList.addAll(oppdaterFrilansInntektVedEndretVerdi(forrigeFrilansInntekt, dto.getFrilansInntekt()));
linjeBuilderList.add(new HistorikkinnslagLinjeBuilder().tekst(dto.getBegrunnelse()));

var historikkinnslag = new Historikkinnslag.Builder().medAktør(HistorikkAktør.SAKSBEHANDLER)
Expand All @@ -138,23 +139,26 @@ private static List<HistorikkinnslagLinjeBuilder> oppdaterVedEndretVerdi(Map<Str
var linjeBuilder = new HistorikkinnslagLinjeBuilder();
var arbeidsforholdInfo = entry.getKey();
var inntekter = entry.getValue();
linjeBuilderList.add(
linjeBuilder.fraTil(String.format("Inntekt fra %s", arbeidsforholdInfo), null, formaterInntekter(inntekter)));
linjeBuilderList.add(linjeBuilder.fraTil(String.format("Inntekt fra %s", arbeidsforholdInfo), null, formaterInntekter(inntekter)));
linjeBuilderList.add(HistorikkinnslagLinjeBuilder.LINJESKIFT);
}
return linjeBuilderList;
}

private List<HistorikkinnslagLinjeBuilder> oppdaterFrilansInntektVedEndretVerdi(BigDecimal forrigeFrilansInntekt,
FastsettBGTidsbegrensetArbeidsforholdDto dto) {
public static List<HistorikkinnslagLinjeBuilder> oppdaterFrilansInntektVedEndretVerdi(BigDecimal forrigeFrilansInntekt,
Integer nyFrilansInntekt) {
List<HistorikkinnslagLinjeBuilder> linjeBuilderList = new ArrayList<>();
HistorikkinnslagLinjeBuilder linjeBuilder = new HistorikkinnslagLinjeBuilder();
if (forrigeFrilansInntekt != null && dto.getFrilansInntekt() != null) {
if (forrigeFrilansInntekt != null && nyFrilansInntekt != null) {
var fraInntekt = (int) Math.round(forrigeFrilansInntekt.doubleValue());
linjeBuilderList.add(linjeBuilder.fraTil("Frilansinntekt", fraInntekt, dto.getFrilansInntekt()));
if (Objects.equals(fraInntekt, nyFrilansInntekt)) {
linjeBuilderList.add(linjeBuilder.til("Frilansinntekt", nyFrilansInntekt));
} else {
linjeBuilderList.add(linjeBuilder.fraTil("Frilansinntekt", fraInntekt, nyFrilansInntekt));
}
linjeBuilderList.add(HistorikkinnslagLinjeBuilder.LINJESKIFT);
} else if (dto.getFrilansInntekt() != null) {
linjeBuilderList.add(linjeBuilder.fraTil("Frilansinntekt", null, dto.getFrilansInntekt()));
} else if (nyFrilansInntekt != null) {
linjeBuilderList.add(linjeBuilder.til("Frilansinntekt", nyFrilansInntekt));
linjeBuilderList.add(HistorikkinnslagLinjeBuilder.LINJESKIFT);
}
return linjeBuilderList;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.foreldrepenger.domene.rest.historikk.kalkulus;

import static no.nav.foreldrepenger.domene.rest.historikk.kalkulus.FastsettBGTidsbegrensetArbeidsforholdHistorikkKalkulusTjeneste.oppdaterFrilansInntektVedEndretVerdi;
import static org.assertj.core.api.Assertions.assertThat;

import java.math.BigDecimal;

import org.junit.jupiter.api.Test;

class FastsettBGTidsbegrensetArbeidsforholdHistorikkKalkulusTjenesteTest {

@Test
void lik_verdi_frilansinntekt() {
var builder = oppdaterFrilansInntektVedEndretVerdi(BigDecimal.valueOf(1000), 1000);
assertThat(builder).hasSize(2);
assertThat(builder.getFirst().tilTekst()).isEqualTo("__Frilansinntekt__ er satt til __1000__");
}

@Test
void ulik_verdi_frilansinntekt() {
var builder = oppdaterFrilansInntektVedEndretVerdi(BigDecimal.valueOf(1000), 2000);
assertThat(builder).hasSize(2);
assertThat(builder.getFirst().tilTekst()).isEqualTo("__Frilansinntekt__ er endret fra 1000 til __2000__");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public enum DokumentMalType implements Kodeverdi {
ETTERLYS_INNTEKTSMELDING("ELYSIM"),
ENDRING_UTBETALING("ENDUTB"), // Denne brukes kun for å utlede tittel når overstyrer vedtaksbrev pga fordeling av ytelsen
FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV("INFOPU"),
FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID("FORPUS"),

// Må gjeninnføre for å flytte anker
@Deprecated KLAGE_AVVIST_DOK("KLAGAV"),
Expand Down Expand Up @@ -163,7 +164,8 @@ private static String utledDokumentTittel(DokumentMalType mal) {
case ANKE_OMGJORT -> "Vedtak om omgjøring i ankesak";
case ANKE_OPPHEVET -> "Ankebrev om beslutning om oppheving";
case ENDRING_UTBETALING -> "Endring i fordeling av ytelsen";
case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV -> "Melding om ny vurdering av tidligere avslag"; // TODO: Tittel på
case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV -> "Melding om ny vurdering av tidligere avslag"; // TODO: Tittel
case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID -> "Forlenget saksbehandlingstid - Fedrekvotesaken";
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public static DokumentMal mapDokumentMal(DokumentMalType bestillingDokumentMal)
case ETTERLYS_INNTEKTSMELDING -> DokumentMal.ETTERLYS_INNTEKTSMELDING;
case ENDRING_UTBETALING -> DokumentMal.ENDRING_UTBETALING;
case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV -> DokumentMal.FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_INFOBREV;
case FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID -> DokumentMal.FORELDREPENGER_FEIL_PRAKSIS_UTSETTELSE_FORLENGET_SAKSBEHANDLINGSTID;
case KLAGE_AVVIST_DOK,
KLAGE_AVVIST_FRITEKST,
KLAGE_HJEMSENDT_DOK,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ public class AvklarLøpendeOmsorgAksjonspunktUtleder {
private YtelsesFordelingRepository ytelsesFordelingRepository;

@Inject
public AvklarLøpendeOmsorgAksjonspunktUtleder(PersonopplysningerForUttak personopplysninger,
UttakRepositoryProvider repositoryProvider) {
public AvklarLøpendeOmsorgAksjonspunktUtleder(PersonopplysningerForUttak personopplysninger, UttakRepositoryProvider repositoryProvider) {
this.personopplysninger = personopplysninger;
this.ytelsesFordelingRepository = repositoryProvider.getYtelsesFordelingRepository();
}
Expand All @@ -46,12 +45,19 @@ public Optional<AksjonspunktDefinisjon> utledAksjonspunktFor(UttakInput input) {
return Optional.empty();
}
// Trenger ikke rebekrefte
if (BehandlingType.REVURDERING.equals(ref.behandlingType())
&& ytelsesFordelingRepository.hentAggregatHvisEksisterer(ref.behandlingId()).filter(a -> Boolean.TRUE.equals(a.getOverstyrtOmsorg())).isPresent()) {
return Optional.empty();
var skjæringstidspunkt = input.getSkjæringstidspunkt().orElseThrow();
if (BehandlingType.REVURDERING.equals(ref.behandlingType())) {
var ytelseFordelingAggregat = ytelsesFordelingRepository.hentAggregatHvisEksisterer(ref.behandlingId());
if (ytelseFordelingAggregat.filter(a -> Boolean.TRUE.equals(a.getOverstyrtOmsorg())).isPresent()) {
return Optional.empty();
}
if (ytelseFordelingAggregat.filter(a -> Boolean.FALSE.equals(a.getOverstyrtOmsorg())).isPresent()
&& personopplysninger.barnHarSammeBosted(ref, skjæringstidspunkt)) {
return Optional.of(AVKLAR_LØPENDE_OMSORG);
}
}
if (bekreftetFH.isPresent() && erBarnetFødt(bekreftetFH.get()) == Utfall.JA
&& !personopplysninger.barnHarSammeBosted(ref, input.getSkjæringstidspunkt().orElseThrow())) {
if (bekreftetFH.isPresent() && erBarnetFødt(bekreftetFH.get()) == Utfall.JA && !personopplysninger.barnHarSammeBosted(ref,
skjæringstidspunkt)) {
return Optional.of(AVKLAR_LØPENDE_OMSORG);
}
return Optional.empty();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import no.nav.foreldrepenger.behandling.BehandlingReferanse;
import no.nav.foreldrepenger.behandling.Skjæringstidspunkt;
import no.nav.foreldrepenger.behandlingslager.behandling.Behandling;
import no.nav.foreldrepenger.behandlingslager.behandling.BehandlingÅrsakType;
import no.nav.foreldrepenger.behandlingslager.behandling.ytelsefordeling.AvklarteUttakDatoerEntitet;
import no.nav.foreldrepenger.behandlingslager.behandling.ytelsefordeling.OppgittRettighetEntitet;
import no.nav.foreldrepenger.behandlingslager.behandling.ytelsefordeling.periode.OppgittFordelingEntitet;
Expand All @@ -32,6 +33,7 @@
import no.nav.foreldrepenger.domene.uttak.input.UttakInput;
import no.nav.foreldrepenger.domene.uttak.testutilities.behandling.ScenarioMorSøkerForeldrepenger;
import no.nav.foreldrepenger.domene.uttak.testutilities.behandling.UttakRepositoryStubProvider;
import no.nav.foreldrepenger.domene.ytelsefordeling.YtelseFordelingTjeneste;

class AvklarLøpendeOmsorgAksjonspunktUtlederTest {

Expand Down Expand Up @@ -130,8 +132,7 @@ private UttakInput lagInput(Behandling behandling, FamilieHendelser familieHende
@Test
void ingen_aksjonspunkt_dersom_barn_er_død_selvom_de_ikke_har_samme_adresse() {
var behandling = opprettBehandling(FØDSELSDATO);
var familieHendelser = new FamilieHendelser()
.medSøknadHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn()), 1))
var familieHendelser = new FamilieHendelser().medSøknadHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn()), 1))
.medBekreftetHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn(FØDSELSDATO)), 1));

var ap = aksjonspunktUtleder.utledAksjonspunktFor(lagInput(behandling, familieHendelser));
Expand Down Expand Up @@ -163,19 +164,35 @@ private UttakInput lagInput(Behandling behandling, FamilieHendelser familieHende

@Test
void ikke_aksjonspunkt_dersom_ett_barn_døde_og_ikke_har_samme_adresse_fordi_det_andre_barnet_lever_og_har_samme_bostedsadresse() {
var behandling = opprettBehandlingForFødselMedLikBostedsadresse(FØDSELSDATO);
var familieHendelser = new FamilieHendelser()
.medSøknadHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of( new Barn(), new Barn()), 2))
.medBekreftetHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of( new Barn(FØDSELSDATO), new Barn()), 2));
var behandling = opprettBehandlingForFødselSammeBosted(FØDSELSDATO);
var familieHendelser = new FamilieHendelser().medSøknadHendelse(
FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn(), new Barn()), 2))
.medBekreftetHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn(FØDSELSDATO), new Barn()), 2));

var ap = aksjonspunktUtleder.utledAksjonspunktFor(lagInput(behandling, familieHendelser));

assertThat(ap).isEmpty();
}

@Test
void aksjonspunkt_hvis_avklart_ikke_omsorg_og_revurdering() {
var behandling = opprettBehandlingForFødselSammeBosted(FØDSELSDATO);
var familieHendelser = new FamilieHendelser().medSøknadHendelse(
FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn(), new Barn()), 2))
.medBekreftetHendelse(FamilieHendelse.forFødsel(null, FØDSELSDATO, List.of(new Barn(FØDSELSDATO), new Barn()), 2));

var revurdering = ScenarioMorSøkerForeldrepenger.forFødsel()
.medOriginalBehandling(behandling, BehandlingÅrsakType.RE_ENDRING_FRA_BRUKER)
.lagre(repositoryProvider);
when(personopplysninger.barnHarSammeBosted(eq(BehandlingReferanse.fra(revurdering)), any())).thenReturn(true);
new YtelseFordelingTjeneste(repositoryProvider.getYtelsesFordelingRepository()).aksjonspunktBekreftFaktaForOmsorg(revurdering.getId(), false);
var ap = aksjonspunktUtleder.utledAksjonspunktFor(lagInput(revurdering, familieHendelser));

assertThat(ap).isPresent();
}

private Behandling opprettBehandling(LocalDate førsteUttaksdato) {
var scenario = ScenarioMorSøkerForeldrepenger
.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);
var scenario = ScenarioMorSøkerForeldrepenger.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);
scenario.medAvklarteUttakDatoer(new AvklarteUttakDatoerEntitet.Builder().medFørsteUttaksdato(førsteUttaksdato).build());

var rettighet = OppgittRettighetEntitet.beggeRett();
Expand All @@ -190,13 +207,8 @@ private Behandling opprettBehandling(LocalDate førsteUttaksdato) {
return behandling;
}

private Behandling opprettBehandlingForFødselMedLikBostedsadresse(LocalDate fødselsdato) {
return opprettBehandlingForFødselSammeBosted(fødselsdato);
}

private Behandling opprettBehandlingForFødselOgBarnBorSammenMedMorIkkeFarOgFarSøker() {
var scenario = ScenarioMorSøkerForeldrepenger
.forFødselMedGittAktørId(GITT_FAR_AKTØR_ID);
var scenario = ScenarioMorSøkerForeldrepenger.forFødselMedGittAktørId(GITT_FAR_AKTØR_ID);
var rettighet = OppgittRettighetEntitet.beggeRett();
scenario.medOppgittRettighet(rettighet);

Expand All @@ -208,8 +220,7 @@ private Behandling opprettBehandling(LocalDate førsteUttaksdato) {
}

private Behandling opprettBehandlingForFødselOgBarnBorSammenMedFarIkkeMorOgMorSøker(LocalDate fødselsdato) {
var scenario = ScenarioMorSøkerForeldrepenger
.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);
var scenario = ScenarioMorSøkerForeldrepenger.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);

scenario.medAvklarteUttakDatoer(new AvklarteUttakDatoerEntitet.Builder().medFørsteUttaksdato(fødselsdato).build());

Expand All @@ -224,8 +235,7 @@ private Behandling opprettBehandling(LocalDate førsteUttaksdato) {
}

private Behandling opprettBehandlingForFødselOgBarnBorSammenMedMorIkkeFarOgMorSøker(LocalDate fødselsdato) {
var scenario = ScenarioMorSøkerForeldrepenger
.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);
var scenario = ScenarioMorSøkerForeldrepenger.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);

scenario.medAvklarteUttakDatoer(new AvklarteUttakDatoerEntitet.Builder().medFørsteUttaksdato(fødselsdato).build());

Expand All @@ -240,8 +250,7 @@ private Behandling opprettBehandling(LocalDate førsteUttaksdato) {
}

private Behandling opprettBehandlingForBekreftetFødselMedSøknadsperioder(List<OppgittPeriodeEntitet> søknadsPerioder) {
var scenario = ScenarioMorSøkerForeldrepenger
.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);
var scenario = ScenarioMorSøkerForeldrepenger.forFødselMedGittAktørId(GITT_MOR_AKTØR_ID);


var rettighet = OppgittRettighetEntitet.beggeRett();
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<felles.version>7.4.4</felles.version>
<prosesstask.version>5.1.1</prosesstask.version>

<fp-kontrakter.version>9.2.1</fp-kontrakter.version>
<fp-kontrakter.version>9.2.2</fp-kontrakter.version>
<abakus-kontrakt.version>2.2.1</abakus-kontrakt.version>
<kalkulus.version>0.0.14</kalkulus.version>

Expand Down
Loading

0 comments on commit 62450dd

Please sign in to comment.