Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

egne tilstander for å håndtere hvert enkelt oppdrag #101

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ private fun mapUtbetaling(utbetaling: Utbetaling) = GraphQLUtbetaling(
Utbetalingstatus.GodkjentUtenUtbetaling -> GraphQLUtbetalingstatus.GodkjentUtenUtbetaling
Utbetalingstatus.IkkeGodkjent -> GraphQLUtbetalingstatus.IkkeGodkjent
Utbetalingstatus.Overført -> GraphQLUtbetalingstatus.Overfort
Utbetalingstatus.Ubetalt -> GraphQLUtbetalingstatus.Ubetalt
Utbetalingstatus.IkkeUtbetalt -> GraphQLUtbetalingstatus.Ubetalt
Utbetalingstatus.Utbetalt -> GraphQLUtbetalingstatus.Utbetalt
},
arbeidsgiverNettoBelop = utbetaling.arbeidsgiverNettoBeløp,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,7 @@ enum class GraphQLUtbetalingstatus {
GodkjentUtenUtbetaling,
IkkeGodkjent,
Overfort,
@Deprecated("skal slettes")
Sendt,
Ubetalt,
@Deprecated("skal slettes")
UtbetalingFeilet,
Utbetalt
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package no.nav.helse.spleis.e2e

import com.fasterxml.jackson.databind.JsonNode
import com.zaxxer.hikari.HikariConfig
import java.time.LocalDate
import java.time.LocalDateTime
Expand Down Expand Up @@ -419,15 +420,19 @@ internal abstract class AbstractEndToEndMediatorTest {
}

protected fun sendUtbetaling(utbetalingOK: Boolean = true) {
val etterspurteBehov = testRapid.inspektør.alleEtterspurteBehov(Utbetaling)
etterspurteBehov.forEach { behov ->
val (_, message) = meldingsfabrikk.lagUtbetaling(
fagsystemId = behov.path("fagsystemId").asText(),
utbetalingId = behov.path("utbetalingId").asText(),
utbetalingOK = utbetalingOK
)
testRapid.sendTestMessage(message)
}
val etterspurtBehov = testRapid.inspektør.etterspurteBehov(Utbetaling)
sendUtbetaling(utbetalingOK, etterspurtBehov)
val personbehov = testRapid.inspektør.etterspurteBehov(Utbetaling).takeUnless { etterspurtBehov === it } ?: return
sendUtbetaling(utbetalingOK, personbehov)
}

private fun sendUtbetaling(utfall: Boolean, behov: JsonNode) {
val (_, kvitteringmelding) = meldingsfabrikk.lagUtbetaling(
fagsystemId = behov.path("fagsystemId").asText(),
utbetalingId = behov.path("utbetalingId").asText(),
utbetalingOK = utfall
)
testRapid.sendTestMessage(kvitteringmelding)
}

protected fun sendAvstemming() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ internal class KunEnArbeidsgiverMediatorTest : AbstractEndToEndMediatorTest() {
sendSimulering(0, SimuleringMessage.Simuleringstatus.OK)
sendUtbetalingsgodkjenning(0)
sendUtbetaling()
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "OVERFØRT", "UTBETALT")
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING", "UTBETALT")
assertTilstander(
0,
"AVVENTER_INFOTRYGDHISTORIKK",
Expand Down Expand Up @@ -169,8 +169,8 @@ internal class KunEnArbeidsgiverMediatorTest : AbstractEndToEndMediatorTest() {
val fagsystemId = testRapid.inspektør.alleEtterspurteBehov(Utbetaling).last { it.path(Utbetaling.name).path("fagområde").asText() == "SPREF"}.path(Utbetaling.name).path("fagsystemId").asText()
sendAnnullering(fagsystemId)
sendUtbetaling()
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "OVERFØRT", "UTBETALT")
assertUtbetalingTilstander(1, "NY", "IKKE_UTBETALT", "OVERFØRT", "ANNULLERT")
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING", "UTBETALT")
assertUtbetalingTilstander(1, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING", "ANNULLERT")
val annulleringsmelding = testRapid.inspektør.siste("utbetaling_annullert")

assertEquals(UNG_PERSON_FNR_2018, annulleringsmelding.path("fødselsnummer").asText())
Expand Down Expand Up @@ -232,7 +232,7 @@ internal class KunEnArbeidsgiverMediatorTest : AbstractEndToEndMediatorTest() {
sendSimulering(0, SimuleringMessage.Simuleringstatus.OK)
sendUtbetalingsgodkjenning(0, true)
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "FORKASTET")
assertUtbetalingTilstander(1, "NY", "IKKE_UTBETALT", "OVERFØRT")
assertUtbetalingTilstander(1, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING")
assertTilstander(
0,
"AVVENTER_INFOTRYGDHISTORIKK",
Expand Down Expand Up @@ -273,7 +273,7 @@ internal class KunEnArbeidsgiverMediatorTest : AbstractEndToEndMediatorTest() {
sendUtbetalingsgodkjenning(0, true)
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "FORKASTET")
assertUtbetalingTilstander(1, "NY", "IKKE_UTBETALT", "FORKASTET")
assertUtbetalingTilstander(2, "NY", "IKKE_UTBETALT", "OVERFØRT")
assertUtbetalingTilstander(2, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING")
assertTilstander(
0,
"AVVENTER_INFOTRYGDHISTORIKK",
Expand Down Expand Up @@ -384,7 +384,7 @@ internal class KunEnArbeidsgiverMediatorTest : AbstractEndToEndMediatorTest() {
"TIL_UTBETALING",
"AVSLUTTET"
)
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "OVERFØRT", "UTBETALT")
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING", "UTBETALT")

assertEquals(1, testRapid.inspektør.meldinger("vedtak_fattet").size)
assertEquals(vedtakFattetTidspunkt, testRapid.inspektør.siste("vedtak_fattet")["vedtakFattetTidspunkt"].asLocalDateTime())
Expand Down Expand Up @@ -495,8 +495,8 @@ internal class KunEnArbeidsgiverMediatorTest : AbstractEndToEndMediatorTest() {
sendSimulering(0, SimuleringMessage.Simuleringstatus.OK, forventedeFagområder = setOf("SPREF", "SP"))
sendUtbetalingsgodkjenning(0)
sendUtbetaling()
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "OVERFØRT", "UTBETALT")
assertEquals(2, testRapid.inspektør.alleEtterspurteBehov(Utbetaling).size)
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "AVVENTER_KVITTERINGER", "AVVENTER_ARBEIDSGIVERKVITTERING", "UTBETALT")
assertEquals(3, testRapid.inspektør.alleEtterspurteBehov(Utbetaling).size)
assertTilstander(
0,
"AVVENTER_INFOTRYGDHISTORIKK",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ internal class PåminnelserTest : AbstractEndToEndMediatorTest() {
sendYtelser(0)
sendSimulering(0, SimuleringMessage.Simuleringstatus.OK)
sendUtbetalingsgodkjenning(0)
sendNyUtbetalingpåminnelse(0, Utbetalingstatus.OVERFØRT)
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "OVERFØRT")
sendNyUtbetalingpåminnelse(0, Utbetalingstatus.AVVENTER_ARBEIDSGIVERKVITTERING)
assertUtbetalingTilstander(0, "NY", "IKKE_UTBETALT", "AVVENTER_ARBEIDSGIVERKVITTERING")
assertEquals(2, (0 until testRapid.inspektør.antall()).filter { "Utbetaling" in testRapid.inspektør.melding(it).path("@behov").map(JsonNode::asText) }.size)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ internal class UtbetalingkontraktTest : AbstractEndToEndMediatorTest() {
val utbetalt = testRapid.inspektør.siste("utbetaling_utbetalt")
assertUtbetalt(utbetalt)
val utbetalingEndret = testRapid.inspektør.siste("utbetaling_endret")
assertUtbetalingEndret(utbetalingEndret, "OVERFØRT", "UTBETALT")
assertUtbetalingEndret(utbetalingEndret, "AVVENTER_ARBEIDSGIVERKVITTERING", "UTBETALT")
}

@Test
Expand Down Expand Up @@ -268,7 +268,7 @@ internal class UtbetalingkontraktTest : AbstractEndToEndMediatorTest() {
val utbetalt = testRapid.inspektør.siste("utbetaling_annullert")
assertAnnullert(utbetalt)
val utbetalingEndret = testRapid.inspektør.siste("utbetaling_endret")
assertUtbetalingEndret(utbetalingEndret, "OVERFØRT", "ANNULLERT", true)
assertUtbetalingEndret(utbetalingEndret, "AVVENTER_ARBEIDSGIVERKVITTERING", "ANNULLERT", true)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ enum class Utbetalingstatus {
GodkjentUtenUtbetaling,
IkkeGodkjent,
Overført,
Ubetalt,
IkkeUtbetalt,
Utbetalt
}

Expand Down Expand Up @@ -229,14 +229,14 @@ class Utbetaling(
fun erAnnullering() = type == Utbetalingtype.ANNULLERING
private fun erForkastetRevurdering() = status == Utbetalingstatus.Forkastet && type == Utbetalingtype.REVURDERING
fun utbetales() = status in listOf(Utbetalingstatus.Overført)
fun ikkeBetalt() = status == Utbetalingstatus.Ubetalt
fun ikkeBetalt() = status == Utbetalingstatus.IkkeUtbetalt
fun utbetalt() = status in listOf(Utbetalingstatus.Utbetalt, Utbetalingstatus.GodkjentUtenUtbetaling)
fun kanUtbetales() = !erForkastetRevurdering()
fun tilGodkjenning() = tilGodkjenning

fun hørerSammen(other: Utbetaling) = korrelasjonsId == other.korrelasjonsId

internal fun revurderingFeilet(tilstand: Vedtaksperiode.Vedtaksperiodetilstand) = (erForkastetRevurdering() || status in setOf(Utbetalingstatus.IkkeGodkjent, Utbetalingstatus.Ubetalt)) && tilstand == Vedtaksperiode.RevurderingFeilet
internal fun revurderingFeilet(tilstand: Vedtaksperiode.Vedtaksperiodetilstand) = (erForkastetRevurdering() || status in setOf(Utbetalingstatus.IkkeGodkjent, Utbetalingstatus.IkkeUtbetalt)) && tilstand == Vedtaksperiode.RevurderingFeilet
internal fun venterPåRevurdering(tilstand: Vedtaksperiode.Vedtaksperiodetilstand) = tilstand == Vedtaksperiode.AvventerRevurdering

data class Vurdering(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ import no.nav.helse.serde.api.speil.builders.IVilkårsgrunnlag
import no.nav.helse.serde.api.speil.builders.IVilkårsgrunnlagHistorikk
import no.nav.helse.serde.api.speil.builders.PeriodeVarslerBuilder
import no.nav.helse.Alder
import kotlin.properties.Delegates
import no.nav.helse.utbetalingslinjer.Utbetalingstatus.*

internal class Generasjoner(perioder: Tidslinjeperioder) {
private val generasjoner: List<Generasjon> = perioder.toGenerasjoner()
Expand Down Expand Up @@ -354,19 +354,32 @@ internal class IUtbetaling(
val gjenståendeSykedager: Int?,
val forbrukteSykedager: Int?,
private val type: String,
private val tilstand: String,
tilstand: no.nav.helse.utbetalingslinjer.Utbetalingstatus,
private val arbeidsgiverNettoBeløp: Int,
private val personNettoBeløp: Int,
private val arbeidsgiverFagsystemId: String,
private val personFagsystemId: String,
private val vurdering: Utbetaling.Vurdering?,
private val oppdrag: Map<String, SpeilOppdrag>
) {
private val status = when (tilstand) {
IKKE_UTBETALT -> Utbetalingstatus.IkkeUtbetalt
IKKE_GODKJENT -> Utbetalingstatus.IkkeGodkjent
GODKJENT -> Utbetalingstatus.Godkjent
AVVENTER_ARBEIDSGIVERKVITTERING,
AVVENTER_PERSONKVITTERING,
AVVENTER_KVITTERINGER -> Utbetalingstatus.Overført
UTBETALT -> Utbetalingstatus.Utbetalt
GODKJENT_UTEN_UTBETALING -> Utbetalingstatus.GodkjentUtenUtbetaling
ANNULLERT -> Utbetalingstatus.Annullert
FORKASTET -> Utbetalingstatus.Forkastet
else -> error("Har ikke mappingregel for $tilstand")
}
private var erTilGodkjenning = false
fun erSammeSom(other: IUtbetaling) = id == other.id
fun fagsystemId() = arbeidsgiverFagsystemId
fun hørerSammen(other: IUtbetaling) = korrelasjonsId == other.korrelasjonsId
fun forkastet() = tilstand == "Forkastet"
fun forkastet() = status == Utbetalingstatus.Forkastet

fun settTilGodkjenning(vedtaksperioder: List<IVedtaksperiode>) {
erTilGodkjenning = vedtaksperioder.tilGodkjenning(this)
Expand All @@ -375,7 +388,7 @@ internal class IUtbetaling(
fun toDTO(): Utbetaling {
return Utbetaling(
type = Utbetalingtype.valueOf(type),
status = Utbetalingstatus.valueOf(tilstand),
status = status,
arbeidsgiverNettoBeløp = arbeidsgiverNettoBeløp,
personNettoBeløp = personNettoBeløp,
arbeidsgiverFagsystemId = arbeidsgiverFagsystemId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ internal class UtbetalingBuilder(utbetaling: InternUtbetaling) : UtbetalingVisit
gjenståendeSykedager = gjenståendeSykedager,
forbrukteSykedager = forbrukteSykedager,
type = type.toString(),
tilstand = utbetalingstatus.tilstandsnavn(),
tilstand = utbetalingstatus,
arbeidsgiverNettoBeløp = arbeidsgiverNettoBeløp,
personNettoBeløp = personNettoBeløp,
arbeidsgiverFagsystemId = oppdragBuilder.arbeidsgiverFagsystemId(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ class AnnullerUtbetalingAdapter(private val original: AnnullerUtbetaling): Annul
override fun vurdering(): Utbetaling.Vurdering = original.vurdering()
override fun erRelevant(fagsystemId: String): Boolean = original.erRelevant(fagsystemId)
}

internal fun Simulering.utbetalingport() = SimuleringAdapter(this)
class SimuleringAdapter(private val simulering: Simulering): SimuleringPort, IAktivitetslogg by simulering {
override val simuleringResultat: SimuleringResultat? = simulering.simuleringResultat
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ internal class PåminnelserOgTimeoutTest : AbstractPersonTest() {
fødselsnummer = UNG_PERSON_FNR_2018.toString(),
organisasjonsnummer = ORGNUMMER,
utbetalingId = utbetalingId,
status = Utbetalingstatus.OVERFØRT,
status = Utbetalingstatus.AVVENTER_ARBEIDSGIVERKVITTERING,
antallGangerPåminnet = 1,
endringstidspunkt = LocalDateTime.now(),
påminnelsestidspunkt = LocalDateTime.now()
Expand Down
Loading