Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 11 additions & 14 deletions src/main/kotlin/no/nav/helse/flex/util/VedtakUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,21 @@ fun hentDagerNy(
}

else -> {
val grad =
if (utbetalingsdagen.dato.dayOfWeek in helg) {
0.0
} else if (utbetalingsdagen.getBeløp(erSykmeldt) == 0) {
0.0
} else {
utbetalingsdagen.sykdomsgrad?.toDouble() ?: 0.0
}
dag.copy(
begrunnelser = utbetalingsdagen.begrunnelser,
dagtype =
when (utbetalingsdagen.type) {
"NavDag" -> {
when {
(utbetalingsdagen.sykdomsgrad ?: 0) < 100 -> "NavDagDelvisSyk"
grad < 100 -> "NavDagDelvisSyk"
else -> "NavDagSyk"
}
}
Expand All @@ -114,7 +122,7 @@ fun hentDagerNy(
utbetalingsdagen.getBeløp(erSykmeldt) == 0 -> "ArbeidsgiverperiodeDag"

// Vises som gradert syk
(utbetalingsdagen.sykdomsgrad ?: 0) < 100 -> "NavDagDelvisSyk"
grad < 100 -> "NavDagDelvisSyk"

// Vises som 100% syk
else -> "NavDagSyk"
Expand All @@ -126,18 +134,7 @@ fun hentDagerNy(
}
},
belop = if (utbetalingsdagen.dato.dayOfWeek in helg) 0 else utbetalingsdagen.getBeløp(erSykmeldt),
grad =
if (utbetalingsdagen.dato.dayOfWeek in
helg
) {
0.0
} else if (utbetalingsdagen.getBeløp(erSykmeldt) ==
0
) {
0.0
} else {
utbetalingsdagen.sykdomsgrad?.toDouble() ?: 0.0
},
grad = grad,
)
}
}
Expand Down
171 changes: 170 additions & 1 deletion src/test/kotlin/no/nav/helse/flex/service/HentDagerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -859,7 +859,7 @@ class HentDagerTest {
}

@Test
fun `Både brukerutbetaling og arbeidsgiverrefusjon i arbeidsgiverperiode2`() {
fun `Både brukerutbetaling og arbeidsgiverrefusjon med mange utbetalingsperioder og ferie`() {
val dato = LocalDate.of(2025, 11, 1)

val utbetalingsdager =
Expand Down Expand Up @@ -1230,4 +1230,173 @@ class HentDagerTest {
erSykmeldt = true,
).shouldContainExactly(forventetSykmeldtDagliste)
}

@Test
fun `NavDagDelvisSyk basert på at dagen er nullet ut`() {
val dato = LocalDate.of(2025, 11, 8)

val utbetalingsdager =
listOf(
RSUtbetalingdag(
dato.plusDays(0),
"NavHelgDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(1),
"NavHelgDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(2),
"NavDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(3),
"NavDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(4),
"AvvistDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(5),
"AvvistDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(6),
"AvvistDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(7),
"NavHelgDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(8),
"NavHelgDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
)

val forventetSykmeldtDagliste =
listOf(
RSDag(dato.plusDays(0), 0, 0.0, "NavHelgDag", emptyList()),
RSDag(dato.plusDays(1), 0, 0.0, "NavHelgDag", emptyList()),
RSDag(dato.plusDays(2), 0, 0.0, "NavDagDelvisSyk", emptyList()),
RSDag(dato.plusDays(3), 0, 0.0, "NavDagDelvisSyk", emptyList()),
RSDag(dato.plusDays(4), 0, 0.0, "AvvistDag", emptyList()),
RSDag(dato.plusDays(5), 0, 0.0, "AvvistDag", emptyList()),
RSDag(dato.plusDays(6), 0, 0.0, "AvvistDag", emptyList()),
RSDag(dato.plusDays(7), 0, 0.0, "NavHelgDag", emptyList()),
RSDag(dato.plusDays(8), 0, 0.0, "NavHelgDag", emptyList()),
)

val hentDager =
hentDager(
fom = dato.plusDays(0),
tom = dato.plusDays(8),
oppdragDto =
RSOppdrag(
utbetalingslinjer = listOf(),
),
utbetalingsdager = utbetalingsdager,
)
hentDager.shouldContainExactly(forventetSykmeldtDagliste)

hentDagerNy(
fom = dato.plusDays(0),
tom = dato.plusDays(8),
utbetalingsdager = utbetalingsdager,
erSykmeldt = true,
).shouldContainExactly(forventetSykmeldtDagliste)
}

@Test
fun `Helg på slutten av arbeidsgiverperiode`() {
val dato = LocalDate.of(2025, 12, 4)

val utbetalingsdager =
listOf(
RSUtbetalingdag(
dato.plusDays(0),
"ArbeidsgiverperiodeDag",
emptyList(),
beløpTilArbeidsgiver = 2018,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(1),
"ArbeidsgiverperiodeDag",
emptyList(),
beløpTilArbeidsgiver = 2018,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(2),
"ArbeidsgiverperiodeDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
RSUtbetalingdag(
dato.plusDays(3),
"ArbeidsgiverperiodeDag",
emptyList(),
beløpTilArbeidsgiver = 0,
beløpTilSykmeldt = 0,
sykdomsgrad = 100,
),
)

val forventetArbeidsgiverDagliste =
listOf(
RSDag(dato.plusDays(0), 2018, 100.0, "NavDagSyk", emptyList()),
RSDag(dato.plusDays(1), 2018, 100.0, "NavDagSyk", emptyList()),
RSDag(dato.plusDays(2), 0, 0.0, "ArbeidsgiverperiodeDag", emptyList()),
RSDag(dato.plusDays(3), 0, 0.0, "ArbeidsgiverperiodeDag", emptyList()),
)

hentDagerNy(
fom = dato.plusDays(0),
tom = dato.plusDays(3),
utbetalingsdager = utbetalingsdager,
erSykmeldt = false,
).shouldContainExactly(forventetArbeidsgiverDagliste)
}
}