Skip to content

Commit abe7dd3

Browse files
fix: håndterer midlertidig journalført fra brukerdialog (#102)
1 parent 441e87e commit abe7dd3

File tree

4 files changed

+167
-15
lines changed

4 files changed

+167
-15
lines changed

soknad/src/main/java/no/nav/k9/søknad/LegacySøknad.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package no.nav.k9.søknad;
22

33
import java.io.IOException;
4+
import java.time.OffsetDateTime;
45
import java.time.ZonedDateTime;
56
import java.util.AbstractMap.SimpleEntry;
67
import java.util.Collections;
@@ -9,6 +10,7 @@
910
import java.util.stream.Collectors;
1011

1112
import javax.validation.Valid;
13+
import javax.validation.constraints.AssertTrue;
1214
import javax.validation.constraints.NotNull;
1315

1416
import com.fasterxml.jackson.annotation.JsonAlias;
@@ -43,17 +45,22 @@ public class LegacySøknad implements Innsending {
4345
@JsonProperty(value = "søknadId", required = true)
4446
private SøknadId søknadId;
4547

48+
@JsonInclude(value = Include.NON_EMPTY)
4649
@Valid
47-
@NotNull
48-
@JsonProperty(value = "versjon", required = true)
50+
@JsonProperty(value = "versjon")
4951
private Versjon versjon;
5052

51-
@Valid
52-
@NotNull
53+
@JsonInclude(value = Include.NON_EMPTY)
54+
@JsonProperty(value = "mottattDato")
5355
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX", timezone = "UTC")
54-
@JsonProperty(value = "mottattDato", required = true)
56+
@Valid
5557
private ZonedDateTime mottattDato;
5658

59+
@JsonInclude(value = Include.NON_EMPTY)
60+
@JsonProperty(value = "mottatt")
61+
@Valid
62+
private OffsetDateTime mottatt;
63+
5764
@Valid
5865
@NotNull
5966
@JsonProperty(value = "søker", required = true)
@@ -72,8 +79,8 @@ public class LegacySøknad implements Innsending {
7279
private Map<Periode, Dummy> perioder;
7380

7481
public LegacySøknad(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
75-
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
76-
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
82+
@JsonProperty(value = "versjon") @Valid Versjon versjon,
83+
@JsonProperty(value = "mottattDato") @Valid @NotNull ZonedDateTime mottattDato,
7784
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker) {
7885
this.søknadId = søknadId;
7986
this.versjon = versjon;
@@ -83,19 +90,26 @@ public class LegacySøknad implements Innsending {
8390

8491
@JsonCreator
8592
public LegacySøknad(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
86-
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
87-
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
93+
@JsonProperty(value = "versjon") @Valid Versjon versjon,
94+
@JsonProperty(value = "mottattDato") @Valid ZonedDateTime mottattDato,
95+
@JsonProperty(value = "mottatt") @Valid OffsetDateTime mottattDato2,
8896
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
8997
@JsonAlias(value = { "fosterbarn" }) @JsonProperty(value = "barn", required = true) List<Barn> barn,
9098
@JsonProperty(value = "perioder", required = false) Map<Periode, Dummy> perioder) {
9199
this.søknadId = søknadId;
92100
this.versjon = versjon;
93101
this.mottattDato = mottattDato;
102+
this.mottatt = mottattDato2;
94103
this.søker = søker;
95104
this.barn = barn;
96105
this.perioder = perioder;
97106
}
98107

108+
@AssertTrue(message = "trenger enten mottatDato eller mottatt")
109+
private boolean isOk() {
110+
return mottattDato != null || mottatt != null;
111+
}
112+
99113
@Override
100114
public SøknadId getSøknadId() {
101115
return søknadId;
@@ -112,7 +126,7 @@ public List<Barn> getBarn() {
112126
public void setBarn(List<Barn> barn) {
113127
this.barn = barn == null ? null : List.copyOf(barn);
114128
}
115-
129+
116130
public void setPerioder(List<Periode> perioder) {
117131
this.perioder = perioder.stream().map(p -> new SimpleEntry<>(p, new Dummy())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
118132
}
@@ -124,7 +138,7 @@ public Versjon getVersjon() {
124138

125139
@Override
126140
public ZonedDateTime getMottattDato() {
127-
return mottattDato;
141+
return mottattDato == null ? mottatt.toZonedDateTime() : mottattDato;
128142
}
129143

130144
public List<Periode> getPerioder() {
@@ -147,7 +161,7 @@ public static String serialize(LegacySøknad søknad) {
147161
public static LegacySøknad deserialize(String søknad) {
148162
return JsonUtils.fromString(søknad, LegacySøknad.class);
149163
}
150-
164+
151165
public static LegacySøknad deserialize(ObjectNode node) {
152166
try {
153167
return JsonUtils.getObjectMapper().treeToValue(node, LegacySøknad.class);

soknad/src/test/java/no/nav/k9/søknad/ytelse/legacy/LegacySøknadValidatorTest.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,27 @@ public class LegacySøknadValidatorTest {
77

88
@Test
99
public void test_legacy_psb_søknad() {
10-
var søknad = LegacyTestUtils.legacyJsonFil("legacy-2021-01-psb-søknad.json");
10+
var søknad = LegacyTestUtils.legacyJsonFil("psb/legacy-2021-01-psb-søknad.json");
1111
verifyIngenFeil(søknad);
1212
}
1313

1414
@Test
1515
public void test_legacy_søknad_1() {
16-
var søknad = LegacyTestUtils.legacyJsonFil("legacy-2021-01-søknad_1.json");
16+
var søknad = LegacyTestUtils.legacyJsonFil("psb/legacy-2021-01-søknad_1.json");
17+
verifyIngenFeil(søknad);
18+
}
19+
20+
@SuppressWarnings("removal")
21+
@Test
22+
public void test_legacy_søknad_2() {
23+
var søknad = LegacyTestUtils.legacyJsonFil("legacy/søknad.json");
24+
assertThat(søknad.getBarn()).isNotEmpty();
25+
assertThat(søknad.getBerørtePersoner()).isNotEmpty();
26+
assertThat(søknad.getMottattDato()).isNotNull();
27+
assertThat(søknad.getSøker()).isNotNull();
28+
assertThat(søknad.getSøker().getPersonIdent()).isNotNull();
29+
assertThat(søknad.getSøknadId()).isNotNull();
30+
1731
verifyIngenFeil(søknad);
1832
}
1933

soknad/src/test/java/no/nav/k9/søknad/ytelse/legacy/LegacyTestUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class LegacyTestUtils {
1111

1212
private static String jsonFromFile(String filename) {
1313
try {
14-
return Files.readString(Path.of("src/test/resources/ytelse/psb/" + filename));
14+
return Files.readString(Path.of("src/test/resources/ytelse/" + filename));
1515
} catch (IOException e) {
1616
throw new RuntimeException(e);
1717
}
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
{
2+
"søknadId": "9c889606-677a-4337-924d-5289b0e881c3",
3+
"mottatt": "2021-02-09T14:09:58.727679+01:00",
4+
"søker": {
5+
"fødselsnummer": "11112270033",
6+
"fornavn": "Ola",
7+
"mellomnavn": "Mellomnavn",
8+
"etternavn": "Nordmann",
9+
"fødselsdato": "2018-05-16",
10+
"aktørId": "123456"
11+
},
12+
"språk": "nb",
13+
"bosteder": [
14+
{
15+
"fraOgMed": "2020-01-01",
16+
"tilOgMed": "2020-01-06",
17+
"landkode": "SWE",
18+
"landnavn": "Sverige",
19+
"erEØSLand": true
20+
},
21+
{
22+
"fraOgMed": "2020-01-11",
23+
"tilOgMed": "2020-01-11",
24+
"landkode": "NOR",
25+
"landnavn": "Norge",
26+
"erEØSLand": true
27+
}
28+
],
29+
"opphold": [
30+
{
31+
"fraOgMed": "2020-01-16",
32+
"tilOgMed": "2020-01-21",
33+
"landkode": "Eng",
34+
"landnavn": "England",
35+
"erEØSLand": true
36+
},
37+
{
38+
"fraOgMed": "2019-12-22",
39+
"tilOgMed": "2019-12-27",
40+
"landkode": "CRO",
41+
"landnavn": "Kroatia",
42+
"erEØSLand": true
43+
}
44+
],
45+
"spørsmål": [
46+
{
47+
"spørsmål": "Har du vært hjemme?",
48+
"svar": true
49+
},
50+
{
51+
"spørsmål": "Skal du være hjemme?",
52+
"svar": false
53+
}
54+
],
55+
"utbetalingsperioder": [
56+
{
57+
"fraOgMed": "2020-01-01",
58+
"tilOgMed": "2020-01-11",
59+
"lengde": "PT5H30M",
60+
"antallTimerBorte": null,
61+
"antallTimerPlanlagt": null
62+
},
63+
{
64+
"fraOgMed": "2020-01-21",
65+
"tilOgMed": "2020-01-21",
66+
"lengde": "PT5H30M",
67+
"antallTimerBorte": null,
68+
"antallTimerPlanlagt": null
69+
},
70+
{
71+
"fraOgMed": "2020-01-31",
72+
"tilOgMed": "2020-02-05",
73+
"lengde": "PT5H30M",
74+
"antallTimerBorte": null,
75+
"antallTimerPlanlagt": null
76+
}
77+
],
78+
"andreUtbetalinger": [
79+
"dagpenger",
80+
"sykepenger"
81+
],
82+
"fosterbarn": [
83+
{
84+
"fødselsnummer": "02119970078"
85+
}
86+
],
87+
"vedlegg": [
88+
"http://localhost:8080/vedlegg/1",
89+
"http://localhost:8080/vedlegg/2",
90+
"http://localhost:8080/vedlegg/3"
91+
],
92+
"frilans": null,
93+
"selvstendigVirksomheter": [
94+
{
95+
"næringstyper": [
96+
"ANNEN",
97+
"FISKE"
98+
],
99+
"fiskerErPåBladB": false,
100+
"fraOgMed": "2021-02-09",
101+
"tilOgMed": "2021-02-19",
102+
"næringsinntekt": 123456789,
103+
"navnPåVirksomheten": "Kjells Møbelsnekkeri",
104+
"organisasjonsnummer": "111111",
105+
"registrertINorge": true,
106+
"registrertILand": null,
107+
"registrertIUtlandet": null,
108+
"yrkesaktivSisteTreFerdigliknedeÅrene": null,
109+
"varigEndring": {
110+
"dato": "2021-01-20",
111+
"inntektEtterEndring": 234543,
112+
"forklaring": "Forklaring som handler om varig endring"
113+
},
114+
"regnskapsfører": null
115+
}
116+
],
117+
"erArbeidstakerOgså": true,
118+
"hjemmePgaSmittevernhensyn": true,
119+
"hjemmePgaStengtBhgSkole": null,
120+
"bekreftelser": {
121+
"harBekreftetOpplysninger": true,
122+
"harForståttRettigheterOgPlikter": true
123+
}
124+
}

0 commit comments

Comments
 (0)