Skip to content

Commit

Permalink
Brevhåndtering for omregning (#6275)
Browse files Browse the repository at this point in the history
* Feil key for brevkode i river

* Egne endepunkter og metoder for brev for omregning

* Omregningsriver for vedtak ordner brev hvis relevant før vedtakshendelse sendes ut

* config

* Fikse tester

* Gjenbruker eksisterende endepunkt for opprett, journalfør og distribuer

* Feil config enum navn

* Dropper å avbryte hvis behandlingstatus ikke tillater det under omregning

* mer config

* Endre rekkefølge i opprett og ferdigstill brev og bruker eksisterende metode for ferdigstill/distribuer

* Endrer til å bruke vedtaksbrev route

* Legger til brevutfall etter opprettet behandling
  • Loading branch information
Bjodn authored Nov 13, 2024
1 parent f385f45 commit 95e03cd
Show file tree
Hide file tree
Showing 21 changed files with 353 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ interface BehandlingService {
opphoerFraOgMed: YearMonth,
)

fun hentAapenOmregning(sakId: SakId): UUID?
fun hentAapenOmregning(sakId: SakId): Revurdering?

fun oppdaterTidligereFamiliepleier(
behandlingId: UUID,
Expand Down Expand Up @@ -863,7 +863,7 @@ internal class BehandlingServiceImpl(
}
}

override fun hentAapenOmregning(sakId: SakId): UUID? =
override fun hentAapenOmregning(sakId: SakId): Revurdering? =
behandlingDao
.hentAlleRevurderingerISakMedAarsak(
sakId,
Expand All @@ -874,7 +874,7 @@ internal class BehandlingServiceImpl(
),
).singleOrNull {
it.status != BehandlingStatus.AVBRUTT && it.status != BehandlingStatus.IVERKSATT
}?.id
}

override fun oppdaterTidligereFamiliepleier(
behandlingId: UUID,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,20 @@ import no.nav.etterlatte.behandling.utland.SluttbehandlingUtlandBehandlinginfo
import no.nav.etterlatte.libs.common.behandling.BehandlingStatus
import no.nav.etterlatte.libs.common.behandling.BehandlingType
import no.nav.etterlatte.libs.common.behandling.Brevutfall
import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak
import no.nav.etterlatte.libs.common.behandling.SakType
import no.nav.etterlatte.libs.common.feilhaandtering.GenerellIkkeFunnetException
import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo
import org.slf4j.LoggerFactory
import java.util.UUID

class BehandlingInfoService(
private val behandlingInfoDao: BehandlingInfoDao,
private val behandlingService: BehandlingService,
private val behandlingsstatusService: BehandlingStatusService,
) {
private val logger = LoggerFactory.getLogger(BehandlingInfoService::class.java)

fun lagreBrevutfallOgEtterbetaling(
behandlingId: UUID,
brukerTokenInfo: BrukerTokenInfo,
Expand All @@ -28,7 +32,10 @@ class BehandlingInfoService(
behandlingService.hentBehandling(behandlingId)
?: throw GenerellIkkeFunnetException()

sjekkBehandlingKanEndres(behandling, opphoer)
logger.info("Behandling $behandlingId årsak ${behandling.revurderingsaarsak()}")
if (behandling.revurderingsaarsak()?.name != Revurderingaarsak.AARLIG_INNTEKTSJUSTERING.name) {
sjekkBehandlingKanEndres(behandling, opphoer)
}

val lagretBrevutfall = lagreBrevutfall(behandling, brevutfall)
val lagretEtterbetaling = lagreEtterbetaling(behandling, etterbetaling)
Expand Down Expand Up @@ -168,7 +175,12 @@ class BehandlingInfoService(
} else {
when (behandling.sak.sakType) {
SakType.BARNEPENSJON -> behandlingsstatusService.settBeregnet(behandling.id, brukerTokenInfo, false)
SakType.OMSTILLINGSSTOENAD -> behandlingsstatusService.settAvkortet(behandling.id, brukerTokenInfo, false)
SakType.OMSTILLINGSSTOENAD ->
behandlingsstatusService.settAvkortet(
behandling.id,
brukerTokenInfo,
false,
)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ class OmregningService(
) {
if (request.status == KjoeringStatus.FEILA) {
behandlingService.hentAapenOmregning(request.sakId)?.let {
behandlingService.avbrytBehandling(it, bruker)
if (it.status.kanAvbrytes()) {
behandlingService.avbrytBehandling(it.id, bruker)
}
}
}
omregningDao.oppdaterKjoering(request)
Expand Down
1 change: 1 addition & 0 deletions apps/etterlatte-brev-api/.nais/dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ spec:
- application: etterlatte-behandling
- application: etterlatte-testdata-behandler
- application: etterlatte-brev-kafka
- application: etterlatte-vedtaksvurdering-kafka
- application: azure-token-generator # https://docs.nais.io/auth/entra-id/how-to/generate/?h=token+azure
namespace: aura
cluster: dev-gcp
1 change: 1 addition & 0 deletions apps/etterlatte-brev-api/.nais/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,4 @@ spec:
- application: etterlatte-saksbehandling-ui
- application: etterlatte-behandling
- application: etterlatte-brev-kafka
- application: etterlatte-vedtaksvurdering-kafka
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,8 @@ fun Route.brevRoute(
post("pdf") {
withSakId(tilgangssjekker, skrivetilgang = true) { sakId ->
try {
val brev = pdfService.lagreOpplastaPDF(sakId, call.receiveMultipart().readAllParts(), brukerTokenInfo)
val brev =
pdfService.lagreOpplastaPDF(sakId, call.receiveMultipart().readAllParts(), brukerTokenInfo)
brev.onSuccess {
call.respond(brev)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ class BrevService(
private val logger = LoggerFactory.getLogger(this::class.java)
private val sikkerlogger = sikkerlogger()

/*
* Brev uten behandling (dødshendelse, etc)
*/
suspend fun opprettJournalfoerOgDistribuerRiver(
bruker: BrukerTokenInfo,
req: OpprettJournalfoerOgDistribuerRequest,
Expand Down Expand Up @@ -82,7 +85,10 @@ class BrevService(
return BrevDistribusjonResponse(brevId, true)
} catch (e: Exception) {
val oppdatertBrev = db.hentBrev(brevId)
logger.error("Feil opp sto under ferdigstill/journalfør/distribuer av brevID=$brevId, status: ${oppdatertBrev.status}", e)
logger.error(
"Feil opp sto under ferdigstill/journalfør/distribuer av brevID=$brevId, status: ${oppdatertBrev.status}",
e,
)
oppgaveService.opprettOppgaveForFeiletBrev(req.sakId, brevId, bruker)
return BrevDistribusjonResponse(brevId, false)
}
Expand Down Expand Up @@ -127,7 +133,10 @@ class BrevService(
return BrevStatusResponse(brevId, oppdatertBrev.status)
} catch (e: Exception) {
val oppdatertBrev = db.hentBrev(brevId)
logger.error("Feil opp sto under ferdigstill/journalfør/distribuer av brevID=$brevId, status: ${oppdatertBrev.status}", e)
logger.error(
"Feil opp sto under ferdigstill/journalfør/distribuer av brevID=$brevId, status: ${oppdatertBrev.status}",
e,
)

return BrevStatusResponse(brevId, oppdatertBrev.status)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import io.ktor.server.routing.route
import no.nav.etterlatte.brev.Brevtype
import no.nav.etterlatte.brev.JournalfoerBrevService
import no.nav.etterlatte.brev.VedtakTilJournalfoering
import no.nav.etterlatte.brev.model.GenererOgFerdigstillVedtaksbrev
import no.nav.etterlatte.libs.common.sak.SakId
import no.nav.etterlatte.libs.ktor.route.BEHANDLINGID_CALL_PARAMETER
import no.nav.etterlatte.libs.ktor.route.Tilgangssjekker
Expand Down Expand Up @@ -93,6 +94,28 @@ fun Route.vedtaksbrevRoute(
}
}

post("vedtak/generer-pdf-og-ferdigstill") {
kunSystembruker { systembruker ->
val behandlingId = behandlingId
val request = call.receive<GenererOgFerdigstillVedtaksbrev>()
logger.info("Generere og ferdigstille vedtaksbrev for behandling (behandlingId=$behandlingId)")

measureTimedValue {
service.genererPdfOgFerdigstill(request.behandlingId, request.brevId, systembruker)
}.also { (_, varighet) ->
logger.info(
"Generere og ferdigstilling av vedtaksbrev tok ${
varighet.toString(
DurationUnit.SECONDS,
2,
)
}",
)
call.respond(HttpStatusCode.OK)
}
}
}

post("vedtak/ferdigstill") {
withBehandlingId(tilgangssjekker, skrivetilgang = true) { behandlingId ->
logger.info("Ferdigstiller vedtaksbrev for behandling (id=$behandlingId)")
Expand All @@ -118,10 +141,12 @@ fun Route.vedtaksbrevRoute(
service.hentNyttInnhold(sakId, brevId, behandlingId, brukerTokenInfo, body.brevtype)
}.let { (brevPayload, varighet) ->
logger.info(
"Oppretting av nytt innhold til brev (id=$brevId) tok ${varighet.toString(
DurationUnit.SECONDS,
2,
)}",
"Oppretting av nytt innhold til brev (id=$brevId) tok ${
varighet.toString(
DurationUnit.SECONDS,
2,
)
}",
)
call.respond(brevPayload)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,13 @@ class VedtaksbrevService(
pdfGenerator.genererPdf(
id = id,
bruker = bruker,
avsenderRequest = { brukerToken, vedtak, enhet -> opprettAvsenderRequest(brukerToken, vedtak, enhet) },
avsenderRequest = { brukerToken, vedtak, enhet ->
opprettAvsenderRequest(
brukerToken,
vedtak,
enhet,
)
},
brevKodeMapping = { brevKodeMappingVedtak.brevKode(it) },
brevDataMapping = { brevDataMapperFerdigstilling.brevDataFerdigstilling(it) },
)
Expand All @@ -113,6 +119,15 @@ class VedtaksbrevService(
return pdf
}

suspend fun genererPdfOgFerdigstill(
behandlingId: UUID,
brevId: BrevID,
brukerTokenInfo: BrukerTokenInfo,
) {
genererPdf(brevId, brukerTokenInfo)
ferdigstillVedtaksbrev(behandlingId, brukerTokenInfo)
}

suspend fun ferdigstillVedtaksbrev(
behandlingId: UUID,
brukerTokenInfo: BrukerTokenInfo,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package no.nav.etterlatte.regulering

import no.nav.etterlatte.BehandlingService
import no.nav.etterlatte.libs.common.behandling.Aldersgruppe
import no.nav.etterlatte.libs.common.behandling.BrevutfallDto
import no.nav.etterlatte.libs.common.behandling.BrevutfallOgEtterbetalingDto
import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak
import no.nav.etterlatte.libs.common.grunnlag.Grunnlagsopplysning
import no.nav.etterlatte.libs.common.rapidsandrivers.setEventNameForHendelseType
import no.nav.etterlatte.libs.common.revurdering.AutomatiskRevurderingRequest
import no.nav.etterlatte.libs.common.sak.KjoeringStatus
Expand Down Expand Up @@ -53,6 +57,24 @@ internal class OmregningsHendelserBehandlingRiver(
),
)

if (omregningData.revurderingaarsak == Revurderingaarsak.AARLIG_INNTEKTSJUSTERING) {
behandlinger.leggInnBrevutfall(
BrevutfallOgEtterbetalingDto(
behandlingId = behandlingId,
opphoer = false, // TODO opphørfom?a
etterbetaling = null,
brevutfall =
BrevutfallDto(
behandlingId = behandlingId,
aldersgruppe = Aldersgruppe.OVER_18, // eller null siden oms?
feilutbetaling = null,
frivilligSkattetrekk = false,
kilde = Grunnlagsopplysning.automatiskSaksbehandler,
),
),
)
}

omregningData.endreSakType(sakType)
omregningData.endreBehandlingId(behandlingId)
omregningData.endreForrigeBehandlingid(forrigeBehandlingId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package no.nav.etterlatte.regulering

import no.nav.etterlatte.BehandlingService
import no.nav.etterlatte.brev.BrevRequestHendelseType
import no.nav.etterlatte.brev.Brevkoder
import no.nav.etterlatte.libs.common.behandling.Revurderingaarsak
import no.nav.etterlatte.libs.common.rapidsandrivers.setEventNameForHendelseType
import no.nav.etterlatte.libs.common.sak.KjoeringStatus
import no.nav.etterlatte.libs.common.sak.LagreKjoeringRequest
import no.nav.etterlatte.libs.common.vedtak.VedtakKafkaHendelseHendelseType
Expand All @@ -19,9 +15,7 @@ import no.nav.etterlatte.rapidsandrivers.ReguleringEvents.BEREGNING_BRUKT_OMREGN
import no.nav.etterlatte.rapidsandrivers.ReguleringEvents.BEREGNING_G_ETTER
import no.nav.etterlatte.rapidsandrivers.ReguleringEvents.BEREGNING_G_FOER
import no.nav.etterlatte.rapidsandrivers.ReguleringEvents.VEDTAK_BELOEP
import no.nav.etterlatte.rapidsandrivers.brevKode
import no.nav.etterlatte.rapidsandrivers.omregningData
import no.nav.etterlatte.rapidsandrivers.sakId
import no.nav.helse.rapids_rivers.JsonMessage
import no.nav.helse.rapids_rivers.MessageContext
import no.nav.helse.rapids_rivers.RapidsConnection
Expand All @@ -36,6 +30,7 @@ internal class VedtakAttestertRiver(

init {
initialiserRiver(rapidsConnection, VedtakKafkaHendelseHendelseType.ATTESTERT) {
// TODO lytt på noe annet? eksplisitt klar for ferdigstil elns?
validate { it.requireKey(OmregningDataPacket.KEY) }
validate { it.requireKey(OmregningDataPacket.SAK_ID) }
validate { it.requireKey(OmregningDataPacket.KJOERING) }
Expand Down Expand Up @@ -75,16 +70,10 @@ internal class VedtakAttestertRiver(
vedtakBeloep = bigDecimal(packet, VEDTAK_BELOEP),
)

// Årlig inntektsjustering jobb skal sende ut varsel og vedtak etter at sak er ferdig omregnet
if (packet.omregningData.revurderingaarsak == Revurderingaarsak.AARLIG_INNTEKTSJUSTERING) {
packet.setEventNameForHendelseType(BrevRequestHendelseType.OPPRETT_JOURNALFOER_OG_DISTRIBUER)
packet.brevKode = Brevkoder.OMS_INNTEKTSJUSTERING_VARSEL.name
packet.sakId = packet.omregningData.sakId
context.publish(packet.toJson())
} else {
behandlingService.lagreFullfoertKjoering(request)
logger.info("Sak $sakId er ferdig omregnet, status oppdatert til: ${request.status}")
}
// TODO Burde ikke ferdigstille kun basert på attestert men også om brev er ordentlig distribuert osv. Bør gjøre en sanity check er først?

behandlingService.lagreFullfoertKjoering(request)
logger.info("Sak $sakId er ferdig omregnet, status oppdatert til: ${request.status}")
}

private fun bigDecimal(
Expand Down
5 changes: 5 additions & 0 deletions apps/etterlatte-vedtaksvurdering-kafka/.nais/dev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,17 @@ spec:
value: api://dev-gcp.etterlatte.etterlatte-utbetaling/.default
- name: ETTERLATTE_UTBETALING_URL
value: http://etterlatte-utbetaling
- name: BREV_AZURE_SCOPE
value: api://dev-gcp.etterlatte.etterlatte-brev-api/.default
- name: ETTERLATTE_BREV_API_URL
value: http://etterlatte-brev-api
envFrom:
- secret: my-application-unleash-api-token
accessPolicy:
outbound:
rules:
- application: etterlatte-vedtaksvurdering
- application: etterlatte-utbetaling
- application: etterlatte-brev-api
external:
- host: etterlatte-unleash-api.nav.cloud.nais.io
5 changes: 5 additions & 0 deletions apps/etterlatte-vedtaksvurdering-kafka/.nais/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,17 @@ spec:
value: api://prod-gcp.etterlatte.etterlatte-utbetaling/.default
- name: ETTERLATTE_UTBETALING_URL
value: http://etterlatte-utbetaling
- name: BREV_AZURE_SCOPE
value: api://prod-gcp.etterlatte.etterlatte-brev-api/.default
- name: ETTERLATTE_BREV_API_URL
value: http://etterlatte-brev-api
envFrom:
- secret: my-application-unleash-api-token
accessPolicy:
outbound:
rules:
- application: etterlatte-vedtaksvurdering
- application: etterlatte-utbetaling
- application: etterlatte-brev-api
external:
- host: etterlatte-unleash-api.nav.cloud.nais.io
1 change: 1 addition & 0 deletions apps/etterlatte-vedtaksvurdering-kafka/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ dependencies {
implementation(project(":libs:etterlatte-behandling-model"))
implementation(project(":libs:etterlatte-utbetaling-model"))
implementation(project(":libs:etterlatte-vedtaksvurdering-model"))
implementation(project(":libs:etterlatte-brev-model"))
implementation(project(":libs:etterlatte-migrering-model"))
implementation(project(":libs:etterlatte-oppgave-model"))
implementation(project(":libs:etterlatte-funksjonsbrytere"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,15 @@ fun main() {
val appBuilder = AppBuilder(rapidEnv)
val vedtakKlient = appBuilder.lagVedtakKlient()
val utbetalingKlient = appBuilder.lagUtbetalingKlient()
val brevKlient = appBuilder.lagBrevKlient()
LoependeYtelserforespoerselRiver(rapidsConnection, vedtakKlient)
OpprettVedtakforespoerselRiver(rapidsConnection, vedtakKlient, utbetalingKlient, appBuilder.lagFeatureToggleService())
OpprettVedtakforespoerselRiver(
rapidsConnection,
vedtakKlient,
utbetalingKlient,
brevKlient,
appBuilder.lagFeatureToggleService(),
)
LagreIverksattVedtakRiver(rapidsConnection, vedtakKlient)
AttestertVedtakRiver(rapidsConnection, vedtakKlient)
SamordningMottattRiver(rapidsConnection, vedtakKlient)
Expand Down
Loading

0 comments on commit 95e03cd

Please sign in to comment.