Skip to content

Commit b3c1414

Browse files
authored
Legger til anvist andel i kontrakt (#1804)
1 parent ea96c38 commit b3c1414

File tree

3 files changed

+149
-9
lines changed

3 files changed

+149
-9
lines changed

domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/iay/tjeneste/dto/iay/MapAktørYtelse.java

+28-2
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,21 @@
66
import java.util.List;
77
import java.util.stream.Collectors;
88

9+
import no.nav.abakus.iaygrunnlag.Aktør;
910
import no.nav.abakus.iaygrunnlag.AktørIdPersonident;
1011
import no.nav.abakus.iaygrunnlag.Organisasjon;
1112
import no.nav.abakus.iaygrunnlag.Periode;
1213
import no.nav.abakus.iaygrunnlag.ytelse.v1.AnvisningDto;
14+
import no.nav.abakus.iaygrunnlag.ytelse.v1.AnvistAndelDto;
1315
import no.nav.abakus.iaygrunnlag.ytelse.v1.FordelingDto;
1416
import no.nav.abakus.iaygrunnlag.ytelse.v1.YtelseDto;
1517
import no.nav.abakus.iaygrunnlag.ytelse.v1.YtelseGrunnlagDto;
1618
import no.nav.abakus.iaygrunnlag.ytelse.v1.YtelserDto;
1719
import no.nav.foreldrepenger.abakus.domene.iay.AktørYtelse;
20+
import no.nav.foreldrepenger.abakus.domene.iay.Arbeidsgiver;
1821
import no.nav.foreldrepenger.abakus.domene.iay.Ytelse;
1922
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvist;
23+
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvistAndel;
2024
import no.nav.foreldrepenger.abakus.domene.iay.YtelseGrunnlag;
2125
import no.nav.foreldrepenger.abakus.domene.iay.YtelseStørrelse;
2226
import no.nav.foreldrepenger.abakus.typer.Beløp;
@@ -31,8 +35,8 @@ public class MapAktørYtelse {
3135
.thenComparing(dto -> dto.getPeriode().getTom(), Comparator.nullsLast(Comparator.naturalOrder()));
3236

3337
private static final Comparator<FordelingDto> COMP_FORDELING = Comparator
34-
.comparing((FordelingDto dto) -> dto.getArbeidsgiver() == null ? null : dto.getArbeidsgiver().getIdent(), Comparator.nullsLast(Comparator.naturalOrder()))
35-
.thenComparing(dto -> dto.getHyppighet() == null ? null : dto.getHyppighet().getKode(), Comparator.nullsLast(Comparator.naturalOrder()));
38+
.comparing((FordelingDto dto) -> dto.getArbeidsgiver() == null ? null : dto.getArbeidsgiver().getIdent(), Comparator.nullsLast(Comparator.naturalOrder()))
39+
.thenComparing(dto -> dto.getHyppighet() == null ? null : dto.getHyppighet().getKode(), Comparator.nullsLast(Comparator.naturalOrder()));
3640

3741

3842
static class MapTilDto {
@@ -105,12 +109,34 @@ private AnvisningDto map(YtelseAnvist ya) {
105109
ya.getBeløp().ifPresent(v -> dto.setBeløp(v.getVerdi()));
106110
ya.getDagsats().ifPresent(v -> dto.setDagsats(v.getVerdi()));
107111
ya.getUtbetalingsgradProsent().ifPresent(v -> dto.setUtbetalingsgrad(v.getVerdi()));
112+
if (ya.getYtelseAnvistAndeler() != null) {
113+
dto.setAndeler(ya.getYtelseAnvistAndeler().stream()
114+
.map(this::mapAndel)
115+
.toList());
116+
}
108117
return dto;
109118
}
110119

120+
111121
List<YtelserDto> map(Collection<AktørYtelse> aktørYtelser) {
112122
return aktørYtelser.stream().map(this::mapTilYtelser).collect(Collectors.toList());
113123
}
114124

125+
private AnvistAndelDto mapAndel(YtelseAnvistAndel aa) {
126+
return new AnvistAndelDto(
127+
aa.getArbeidsgiver().map(this::mapAktør).orElse(null),
128+
aa.getArbeidsforholdRef().getReferanse(),
129+
aa.getDagsats().getVerdi(),
130+
aa.getUtbetalingsgradProsent().getVerdi(),
131+
aa.getRefusjonsgradProsent().getVerdi(),
132+
aa.getInntektskategori());
133+
}
134+
135+
private Aktør mapAktør(Arbeidsgiver arbeidsgiverEntitet) {
136+
return arbeidsgiverEntitet.erAktørId()
137+
? new AktørIdPersonident(arbeidsgiverEntitet.getAktørId().getId())
138+
: new Organisasjon(arbeidsgiverEntitet.getOrgnr().getId());
139+
}
140+
115141
}
116142
}

kontrakt/src/main/java/no/nav/abakus/iaygrunnlag/ytelse/v1/AnvisningDto.java

+27-7
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22

33
import java.math.BigDecimal;
44
import java.math.RoundingMode;
5+
import java.util.ArrayList;
6+
import java.util.List;
57

68
import javax.validation.Valid;
79
import javax.validation.constraints.DecimalMax;
810
import javax.validation.constraints.DecimalMin;
911
import javax.validation.constraints.NotNull;
12+
import javax.validation.constraints.Size;
1013

1114
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
1215
import com.fasterxml.jackson.annotation.JsonInclude;
1316
import com.fasterxml.jackson.annotation.JsonInclude.Include;
17+
import com.fasterxml.jackson.annotation.JsonProperty;
1418

1519
import no.nav.abakus.iaygrunnlag.Periode;
1620

17-
import com.fasterxml.jackson.annotation.JsonProperty;
18-
1921
@JsonIgnoreProperties(ignoreUnknown = true)
2022
@JsonInclude(value = Include.NON_ABSENT, content = Include.ALWAYS)
2123
public class AnvisningDto {
@@ -25,13 +27,17 @@ public class AnvisningDto {
2527
@Valid
2628
private Periode periode;
2729

28-
/** Beløp i hele kroner (currency major unit). Tillater kun positive verdier. Max verdi håndteres av mottager. */
30+
/**
31+
* Beløp i hele kroner (currency major unit). Tillater kun positive verdier. Max verdi håndteres av mottager.
32+
*/
2933
@JsonProperty(value = "beløp")
3034
@Valid
3135
@DecimalMin(value = "0.00", message = "beløp [${validatedValue}] må være >= {value}")
3236
private BigDecimal beløp;
3337

34-
/** Beløp i hele kroner (currency major unit). Tillater kun positive verdier. Max verdi håndteres av mottager. */
38+
/**
39+
* Beløp i hele kroner (currency major unit). Tillater kun positive verdier. Max verdi håndteres av mottager.
40+
*/
3541
@JsonProperty(value = "dagsats")
3642
@Valid
3743
@DecimalMin(value = "0.00", message = "beløp [${validatedValue}] må være >= {value}")
@@ -46,6 +52,12 @@ public class AnvisningDto {
4652
@DecimalMax(value = "200.00", message = "prosentsats [${validatedValue}] må være <= {value}")
4753
private BigDecimal utbetalingsgrad;
4854

55+
@JsonProperty(value = "andeler")
56+
@Valid
57+
@Size
58+
private List<AnvistAndelDto> andeler = new ArrayList<>();
59+
60+
4961
protected AnvisningDto() {
5062
// default ctor
5163
}
@@ -62,6 +74,10 @@ public Periode getPeriode() {
6274
return beløp;
6375
}
6476

77+
public List<AnvistAndelDto> getAndeler() {
78+
return andeler;
79+
}
80+
6581
public void setBeløp(BigDecimal beløp) {
6682
this.beløp = beløp == null ? null : beløp.setScale(2, RoundingMode.HALF_UP);
6783
}
@@ -81,7 +97,11 @@ public BigDecimal getDagsats() {
8197
}
8298

8399
public void setDagsats(BigDecimal dagsats) {
84-
this.dagsats = dagsats == null ? null : dagsats.setScale(2, RoundingMode.HALF_UP);
100+
this.dagsats = dagsats == null ? null : dagsats.setScale(2, RoundingMode.HALF_UP);
101+
}
102+
103+
public void setAndeler(List<AnvistAndelDto> andeler) {
104+
this.andeler = andeler;
85105
}
86106

87107
public AnvisningDto medDagsats(BigDecimal dagsats) {
@@ -100,12 +120,12 @@ public BigDecimal getUtbetalingsgrad() {
100120
public void setUtbetalingsgrad(BigDecimal utbetalingsgrad) {
101121
this.utbetalingsgrad = utbetalingsgrad == null ? null : utbetalingsgrad.setScale(2, RoundingMode.HALF_UP);
102122
}
103-
123+
104124
public AnvisningDto medUtbetalingsgrad(BigDecimal utbetalingsgrad) {
105125
setUtbetalingsgrad(utbetalingsgrad);
106126
return this;
107127
}
108-
128+
109129
public AnvisningDto medUtbetalingsgrad(int utbetalingsgrad) {
110130
setUtbetalingsgrad(BigDecimal.valueOf(utbetalingsgrad));
111131
return this;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package no.nav.abakus.iaygrunnlag.ytelse.v1;
2+
3+
import java.math.BigDecimal;
4+
5+
import javax.validation.Valid;
6+
import javax.validation.constraints.DecimalMax;
7+
import javax.validation.constraints.DecimalMin;
8+
9+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
10+
import com.fasterxml.jackson.annotation.JsonInclude;
11+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
12+
import com.fasterxml.jackson.annotation.JsonProperty;
13+
14+
import no.nav.abakus.iaygrunnlag.Aktør;
15+
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
16+
17+
/**
18+
* Angir størrelse for ytelse på arbeidsforholdnivå.
19+
*/
20+
@JsonIgnoreProperties(ignoreUnknown = true)
21+
@JsonInclude(value = Include.NON_ABSENT, content = Include.ALWAYS)
22+
public class AnvistAndelDto {
23+
24+
/**
25+
* Kan være null.
26+
*/
27+
@JsonProperty(value = "arbeidsgiver")
28+
@Valid
29+
private Aktør arbeidsgiver;
30+
31+
@JsonProperty(value = "arbeidsforholdId")
32+
@Valid
33+
private String arbeidsforholdId;
34+
35+
@JsonProperty(value = "dagsats", required = true)
36+
@DecimalMin(value = "0.00", message = "beløp [${validatedValue}] må være >= {value}")
37+
private BigDecimal dagsats;
38+
39+
@JsonProperty("utbetalingsgrad")
40+
@DecimalMin(value = "0.00", message = "prosentsats [${validatedValue}] må være >= {value}")
41+
@DecimalMax(value = "100.00", message = "prosentsats [${validatedValue}] må være <= {value}")
42+
private BigDecimal utbetalingsgrad;
43+
44+
// Andel av dagsats som utbetales til arbeidsgiver
45+
@JsonProperty("refusjonsgrad")
46+
@DecimalMin(value = "0.00", message = "prosentsats [${validatedValue}] må være >= {value}")
47+
@DecimalMax(value = "100.00", message = "prosentsats [${validatedValue}] må være <= {value}")
48+
private BigDecimal refusjonsgrad;
49+
50+
@JsonProperty(value = "inntektskategori")
51+
@Valid
52+
private Inntektskategori inntektskategori;
53+
54+
protected AnvistAndelDto() {
55+
}
56+
57+
58+
public AnvistAndelDto(Aktør arbeidsgiver, String arbeidsforholdId,
59+
BigDecimal dagsats,
60+
BigDecimal utbetalingsgrad,
61+
BigDecimal refusjonsgrad,
62+
Inntektskategori inntektskategori) {
63+
this.arbeidsgiver = arbeidsgiver;
64+
this.arbeidsforholdId = arbeidsforholdId;
65+
this.dagsats = dagsats;
66+
this.utbetalingsgrad = utbetalingsgrad;
67+
this.refusjonsgrad = refusjonsgrad;
68+
this.inntektskategori = inntektskategori;
69+
}
70+
71+
public Aktør getArbeidsgiver() {
72+
return arbeidsgiver;
73+
}
74+
75+
public String getArbeidsforholdId() {
76+
return arbeidsforholdId;
77+
}
78+
79+
public BigDecimal getDagsats() {
80+
return dagsats;
81+
}
82+
83+
public BigDecimal getUtbetalingsgrad() {
84+
return utbetalingsgrad;
85+
}
86+
87+
public BigDecimal getRefusjonsgrad() {
88+
return refusjonsgrad;
89+
}
90+
91+
public Inntektskategori getInntektskategori() {
92+
return inntektskategori;
93+
}
94+
}

0 commit comments

Comments
 (0)