Skip to content

Commit 7f861fb

Browse files
finner første dato for endring
1 parent 39ac7de commit 7f861fb

File tree

2 files changed

+105
-0
lines changed

2 files changed

+105
-0
lines changed

sykepenger-model/src/main/kotlin/no/nav/helse/person/infotrygdhistorikk/InfotrygdhistorikkElement.kt

+12
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,18 @@ class InfotrygdhistorikkElement private constructor(
132132
other.oppdatert = this.oppdatert
133133
}
134134

135+
internal fun tidligsteEndringMellom(other: InfotrygdhistorikkElement?): LocalDate? {
136+
if (other == null || other.perioder.isEmpty()) return this.perioder.firstOrNull()?.periode?.start
137+
if (this.perioder.isEmpty()) return other.perioder.first().periode.start
138+
// tidligste dato som ikke er i begge lister
139+
val førsteUlikePeriode = this.førsteUlikePeriode(other) ?: other.førsteUlikePeriode(this)
140+
return førsteUlikePeriode?.periode?.start
141+
}
142+
143+
private fun førsteUlikePeriode(other: InfotrygdhistorikkElement): Infotrygdperiode? {
144+
return this.perioder.firstOrNull { other.perioder.none { otherIt -> it.funksjoneltLik(otherIt) } }
145+
}
146+
135147
internal fun erEldreEnn(utbetaling: Utbetaling): Boolean {
136148
return utbetaling.erNyereEnn(this.tidsstempel)
137149
}

sykepenger-model/src/test/kotlin/no/nav/helse/person/infotrygdhistorikk/InfotrygdhistorikkElementTest.kt

+93
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import no.nav.helse.økonomi.Prosentdel.Companion.prosent
2929
import org.junit.jupiter.api.Assertions.assertEquals
3030
import org.junit.jupiter.api.Assertions.assertFalse
3131
import org.junit.jupiter.api.Assertions.assertNotEquals
32+
import org.junit.jupiter.api.Assertions.assertNull
3233
import org.junit.jupiter.api.Assertions.assertTrue
3334
import org.junit.jupiter.api.BeforeEach
3435
import org.junit.jupiter.api.Test
@@ -87,6 +88,98 @@ internal class InfotrygdhistorikkElementTest {
8788
assertTrue(other.funksjoneltLik(one))
8889
}
8990

91+
@Test
92+
fun `tidligste endring mellom - forrige og nytt element er tomt`() {
93+
val eksisterende = nyttHistorikkelement(perioder = emptyList())
94+
val nyttElement = nyttHistorikkelement(perioder = emptyList())
95+
assertNull(nyttElement.tidligsteEndringMellom(eksisterende))
96+
}
97+
98+
@Test
99+
fun `tidligste endring mellom - nytt element er likt`() {
100+
var perioder = listOf(
101+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
102+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
103+
)
104+
val eksisterende = nyttHistorikkelement(perioder = perioder)
105+
val nyttElement = nyttHistorikkelement(perioder = perioder)
106+
assertNull(nyttElement.tidligsteEndringMellom(eksisterende))
107+
}
108+
109+
@Test
110+
fun `tidligste endring mellom - nytt element er tomt`() {
111+
val eksisterende = nyttHistorikkelement(
112+
perioder = listOf(
113+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
114+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
115+
)
116+
)
117+
val nyttElement = nyttHistorikkelement(perioder = emptyList())
118+
assertEquals(3.januar, nyttElement.tidligsteEndringMellom(eksisterende))
119+
}
120+
121+
@Test
122+
fun `tidligste endring mellom - eksisterende element er tomt`() {
123+
val eksisterende = nyttHistorikkelement(perioder = emptyList())
124+
val nyttElement = nyttHistorikkelement(perioder = listOf(
125+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
126+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
127+
))
128+
assertEquals(3.januar, nyttElement.tidligsteEndringMellom(eksisterende))
129+
}
130+
131+
@Test
132+
fun `tidligste endring mellom - eksisterende element fjerner periode i starten`() {
133+
val eksisterende = nyttHistorikkelement(perioder = listOf(
134+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
135+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
136+
))
137+
val nyttElement = nyttHistorikkelement(perioder = listOf(
138+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig)
139+
))
140+
assertEquals(3.januar, nyttElement.tidligsteEndringMellom(eksisterende))
141+
}
142+
143+
@Test
144+
fun `tidligste endring mellom - eksisterende element legger til periode i starten`() {
145+
val eksisterende = nyttHistorikkelement(perioder = listOf(
146+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
147+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
148+
))
149+
val nyttElement = nyttHistorikkelement(perioder = listOf(
150+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
151+
ArbeidsgiverUtbetalingsperiode("orgnr", 1.januar, 1.januar, 100.prosent, 1000.daglig)
152+
))
153+
assertEquals(1.januar, nyttElement.tidligsteEndringMellom(eksisterende))
154+
}
155+
156+
@Test
157+
fun `tidligste endring mellom - eksisterende element legger til periode i slutten`() {
158+
val eksisterende = nyttHistorikkelement(perioder = listOf(
159+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
160+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
161+
))
162+
val nyttElement = nyttHistorikkelement(perioder = listOf(
163+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
164+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig),
165+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.februar, 3.februar, 100.prosent, 1000.daglig)
166+
))
167+
assertEquals(3.februar, nyttElement.tidligsteEndringMellom(eksisterende))
168+
}
169+
170+
@Test
171+
fun `tidligste endring mellom - eksisterende element endrer personutbetaling til arbeidsgiverutbetaling`() {
172+
val eksisterende = nyttHistorikkelement(perioder = listOf(
173+
PersonUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
174+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
175+
))
176+
val nyttElement = nyttHistorikkelement(perioder = listOf(
177+
ArbeidsgiverUtbetalingsperiode("orgnr", 10.januar, 20.januar, 100.prosent, 1000.daglig),
178+
ArbeidsgiverUtbetalingsperiode("orgnr", 3.januar, 3.januar, 100.prosent, 1000.daglig)
179+
))
180+
assertEquals(10.januar, nyttElement.tidligsteEndringMellom(eksisterende))
181+
}
182+
90183
@Test
91184
fun `person- og arbeidsgiverutbetaling på samme dag`() {
92185
val element1 = nyttHistorikkelement(

0 commit comments

Comments
 (0)