Skip to content

Commit df8e6f3

Browse files
lagt på validering av arbeidstid med faktisk og normal arbeidstid (#205)
1 parent d6c5c71 commit df8e6f3

File tree

4 files changed

+39
-9
lines changed

4 files changed

+39
-9
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import java.time.Duration;
44

55
import javax.validation.Valid;
6+
import javax.validation.constraints.AssertTrue;
67
import javax.validation.constraints.NotNull;
78

9+
import org.hibernate.validator.constraints.time.DurationMax;
810
import org.hibernate.validator.constraints.time.DurationMin;
911

1012
import com.fasterxml.jackson.annotation.JsonAutoDetect;
@@ -19,12 +21,14 @@ public class ArbeidstidPeriodeInfo {
1921
@Valid
2022
@NotNull
2123
@DurationMin
24+
@DurationMax(hours = 24)
2225
@JsonProperty(value = "jobberNormaltTimerPerDag", required = true)
2326
private Duration jobberNormaltTimerPerDag;
2427

2528
@Valid
2629
@NotNull
2730
@DurationMin
31+
@DurationMax(hours = 24)
2832
@JsonProperty(value = "faktiskArbeidTimerPerDag", required = true)
2933
private Duration faktiskArbeidTimerPerDag;
3034

@@ -56,4 +60,12 @@ public ArbeidstidPeriodeInfo medJobberNormaltTimerPerDag(Duration jobberNormaltT
5660
this.jobberNormaltTimerPerDag = jobberNormaltTimerPerDag;
5761
return this;
5862
}
63+
64+
@AssertTrue(message="[ugyldigArbeidstid] Faktisk arbeid er større enn jobber normalt")
65+
private boolean isValid() {
66+
if (jobberNormaltTimerPerDag == null || faktiskArbeidTimerPerDag == null) {
67+
return true;
68+
}
69+
return jobberNormaltTimerPerDag.compareTo(faktiskArbeidTimerPerDag) >= 0;
70+
}
5971
}

soknad/src/test/java/no/nav/k9/søknad/ytelse/psb/YtelseEksempel.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,10 +225,13 @@ public static Beredskap lagBeredskap(Periode... perioder) {
225225

226226
public static Arbeidstaker lagArbeidstaker(Periode... perioder) {
227227
ArbeidstidPeriodeInfo arbeidstidPeriodeInfo = new ArbeidstidPeriodeInfo(Duration.ofHours(7).plusMinutes(30), Duration.ofHours(7).plusMinutes(30));
228-
var arbeidstaker = new Arbeidstaker(null, Organisasjonsnummer.of("999999999"),
228+
return lagArbeidstaker(arbeidstidPeriodeInfo, perioder);
229+
}
230+
231+
public static Arbeidstaker lagArbeidstaker(ArbeidstidPeriodeInfo arbeidstidPeriodeInfo, Periode... perioder) {
232+
return new Arbeidstaker(null, Organisasjonsnummer.of("999999999"),
229233
new ArbeidstidInfo(
230234
lagPerioder(perioder, arbeidstidPeriodeInfo)));
231-
return arbeidstaker;
232235
}
233236

234237
public static Uttak lagUttak(Periode... perioder) {

soknad/src/test/java/no/nav/k9/søknad/ytelse/psb/v1/YtelseTest.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import no.nav.k9.søknad.ytelse.psb.SøknadEksempel;
2424
import no.nav.k9.søknad.ytelse.psb.YtelseEksempel;
2525
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
26+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
2627
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
2728
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidPeriodeInfo;
2829
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynPeriodeInfo;
@@ -215,7 +216,8 @@ public void overlappendePerioderForUttaksperiodeMap() {
215216

216217
var arbeidstaker = new Arbeidstaker(null, Organisasjonsnummer.of("88888888"), arbeidstidInfo);
217218
((PleiepengerSyktBarn) søknad.getYtelse()).getArbeidstid().leggeTilArbeidstaker(arbeidstaker);
218-
verifyHarFeil(søknad);
219+
var feil = verifyHarFeil(søknad);
220+
feilInneholder(feil, "påkrevd");
219221
}
220222

221223
@Test
@@ -277,4 +279,17 @@ public void overlappendePerioderForUttaksperiodeMap() {
277279
feilInneholder(feil, "ikkeEntydigId");
278280
}
279281

282+
@Test
283+
public void søknadMedFaktisArbeidStørreEnnFaktisArbeid() {
284+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
285+
var søknad = SøknadEksempel.søknad(YtelseEksempel.komplettYtelse(søknadsperiode));
286+
var jobberNormalt = Duration.ofHours(3);
287+
var jobberFaktisk = Duration.ofHours(7);
288+
var arbeidstaker = YtelseEksempel.lagArbeidstaker(new ArbeidstidPeriodeInfo(jobberNormalt, jobberFaktisk), søknadsperiode);
289+
290+
((PleiepengerSyktBarn) søknad.getYtelse()).medArbeidstid(new Arbeidstid().medArbeidstaker(List.of(arbeidstaker)));
291+
var feil = verifyHarFeil(søknad);
292+
feilInneholder(feil, "ugyldigArbeidstid");
293+
}
294+
280295
}

soknad/src/test/resources/ytelse/psb/søknad-med-endring.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,25 +108,25 @@
108108
"arbeidstidInfo": {
109109
"perioder": {
110110
"2018-12-30/2019-10-20": {
111-
"jobberNormaltTimerPerDag": "PT7H28M",
112-
"faktiskArbeidTimerPerDag": "PT37H30M"
111+
"jobberNormaltTimerPerDag": "PT7H30M",
112+
"faktiskArbeidTimerPerDag": "PT3H"
113113
}
114114
}
115115
}
116116
}],
117117
"frilanserArbeidstidInfo": {
118118
"perioder": {
119119
"2018-12-30/2019-10-20": {
120-
"jobberNormaltTimerPerDag": "PT5H",
121-
"faktiskArbeidTimerPerDag": "PT6H"
120+
"jobberNormaltTimerPerDag": "PT6H",
121+
"faktiskArbeidTimerPerDag": "PT5H"
122122
}
123123
}
124124
},
125125
"selvstendigNæringsdrivendeArbeidstidInfo": {
126126
"perioder": {
127127
"2018-12-30/2019-10-20": {
128-
"jobberNormaltTimerPerDag": "PT4H",
129-
"faktiskArbeidTimerPerDag": "PT7H"
128+
"jobberNormaltTimerPerDag": "PT7H",
129+
"faktiskArbeidTimerPerDag": "PT4H"
130130
}
131131
}
132132
}

0 commit comments

Comments
 (0)