Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Slå sammen perioder i brev dersom de er like #1561

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
23f418a
WIP: Slår sammen perioder i brev
olekvernberg Sep 23, 2024
5692b59
Skal kun lage tekst en gang, ikke for hver periode.
gunnsteingarmo Sep 23, 2024
ed473fa
List opp alle perioder som har feilutbetaling til å starte med
olekvernberg Sep 24, 2024
60fdaa1
Merge remote-tracking branch 'origin/main' into slå-sammen-perioder-i…
olekvernberg Sep 24, 2024
6b978e4
Oppdatert vedtaksbrevsoppsummering database med skal_sammenslå_period…
gunnsteingarmo Sep 24, 2024
e598524
Endrer slåSammenPerioder til post mapping
gunnsteingarmo Sep 24, 2024
7344230
Endrer navn på kolonne, kan ikke bruke å bytter til aa
gunnsteingarmo Sep 25, 2024
5286907
Foreldelsesperioder er like hvis steget er autoutført
olekvernberg Sep 25, 2024
3635668
Sender ikke med skal sammenslå fra frontend, skal hentes fra databasen
olekvernberg Sep 25, 2024
e2dea69
Sender med og bruker erPerioderLike for å sjekke hvilket brev som ska…
gunnsteingarmo Sep 26, 2024
cc1c23c
Egen fakta handlebar for sammenslåing av perioder, da beløp pr period…
olekvernberg Sep 26, 2024
c5f65d2
Skal som default slå sammen perioder. Startet på å slå sammen avsnitt…
gunnsteingarmo Sep 27, 2024
2e98cbf
Fiks avsnitt for sammenslåtte perioder på vedtaskbrev-siden
olekvernberg Sep 27, 2024
215443f
Skal ha med fritekstfelt i fakta
olekvernberg Sep 27, 2024
3100b43
Bugfix - dersom perioder er like kan de default sammenslås
olekvernberg Sep 30, 2024
19210f9
Bugfix: Hardkodet verdi erstattet med parameter som sendes inn - skal…
olekvernberg Sep 30, 2024
4b6b882
Tar utgangspunkt i første perioder i sammenslått avsnitt
olekvernberg Sep 30, 2024
318a070
Fjerner unødvendig handlebar
olekvernberg Oct 2, 2024
0e7853b
Fjernet logger.info
gunnsteingarmo Oct 2, 2024
220a43a
Merge branch 'main' into slå-sammen-perioder-i-brev
olekvernberg Oct 2, 2024
8f1d637
Skal bare slå sammen like perioder dersom det er fagsak av type ensli…
olekvernberg Oct 3, 2024
41eb127
Slå sammen perioder i vilkårsvurderingssteg dersom perioder er like o…
olekvernberg Oct 4, 2024
bd99296
Skal oppdatere skalSammenslåPerioder i vedtaksbrevoppsummering
gunnsteingarmo Oct 7, 2024
1d3d3d5
Sletter endepunktet erPerioderSlaattSammen da det ikke lenger er beho…
gunnsteingarmo Oct 7, 2024
57e8968
Deler opp skal-sammen-slaa endepunktet til to nye, en for å samen slå…
gunnsteingarmo Oct 7, 2024
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
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ class DokumentController(
@Rolletilgangssjekk(Behandlerrolle.SAKSBEHANDLER, "Forhåndsviser brev", AuditLoggerEvent.ACCESS)
fun hentForhåndsvisningVedtaksbrev(
@Valid @RequestBody
dto: HentForhåndvisningVedtaksbrevPdfDto,
): Ressurs<ByteArray> = Ressurs.success(vedtaksbrevService.hentForhåndsvisningVedtaksbrevMedVedleggSomPdf(dto))
hentForhåndsvisningVedtaksbrevRequest: HentForhåndvisningVedtaksbrevPdfDto,
): Ressurs<ByteArray> = Ressurs.success(vedtaksbrevService.hentForhåndsvisningVedtaksbrevMedVedleggSomPdf(hentForhåndsvisningVedtaksbrevRequest))

@Operation(summary = "Hent vedtaksbrevtekst")
@GetMapping(
Expand Down
84 changes: 73 additions & 11 deletions src/main/kotlin/no/nav/familie/tilbake/api/PerioderController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,38 @@ package no.nav.familie.tilbake.api

import io.swagger.v3.oas.annotations.Operation
import no.nav.familie.kontrakter.felles.Ressurs
import no.nav.familie.tilbake.faktaomfeilutbetaling.FaktaFeilutbetalingService
import no.nav.familie.tilbake.foreldelse.ForeldelseService
import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.tilbake.behandling.FagsakRepository
import no.nav.familie.tilbake.dokumentbestilling.vedtak.PeriodeService
import no.nav.familie.tilbake.dokumentbestilling.vedtak.VedtaksbrevService
import no.nav.familie.tilbake.dokumentbestilling.vedtak.VedtaksbrevsoppsummeringRepository
import no.nav.familie.tilbake.dokumentbestilling.vedtak.domain.Vedtaksbrevsoppsummering
import no.nav.familie.tilbake.sikkerhet.AuditLoggerEvent
import no.nav.familie.tilbake.sikkerhet.Behandlerrolle
import no.nav.familie.tilbake.sikkerhet.HenteParam
import no.nav.familie.tilbake.sikkerhet.Rolletilgangssjekk
import no.nav.familie.tilbake.vilkårsvurdering.VilkårsvurderingService
import no.nav.security.token.support.core.api.ProtectedWithClaims
import org.slf4j.LoggerFactory
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import java.util.UUID

@RestController
@RequestMapping("/api/perioder")
@ProtectedWithClaims(issuer = "azuread")
class PerioderController(
private val faktaFeilutbetalingService: FaktaFeilutbetalingService,
private val vilkårsVurderingService: VilkårsvurderingService,
private val foreldelseService: ForeldelseService,
private val vedtaksbrevService: VedtaksbrevService,
private val vedtaksbrevsoppsummeringRepository: VedtaksbrevsoppsummeringRepository,
private val fagsakRepository: FagsakRepository,
private val periodeService: PeriodeService,
) {
private val logger = LoggerFactory.getLogger(this::class.java)

@Operation(summary = "Sjekker om perioder er like - unntatt dato og beløp")
@GetMapping(
"/sjekk-likhet/{behandlingId}",
Expand All @@ -38,10 +47,63 @@ class PerioderController(
)
fun erPerioderLike(
@PathVariable behandlingId: UUID,
): Ressurs<Boolean> =
Ressurs.success(
faktaFeilutbetalingService.sjekkOmFaktaPerioderErLike(behandlingId) &&
foreldelseService.sjekkOmForeldelsePerioderErLike(behandlingId) &&
vilkårsVurderingService.sjekkOmVilkårsvurderingPerioderErLike(behandlingId),
): Ressurs<Boolean> {
val erEnsligForsørgerOgPerioderLike = periodeService.erEnsligForsørgerOgPerioderLike(behandlingId)

val vedtaksbrevsoppsummering = vedtaksbrevsoppsummeringRepository.findByBehandlingId(behandlingId)

if (!erEnsligForsørgerOgPerioderLike && vedtaksbrevsoppsummering != null) {
vedtaksbrevsoppsummeringRepository.update(vedtaksbrevsoppsummering.copy(skalSammenslåPerioder = false))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Er litt skeptisk til at en "GET"-er oppdaterer en verdi.
Bør denne sjekken og oppdateringen utføres når vilkårsvurderingen lagres ned - gitt at det eksisterer en vedtaksbrevoppsummering for behandlingen?

}
if (vedtaksbrevsoppsummering == null) {
vedtaksbrevsoppsummeringRepository.insert(Vedtaksbrevsoppsummering(UUID.randomUUID(), behandlingId, null, erEnsligForsørgerOgPerioderLike))
}

return Ressurs.success(
erEnsligForsørgerOgPerioderLike,
)
}

@Operation(summary = "Oppdatere skalSammenslåPerioder")
@PostMapping(
"/sammensla/{behandlingId}",
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Oppdatere skalSammenslåPerioder",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun samenslå(
@PathVariable behandlingId: UUID,
): Ressurs<Boolean> {
val behandling = fagsakRepository.finnFagsakForBehandlingId(behandlingId)
if (behandling.ytelsestype.tilTema() != Tema.ENF) {
throw Exception("Kan ikke slå sammen perioder i behandling som ikke er for en enslig forsørger ytelse")
}
vedtaksbrevService.oppdaterSkalSammenslåPerioder(behandlingId, true)
return Ressurs.success(true)
}

@Operation(summary = "Angre sammenslå av perioder")
@PostMapping(
"/angre-sammenslaing/{behandlingId}",
produces = [MediaType.APPLICATION_JSON_VALUE],
)
@Rolletilgangssjekk(
Behandlerrolle.SAKSBEHANDLER,
"Angre sammenslåing av perioder",
AuditLoggerEvent.UPDATE,
HenteParam.BEHANDLING_ID,
)
fun angreSammenslåing(
@PathVariable behandlingId: UUID,
): Ressurs<Boolean> {
val vedtaksbrevsoppsummering = vedtaksbrevsoppsummeringRepository.findByBehandlingId(behandlingId)
if (vedtaksbrevsoppsummering != null) {
vedtaksbrevsoppsummeringRepository.update(vedtaksbrevsoppsummering.copy(skalSammenslåPerioder = false))
}
return Ressurs.success(true)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ import no.nav.familie.tilbake.behandlingskontroll.domain.Behandlingsstegstatus
import no.nav.familie.tilbake.behandlingskontroll.domain.Behandlingsstegstatus.AUTOUTFØRT
import no.nav.familie.tilbake.behandlingskontroll.domain.Behandlingsstegstatus.UTFØRT
import no.nav.familie.tilbake.common.exceptionhandler.Feil
import no.nav.familie.tilbake.dokumentbestilling.vedtak.PeriodeService
import no.nav.familie.tilbake.dokumentbestilling.vedtak.VedtaksbrevsoppsummeringRepository
import no.nav.familie.tilbake.dokumentbestilling.vedtak.domain.Vedtaksbrevsoppsummering
import no.nav.familie.tilbake.foreldelse.ForeldelseService
import no.nav.familie.tilbake.historikkinnslag.Aktør
import no.nav.familie.tilbake.historikkinnslag.HistorikkTaskService
Expand All @@ -31,6 +34,8 @@ class Vilkårsvurderingssteg(
private val foreldelseService: ForeldelseService,
private val historikkTaskService: HistorikkTaskService,
private val oppgaveTaskService: OppgaveTaskService,
private val periodeService: PeriodeService,
private val vedtaksbrevsoppsummeringRepository: VedtaksbrevsoppsummeringRepository,
) : IBehandlingssteg {
private val logger = LoggerFactory.getLogger(this::class.java)

Expand Down Expand Up @@ -65,7 +70,7 @@ class Vilkårsvurderingssteg(
)
}
vilkårsvurderingService.lagreVilkårsvurdering(behandlingId, behandlingsstegDto as BehandlingsstegVilkårsvurderingDto)

oppdatereVedtaksbrevsoppsummering(behandlingId)
oppgaveTaskService.oppdaterAnsvarligSaksbehandlerOppgaveTask(behandlingId)

lagHistorikkinnslag(behandlingId, Aktør.SAKSBEHANDLER)
Expand Down Expand Up @@ -127,4 +132,17 @@ class Vilkårsvurderingssteg(
aktør,
)
}

private fun oppdatereVedtaksbrevsoppsummering(behandlingId: UUID) {
val erEnsligForsørgerOgPerioderLike = periodeService.erEnsligForsørgerOgPerioderLike(behandlingId)
val vedtaksbrevsoppsummering = vedtaksbrevsoppsummeringRepository.findByBehandlingId(behandlingId)

if (vedtaksbrevsoppsummering != null) {
vedtaksbrevsoppsummeringRepository.update(vedtaksbrevsoppsummering.copy(skalSammenslåPerioder = erEnsligForsørgerOgPerioderLike))
}

if (erEnsligForsørgerOgPerioderLike && vedtaksbrevsoppsummering == null) {
vedtaksbrevsoppsummeringRepository.insert(Vedtaksbrevsoppsummering(behandlingId = behandlingId, skalSammenslåPerioder = erEnsligForsørgerOgPerioderLike, oppsummeringFritekst = null))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import java.time.LocalDate
enum class Avsnittstype {
OPPSUMMERING,
PERIODE,
SAMMENSLÅTT_PERIODE,
TILLEGGSINFORMASJON,
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
package no.nav.familie.tilbake.dokumentbestilling.vedtak

import no.nav.familie.kontrakter.felles.Datoperiode
import no.nav.familie.tilbake.dokumentbestilling.handlebars.FellesTekstformaterer
import no.nav.familie.tilbake.dokumentbestilling.vedtak.handlebars.dto.HbVedtaksbrevFelles
import no.nav.familie.tilbake.dokumentbestilling.vedtak.handlebars.dto.HbVedtaksbrevPeriodeOgFelles
import no.nav.familie.tilbake.dokumentbestilling.vedtak.handlebars.dto.HbVedtaksbrevsdata
import no.nav.familie.tilbake.dokumentbestilling.vedtak.handlebars.dto.Vedtaksbrevstype
import no.nav.familie.tilbake.dokumentbestilling.vedtak.handlebars.dto.periode.HbVedtaksbrevsperiode

internal object AvsnittUtil {
const val PARTIAL_PERIODE_FAKTA = "vedtak/periode_fakta"
const val PARTIAL_PERIODE_FAKTA_SAMMENSLÅTT_PERIODER = "vedtak/periode-fakta/periode_fakta_ef_sammenslå_perioder"
const val PARTIAL_PERIODE_FORELDELSE = "vedtak/periode_foreldelse"
const val PARTIAL_PERIODE_VILKÅR = "vedtak/periode_vilkår"
const val PARTIAL_PERIODE_SÆRLIGE_GRUNNER = "vedtak/periode_særlige_grunner"

fun lagVedtaksbrevDeltIAvsnitt(
vedtaksbrevsdata: HbVedtaksbrevsdata,
hovedoverskrift: String,
skalSammenslåPerioder: Boolean = false,
): List<Avsnitt> {
val resultat: MutableList<Avsnitt> = ArrayList()
val vedtaksbrevsdataMedFriteksmarkeringer = Vedtaksbrevsfritekst.settInnMarkeringForFritekst(vedtaksbrevsdata)
resultat.add(lagOppsummeringsavsnitt(vedtaksbrevsdataMedFriteksmarkeringer, hovedoverskrift))
if (vedtaksbrevsdata.felles.vedtaksbrevstype == Vedtaksbrevstype.ORDINÆR) {
resultat.addAll(lagPerioderavsnitt(vedtaksbrevsdataMedFriteksmarkeringer))
resultat.addAll(lagPerioderavsnitt(vedtaksbrevsdataMedFriteksmarkeringer, skalSammenslåPerioder))
}
resultat.add(lagAvsluttendeAvsnitt(vedtaksbrevsdataMedFriteksmarkeringer))
return resultat
Expand All @@ -45,10 +49,18 @@ internal object AvsnittUtil {
return FellesTekstformaterer.lagDeltekst(vedtaksbrevFelles, filsti)
}

private fun lagPerioderavsnitt(vedtaksbrevsdata: HbVedtaksbrevsdata): List<Avsnitt> =
vedtaksbrevsdata.perioder.map {
lagPeriodeAvsnitt(HbVedtaksbrevPeriodeOgFelles(vedtaksbrevsdata.felles, it))
private fun lagPerioderavsnitt(
vedtaksbrevsdata: HbVedtaksbrevsdata,
skalSammenslåPerioder: Boolean,
): List<Avsnitt> {
if (skalSammenslåPerioder) {
return listOf(lagSammenslåttPeriodeAvsnitt(vedtaksbrevsdata))
} else {
return vedtaksbrevsdata.perioder.map {
lagPeriodeAvsnitt(HbVedtaksbrevPeriodeOgFelles(vedtaksbrevsdata.felles, it))
}
}
}

private fun lagAvsluttendeAvsnitt(vedtaksbrevsdata: HbVedtaksbrevsdata): Avsnitt {
val tekst = FellesTekstformaterer.lagDeltekst(vedtaksbrevsdata, "vedtak/vedtak_slutt")
Expand Down Expand Up @@ -79,6 +91,41 @@ internal object AvsnittUtil {
return avsnitt
}

private fun lagSammenslåttPeriodeAvsnitt(vedtaksbrevsdata: HbVedtaksbrevsdata): Avsnitt {
val førstePeriode = vedtaksbrevsdata.perioder.first()
val sammenslåttDatoperiode =
Datoperiode(
førstePeriode.periode.fom,
vedtaksbrevsdata.perioder
.last()
.periode.tom,
)
val hbVedtaksbrevsperiode = HbVedtaksbrevsperiode(sammenslåttDatoperiode, førstePeriode.kravgrunnlag, førstePeriode.fakta, førstePeriode.vurderinger, førstePeriode.resultat, true, førstePeriode.grunnbeløp)
val hbVedtaksbrevPeriodeOgFelles = HbVedtaksbrevPeriodeOgFelles(vedtaksbrevsdata.felles, hbVedtaksbrevsperiode)

var avsnitt =
Avsnitt(
avsnittstype = Avsnittstype.SAMMENSLÅTT_PERIODE,
overskrift = "Perioder som er feilutbetalt",
fom = førstePeriode.periode.fom,
tom = førstePeriode.periode.tom,
)

val faktatekst = FellesTekstformaterer.lagDeltekst(vedtaksbrevsdata, PARTIAL_PERIODE_FAKTA_SAMMENSLÅTT_PERIODER)
val foreldelsestekst = FellesTekstformaterer.lagDeltekst(hbVedtaksbrevPeriodeOgFelles, PARTIAL_PERIODE_FORELDELSE)
val vilkårstekst = FellesTekstformaterer.lagDeltekst(hbVedtaksbrevPeriodeOgFelles, PARTIAL_PERIODE_VILKÅR)
val særligeGrunnerstekst = FellesTekstformaterer.lagDeltekst(hbVedtaksbrevPeriodeOgFelles, PARTIAL_PERIODE_SÆRLIGE_GRUNNER)
val avsluttendeTekst = FellesTekstformaterer.lagDeltekst(hbVedtaksbrevPeriodeOgFelles, "vedtak/periode_slutt")

avsnitt = parseTekst(faktatekst, avsnitt, Underavsnittstype.FAKTA)
avsnitt = parseTekst(foreldelsestekst, avsnitt, Underavsnittstype.FORELDELSE)
avsnitt = parseTekst(vilkårstekst, avsnitt, Underavsnittstype.VILKÅR)
avsnitt = parseTekst(særligeGrunnerstekst, avsnitt, Underavsnittstype.SÆRLIGEGRUNNER)
avsnitt = parseTekst(avsluttendeTekst, avsnitt, null)

return avsnitt
}

fun parseTekst(
generertTekst: String,
avsnitt: Avsnitt,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.familie.tilbake.dokumentbestilling.vedtak

import no.nav.familie.kontrakter.felles.Tema
import no.nav.familie.tilbake.behandling.FagsakRepository
import no.nav.familie.tilbake.faktaomfeilutbetaling.FaktaFeilutbetalingService
import no.nav.familie.tilbake.foreldelse.ForeldelseService
import no.nav.familie.tilbake.vilkårsvurdering.VilkårsvurderingService
import org.springframework.stereotype.Service
import java.util.UUID

@Service
class PeriodeService(
private val faktaFeilutbetalingService: FaktaFeilutbetalingService,
private val foreldelseService: ForeldelseService,
private val vilkårsvurderingService: VilkårsvurderingService,
private val fagsakRepository: FagsakRepository,
) {
fun erEnsligForsørgerOgPerioderLike(behandlingId: UUID): Boolean {
val fagsak = fagsakRepository.finnFagsakForBehandlingId(behandlingId)
return faktaFeilutbetalingService.sjekkOmFaktaPerioderErLike(behandlingId) &&
foreldelseService.sjekkOmForeldelsePerioderErLike(behandlingId) &&
vilkårsvurderingService.sjekkOmVilkårsvurderingPerioderErLike(behandlingId) &&
fagsak.ytelsestype.tilTema() == Tema.ENF
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,18 @@ import no.nav.familie.tilbake.dokumentbestilling.vedtak.handlebars.dto.Vedtaksbr
internal object TekstformatererVedtaksbrev {
fun lagVedtaksbrevsfritekst(
vedtaksbrevsdata: HbVedtaksbrevsdata,
skalSammenslåPerioder: Boolean = false,
erPerioderLike: Boolean = false,
): String =
when (vedtaksbrevsdata.felles.vedtaksbrevstype) {
Vedtaksbrevstype.FRITEKST_FEILUTBETALING_BORTFALT ->
lagVedtaksbrev("vedtak/fritekstFeilutbetalingBortfalt/fritekstFeilutbetalingBortfalt", vedtaksbrevsdata)
Vedtaksbrevstype.ORDINÆR -> lagVedtaksbrev("vedtak/vedtak", vedtaksbrevsdata)
Vedtaksbrevstype.ORDINÆR ->
if (skalSammenslåPerioder && erPerioderLike) {
lagVedtaksbrev("vedtak/vedtak_sammenslå_perioder", vedtaksbrevsdata)
} else {
lagVedtaksbrev("vedtak/vedtak", vedtaksbrevsdata)
}
Vedtaksbrevstype.AUTOMATISK_4X_RETTSGEBYR -> lagVedtaksbrev("vedtak/vedtak_feilutbetaling_under_4x_rettsgebyr", vedtaksbrevsdata)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ object VedtaksbrevFritekstMapper {
fun tilDomene(
behandlingId: UUID,
oppsummeringstekst: String?,
skalSammenslåPerioder: Boolean,
): Vedtaksbrevsoppsummering =
Vedtaksbrevsoppsummering(
behandlingId = behandlingId,
oppsummeringFritekst = oppsummeringstekst,
skalSammenslåPerioder = skalSammenslåPerioder,
)

fun tilDomeneVedtaksbrevsperiode(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ object VedtaksbrevFritekstValidator {
it,
vedtaksbrevFritekstPerioder,
validerPåkrevetFritekster,
vedtaksbrevsoppsummering.skalSammenslåPerioder,
)
}
}
Expand All @@ -48,6 +49,7 @@ object VedtaksbrevFritekstValidator {
vedtaksbrevFritekstPerioder,
avsnittMedPerioder,
validerPåkrevetFritekster,
vedtaksbrevsoppsummering.skalSammenslåPerioder,
)
}
validerOppsummeringsfritekstLengde(behandling, vedtaksbrevsoppsummering, vedtaksbrevstype)
Expand Down Expand Up @@ -127,9 +129,12 @@ object VedtaksbrevFritekstValidator {
vedtaksbrevFritekstPerioder: List<Vedtaksbrevsperiode>,
avsnittMedPerioder: List<PeriodeMedTekstDto>,
validerPåkrevetFritekster: Boolean,
skalSammenslåPerioder: Boolean,
) {
faktaFeilutbetaling.perioder
.filter { Hendelsesundertype.ANNET_FRITEKST == it.hendelsesundertype }
val faktaPerioderMedFritekst = faktaFeilutbetaling.perioder.filter { Hendelsesundertype.ANNET_FRITEKST == it.hendelsesundertype }.sortedBy { it.periode }
val validerPerioder = if (skalSammenslåPerioder && faktaPerioderMedFritekst.isNotEmpty()) listOf(faktaPerioderMedFritekst.first()) else faktaPerioderMedFritekst

validerPerioder
.forEach { faktaFeilutbetalingsperiode ->
val perioder =
finnFritekstPerioder(
Expand Down Expand Up @@ -165,13 +170,24 @@ object VedtaksbrevFritekstValidator {
vilkårsvurdering: Vilkårsvurdering,
vedtaksbrevFritekstPerioder: List<Vedtaksbrevsperiode>,
validerPåkrevetFritekster: Boolean,
skalSammenslåPerioder: Boolean,
) {
vilkårsvurdering.perioder
.filter {
it.aktsomhet?.vilkårsvurderingSærligeGrunner != null &&
it.aktsomhet.vilkårsvurderingSærligeGrunner
.any { særligGrunn -> SærligGrunn.ANNET == særligGrunn.særligGrunn }
}.forEach {
val perioderMedSærligeGrunner =
vilkårsvurdering.perioder
.filter {
it.aktsomhet?.vilkårsvurderingSærligeGrunner != null &&
it.aktsomhet.vilkårsvurderingSærligeGrunner.any { særligGrunn -> SærligGrunn.ANNET == særligGrunn.særligGrunn }
}.sortedBy { it.periode }

val validerPerioder =
if (skalSammenslåPerioder && perioderMedSærligeGrunner.isNotEmpty()) {
setOf(perioderMedSærligeGrunner.first())
} else {
perioderMedSærligeGrunner
}

validerPerioder
.forEach {
val perioder =
finnFritekstPerioder(
vedtaksbrevFritekstPerioder,
Expand Down
Loading
Loading