Skip to content

Commit bf00926

Browse files
steinsheolebaba
andcommitted
Beregn grad først slik det var før og legg til test av nytt helgecase med helg på slutten av utbetalingsperiode
Co-authored-by: Ole Bastian Løchen <ole.bastian.kolstad.lochen@nav.no>
1 parent c61aa65 commit bf00926

File tree

2 files changed

+181
-15
lines changed

2 files changed

+181
-15
lines changed

src/main/kotlin/no/nav/helse/flex/util/VedtakUtils.kt

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,21 @@ fun hentDagerNy(
9494
}
9595

9696
else -> {
97+
val grad =
98+
if (utbetalingsdagen.dato.dayOfWeek in helg) {
99+
0.0
100+
} else if (utbetalingsdagen.getBeløp(erSykmeldt) == 0) {
101+
0.0
102+
} else {
103+
utbetalingsdagen.sykdomsgrad?.toDouble() ?: 0.0
104+
}
97105
dag.copy(
98106
begrunnelser = utbetalingsdagen.begrunnelser,
99107
dagtype =
100108
when (utbetalingsdagen.type) {
101109
"NavDag" -> {
102110
when {
103-
(utbetalingsdagen.sykdomsgrad ?: 0) < 100 -> "NavDagDelvisSyk"
111+
grad < 100 -> "NavDagDelvisSyk"
104112
else -> "NavDagSyk"
105113
}
106114
}
@@ -114,7 +122,7 @@ fun hentDagerNy(
114122
utbetalingsdagen.getBeløp(erSykmeldt) == 0 -> "ArbeidsgiverperiodeDag"
115123

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

119127
// Vises som 100% syk
120128
else -> "NavDagSyk"
@@ -126,18 +134,7 @@ fun hentDagerNy(
126134
}
127135
},
128136
belop = if (utbetalingsdagen.dato.dayOfWeek in helg) 0 else utbetalingsdagen.getBeløp(erSykmeldt),
129-
grad =
130-
if (utbetalingsdagen.dato.dayOfWeek in
131-
helg
132-
) {
133-
0.0
134-
} else if (utbetalingsdagen.getBeløp(erSykmeldt) ==
135-
0
136-
) {
137-
0.0
138-
} else {
139-
utbetalingsdagen.sykdomsgrad?.toDouble() ?: 0.0
140-
},
137+
grad = grad,
141138
)
142139
}
143140
}

src/test/kotlin/no/nav/helse/flex/service/HentDagerTest.kt

Lines changed: 170 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ class HentDagerTest {
859859
}
860860

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

865865
val utbetalingsdager =
@@ -1230,4 +1230,173 @@ class HentDagerTest {
12301230
erSykmeldt = true,
12311231
).shouldContainExactly(forventetSykmeldtDagliste)
12321232
}
1233+
1234+
@Test
1235+
fun `NavDagDelvisSyk basert på at dagen er nullet ut`() {
1236+
val dato = LocalDate.of(2025, 11, 8)
1237+
1238+
val utbetalingsdager =
1239+
listOf(
1240+
RSUtbetalingdag(
1241+
dato.plusDays(0),
1242+
"NavHelgDag",
1243+
emptyList(),
1244+
beløpTilArbeidsgiver = 0,
1245+
beløpTilSykmeldt = 0,
1246+
sykdomsgrad = 100,
1247+
),
1248+
RSUtbetalingdag(
1249+
dato.plusDays(1),
1250+
"NavHelgDag",
1251+
emptyList(),
1252+
beløpTilArbeidsgiver = 0,
1253+
beløpTilSykmeldt = 0,
1254+
sykdomsgrad = 100,
1255+
),
1256+
RSUtbetalingdag(
1257+
dato.plusDays(2),
1258+
"NavDag",
1259+
emptyList(),
1260+
beløpTilArbeidsgiver = 0,
1261+
beløpTilSykmeldt = 0,
1262+
sykdomsgrad = 100,
1263+
),
1264+
RSUtbetalingdag(
1265+
dato.plusDays(3),
1266+
"NavDag",
1267+
emptyList(),
1268+
beløpTilArbeidsgiver = 0,
1269+
beløpTilSykmeldt = 0,
1270+
sykdomsgrad = 100,
1271+
),
1272+
RSUtbetalingdag(
1273+
dato.plusDays(4),
1274+
"AvvistDag",
1275+
emptyList(),
1276+
beløpTilArbeidsgiver = 0,
1277+
beløpTilSykmeldt = 0,
1278+
sykdomsgrad = 100,
1279+
),
1280+
RSUtbetalingdag(
1281+
dato.plusDays(5),
1282+
"AvvistDag",
1283+
emptyList(),
1284+
beløpTilArbeidsgiver = 0,
1285+
beløpTilSykmeldt = 0,
1286+
sykdomsgrad = 100,
1287+
),
1288+
RSUtbetalingdag(
1289+
dato.plusDays(6),
1290+
"AvvistDag",
1291+
emptyList(),
1292+
beløpTilArbeidsgiver = 0,
1293+
beløpTilSykmeldt = 0,
1294+
sykdomsgrad = 100,
1295+
),
1296+
RSUtbetalingdag(
1297+
dato.plusDays(7),
1298+
"NavHelgDag",
1299+
emptyList(),
1300+
beløpTilArbeidsgiver = 0,
1301+
beløpTilSykmeldt = 0,
1302+
sykdomsgrad = 100,
1303+
),
1304+
RSUtbetalingdag(
1305+
dato.plusDays(8),
1306+
"NavHelgDag",
1307+
emptyList(),
1308+
beløpTilArbeidsgiver = 0,
1309+
beløpTilSykmeldt = 0,
1310+
sykdomsgrad = 100,
1311+
),
1312+
)
1313+
1314+
val forventetSykmeldtDagliste =
1315+
listOf(
1316+
RSDag(dato.plusDays(0), 0, 0.0, "NavHelgDag", emptyList()),
1317+
RSDag(dato.plusDays(1), 0, 0.0, "NavHelgDag", emptyList()),
1318+
RSDag(dato.plusDays(2), 0, 0.0, "NavDagDelvisSyk", emptyList()),
1319+
RSDag(dato.plusDays(3), 0, 0.0, "NavDagDelvisSyk", emptyList()),
1320+
RSDag(dato.plusDays(4), 0, 0.0, "AvvistDag", emptyList()),
1321+
RSDag(dato.plusDays(5), 0, 0.0, "AvvistDag", emptyList()),
1322+
RSDag(dato.plusDays(6), 0, 0.0, "AvvistDag", emptyList()),
1323+
RSDag(dato.plusDays(7), 0, 0.0, "NavHelgDag", emptyList()),
1324+
RSDag(dato.plusDays(8), 0, 0.0, "NavHelgDag", emptyList()),
1325+
)
1326+
1327+
val hentDager =
1328+
hentDager(
1329+
fom = dato.plusDays(0),
1330+
tom = dato.plusDays(8),
1331+
oppdragDto =
1332+
RSOppdrag(
1333+
utbetalingslinjer = listOf(),
1334+
),
1335+
utbetalingsdager = utbetalingsdager,
1336+
)
1337+
hentDager.shouldContainExactly(forventetSykmeldtDagliste)
1338+
1339+
hentDagerNy(
1340+
fom = dato.plusDays(0),
1341+
tom = dato.plusDays(8),
1342+
utbetalingsdager = utbetalingsdager,
1343+
erSykmeldt = true,
1344+
).shouldContainExactly(forventetSykmeldtDagliste)
1345+
}
1346+
1347+
@Test
1348+
fun `Helg på slutten av arbeidsgiverperiode`() {
1349+
val dato = LocalDate.of(2025, 12, 4)
1350+
1351+
val utbetalingsdager =
1352+
listOf(
1353+
RSUtbetalingdag(
1354+
dato.plusDays(0),
1355+
"ArbeidsgiverperiodeDag",
1356+
emptyList(),
1357+
beløpTilArbeidsgiver = 2018,
1358+
beløpTilSykmeldt = 0,
1359+
sykdomsgrad = 100,
1360+
),
1361+
RSUtbetalingdag(
1362+
dato.plusDays(1),
1363+
"ArbeidsgiverperiodeDag",
1364+
emptyList(),
1365+
beløpTilArbeidsgiver = 2018,
1366+
beløpTilSykmeldt = 0,
1367+
sykdomsgrad = 100,
1368+
),
1369+
RSUtbetalingdag(
1370+
dato.plusDays(2),
1371+
"ArbeidsgiverperiodeDag",
1372+
emptyList(),
1373+
beløpTilArbeidsgiver = 0,
1374+
beløpTilSykmeldt = 0,
1375+
sykdomsgrad = 100,
1376+
),
1377+
RSUtbetalingdag(
1378+
dato.plusDays(3),
1379+
"ArbeidsgiverperiodeDag",
1380+
emptyList(),
1381+
beløpTilArbeidsgiver = 0,
1382+
beløpTilSykmeldt = 0,
1383+
sykdomsgrad = 100,
1384+
),
1385+
)
1386+
1387+
val forventetArbeidsgiverDagliste =
1388+
listOf(
1389+
RSDag(dato.plusDays(0), 2018, 100.0, "NavDagSyk", emptyList()),
1390+
RSDag(dato.plusDays(1), 2018, 100.0, "NavDagSyk", emptyList()),
1391+
RSDag(dato.plusDays(2), 0, 0.0, "ArbeidsgiverperiodeDag", emptyList()),
1392+
RSDag(dato.plusDays(3), 0, 0.0, "ArbeidsgiverperiodeDag", emptyList()),
1393+
)
1394+
1395+
hentDagerNy(
1396+
fom = dato.plusDays(0),
1397+
tom = dato.plusDays(3),
1398+
utbetalingsdager = utbetalingsdager,
1399+
erSykmeldt = false,
1400+
).shouldContainExactly(forventetArbeidsgiverDagliste)
1401+
}
12331402
}

0 commit comments

Comments
 (0)