@@ -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 =
187169private 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-
314172fun List<RSVedtakWrapper>.markerRevurderte (): List <RSVedtakWrapper > {
315173 val revurderinger = this .filter { it.vedtak.utbetaling.utbetalingType == " REVURDERING" }
316174
0 commit comments