Skip to content

Commit 197122b

Browse files
authored
Bugfix 2025 m01 (#810)
* Run Kt Lint for famvern * Bugfix Famvern control 021 * Kvartal: Add Kontroll 010 Utgått funksjon * Famvern52B Control 21: Add handling of missing values * Kvartal: update Kontroll 010 Utgått funksjon * Update KvartalKostraMainTest.kt
1 parent 9306d03 commit 197122b

File tree

83 files changed

+2079
-1654
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+2079
-1654
lines changed

kontroller/src/main/kotlin/no/ssb/kostra/area/regnskap/kostra/KvartalKostraMain.kt

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package no.ssb.kostra.area.regnskap.kostra
33
import no.ssb.kostra.area.regnskap.RegnskapConstants.osloKommuner
44
import no.ssb.kostra.area.regnskap.RegnskapValidator
55
import no.ssb.kostra.program.KotlinArguments
6+
import no.ssb.kostra.validation.rule.regnskap.Rule010UtgattFunksjon
67

78
class KvartalKostraMain(
89
arguments: KotlinArguments
@@ -22,6 +23,14 @@ class KvartalKostraMain(
2223
// @formatter:on
2324
)
2425

26+
@SuppressWarnings
27+
private val utgatteKommunaleFunksjoner = listOf(
28+
//@formatter:off
29+
"190",
30+
"254",
31+
// @formatter:on
32+
)
33+
2534
@SuppressWarnings
2635
private val fylkeskommunaleFunksjoner = listOf(
2736
// @formatter:off
@@ -54,6 +63,7 @@ class KvartalKostraMain(
5463

5564
if (arguments.skjema in listOf("0AK1", "0AK2", "0AK3", "0AK4"))
5665
result.addAll(kommunaleFunksjoner)
66+
result.addAll(utgatteKommunaleFunksjoner)
5767

5868
if (arguments.skjema in listOf("0CK1", "0CK2", "0CK3", "0CK4"))
5969
result.addAll(fylkeskommunaleFunksjoner)
@@ -67,26 +77,26 @@ class KvartalKostraMain(
6777
} else
6878
emptyList()
6979

80+
// Kun gyldig i investering og skal fjernes fra drift
7081
@SuppressWarnings
7182
private val invalidDriftFunksjonList =
7283
if (arguments.skjema in bevilgningRegnskap)
73-
// Kun gyldig i investering og skal fjernes fra drift
7484
listOf("841 ")
7585
else
7686
emptyList()
7787

88+
// Kun gyldig i drift og skal fjernes fra investering
7889
@SuppressWarnings
7990
private val invalidInvesteringFunksjonAsList =
8091
if (arguments.skjema in bevilgningRegnskap)
81-
// Kun gyldig i drift og skal fjernes fra investering
8292
listOf("800 ", "840 ", "860 ")
8393
else
8494
emptyList()
8595

96+
// Anses som ulogisk i investering
8697
@SuppressWarnings
8798
private val illogicalInvesteringFunksjonAsList: List<String> =
8899
if (arguments.skjema in bevilgningRegnskap)
89-
// Anses som ulogisk i investering
90100
listOf("100 ", "110 ", "121 ", "170 ", "171 ", "400 ", "410 ", "421 ", "470 ", "471 ")
91101
else
92102
emptyList()
@@ -118,15 +128,24 @@ class KvartalKostraMain(
118128
private val basisArter = listOf(
119129
// @formatter:off
120130
"010", "020", "030", "040", "050", "070", "075", "080", "089", "090", "099",
121-
"100", "105", "110", "114", "115", "120", "130", "140", "150", "160", "165", "170", "180", "181", "182", "183", "184", "185", "190", "195",
122-
"200", "209", "210", "220", "230", "240", "250", "260", "270", "280", "285",
123-
"300", "330", "350", "370",
124-
"400", "429", "430", "450", "470",
125-
"500", "501", "509", "510", "511", "512", "520", "521", "522", "529", "530", "540", "550", "570", "589", "590",
126-
"600", "620", "629", "630", "640", "650", "660", "670",
127-
"700", "710", "729", "730", "750", "770",
128-
"800", "810", "830", "850", "870", "876", "877", "880", "890",
129-
"900", "901", "905", "909", "910", "911", "912", "920", "921", "922", "929", "940", "950", "970", "980", "989", "990",
131+
"100", "105", "110", "114", "115", "120", "130", "140",
132+
"150", "160", "165", "170", "180", "181", "182", "183", "184", "185", "190", "195",
133+
"200", "209", "210", "220", "230", "240",
134+
"250", "260", "270", "280", "285",
135+
"300", "330",
136+
"350", "370",
137+
"400", "429", "430",
138+
"450", "470",
139+
"500", "501", "509", "510", "511", "512", "520", "521", "522", "529", "530", "540",
140+
"550", "570", "589", "590",
141+
"600", "620", "629", "630", "640",
142+
"650", "660", "670",
143+
"700", "710", "729", "730",
144+
"750", "770",
145+
"800", "810", "830",
146+
"850", "870", "876", "877", "880", "890",
147+
"900", "901", "905", "909", "910", "911", "912", "920", "921", "922", "929", "940", "950",
148+
"970", "980", "989", "990",
130149
"Z", "z", "~"
131150
// @formatter:on
132151
)
@@ -161,10 +180,10 @@ class KvartalKostraMain(
161180
} else emptyList()
162181

163182

183+
// Sektorer
164184
@SuppressWarnings
165185
override val sektorList: List<String> =
166186
if (arguments.skjema in balanseRegnskap)
167-
// Sektorer
168187
listOf(
169188
// @formatter:off
170189
"000", "070", "080",
@@ -215,4 +234,7 @@ class KvartalKostraMain(
215234
invalidInvesteringArtList = invalidInvesteringArtList
216235
)
217236
)
237+
.plus(
238+
listOf(Rule010UtgattFunksjon(utgatteKommunaleFunksjoner))
239+
)
218240
}

kontroller/src/main/kotlin/no/ssb/kostra/validation/rule/famvern/famvern52a/Familievern52aRuleId.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package no.ssb.kostra.validation.rule.famvern.famvern52a
22

3-
enum class Familievern52aRuleId(val title: String) {
3+
enum class Familievern52aRuleId(
4+
val title: String,
5+
) {
46
FAMILIEVERN52A_RULE003("Kontroll 003 : Regionsnummer"),
57
FAMILIEVERN52A_RULE004("Kontroll 004 : Kontornummer"),
68
FAMILIEVERN52A_RULE005("Kontroll 005 : Manglende samsvar mellom regions- og kontornummer"),
@@ -18,7 +20,9 @@ enum class Familievern52aRuleId(val title: String) {
1820

1921
// CR Note: Only in use in tests
2022
FAMILIEVERN52A_RULE019B1("Kontroll 019 B1 : Tid siden brudd for primærklient og viktigste samtalepartner, ekspartnere, lengde"),
21-
FAMILIEVERN52A_RULE019B2("Kontroll 019 B2 : Varighet på relasjon mellom primærklient og viktigste samtalepartner, ekspartnere, varighet"),
23+
FAMILIEVERN52A_RULE019B2(
24+
"Kontroll 019 B2 : Varighet på relasjon mellom primærklient og viktigste samtalepartner, ekspartnere, varighet",
25+
),
2226

2327
FAMILIEVERN52A_RULE020("Kontroll 020 : Dato for første behandlingssamtale"),
2428
FAMILIEVERN52A_RULE021("Kontroll 021 : Første behandlingssamtale er før henvendelsesdato"),
@@ -39,4 +43,4 @@ enum class Familievern52aRuleId(val title: String) {
3943
FAMILIEVERN52A_RULE036("Kontroll 036 : Avslutningsdato før første samtale"),
4044
FAMILIEVERN52A_RULE037("Kontroll 037 : Bekymringsmelding sendt barnevernet"),
4145
FAMILIEVERN52A_RULE038("Kontroll 038 : Ventetid"),
42-
}
46+
}

kontroller/src/main/kotlin/no/ssb/kostra/validation/rule/famvern/famvern52a/Rule003Regionsnummer.kt

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,25 @@ import no.ssb.kostra.validation.report.Severity
99
import no.ssb.kostra.validation.rule.AbstractNoArgsRule
1010

1111
class Rule003Regionsnummer(
12-
private val mappingList: List<FamilievernConstants.KontorFylkeRegionMapping>
12+
private val mappingList: List<FamilievernConstants.KontorFylkeRegionMapping>,
1313
) : AbstractNoArgsRule<List<KostraRecord>>(
14-
Familievern52aRuleId.FAMILIEVERN52A_RULE003.title,
15-
Severity.WARNING
16-
) {
17-
override fun validate(context: List<KostraRecord>) = context
18-
.filterNot { mappingList.any { mapping -> it[REGION_NR_A_COL_NAME] == mapping.region } }
19-
.map {
20-
val regionList = mappingList.map { item -> item.region }.distinct().sorted()
21-
createValidationReportEntry(
22-
messageText = "Regionsnummeret som er oppgitt i recorden fins ikke i listen med gyldige regionsnumre. "
23-
+ "Fant '${it[REGION_NR_A_COL_NAME]}', forventet én av : $regionList.",
24-
lineNumbers = listOf(it.lineNumber)
25-
).copy(
26-
caseworker = it[KONTOR_NR_A_COL_NAME],
27-
journalId = it[JOURNAL_NR_A_COL_NAME]
28-
)
29-
}.ifEmpty { null }
30-
}
14+
Familievern52aRuleId.FAMILIEVERN52A_RULE003.title,
15+
Severity.WARNING,
16+
) {
17+
override fun validate(context: List<KostraRecord>) =
18+
context
19+
.filterNot { mappingList.any { mapping -> it[REGION_NR_A_COL_NAME] == mapping.region } }
20+
.map {
21+
val regionList =
22+
mappingList.map { item -> item.region }.distinct().sorted()
23+
createValidationReportEntry(
24+
messageText =
25+
"Regionsnummeret som er oppgitt i recorden fins ikke i listen med gyldige regionsnumre. " +
26+
"Fant '${it[REGION_NR_A_COL_NAME]}', forventet én av : $regionList.",
27+
lineNumbers = listOf(it.lineNumber),
28+
).copy(
29+
caseworker = it[KONTOR_NR_A_COL_NAME],
30+
journalId = it[JOURNAL_NR_A_COL_NAME],
31+
)
32+
}.ifEmpty { null }
33+
}

kontroller/src/main/kotlin/no/ssb/kostra/validation/rule/famvern/famvern52a/Rule004Kontornummer.kt

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,26 @@ import no.ssb.kostra.validation.report.Severity
88
import no.ssb.kostra.validation.rule.AbstractNoArgsRule
99

1010
class Rule004Kontornummer(
11-
private val mappingList: List<FamilievernConstants.KontorFylkeRegionMapping>
11+
private val mappingList: List<FamilievernConstants.KontorFylkeRegionMapping>,
1212
) : AbstractNoArgsRule<List<KostraRecord>>(
13-
Familievern52aRuleId.FAMILIEVERN52A_RULE004.title,
14-
Severity.WARNING
15-
) {
16-
override fun validate(context: List<KostraRecord>) = context
17-
.filterNot { mappingList.any { mapping -> it[KONTOR_NR_A_COL_NAME] == mapping.kontor } }
18-
.map {
19-
val kontorList = mappingList.map { item -> item.kontor }.distinct().sorted()
13+
Familievern52aRuleId.FAMILIEVERN52A_RULE004.title,
14+
Severity.WARNING,
15+
) {
16+
override fun validate(context: List<KostraRecord>) =
17+
context
18+
.filterNot { mappingList.any { mapping -> it[KONTOR_NR_A_COL_NAME] == mapping.kontor } }
19+
.map {
20+
val kontorList =
21+
mappingList.map { item -> item.kontor }.distinct().sorted()
2022

21-
createValidationReportEntry(
22-
messageText = "Kontornummeret som er oppgitt i recorden fins ikke i listen med gyldige kontornumre. " +
23-
"Fant '${it[KONTOR_NR_A_COL_NAME]}', forventet én av : ${kontorList}.",
24-
lineNumbers = listOf(it.lineNumber)
25-
).copy(
26-
caseworker = it[KONTOR_NR_A_COL_NAME],
27-
journalId = it[JOURNAL_NR_A_COL_NAME]
28-
)
29-
}.ifEmpty { null }
30-
}
23+
createValidationReportEntry(
24+
messageText =
25+
"Kontornummeret som er oppgitt i recorden fins ikke i listen med gyldige kontornumre. " +
26+
"Fant '${it[KONTOR_NR_A_COL_NAME]}', forventet én av : $kontorList.",
27+
lineNumbers = listOf(it.lineNumber),
28+
).copy(
29+
caseworker = it[KONTOR_NR_A_COL_NAME],
30+
journalId = it[JOURNAL_NR_A_COL_NAME],
31+
)
32+
}.ifEmpty { null }
33+
}

kontroller/src/main/kotlin/no/ssb/kostra/validation/rule/famvern/famvern52a/Rule005RegionsnummerKontornummer.kt

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,27 @@ import no.ssb.kostra.validation.report.Severity
99
import no.ssb.kostra.validation.rule.AbstractNoArgsRule
1010

1111
class Rule005RegionsnummerKontornummer(
12-
private val mappingList: List<FamilievernConstants.KontorFylkeRegionMapping>
12+
private val mappingList: List<FamilievernConstants.KontorFylkeRegionMapping>,
1313
) : AbstractNoArgsRule<List<KostraRecord>>(
14-
Familievern52aRuleId.FAMILIEVERN52A_RULE005.title,
15-
Severity.WARNING
16-
) {
17-
override fun validate(context: List<KostraRecord>) = context.filterNot {
18-
mappingList.any { mapping ->
19-
it[REGION_NR_A_COL_NAME] == mapping.region
20-
&& it[KONTOR_NR_A_COL_NAME] == mapping.kontor
21-
}
22-
}.map {
23-
createValidationReportEntry(
24-
messageText = "Regionsnummer '${it[REGION_NR_A_COL_NAME]}' og "
25-
+ "kontornummer '${it[KONTOR_NR_A_COL_NAME]}' stemmer ikke overens.",
26-
lineNumbers = listOf(it.lineNumber)
27-
).copy(
28-
caseworker = it[KONTOR_NR_A_COL_NAME],
29-
journalId = it[JOURNAL_NR_A_COL_NAME]
30-
)
31-
}.ifEmpty { null }
32-
}
14+
Familievern52aRuleId.FAMILIEVERN52A_RULE005.title,
15+
Severity.WARNING,
16+
) {
17+
override fun validate(context: List<KostraRecord>) =
18+
context
19+
.filterNot {
20+
mappingList.any { mapping ->
21+
it[REGION_NR_A_COL_NAME] == mapping.region &&
22+
it[KONTOR_NR_A_COL_NAME] == mapping.kontor
23+
}
24+
}.map {
25+
createValidationReportEntry(
26+
messageText =
27+
"Regionsnummer '${it[REGION_NR_A_COL_NAME]}' og " +
28+
"kontornummer '${it[KONTOR_NR_A_COL_NAME]}' stemmer ikke overens.",
29+
lineNumbers = listOf(it.lineNumber),
30+
).copy(
31+
caseworker = it[KONTOR_NR_A_COL_NAME],
32+
journalId = it[JOURNAL_NR_A_COL_NAME],
33+
)
34+
}.ifEmpty { null }
35+
}

kontroller/src/main/kotlin/no/ssb/kostra/validation/rule/famvern/famvern52a/Rule006Dubletter.kt

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,21 @@ import no.ssb.kostra.program.KostraRecord
66
import no.ssb.kostra.validation.report.Severity
77
import no.ssb.kostra.validation.rule.AbstractNoArgsRule
88

9-
10-
class Rule006Dubletter : AbstractNoArgsRule<List<KostraRecord>>(
11-
Familievern52aRuleId.FAMILIEVERN52A_RULE006.title,
12-
Severity.WARNING
13-
) {
14-
override fun validate(context: List<KostraRecord>) = context
15-
.groupBy { it[KONTOR_NR_A_COL_NAME] to it[JOURNAL_NR_A_COL_NAME] }.filter { (_, group) -> group.size > 1 }
16-
.flatMap { (kontorJournalNummerPair, group) ->
17-
createSingleReportEntryList(
18-
"Journalnummeret er benyttet på mer enn en sak (${group.size} stk). " +
9+
class Rule006Dubletter :
10+
AbstractNoArgsRule<List<KostraRecord>>(
11+
Familievern52aRuleId.FAMILIEVERN52A_RULE006.title,
12+
Severity.WARNING,
13+
) {
14+
override fun validate(context: List<KostraRecord>) =
15+
context
16+
.groupBy { it[KONTOR_NR_A_COL_NAME] to it[JOURNAL_NR_A_COL_NAME] }
17+
.filter { (_, group) -> group.size > 1 }
18+
.flatMap { (kontorJournalNummerPair, group) ->
19+
createSingleReportEntryList(
20+
"Journalnummeret er benyttet på mer enn en sak (${group.size} stk). " +
1921
"Dubletter på kontornummer '${kontorJournalNummerPair.first}' - " +
2022
"journalnummer '${kontorJournalNummerPair.second}'.",
21-
lineNumbers = group.map { it.lineNumber }
22-
)
23-
}.ifEmpty { null }
24-
}
23+
lineNumbers = group.map { it.lineNumber },
24+
)
25+
}.ifEmpty { null }
26+
}

kontroller/src/main/kotlin/no/ssb/kostra/validation/rule/famvern/famvern52a/Rule007Henvendelsesdato.kt

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,24 @@ import no.ssb.kostra.program.KostraRecord
77
import no.ssb.kostra.validation.report.Severity
88
import no.ssb.kostra.validation.rule.AbstractNoArgsRule
99

10-
class Rule007Henvendelsesdato : AbstractNoArgsRule<List<KostraRecord>>(
11-
Familievern52aRuleId.FAMILIEVERN52A_RULE007.title,
12-
Severity.WARNING
13-
) {
14-
override fun validate(context: List<KostraRecord>) = context
15-
.filterNot { it.fieldAsLocalDate(HENV_DATO_A_COL_NAME) != null }
16-
.map {
17-
createValidationReportEntry(
18-
messageText = "Dette er ikke oppgitt dato (${it[HENV_DATO_A_COL_NAME]}) for når " +
19-
"primærklienten henvendte seg til familievernkontoret eller feltet har ugyldig format " +
20-
"(DDMMÅÅÅÅ). Feltet er obligatorisk å fylle ut.",
21-
lineNumbers = listOf(it.lineNumber)
22-
).copy(
23-
caseworker = it[KONTOR_NR_A_COL_NAME],
24-
journalId = it[JOURNAL_NR_A_COL_NAME]
25-
)
26-
}.ifEmpty { null }
27-
}
10+
class Rule007Henvendelsesdato :
11+
AbstractNoArgsRule<List<KostraRecord>>(
12+
Familievern52aRuleId.FAMILIEVERN52A_RULE007.title,
13+
Severity.WARNING,
14+
) {
15+
override fun validate(context: List<KostraRecord>) =
16+
context
17+
.filterNot { it.fieldAsLocalDate(HENV_DATO_A_COL_NAME) != null }
18+
.map {
19+
createValidationReportEntry(
20+
messageText =
21+
"Dette er ikke oppgitt dato (${it[HENV_DATO_A_COL_NAME]}) for når " +
22+
"primærklienten henvendte seg til familievernkontoret eller feltet har ugyldig format " +
23+
"(DDMMÅÅÅÅ). Feltet er obligatorisk å fylle ut.",
24+
lineNumbers = listOf(it.lineNumber),
25+
).copy(
26+
caseworker = it[KONTOR_NR_A_COL_NAME],
27+
journalId = it[JOURNAL_NR_A_COL_NAME],
28+
)
29+
}.ifEmpty { null }
30+
}

0 commit comments

Comments
 (0)