Skip to content

Commit c32d071

Browse files
Feature psb arbeidstid (#85)
Endrer på arbeid til arbeistid, for psb
1 parent 60e13d6 commit c32d071

File tree

15 files changed

+406
-478
lines changed

15 files changed

+406
-478
lines changed

soknad/src/main/java/no/nav/k9/søknad/felles/aktivitet/ArbeidAktivitet.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package no.nav.k9.søknad.felles.aktivitet;
22

3-
import com.fasterxml.jackson.annotation.JsonCreator;
4-
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
5-
import com.fasterxml.jackson.annotation.JsonInclude;
6-
import com.fasterxml.jackson.annotation.JsonProperty;
3+
import com.fasterxml.jackson.annotation.*;
74

85
import javax.validation.Valid;
96
import java.util.ArrayList;
@@ -13,6 +10,7 @@
1310
import static java.util.Collections.unmodifiableList;
1411

1512
@JsonIgnoreProperties(ignoreUnknown = true)
13+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1614
public class ArbeidAktivitet {
1715

1816
@JsonInclude(value = JsonInclude.Include.NON_EMPTY)

soknad/src/main/java/no/nav/k9/søknad/felles/aktivitet/Arbeidstaker.java

Lines changed: 23 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.fasterxml.jackson.annotation.JsonInclude.Include;
55
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
66
import no.nav.k9.søknad.felles.type.Periode;
7+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
78

89
import javax.validation.Valid;
910
import javax.validation.constraints.DecimalMax;
@@ -25,124 +26,46 @@ public class Arbeidstaker {
2526

2627
@JsonProperty(value = "norskIdentitetsnummer")
2728
@Valid
28-
public final NorskIdentitetsnummer norskIdentitetsnummer;
29+
private NorskIdentitetsnummer norskIdentitetsnummer;
2930

3031
@JsonProperty(value = "organisasjonsnummer")
3132
@Valid
32-
public final Organisasjonsnummer organisasjonsnummer;
33+
private Organisasjonsnummer organisasjonsnummer;
3334

34-
@JsonInclude(value = Include.NON_EMPTY)
35-
@JsonProperty(value = "perioder")
35+
@JsonProperty(value = "arbeidstidInfo")
3636
@Valid
37-
public final Map<Periode, ArbeidstakerPeriodeInfo> perioder;
37+
private ArbeidstidInfo arbeidstidInfo;
3838

3939
@JsonCreator
40-
private Arbeidstaker(@JsonProperty(value = "norskIdentitetsnummer") NorskIdentitetsnummer norskIdentitetsnummer,
40+
public Arbeidstaker(@JsonProperty(value = "norskIdentitetsnummer") NorskIdentitetsnummer norskIdentitetsnummer,
4141
@JsonProperty(value = "organisasjonsnummer") Organisasjonsnummer organisasjonsnummer,
42-
@JsonProperty(value = "perioder") Map<Periode, ArbeidstakerPeriodeInfo> perioder) {
42+
@JsonProperty(value = "arbeidstidInfo") ArbeidstidInfo arbeidstidInfo) {
4343
this.norskIdentitetsnummer = norskIdentitetsnummer;
4444
this.organisasjonsnummer = organisasjonsnummer;
45-
this.perioder = (perioder == null) ? emptyMap() : unmodifiableMap(perioder);
45+
this.arbeidstidInfo = arbeidstidInfo;
4646
}
4747

48-
public static Builder builder() {
49-
return new Builder();
48+
public NorskIdentitetsnummer getNorskIdentitetsnummer() {
49+
return norskIdentitetsnummer;
5050
}
5151

52-
public static final class Builder {
53-
private NorskIdentitetsnummer norskIdentitetsnummer;
54-
private Organisasjonsnummer organisasjonsnummer;
55-
private Map<Periode, ArbeidstakerPeriodeInfo> perioder;
56-
57-
private Builder() {
58-
perioder = new HashMap<>();
59-
}
60-
61-
public Builder organisasjonsnummer(Organisasjonsnummer organisasjonsnummer) {
62-
this.organisasjonsnummer = organisasjonsnummer;
63-
return this;
64-
}
65-
66-
public Builder perioder(Map<Periode, ArbeidstakerPeriodeInfo> perioder) {
67-
leggTilPerioder(this.perioder, perioder);
68-
return this;
69-
}
70-
71-
public Builder periode(Periode periode, ArbeidstakerPeriodeInfo arbeidstakerPeriodeInfo) {
72-
leggTilPeriode(this.perioder, periode, arbeidstakerPeriodeInfo);
73-
return this;
74-
}
75-
76-
public Builder norskIdentitetsnummer(NorskIdentitetsnummer norskIdentitetsnummer) {
77-
this.norskIdentitetsnummer = norskIdentitetsnummer;
78-
return this;
79-
}
80-
81-
public Arbeidstaker build() {
82-
return new Arbeidstaker(
83-
norskIdentitetsnummer,
84-
organisasjonsnummer,
85-
perioder);
86-
}
52+
public void setNorskIdentitetsnummer(NorskIdentitetsnummer norskIdentitetsnummer) {
53+
this.norskIdentitetsnummer = norskIdentitetsnummer;
8754
}
8855

89-
@JsonIgnoreProperties(ignoreUnknown = true)
90-
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
91-
public static final class ArbeidstakerPeriodeInfo {
92-
/**
93-
* En prosent mellom 0 og 100 som sier hvor mye søkeren kan jobbe (for en arbeidsgiver i en periode)
94-
* i forhold til hva den normalt ville gjort (om den ikke hadde hatt behov for pleiepenger).
95-
* - Ved avkorting mot arbeid er det tap av inntekt som skal dekkes. Hvilken stillingsprosent
96-
* eller hvor mange timer man jobber er ikke relevant, men er faktorer som kan brukes til å utlede "skalJobbeProsent".
97-
* - Om man har en stillingsprosent på 40%, men i perioden kan dekke en 20% stilling skal "skalJobbeProsent" være 50%.
98-
* - Om man normalt jobber 30 timer i uken, men nå får jobbet 10 timer skal "skalJobbeProsent" være 33.33%.
99-
* - Gitt at pleiepengene blir avkortet mot arbeid (ikke gradert mot tilsyn) vil "skalJobbeProsent" brukes ved
100-
* håndtering av inntektsmelding fra den aktuelle arbeidsgiveren for å regne ut inntektstapet i perioden.
101-
*/
102-
@JsonProperty(value = "skalJobbeProsent")
103-
@DecimalMin(value = "0.00", message = "skalJobbeProsent [${validatedValue}] må være >= {value}")
104-
@DecimalMax(value = "100.00", message = "skalJobbeProsent [${validatedValue}] må være <= {value}")
105-
public final BigDecimal skalJobbeProsent;
106-
107-
@JsonProperty(value = "jobberNormaltPerUke")
108-
@Valid
109-
public final Duration jobberNormaltPerUke;
110-
111-
@JsonCreator
112-
ArbeidstakerPeriodeInfo(
113-
@JsonProperty("skalJobbeProsent") BigDecimal skalJobbeProsent,
114-
@JsonProperty("jobberNormaltPerUke") Duration jobberNormaltPerUke) {
115-
this.skalJobbeProsent = skalJobbeProsent == null ? null : skalJobbeProsent.setScale(2, RoundingMode.HALF_UP);
116-
this.jobberNormaltPerUke = jobberNormaltPerUke;
117-
}
118-
119-
public static Builder builder() {
120-
return new Builder();
121-
}
122-
123-
public static final class Builder {
124-
private BigDecimal skalJobbeProsent;
125-
private Duration jobberNormaltPerUke;
126-
127-
private Builder() {
128-
}
129-
130-
public Builder skalJobbeProsent(BigDecimal skalJobbeProsent) {
131-
this.skalJobbeProsent = skalJobbeProsent;
132-
return this;
133-
}
56+
public Organisasjonsnummer getOrganisasjonsnummer() {
57+
return organisasjonsnummer;
58+
}
13459

135-
public Builder jobberNormaltPerUke(Duration jobberNormaltPerUke) {
136-
this.jobberNormaltPerUke = jobberNormaltPerUke;
137-
return this;
138-
}
60+
public void setOrganisasjonsnummer(Organisasjonsnummer organisasjonsnummer) {
61+
this.organisasjonsnummer = organisasjonsnummer;
62+
}
13963

140-
public ArbeidstakerPeriodeInfo build() {
141-
return new ArbeidstakerPeriodeInfo(
142-
skalJobbeProsent,
143-
jobberNormaltPerUke);
144-
}
145-
}
64+
public ArbeidstidInfo getArbeidstidInfo() {
65+
return arbeidstidInfo;
66+
}
14667

68+
public void setArbeidstidInfo(ArbeidstidInfo arbeidstidInfo) {
69+
this.arbeidstidInfo = arbeidstidInfo;
14770
}
14871
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/PleiepengerSyktBarn.java

Lines changed: 18 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import no.nav.k9.søknad.felles.type.Person;
2525
import no.nav.k9.søknad.ytelse.Ytelse;
2626
import no.nav.k9.søknad.ytelse.YtelseValidator;
27-
import no.nav.k9.søknad.ytelse.psb.v1.arbeid.Arbeid;
27+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
2828
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.Tilsynsordning;
2929

3030
@JsonIgnoreProperties(ignoreUnknown = true)
@@ -47,20 +47,8 @@ public class PleiepengerSyktBarn implements Ytelse {
4747
private ArbeidAktivitet arbeidAktivitet;
4848

4949
@Valid
50-
@JsonProperty(value = "flereOmsorgspersoner")
51-
private Boolean flereOmsorgspersoner;
52-
53-
@Valid
54-
@JsonProperty(value = "relasjonTilBarnet")
55-
private String relasjonTilBarnet;
56-
57-
@Valid
58-
@JsonProperty(value = "samtykketOmsorgForBarnet")
59-
private Boolean samtykketOmsorgForBarnet;
60-
61-
@Valid
62-
@JsonProperty(value = "beskrivelseAvOmsorgsrollen")
63-
private String beskrivelseAvOmsorgsrollen;
50+
@JsonProperty(value = "søknadInfo", required = true)
51+
private SøknadInfo søknadInfo;
6452

6553
@Valid
6654
@JsonProperty(value = "bosteder")
@@ -87,8 +75,8 @@ public class PleiepengerSyktBarn implements Ytelse {
8775
private LovbestemtFerie lovbestemtFerie;
8876

8977
@Valid
90-
@JsonProperty(value = "arbeid")
91-
private Arbeid arbeid;
78+
@JsonProperty(value = "arbeidstid")
79+
private Arbeidstid arbeidstid;
9280

9381
@Valid
9482
@NotNull
@@ -100,31 +88,25 @@ public PleiepengerSyktBarn() {
10088

10189
@JsonCreator
10290
public PleiepengerSyktBarn(@JsonProperty(value = "søknadsperiode", required = true) @NotNull @Valid Periode søknadsperiode,
91+
@JsonProperty(value = "søknadInfo", required = true) @Valid SøknadInfo søknadInfo,
10392
@JsonProperty(value = "barn", required = true) @NotNull @Valid Barn barn,
10493
@JsonProperty(value = "arbeidAktivitet") @Valid ArbeidAktivitet aktivitet,
10594
@JsonProperty(value = "beredskap") @Valid Beredskap beredskap,
10695
@JsonProperty(value = "nattevåk") @Valid Nattevåk nattevåk,
10796
@JsonProperty(value = "tilsynsordning") @Valid Tilsynsordning tilsynsordning,
108-
@JsonProperty(value = "arbeid") @Valid Arbeid arbeid,
97+
@JsonProperty(value = "arbeidstid") @Valid Arbeidstid arbeidstid,
10998
@JsonProperty(value = "uttak", required = true) @Valid @NotNull Uttak uttak,
11099
@JsonProperty(value = "lovbestemtFerie") @Valid LovbestemtFerie lovbestemtFerie,
111100
@JsonProperty(value = "bosteder") @Valid @NotNull Bosteder bosteder,
112-
@JsonProperty(value = "utenlandsopphold") @Valid @NotNull Utenlandsopphold utenlandsopphold,
113-
@JsonProperty(value = "flereOmsorgspersoner") @Valid Boolean flereOmsorgspersoner,
114-
@JsonProperty(value = "relasjonTilBarnet") @Valid String relasjonTilBarnet,
115-
@JsonProperty(value = "samtykketOmsorgForBarnet") @Valid Boolean samtykketOmsorgForBarnet,
116-
@JsonProperty(value = "beskrivelseAvOmsorgsrollen") @Valid String beskrivelseAvOmsorgsrollen) {
101+
@JsonProperty(value = "utenlandsopphold") @Valid @NotNull Utenlandsopphold utenlandsopphold) {
117102
this.søknadsperiode = Objects.requireNonNull(søknadsperiode, "søknadsperiode");
103+
this.søknadInfo = søknadInfo;
118104
this.barn = Objects.requireNonNull(barn, "barn");
119105
this.arbeidAktivitet = aktivitet;
120-
this.flereOmsorgspersoner = flereOmsorgspersoner;
121-
this.relasjonTilBarnet = relasjonTilBarnet;
122-
this.samtykketOmsorgForBarnet = samtykketOmsorgForBarnet;
123-
this.beskrivelseAvOmsorgsrollen = beskrivelseAvOmsorgsrollen;
124106
this.beredskap = beredskap;
125107
this.nattevåk = nattevåk;
126108
this.tilsynsordning = tilsynsordning;
127-
this.arbeid = arbeid;
109+
this.arbeidstid = arbeidstid;
128110
this.uttak = uttak;
129111
this.lovbestemtFerie = lovbestemtFerie;
130112
this.bosteder = bosteder;
@@ -156,36 +138,12 @@ public void setArbeidAktivitet(ArbeidAktivitet arbeidAktivitet) {
156138
this.arbeidAktivitet = arbeidAktivitet;
157139
}
158140

159-
public Boolean getFlereOmsorgspersoner() {
160-
return flereOmsorgspersoner;
161-
}
162-
163-
public void setFlereOmsorgspersoner(Boolean flereOmsorgspersoner) {
164-
this.flereOmsorgspersoner = flereOmsorgspersoner;
165-
}
166-
167-
public String getRelasjonTilBarnet() {
168-
return relasjonTilBarnet;
169-
}
170-
171-
public void setRelasjonTilBarnet(String relasjonTilBarnet) {
172-
this.relasjonTilBarnet = relasjonTilBarnet;
173-
}
174-
175-
public Boolean getSamtykketOmsorgForBarnet() {
176-
return samtykketOmsorgForBarnet;
177-
}
178-
179-
public void setSamtykketOmsorgForBarnet(Boolean samtykketOmsorgForBarnet) {
180-
this.samtykketOmsorgForBarnet = samtykketOmsorgForBarnet;
181-
}
182-
183-
public String getBeskrivelseAvOmsorgsrollen() {
184-
return beskrivelseAvOmsorgsrollen;
141+
public SøknadInfo getSøknadInfo() {
142+
return søknadInfo;
185143
}
186144

187-
public void setBeskrivelseAvOmsorgsrollen(String beskrivelseAvOmsorgsrollen) {
188-
this.beskrivelseAvOmsorgsrollen = beskrivelseAvOmsorgsrollen;
145+
public void setSøknadInfo(SøknadInfo søknadInfo) {
146+
this.søknadInfo = søknadInfo;
189147
}
190148

191149
public Bosteder getBosteder() {
@@ -236,12 +194,12 @@ public void setLovbestemtFerie(LovbestemtFerie lovbestemtFerie) {
236194
this.lovbestemtFerie = lovbestemtFerie;
237195
}
238196

239-
public Arbeid getArbeid() {
240-
return arbeid;
197+
public Arbeidstid getArbeidstid() {
198+
return arbeidstid;
241199
}
242200

243-
public void setArbeid(Arbeid arbeid) {
244-
this.arbeid = arbeid;
201+
public void setArbeidstid(Arbeidstid arbeidstid) {
202+
this.arbeidstid = arbeidstid;
245203
}
246204

247205
public Uttak getUttak() {

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/PleiepengerSyktBarnValidator.java

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import no.nav.k9.søknad.felles.Feil;
44
import no.nav.k9.søknad.felles.LovbestemtFerie;
55
import no.nav.k9.søknad.felles.aktivitet.ArbeidAktivitet;
6+
import no.nav.k9.søknad.felles.aktivitet.Arbeidstaker;
67
import no.nav.k9.søknad.felles.aktivitet.SelvstendigNæringsdrivende;
78
import no.nav.k9.søknad.felles.type.Periode;
89
import no.nav.k9.søknad.ytelse.Ytelse;
910
import no.nav.k9.søknad.ytelse.YtelseValidator;
10-
import no.nav.k9.søknad.ytelse.psb.v1.arbeid.Arbeid;
11-
import no.nav.k9.søknad.ytelse.psb.v1.arbeid.ArbeidPeriodeInfo;
12-
import no.nav.k9.søknad.ytelse.psb.v1.arbeid.Arbeidstaker;
11+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
12+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
13+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidPeriodeInfo;
1314
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.Tilsynsordning;
1415
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynsordningOpphold;
1516
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynsordningSvar;
@@ -46,7 +47,7 @@ public List<Feil> valider(Ytelse ytelse) {
4647
validerNattevåk(psb.getNattevåk(), søknadsperiode, feil);
4748
validerTilsynsordning(psb.getTilsynsordning(), søknadsperiode, feil);
4849
validerLovbestemtFerie(psb.getLovbestemtFerie(), søknadsperiode, feil);
49-
validerArbeid(psb.getArbeid(), søknadsperiode, feil);
50+
validerArbeidstid(psb.getArbeidstid(), søknadsperiode, feil);
5051
validerArbeidAktivitet(psb.getArbeidAktivitet(), feil);
5152

5253
return feil;
@@ -55,7 +56,7 @@ public List<Feil> valider(Ytelse ytelse) {
5556
private Feil toFeil(ConstraintViolation<PleiepengerSyktBarn> constraintViolation) {
5657
return new Feil(
5758
constraintViolation.getPropertyPath().toString(),
58-
constraintViolation.getMessage(),
59+
constraintViolation.getMessage() + " ConstraintViolation ",
5960
constraintViolation.getMessageTemplate());
6061
}
6162

@@ -132,35 +133,38 @@ private void validerLovbestemtFerie(LovbestemtFerie lovbestemtFerie, Periode sø
132133
}));
133134
}
134135

135-
private void validerArbeid(Arbeid arbeid, Periode søknadsperiode, List<Feil> feil) {
136-
if (arbeid == null) {
136+
private void validerArbeidstid(Arbeidstid arbeidstid, Periode søknadsperiode, List<Feil> feil) {
137+
if (arbeidstid == null) {
137138
return;
138139
}
139-
validerArbeidstaker(arbeid.getArbeidstaker(), søknadsperiode, feil);
140+
validerarbeidstakerList(arbeidstid.getArbeidstakerList(), søknadsperiode, feil);
141+
if (arbeidstid.getFrilanserArbeidstidInfo() != null) {
142+
validerArbeidstidInfo(arbeidstid.getFrilanserArbeidstidInfo(), "arbeidstid.frilanser.arbeidstidPeriode", søknadsperiode, feil);
143+
}
140144
}
141145

142-
private void validerArbeidstaker(List<Arbeidstaker> arbeidstakerList, Periode søknadsperiode, List<Feil> feil) {
146+
private void validerarbeidstakerList(List<Arbeidstaker> arbeidstakerList, Periode søknadsperiode, List<Feil> feil) {
143147
if (arbeidstakerList == null) {
144148
return;
145149
}
146150
int i = 0;
147-
for (Arbeidstaker arbeidstaker : arbeidstakerList) {
148-
validerArbeidstakerInfo(arbeidstaker, "arbeid.arbeidstaker[" + i + "]", feil);
149-
validerArbeidstakerPeriode(arbeidstaker, i, søknadsperiode, feil);
151+
for (Arbeidstaker arbeidstaker : arbeidstakerList ) {
152+
validerArbeidstaker(arbeidstaker, "arbeidstid.arbeidstaker[" + i + "]", feil);
153+
validerArbeidstidInfo(arbeidstaker.getArbeidstidInfo(), "arbeidstid.arbeidstaker[\" + i + \"].arbeidstidPeriode", søknadsperiode, feil);
150154
i++;
151155
}
152156
}
153157

154-
private void validerArbeidstakerPeriode(Arbeidstaker arbeidstaker, int i, Periode søknadsperiode, List<Feil> feil) {
155-
for (Map.Entry<Periode, ArbeidPeriodeInfo> periode : arbeidstaker.getPerioder().entrySet()) {
156-
validerGyldigPeriode(periode.getKey(), "arbeid.arbeidstaker[" + i + "].periode", false, feil);
157-
validerPeriodeInnenforSøknadsperiode(periode.getKey(), "arbeid.arbeidstaker[" + i + "]", søknadsperiode, feil);
158-
validerOverlappendePerioder(arbeidstaker.getPerioder(), periode.getKey(), "arbeid.arbeidstaker.periode[" + i + "]", feil);
158+
private void validerArbeidstidInfo(ArbeidstidInfo arbeidstidInfo, String felt, Periode søknadsperiode, List<Feil> feil) {
159+
for (Map.Entry<Periode, ArbeidstidPeriodeInfo> periode : arbeidstidInfo.getPerioder().entrySet()) {
160+
validerGyldigPeriode(periode.getKey(), felt, false, feil);
161+
validerPeriodeInnenforSøknadsperiode(periode.getKey(), felt, søknadsperiode, feil);
162+
validerOverlappendePerioder(arbeidstidInfo.getPerioder(), periode.getKey(), felt, feil);
159163
}
160164
}
161165

162166

163-
private void validerArbeidstakerInfo(Arbeidstaker arbeidstaker, String felt, List<Feil> feil) {
167+
private void validerArbeidstaker(Arbeidstaker arbeidstaker, String felt, List<Feil> feil) {
164168
if (arbeidstaker.getNorskIdentitetsnummer() != null && arbeidstaker.getOrganisasjonsnummer() != null) {
165169
feil.add(new Feil(felt, "ikkeEntydigIdPåArbeidsgiver", "Ikke entydig ID på Arbeidsgiver, må oppgi enten norskIdentitetsnummer eller organisasjonsnummer."));
166170
} else if (arbeidstaker.getNorskIdentitetsnummer() == null && arbeidstaker.getOrganisasjonsnummer() == null) {

0 commit comments

Comments
 (0)