Skip to content

Commit c622cb0

Browse files
Feature/psb rydder tilsyn (#91)
Rydder på tilsynsordning slik at det blir mer likt resten av psb. Tar bort duration og uker/dag
1 parent c32d071 commit c622cb0

File tree

9 files changed

+81
-247
lines changed

9 files changed

+81
-247
lines changed

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

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -176,30 +176,13 @@ private void validerTilsynsordning(Tilsynsordning tilsynsordning, Periode søkna
176176
if (tilsynsordning == null) {
177177
return;
178178
}
179-
if (TilsynsordningSvar.JA == tilsynsordning.getiTilsynsordning())
180-
if (tilsynsordning.getOpphold() == null || tilsynsordning.getOpphold().isEmpty()) {
181-
feil.add(new Feil("tilsynsordning.perioder", PÅKREVD, "Det må minst være en periode med opphold."));
182-
} else {
183-
tilsynsordning.getOpphold().forEach((periode, tilsynsordningOpphold) -> {
184-
validerGyldigPeriode(periode, "tilsynsordning.perioder", false, feil);
185-
validerPeriodeInnenforSøknadsperiode(periode, "tilsynsordning.perioder", søknadsperiode, feil);
186-
validerTilsynsordningOpphold(tilsynsordningOpphold, periode, feil);
187-
});
188-
}
189-
}
190-
191-
private void validerTilsynsordningOpphold(TilsynsordningOpphold tilsynsordningOpphold, Periode periode, List<Feil> feil) {
192-
Duration maks = maksInnenforPeriode(periode);
193-
if (maks != null && tilsynsordningOpphold.getLengde().compareTo(maks) > 0) {
194-
feil.add(new Feil("tilsynsordning.opphold[" + periode.getIso8601() + "].lengde", "ugyldigLengdePåOpphold", "Lengden på oppholdet overskrider tiden i perioden."));
195-
}
196-
}
197-
198-
private Duration maksInnenforPeriode(Periode periode) {
199-
if (periode.getFraOgMed() == null || periode.getTilOgMed() == null) return null;
200-
else {
201-
Period p = Period.between(periode.getFraOgMed(), periode.getTilOgMed().plusDays(1));
202-
return Duration.ofDays(p.getDays()).abs();
179+
if (tilsynsordning.getPerioder() == null || tilsynsordning.getPerioder().isEmpty()) {
180+
feil.add(new Feil("tilsynsordning.perioder", PÅKREVD, "Det må minst være en periode med opphold."));
181+
} else {
182+
tilsynsordning.getPerioder().forEach((periode, periodeInfo) -> {
183+
validerGyldigPeriode(periode, "tilsynsordning.perioder", false, feil);
184+
validerPeriodeInnenforSøknadsperiode(periode, "tilsynsordning.perioder", søknadsperiode, feil);
185+
});
203186
}
204187
}
205188
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package no.nav.k9.søknad.ytelse.psb.v1.tilsyn;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.JsonCreator;
5+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6+
import com.fasterxml.jackson.annotation.JsonProperty;
7+
8+
import javax.validation.Valid;
9+
import javax.validation.constraints.Max;
10+
import javax.validation.constraints.Min;
11+
import javax.validation.constraints.NotNull;
12+
import java.math.BigDecimal;
13+
14+
@JsonIgnoreProperties(ignoreUnknown = true)
15+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
16+
public class PeriodeInfo {
17+
18+
@Valid
19+
@NotNull
20+
@Min(0)
21+
@JsonProperty(value = "etablertTilsynTimerPerDag", required = true)
22+
private BigDecimal etablertTilsynTimerPerDag;
23+
24+
@JsonCreator
25+
public PeriodeInfo(@JsonProperty(value = "etablertTilsynTimerPerDag", required = true) @Valid @NotNull @Min(0) BigDecimal etablertTilsynTimerPerDag) {
26+
this.etablertTilsynTimerPerDag = etablertTilsynTimerPerDag;
27+
}
28+
29+
public BigDecimal getEtablertTilsynTimerPerDag() {
30+
return etablertTilsynTimerPerDag;
31+
}
32+
33+
public void setEtablertTilsynTimerPerDag(BigDecimal etablertTilsynTimerPerDag) {
34+
this.etablertTilsynTimerPerDag = etablertTilsynTimerPerDag;
35+
}
36+
}

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

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,37 @@
88

99
import javax.validation.Valid;
1010
import javax.validation.constraints.NotNull;
11+
import java.util.Collections;
12+
import java.util.HashMap;
13+
import java.util.List;
1114
import java.util.Map;
1215

16+
import static java.util.Collections.emptyMap;
17+
import static java.util.Collections.unmodifiableMap;
18+
1319
@JsonIgnoreProperties(ignoreUnknown = true)
1420
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1521
public class Tilsynsordning {
1622

17-
@JsonProperty(value="iTilsynsordning", required=true)
18-
@NotNull
19-
@Valid
20-
private TilsynsordningSvar iTilsynsordning;
21-
22-
@JsonProperty(value="opphold")
23+
@JsonProperty(value="perioder")
2324
@Valid
24-
private Map<Periode, TilsynsordningOpphold> opphold;
25+
private Map<Periode, PeriodeInfo> perioder;
2526

2627
@JsonCreator
2728
public Tilsynsordning(
28-
@JsonProperty("iTilsynsordning")
29-
TilsynsordningSvar iTilsynsordning,
30-
@JsonProperty("opphold")
31-
Map<Periode, TilsynsordningOpphold> opphold) {
32-
this.iTilsynsordning = iTilsynsordning;
33-
this.opphold = opphold;
34-
}
35-
36-
public TilsynsordningSvar getiTilsynsordning() {
37-
return iTilsynsordning;
29+
@JsonProperty("perioder") @Valid Map<Periode, PeriodeInfo> perioder) {
30+
this.perioder = new HashMap<>(perioder);
3831
}
3932

40-
public void setiTilsynsordning(TilsynsordningSvar iTilsynsordning) {
41-
this.iTilsynsordning = iTilsynsordning;
33+
public Map<Periode, PeriodeInfo> getPerioder() {
34+
return unmodifiableMap(perioder);
4235
}
4336

44-
public Map<Periode, TilsynsordningOpphold> getOpphold() {
45-
return opphold;
37+
public void setPerioder(Map<Periode, PeriodeInfo> perioder) {
38+
this.perioder = new HashMap<>(perioder);
4639
}
4740

48-
public void setOpphold(Map<Periode, TilsynsordningOpphold> opphold) {
49-
this.opphold = opphold;
41+
public void leggeTilPerioder(Map<Periode, PeriodeInfo> perioder) {
42+
this.perioder.putAll(perioder);
5043
}
5144
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import javax.validation.constraints.NotNull;
99
import java.time.Duration;
1010

11+
@Deprecated
1112
@JsonIgnoreProperties(ignoreUnknown = true)
1213
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1314
public class TilsynsordningOpphold {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
2121
Håndterer også om start & slutt-uke ikke er hele uker eller om ukene går over i nytt kalenderår (uke 0/53).
2222
*/
23+
24+
@Deprecated
2325
public class TilsynsordningUke {
2426
public static final Duration MAX_LENGDE_PER_DAG = Duration.ofHours(7).plusMinutes(30);
2527
private static final WeekFields WEEK_FIELDS = WeekFields.of(Locale.forLanguageTag("no-NO"));

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
2929
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidPeriodeInfo;
3030
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.Tilsynsordning;
31+
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.PeriodeInfo;
3132
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynsordningOpphold;
3233
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynsordningSvar;
3334

@@ -57,9 +58,9 @@ public class PleiepengerBarnSøknadValidatorTest {
5758
@Test
5859
public void søknadMedTilsynsordningOppholdLengreEnnPerioden() {
5960
var søknad = TestUtils.komplettBuilder();
60-
Tilsynsordning tilsynsordning = new Tilsynsordning(TilsynsordningSvar.JA, Map.of(
61+
Tilsynsordning tilsynsordning = new Tilsynsordning(Map.of(
6162
new Periode(LocalDate.now(), LocalDate.now()),
62-
new TilsynsordningOpphold(Duration.ofDays(2))));
63+
new PeriodeInfo(BigDecimal.valueOf(7))));
6364
søknad.setTilsynsordning(tilsynsordning);
6465

6566
verifyHarFeil(søknad);

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,14 @@
1515
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
1616
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
1717
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidPeriodeInfo;
18+
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.PeriodeInfo;
1819
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.Tilsynsordning;
19-
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynsordningOpphold;
20-
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynsordningSvar;
2120

2221
import java.io.IOException;
2322
import java.math.BigDecimal;
2423
import java.nio.file.Files;
2524
import java.nio.file.Path;
26-
import java.time.Duration;
2725
import java.time.LocalDate;
28-
import java.util.Collections;
2926
import java.util.List;
3027
import java.util.Map;
3128

@@ -79,13 +76,13 @@ static PleiepengerSyktBarn komplettBuilder() {
7976
delperiodeEn, new Nattevåk.NattevåkPeriodeInfo("Noe tilleggsinformasjon. Lorem ipsum æÆøØåÅ."),
8077
delperiodeTo, new Nattevåk.NattevåkPeriodeInfo("Noe tilleggsinformasjon. Lorem ipsum æÆøØåÅ.")));
8178

82-
var tilsynsordning = new Tilsynsordning(TilsynsordningSvar.of("ja"), Map.of(
83-
new Periode(LocalDate.parse("2019-01-01"), LocalDate.parse("2019-01-01")),
84-
new TilsynsordningOpphold(Duration.parse("PT7H30M")),
85-
new Periode(LocalDate.parse("2019-01-02"), LocalDate.parse("2019-01-02")),
86-
new TilsynsordningOpphold(Duration.parse("PT7H25M")),
87-
new Periode(LocalDate.parse("2019-01-03"), LocalDate.parse("2019-01-09")),
88-
new TilsynsordningOpphold(Duration.parse("PT168H"))));
79+
var tilsynsordning = new Tilsynsordning(Map.of(
80+
new Periode(LocalDate.parse("2019-01-01"), LocalDate.parse("2019-01-01")),
81+
new PeriodeInfo(BigDecimal.valueOf(7.5)),
82+
new Periode(LocalDate.parse("2019-01-02"), LocalDate.parse("2019-01-02")),
83+
new PeriodeInfo(BigDecimal.valueOf(7.5)),
84+
new Periode(LocalDate.parse("2019-01-03"), LocalDate.parse("2019-01-09")),
85+
new PeriodeInfo(BigDecimal.valueOf(7.5))));
8986

9087
var lovbestemtFerie = new LovbestemtFerie(List.of(delperiodeTo));
9188

@@ -105,7 +102,7 @@ static PleiepengerSyktBarn komplettBuilder() {
105102

106103
var barn = Barn.builder()
107104
.norskIdentitetsnummer(NorskIdentitetsnummer.of("11111111111"))
108-
.fødselsdato(LocalDate.now())
105+
.fødselsdato(null)
109106
.build();
110107

111108
var bosteder = new Bosteder(Map.of(

0 commit comments

Comments
 (0)