Skip to content

Commit

Permalink
Del opp kontrollsimulering
Browse files Browse the repository at this point in the history
  • Loading branch information
hestad committed Nov 6, 2023
1 parent 4a4b812 commit 17555e9
Show file tree
Hide file tree
Showing 93 changed files with 1,170 additions and 1,127 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package no.nav.su.se.bakover.client.oppdrag.simulering
import no.nav.su.se.bakover.client.oppdrag.utbetaling.UtbetalingRequest
import no.nav.su.se.bakover.client.oppdrag.utbetaling.toUtbetalingRequest
import no.nav.su.se.bakover.common.tid.periode.Periode
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimulerUtbetalingRequest
import no.nav.su.se.bakover.domain.oppdrag.Utbetaling
import no.nav.system.os.entiteter.oppdragskjema.Attestant
import no.nav.system.os.entiteter.oppdragskjema.Enhet
import no.nav.system.os.entiteter.oppdragskjema.Grad
Expand All @@ -16,16 +16,19 @@ import no.nav.system.os.tjenester.simulerfpservice.simulerfpservicegrensesnitt.S

/**
* https://confluence.adeo.no/display/OKSY/Inputdata+fra+fagrutinen+til+Oppdragssystemet
*
* Konstruktøren er kun ment brukt direkte fra tester. TODO jah: Se på mulighet for ikke å trenge builder steget og heller bare returnere sluttproduktet.
*
*/
internal class SimuleringRequestBuilder(
private val simuleringsperiode: Periode,
private val mappedRequest: UtbetalingRequest.OppdragRequest,
) {
constructor(
request: SimulerUtbetalingRequest,
utbetaling: Utbetaling.UtbetalingForSimulering,
) : this(
simuleringsperiode = request.simuleringsperiode,
mappedRequest = toUtbetalingRequest(request.utbetaling).oppdragRequest,
simuleringsperiode = utbetaling.periode,
mappedRequest = toUtbetalingRequest(utbetaling).oppdragRequest,
)

private val oppdragRequest = Oppdrag().apply {
Expand Down Expand Up @@ -64,7 +67,7 @@ internal class SimuleringRequestBuilder(
* Simulering for alle berørte måneder returneres (opp til og med siste ikke utbetalte måned)
*
* Begge satt:
* For nye (ikke utetalt) perioder:
* For nye (ikke utbetalte) perioder:
* Simulering for alle måneder i perioden returneres.
* For eksisterende (utbetalt) perioder:
* Simulering for alle måneder i perioden returneres. OBS: Berørte måneder kan ligge utenfor valgt periode!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import no.nav.su.se.bakover.common.tid.periode.Måned
import no.nav.su.se.bakover.common.tid.periode.Periode
import no.nav.su.se.bakover.domain.oppdrag.Fagområde
import no.nav.su.se.bakover.domain.oppdrag.Utbetaling
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimulerUtbetalingRequest
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimuleringFeilet
import no.nav.system.os.entiteter.beregningskjema.BeregningStoppnivaa
import no.nav.system.os.entiteter.beregningskjema.BeregningStoppnivaaDetaljer
Expand All @@ -37,13 +36,13 @@ private val defaultLog = LoggerFactory.getLogger("SimuleringResponseMapper")
* @param sikkerLogg For testing.
*/
fun SimulerBeregningResponse?.toSimulering(
request: SimulerUtbetalingRequest,
request: Utbetaling.UtbetalingForSimulering,
clock: Clock,
soapRequest: SimulerBeregningRequest,
log: Logger = defaultLog,
sikkerLogg: Logger = no.nav.su.se.bakover.common.sikkerLogg,
): Either<SimuleringFeilet.TekniskFeil, Simulering> {
val saksnummer = request.utbetaling.saksnummer
val saksnummer = request.saksnummer
// TODO jah: Ideelt sett burde vi fått tak i den rå XMLen, men CXF gjør det ikke så lett for oss (OutInterceptor).
// Siden dette er javaklasser uten toString() så serialiserer vi de før vi lagrer/logger.
val rawResponse: String? = this?.let {
Expand All @@ -52,8 +51,8 @@ fun SimulerBeregningResponse?.toSimulering(
val rawRequest: String = serializeSoapMessage(log = log, sikkerLogg = sikkerLogg, message = soapRequest, request = request)
return Either.catch {
if (this == null) {
request.utbetaling.mapTomResponsFraOppdrag(
simuleringsperiode = request.simuleringsperiode,
request.mapTomResponsFraOppdrag(
simuleringsperiode = request.periode,
clock = clock,
)
} else {
Expand Down Expand Up @@ -88,7 +87,7 @@ private fun serializeSoapMessage(
log: Logger,
sikkerLogg: Logger,
message: Any,
request: SimulerUtbetalingRequest,
request: Utbetaling.UtbetalingForSimulering,
): String {
return Either.catch {
xmlMapper.writeValueAsString(message)
Expand All @@ -111,7 +110,7 @@ private fun serializeSoapMessage(
private fun BeregningsPeriode.toSimulertPeriode(
saksnummer: Saksnummer,
rawResponse: String,
request: SimulerUtbetalingRequest,
request: Utbetaling.UtbetalingForSimulering,
rawRequest: String,
log: Logger,
): SimulertMåned {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import arrow.core.left
import com.ctc.wstx.exc.WstxEOFException
import no.nav.su.se.bakover.common.serialize
import no.nav.su.se.bakover.common.sikkerLogg
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimulerUtbetalingRequest
import no.nav.su.se.bakover.domain.oppdrag.Utbetaling
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimuleringClient
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimuleringFeilet
import no.nav.system.os.eksponering.simulerfpservicewsbinding.SimulerBeregningFeilUnderBehandling
Expand All @@ -28,13 +28,13 @@ internal class SimuleringSoapClient(
private val log = LoggerFactory.getLogger(this::class.java)

override fun simulerUtbetaling(
request: SimulerUtbetalingRequest,
utbetalingForSimulering: Utbetaling.UtbetalingForSimulering,
): Either<SimuleringFeilet, Simulering> {
val simulerRequest = SimuleringRequestBuilder(request).build()
val simulerRequest = SimuleringRequestBuilder(utbetalingForSimulering).build()
return try {
simulerFpService.simulerBeregning(simulerRequest)?.response.let { response: SimulerBeregningResponse? ->
response.toSimulering(
request = request,
request = utbetalingForSimulering,
soapRequest = simulerRequest,
clock = clock,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import arrow.core.right
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.extensions.idag
import no.nav.su.se.bakover.common.tid.periode.Måned
import no.nav.su.se.bakover.domain.oppdrag.Utbetaling
import no.nav.su.se.bakover.domain.oppdrag.Utbetalingslinje
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimulerUtbetalingRequest
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimuleringClient
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimuleringFeilet
import no.nav.su.se.bakover.domain.oppdrag.utbetaling.TidslinjeForUtbetalinger
Expand All @@ -31,13 +31,12 @@ class SimuleringStub(
val utbetalingRepo: UtbetalingRepo,
) : SimuleringClient {

override fun simulerUtbetaling(request: SimulerUtbetalingRequest): Either<SimuleringFeilet, Simulering> {
return simulerUtbetalinger(request).right()
override fun simulerUtbetaling(utbetalingForSimulering: Utbetaling.UtbetalingForSimulering): Either<SimuleringFeilet, Simulering> {
return simulerUtbetalinger(utbetalingForSimulering).right()
}

private fun simulerUtbetalinger(request: SimulerUtbetalingRequest): Simulering {
val utbetaling = request.utbetaling
val simuleringsperiode = request.simuleringsperiode
private fun simulerUtbetalinger(utbetaling: Utbetaling.UtbetalingForSimulering): Simulering {
val simuleringsperiode = utbetaling.periode
val eksisterendeUtbetalinger =
utbetalingRepo.hentOversendteUtbetalinger(
sakId = utbetaling.sakId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.tid.periode.januar
import no.nav.su.se.bakover.domain.oppdrag.Utbetaling
import no.nav.su.se.bakover.domain.oppdrag.avstemming.Avstemmingsnøkkel
import no.nav.su.se.bakover.domain.oppdrag.simulering.SimulerUtbetalingForPeriode
import no.nav.su.se.bakover.test.fixedTidspunkt
import no.nav.su.se.bakover.test.utbetaling.utbetalingslinjeNy
import no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.SimulerBeregningRequest
Expand All @@ -36,24 +35,21 @@ internal class SimuleringRequestBuilderValidationTest {
fun `valider soap xml mot xsd skjema`() {
val eksisterendeOppdragslinjeid = UUID30.randomUUID()
val simuleringRequest = SimuleringRequestBuilder(
request = SimulerUtbetalingForPeriode(
utbetaling = Utbetaling.UtbetalingForSimulering(
opprettet = fixedTidspunkt,
sakId = sakId,
saksnummer = saksnummer,
fnr = Fnr("12345678910"),
utbetalingslinjer = nonEmptyListOf(
utbetalingslinjeNy(
periode = januar(2020),
beløp = 10,
forrigeUtbetalingslinjeId = eksisterendeOppdragslinjeid,
),
Utbetaling.UtbetalingForSimulering(
opprettet = fixedTidspunkt,
sakId = sakId,
saksnummer = saksnummer,
fnr = Fnr("12345678910"),
utbetalingslinjer = nonEmptyListOf(
utbetalingslinjeNy(
periode = januar(2020),
beløp = 10,
forrigeUtbetalingslinjeId = eksisterendeOppdragslinjeid,
),
behandler = NavIdentBruker.Saksbehandler("Z123"),
avstemmingsnøkkel = Avstemmingsnøkkel(opprettet = fixedTidspunkt),
sakstype = Sakstype.UFØRE,
),
simuleringsperiode = januar(2020),
behandler = NavIdentBruker.Saksbehandler("Z123"),
avstemmingsnøkkel = Avstemmingsnøkkel(opprettet = fixedTidspunkt),
sakstype = Sakstype.UFØRE,
),
).build().request

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import no.nav.su.se.bakover.test.argThat
import no.nav.su.se.bakover.test.fixedClock
import no.nav.su.se.bakover.test.getOrFail
import no.nav.su.se.bakover.test.simulering.SimuleringResponseData.Companion.simuleringXml
import no.nav.su.se.bakover.test.simulering.simuleringUtbetalingRequest
import no.nav.su.se.bakover.test.simulering.utbetalingForSimulering
import no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.SimulerBeregningResponse
import org.junit.jupiter.api.Test
import org.mockito.kotlin.mock
Expand Down Expand Up @@ -75,7 +75,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
val actualSimulering = responseMedFremtidigUtbetaling.toSimulering(
request = request,
clock = fixedClock,
Expand Down Expand Up @@ -172,7 +172,7 @@ internal class SimuleringResponseMapperTest {
simuleringXml,
GrensesnittResponse::class.java,
).response
val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
val actualSimulering = responseMedFremtidigUtbetaling.toSimulering(
request = request,
clock = fixedClock,
Expand Down Expand Up @@ -266,7 +266,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
val expectedSimulering = Simulering(
gjelderId = fnr,
gjelderNavn = navn,
Expand Down Expand Up @@ -514,7 +514,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
val actualSimulering = responseMedEtterbetaling.toSimulering(
request = request,
clock = fixedClock,
Expand Down Expand Up @@ -713,7 +713,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
val expectedSimulering = Simulering(
gjelderId = fnr,
gjelderNavn = navn,
Expand Down Expand Up @@ -787,7 +787,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
val logMock = mock<Logger>()
val sikkerLoggMock = mock<Logger>()
val soapRequest = SimuleringRequestBuilder(request).build()
Expand Down Expand Up @@ -828,7 +828,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
responseMedFremtidigUtbetaling.toSimulering(
request = request,
clock = fixedClock,
Expand All @@ -852,7 +852,7 @@ internal class SimuleringResponseMapperTest {
GrensesnittResponse::class.java,
).response

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
responseMedFremtidigUtbetaling.toSimulering(
request = request,
clock = fixedClock,
Expand All @@ -868,7 +868,7 @@ internal class SimuleringResponseMapperTest {
rawResponse,
)

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
responseMedÅpenFeilkonto.toSimulering(
request = request,
clock = fixedClock,
Expand Down Expand Up @@ -1081,7 +1081,7 @@ internal class SimuleringResponseMapperTest {
rawResponse,
)

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
responseMedÅpenFeilkonto.toSimulering(
request = request,
clock = fixedClock,
Expand Down Expand Up @@ -1319,7 +1319,7 @@ internal class SimuleringResponseMapperTest {
rawResponse,
)

val request = simuleringUtbetalingRequest()
val request = utbetalingForSimulering()
responseMedÅpenFeilkonto.toSimulering(
request = request,
clock = fixedClock,
Expand Down Expand Up @@ -1543,7 +1543,7 @@ internal class SimuleringResponseMapperTest {

response.simulering.belop shouldBe BigDecimal("2480.00")

val request = simuleringUtbetalingRequest(
val request = utbetalingForSimulering(
saksnummer = Saksnummer.parse("2021"),
)
val actualSimulering = response.toSimulering(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import no.nav.su.se.bakover.common.tid.periode.september
import no.nav.su.se.bakover.test.fixedClockAt
import no.nav.su.se.bakover.test.getOrFail
import no.nav.su.se.bakover.test.simulering.simuleringDobbelTilbakeføringMedTrekkXml
import no.nav.su.se.bakover.test.simulering.simuleringUtbetalingRequest
import no.nav.su.se.bakover.test.simulering.utbetalingForSimulering
import no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.SimulerBeregningResponse
import org.junit.jupiter.api.Test
import økonomi.domain.simulering.Kontobeløp
Expand All @@ -34,7 +34,7 @@ internal class SimuleringResponseMapperXmlTest {
// Da skal oktober bli etterbetalt, mens ikke månedene etter.
val clock = fixedClockAt(1.november(2023))
val response = xmlMapper.readValue<SimulerBeregningResponse>(simuleringDobbelTilbakeføringMedTrekkXml)
val request = simuleringUtbetalingRequest(
val request = utbetalingForSimulering(
saksnummer = Saksnummer(2021),
clock = clock,
)
Expand Down
Loading

0 comments on commit 17555e9

Please sign in to comment.