2
2
3
3
import java .util .List ;
4
4
import java .util .Map ;
5
+ import java .util .Set ;
5
6
import java .util .function .Function ;
6
7
import java .util .logging .Logger ;
7
8
25
26
import no .nav .ung .sak .behandlingslager .ytelse .sats .UngdomsytelseSatser ;
26
27
import no .nav .ung .sak .domene .typer .tid .JsonObjectMapper ;
27
28
import no .nav .ung .sak .domene .typer .tid .Virkedager ;
28
- import no .nav .ung .sak .ytelse .BeregnetSats ;
29
- import no .nav .ung .sak .ytelse .RapportertInntektMapper ;
30
- import no .nav .ung .sak .ytelse .RapporterteInntekter ;
31
- import no .nav .ung .sak .ytelse .TilkjentYtelsePeriodeResultat ;
29
+ import no .nav .ung .sak .ytelse .*;
32
30
import no .nav .ung .sak .ytelseperioder .YtelseperiodeUtleder ;
33
31
34
32
@@ -42,21 +40,21 @@ public class BeregnYtelseSteg implements BehandlingSteg {
42
40
43
41
private UngdomsytelseGrunnlagRepository ungdomsytelseGrunnlagRepository ;
44
42
private TilkjentYtelseRepository tilkjentYtelseRepository ;
45
- private RapportertInntektMapper rapportertInntektMapper ;
46
43
private YtelseperiodeUtleder ytelseperiodeUtleder ;
44
+ private KontrollerteInntektperioderTjeneste kontrollerteInntektperioderTjeneste ;
47
45
48
46
public BeregnYtelseSteg () {
49
47
}
50
48
51
49
@ Inject
52
50
public BeregnYtelseSteg (UngdomsytelseGrunnlagRepository ungdomsytelseGrunnlagRepository ,
53
51
TilkjentYtelseRepository tilkjentYtelseRepository ,
54
- RapportertInntektMapper rapportertInntektMapper ,
55
- YtelseperiodeUtleder ytelseperiodeUtleder ) {
52
+ YtelseperiodeUtleder ytelseperiodeUtleder ,
53
+ KontrollerteInntektperioderTjeneste kontrollerteInntektperioderTjeneste ) {
56
54
this .ungdomsytelseGrunnlagRepository = ungdomsytelseGrunnlagRepository ;
57
55
this .tilkjentYtelseRepository = tilkjentYtelseRepository ;
58
- this .rapportertInntektMapper = rapportertInntektMapper ;
59
56
this .ytelseperiodeUtleder = ytelseperiodeUtleder ;
57
+ this .kontrollerteInntektperioderTjeneste = kontrollerteInntektperioderTjeneste ;
60
58
}
61
59
62
60
@ Override
@@ -66,31 +64,32 @@ public BeregnYtelseSteg(UngdomsytelseGrunnlagRepository ungdomsytelseGrunnlagRep
66
64
if (ungdomsytelseGrunnlag .isEmpty ()) {
67
65
return BehandleStegResultat .utførtUtenAksjonspunkter ();
68
66
}
69
- final var rapportertInntektTidslinje = rapportertInntektMapper .mapAlleGjeldendeRegisterOgBrukersInntekter (kontekst .getBehandlingId ());
70
67
final var ytelseTidslinje = ytelseperiodeUtleder .utledYtelsestidslinje (kontekst .getBehandlingId ());
71
68
69
+ final var kontrollertInntektperiodeTidslinje = kontrollerteInntektperioderTjeneste .hentTidslinje (kontekst .getBehandlingId ());
70
+
72
71
// Validerer at periodene for rapporterte inntekter er konsistent med ytelsetidslinje
73
- validerPerioderForRapporterteInntekter (rapportertInntektTidslinje , ytelseTidslinje );
72
+ validerPerioderForRapporterteInntekter (kontrollertInntektperiodeTidslinje , ytelseTidslinje );
74
73
75
74
final var satsTidslinje = ungdomsytelseGrunnlag .get ().getSatsTidslinje ();
76
75
final var totalsatsTidslinje = mapSatserTilTotalbeløpForPerioder (satsTidslinje , ytelseTidslinje );
77
76
final var godkjentUttakTidslinje = finnGodkjentUttakstidslinje (ungdomsytelseGrunnlag .get ());
78
77
79
78
// Utfør reduksjon og map til tilkjent ytelse
80
- final var tilkjentYtelseTidslinje = LagTilkjentYtelse .lagTidslinje (godkjentUttakTidslinje , totalsatsTidslinje , rapportertInntektTidslinje );
81
- final var regelInput = lagRegelInput (satsTidslinje , ytelseTidslinje , godkjentUttakTidslinje , totalsatsTidslinje , rapportertInntektTidslinje );
79
+ final var tilkjentYtelseTidslinje = LagTilkjentYtelse .lagTidslinje (godkjentUttakTidslinje , totalsatsTidslinje , kontrollertInntektperiodeTidslinje );
80
+ final var regelInput = lagRegelInput (satsTidslinje , ytelseTidslinje , godkjentUttakTidslinje , totalsatsTidslinje , kontrollertInntektperiodeTidslinje );
82
81
final var regelSporing = lagSporing (tilkjentYtelseTidslinje );
83
82
tilkjentYtelseRepository .lagre (kontekst .getBehandlingId (), tilkjentYtelseTidslinje .mapValue (TilkjentYtelsePeriodeResultat ::verdi ), regelInput , regelSporing );
84
83
return BehandleStegResultat .utførtUtenAksjonspunkter ();
85
84
}
86
85
87
- private static String lagRegelInput (LocalDateTimeline <UngdomsytelseSatser > satsTidslinje , LocalDateTimeline <Boolean > ytelseTidslinje , LocalDateTimeline <Boolean > godkjentUttakTidslinje , LocalDateTimeline <BeregnetSats > totalsatsTidslinje , LocalDateTimeline <RapporterteInntekter > rapportertInntektTidslinje ) {
86
+ private static String lagRegelInput (LocalDateTimeline <UngdomsytelseSatser > satsTidslinje , LocalDateTimeline <Boolean > ytelseTidslinje , LocalDateTimeline <Boolean > godkjentUttakTidslinje , LocalDateTimeline <BeregnetSats > totalsatsTidslinje , LocalDateTimeline <Set < RapportertInntekt > > rapportertInntektTidslinje ) {
88
87
final var sporingsMap = Map .of (
89
88
"satsTidslinje" , satsTidslinje ,
90
89
"ytelseTidslinje" , ytelseTidslinje .mapValue (IngenVerdi ::ingenVerdi ),
91
90
"godkjentUttakTidslinje" , godkjentUttakTidslinje .mapValue (IngenVerdi ::ingenVerdi ),
92
91
"totalsatsTidslinje" , totalsatsTidslinje ,
93
- "rapportertInntektTidslinje " , rapportertInntektTidslinje
92
+ "kontrollertInntektTidslinje " , rapportertInntektTidslinje
94
93
);
95
94
final var regelInput = LagRegelSporing .lagRegelSporingFraTidslinjer (sporingsMap );
96
95
return regelInput ;
@@ -116,14 +115,14 @@ private static LocalDateTimeline<Boolean> finnGodkjentUttakstidslinje(Ungdomsyte
116
115
.orElse (LocalDateTimeline .empty ());
117
116
}
118
117
119
- private static void validerPerioderForRapporterteInntekter (LocalDateTimeline <RapporterteInntekter > rapportertInntektTidslinje , LocalDateTimeline <Boolean > stønadTidslinje ) {
118
+ private static void validerPerioderForRapporterteInntekter (LocalDateTimeline <Set < RapportertInntekt > > rapportertInntektTidslinje , LocalDateTimeline <Boolean > stønadTidslinje ) {
120
119
final var rapporterteInntekterSomIkkeMatcherYtelsesperiode = rapportertInntektTidslinje .stream ().filter (s -> harIkkeMatchendeStønadsperiode (s , stønadTidslinje )).toList ();
121
120
if (!rapporterteInntekterSomIkkeMatcherYtelsesperiode .isEmpty ()) {
122
121
throw new IllegalStateException ("Rapportert inntekt har perioder som ikke er dekket av stønadstidslinjen: " + rapporterteInntekterSomIkkeMatcherYtelsesperiode .stream ().map (LocalDateSegment ::getLocalDateInterval ).toList ());
123
122
}
124
123
}
125
124
126
- private static boolean harIkkeMatchendeStønadsperiode (LocalDateSegment <RapporterteInntekter > s , LocalDateTimeline <Boolean > stønadTidslinje ) {
125
+ private static boolean harIkkeMatchendeStønadsperiode (LocalDateSegment <Set < RapportertInntekt > > s , LocalDateTimeline <Boolean > stønadTidslinje ) {
127
126
return stønadTidslinje .getLocalDateIntervals ().stream ().noneMatch (intervall -> intervall .equals (s .getLocalDateInterval ()));
128
127
}
129
128
0 commit comments