Skip to content

Commit

Permalink
EY-4807: Flytting av felter til redigerbart utfall (#6483)
Browse files Browse the repository at this point in the history
* Flytting av felter til redigerbart utfall

* Legg til erEndret
  • Loading branch information
emilps authored Nov 28, 2024
1 parent afafee5 commit 375daaf
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,6 @@ class BrevDataMapperFerdigstillingVedtak(
)
}
val trygdetid = async { trygdetidService.hentTrygdetid(behandlingId, bruker) }
val etterbetaling = async { behandlingService.hentEtterbetaling(behandlingId, bruker) }
val brevutfall = async { behandlingService.hentBrevutfall(behandlingId, bruker) }
val vilkaarsvurdering = async { vilkaarsvurderingService.hentVilkaarsvurdering(behandlingId, bruker) }
val behandling = behandlingService.hentBehandling(behandlingId, bruker)
Expand All @@ -508,7 +507,6 @@ class BrevDataMapperFerdigstillingVedtak(
OmstillingsstoenadRevurdering.fra(
innholdMedVedlegg,
avkortingsinfo.await(),
etterbetaling.await(),
requireNotNull(trygdetid.await()) { "Mangler trygdetid" }.single(),
brevutfall.await() ?: throw ManglerBrevutfall(behandlingId),
revurderingaarsak,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,7 @@ class BrevDataMapperRedigerbartUtfallVedtak(
virkningstidspunkt!!,
sakType,
vedtakType,
revurderingaarsak,
)
}
}
Expand Down Expand Up @@ -342,6 +343,7 @@ class BrevDataMapperRedigerbartUtfallVedtak(
virkningstidspunkt: YearMonth,
sakType: SakType,
vedtakType: VedtakType,
revurderingaarsak: Revurderingaarsak?,
) = coroutineScope {
val avkortingsinfo =
async {
Expand All @@ -355,11 +357,14 @@ class BrevDataMapperRedigerbartUtfallVedtak(
}
val etterbetaling = async { behandlingService.hentEtterbetaling(behandlingId, bruker) }
val brevutfall = async { behandlingService.hentBrevutfall(behandlingId, bruker) }
val behandling = behandlingService.hentBehandling(behandlingId, bruker)

OmstillingsstoenadRevurderingRedigerbartUtfall.fra(
requireNotNull(avkortingsinfo.await()),
etterbetaling.await(),
behandling,
brevutfall.await() ?: throw ManglerBrevutfall(behandlingId),
etterbetaling.await(),
revurderingaarsak,
)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.etterlatte.brev.model

import no.nav.etterlatte.brev.BrevData
import no.nav.etterlatte.brev.HarVedlegg
import no.nav.etterlatte.brev.Slate
import no.nav.etterlatte.brev.behandling.Avdoed
Expand Down Expand Up @@ -75,6 +76,15 @@ data class OmstillingsstoenadBeregning(
val opphoerNesteAar: Boolean,
) : HarVedlegg

data class OmstillingsstoenadBeregningRedigerbartUtfall(
val virkningsdato: LocalDate,
val beregningsperioder: List<OmstillingsstoenadBeregningsperiode>,
val sisteBeregningsperiode: OmstillingsstoenadBeregningsperiode,
val sisteBeregningsperiodeNesteAar: OmstillingsstoenadBeregningsperiode?,
val oppphoersdato: LocalDate?,
val opphoerNesteAar: Boolean,
) : BrevData

data class OmstillingsstoenadBeregningsperiode(
val datoFOM: LocalDate,
val datoTOM: LocalDate?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import no.nav.etterlatte.brev.model.EtterbetalingDTO
import no.nav.etterlatte.brev.model.FeilutbetalingType
import no.nav.etterlatte.brev.model.InnholdMedVedlegg
import no.nav.etterlatte.brev.model.OmstillingsstoenadBeregning
import no.nav.etterlatte.brev.model.OmstillingsstoenadBeregningRedigerbartUtfall
import no.nav.etterlatte.brev.model.OmstillingsstoenadEtterbetaling
import no.nav.etterlatte.brev.model.fromDto
import no.nav.etterlatte.brev.model.toFeilutbetalingType
Expand All @@ -33,9 +34,6 @@ data class OmstillingsstoenadRevurdering(
val erOmgjoering: Boolean,
val datoVedtakOmgjoering: LocalDate?,
val beregning: OmstillingsstoenadBeregning,
val etterbetaling: OmstillingsstoenadEtterbetaling?,
val harFlereUtbetalingsperioder: Boolean,
val harUtbetaling: Boolean,
val omsRettUtenTidsbegrensning: Boolean,
val feilutbetaling: FeilutbetalingType,
val bosattUtland: Boolean,
Expand All @@ -53,7 +51,6 @@ data class OmstillingsstoenadRevurdering(
fun fra(
innholdMedVedlegg: InnholdMedVedlegg,
avkortingsinfo: Avkortingsinfo,
etterbetalingDTO: EtterbetalingDTO?,
trygdetid: TrygdetidDto,
brevutfall: BrevutfallDto,
revurderingaarsak: Revurderingaarsak?,
Expand Down Expand Up @@ -108,15 +105,6 @@ data class OmstillingsstoenadRevurdering(
opphoerNesteAar =
beregningsperioderOpphoer.forventetOpphoerDato?.year == (behandling.virkningstidspunkt().dato.year + 1),
),
etterbetaling =
etterbetalingDTO?.let {
Etterbetaling.fraOmstillingsstoenadBeregningsperioder(
etterbetalingDTO,
beregningsperioder,
)
},
harFlereUtbetalingsperioder = beregningsperioder.size > 1,
harUtbetaling = beregningsperioder.any { it.utbetaltBeloep.value > 0 },
omsRettUtenTidsbegrensning = omsRettUtenTidsbegrensning.hovedvilkaar.resultat == Utfall.OPPFYLT,
feilutbetaling = feilutbetaling,
bosattUtland = utlandstilknytning == UtlandstilknytningType.BOSATT_UTLAND,
Expand All @@ -126,20 +114,54 @@ data class OmstillingsstoenadRevurdering(
}

data class OmstillingsstoenadRevurderingRedigerbartUtfall(
val beregning: OmstillingsstoenadBeregningRedigerbartUtfall,
val erEndret: Boolean,
val erEtterbetaling: Boolean,
val etterbetaling: OmstillingsstoenadEtterbetaling?,
val feilutbetaling: FeilutbetalingType,
val harFlereUtbetalingsperioder: Boolean,
val harUtbetaling: Boolean,
val erEtterbetaling: Boolean,
) : BrevDataRedigerbar {
companion object {
fun fra(
avkortingsinfo: Avkortingsinfo,
etterbetaling: EtterbetalingDTO?,
behandling: DetaljertBehandling,
brevutfall: BrevutfallDto,
): OmstillingsstoenadRevurderingRedigerbartUtfall =
OmstillingsstoenadRevurderingRedigerbartUtfall(
feilutbetaling = toFeilutbetalingType(requireNotNull(brevutfall.feilutbetaling?.valg)),
harUtbetaling = avkortingsinfo.beregningsperioder.any { it.utbetaltBeloep.value > 0 },
etterbetaling: EtterbetalingDTO?,
revurderingaarsak: Revurderingaarsak?,
): OmstillingsstoenadRevurderingRedigerbartUtfall {
val beregningsperioder =
avkortingsinfo.beregningsperioder.map { it.tilOmstillingsstoenadBeregningsperiode() }

val beregningsperioderOpphoer = utledBeregningsperioderOpphoer(behandling, beregningsperioder)
val sisteBeregningsperiode = beregningsperioderOpphoer.sisteBeregningsperiode

return OmstillingsstoenadRevurderingRedigerbartUtfall(
beregning =
OmstillingsstoenadBeregningRedigerbartUtfall(
virkningsdato = avkortingsinfo.virkningsdato,
beregningsperioder = beregningsperioder,
sisteBeregningsperiode = sisteBeregningsperiode,
sisteBeregningsperiodeNesteAar = beregningsperioderOpphoer.sisteBeregningsperiodeNesteAar,
oppphoersdato = beregningsperioderOpphoer.forventetOpphoerDato,
opphoerNesteAar =
beregningsperioderOpphoer.forventetOpphoerDato?.year == (behandling.virkningstidspunkt().dato.year + 1),
),
erEndret =
avkortingsinfo.endringIUtbetalingVedVirk ||
revurderingaarsak == Revurderingaarsak.FRA_0UTBETALING_TIL_UTBETALING,
erEtterbetaling = etterbetaling != null,
etterbetaling =
etterbetaling?.let {
Etterbetaling.fraOmstillingsstoenadBeregningsperioder(
etterbetaling,
beregningsperioder,
)
},
feilutbetaling = toFeilutbetalingType(requireNotNull(brevutfall.feilutbetaling?.valg)),
harFlereUtbetalingsperioder = beregningsperioder.size > 1,
harUtbetaling = beregningsperioder.any { it.utbetaltBeloep.value > 0 },
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import no.nav.etterlatte.behandling.randomSakId
import no.nav.etterlatte.brev.adresse.AdresseService
import no.nav.etterlatte.brev.adresse.Avsender
import no.nav.etterlatte.brev.behandling.Avdoed
import no.nav.etterlatte.brev.behandling.AvkortetBeregningsperiode
import no.nav.etterlatte.brev.behandling.Avkortingsinfo
import no.nav.etterlatte.brev.behandling.Beregningsperiode
import no.nav.etterlatte.brev.behandling.ForenkletVedtak
Expand Down Expand Up @@ -238,22 +239,52 @@ internal class VedtaksbrevServiceTest {
val behandling = opprettGenerellBrevdata(sakType, vedtakType)
val mottaker = opprettMottaker()

every { db.hentBrevForBehandling(behandling.behandlingId!!, Brevtype.VEDTAK) } returns emptyList()
every { db.hentBrevForBehandling(BEHANDLING_ID, Brevtype.VEDTAK) } returns emptyList()
coEvery { brevdataFacade.hentGenerellBrevData(any(), any(), any(), any()) } returns behandling
coEvery { adresseService.hentAvsender(any(), any()) } returns opprettAvsender()
coEvery { adresseService.hentMottakerAdresse(any(), any()) } returns mottaker
coEvery { brevbakerService.hentRedigerbarTekstFraBrevbakeren(any()) } returns Slate(emptyList())
coEvery { behandlingService.hentVedtaksbehandlingKanRedigeres(any(), any()) } returns true
coEvery { behandlingService.hentEtterbetaling(any(), any()) } returns mockk()
coEvery { behandlingService.hentEtterbetaling(any(), any()) } returns null
coEvery { behandlingService.hentBrevutfall(any(), any()) } returns
mockk<BrevutfallDto> {
every { feilutbetaling?.valg } returns FeilutbetalingValg.JA_VARSEL
every { aldersgruppe } returns Aldersgruppe.UNDER_18
}

if (sakType == SakType.OMSTILLINGSSTOENAD) {
coEvery { behandlingService.hentBehandling(any(), any()) } returns
mockk {
every { opphoerFraOgMed } returns null
}

coEvery { beregningService.finnAvkortingsinfo(any(), any(), any(), any(), any()) } returns
Avkortingsinfo(LocalDate.now(), listOf(), false)
Avkortingsinfo(
LocalDate.now(),
listOf(
AvkortetBeregningsperiode(
LocalDate.now(),
LocalDate.now().plusYears(4),
Kroner(120000),
Kroner(100000),
Kroner(20000),
Kroner(10000),
40,
Kroner(5000),
Kroner(0),
40,
Kroner(5000),
BeregningsMetode.NASJONAL,
BeregningsMetode.BEST,
null,
null,
false,
),
),
false,
)
}

runBlocking {
vedtaksbrevService.opprettVedtaksbrev(
sakId,
Expand All @@ -276,6 +307,7 @@ internal class VedtaksbrevServiceTest {
}

verify {
db.hentBrevForBehandling(BEHANDLING_ID, Brevtype.VEDTAK)
db.opprettBrev(capture(brevSlot), ATTESTANT)
brevbaker wasNot Called
dokarkivService wasNot Called
Expand Down

0 comments on commit 375daaf

Please sign in to comment.