Skip to content

Commit 69fdbf0

Browse files
lagt på validering på orgnummer (#176)
* lagt på validering på orgnummer * lagt på endring
1 parent 759d9e9 commit 69fdbf0

File tree

4 files changed

+67
-5
lines changed

4 files changed

+67
-5
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package no.nav.k9.søknad.felles.type;
2+
3+
public final class OrganisasjonsNummerValidator {
4+
5+
private OrganisasjonsNummerValidator() {
6+
}
7+
8+
public static boolean erGyldig(String orgnummer) {
9+
10+
// Skal inneholde 9 siffer og kun tall
11+
if (orgnummer == null || (orgnummer = orgnummer.trim()).length() != 9) { // NOSONAR
12+
return false;
13+
}
14+
15+
int sisteSiffer = Character.getNumericValue(orgnummer.charAt(orgnummer.length() - 1));
16+
17+
return getKontrollSiffer(orgnummer) == sisteSiffer;
18+
}
19+
20+
private static int getKontrollSiffer(String number) {
21+
int lastIndex = number.length() - 1;
22+
int sum = 0;
23+
24+
for (int i = 0; i < lastIndex; i++) {
25+
sum += Character.getNumericValue(number.charAt(i)) * getVektTall(i);
26+
}
27+
28+
int rest = sum % 11;
29+
30+
return getKontrollSifferFraRest(rest);
31+
}
32+
33+
private static int getVektTall(int i) {
34+
int[] vekttall = {3, 2, 7, 6, 5, 4, 3, 2};
35+
return vekttall[i];
36+
}
37+
38+
private static int getKontrollSifferFraRest(int rest) {
39+
if (rest == 0) {
40+
return 0;
41+
}
42+
return 11 - rest;
43+
}
44+
}

soknad/src/main/java/no/nav/k9/søknad/felles/type/Organisasjonsnummer.java

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

3-
import com.fasterxml.jackson.annotation.JsonCreator;
4-
import com.fasterxml.jackson.annotation.JsonValue;
3+
import java.util.Objects;
54

5+
import javax.validation.constraints.AssertTrue;
66
import javax.validation.constraints.NotNull;
77
import javax.validation.constraints.Pattern;
88
import javax.validation.constraints.Size;
9-
import java.util.Objects;
9+
10+
import com.fasterxml.jackson.annotation.JsonCreator;
11+
import com.fasterxml.jackson.annotation.JsonValue;
1012

1113
public class Organisasjonsnummer {
1214

@@ -32,6 +34,13 @@ public static Organisasjonsnummer of(String verdi) {
3234
return new Organisasjonsnummer(verdi);
3335
}
3436

37+
38+
@AssertTrue(message="Organisasjonsnummer må være gyldig")
39+
private boolean isValid() {
40+
return OrganisasjonsNummerValidator.erGyldig(verdi);
41+
}
42+
43+
3544
@Override
3645
public boolean equals(Object obj) {
3746
if (obj == this) return true;

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
@@ -117,6 +117,7 @@ public class PleiepengerBarnSøknadValidatorTest {
117117

118118
}
119119

120+
//TODO bedre navn
120121
@Test
121122
public void søknadOgEndringMedFeil() {
122123
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
@@ -132,7 +133,7 @@ periodeUtenfor, new UttakPeriodeInfo(Duration.ofHours(8)),
132133
ytelse.getTilsynsordning().leggeTilPeriode(periodeUtenfor, new TilsynPeriodeInfo().medEtablertTilsynTimerPerDag(Duration.ofHours(7)));
133134
ytelse.getBeredskap().leggeTilPeriode(periodeUtenfor, new Beredskap.BeredskapPeriodeInfo().medTilleggsinformasjon(TestUtils.testTekst()));
134135
ytelse.getNattevåk().leggeTilPeriode(periodeUtenfor, new Nattevåk.NattevåkPeriodeInfo().medTilleggsinformasjon(TestUtils.testTekst()));
135-
ytelse.getArbeidstid().leggeTilArbeidstaker(new Arbeidstaker(null, Organisasjonsnummer.of("199999999"),
136+
ytelse.getArbeidstid().leggeTilArbeidstaker(new Arbeidstaker(null, Organisasjonsnummer.of("999999999"),
136137
new ArbeidstidInfo(Map.of(
137138
endringsperiode, new ArbeidstidPeriodeInfo(Duration.ofHours(8), Duration.ofHours(4)),
138139
søknadsperiode, new ArbeidstidPeriodeInfo(Duration.ofHours(8), Duration.ofHours(0)),
@@ -380,7 +381,7 @@ public void feilITrePerioderISammeObjekt() {
380381
var periodeTre = new Periode(stpTre.plusDays(2), stpTre.minusDays(2));
381382

382383
var psb = TestUtils.komplettYtelsePsb(søknadsperiode);
383-
psb.medArbeidstid(new Arbeidstid().medArbeidstaker(List.of(new Arbeidstaker(null, Organisasjonsnummer.of("1122"), new ArbeidstidInfo(Map.of(
384+
psb.medArbeidstid(new Arbeidstid().medArbeidstaker(List.of(new Arbeidstaker(null, Organisasjonsnummer.of(TestUtils.okOrgnummer()), new ArbeidstidInfo(Map.of(
384385
periodeEn, new ArbeidstidPeriodeInfo(Duration.ofHours(8), Duration.ZERO),
385386
periodeTo, new ArbeidstidPeriodeInfo(Duration.ofHours(8), Duration.ZERO),
386387
periodeTre, new ArbeidstidPeriodeInfo(Duration.ofHours(8), Duration.ZERO)))))));

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,14 @@ static String testTekst() {
234234
return "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
235235
}
236236

237+
static String okOrgnummer() {
238+
return "999999999";
239+
}
240+
241+
static String ikkeOkOrgnummer() {
242+
return "199999999";
243+
}
244+
237245
static String journalpostId() {
238246
return "sajhdasd83724234";
239247
}

0 commit comments

Comments
 (0)