Skip to content

Commit 520705e

Browse files
authored
Merge pull request #496 from navikt/debug/indeks-privatavtale
Feilretting indeksregulering privat avtale
2 parents f07eb25 + 841758b commit 520705e

File tree

15 files changed

+135
-27
lines changed

15 files changed

+135
-27
lines changed

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/mapper/BidragsevneMapper.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ internal object BidragsevneMapper : CoreMapper() {
1717
mottattGrunnlag: BeregnGrunnlag,
1818
sjablonGrunnlag: List<GrunnlagDto>,
1919
åpenSluttperiode: Boolean,
20-
innslagKapitalInntekt: BigDecimal
20+
innslagKapitalInntekt: BigDecimal,
2121
): BidragsevnePeriodeGrunnlag {
2222
val referanseTilBP = finnReferanseTilRolle(
2323
grunnlagListe = mottattGrunnlag.grunnlagListe,

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/mapper/BpAndelUnderholdskostnadMapper.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal object BpAndelUnderholdskostnadMapper : CoreMapper() {
1515
mottattGrunnlag: BeregnGrunnlag,
1616
sjablonGrunnlag: List<GrunnlagDto>,
1717
åpenSluttperiode: Boolean,
18-
innslagKapitalInntekt: BigDecimal
18+
innslagKapitalInntekt: BigDecimal,
1919
): BpAndelUnderholdskostnadPeriodeGrunnlag = BpAndelUnderholdskostnadPeriodeGrunnlag(
2020
beregningsperiode = mottattGrunnlag.periode,
2121
underholdskostnadDelberegningPeriodeGrunnlagListe = mapUnderholdskostnad(beregnGrunnlag = mottattGrunnlag),

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/service/BeregnBarnebidragService.kt

+9-3
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class BeregnBarnebidragService : BeregnService() {
116116
val endeligResultatGrunnlagListe = (
117117
filtrerResultatGrunnlag(
118118
foreløpigResultatGrunnlagListe = foreløpigResultatGrunnlagListe,
119-
refererteReferanserListe = resultatPeriodeListe.flatMap { it.grunnlagsreferanseListe }
119+
refererteReferanserListe = resultatPeriodeListe.flatMap { it.grunnlagsreferanseListe },
120120
) + delberegningEndringSjekkGrenseResultat + delberegningEndringSjekkGrensePeriodeResultat
121121
)
122122
.distinctBy { it.referanse }
@@ -382,7 +382,13 @@ class BeregnBarnebidragService : BeregnService() {
382382
val beregnetBidragErOverMinimumsgrenseForEndring = erOverMinimumsgrenseForEndring(delberegningEndringSjekkGrenseResultat)
383383
val alleResultatBeløpErNull = erAlleResultatbeløpNull(grunnlagTilEndringSjekkGrense)
384384
val grunnlagstype =
385-
if (mottattGrunnlag.stønadstype == Stønadstype.BIDRAG18AAR) Grunnlagstype.BELØPSHISTORIKK_BIDRAG_18_ÅR else Grunnlagstype.BELØPSHISTORIKK_BIDRAG
385+
if (mottattGrunnlag.stønadstype ==
386+
Stønadstype.BIDRAG18AAR
387+
) {
388+
Grunnlagstype.BELØPSHISTORIKK_BIDRAG_18_ÅR
389+
} else {
390+
Grunnlagstype.BELØPSHISTORIKK_BIDRAG
391+
}
386392

387393
val resultatPeriodeListe = lagResultatPerioder(
388394
delberegningEndeligBidragResultat = delberegningEndeligBidragResultat.grunnlagListe,
@@ -533,7 +539,7 @@ class BeregnBarnebidragService : BeregnService() {
533539
private fun filtrerResultatGrunnlag(
534540
foreløpigResultatGrunnlagListe: List<GrunnlagDto>,
535541
refererteReferanserListe: List<String>,
536-
referanserAlleredeLagtTil: MutableSet<String> = mutableSetOf()
542+
referanserAlleredeLagtTil: MutableSet<String> = mutableSetOf(),
537543
): List<GrunnlagDto> {
538544
// Stopper hvis det ikke finnes flere refererte referanser
539545
if (refererteReferanserListe.isEmpty()) {

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/service/BeregnBidragsevneService.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ internal object BeregnBidragsevneService : BeregnService() {
4747
mottattGrunnlag = mottattGrunnlag,
4848
sjablonGrunnlag = sjablonGrunnlag,
4949
åpenSluttperiode = åpenSluttperiode,
50-
innslagKapitalInntekt = innslagKapitalinntektSjablon?.verdi ?: BigDecimal.ZERO
50+
innslagKapitalInntekt = innslagKapitalinntektSjablon?.verdi ?: BigDecimal.ZERO,
5151
)
5252

5353
// Lager liste over bruddperioder

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/service/BeregnBpAndelUnderholdskostnadService.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ internal object BeregnBpAndelUnderholdskostnadService : BeregnService() {
4747
mottattGrunnlag = mottattGrunnlag,
4848
sjablonGrunnlag = sjablonGrunnlag,
4949
åpenSluttperiode = åpenSluttperiode,
50-
innslagKapitalInntekt = innslagKapitalinntektSjablon?.verdi ?: BigDecimal.ZERO
50+
innslagKapitalInntekt = innslagKapitalinntektSjablon?.verdi ?: BigDecimal.ZERO,
5151
)
5252

5353
// Lager liste over bruddperioder

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/service/BeregnEndeligBidragService.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ internal object BeregnEndeligBidragService : BeregnService() {
7070
// Legger til delberegningsobjekter i grunnlaget
7171
val utvidetGrunnlag = mottattGrunnlag.copy(
7272
grunnlagListe =
73-
(mottattGrunnlag.grunnlagListe + delberegningNettoBarnetilleggBPResultat + delberegningNettoBarnetilleggBMResultat)
74-
.distinctBy(GrunnlagDto::referanse),
73+
(mottattGrunnlag.grunnlagListe + delberegningNettoBarnetilleggBPResultat + delberegningNettoBarnetilleggBMResultat)
74+
.distinctBy(GrunnlagDto::referanse),
7575
)
7676

7777
// Mapper ut grunnlag som skal brukes for å beregne endelig bidrag

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/service/BeregnEndringSjekkGrensePeriodeService.kt

+8-2
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,19 @@ internal object BeregnEndringSjekkGrensePeriodeService : BeregnService() {
2828

2929
// Hvis det er 18-års-bidrag skal BELØPSHISTORIKK_BIDRAG_18_ÅR benyttes
3030
val grunnlagstype =
31-
if (mottattGrunnlag.stønadstype == Stønadstype.BIDRAG18AAR) Grunnlagstype.BELØPSHISTORIKK_BIDRAG_18_ÅR else Grunnlagstype.BELØPSHISTORIKK_BIDRAG
31+
if (mottattGrunnlag.stønadstype ==
32+
Stønadstype.BIDRAG18AAR
33+
) {
34+
Grunnlagstype.BELØPSHISTORIKK_BIDRAG_18_ÅR
35+
} else {
36+
Grunnlagstype.BELØPSHISTORIKK_BIDRAG
37+
}
3238

3339
// Mapper ut grunnlag som skal brukes i beregningen
3440
val periodeGrunnlag = mapEndringSjekkGrensePeriodeGrunnlag(
3541
mottattGrunnlag = mottattGrunnlag,
3642
sjablonGrunnlag = sjablonGrunnlag,
37-
grunnlagstype = grunnlagstype
43+
grunnlagstype = grunnlagstype,
3844
)
3945

4046
// Lager liste over bruddperioder

Diff for: bidrag-beregn-barnebidrag/src/main/kotlin/no/nav/bidrag/beregn/barnebidrag/service/BeregnIndeksreguleringPrivatAvtaleService.kt

+16-6
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ import java.time.YearMonth
2727
internal object BeregnIndeksreguleringPrivatAvtaleService : BeregnService() {
2828

2929
fun delberegningPrivatAvtalePeriode(grunnlag: BeregnGrunnlag): List<GrunnlagDto> {
30-
val referanseTilBM = finnReferanseTilRolle(
30+
val referanseTilBP = finnReferanseTilRolle(
3131
grunnlagListe = grunnlag.grunnlagListe,
32-
grunnlagstype = Grunnlagstype.PERSON_BIDRAGSMOTTAKER,
32+
grunnlagstype = Grunnlagstype.PERSON_BIDRAGSPLIKTIG,
3333
)
3434

3535
val sjablonListe = mapSjablonSjablontallGrunnlag(
@@ -48,7 +48,7 @@ internal object BeregnIndeksreguleringPrivatAvtaleService : BeregnService() {
4848
avtaleInngåttDato = it.innhold.avtaleInngåttDato,
4949
skalIndeksreguleres = it.innhold.skalIndeksreguleres,
5050
)
51-
}.first()
51+
}.firstOrNull()
5252

5353
val privatAvtalePeriodeListe = grunnlag.grunnlagListe
5454
.filtrerOgKonverterBasertPåEgenReferanse<PrivatAvtalePeriodeGrunnlag>(
@@ -63,11 +63,21 @@ internal object BeregnIndeksreguleringPrivatAvtaleService : BeregnService() {
6363
)
6464
}.sortedBy { it.periode.fom }
6565

66+
// Kast exception om privatAvtalePeriodeListe er tom
67+
if (privatAvtale == null || privatAvtalePeriodeListe.isEmpty()) {
68+
throw IllegalArgumentException("Ingen privat avtale eller perioder funnet")
69+
}
70+
71+
val periode = ÅrMånedsperiode(
72+
fom = privatAvtalePeriodeListe.first().periode.fom,
73+
til = null,
74+
)
75+
6676
// Lager liste over bruddperioder
6777
val beregningsperiodeListe = lagBruddperiodeListe(
6878
privatAvtale = privatAvtale,
6979
privatAvtaleListe = privatAvtalePeriodeListe,
70-
beregningsperiode = grunnlag.periode,
80+
beregningsperiode = periode,
7181
)
7282

7383
val resultatliste = mutableListOf<GrunnlagDto>()
@@ -79,7 +89,7 @@ internal object BeregnIndeksreguleringPrivatAvtaleService : BeregnService() {
7989
val grunnlagBeregning = lagIndeksreguleringBeregningGrunnlag(
8090
beregningsperiode = it.periode,
8191
periodeSkalIndeksreguleres = it.periodeSkalIndeksreguleres,
82-
referanseTilRolle = referanseTilBM,
92+
referanseTilRolle = referanseTilBP,
8393
søknadsbarnReferanse = grunnlag.søknadsbarnReferanse,
8494
privatAvtale = privatAvtale,
8595
privatAvtalePeriodeListe = privatAvtalePeriodeListe,
@@ -90,7 +100,7 @@ internal object BeregnIndeksreguleringPrivatAvtaleService : BeregnService() {
90100

91101
val resultat = beregn(grunnlagBeregning)
92102

93-
if (privatAvtale.skalIndeksreguleres) {
103+
if (it.periodeSkalIndeksreguleres) {
94104
beløpFraForrigeDelberegning = resultat.innholdTilObjekt<DelberegningPrivatAvtalePeriode>().beløp
95105
referanseForrigeDelberegning = resultat.referanse
96106
}

Diff for: bidrag-beregn-barnebidrag/src/test/kotlin/no/nav/bidrag/beregn/barnebidrag/api/BeregnBarnebidragApiTest.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -703,7 +703,7 @@ internal class BeregnBarnebidragApiTest : FellesApiTest() {
703703
val alleReferanser = hentAlleReferanser(barnebidragResultatGrunnlagListe)
704704
val alleRefererteReferanser = hentAlleRefererteReferanser(
705705
resultatGrunnlagListe = barnebidragResultatGrunnlagListe,
706-
barnebidragResultat = barnebidragResultat
706+
barnebidragResultat = barnebidragResultat,
707707
)
708708

709709
// Fjerner referanser som er "frittstående" (refereres ikke av noe objekt)
@@ -727,8 +727,8 @@ internal class BeregnBarnebidragApiTest : FellesApiTest() {
727727
assertThat(barnebidragResultat.beregnetBarnebidragPeriodeListe[0].periode).isEqualTo(
728728
ÅrMånedsperiode(
729729
YearMonth.parse("2020-08"),
730-
null
731-
)
730+
null,
731+
),
732732
)
733733
},
734734
{ assertThat(barnebidragResultat.beregnetBarnebidragPeriodeListe[0].resultat.beløp).isNull() },
@@ -766,13 +766,13 @@ internal class BeregnBarnebidragApiTest : FellesApiTest() {
766766

767767
// Referanser
768768
{ assertThat(alleReferanser).containsAll(alleRefererteReferanserFiltrert) },
769-
{ assertThat(alleRefererteReferanser).containsAll(alleReferanserFiltrert) }
769+
{ assertThat(alleRefererteReferanser).containsAll(alleReferanserFiltrert) },
770770
)
771771
}
772772

773+
// Sluttperiode settes til måneden etter barnet fyller 18 år
773774
@Test
774775
@DisplayName("Barnebidrag - eksempel 6A - ordinært bidrag - kostnadsberegnet hvor barnet blir 18 år i beregningsperioden")
775-
// Sluttperiode settes til måneden etter barnet fyller 18 år
776776
fun testBarnebidrag_Eksempel06A() {
777777
filnavn = "src/test/resources/testfiler/barnebidrag/barnebidrag_eksempel6A.json"
778778

@@ -1025,7 +1025,7 @@ internal class BeregnBarnebidragApiTest : FellesApiTest() {
10251025
val alleReferanser = hentAlleReferanser(barnebidragResultatGrunnlagListe)
10261026
val alleRefererteReferanser = hentAlleRefererteReferanser(
10271027
resultatGrunnlagListe = barnebidragResultatGrunnlagListe,
1028-
barnebidragResultat = barnebidragResultat
1028+
barnebidragResultat = barnebidragResultat,
10291029
)
10301030

10311031
// Fjerner referanser som er "frittstående" (refereres ikke av noe objekt)

Diff for: bidrag-beregn-barnebidrag/src/test/kotlin/no/nav/bidrag/beregn/barnebidrag/api/BeregnIndeksregulerPrivatAvtaleApiTest.kt

+20
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,26 @@ internal class BeregnIndeksregulerPrivatAvtaleApiTest {
111111
)
112112
}
113113

114+
@Test
115+
@DisplayName("Privat avtale - med indeksregulering Test periode hentes fra privatavtaleperioder")
116+
fun testIndeksreguleringPrivatAvtaleMedIndeksreguleringPerioderFraPrivatAvtalePerioder() {
117+
filnavn = "src/test/resources/testfiler/indeksreguleringprivatavtale/privat_avtale_med_indeksregulering_periode.json"
118+
val resultat = utførBeregningerOgEvaluerResultatIndeksreguleringPrivatAvtale()
119+
120+
assertAll(
121+
{ assertThat(resultat).hasSize(2) },
122+
123+
// Resultat
124+
{ assertThat(resultat[0].periode).isEqualTo(ÅrMånedsperiode("2023-06", "2024-07")) },
125+
{ assertThat(resultat[0].beløp.compareTo(BigDecimal.valueOf(2000.00))).isEqualTo(0) },
126+
{ assertThat(resultat[0].indeksreguleringFaktor).isNull() },
127+
128+
{ assertThat(resultat[1].periode).isEqualTo(ÅrMånedsperiode(YearMonth.parse("2024-07"), null)) },
129+
{ assertThat(resultat[1].beløp.compareTo(BigDecimal.valueOf(2090.00))).isEqualTo(0) },
130+
{ assertThat(resultat[1].indeksreguleringFaktor?.compareTo(BigDecimal.valueOf(0.0470))).isEqualTo(0) },
131+
)
132+
}
133+
114134
private fun utførBeregningerOgEvaluerResultatIndeksreguleringPrivatAvtale(): List<DelberegningPrivatAvtalePeriode> {
115135
val request = lesFilOgByggRequest(filnavn)
116136
val resultat = api.beregnIndeksreguleringPrivatAvtale(request)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"periode" : {
3+
"fom" : "2024-07",
4+
"til" : "2025-06"
5+
},
6+
"opphørSistePeriode" : true,
7+
"stønadstype" : "BIDRAG",
8+
"søknadsbarnReferanse" : "person_PERSON_SØKNADSBARN_20140913_358",
9+
"grunnlagListe" : [ {
10+
"referanse" : "person_PERSON_BIDRAGSMOTTAKER_19740225_356",
11+
"type" : "PERSON_BIDRAGSMOTTAKER",
12+
"innhold" : {
13+
"ident" : "25427446711",
14+
"navn" : null,
15+
"fødselsdato" : "1974-02-25"
16+
},
17+
"grunnlagsreferanseListe" : [ ],
18+
"gjelderReferanse" : null,
19+
"gjelderBarnReferanse" : null
20+
}, {
21+
"referanse" : "person_PERSON_BIDRAGSPLIKTIG_19791125_357",
22+
"type" : "PERSON_BIDRAGSPLIKTIG",
23+
"innhold" : {
24+
"ident" : "25517932860",
25+
"navn" : null,
26+
"fødselsdato" : "1979-11-25"
27+
},
28+
"grunnlagsreferanseListe" : [ ],
29+
"gjelderReferanse" : null,
30+
"gjelderBarnReferanse" : null
31+
}, {
32+
"referanse" : "person_PERSON_SØKNADSBARN_20140913_358",
33+
"type" : "PERSON_SØKNADSBARN",
34+
"innhold" : {
35+
"ident" : "13491451224",
36+
"navn" : null,
37+
"fødselsdato" : "2014-09-13"
38+
},
39+
"grunnlagsreferanseListe" : [ ],
40+
"gjelderReferanse" : null,
41+
"gjelderBarnReferanse" : null
42+
}, {
43+
"referanse" : "PRIVAT_AVTALE_PERIODE_GRUNNLAG_person_PERSON_SØKNADSBARN_20140913_358__20230601",
44+
"type" : "PRIVAT_AVTALE_PERIODE_GRUNNLAG",
45+
"innhold" : {
46+
"periode" : {
47+
"fom" : "2023-06",
48+
"til" : null
49+
},
50+
"beløp" : 2000,
51+
"manueltRegistrert" : true
52+
},
53+
"grunnlagsreferanseListe" : [ ],
54+
"gjelderReferanse" : "person_PERSON_BIDRAGSPLIKTIG_19791125_357",
55+
"gjelderBarnReferanse" : "person_PERSON_SØKNADSBARN_20140913_358"
56+
}, {
57+
"referanse" : "PRIVAT_AVTALE_GRUNNLAG_person_PERSON_SØKNADSBARN_20140913_358",
58+
"type" : "PRIVAT_AVTALE_GRUNNLAG",
59+
"innhold" : {
60+
"avtaleInngåttDato" : "2023-01-01",
61+
"skalIndeksreguleres" : true
62+
},
63+
"grunnlagsreferanseListe" : [ ],
64+
"gjelderReferanse" : "person_PERSON_BIDRAGSPLIKTIG_19791125_357",
65+
"gjelderBarnReferanse" : "person_PERSON_SØKNADSBARN_20140913_358"
66+
} ]
67+
}

Diff for: bidrag-beregn-core/src/main/kotlin/no/nav/bidrag/beregn/core/service/BeregnService.kt

-1
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ abstract class BeregnService {
264264
return bruddPeriodeListe
265265
}
266266

267-
268267
fun mapDelberegningResultatGrunnlag(
269268
grunnlagReferanseListe: List<String>,
270269
mottattGrunnlag: BeregnGrunnlag,

Diff for: bidrag-beregn-særbidrag/src/main/kotlin/no/nav/bidrag/beregn/særbidrag/service/BeregnSærbidragService.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ internal class BeregnSærbidragService(
193193
beregnGrunnlag = beregnGrunnlag,
194194
sjablontallMap = sjablontallMap,
195195
sjablonListe = sjablonListe,
196-
innslagKapitalinntekt = innslagKapitalinntektSjablon?.verdi ?: BigDecimal.ZERO
196+
innslagKapitalinntekt = innslagKapitalinntektSjablon?.verdi ?: BigDecimal.ZERO,
197197
)
198198

199199
val bpAndelSærbidragResultatFraCore = beregnBPAndelSærbidrag(bpAndelSærbidragGrunnlagTilCore)

Diff for: bidrag-beregn-særbidrag/src/main/kotlin/no/nav/bidrag/beregn/særbidrag/service/mapper/BPAndelSærbidragCoreMapper.kt

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ internal object BPAndelSærbidragCoreMapper : CoreMapper() {
1919
sjablonListe: SjablonListe,
2020
innslagKapitalinntekt: BigDecimal,
2121
): BeregnBPsAndelSærbidragGrunnlagCore {
22-
2322
// Mapper grunnlagstyper til input for core
2423
val inntektBPPeriodeCoreListe =
2524
mapInntekt(

Diff for: bidrag-beregn-særbidrag/src/main/kotlin/no/nav/bidrag/beregn/særbidrag/service/mapper/BidragsevneCoreMapper.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ internal object BidragsevneCoreMapper : CoreMapper() {
2626
mapInntekt(
2727
beregnGrunnlag = beregnGrunnlag,
2828
referanseTilRolle = referanseTilRolle,
29-
innslagKapitalinntektSjablonverdi = finnInnslagKapitalinntektFraSjablontallListe(sjablonListe.sjablonSjablontallResponse)?.verdi ?: BigDecimal.ZERO,
29+
innslagKapitalinntektSjablonverdi =
30+
finnInnslagKapitalinntektFraSjablontallListe(sjablonListe.sjablonSjablontallResponse)?.verdi ?: BigDecimal.ZERO,
3031
erSærbidrag = true,
3132
)
3233

0 commit comments

Comments
 (0)