Skip to content

Commit

Permalink
Oppretter avkorting med inntekt fra omregningdata
Browse files Browse the repository at this point in the history
  • Loading branch information
Bjodn committed Nov 26, 2024
1 parent 8f351f8 commit 45122fa
Show file tree
Hide file tree
Showing 7 changed files with 79 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import io.ktor.http.isSuccess
import kotlinx.coroutines.runBlocking
import no.nav.etterlatte.grunnbeloep.Grunnbeloep
import no.nav.etterlatte.libs.common.beregning.AarligInntektsjusteringAvkortingRequest
import no.nav.etterlatte.libs.common.beregning.MottattInntektsjusteringAvkortigRequest
import no.nav.etterlatte.libs.common.feilhaandtering.checkInternFeil
import java.util.UUID

Expand Down Expand Up @@ -84,6 +85,14 @@ class BeregningService(
}
}

fun omregnMottattInntektsjustering(request: MottattInntektsjusteringAvkortigRequest): HttpResponse =
runBlocking {
beregningApp.post("$url/api/beregning/avkorting/mottatt-inntektsjustering") {
contentType(ContentType.Application.Json)
setBody(request)
}
}

suspend fun hentGrunnbeloep(): Grunnbeloep =
beregningApp
.get("$url/api/beregning/grunnbeloep")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import no.nav.etterlatte.libs.common.beregning.AvkortetYtelseDto
import no.nav.etterlatte.libs.common.beregning.AvkortingDto
import no.nav.etterlatte.libs.common.beregning.BeregningDTO
import no.nav.etterlatte.libs.common.beregning.Beregningsperiode
import no.nav.etterlatte.libs.common.beregning.MottattInntektsjusteringAvkortigRequest
import no.nav.etterlatte.libs.common.feilhaandtering.ForespoerselException
import no.nav.etterlatte.libs.common.rapidsandrivers.setEventNameForHendelseType
import no.nav.etterlatte.rapidsandrivers.BEREGNING_KEY
Expand All @@ -32,6 +33,7 @@ import tidspunkt.erFoerEllerPaa
import java.math.BigDecimal
import java.math.RoundingMode
import java.time.LocalDate
import java.time.YearMonth
import java.util.UUID
import kotlin.math.abs

Expand All @@ -49,6 +51,7 @@ internal class OmregningHendelserBeregningRiver(
validate { it.requireKey(OmregningDataPacket.FORRIGE_BEHANDLING_ID) }
validate { it.requireKey(OmregningDataPacket.SAK_TYPE) }
validate { it.requireKey(OmregningDataPacket.FRA_DATO) }
validate { it.interestedIn(OmregningDataPacket.INNTEKTSJUSTERING) }
}
}

Expand Down Expand Up @@ -106,6 +109,19 @@ internal class OmregningHendelserBeregningRiver(
).body<AvkortingDto>()
}

Revurderingaarsak.INNTEKTSENDRING -> {
val omregningInntekt = omregningData.hentInntektsjustering()
beregningService
.omregnMottattInntektsjustering(
MottattInntektsjusteringAvkortigRequest(
behandlingId = behandlingId,
virkningstidspunkt = YearMonth.from(omregningData.hentFraDato()),
inntekt = omregningInntekt.inntekt,
inntektUtland = omregningInntekt.inntektUtland,
),
).body<AvkortingDto>()
}

else -> {
beregningService
.omregnAvkorting(behandlingId, behandlingViOmregnerFra)
Expand Down
1 change: 1 addition & 0 deletions apps/etterlatte-beregning/src/main/kotlin/Application.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class Server(
behandlingKlient,
avkortingTidligAlderspensjonService,
aarligInntektsjusteringService,
mottattInntektsjusteringService,
)
ytelseMedGrunnlag(beregningOgAvkortingBrevService, behandlingKlient)
grunnbeloep(grunnbeloepService)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagDto
import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagKildeDto
import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagLagreDto
import no.nav.etterlatte.libs.common.beregning.AvkortingOverstyrtInnvilgaMaanederDto
import no.nav.etterlatte.libs.common.beregning.MottattInntektsjusteringAvkortigRequest
import no.nav.etterlatte.libs.ktor.route.BEHANDLINGID_CALL_PARAMETER
import no.nav.etterlatte.libs.ktor.route.uuid
import no.nav.etterlatte.libs.ktor.route.withBehandlingId
Expand All @@ -28,6 +29,7 @@ fun Route.avkorting(
behandlingKlient: BehandlingKlient,
tidligAlderspensjonService: AvkortingTidligAlderspensjonService,
aarligInntektsjusteringService: AarligInntektsjusteringService,
mottattInntektsjusteringService: MottattInntektsjusteringService,
) {
val logger = LoggerFactory.getLogger("AvkortingRoute")

Expand Down Expand Up @@ -108,6 +110,14 @@ fun Route.avkorting(
)
call.respond(respons.toDto())
}

post("mottatt-inntektsjustering") {
val request = call.receive<MottattInntektsjusteringAvkortigRequest>()
logger.info("Oppretter avkorting etter mottatt inntektsjustering fra bruker behandling=${request.behandlingId}")
val respons =
mottattInntektsjusteringService.opprettAvkortingMedBrukeroppgittInntekt(request, brukerTokenInfo)
call.respond(respons.toDto())
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package no.nav.etterlatte.avkorting

import no.nav.etterlatte.libs.common.beregning.AvkortingGrunnlagLagreDto
import no.nav.etterlatte.libs.common.beregning.MottattInntektsjusteringAvkortigRequest
import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo

class MottattInntektsjusteringService(
private val avkortingService: AvkortingService,
) {
suspend fun opprettAvkortingMedBrukeroppgittInntekt(
request: MottattInntektsjusteringAvkortigRequest,
brukerTokenInfo: BrukerTokenInfo,
): Avkorting {
val (behandlingId, virkningstidspunkt, inntekt, inntektUtland) = request

avkortingService.tilstandssjekk(behandlingId, brukerTokenInfo)

// Avkorting opprettes her med tidligere årsoppgjør
avkortingService.hentOpprettEllerReberegnAvkorting(behandlingId, brukerTokenInfo)

val nyttGrunnlag =
AvkortingGrunnlagLagreDto(
inntektTom = inntekt,
fratrekkInnAar = 0, // TODO må tilpasses når vi skal støtte inntektsjustering inneværende år
inntektUtlandTom = inntektUtland,
fratrekkInnAarUtland = 0, // TODO må tilpasses når vi skal støtte inntektsjustering inneværende år
spesifikasjon = "Mottatt inntekt fra bruker gjennom selvbetjening", // TODO avklar med fag
fom = virkningstidspunkt,
)
avkortingService.beregnAvkortingMedNyttGrunnlag(behandlingId, brukerTokenInfo, nyttGrunnlag)

return avkortingService.hentAvkorting(behandlingId) ?: throw AvkortingFinnesIkkeException(behandlingId)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import no.nav.etterlatte.avkorting.AvkortingReparerAarsoppgjoeret
import no.nav.etterlatte.avkorting.AvkortingRepository
import no.nav.etterlatte.avkorting.AvkortingService
import no.nav.etterlatte.avkorting.AvkortingTidligAlderspensjonService
import no.nav.etterlatte.avkorting.MottattInntektsjusteringService
import no.nav.etterlatte.beregning.AnvendtTrygdetidRepository
import no.nav.etterlatte.beregning.BeregnBarnepensjonService
import no.nav.etterlatte.beregning.BeregnOmstillingsstoenadService
Expand Down Expand Up @@ -131,6 +132,7 @@ class ApplicationContext {
avkortingRepository = avkortingRepository,
sanksjonService = sanksjonService,
)
val mottattInntektsjusteringService = MottattInntektsjusteringService(avkortingService)
val beregningOgAvkortingBrevService =
BeregningOgAvkortingBrevService(
beregningRepository = beregningRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,10 @@ data class AarligInntektsjusteringAvkortingRequest(
val forrigeBehandling: UUID,
val nyBehandling: UUID,
)

data class MottattInntektsjusteringAvkortigRequest(
val behandlingId: UUID,
val virkningstidspunkt: YearMonth,
val inntekt: Int,
val inntektUtland: Int,
)

0 comments on commit 45122fa

Please sign in to comment.