|
| 1 | +@file:Suppress("HttpUrlsUsage") |
| 2 | + |
| 3 | +package no.nav.su.se.bakover.client.oppdrag.simulering |
| 4 | + |
| 5 | +import no.nav.su.se.bakover.client.oppdrag.utbetaling.UtbetalingRequest |
| 6 | +import no.nav.su.se.bakover.client.oppdrag.utbetaling.toUtbetalingRequest |
| 7 | +import no.nav.su.se.bakover.common.tid.periode.Periode |
| 8 | +import no.nav.system.os.tjenester.simulerfpservice.simulerfpserviceservicetypes.SimulerBeregningRequest |
| 9 | +import økonomi.domain.utbetaling.Utbetaling |
| 10 | + |
| 11 | +internal fun buildXmlRequestBody( |
| 12 | + utbetaling: Utbetaling.UtbetalingForSimulering, |
| 13 | +): String { |
| 14 | + return buildXmlRequestBody( |
| 15 | + simuleringsperiode = utbetaling.periode, |
| 16 | + request = toUtbetalingRequest(utbetaling).oppdragRequest, |
| 17 | + ) |
| 18 | +} |
| 19 | + |
| 20 | +/** |
| 21 | + * https://confluence.adeo.no/display/OKSY/Inputdata+fra+fagrutinen+til+Oppdragssystemet |
| 22 | + * |
| 23 | + * Effekt av å sette |
| 24 | + * [SimulerBeregningRequest.SimuleringsPeriode.datoSimulerFom] |
| 25 | + * [SimulerBeregningRequest.SimuleringsPeriode.datoSimulerTom] |
| 26 | + * |
| 27 | + * Ingen satt: |
| 28 | + * For nye (ikke utbetalt) perioder: |
| 29 | + * Kun simulering for første berørte måned returneres. |
| 30 | + * For eksisterende (utbetalt) perioder: |
| 31 | + * Simulering for alle berørte måneder returneres (opp til og med siste ikke utbetalte måned) |
| 32 | + * |
| 33 | + * Begge satt: |
| 34 | + * For nye (ikke utbetalte) perioder: |
| 35 | + * Simulering for alle måneder i perioden returneres. |
| 36 | + * For eksisterende (utbetalt) perioder: |
| 37 | + * Simulering for alle måneder i perioden returneres. OBS: Berørte måneder kan ligge utenfor valgt periode! |
| 38 | + * |
| 39 | + * Kun fra og med satt: |
| 40 | + * Samme som "Ingen satt", med nedre begrensning. Til og med bestemmes av utbetalingslinje. |
| 41 | + * OBS: Berørte måneder kan være tidligere enn valgt dato! |
| 42 | + * |
| 43 | + * Kun til og med satt: |
| 44 | + * Samme som "Begge satt", men øvre begrensning. Fra og med bestemmes av utbetalingslinje. |
| 45 | + * OBS: Berørte måneder kan være senere enn valgt dato! |
| 46 | + * |
| 47 | + */ |
| 48 | +internal fun buildXmlRequestBody( |
| 49 | + simuleringsperiode: Periode, |
| 50 | + request: UtbetalingRequest.OppdragRequest, |
| 51 | +): String { |
| 52 | + // TODO jah: attestantId settes til saksbehandleren, men bør egentlig loopes og settes til linje.attestant. Men det bør gjøres i en egen PR. |
| 53 | + // language=XML |
| 54 | + return """<ns2:simulerBeregningRequest xmlns:ns2="http://nav.no/system/os/tjenester/simulerFpService/simulerFpServiceGrensesnitt" |
| 55 | + xmlns:ns3="http://nav.no/system/os/entiteter/oppdragSkjema"> |
| 56 | + <request> |
| 57 | + <oppdrag> |
| 58 | + <kodeEndring>${request.kodeEndring.value}</kodeEndring> |
| 59 | + <kodeFagomraade>${request.kodeFagomraade}</kodeFagomraade> |
| 60 | + <fagsystemId>${request.fagsystemId}</fagsystemId> |
| 61 | + <utbetFrekvens>${request.utbetFrekvens.value}</utbetFrekvens> |
| 62 | + <oppdragGjelderId>${request.oppdragGjelderId}</oppdragGjelderId> |
| 63 | + <datoOppdragGjelderFom>${request.datoOppdragGjelderFom}</datoOppdragGjelderFom> |
| 64 | + <saksbehId>${request.saksbehId}</saksbehId> |
| 65 | + ${ |
| 66 | + request.oppdragsEnheter.joinToString(separator = "\n") { enhet -> |
| 67 | + """<ns3:enhet> |
| 68 | + <typeEnhet>${enhet.typeEnhet}</typeEnhet> |
| 69 | + <enhet>${enhet.enhet}</enhet> |
| 70 | + <datoEnhetFom>${enhet.datoEnhetFom}</datoEnhetFom> |
| 71 | + </ns3:enhet>""" |
| 72 | + } |
| 73 | + } |
| 74 | + ${ |
| 75 | + request.oppdragslinjer.joinToString(separator = "\n") { linje -> |
| 76 | + """<oppdragslinje> |
| 77 | + <kodeEndringLinje>${linje.kodeEndringLinje.value}</kodeEndringLinje> |
| 78 | + ${linje.kodeStatusLinje?.let { """<kodeStatusLinje>${linje.kodeStatusLinje.value}</kodeStatusLinje>""" } ?: ""} |
| 79 | + ${linje.datoStatusFom?.let { """<datoStatusFom>${linje.datoStatusFom}</datoStatusFom>""" } ?: ""} |
| 80 | + <delytelseId>${linje.delytelseId}</delytelseId> |
| 81 | + <kodeKlassifik>${linje.kodeKlassifik}</kodeKlassifik> |
| 82 | + <datoVedtakFom>${linje.datoVedtakFom}</datoVedtakFom> |
| 83 | + <datoVedtakTom>${linje.datoVedtakTom}</datoVedtakTom> |
| 84 | + <sats>${linje.sats}</sats> |
| 85 | + <fradragTillegg>${linje.fradragTillegg.value}</fradragTillegg> |
| 86 | + <typeSats>${linje.typeSats.value}</typeSats> |
| 87 | + <brukKjoreplan>${linje.brukKjoreplan.value}</brukKjoreplan> |
| 88 | + <saksbehId>${linje.saksbehId}</saksbehId> |
| 89 | + <utbetalesTilId>${linje.utbetalesTilId}</utbetalesTilId> |
| 90 | + ${linje.refFagsystemId?.let { """<refFagsystemId>${linje.refFagsystemId}</refFagsystemId>""" } ?: ""} |
| 91 | + ${linje.refDelytelseId?.let { """<refDelytelseId>${linje.refDelytelseId}</refDelytelseId>""" } ?: ""} |
| 92 | + ${ |
| 93 | + linje.grad?.let { grad -> |
| 94 | + """<ns3:grad> |
| 95 | + <typeGrad>${grad.typeGrad.value}</typeGrad> |
| 96 | + <grad>${grad.grad}</grad> |
| 97 | + </ns3:grad>""" |
| 98 | + } |
| 99 | + } |
| 100 | + <ns3:attestant> |
| 101 | + <attestantId>${linje.saksbehId }</attestantId> |
| 102 | + </ns3:attestant> |
| 103 | + |
| 104 | + </oppdragslinje>""" |
| 105 | + } |
| 106 | + } |
| 107 | + <henvisning>${request.utbetalingsId()}</henvisning> |
| 108 | + </oppdrag> |
| 109 | + <simuleringsPeriode> |
| 110 | + <datoSimulerFom>${simuleringsperiode.fraOgMed}</datoSimulerFom> |
| 111 | + <datoSimulerTom>${simuleringsperiode.tilOgMed}</datoSimulerTom> |
| 112 | + </simuleringsPeriode> |
| 113 | + </request> |
| 114 | +</ns2:simulerBeregningRequest>""" |
| 115 | +} |
0 commit comments