Skip to content

Commit ebe45b8

Browse files
authored
Persisterer andeler på anvisning (#1664)
1 parent 9d6098e commit ebe45b8

File tree

4 files changed

+231
-5
lines changed

4 files changed

+231
-5
lines changed

domenetjenester/vedtak/src/main/java/no/nav/foreldrepenger/abakus/vedtak/domene/VedtakYtelseRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public void lagre(VedtakYtelseBuilder builder) {
6161
entityManager.persist(ytelse);
6262
for (YtelseAnvist ytelseAnvist : ytelse.getYtelseAnvist()) {
6363
entityManager.persist(ytelseAnvist);
64+
ytelseAnvist.getAndeler().forEach(entityManager::persist);
6465
}
6566
entityManager.flush();
6667
} else {

domenetjenester/vedtak/src/main/java/no/nav/foreldrepenger/abakus/vedtak/tjeneste/YtelseRestTjeneste.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,21 @@
2424
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
2525
import io.swagger.v3.oas.annotations.Operation;
2626
import io.swagger.v3.oas.annotations.tags.Tag;
27+
import no.nav.abakus.iaygrunnlag.AktørIdPersonident;
28+
import no.nav.abakus.iaygrunnlag.Organisasjon;
2729
import no.nav.abakus.iaygrunnlag.request.AktørDatoRequest;
2830
import no.nav.abakus.vedtak.ytelse.Aktør;
2931
import no.nav.abakus.vedtak.ytelse.Desimaltall;
3032
import no.nav.abakus.vedtak.ytelse.Periode;
3133
import no.nav.abakus.vedtak.ytelse.Ytelse;
3234
import no.nav.abakus.vedtak.ytelse.v1.YtelseV1;
3335
import no.nav.abakus.vedtak.ytelse.v1.anvisning.Anvisning;
36+
import no.nav.abakus.vedtak.ytelse.v1.anvisning.AnvistAndel;
3437
import no.nav.foreldrepenger.abakus.felles.LoggUtil;
3538
import no.nav.foreldrepenger.abakus.typer.AktørId;
3639
import no.nav.foreldrepenger.abakus.typer.Beløp;
3740
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;
41+
import no.nav.foreldrepenger.abakus.vedtak.domene.Arbeidsgiver;
3842
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelse;
3943
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseBuilder;
4044
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
@@ -130,9 +134,31 @@ private Anvisning mapLagretAnvist(YtelseAnvist anvist) {
130134
anvist.getBeløp().map(Beløp::getVerdi).map(Desimaltall::new).ifPresent(anvisning::setBeløp);
131135
anvist.getDagsats().map(Beløp::getVerdi).map(Desimaltall::new).ifPresent(anvisning::setDagsats);
132136
anvist.getUtbetalingsgradProsent().map(Stillingsprosent::getVerdi).map(Desimaltall::new).ifPresent(anvisning::setUtbetalingsgrad);
137+
anvisning.setAndeler(mapAndeler(anvist));
138+
133139
return anvisning;
134140
}
135141

142+
private List<AnvistAndel> mapAndeler(YtelseAnvist anvist) {
143+
return anvist.getAndeler().stream().map(a -> new AnvistAndel(
144+
a.getArbeidsgiver().map(YtelseRestTjeneste::mapArbeidsgiver).orElse(null),
145+
a.getArbeidsforholdId(),
146+
new Desimaltall(a.getDagsats().getVerdi()),
147+
a.getUtbetalingsgradProsent() == null ? null : new Desimaltall(a.getUtbetalingsgradProsent().getVerdi()),
148+
a.getRefusjonsgradProsent() == null ? null : new Desimaltall(a.getRefusjonsgradProsent().getVerdi()),
149+
a.getInntektskategori()
150+
)).collect(Collectors.toList());
151+
}
152+
153+
private static no.nav.abakus.iaygrunnlag.Aktør mapArbeidsgiver(Arbeidsgiver arbeidsgiver) {
154+
if (arbeidsgiver == null) {
155+
return null;
156+
}
157+
return arbeidsgiver.getOrgnr() != null ?
158+
new Organisasjon(arbeidsgiver.getIdentifikator()) :
159+
new AktørIdPersonident(arbeidsgiver.getIdentifikator());
160+
}
161+
136162
public static class AbacDataSupplier implements Function<Object, AbacDataAttributter> {
137163
@Override
138164
public AbacDataAttributter apply(Object obj) {

domenetjenester/vedtak/src/test/java/no/nav/foreldrepenger/abakus/vedtak/LagreVedtakTaskTest.java

Lines changed: 197 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
package no.nav.foreldrepenger.abakus.vedtak;
22

3+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
34
import static org.junit.jupiter.api.Assertions.assertThrows;
45
import static org.mockito.Mockito.mock;
56

7+
import java.time.LocalDate;
8+
import java.util.List;
69
import java.util.UUID;
710

811
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.extension.RegisterExtension;
913

14+
import no.nav.foreldrepenger.abakus.dbstoette.JpaExtension;
15+
import no.nav.foreldrepenger.abakus.typer.AktørId;
16+
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelse;
1017
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
1118
import no.nav.foreldrepenger.abakus.vedtak.extract.v1.ExtractFromYtelseV1;
1219
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskData;
1320
import no.nav.vedtak.felles.prosesstask.api.ProsessTaskDataBuilder;
1421

1522
public class LagreVedtakTaskTest {
1623

24+
@RegisterExtension
25+
public static JpaExtension extension = new JpaExtension();
1726

18-
private VedtakYtelseRepository repository = mock(VedtakYtelseRepository.class);
27+
private VedtakYtelseRepository repository = new VedtakYtelseRepository(extension.getEntityManager());
1928
private ExtractFromYtelseV1 extractor = new ExtractFromYtelseV1(repository);
2029
private LagreVedtakTask task = new LagreVedtakTask(repository, extractor);
2130

@@ -45,9 +54,46 @@ public void skal_feile_ved_valideringsfeil() {
4554
" \"fom\": null,\n" +
4655
" \"tom\": null\n" +
4756
" },\n" +
48-
" \"anvist\": []\n" +
49-
"}\n" +
50-
"";
57+
" \"anvist\": [\n" +
58+
" {\n" +
59+
" \"periode\": {\n" +
60+
" \"fom\": null,\n" +
61+
" \"tom\": null\n" +
62+
" },\n" +
63+
" \"beløp\": {\n" +
64+
" \"verdi\": 1234\n" +
65+
" },\n" +
66+
" \"dagsats\": {\n" +
67+
" \"verdi\": 1234\n" +
68+
" },\n" +
69+
" \"utbetalingsgrad\": {\n" +
70+
" \"verdi\": 100\n" +
71+
" },\n" +
72+
" \"andeler\": [\n" +
73+
" {\n" +
74+
" \"arbeidsgiver\": {\n" +
75+
" \"ident\": \"999999999\",\n" +
76+
" \"identType\": \"ORGNUMMER\"\n" +
77+
" },\n" +
78+
" \"arbeidsforholdId\": \"joeisjf843jr3\",\n" +
79+
" \"dagsats\": {\n" +
80+
" \"verdi\": 1234\n" +
81+
" },\n" +
82+
" \"utbetalingsgrad\": {\n" +
83+
" \"verdi\": 100\n" +
84+
" },\n" +
85+
" \"refusjonsgrad\": {\n" +
86+
" \"verdi\": 100\n" +
87+
" },\n" +
88+
" \"inntektskategori\": {\n" +
89+
" \"kode\": \"ARBEIDSTAKER\",\n" +
90+
" \"kodeverk\": \"INNTEKTSKATEGORI\"\n" +
91+
" }\n" +
92+
" }\n" +
93+
" ]\n" +
94+
" }\n" +
95+
" ]\n" +
96+
"}\n";
5197

5298
ProsessTaskData data = ProsessTaskDataBuilder.forProsessTask(LagreVedtakTask.class)
5399
.medPayload(payload)
@@ -56,4 +102,151 @@ public void skal_feile_ved_valideringsfeil() {
56102

57103
assertThrows(IllegalArgumentException.class, () ->task.doTask(data));
58104
}
105+
106+
107+
@Test
108+
public void skal_ikke_feile_uten_valideringsfeil() {
109+
String payload = "{\n" +
110+
" \"version\" : \"1.0\",\n" +
111+
" \"aktør\" : {\n" +
112+
" \"verdi\" : \"1293528970663\"\n" +
113+
" },\n" +
114+
" \"vedtattTidspunkt\" : \"2021-12-15T11:06:01.623\",\n" +
115+
" \"type\" : {\n" +
116+
" \"kode\" : \"PSB\",\n" +
117+
" \"kodeverk\" : \"FAGSAK_YTELSE_TYPE\"\n" +
118+
" },\n" +
119+
" \"saksnummer\" : \"1DMNZBU\",\n" +
120+
" \"vedtakReferanse\" : \"e10b4624-d205-4bf8-a065-c41ed74be90b\",\n" +
121+
" \"status\" : {\n" +
122+
" \"kode\" : \"LOP\",\n" +
123+
" \"kodeverk\" : \"YTELSE_STATUS\"\n" +
124+
" },\n" +
125+
" \"fagsystem\" : {\n" +
126+
" \"kode\" : \"K9SAK\",\n" +
127+
" \"kodeverk\" : \"FAGSYSTEM\"\n" +
128+
" },\n" +
129+
" \"periode\" : {\n" +
130+
" \"fom\" : \"2021-11-01\",\n" +
131+
" \"tom\" : \"2021-11-19\"\n" +
132+
" },\n" +
133+
" \"tilleggsopplysninger\" : \"{\\n \\\"pleietrengende\\\" : \\\"2569674469455\\\",\\n \\\"innleggelsesPerioder\\\" : [ ]\\n}\",\n" +
134+
" \"anvist\" : [ {\n" +
135+
" \"periode\" : {\n" +
136+
" \"fom\" : \"2021-11-01\",\n" +
137+
" \"tom\" : \"2021-11-05\"\n" +
138+
" },\n" +
139+
" \"beløp\" : null,\n" +
140+
" \"dagsats\" : {\n" +
141+
" \"verdi\" : 1846.00\n" +
142+
" },\n" +
143+
" \"utbetalingsgrad\" : {\n" +
144+
" \"verdi\" : 100.00\n" +
145+
" },\n" +
146+
" \"andeler\" : [ {\n" +
147+
" \"arbeidsgiver\" : {\n" +
148+
" \"identType\" : \"ORGNUMMER\",\n" +
149+
" \"ident\" : \"972674818\"\n" +
150+
" },\n" +
151+
" \"arbeidsforholdId\" : \"1\",\n" +
152+
" \"dagsats\" : {\n" +
153+
" \"verdi\" : 1846.00\n" +
154+
" },\n" +
155+
" \"utbetalingsgrad\" : {\n" +
156+
" \"verdi\" : 100.00\n" +
157+
" },\n" +
158+
" \"refusjonsgrad\" : {\n" +
159+
" \"verdi\" : 100.00\n" +
160+
" },\n" +
161+
" \"inntektskategori\" : {\n" +
162+
" \"kode\" : \"ARBEIDSTAKER\",\n" +
163+
" \"kodeverk\" : \"INNTEKTSKATEGORI\"\n" +
164+
" }\n" +
165+
" } ]\n" +
166+
" }, {\n" +
167+
" \"periode\" : {\n" +
168+
" \"fom\" : \"2021-11-08\",\n" +
169+
" \"tom\" : \"2021-11-12\"\n" +
170+
" },\n" +
171+
" \"beløp\" : null,\n" +
172+
" \"dagsats\" : {\n" +
173+
" \"verdi\" : 1846.00\n" +
174+
" },\n" +
175+
" \"utbetalingsgrad\" : {\n" +
176+
" \"verdi\" : 100.00\n" +
177+
" },\n" +
178+
" \"andeler\" : [ {\n" +
179+
" \"arbeidsgiver\" : {\n" +
180+
" \"identType\" : \"ORGNUMMER\",\n" +
181+
" \"ident\" : \"972674818\"\n" +
182+
" },\n" +
183+
" \"arbeidsforholdId\" : \"1\",\n" +
184+
" \"dagsats\" : {\n" +
185+
" \"verdi\" : 1846.00\n" +
186+
" },\n" +
187+
" \"utbetalingsgrad\" : {\n" +
188+
" \"verdi\" : 100.00\n" +
189+
" },\n" +
190+
" \"refusjonsgrad\" : {\n" +
191+
" \"verdi\" : 100.00\n" +
192+
" },\n" +
193+
" \"inntektskategori\" : {\n" +
194+
" \"kode\" : \"ARBEIDSTAKER\",\n" +
195+
" \"kodeverk\" : \"INNTEKTSKATEGORI\"\n" +
196+
" }\n" +
197+
" } ]\n" +
198+
" }, {\n" +
199+
" \"periode\" : {\n" +
200+
" \"fom\" : \"2021-11-15\",\n" +
201+
" \"tom\" : \"2021-11-19\"\n" +
202+
" },\n" +
203+
" \"beløp\" : null,\n" +
204+
" \"dagsats\" : {\n" +
205+
" \"verdi\" : 1846.00\n" +
206+
" },\n" +
207+
" \"utbetalingsgrad\" : {\n" +
208+
" \"verdi\" : 100.00\n" +
209+
" },\n" +
210+
" \"andeler\" : [ {\n" +
211+
" \"arbeidsgiver\" : {\n" +
212+
" \"identType\" : \"ORGNUMMER\",\n" +
213+
" \"ident\" : \"972674818\"\n" +
214+
" },\n" +
215+
" \"arbeidsforholdId\" : \"1\",\n" +
216+
" \"dagsats\" : {\n" +
217+
" \"verdi\" : 1846.00\n" +
218+
" },\n" +
219+
" \"utbetalingsgrad\" : {\n" +
220+
" \"verdi\" : 100.00\n" +
221+
" },\n" +
222+
" \"refusjonsgrad\" : {\n" +
223+
" \"verdi\" : 100.00\n" +
224+
" },\n" +
225+
" \"inntektskategori\" : {\n" +
226+
" \"kode\" : \"ARBEIDSTAKER\",\n" +
227+
" \"kodeverk\" : \"INNTEKTSKATEGORI\"\n" +
228+
" }\n" +
229+
" } ]\n" +
230+
" } ]\n" +
231+
"}";
232+
233+
ProsessTaskData data = ProsessTaskDataBuilder.forProsessTask(LagreVedtakTask.class)
234+
.medPayload(payload)
235+
.medProperty(LagreVedtakTask.KEY, UUID.randomUUID().toString())
236+
.build();
237+
238+
task.doTask(data);
239+
240+
extension.getEntityManager().flush();
241+
242+
var vedtakYtelser = repository.hentYtelserForIPeriode(new AktørId("1293528970663"),
243+
LocalDate.of(2021, 11, 1),
244+
LocalDate.of(2021, 11, 19));
245+
246+
assertThat(vedtakYtelser.size()).isEqualTo(1);
247+
assertThat(vedtakYtelser.get(0).getYtelseAnvist().size()).isEqualTo(3);
248+
assertThat(vedtakYtelser.get(0).getYtelseAnvist().iterator().next().getAndeler().size()).isEqualTo(1);
249+
250+
251+
}
59252
}

domenetjenester/vedtak/src/test/java/no/nav/foreldrepenger/abakus/vedtak/extract/v1/ExtractFromYtelseV1Test.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@
1010
import org.junit.jupiter.api.Test;
1111
import org.junit.jupiter.api.extension.RegisterExtension;
1212

13+
import no.nav.abakus.iaygrunnlag.Organisasjon;
1314
import no.nav.abakus.iaygrunnlag.kodeverk.Fagsystem;
15+
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
1416
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseStatus;
1517
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseType;
1618
import no.nav.abakus.vedtak.ytelse.Aktør;
1719
import no.nav.abakus.vedtak.ytelse.Periode;
1820
import no.nav.abakus.vedtak.ytelse.v1.YtelseV1;
1921
import no.nav.abakus.vedtak.ytelse.v1.anvisning.Anvisning;
22+
import no.nav.abakus.vedtak.ytelse.v1.anvisning.AnvistAndel;
2023
import no.nav.foreldrepenger.abakus.dbstoette.JpaExtension;
2124
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseBuilder;
2225
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
@@ -25,7 +28,7 @@ public class ExtractFromYtelseV1Test {
2528

2629
@RegisterExtension
2730
public static JpaExtension extension = new JpaExtension();
28-
31+
2932
@Test
3033
public void skal_lagre_informasjon() {
3134
VedtakYtelseRepository repository = new VedtakYtelseRepository(extension.getEntityManager());
@@ -50,6 +53,7 @@ public void skal_lagre_informasjon() {
5053

5154
Anvisning anvisning = new Anvisning();
5255
anvisning.setPeriode(periode);
56+
anvisning.setAndeler(List.of(new AnvistAndel(new Organisasjon("999999999"), 1236, 100, 100, Inntektskategori.ARBEIDSTAKER, "ehuif2897")));
5357
ytelseV1.setAnvist(List.of(anvisning));
5458

5559
VedtakYtelseBuilder builder = extractor.extractFrom(ytelseV1);
@@ -62,5 +66,7 @@ public void skal_lagre_informasjon() {
6266
assertThat(entitet.getAktør()).isNotNull();
6367
assertThat(entitet.getAktør().getId()).isEqualTo(aktørId);
6468
assertThat(entitet.getYtelseAnvist()).hasSize(1);
69+
assertThat(entitet.getYtelseAnvist().iterator().next().getAndeler()).hasSize(1);
70+
6571
}
6672
}

0 commit comments

Comments
 (0)