Skip to content

Commit

Permalink
Underkjenning av tilbakekreving bruker riktig type. Lagring av attest…
Browse files Browse the repository at this point in the history
…eringshistorikk skjer bare for tidligere behandlinger
  • Loading branch information
ramnav990 committed Oct 26, 2023
1 parent e05505c commit ab5110e
Show file tree
Hide file tree
Showing 33 changed files with 311 additions and 96 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,21 +56,15 @@ sealed interface Attestering {
val attestant: NavIdentBruker.Attestant
val opprettet: Tidspunkt

data class Iverksatt(override val attestant: NavIdentBruker.Attestant, override val opprettet: Tidspunkt) :
Attestering
data class Iverksatt(
override val attestant: NavIdentBruker.Attestant,
override val opprettet: Tidspunkt,
) : Attestering

data class Underkjent(
override val attestant: NavIdentBruker.Attestant,
override val opprettet: Tidspunkt,
val grunn: Grunn,
val grunn: UnderkjennAttesteringsgrunn,
val kommentar: String,
) : Attestering {
enum class Grunn {
INNGANGSVILKÅRENE_ER_FEILVURDERT,
BEREGNINGEN_ER_FEIL,
DOKUMENTASJON_MANGLER,
VEDTAKSBREVET_ER_FEIL,
ANDRE_FORHOLD,
}
}
) : Attestering
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package no.nav.su.se.bakover.common.domain.attestering

interface UnderkjennAttesteringsgrunn
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package no.nav.su.se.bakover.common.infrastructure.attestering
package no.nav.su.se.bakover.database.attestering

import com.fasterxml.jackson.annotation.JsonSubTypes
import com.fasterxml.jackson.annotation.JsonTypeInfo
import no.nav.su.se.bakover.common.domain.attestering.Attestering
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.domain.attestering.UnderkjennAttesteringsgrunnBehandling

@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
Expand All @@ -15,6 +16,10 @@ import no.nav.su.se.bakover.common.tid.Tidspunkt
JsonSubTypes.Type(value = AttesteringDbJson.IverksattJson::class, name = "Iverksatt"),
JsonSubTypes.Type(value = AttesteringDbJson.UnderkjentJson::class, name = "Underkjent"),
)
/**
* Per nå, så støtter denne kun underkjente attesteringer som er brukt under søknadsbehandling, revurdering & klage.
* Dersom klage får egne typer, så må vi potensielt tenke nytt på hvordan lagring at attesteringshistorikken gjøres
*/
sealed interface AttesteringDbJson {
val attestant: String
val opprettet: Tidspunkt
Expand All @@ -41,12 +46,12 @@ sealed interface AttesteringDbJson {
attestant = NavIdentBruker.Attestant(attestant),
opprettet = opprettet,
grunn = when (grunn) {
"INNGANGSVILKÅRENE_ER_FEILVURDERT" -> Attestering.Underkjent.Grunn.INNGANGSVILKÅRENE_ER_FEILVURDERT
"BEREGNINGEN_ER_FEIL" -> Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL
"DOKUMENTASJON_MANGLER" -> Attestering.Underkjent.Grunn.DOKUMENTASJON_MANGLER
"VEDTAKSBREVET_ER_FEIL" -> Attestering.Underkjent.Grunn.VEDTAKSBREVET_ER_FEIL
"ANDRE_FORHOLD" -> Attestering.Underkjent.Grunn.ANDRE_FORHOLD
else -> throw IllegalStateException("Ukjent grunn - Kunne ikke mappe $grunn til ${Attestering.Underkjent.Grunn::class.simpleName}")
"INNGANGSVILKÅRENE_ER_FEILVURDERT" -> UnderkjennAttesteringsgrunnBehandling.INNGANGSVILKÅRENE_ER_FEILVURDERT
"BEREGNINGEN_ER_FEIL" -> UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL
"DOKUMENTASJON_MANGLER" -> UnderkjennAttesteringsgrunnBehandling.DOKUMENTASJON_MANGLER
"VEDTAKSBREVET_ER_FEIL" -> UnderkjennAttesteringsgrunnBehandling.VEDTAKSBREVET_ER_FEIL
"ANDRE_FORHOLD" -> UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD
else -> throw IllegalStateException("Ukjent grunn - Kunne ikke mappe $grunn til ${UnderkjennAttesteringsgrunnBehandling::class.simpleName}")
},
kommentar = kommentar,
)
Expand All @@ -67,11 +72,12 @@ sealed interface AttesteringDbJson {
attestant = attestant.navIdent,
opprettet = opprettet,
grunn = when (grunn) {
Attestering.Underkjent.Grunn.INNGANGSVILKÅRENE_ER_FEILVURDERT -> "INNGANGSVILKÅRENE_ER_FEILVURDERT"
Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL -> "BEREGNINGEN_ER_FEIL"
Attestering.Underkjent.Grunn.DOKUMENTASJON_MANGLER -> "DOKUMENTASJON_MANGLER"
Attestering.Underkjent.Grunn.VEDTAKSBREVET_ER_FEIL -> "VEDTAKSBREVET_ER_FEIL"
Attestering.Underkjent.Grunn.ANDRE_FORHOLD -> "ANDRE_FORHOLD"
UnderkjennAttesteringsgrunnBehandling.INNGANGSVILKÅRENE_ER_FEILVURDERT -> "INNGANGSVILKÅRENE_ER_FEILVURDERT"
UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL -> "BEREGNINGEN_ER_FEIL"
UnderkjennAttesteringsgrunnBehandling.DOKUMENTASJON_MANGLER -> "DOKUMENTASJON_MANGLER"
UnderkjennAttesteringsgrunnBehandling.VEDTAKSBREVET_ER_FEIL -> "VEDTAKSBREVET_ER_FEIL"
UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD -> "ANDRE_FORHOLD"
else -> throw IllegalStateException("Ukjent grunn - kunne ikke mappe $grunn til en database versjon")
},
kommentar = kommentar,
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package no.nav.su.se.bakover.common.infrastructure.attestering
package no.nav.su.se.bakover.database.attestering

import no.nav.su.se.bakover.common.deserialize
import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
import no.nav.su.se.bakover.common.infrastructure.attestering.AttesteringDbJson.Companion.toDbJson
import no.nav.su.se.bakover.common.serialize
import no.nav.su.se.bakover.database.attestering.AttesteringDbJson.Companion.toDbJson

fun Attesteringshistorikk.toDatabaseJson(): String = this.map { it.toDbJson() }.serialize()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.domain.oppgave.OppgaveId
import no.nav.su.se.bakover.common.extensions.ddMMyyyyFormatter
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.infrastructure.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.common.infrastructure.attestering.toDatabaseJson
import no.nav.su.se.bakover.common.infrastructure.persistence.DbMetrics
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionContext.Companion.withSession
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionFactory
Expand All @@ -27,6 +25,8 @@ import no.nav.su.se.bakover.common.persistence.TransactionContext
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.serialize
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.database.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.database.attestering.toDatabaseJson
import no.nav.su.se.bakover.database.klage.AvsluttetKlageJson.Companion.toAvsluttetKlageJson
import no.nav.su.se.bakover.database.klage.KlagePostgresRepo.Svarord.Companion.tilDatabaseType
import no.nav.su.se.bakover.database.klage.KlagePostgresRepo.Tilstand.Companion.databasetype
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ import no.nav.su.se.bakover.common.domain.oppgave.OppgaveId
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.ident.NavIdentBruker.Saksbehandler
import no.nav.su.se.bakover.common.infrastructure.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.common.infrastructure.attestering.toDatabaseJson
import no.nav.su.se.bakover.common.infrastructure.persistence.DbMetrics
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionContext.Companion.withSession
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionFactory
Expand All @@ -31,6 +29,8 @@ import no.nav.su.se.bakover.common.serialize
import no.nav.su.se.bakover.common.serializeNullable
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.common.tid.periode.Periode
import no.nav.su.se.bakover.database.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.database.attestering.toDatabaseJson
import no.nav.su.se.bakover.database.avkorting.AvkortingVedRevurderingDb
import no.nav.su.se.bakover.database.avkorting.AvkortingsvarselPostgresRepo
import no.nav.su.se.bakover.database.avkorting.toDb
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
import no.nav.su.se.bakover.common.domain.oppgave.OppgaveId
import no.nav.su.se.bakover.common.domain.sak.Sakstype
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.infrastructure.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.common.infrastructure.attestering.toDatabaseJson
import no.nav.su.se.bakover.common.infrastructure.persistence.DbMetrics
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionContext.Companion.withSession
import no.nav.su.se.bakover.common.infrastructure.persistence.PostgresSessionFactory
Expand All @@ -24,6 +22,8 @@ import no.nav.su.se.bakover.common.persistence.TransactionContext
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.serializeNullable
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.database.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.database.attestering.toDatabaseJson
import no.nav.su.se.bakover.database.avkorting.AvkortingsvarselPostgresRepo
import no.nav.su.se.bakover.database.avkorting.fromAvkortingDbJson
import no.nav.su.se.bakover.database.avkorting.toDbJson
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.common.domain.attestering.Attestering
import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.infrastructure.attestering.toAttesteringshistorikk
import no.nav.su.se.bakover.common.infrastructure.attestering.toDatabaseJson
import no.nav.su.se.bakover.domain.attestering.UnderkjennAttesteringsgrunnBehandling
import no.nav.su.se.bakover.test.fixedTidspunkt
import org.junit.jupiter.api.Test
import org.skyscreamer.jsonassert.JSONAssert
Expand All @@ -20,7 +19,7 @@ internal class AttesteringerJsonTest {
val attestering2 = Attestering.Underkjent(
NavIdentBruker.Attestant("Attestant2"),
opprettet.plus(1, ChronoUnit.DAYS),
Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
"kommentar",
)
val actual = Attesteringshistorikk.create(mutableListOf(attestering1, attestering2)).toDatabaseJson()
Expand Down Expand Up @@ -56,7 +55,7 @@ internal class AttesteringerJsonTest {
val attestering2 = Attestering.Underkjent(
NavIdentBruker.Attestant("Attestant2"),
opprettet.plus(1, ChronoUnit.DAYS),
Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
"kommentar",
)
val json = """
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package no.nav.su.se.bakover.domain.attestering

import no.nav.su.se.bakover.common.domain.attestering.UnderkjennAttesteringsgrunn

/**
* Dette er valgene som kan tas, dersom man vil underkjenne
* [no.nav.su.se.bakover.domain.søknadsbehandling.Søknadsbehandling],
* [no.nav.su.se.bakover.domain.revurdering.Revurdering],
* [no.nav.su.se.bakover.domain.klage.Klage]
*
* Disse feltene passer ikke ved klage. Disse vil vi endre på sikt. Må ta høyde for dette under databasen
*/
enum class UnderkjennAttesteringsgrunnBehandling : UnderkjennAttesteringsgrunn {
INNGANGSVILKÅRENE_ER_FEILVURDERT,
BEREGNINGEN_ER_FEIL,
DOKUMENTASJON_MANGLER,
VEDTAKSBREVET_ER_FEIL,
ANDRE_FORHOLD,
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.common.domain.attestering.Attestering
import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.domain.attestering.UnderkjennAttesteringsgrunnBehandling
import no.nav.su.se.bakover.test.fixedTidspunkt
import org.junit.jupiter.api.Test
import java.time.temporal.ChronoUnit
Expand All @@ -16,7 +17,7 @@ internal class AttesteringshistorikkTest {
val attestering1 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant1"),
opprettet = fixedTidspunkt,
grunn = Attestering.Underkjent.Grunn.ANDRE_FORHOLD,
grunn = UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD,
kommentar = "kommentar",
)
val attestering2 = Attestering.Iverksatt(
Expand All @@ -36,13 +37,13 @@ internal class AttesteringshistorikkTest {
val attestering1 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant2"),
opprettet = opprettet.plus(1, ChronoUnit.DAYS),
grunn = Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
grunn = UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
kommentar = "kommentar",
)
val attestering2 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant2"),
opprettet = opprettet.plus(2, ChronoUnit.DAYS),
grunn = Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
grunn = UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
kommentar = "kommentar",
)
val attestering3 =
Expand All @@ -62,13 +63,13 @@ internal class AttesteringshistorikkTest {
val attestering1 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant2"),
opprettet = opprettet.plus(1, ChronoUnit.DAYS),
grunn = Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
grunn = UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
kommentar = "kommentar",
)
val attestering2 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant2"),
opprettet = opprettet,
grunn = Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
grunn = UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
kommentar = "kommentar",
)
shouldThrow<IllegalStateException> {
Expand All @@ -84,13 +85,13 @@ internal class AttesteringshistorikkTest {
val attestering1 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant2"),
opprettet = opprettet,
grunn = Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
grunn = UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
kommentar = "kommentar",
)
val attestering2 = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("Attestant2"),
opprettet = opprettet,
grunn = Attestering.Underkjent.Grunn.BEREGNINGEN_ER_FEIL,
grunn = UnderkjennAttesteringsgrunnBehandling.BEREGNINGEN_ER_FEIL,
kommentar = "kommentar",
)
shouldThrow<IllegalStateException> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import io.kotest.assertions.arrow.core.shouldBeLeft
import io.kotest.assertions.arrow.core.shouldBeRight
import no.nav.su.se.bakover.common.domain.attestering.Attestering
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.domain.attestering.UnderkjennAttesteringsgrunnBehandling
import no.nav.su.se.bakover.domain.grunnlag.EksterneGrunnlagSkatt
import no.nav.su.se.bakover.domain.søknadsbehandling.BeregnetSøknadsbehandling
import no.nav.su.se.bakover.domain.søknadsbehandling.VilkårsvurdertSøknadsbehandling
Expand Down Expand Up @@ -128,7 +129,7 @@ internal class SøknadsbehandlingSkattTest {
Attestering.Underkjent(
NavIdentBruker.Attestant("attestanten"),
enUkeEtterFixedTidspunkt,
Attestering.Underkjent.Grunn.ANDRE_FORHOLD,
UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD,
"Skal underkjenne for å kunne hente ny skattegrunnlag",
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import io.kotest.matchers.types.beOfType
import no.nav.su.se.bakover.common.domain.attestering.Attestering
import no.nav.su.se.bakover.common.domain.attestering.Attesteringshistorikk
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.domain.attestering.UnderkjennAttesteringsgrunnBehandling
import no.nav.su.se.bakover.domain.søknadsbehandling.FRITEKST_TIL_BREV
import no.nav.su.se.bakover.domain.søknadsbehandling.UnderkjentSøknadsbehandling
import no.nav.su.se.bakover.domain.søknadsbehandling.tilAttesteringAvslagBeregning
Expand Down Expand Up @@ -74,7 +75,7 @@ internal class UnderkjennTest {
søknadsbehandling.tilUnderkjent(
attestering = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("sneaky"),
grunn = Attestering.Underkjent.Grunn.ANDRE_FORHOLD,
grunn = UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD,
kommentar = "",
opprettet = fixedTidspunkt,
),
Expand All @@ -88,7 +89,7 @@ internal class UnderkjennTest {
søknadsbehandling.tilUnderkjent(
attestering = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("sneaky"),
grunn = Attestering.Underkjent.Grunn.ANDRE_FORHOLD,
grunn = UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD,
kommentar = "",
opprettet = fixedTidspunkt,
),
Expand All @@ -101,7 +102,7 @@ internal class UnderkjennTest {
søknadsbehandling.tilUnderkjent(
attestering = Attestering.Underkjent(
attestant = NavIdentBruker.Attestant("sneaky"),
grunn = Attestering.Underkjent.Grunn.ANDRE_FORHOLD,
grunn = UnderkjennAttesteringsgrunnBehandling.ANDRE_FORHOLD,
kommentar = "",
opprettet = fixedTidspunkt,
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package no.nav.su.se.bakover.service.klage

import no.nav.su.se.bakover.common.domain.attestering.Attestering
import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.domain.attestering.UnderkjennAttesteringsgrunnBehandling
import java.util.UUID

data class UnderkjennKlageRequest(
val klageId: UUID,
val attestant: NavIdentBruker.Attestant,
val grunn: Attestering.Underkjent.Grunn,
val grunn: UnderkjennAttesteringsgrunnBehandling,
val kommentar: String,
)
Loading

0 comments on commit ab5110e

Please sign in to comment.