Skip to content

Commit 6c86087

Browse files
authored
Feilfiks opphørsdato periodisering boforhold (#475)
1 parent bfcc0c3 commit 6c86087

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed

bidrag-beregn-core/src/main/kotlin/no/nav/bidrag/beregn/core/boforhold/BeregnBoforholdService.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import no.nav.bidrag.beregn.core.dto.PeriodeCore
66
import no.nav.bidrag.beregn.core.dto.VoksneIHusstandenPeriodeCore
77
import no.nav.bidrag.beregn.core.mapping.tilGrunnlag
88
import no.nav.bidrag.beregn.core.service.mapper.CoreMapper
9+
import no.nav.bidrag.beregn.core.util.justerPeriodeTilOpphørsdato
910
import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype
1011
import no.nav.bidrag.domene.enums.person.Bostatuskode
1112
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
@@ -141,13 +142,12 @@ internal class BeregnBoforholdService : CoreMapper() {
141142
fun justerPerioderForOpphørsdato(periodeliste: List<PeriodeCore>, opphørsdato: LocalDate?): List<PeriodeCore> {
142143
if (opphørsdato == null) return periodeliste
143144
// Antar at opphørsdato er måneden perioden skal opphøre
144-
val justerOpphørsdato = opphørsdato.withDayOfMonth(1).minusDays(1)
145145
return periodeliste.filter {
146146
it.datoFom.isBefore(opphørsdato)
147147
}
148148
.map { grunnlag ->
149-
if (grunnlag.datoTil == null || grunnlag.datoTil.isAfter(justerOpphørsdato)) {
150-
grunnlag.copy(datoTil = justerOpphørsdato)
149+
if (grunnlag.datoTil == null || grunnlag.datoTil.isAfter(opphørsdato)) {
150+
grunnlag.copy(datoTil = justerPeriodeTilOpphørsdato(opphørsdato))
151151
} else {
152152
grunnlag
153153
}

bidrag-beregn-core/src/main/kotlin/no/nav/bidrag/beregn/core/inntekt/service/BeregnInntektService.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.fasterxml.jackson.module.kotlin.registerKotlinModule
66
import no.nav.bidrag.beregn.core.bo.Periode
77
import no.nav.bidrag.beregn.core.util.InntektUtil.erKapitalinntekt
88
import no.nav.bidrag.beregn.core.util.InntektUtil.justerKapitalinntekt
9+
import no.nav.bidrag.beregn.core.util.justerPeriodeTilOpphørsdato
910
import no.nav.bidrag.commons.service.sjablon.SjablonProvider
1011
import no.nav.bidrag.commons.util.secureLogger
1112
import no.nav.bidrag.domene.enums.inntekt.Inntektstype
@@ -159,7 +160,7 @@ internal class BeregnInntektService {
159160
}
160161
.map { grunnlag ->
161162
if (grunnlag.periode.til == null || grunnlag.periode.til!!.isAfter(periode.til)) {
162-
grunnlag.copy(periode = grunnlag.periode.copy(til = periode.til))
163+
grunnlag.copy(periode = grunnlag.periode.copy(til = justerPeriodeTilOpphørsdato(periode.til)))
163164
} else {
164165
grunnlag
165166
}

bidrag-beregn-core/src/main/kotlin/no/nav/bidrag/beregn/core/util/PeriodeUtil.kt

+21
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import no.nav.bidrag.beregn.core.bo.Avvik
44
import no.nav.bidrag.beregn.core.bo.Periode
55
import no.nav.bidrag.domene.enums.beregning.Avvikstype
66
import java.time.LocalDate
7+
import java.time.YearMonth
78

89
object PeriodeUtil {
910
// Validerer at datoer er gyldige
@@ -122,3 +123,23 @@ object PeriodeUtil {
122123
return avvikListe
123124
}
124125
}
126+
127+
val sluttenAvForrigeMåned get() = LocalDate.now().sluttenAvForrigeMåned
128+
129+
val LocalDate?.sluttenAvForrigeMåned get() = this?.withDayOfMonth(1)?.minusDays(1)
130+
131+
// Antar opphørsdato er til dato og ikke til-og.med (starten av måneden det opphøres)
132+
fun justerPeriodeTilOpphørsdato(oppphørsdato: LocalDate?) = if (oppphørsdato == null ||
133+
oppphørsdato.withDayOfMonth(1).minusDays(1).isAfter(sluttenAvForrigeMåned)
134+
) {
135+
null
136+
} else {
137+
oppphørsdato.sluttenAvForrigeMåned
138+
}
139+
fun justerPeriodeTilOpphørsdato(oppphørsdato: YearMonth?) = if (oppphørsdato == null ||
140+
oppphørsdato.isAfter(YearMonth.from(sluttenAvForrigeMåned))
141+
) {
142+
null
143+
} else {
144+
oppphørsdato
145+
}

bidrag-boforhold/src/main/kotlin/no/nav/bidrag/boforhold/utils/BoforholdPeriodeUtils.kt

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
package no.nav.bidrag.boforhold.utils
22

3+
import no.nav.bidrag.beregn.core.util.justerPeriodeTilOpphørsdato
34
import no.nav.bidrag.boforhold.dto.BoforholdResponseV2
45
import no.nav.bidrag.boforhold.dto.Bostatus
56
import java.time.LocalDate
67

78
fun List<BoforholdResponseV2>.justerBoforholdPerioderForOpphørsdato(opphørsdato: LocalDate?): List<BoforholdResponseV2> {
89
if (opphørsdato == null) return this
910
// Antar at opphørsdato er måneden perioden skal opphøre
10-
val justerOpphørsdato = opphørsdato.withDayOfMonth(1).minusDays(1)
1111
return filter {
1212
it.periodeFom.isBefore(opphørsdato)
1313
}
1414
.map { grunnlag ->
15-
if (grunnlag.periodeTom == null || grunnlag.periodeTom.isAfter(justerOpphørsdato)) {
16-
grunnlag.copy(periodeTom = justerOpphørsdato)
15+
if (grunnlag.periodeTom == null || grunnlag.periodeTom.isAfter(opphørsdato)) {
16+
grunnlag.copy(periodeTom = justerPeriodeTilOpphørsdato(opphørsdato))
1717
} else {
1818
grunnlag
1919
}
@@ -22,13 +22,12 @@ fun List<BoforholdResponseV2>.justerBoforholdPerioderForOpphørsdato(opphørsdat
2222
fun List<Bostatus>.justerBostatusPerioderForOpphørsdato(opphørsdato: LocalDate?): List<Bostatus> {
2323
if (opphørsdato == null) return this
2424
// Antar at opphørsdato er måneden perioden skal opphøre
25-
val justerOpphørsdato = opphørsdato.withDayOfMonth(1).minusDays(1)
2625
return filter {
27-
it.periodeFom!!.isBefore(justerOpphørsdato)
26+
it.periodeFom!!.isBefore(opphørsdato)
2827
}
2928
.map { grunnlag ->
30-
if (grunnlag.periodeTom == null || grunnlag.periodeTom.isAfter(justerOpphørsdato)) {
31-
grunnlag.copy(periodeTom = justerOpphørsdato)
29+
if (grunnlag.periodeTom == null || grunnlag.periodeTom.isAfter(opphørsdato)) {
30+
grunnlag.copy(periodeTom = justerPeriodeTilOpphørsdato(opphørsdato))
3231
} else {
3332
grunnlag
3433
}

0 commit comments

Comments
 (0)