21
21
22
22
import no .nav .foreldrepenger .abakus .domene .iay .kodeverk .InntektsKilde ;
23
23
import no .nav .foreldrepenger .abakus .kobling .Kobling ;
24
+ import no .nav .foreldrepenger .abakus .kodeverk .TemaUnderkategori ;
24
25
import no .nav .foreldrepenger .abakus .kodeverk .YtelseStatus ;
25
26
import no .nav .foreldrepenger .abakus .kodeverk .YtelseType ;
26
27
import no .nav .foreldrepenger .abakus .registerdata .arbeidsforhold .Arbeidsforhold ;
32
33
import no .nav .foreldrepenger .abakus .registerdata .ytelse .arena .MeldekortTjeneste ;
33
34
import no .nav .foreldrepenger .abakus .registerdata .ytelse .arena .MeldekortUtbetalingsgrunnlagSak ;
34
35
import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .beregningsgrunnlag .InfotrygdBeregningsgrunnlagTjeneste ;
35
- import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .beregningsgrunnlag .YtelseBeregningsgrunnlagGrunnlag ;
36
- import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .beregningsgrunnlag .YtelsesBeregningsgrunnlag ;
36
+ import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .beregningsgrunnlag .YtelseBeregningsgrunnlag ;
37
37
import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .sak .InfotrygdSak ;
38
38
import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .sak .InfotrygdSakOgGrunnlag ;
39
39
import no .nav .foreldrepenger .abakus .registerdata .ytelse .infotrygd .sak .InfotrygdTjeneste ;
45
45
import no .nav .vedtak .feil .deklarasjon .TekniskFeil ;
46
46
import no .nav .vedtak .felles .integrasjon .aktør .klient .AktørConsumer ;
47
47
import no .nav .vedtak .felles .jpa .tid .DatoIntervallEntitet ;
48
+ import no .nav .vedtak .util .FPDateUtil ;
48
49
49
50
@ ApplicationScoped
50
51
public class InnhentingSamletTjeneste {
@@ -78,7 +79,6 @@ public InntektsInformasjon getInntektsInformasjon(AktørId aktørId, Kobling beh
78
79
FinnInntektRequest .FinnInntektRequestBuilder builder = FinnInntektRequest .builder (YearMonth .from (LocalDateTime .ofInstant (periode .getStart (), ZoneId .systemDefault ())),
79
80
YearMonth .from (LocalDateTime .ofInstant (periode .getEnd (), ZoneId .systemDefault ())));
80
81
81
- LOGGER .info ("Bruker aktørId mot inntektskomponenten for behandlingId {}" , behandling .getId ());
82
82
builder .medAktørId (aktørId .getId ());
83
83
84
84
return inntektTjeneste .finnInntekt (builder .build (), kilde );
@@ -92,17 +92,11 @@ public Map<ArbeidsforholdIdentifikator, List<Arbeidsforhold>> getArbeidsforhold(
92
92
return aktørConsumer .hentPersonIdentForAktørId (aktørId .getId ()).map (PersonIdent ::new ).orElseThrow ();
93
93
}
94
94
95
- public List <InfotrygdSakOgGrunnlag > getSammenstiltSakOgGrunnlag (Kobling behandling , AktørId aktørId , Interval opplysningsPeriode , boolean medGrunnlag ) {
96
- final List <InfotrygdSak > infotrygdSakList = filtrerSaker (getInfotrygdSaker (behandling , aktørId , opplysningsPeriode ), medGrunnlag );
95
+ public List <InfotrygdSakOgGrunnlag > getSammenstiltSakOgGrunnlag (AktørId aktørId , Interval opplysningsPeriode , boolean medGrunnlag ) {
96
+ final List <InfotrygdSak > infotrygdSakList = filtrerSaker (getInfotrygdSaker (aktørId , opplysningsPeriode ), medGrunnlag );
97
97
LOGGER .info ("InfotrygdSak sammentilling antall saker/vedtak: {}" , infotrygdSakList .size ());
98
98
if (medGrunnlag ) {
99
- final YtelsesBeregningsgrunnlag ytelsesBeregningsgrunnlag = getInfotrygdBeregningsgrunnlag (behandling , aktørId , opplysningsPeriode );
100
- List <YtelseBeregningsgrunnlagGrunnlag > alleGrunnlag ;
101
- if (ytelsesBeregningsgrunnlag != null ) {
102
- alleGrunnlag = ytelsesBeregningsgrunnlag .getAlleGrunnlag ();
103
- } else {
104
- alleGrunnlag = new ArrayList <>();
105
- }
99
+ List <YtelseBeregningsgrunnlag > alleGrunnlag = getInfotrygdBeregningsgrunnlag (aktørId , opplysningsPeriode );
106
100
LOGGER .info ("InfotrygdBeregningsgrunnlag antall grunnlag: {}" , alleGrunnlag .size ());
107
101
return sammenstillSakOgGrunnlag (infotrygdSakList , alleGrunnlag , opplysningsPeriode );
108
102
}
@@ -129,50 +123,53 @@ private boolean skalLagresIfbmGrunnlag(InfotrygdSak infotrygdSak) {
129
123
}
130
124
131
125
private boolean skalLagresBetinget (InfotrygdSak infotrygdSak , boolean medGrunnlag ) {
132
- if (YtelseType .ENSLIG_FORSØRGER .equals (infotrygdSak .getRelatertYtelseType ())) {
126
+ if (YtelseType .ENSLIG_FORSØRGER .equals (infotrygdSak .getYtelseType ())) {
133
127
return false ;
134
128
}
135
- if (infotrygdSak .erLøpendeVedtak () || infotrygdSak .erAvsluttetVedtak ()) {
136
- if (infotrygdSak .erAvRelatertYtelseType (YtelseType .ENGANGSSTØNAD , YtelseType .SYKEPENGER ,
137
- YtelseType .SVANGERSKAPSPENGER , YtelseType .FORELDREPENGER , YtelseType .PÅRØRENDESYKDOM )) {
138
- return true ;
139
- }
129
+ if (YtelseStatus .LØPENDE .equals (infotrygdSak .getYtelseStatus ()) || YtelseStatus .AVSLUTTET .equals (infotrygdSak .getYtelseStatus ())) {
130
+ return infotrygdSak .erAvRelatertYtelseType (YtelseType .ENGANGSSTØNAD , YtelseType .SYKEPENGER ,
131
+ YtelseType .SVANGERSKAPSPENGER , YtelseType .FORELDREPENGER , YtelseType .PÅRØRENDESYKDOM );
140
132
} else if (infotrygdSak .erVedtak ()) {
141
133
if (infotrygdSak .erAvRelatertYtelseType (YtelseType .ENGANGSSTØNAD , YtelseType .FORELDREPENGER )) {
142
134
return true ;
143
135
}
144
- if (medGrunnlag && infotrygdSak .erAvRelatertYtelseType (YtelseType .SYKEPENGER ,
145
- YtelseType .PÅRØRENDESYKDOM , YtelseType .SVANGERSKAPSPENGER )) {
146
- return true ;
147
- }
136
+ return medGrunnlag && infotrygdSak .erAvRelatertYtelseType (YtelseType .SYKEPENGER ,
137
+ YtelseType .PÅRØRENDESYKDOM , YtelseType .SVANGERSKAPSPENGER );
148
138
}
149
139
return false ;
150
140
}
151
141
152
- private List <InfotrygdSak > getInfotrygdSaker (Kobling behandling , AktørId aktørId , Interval opplysningsPeriode ) {
153
- return infotrygdTjeneste .finnSakListe (behandling , getFnrFraAktørId (aktørId ).getIdent (), LocalDateTime .ofInstant (opplysningsPeriode .getStart (), ZoneId .systemDefault ()).toLocalDate ());
142
+ private List <InfotrygdSak > getInfotrygdSaker (AktørId aktørId , Interval opplysningsPeriode ) {
143
+ return infotrygdTjeneste .finnSakListe (getFnrFraAktørId (aktørId ).getIdent (), LocalDateTime .ofInstant (opplysningsPeriode .getStart (), ZoneId .systemDefault ()).toLocalDate ());
154
144
}
155
145
156
- private YtelsesBeregningsgrunnlag getInfotrygdBeregningsgrunnlag (Kobling behandling , AktørId aktørId , Interval opplysningsPeriode ) {
157
- return infotrygdBeregningsgrunnlagTjeneste .hentGrunnlagListeFull (behandling , getFnrFraAktørId ( aktørId ). getIdent () ,
146
+ private List < YtelseBeregningsgrunnlag > getInfotrygdBeregningsgrunnlag (AktørId aktørId , Interval opplysningsPeriode ) {
147
+ return infotrygdBeregningsgrunnlagTjeneste .hentGrunnlagListeFull (aktørId ,
158
148
LocalDateTime .ofInstant (opplysningsPeriode .getStart (), ZoneId .systemDefault ()).toLocalDate ());
159
149
}
160
150
161
- private boolean matcherSakOgGrunnlag (InfotrygdSakOgGrunnlag sak , YtelseBeregningsgrunnlagGrunnlag grunnlag ) {
151
+ private boolean matcherSakOgGrunnlag (InfotrygdSakOgGrunnlag sak , YtelseBeregningsgrunnlag grunnlag ) {
162
152
if (sak .getGrunnlag ().isPresent () || sak .getSak ().getIverksatt () == null ) {
163
153
return false ;
164
154
}
165
155
// Samme type (ITrygd tema+behandlingstema) og grunnlag/identdato = sak/iverksattdato
166
- return grunnlag .getType ().equals (sak .getSak ().hentRelatertYtelseTypeForSammenstillingMedBeregningsgrunnlag ()) && grunnlag .getIdentdato ().equals (sak .getSak ().getIverksatt ());
156
+ return grunnlag .getType ().equals (sak .getSak ().hentRelatertYtelseTypeForSammenstillingMedBeregningsgrunnlag ())
157
+ && grunnlag .getIdentdato ().equals (sak .getSak ().getIverksatt ());
167
158
}
168
159
169
- private List <InfotrygdSakOgGrunnlag > sammenstillSakOgGrunnlag (List <InfotrygdSak > saker , List <YtelseBeregningsgrunnlagGrunnlag > grunnlagene , Interval opplysningsPeriode ) {
160
+ private List <InfotrygdSakOgGrunnlag > sammenstillSakOgGrunnlag (List <InfotrygdSak > saker , List <YtelseBeregningsgrunnlag > grunnlagene ,
161
+ Interval opplysningsPeriode ) {
170
162
List <InfotrygdSakOgGrunnlag > sammenstilling = saker .stream ().map (InfotrygdSakOgGrunnlag ::new ).collect (Collectors .toList ());
171
163
LocalDate periodeFom = LocalDateTime .ofInstant (opplysningsPeriode .getStart (), ZoneId .systemDefault ()).toLocalDate ();
172
164
173
- for (YtelseBeregningsgrunnlagGrunnlag grunnlag : grunnlagene ) {
165
+ for (YtelseBeregningsgrunnlag grunnlag : grunnlagene ) {
174
166
Optional <InfotrygdSakOgGrunnlag > funnet = settSammenSakMatchendeGrunnlag (sammenstilling , grunnlag );
175
- if (!funnet .isPresent () && grunnlag .getTom () != null && !grunnlag .getTom ().isBefore (periodeFom )) {
167
+ if (funnet .isEmpty () && grunnlag .getTom () != null && !grunnlag .getTom ().isBefore (periodeFom )) {
168
+ InfotrygdSak sak = lagSakForYtelseUtenomSaksbasen (grunnlag .getType (), grunnlag .getTemaUnderkategori (), grunnlag .getIdentdato (),
169
+ DatoIntervallEntitet .fraOgMedTilOgMed (grunnlag .getFom (), grunnlag .getTom ()));
170
+ InfotrygdSakOgGrunnlag isog = new InfotrygdSakOgGrunnlag (sak );
171
+ isog .setGrunnlag (grunnlag );
172
+ sammenstilling .add (isog );
176
173
InnhentingSamletTjeneste .Feilene .FACTORY .manglerInfotrygdSak (grunnlag .getType ().toString (), grunnlag .getIdentdato ().toString ()).log (LOGGER );
177
174
}
178
175
}
@@ -183,10 +180,23 @@ private List<InfotrygdSakOgGrunnlag> sammenstillSakOgGrunnlag(List<InfotrygdSak>
183
180
.collect (Collectors .toList ());
184
181
}
185
182
186
- private Optional <InfotrygdSakOgGrunnlag > settSammenSakMatchendeGrunnlag (List <InfotrygdSakOgGrunnlag > sakene , YtelseBeregningsgrunnlagGrunnlag grunnlag ) {
183
+ /* Faker sak fra Infotrygd når saken mangler i saksbasen, men finnes i vedtak */
184
+ private InfotrygdSak lagSakForYtelseUtenomSaksbasen (YtelseType type , TemaUnderkategori temaUnderkategori , LocalDate identdato , DatoIntervallEntitet periode ) {
185
+ YtelseStatus tilstand = FPDateUtil .iDag ().isBefore (periode .getTomDato ()) ? YtelseStatus .LØPENDE : YtelseStatus .AVSLUTTET ;
186
+ return InfotrygdSak .InfotrygdSakBuilder .ny ()
187
+ .medIverksatt (identdato )
188
+ .medRegistrert (identdato )
189
+ .medYtelseType (type )
190
+ .medTemaUnderkategori (temaUnderkategori )
191
+ .medRelatertYtelseTilstand (tilstand )
192
+ .medPeriode (periode )
193
+ .build ();
194
+ }
195
+
196
+ private Optional <InfotrygdSakOgGrunnlag > settSammenSakMatchendeGrunnlag (List <InfotrygdSakOgGrunnlag > sakene , YtelseBeregningsgrunnlag grunnlag ) {
187
197
Optional <InfotrygdSakOgGrunnlag > funnet = Optional .empty ();
188
198
for (InfotrygdSakOgGrunnlag sak : sakene ) {
189
- if (! funnet .isPresent () && matcherSakOgGrunnlag (sak , grunnlag )) {
199
+ if (funnet .isEmpty () && matcherSakOgGrunnlag (sak , grunnlag )) {
190
200
sak .setGrunnlag (grunnlag );
191
201
funnet = Optional .of (sak );
192
202
if (grunnlag .getFom () != null && grunnlag .getFom ().isBefore (sak .getPeriode ().getFomDato ())) {
@@ -210,8 +220,8 @@ private boolean erEtterIverksatt(InfotrygdSakOgGrunnlag infotrygdSakOgGrunnlag)
210
220
}
211
221
212
222
private boolean skalTypeLagresUansett (InfotrygdSakOgGrunnlag infotrygdSakOgGrunnlag ) {
213
- YtelseType type = infotrygdSakOgGrunnlag .getSak ().getRelatertYtelseType ();
214
- return YtelseType .ENGANGSSTØNAD . equals ( type ) || YtelseType .FORELDREPENGER . equals (type );
223
+ YtelseType type = infotrygdSakOgGrunnlag .getSak ().getYtelseType ();
224
+ return List . of ( YtelseType .ENGANGSSTØNAD , YtelseType .FORELDREPENGER ). contains (type );
215
225
}
216
226
217
227
public List <MeldekortUtbetalingsgrunnlagSak > hentYtelserTjenester (AktørId aktørId , Interval opplysningsPeriode ) {
@@ -234,7 +244,8 @@ private List<MeldekortUtbetalingsgrunnlagSak> filtrerYtelserTjenester(List<Melde
234
244
InnhentingFeil .FACTORY .ignorerArenaSakInfoLogg ("meldekort" , sak .getSaksnummer ()).log (LOGGER );
235
245
} else if (sak .getVedtaksPeriodeFom () == null && sak .getMeldekortene ().isEmpty ()) {
236
246
InnhentingFeil .FACTORY .ignorerArenaSakInfoLogg ("vedtaksDato" , sak .getSaksnummer ()).log (LOGGER );
237
- } else if (sak .getVedtaksPeriodeTom () != null && sak .getVedtaksPeriodeTom ().isBefore (sak .getVedtaksPeriodeFom ()) && sak .getMeldekortene ().isEmpty ()) {
247
+ } else if (sak .getVedtaksPeriodeTom () != null && sak .getVedtaksPeriodeTom ().isBefore (sak .getVedtaksPeriodeFom ())
248
+ && sak .getMeldekortene ().isEmpty ()) {
238
249
InnhentingFeil .FACTORY .ignorerArenaSakMedVedtakTomFørVedtakFom (sak .getSaksnummer ()).log (LOGGER );
239
250
} else {
240
251
filtrert .add (sak );
0 commit comments