Skip to content

Commit 040d3e1

Browse files
TSFF-2217: Legger til innsynshendeler for inntektsmeldinger. (#545)
* Legger til innsynshendeler for inntektsmeldinger. * Fikser pakkenavn. * Fikser nullable på startDatoPermisjon. * Legger til Inntektsmeldinger som wrapper listen med Inntektsmelding og implementerer InnsynHendelseData * Fjern InnsynHendelseData annotasjon og implementering på Inntektsmelding og legg det til Inntektsmeldinger * Fjerner Inntektsmeldinger * Løsner opp på kravet for påkrevde felter. * Legger til getters for felter i enums. * Legger til søkerAktørId og fagsakytelsetype. --------- Co-authored-by: Morten Osvik <[email protected]>
1 parent ae1b02b commit 040d3e1

16 files changed

+652
-0
lines changed

innsyn/src/main/java/no/nav/k9/innsyn/InnsynHendelseData.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.annotation.JsonTypeInfo;
66

77
import jakarta.validation.Valid;
8+
import no.nav.k9.innsyn.inntektsmelding.Inntektsmelding;
89
import no.nav.k9.innsyn.sak.Behandling;
910

1011
@Valid
@@ -14,11 +15,13 @@
1415
@JsonSubTypes.Type(name = InnsynHendelseData.OMSORG, value = Omsorg.class),
1516
@JsonSubTypes.Type(name = InnsynHendelseData.SØKNAD_TRUKKET, value = SøknadTrukket.class),
1617
@JsonSubTypes.Type(name = InnsynHendelseData.BEHANDLING_INNHOLD, value = Behandling.class),
18+
@JsonSubTypes.Type(name = InnsynHendelseData.INNTEKTSMELDING, value = Inntektsmelding.class),
1719
})
1820
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
1921
public interface InnsynHendelseData {
2022
String PSB_SØKNADSINNHOLD = "PSB_SØKNADSINNHOLD";
2123
String OMSORG = "OMSORG";
2224
String SØKNAD_TRUKKET = "SØKNAD_TRUKKET";
2325
String BEHANDLING_INNHOLD = "BEHANDLING_INNHOLD";
26+
String INNTEKTSMELDING = "INNTEKTSMELDING";
2427
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package no.nav.k9.innsyn.inntektsmelding;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.Pattern;
6+
import jakarta.validation.constraints.Size;
7+
import no.nav.k9.innsyn.sak.AktørId;
8+
9+
/**
10+
* En arbeidsgiver (enten virksomhet eller personlig arbeidsgiver).
11+
*/
12+
public record Arbeidsgiver(
13+
/**
14+
* Kun en av denne og {@link #arbeidsgiverAktørId} kan være satt. Sett denne
15+
* hvis Arbeidsgiver er en Organisasjon.
16+
*/
17+
@JsonProperty(value = "arbeidsgiverOrgnr")
18+
@Valid
19+
@Size(max = 20)
20+
@Pattern(regexp = "^\\d+$", message = "[${validatedValue}] matcher ikke tillatt pattern [{regexp}]")
21+
String arbeidsgiverOrgnr,
22+
23+
/**
24+
* Kun en av denne og {@link #virksomhet} kan være satt. Sett denne hvis
25+
* Arbeidsgiver er en Enkelt person.
26+
*/
27+
@JsonProperty(value = "arbeidsgiverAktørId")
28+
@Valid
29+
@Size(max = 20)
30+
@Pattern(regexp = "^\\d+$", message = "[${validatedValue}] matcher ikke tillatt pattern [{regexp}]")
31+
String arbeidsgiverAktørId
32+
) {
33+
34+
public static Arbeidsgiver person(AktørId arbeidsgiverAktørId) {
35+
return new Arbeidsgiver(null, arbeidsgiverAktørId.id());
36+
}
37+
38+
@Override
39+
public String toString() {
40+
return toString(this);
41+
}
42+
43+
private static String toString(Arbeidsgiver arb) {
44+
// litt maskering for feilsøking nå
45+
if (arb.arbeidsgiverOrgnr != null) {
46+
return "Virksomhet<" + masker(arb.arbeidsgiverOrgnr) + ">";
47+
} else {
48+
return "PersonligArbeidsgiver<"
49+
+ arb.arbeidsgiverAktørId.substring(0, Math.min(arb.arbeidsgiverAktørId.length(), 3)) + "...>";
50+
}
51+
}
52+
53+
private static String masker(String identifikator) {
54+
return identifikator.substring(0, Math.min(identifikator.length(), 3))
55+
+ "...";
56+
}
57+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package no.nav.k9.innsyn.inntektsmelding;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import jakarta.validation.constraints.DecimalMax;
5+
import jakarta.validation.constraints.DecimalMin;
6+
import jakarta.validation.constraints.Digits;
7+
8+
import java.math.BigDecimal;
9+
import java.math.RoundingMode;
10+
11+
/**
12+
* Beløp representerer kombinasjon av kroner og øre på standardisert format
13+
*/
14+
public record Beløp(
15+
16+
@JsonProperty(value = "verdi")
17+
@Digits(integer = 8, fraction = 4)
18+
@DecimalMin("-10000000.00")
19+
@DecimalMax("10000000.00")
20+
BigDecimal verdi
21+
) {
22+
private static final RoundingMode AVRUNDINGSMODUS = RoundingMode.HALF_EVEN;
23+
24+
private BigDecimal skalertVerdi() {
25+
return verdi == null ? null : verdi.setScale(2, AVRUNDINGSMODUS);
26+
}
27+
28+
@Override
29+
public String toString() {
30+
return "Beløp{" +
31+
"verdi=" + verdi +
32+
", skalertVerdi=" + skalertVerdi() +
33+
'}';
34+
}
35+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package no.nav.k9.innsyn.inntektsmelding;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import jakarta.validation.Valid;
5+
import jakarta.validation.constraints.NotNull;
6+
import no.nav.k9.søknad.felles.type.Periode;
7+
8+
public record Gradering(
9+
@Valid
10+
@NotNull
11+
@JsonProperty(value = "periode")
12+
Periode periode,
13+
14+
@Valid
15+
@NotNull
16+
@JsonProperty(value = "arbeidstidProsent")
17+
Stillingsprosent arbeidstidProsent
18+
) implements Comparable<Gradering> {
19+
20+
@Override
21+
public String toString() {
22+
return "GraderingEntitet{" +
23+
"periode=" + periode +
24+
", arbeidstidProsent=" + arbeidstidProsent +
25+
'}';
26+
}
27+
28+
@Override
29+
public int compareTo(Gradering o) {
30+
return o == null ? 1 : this.periode.compareTo(o.periode);
31+
}
32+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
package no.nav.k9.innsyn.inntektsmelding;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import com.fasterxml.jackson.annotation.JsonTypeName;
5+
import jakarta.validation.Valid;
6+
import no.nav.k9.innsyn.InnsynHendelseData;
7+
import no.nav.k9.innsyn.sak.AktørId;
8+
import no.nav.k9.innsyn.sak.FagsakYtelseType;
9+
import no.nav.k9.innsyn.sak.Saksnummer;
10+
11+
import java.time.LocalDate;
12+
import java.time.LocalDateTime;
13+
import java.util.List;
14+
15+
@JsonTypeName(InnsynHendelseData.INNTEKTSMELDING)
16+
public record Inntektsmelding(
17+
18+
@JsonProperty(value = "søkerAktørId", required = true)
19+
AktørId søkerAktørId,
20+
21+
@JsonProperty(value = "fagsakYtelseType", required = true)
22+
FagsakYtelseType fagsakYtelseType,
23+
24+
@JsonProperty(value = "status", required = true)
25+
InntektsmeldingStatus status,
26+
27+
@JsonProperty(value = "saksnummer", required = true)
28+
@Valid
29+
Saksnummer saksnummer,
30+
31+
@JsonProperty(value = "graderinger")
32+
@Valid
33+
List<Gradering> graderinger,
34+
35+
@JsonProperty(value = "naturalYtelser")
36+
@Valid
37+
List<NaturalYtelse> naturalYtelser,
38+
39+
@JsonProperty(value = "utsettelsePerioder")
40+
@Valid
41+
List<UtsettelsePeriode> utsettelsePerioder,
42+
43+
@JsonProperty(value = "arbeidsgiver", required = true)
44+
@Valid
45+
Arbeidsgiver arbeidsgiver,
46+
47+
@JsonProperty(value = "startDatoPermisjon")
48+
LocalDate startDatoPermisjon,
49+
50+
@JsonProperty(value = "oppgittFravær")
51+
@Valid
52+
List<PeriodeAndel> oppgittFravær,
53+
54+
@JsonProperty(value = "nærRelasjon")
55+
boolean nærRelasjon,
56+
57+
@JsonProperty(value = "journalpostId", required = true)
58+
@Valid
59+
JournalpostId journalpostId,
60+
61+
@JsonProperty(value = "mottattDato", required = true)
62+
LocalDate mottattDato,
63+
64+
@JsonProperty(value = "inntektBeløp", required = true)
65+
@Valid
66+
Beløp inntektBeløp,
67+
68+
@JsonProperty(value = "refusjonBeløpPerMnd")
69+
@Valid
70+
Beløp refusjonBeløpPerMnd,
71+
72+
@JsonProperty(value = "refusjonOpphører")
73+
LocalDate refusjonOpphører,
74+
75+
@JsonProperty(value = "innsendingstidspunkt", required = true)
76+
LocalDateTime innsendingstidspunkt,
77+
78+
@JsonProperty(value = "kildesystem", required = true)
79+
String kildesystem,
80+
81+
@JsonProperty(value = "inntektsmeldingType")
82+
InntektsmeldingType inntektsmeldingType,
83+
84+
@JsonProperty(value = "endringerRefusjon")
85+
@Valid
86+
List<Refusjon> endringerRefusjon,
87+
88+
@JsonProperty(value = "innsendingsårsak")
89+
InntektsmeldingInnsendingsårsak innsendingsårsak,
90+
91+
@JsonProperty(value = "imYtelseType")
92+
FagsakYtelseType imYtelseType,
93+
94+
@JsonProperty(value = "erstattetAv")
95+
@Valid
96+
List<JournalpostId> erstattetAv
97+
98+
) implements InnsynHendelseData {
99+
}
100+
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package no.nav.k9.innsyn.inntektsmelding;
2+
3+
import com.fasterxml.jackson.annotation.*;
4+
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
5+
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
6+
7+
import java.util.LinkedHashMap;
8+
import java.util.Map;
9+
10+
@JsonFormat(shape = Shape.OBJECT)
11+
@JsonAutoDetect(getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE, fieldVisibility = Visibility.ANY)
12+
public enum InntektsmeldingInnsendingsårsak {
13+
14+
NY("NY", "NY"),
15+
ENDRING("ENDRING", "ENDRING"),
16+
UDEFINERT("-", "UDEFINERT"),
17+
;
18+
19+
private static final Map<String, InntektsmeldingInnsendingsårsak> KODER = new LinkedHashMap<>();
20+
21+
static {
22+
for (var v : values()) {
23+
if (KODER.putIfAbsent(v.kode, v) != null) {
24+
throw new IllegalArgumentException("Duplikat : " + v.kode);
25+
}
26+
}
27+
}
28+
29+
@JsonIgnore
30+
private String navn;
31+
32+
@JsonValue
33+
private String kode;
34+
35+
InntektsmeldingInnsendingsårsak(String kode, String navn) {
36+
this.kode = kode;
37+
this.navn = navn;
38+
}
39+
40+
@JsonCreator
41+
public static InntektsmeldingInnsendingsårsak fraKode(String kode) {
42+
if (kode == null) {
43+
return null;
44+
}
45+
var ad = KODER.get(kode);
46+
if (ad == null) {
47+
throw new IllegalArgumentException("Ukjent InntektsmeldingInnsendingsårsak: " + kode);
48+
}
49+
return ad;
50+
}
51+
52+
public String getNavn() {
53+
return navn;
54+
}
55+
56+
public String getKode() {
57+
return kode;
58+
}
59+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package no.nav.k9.innsyn.inntektsmelding;
2+
3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonValue;
5+
6+
import java.util.LinkedHashMap;
7+
import java.util.Map;
8+
9+
10+
public enum InntektsmeldingStatus {
11+
I_BRUK("I_BRUK"),
12+
ERSTATTET_AV_NYERE("ERSTATTET_AV_NYERE"),
13+
IKKE_RELEVANT("IKKE_RELEVANT"),
14+
MANGLER_DATO("MANGLER_DATO");
15+
16+
private static final Map<String, InntektsmeldingStatus> KODER = new LinkedHashMap<>();
17+
18+
static {
19+
for (var v : values()) {
20+
if (KODER.putIfAbsent(v.kode, v) != null) {
21+
throw new IllegalArgumentException("Duplikat : " + v.kode);
22+
}
23+
}
24+
}
25+
26+
@JsonValue
27+
private final String kode;
28+
29+
InntektsmeldingStatus(String kode) {
30+
this.kode = kode;
31+
}
32+
33+
@JsonCreator
34+
public static InntektsmeldingStatus fraKode(String kode) {
35+
return KODER.get(kode);
36+
}
37+
38+
public String getKode() {
39+
return kode;
40+
}
41+
}

0 commit comments

Comments
 (0)