Skip to content

Commit 34a44ce

Browse files
authored
TSFF-1201: Restendepunkt for kontroller inntekt aksjonspunkt data (#249)
* TSFF-1201: Restendepunkt for dto til aksjonspunkt for kontroll av inntekt * TSFF-1201: Restendepunkt for dto til aksjonspunkt for kontroll av inntekt * TSFF-1201: Legger inn kopierer ved revurdering * Fikser path
1 parent 18cfd28 commit 34a44ce

File tree

16 files changed

+327
-39
lines changed

16 files changed

+327
-39
lines changed

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/tilkjentytelse/KontrollertInntektPeriode.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
@Table(name = "KONTROLLERT_INNTEKT_PERIODE")
1717
public class KontrollertInntektPeriode extends BaseEntitet {
1818

19-
2019
@Id
2120
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_KONTROLLERT_INNTEKT_PERIODE")
2221
private Long id;
@@ -35,7 +34,8 @@ public class KontrollertInntektPeriode extends BaseEntitet {
3534
@Column(name = "kilde", nullable = false)
3635
private KontrollertInntektKilde kilde;
3736

38-
37+
@Column(name = "er_manuelt_vurdert", nullable = false)
38+
private boolean erManueltVurdert;
3939

4040
KontrollertInntektPeriode(KontrollertInntektPeriode eksisterende) {
4141
this.periode = Range.closed(eksisterende.getPeriode().getFomDato(), eksisterende.getPeriode().getTomDato());
@@ -46,11 +46,13 @@ public class KontrollertInntektPeriode extends BaseEntitet {
4646
private KontrollertInntektPeriode(DatoIntervallEntitet periode,
4747
BigDecimal arbeidsinntekt,
4848
BigDecimal ytelse,
49-
KontrollertInntektKilde kilde) {
49+
KontrollertInntektKilde kilde,
50+
boolean erManueltVurdert) {
5051
this.periode = Range.closed(periode.getFomDato(), periode.getTomDato());
5152
this.arbeidsinntekt = arbeidsinntekt;
5253
this.ytelse = ytelse;
5354
this.kilde = kilde;
55+
this.erManueltVurdert = erManueltVurdert;
5456
}
5557

5658
public DatoIntervallEntitet getPeriode() {
@@ -69,6 +71,10 @@ public KontrollertInntektKilde getKilde() {
6971
return kilde;
7072
}
7173

74+
public boolean getErManueltVurdert() {
75+
return erManueltVurdert;
76+
}
77+
7278
public static Builder ny() {
7379
return new Builder();
7480
}
@@ -79,6 +85,7 @@ public static class Builder {
7985
private BigDecimal arbeidsinntekt;
8086
private BigDecimal ytelse;
8187
private KontrollertInntektKilde kilde;
88+
private boolean erManueltVurdert;
8289

8390
private Builder() {}
8491

@@ -105,9 +112,14 @@ public Builder medKilde(KontrollertInntektKilde kilde) {
105112
return this;
106113
}
107114

115+
public Builder medErManueltVurdert(boolean erManueltVurdert) {
116+
this.erManueltVurdert = erManueltVurdert;
117+
return this;
118+
}
119+
108120

109121
public KontrollertInntektPeriode build() {
110-
return new KontrollertInntektPeriode(periode, arbeidsinntekt, ytelse, kilde);
122+
return new KontrollertInntektPeriode(periode, arbeidsinntekt, ytelse, kilde, erManueltVurdert);
111123
}
112124

113125

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/tilkjentytelse/KontrollertInntektPerioder.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,20 @@ public static Builder ny(Long behandlingId) {
5353
return new Builder(behandlingId);
5454
}
5555

56+
public static Builder kopi(Long behandlingId, KontrollertInntektPerioder perioder) {
57+
return new Builder(behandlingId, perioder);
58+
}
59+
5660
public static class Builder {
5761
private Long behandlingId;
5862
private List<KontrollertInntektPeriode> perioder = new ArrayList<>();
59-
private String input;
60-
private String sporing;
6163

6264

65+
public Builder(Long behandlingId, KontrollertInntektPerioder perioder) {
66+
this.behandlingId = behandlingId;
67+
this.perioder = perioder.perioder.stream().map(KontrollertInntektPeriode::new).toList();
68+
}
69+
6370
public Builder(Long behandlingId) {
6471
this.behandlingId = behandlingId;
6572
}

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/tilkjentytelse/TilkjentYtelseRepository.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,18 @@ public void lagre(long behandlingId, List<KontrollertInntektPeriode> perioder) {
4444
entityManager.flush();
4545
}
4646

47-
public void lagre(long behandlingId, List<TilkjentYtelsePeriode> perioder, String input, String sporing) {
47+
public void kopierKontrollPerioder(long originalBehandlingId, long nyBehandlingId) {
48+
final var eksisterende = hentKontrollertInntektPerioder(originalBehandlingId);
49+
if (eksisterende.isPresent()) {
50+
final var ny = KontrollertInntektPerioder.kopi(nyBehandlingId, eksisterende.get()).build();
51+
entityManager.persist(ny);
52+
entityManager.flush();
53+
}
54+
55+
}
56+
57+
58+
public void lagre(long behandlingId, List<TilkjentYtelsePeriode> perioder, String input, String sporing) {
4859
final var eksisterende = hentTilkjentYtelse(behandlingId);
4960
if (eksisterende.isPresent()) {
5061
eksisterende.get().setIkkeAktiv();

domenetjenester/behandling-revurdering/src/main/java/no/nav/ung/sak/behandling/revurdering/GrunnlagKopiererUngdomsytelse.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import no.nav.ung.sak.behandlingslager.behandling.Behandling;
99
import no.nav.ung.sak.behandlingslager.behandling.personopplysning.PersonopplysningRepository;
1010
import no.nav.ung.sak.behandlingslager.behandling.repository.BehandlingRepositoryProvider;
11+
import no.nav.ung.sak.behandlingslager.tilkjentytelse.TilkjentYtelseRepository;
1112
import no.nav.ung.sak.domene.arbeidsforhold.InntektArbeidYtelseTjeneste;
1213
import no.nav.ung.sak.behandlingslager.perioder.UngdomsprogramPeriodeRepository;
1314
import no.nav.ung.sak.behandlingslager.behandling.startdato.UngdomsytelseStartdatoRepository;
@@ -20,6 +21,7 @@ public class GrunnlagKopiererUngdomsytelse implements GrunnlagKopierer {
2021
private InntektArbeidYtelseTjeneste iayTjeneste;
2122
private UngdomsprogramPeriodeRepository ungdomsprogramPeriodeRepository;
2223
private UngdomsytelseStartdatoRepository ungdomsytelseStartdatoRepository;
24+
private TilkjentYtelseRepository tilkjentYtelseRepository;
2325

2426
public GrunnlagKopiererUngdomsytelse() {
2527
// for CDI proxy
@@ -28,11 +30,12 @@ public GrunnlagKopiererUngdomsytelse() {
2830
@Inject
2931
public GrunnlagKopiererUngdomsytelse(BehandlingRepositoryProvider repositoryProvider,
3032
InntektArbeidYtelseTjeneste iayTjeneste,
31-
UngdomsprogramPeriodeRepository ungdomsprogramPeriodeRepository, UngdomsytelseStartdatoRepository ungdomsytelseStartdatoRepository) {
33+
UngdomsprogramPeriodeRepository ungdomsprogramPeriodeRepository, UngdomsytelseStartdatoRepository ungdomsytelseStartdatoRepository, TilkjentYtelseRepository tilkjentYtelseRepository) {
3234
this.iayTjeneste = iayTjeneste;
3335
this.personopplysningRepository = repositoryProvider.getPersonopplysningRepository();
3436
this.ungdomsprogramPeriodeRepository = ungdomsprogramPeriodeRepository;
3537
this.ungdomsytelseStartdatoRepository = ungdomsytelseStartdatoRepository;
38+
this.tilkjentYtelseRepository = tilkjentYtelseRepository;
3639
}
3740

3841

@@ -43,6 +46,7 @@ public void kopierGrunnlagVedManuellOpprettelse(Behandling original, Behandling
4346
personopplysningRepository.kopierGrunnlagFraEksisterendeBehandling(originalBehandlingId, nyBehandlingId);
4447
ungdomsprogramPeriodeRepository.kopier(originalBehandlingId, nyBehandlingId);
4548
ungdomsytelseStartdatoRepository.kopierGrunnlagFraEksisterendeBehandling(originalBehandlingId, nyBehandlingId);
49+
tilkjentYtelseRepository.kopierKontrollPerioder(originalBehandlingId, nyBehandlingId);
4650

4751
// gjør til slutt, innebærer kall til abakus
4852
iayTjeneste.kopierGrunnlagFraEksisterendeBehandling(originalBehandlingId, nyBehandlingId);

domenetjenester/beregning-ytelse/src/main/java/no/nav/ung/sak/ytelse/KontrollerteInntektperioderTjeneste.java

+33-30
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import no.nav.ung.sak.behandlingslager.tilkjentytelse.KontrollertInntektPeriode;
1111
import no.nav.ung.sak.behandlingslager.tilkjentytelse.TilkjentYtelseRepository;
1212
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
13-
import no.nav.ung.sak.perioder.ProsessTriggerPeriodeUtleder;
1413

1514
import java.math.BigDecimal;
1615
import java.util.HashSet;
@@ -36,43 +35,47 @@ public KontrollerteInntektperioderTjeneste(TilkjentYtelseRepository tilkjentYtel
3635

3736
public void opprettKontrollerteInntekterPerioderFraBruker(Long behandlingId, LocalDateTimeline<Set<RapportertInntekt>> inntektTidslinje, LocalDateTimeline<Set<BehandlingÅrsakType>> prosesstriggerTidslinje) {
3837
final var relevantePerioderForKontroll = prosesstriggerTidslinje.filterValue(it -> it.contains(BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT));
39-
final var kontrollertePerioder = mapTilKontrollerteInntektperioder(inntektTidslinje.mapValue(it -> new RapportertInntektOgKilde(KontrollertInntektKilde.BRUKER, it)), relevantePerioderForKontroll, Optional.of(KontrollertInntektKilde.BRUKER));
38+
final var kontrollertePerioder = mapTilKontrollerteInntektperioder(inntektTidslinje.mapValue(it -> new RapportertInntektOgKilde(KontrollertInntektKilde.BRUKER, it)), relevantePerioderForKontroll, Optional.of(KontrollertInntektKilde.BRUKER), false);
4039
tilkjentYtelseRepository.lagre(behandlingId, kontrollertePerioder);
4140
}
4241

43-
public void opprettKontrollerteInntekterPerioderFraRegister(Long behandlingId, LocalDateTimeline<RapportertInntektOgKilde> inntektTidslinje, LocalDateTimeline<Set<BehandlingÅrsakType>> prosesstriggerTidslinje) {
42+
public void opprettKontrollerteInntekterPerioderFraEtterManuellVurdering(Long behandlingId, LocalDateTimeline<RapportertInntektOgKilde> inntektTidslinje, LocalDateTimeline<Set<BehandlingÅrsakType>> prosesstriggerTidslinje) {
4443
final var relevantePerioderForKontroll = prosesstriggerTidslinje.filterValue(it -> it.contains(BehandlingÅrsakType.RE_KONTROLL_REGISTER_INNTEKT));
45-
final var kontrollertePerioder = mapTilKontrollerteInntektperioder(inntektTidslinje, relevantePerioderForKontroll, Optional.empty());
44+
final var kontrollertePerioder = mapTilKontrollerteInntektperioder(inntektTidslinje, relevantePerioderForKontroll, Optional.empty(), true);
4645
tilkjentYtelseRepository.lagre(behandlingId, kontrollertePerioder);
4746
}
4847

4948
public LocalDateTimeline<Set<RapportertInntekt>> hentTidslinje(Long behandlingId) {
5049
return tilkjentYtelseRepository.hentKontrollertInntektPerioder(behandlingId)
51-
.stream()
52-
.flatMap(it -> it.getPerioder().stream())
53-
.map(p -> {
54-
Set<RapportertInntekt> rapportertInntekter = new HashSet<>();
55-
if (p.getArbeidsinntekt() != null) {
56-
rapportertInntekter.add(new RapportertInntekt(InntektType.ARBEIDSTAKER_ELLER_FRILANSER, p.getArbeidsinntekt()));
57-
}
58-
if (p.getYtelse() != null) {
59-
rapportertInntekter.add(new RapportertInntekt(InntektType.YTELSE, p.getYtelse()));
60-
}
61-
return new LocalDateTimeline<>(p.getPeriode().getFomDato(), p.getPeriode().getTomDato(), rapportertInntekter);
62-
}).reduce(LocalDateTimeline::crossJoin)
63-
.orElse(LocalDateTimeline.empty());
50+
.stream()
51+
.flatMap(it -> it.getPerioder().stream())
52+
.map(p -> {
53+
Set<RapportertInntekt> rapportertInntekter = new HashSet<>();
54+
if (p.getArbeidsinntekt() != null) {
55+
rapportertInntekter.add(new RapportertInntekt(InntektType.ARBEIDSTAKER_ELLER_FRILANSER, p.getArbeidsinntekt()));
56+
}
57+
if (p.getYtelse() != null) {
58+
rapportertInntekter.add(new RapportertInntekt(InntektType.YTELSE, p.getYtelse()));
59+
}
60+
return new LocalDateTimeline<>(p.getPeriode().getFomDato(), p.getPeriode().getTomDato(), rapportertInntekter);
61+
}).reduce(LocalDateTimeline::crossJoin)
62+
.orElse(LocalDateTimeline.empty());
6463
}
6564

66-
private static List<KontrollertInntektPeriode> mapTilKontrollerteInntektperioder(LocalDateTimeline<RapportertInntektOgKilde> inntektTidslinje, LocalDateTimeline<Set<BehandlingÅrsakType>> relevantePerioderForKontroll, Optional<KontrollertInntektKilde> defaultKilde) {
65+
private static List<KontrollertInntektPeriode> mapTilKontrollerteInntektperioder(LocalDateTimeline<RapportertInntektOgKilde> inntektTidslinje,
66+
LocalDateTimeline<Set<BehandlingÅrsakType>> relevantePerioderForKontroll,
67+
Optional<KontrollertInntektKilde> defaultKilde,
68+
boolean erManueltVurdert) {
6769
return relevantePerioderForKontroll.combine(inntektTidslinje, lagTomListeForIngenInntekter(defaultKilde), LocalDateTimeline.JoinStyle.LEFT_JOIN)
68-
.toSegments().stream().map(
69-
s -> KontrollertInntektPeriode.ny()
70-
.medPeriode(DatoIntervallEntitet.fraOgMedTilOgMed(s.getFom(), s.getTom()))
71-
.medArbeidsinntekt(finnInntektAvType(s.getValue().rapporterteInntekter(), InntektType.ARBEIDSTAKER_ELLER_FRILANSER))
72-
.medYtelse(finnInntektAvType(s.getValue().rapporterteInntekter(), InntektType.YTELSE))
73-
.medKilde(s.getValue().kilde())
74-
.build()
75-
).toList();
70+
.toSegments().stream().map(
71+
s -> KontrollertInntektPeriode.ny()
72+
.medPeriode(DatoIntervallEntitet.fraOgMedTilOgMed(s.getFom(), s.getTom()))
73+
.medArbeidsinntekt(finnInntektAvType(s.getValue().rapporterteInntekter(), InntektType.ARBEIDSTAKER_ELLER_FRILANSER))
74+
.medYtelse(finnInntektAvType(s.getValue().rapporterteInntekter(), InntektType.YTELSE))
75+
.medKilde(s.getValue().kilde())
76+
.medErManueltVurdert(erManueltVurdert)
77+
.build()
78+
).toList();
7679
}
7780

7881
private static LocalDateSegmentCombinator<Set<BehandlingÅrsakType>, RapportertInntektOgKilde, RapportertInntektOgKilde> lagTomListeForIngenInntekter(Optional<KontrollertInntektKilde> kilde) {
@@ -81,10 +84,10 @@ private static List<KontrollertInntektPeriode> mapTilKontrollerteInntektperioder
8184

8285
private static BigDecimal finnInntektAvType(Set<RapportertInntekt> s, InntektType inntektType) {
8386
return s.stream()
84-
.filter(it -> it.inntektType().equals(inntektType))
85-
.map(RapportertInntekt::beløp)
86-
.reduce(BigDecimal::add)
87-
.orElse(null);
87+
.filter(it -> it.inntektType().equals(inntektType))
88+
.map(RapportertInntekt::beløp)
89+
.reduce(BigDecimal::add)
90+
.orElse(null);
8891
}
8992

9093
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package no.nav.ung.sak.kontrakt.kontroll;
2+
3+
import java.util.List;
4+
5+
public record KontrollerInntektDto(List<KontrollerInntektPeriodeDto> kontrollperioder) {
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package no.nav.ung.sak.kontrakt.kontroll;
2+
3+
import no.nav.ung.sak.typer.Periode;
4+
5+
public record KontrollerInntektPeriodeDto(
6+
Periode periode,
7+
PeriodeStatus status,
8+
boolean erTilVurdering,
9+
RapporterteInntekterDto rapporterteInntekter,
10+
Integer fastsattArbeidsinntekt,
11+
Integer fastsattYtelse,
12+
BrukKontrollertInntektValg valg
13+
) {
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package no.nav.ung.sak.kontrakt.kontroll;
2+
3+
public enum PeriodeStatus {
4+
AVVIK,
5+
INGEN_AVVIK
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package no.nav.ung.sak.kontrakt.kontroll;
2+
3+
public record RapportertInntektDto(
4+
Integer arbeidsinntekt,
5+
Integer ytelse
6+
){
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package no.nav.ung.sak.kontrakt.kontroll;
2+
3+
public record RapporterteInntekterDto(RapportertInntektDto bruker, RapportertInntektDto register) {
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
alter table if exists kontrollert_inntekt_periode
2+
add column er_manuelt_vurdert boolean not null;
3+
comment on column kontrollert_inntekt_periode.er_manuelt_vurdert is 'Sier om perioden har blitt manuelt vurdert av saksbehandler.';

web/src/main/java/no/nav/ung/sak/web/app/tjenester/RestImplementationClasses.java

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import no.nav.ung.sak.web.app.tjenester.behandling.beregningsresultat.BeregningsresultatRestTjeneste;
1212
import no.nav.ung.sak.web.app.tjenester.behandling.beregningsresultat.OverlapendeYtelserRestTjeneste;
1313
import no.nav.ung.sak.web.app.tjenester.behandling.historikk.HistorikkRestTjeneste;
14+
import no.nav.ung.sak.web.app.tjenester.behandling.kontroll.KontrollerInntektRestTjeneste;
1415
import no.nav.ung.sak.web.app.tjenester.behandling.personopplysning.ForvaltningPersonRestTjeneste;
1516
import no.nav.ung.sak.web.app.tjenester.behandling.personopplysning.PersonRestTjeneste;
1617
import no.nav.ung.sak.web.app.tjenester.behandling.søknad.SøknadRestTjeneste;
@@ -78,6 +79,7 @@ public Collection<Class<?>> getImplementationClasses() {
7879
classes.add(LosRestTjeneste.class);
7980

8081
classes.add(UngdomsytelseRestTjeneste.class);
82+
classes.add(KontrollerInntektRestTjeneste.class);
8183

8284
classes.add(OppdragProxyRestTjeneste.class);
8385

web/src/main/java/no/nav/ung/sak/web/app/tjenester/behandling/BehandlingDtoTjeneste.java

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import no.nav.ung.sak.web.app.tjenester.behandling.aksjonspunkt.AksjonspunktRestTjeneste;
2727
import no.nav.ung.sak.web.app.tjenester.behandling.beregningsresultat.BeregningsresultatRestTjeneste;
2828
import no.nav.ung.sak.web.app.tjenester.behandling.historikk.HistorikkRestTjeneste;
29+
import no.nav.ung.sak.web.app.tjenester.behandling.kontroll.KontrollerInntektRestTjeneste;
2930
import no.nav.ung.sak.web.app.tjenester.behandling.personopplysning.PersonRestTjeneste;
3031
import no.nav.ung.sak.web.app.tjenester.behandling.søknad.SøknadRestTjeneste;
3132
import no.nav.ung.sak.web.app.tjenester.behandling.søknadsfrist.SøknadsfristRestTjeneste;
@@ -263,6 +264,7 @@ private void leggTilBeregnetYtelseBaserteLinks(Behandling behandling, Behandling
263264
if (ytelseMedBeregning) {
264265
dto.leggTil(getFraMap(BeregningsresultatRestTjeneste.BEREGNINGSRESULTAT_PATH, "beregningsresultat", uuidQueryParams));
265266
dto.leggTil(getFraMap(BeregningsresultatRestTjeneste.BEREGNINGSRESULTAT_UTBETALT_PATH, "beregningsresultat-utbetalt", uuidQueryParams));
267+
dto.leggTil(getFraMap(KontrollerInntektRestTjeneste.KONTROLL_PERIODER_PATH, "kontroller-inntekt-perioder", uuidQueryParams));
266268
lagSimuleringResultatLink(behandling).ifPresent(dto::leggTil);
267269
lagTilbakekrevingValgLink(behandling).forEach(dto::leggTil);
268270
}

web/src/main/java/no/nav/ung/sak/web/app/tjenester/behandling/kontroll/FastsettInntektOppdaterer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public FastsettInntektOppdaterer(KontrollerteInntektperioderTjeneste kontrollert
4343
@Override
4444
public OppdateringResultat oppdater(FastsettInntektDto dto, AksjonspunktOppdaterParameter param) {
4545
final var sammenslåtteInntekterTidslinje = finnInntektOgKildeTidslinje(dto, param);
46-
kontrollerteInntektperioderTjeneste.opprettKontrollerteInntekterPerioderFraRegister(param.getBehandlingId(), sammenslåtteInntekterTidslinje, prosessTriggerPeriodeUtleder.utledTidslinje(param.getBehandlingId()));
46+
kontrollerteInntektperioderTjeneste.opprettKontrollerteInntekterPerioderFraEtterManuellVurdering(param.getBehandlingId(), sammenslåtteInntekterTidslinje, prosessTriggerPeriodeUtleder.utledTidslinje(param.getBehandlingId()));
4747
return OppdateringResultat.builder().medTotrinnHvis(true).build();
4848
}
4949

0 commit comments

Comments
 (0)