Skip to content

Commit f5bb495

Browse files
steinsheolebaba
andcommitted
Slett gammel daglistemapping
Co-authored-by: Ole Bastian Løchen <ole.bastian.kolstad.lochen@nav.no>
1 parent 367128a commit f5bb495

File tree

10 files changed

+40
-469
lines changed

10 files changed

+40
-469
lines changed

src/main/kotlin/no/nav/helse/flex/domene/RSVedtak.kt

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package no.nav.helse.flex.domene
22

3-
import com.fasterxml.jackson.annotation.JsonIgnore
43
import com.fasterxml.jackson.databind.JsonNode
54
import no.nav.helse.flex.logger
65
import java.time.Instant
@@ -16,14 +15,8 @@ data class RSVedtakWrapper(
1615
val orgnavn: String,
1716
val annullert: Boolean = false,
1817
val revurdert: Boolean = false,
19-
@JsonIgnore
20-
val dagerArbeidsgiver: List<RSDag> = emptyList(),
21-
@JsonIgnore
22-
val dagerPerson: List<RSDag> = emptyList(),
23-
@JsonIgnore
2418
val sykepengebelopArbeidsgiver: Int = 0,
25-
@JsonIgnore
26-
val sykepengebelopPerson: Int = 0,
19+
val sykepengebelopSykmeldt: Int = 0,
2720
val daglisteArbeidsgiver: List<RSDag> = emptyList(),
2821
val daglisteSykmeldt: List<RSDag> = emptyList(),
2922
val andreArbeidsgivere: Map<String, Double>?,
@@ -33,15 +26,15 @@ data class RSVedtakWrapper(
3326
val log = logger()
3427

3528
fun dagerTilUtbetalingsdager(
36-
dagerPerson: List<RSDag>,
29+
dagerSykmeldt: List<RSDag>,
3730
dagerArbeidsgiver: List<RSDag>,
3831
): List<RSUtbetalingdag> {
39-
val fom = (dagerPerson + dagerArbeidsgiver).minByOrNull { it.dato }?.dato ?: return emptyList()
40-
val tom = (dagerPerson + dagerArbeidsgiver).maxByOrNull { it.dato }?.dato ?: return emptyList()
32+
val fom = (dagerSykmeldt + dagerArbeidsgiver).minByOrNull { it.dato }?.dato ?: return emptyList()
33+
val tom = (dagerSykmeldt + dagerArbeidsgiver).maxByOrNull { it.dato }?.dato ?: return emptyList()
4134
val utbetalingsdager = mutableListOf<RSUtbetalingdag>()
4235

4336
for (dato in fom.datesUntil(tom.plusDays(1))) {
44-
val dagPerson = dagerPerson.find { it.dato.equals(dato) }
37+
val dagPerson = dagerSykmeldt.find { it.dato.equals(dato) }
4538
val dagArbeidsgiver = dagerArbeidsgiver.find { it.dato.equals(dato) }
4639

4740
if (dagPerson == null && dagArbeidsgiver == null) {

src/main/kotlin/no/nav/helse/flex/service/BrukerVedtak.kt

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import no.nav.helse.flex.domene.*
77
import no.nav.helse.flex.kafka.VedtakStatusKafkaProducer
88
import no.nav.helse.flex.logger
99
import no.nav.helse.flex.organisasjon.LeggTilOrganisasjonnavn
10-
import no.nav.helse.flex.secure
1110
import no.nav.helse.flex.util.*
1211
import org.springframework.http.HttpStatus
1312
import org.springframework.stereotype.Service
@@ -51,7 +50,6 @@ class BrukerVedtak(
5150
.map { it.fjernArbeidIkkeGjenopptattDager() }
5251
.leggTilOrgnavn()
5352
.leggTilArbeidsgivere()
54-
.sammenlignDaglister()
5553
}
5654

5755
fun lesVedtak(
@@ -206,49 +204,3 @@ class BrukerVedtak(
206204

207205
private fun List<RSVedtakWrapper>.leggTilArbeidsgivere(): List<RSVedtakWrapper> = leggTilOrganisasjonavn.leggTilAndreArbeidsgivere(this)
208206
}
209-
210-
private fun List<RSVedtakWrapper>.sammenlignDaglister(): List<RSVedtakWrapper> {
211-
this.forEach {
212-
val personDiff = it.dagerPerson.finnForskjeller(it.daglisteSykmeldt)
213-
if (personDiff != null) {
214-
logger().secure("Diff i sykmeldt dagliste for vedtak ${it.vedtak.utbetaling.utbetalingId}: $personDiff")
215-
}
216-
val arbeidsgiverDiff = it.dagerArbeidsgiver.finnForskjeller(it.daglisteArbeidsgiver)
217-
if (arbeidsgiverDiff != null) {
218-
logger().secure("Diff i arbeidsgiver dagliste for vedtak ${it.vedtak.utbetaling.utbetalingId}: $arbeidsgiverDiff")
219-
}
220-
}
221-
return this
222-
}
223-
224-
private fun List<RSDag>.finnForskjeller(annen: List<RSDag>): String? {
225-
if (this.size != annen.size) {
226-
return "Ulik størrelse: ${this.size} vs ${annen.size}"
227-
}
228-
229-
val forskjeller = mutableListOf<String>()
230-
this.forEachIndexed { index, it ->
231-
val dagDiff = mutableListOf<String>()
232-
233-
if (it.dato != annen[index].dato) {
234-
dagDiff.add("dato: ${it.dato} vs ${annen[index].dato}")
235-
}
236-
if (it.belop != annen[index].belop) {
237-
dagDiff.add("belop: ${it.belop} vs ${annen[index].belop}")
238-
}
239-
if (it.begrunnelser.toSet() != annen[index].begrunnelser.toSet()) {
240-
dagDiff.add("begrunnelser: ${it.begrunnelser} vs ${annen[index].begrunnelser}")
241-
}
242-
if (it.dagtype != annen[index].dagtype) {
243-
dagDiff.add("dagtype: ${it.dagtype} vs ${annen[index].dagtype}")
244-
}
245-
if (it.grad != annen[index].grad) {
246-
dagDiff.add("grad: ${it.grad} vs ${annen[index].grad}")
247-
}
248-
if (dagDiff.isNotEmpty()) {
249-
forskjeller.add("Index $index (${it.dato}): ${dagDiff.joinToString(", ")}")
250-
}
251-
}
252-
253-
return if (forskjeller.isEmpty()) null else forskjeller.joinToString("; ")
254-
}

src/main/kotlin/no/nav/helse/flex/service/FiltrerArbeidIkkeGjennopptatt.kt

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,27 @@ package no.nav.helse.flex.service
22

33
import no.nav.helse.flex.domene.RSDag
44
import no.nav.helse.flex.domene.RSVedtakWrapper
5-
import no.nav.helse.flex.logger
65
import java.time.LocalDate
76

87
fun RSVedtakWrapper.fjernArbeidIkkeGjenopptattDager(): RSVedtakWrapper {
9-
val dagerArbeidsgiver = this.dagerArbeidsgiver.filter { it.dagtype != "ArbeidIkkeGjenopptattDag" }
10-
val dagerPerson = this.dagerPerson.filter { it.dagtype != "ArbeidIkkeGjenopptattDag" }
11-
128
val daglisteSykmeldt = this.daglisteSykmeldt.filter { it.dagtype != "ArbeidIkkeGjenopptattDag" }
139
val daglisteArbeidsgiver = this.daglisteArbeidsgiver.filter { it.dagtype != "ArbeidIkkeGjenopptattDag" }
1410

15-
val faktiskFomGammel = finnFaktiskFom(dagerArbeidsgiver, dagerPerson, this.vedtak.fom)
1611
val faktiskFomNy = finnFaktiskFom(daglisteArbeidsgiver, daglisteSykmeldt, this.vedtak.fom)
1712

18-
if (faktiskFomNy != faktiskFomGammel) {
19-
logger().warn(
20-
"Fant ulik fom i daglisteArbeidsgiver og daglisteSykmeldt: $faktiskFomNy og $faktiskFomGammel. ${this.vedtak.utbetaling.utbetalingId}",
21-
)
22-
}
23-
2413
return this.copy(
25-
dagerArbeidsgiver = dagerArbeidsgiver,
26-
dagerPerson = dagerPerson,
2714
daglisteArbeidsgiver = daglisteArbeidsgiver,
2815
daglisteSykmeldt = daglisteSykmeldt,
29-
vedtak = this.vedtak.copy(fom = faktiskFomGammel),
16+
vedtak = this.vedtak.copy(fom = faktiskFomNy),
3017
)
3118
}
3219

3320
fun finnFaktiskFom(
3421
dagerArbeidsgiver: List<RSDag>,
35-
dagerPerson: List<RSDag>,
22+
dagerSykmeldt: List<RSDag>,
3623
fom: LocalDate,
3724
): LocalDate {
38-
val tidligsteDagerDag = (dagerArbeidsgiver + dagerPerson).minByOrNull { it.dato }
25+
val tidligsteDagerDag = (dagerArbeidsgiver + dagerSykmeldt).minByOrNull { it.dato }
3926
if (tidligsteDagerDag != null) {
4027
if (tidligsteDagerDag.dato.isAfter(fom)) {
4128
return tidligsteDagerDag.dato

src/main/kotlin/no/nav/helse/flex/service/SendVedtakStatus.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ class SendVedtakStatus(
7777
hentSomBruker = false,
7878
).first { it.id == id }
7979

80-
val skalIkkeVisesFordi = sjekkDager(vedtakWrapper.dagerArbeidsgiver + vedtakWrapper.dagerPerson)
80+
val skalIkkeVisesFordi = sjekkDager(vedtakWrapper.daglisteArbeidsgiver + vedtakWrapper.daglisteSykmeldt)
8181
if (skalIkkeVisesFordi.isNotBlank()) {
8282
log.info("Utbetaling $utbetalingId inneholder bare $skalIkkeVisesFordi og vises ikke til bruker")
8383
skalIkkeVises(id, skalIkkeVisesFordi)

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

Lines changed: 8 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -14,45 +14,27 @@ fun RSVedtakWrapper.leggTilDagerIVedtakPeriode(): RSVedtakWrapper {
1414
val fom = this.vedtak.fom
1515
val tom = this.vedtak.tom
1616

17-
var dagerArbeidsgiver =
18-
hentDager(fom, tom, this.vedtak.utbetaling.arbeidsgiverOppdrag, this.vedtak.utbetaling.utbetalingsdager)
19-
val sykepengebelopArbeidsgiver = dagerArbeidsgiver.sumOf { it.belop }
20-
21-
var dagerPerson =
22-
hentDager(fom, tom, this.vedtak.utbetaling.personOppdrag, this.vedtak.utbetaling.utbetalingsdager)
23-
val sykepengebelopPerson = dagerPerson.sumOf { it.belop }
24-
25-
if (sykepengebelopPerson == 0 && sykepengebelopArbeidsgiver == 0) {
26-
dagerArbeidsgiver = emptyList() // Helt avvist vedtak vises bare i dagerPerson
27-
} else if (sykepengebelopPerson == 0) {
28-
dagerPerson = emptyList() // Refusjonutbetaling
29-
} else if (sykepengebelopArbeidsgiver == 0) {
30-
dagerArbeidsgiver = emptyList() // Brukerutbetaling
31-
}
32-
3317
var dagerArbeidsgiverNy =
3418
hentDagerNy(fom, tom, this.vedtak.utbetaling.utbetalingsdager, false)
3519
val sykepengebelopArbeidsgiverNy = dagerArbeidsgiverNy.sumOf { it.belop }
3620

37-
var dagerPersonNy =
21+
var dagerSykmeldtNy =
3822
hentDagerNy(fom, tom, this.vedtak.utbetaling.utbetalingsdager, true)
39-
val sykepengebelopPersonNy = dagerPersonNy.sumOf { it.belop }
23+
val sykepengebelopSykmeldtNy = dagerSykmeldtNy.sumOf { it.belop }
4024

41-
if (sykepengebelopPersonNy == 0 && sykepengebelopArbeidsgiverNy == 0) {
25+
if (sykepengebelopSykmeldtNy == 0 && sykepengebelopArbeidsgiverNy == 0) {
4226
dagerArbeidsgiverNy = emptyList() // Helt avvist vedtak vises bare i dagerPerson
43-
} else if (sykepengebelopPersonNy == 0) {
44-
dagerPersonNy = emptyList() // Refusjonutbetaling
27+
} else if (sykepengebelopSykmeldtNy == 0) {
28+
dagerSykmeldtNy = emptyList() // Refusjonutbetaling
4529
} else if (sykepengebelopArbeidsgiverNy == 0) {
4630
dagerArbeidsgiverNy = emptyList() // Brukerutbetaling
4731
}
4832

4933
return this.copy(
50-
dagerArbeidsgiver = dagerArbeidsgiver,
51-
dagerPerson = dagerPerson,
52-
sykepengebelopArbeidsgiver = sykepengebelopArbeidsgiver,
53-
sykepengebelopPerson = sykepengebelopPerson,
34+
sykepengebelopArbeidsgiver = sykepengebelopArbeidsgiverNy,
35+
sykepengebelopSykmeldt = sykepengebelopSykmeldtNy,
5436
daglisteArbeidsgiver = dagerArbeidsgiverNy,
55-
daglisteSykmeldt = dagerPersonNy,
37+
daglisteSykmeldt = dagerSykmeldtNy,
5638
)
5739
}
5840

@@ -187,130 +169,6 @@ private fun RSUtbetalingdag.getBeløp(erSykmeldt: Boolean): Int =
187169
private fun finnPerioder(dager: List<RSUtbetalingdag>): PeriodeImpl =
188170
PeriodeImpl(dager.minBy { it.dato }.dato, dager.maxBy { it.dato }.dato)
189171

190-
fun hentDager(
191-
fom: LocalDate,
192-
tom: LocalDate,
193-
oppdragDto: RSOppdrag?,
194-
utbetalingsdager: List<RSUtbetalingdag>?,
195-
): List<RSDag> {
196-
// Setter opp alle dager i perioden
197-
var dager =
198-
fom
199-
.datesUntil(tom.plusDays(1))
200-
.asSequence()
201-
.map { dato ->
202-
RSDag(
203-
dato = dato,
204-
belop = 0,
205-
grad = 0.0,
206-
dagtype = if (dato.dayOfWeek in helg) "NavHelgDag" else "NavDag",
207-
begrunnelser = emptyList(),
208-
)
209-
}
210-
// Oppdaterer med beløp
211-
.map { dag ->
212-
val overlappendeLinjer =
213-
oppdragDto
214-
?.utbetalingslinjer
215-
?.filter { linje -> linje.overlapperMed(dag.dato) } // alle linjer som overlapper
216-
?: emptyList()
217-
218-
overlappendeLinjer.fold(dag) { dagen, linjen ->
219-
val utbetalingslinjeUtenUtbetaling = linjen.stønadsdager == 0
220-
dagen.copy(
221-
belop = if (utbetalingslinjeUtenUtbetaling) 0 else linjen.dagsats,
222-
grad = if (utbetalingslinjeUtenUtbetaling) 0.0 else linjen.grad,
223-
)
224-
}
225-
}
226-
// Slår sammen med dager fra bømlo
227-
.associateWith { dag -> utbetalingsdager?.find { it.dato == dag.dato } }
228-
// Oppdaterer dager med dagtype og begrunnelser
229-
.map { (dag, utbetalingsdagen) ->
230-
when (utbetalingsdagen) {
231-
null -> {
232-
dag
233-
}
234-
235-
else -> {
236-
dag.copy(
237-
begrunnelser = utbetalingsdagen.begrunnelser,
238-
dagtype =
239-
when (utbetalingsdagen.type) {
240-
"NavDag" -> {
241-
when {
242-
dag.grad < 100 -> "NavDagDelvisSyk"
243-
else -> "NavDagSyk"
244-
}
245-
}
246-
247-
"ArbeidsgiverperiodeDag" -> {
248-
when {
249-
dag.belop == 0 -> "ArbeidsgiverperiodeDag"
250-
251-
// NAV betaler ikke arbeidsgiverperiode i helg
252-
dag.dato.dayOfWeek in helg -> "NavHelgDag"
253-
254-
// Vises som gradert syk
255-
dag.grad < 100 -> "NavDagDelvisSyk"
256-
257-
// Vises som 100% syk
258-
else -> "NavDagSyk"
259-
}
260-
}
261-
262-
else -> {
263-
utbetalingsdagen.type
264-
}
265-
},
266-
belop = if (dag.dato.dayOfWeek in helg) 0 else dag.belop,
267-
grad = if (dag.dato.dayOfWeek in helg) 0.0 else dag.grad,
268-
)
269-
}
270-
}
271-
}.toList()
272-
273-
val sisteArbeidsgiverperiodeDag = dager.lastOrNull { it.dagtype == "ArbeidsgiverperiodeDag" }
274-
if (sisteArbeidsgiverperiodeDag?.dato?.dayOfWeek == DayOfWeek.SUNDAY) {
275-
val overtagelseMandag = utbetalingsdager?.find { it.dato == sisteArbeidsgiverperiodeDag.dato.plusDays(1) }
276-
if (overtagelseMandag?.type == "ArbeidsgiverperiodeDag") {
277-
// Dersom nav overtar på mandag så skal ikke helgen før vises som arbeidsgiverperiode
278-
dager =
279-
dager.map { dag ->
280-
when (dag.dato) {
281-
overtagelseMandag.dato.minusDays(2) -> dag.copy(dagtype = "NavHelgDag")
282-
overtagelseMandag.dato.minusDays(1) -> dag.copy(dagtype = "NavHelgDag")
283-
else -> dag
284-
}
285-
}
286-
}
287-
}
288-
289-
val sisteUtbetalteDag = dager.indexOfLast { it.belop > 0 }
290-
if (sisteUtbetalteDag == -1) {
291-
return dager // Ingen dager med utbetaling
292-
}
293-
294-
val annenUtbetalingISlutten =
295-
dager.subList(sisteUtbetalteDag, dager.size).indexOfFirst {
296-
it.belop == 0 && it.dagtype in dagtyperMedUtbetaling
297-
}
298-
if (annenUtbetalingISlutten > -1) {
299-
// Ligger en person/refusjon utbetaling senere så vi stanser visningen her.
300-
dager = dager.subList(0, sisteUtbetalteDag + annenUtbetalingISlutten).toList()
301-
}
302-
303-
val forsteUtbetalteDag = dager.indexOfFirst { it.belop > 0 }
304-
val annenUtbetalingIStarten =
305-
dager.subList(0, forsteUtbetalteDag).indexOfLast { it.belop == 0 && it.dagtype in dagtyperMedUtbetaling }
306-
if (annenUtbetalingIStarten > -1) {
307-
// Ligger en person/refusjon utbetaling tidligere så vi starter visningen her.
308-
dager = dager.subList(forsteUtbetalteDag, dager.size).toList()
309-
}
310-
311-
return dager
312-
}
313-
314172
fun List<RSVedtakWrapper>.markerRevurderte(): List<RSVedtakWrapper> {
315173
val revurderinger = this.filter { it.vedtak.utbetaling.utbetalingType == "REVURDERING" }
316174

src/main/kotlin/no/nav/helse/flex/vedtaktype/Vedtaktype.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import org.springframework.stereotype.Component
77
class Vedtaktype {
88
private fun RSVedtakWrapper.erRefusjon() = this.sykepengebelopArbeidsgiver > 0
99

10-
private fun RSVedtakWrapper.erBrukerutbetaling() = this.sykepengebelopPerson > 0
10+
private fun RSVedtakWrapper.erBrukerutbetaling() = this.sykepengebelopSykmeldt > 0
1111

1212
private fun RSVedtakWrapper.erKombinasjonutbetaling() = erRefusjon() && erBrukerutbetaling()
1313

14-
private fun RSVedtakWrapper.erAvvist() = (dagerPerson + dagerArbeidsgiver).any { it.dagtype == "AvvistDag" }
14+
private fun RSVedtakWrapper.erAvvist() = (daglisteSykmeldt + daglisteArbeidsgiver).any { it.dagtype == "AvvistDag" }
1515

1616
private fun RSVedtakWrapper.erDelvisAvvist() = (erRefusjon() || erBrukerutbetaling()) && erAvvist()
1717

src/test/kotlin/no/nav/helse/flex/VedtakTestdata.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ fun vedtakTestdata(yrkesaktivitetstype: String = "ARBEIDSTAKER") =
4646
andreArbeidsgivere = mapOf("123456547" to 500000.0, "547123456" to 300000.0, "5678" to 100000.0),
4747
annullert = false,
4848
revurdert = false,
49-
dagerArbeidsgiver = emptyList(),
50-
dagerPerson = emptyList(),
49+
daglisteArbeidsgiver = emptyList(),
50+
daglisteSykmeldt = emptyList(),
5151
sykepengebelopArbeidsgiver = 0,
52-
sykepengebelopPerson = 0,
52+
sykepengebelopSykmeldt = 0,
5353
)

0 commit comments

Comments
 (0)