Skip to content

Commit

Permalink
Merge pull request #1496 from navikt/frioppslag-skatt-med-journalføring
Browse files Browse the repository at this point in the history
Frioppslag skatt med journalføring
  • Loading branch information
RamziAbuQassim authored Sep 8, 2023
2 parents 2b5cdc2 + 6457926 commit cbd1d73
Show file tree
Hide file tree
Showing 25 changed files with 645 additions and 92 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ import no.nav.su.se.bakover.domain.Behandlingstema
import no.nav.su.se.bakover.domain.Tema
import no.nav.su.se.bakover.domain.journalpost.JournalpostCommand
import no.nav.su.se.bakover.domain.journalpost.JournalpostForSakCommand
import no.nav.su.se.bakover.domain.journalpost.JournalpostSkatt
import no.nav.su.se.bakover.domain.journalpost.JournalpostSkattForSak
import no.nav.su.se.bakover.domain.journalpost.JournalpostSkattUtenforSak
import no.nav.su.se.bakover.domain.person.Person
import no.nav.su.se.bakover.domain.sak.Sakstype
import java.time.LocalDate
Expand Down Expand Up @@ -37,7 +38,7 @@ internal fun JournalpostCommand.tilJson(): String {
Sakstype.UFØRE -> Behandlingstema.SU_UFØRE_FLYKTNING.value
}
return when (this) {
is JournalpostSkatt -> JournalpostRequest(
is JournalpostSkattForSak -> JournalpostRequest(
tittel = dokument.dokumentTittel,
journalpostType = JournalPostType.NOTAT,
kanal = null,
Expand Down Expand Up @@ -93,6 +94,23 @@ internal fun JournalpostCommand.tilJson(): String {
),
datoDokument = datoDokument,
)

is JournalpostSkattUtenforSak -> JournalpostRequest(
tittel = dokument.tittel,
journalpostType = JournalPostType.NOTAT,
kanal = null,
behandlingstema = behandlingstema,
journalfoerendeEnhet = JournalførendeEnhet.AUTOMATISK.enhet,
avsenderMottaker = null,
bruker = bruker,
sak = Fagsak(this.fagsystemId),
dokumenter = JournalpostDokument.lagDokumenterForJournalpostForSak(
tittel = dokument.tittel,
pdf = dokument.generertDokument,
originalJson = dokument.generertDokumentJson,
),
datoDokument = dokument.opprettet.toLocalDate(zoneIdOslo),
)
}.let {
serialize(it)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package no.nav.su.se.bakover.client.pdf

import arrow.core.Either
import arrow.core.NonEmptyList
import arrow.core.getOrElse
import arrow.core.left
import arrow.core.right
import no.nav.su.se.bakover.client.pdf.SamletÅrsgrunnlagPdfJson.Companion.tilPdfJson
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.common.tid.Tidspunkt
import no.nav.su.se.bakover.domain.brev.PdfTemplateMedDokumentNavn
import no.nav.su.se.bakover.domain.brev.SkattegrunnlagPdfTemplate
import no.nav.su.se.bakover.domain.brev.jsonRequest.PdfInnhold
import no.nav.su.se.bakover.domain.person.KunneIkkeHentePerson
import no.nav.su.se.bakover.domain.person.Person
import no.nav.su.se.bakover.domain.sak.Sakstype
import no.nav.su.se.bakover.domain.skatt.SamletSkattegrunnlagForÅrOgStadie
import no.nav.su.se.bakover.domain.skatt.Skattegrunnlag
import java.time.Clock
Expand All @@ -17,6 +23,7 @@ import java.util.UUID
data class SkattegrunnlagsPdfInnhold private constructor(
val saksnummer: String?,
val behandlingstype: BehandlingstypeForSkattemelding,
override val sakstype: Sakstype,
val behandlingsId: UUID?,
val vedtaksId: UUID?,
val hentet: Tidspunkt,
Expand All @@ -39,6 +46,7 @@ data class SkattegrunnlagsPdfInnhold private constructor(
): SkattegrunnlagsPdfInnhold = SkattegrunnlagsPdfInnhold(
saksnummer = saksnummer.toString(),
behandlingstype = BehandlingstypeForSkattemelding.Søknadsbehandling,
sakstype = Sakstype.UFØRE,
behandlingsId = søknadsbehandlingsId,
vedtaksId = vedtaksId,
hentet = hentet,
Expand All @@ -52,25 +60,38 @@ data class SkattegrunnlagsPdfInnhold private constructor(
begrunnelse = null,
)

fun Skattegrunnlag.lagPdfInnhold(
fun lagSkattegrunnlagsPdfInnholdFraFrioppslag(
fagsystemId: String,
sakstype: Sakstype,
begrunnelse: String?,
navn: Person.Navn,
skattegrunnlagSøker: Skattegrunnlag,
skattegrunnlagEps: Skattegrunnlag?,
hentNavn: (Fnr) -> Either<KunneIkkeHentePerson, Person.Navn>,
clock: Clock,
): SkattegrunnlagsPdfInnhold = SkattegrunnlagsPdfInnhold(
saksnummer = null,
): Either<KunneIkkeHentePerson, SkattegrunnlagsPdfInnhold> = SkattegrunnlagsPdfInnhold(
saksnummer = fagsystemId,
behandlingstype = BehandlingstypeForSkattemelding.Frioppslag,
sakstype = sakstype,
behandlingsId = null,
vedtaksId = null,
hentet = this.hentetTidspunkt,
hentet = skattegrunnlagSøker.hentetTidspunkt,
opprettet = Tidspunkt.now(clock),
søkers = SkattPdfDataJson(
fnr = this.fnr,
navn = navn,
årsgrunnlag = this.årsgrunnlag.tilPdfJson(),
fnr = skattegrunnlagSøker.fnr,
navn = hentNavn(skattegrunnlagSøker.fnr).getOrElse { return it.left() },
årsgrunnlag = skattegrunnlagSøker.årsgrunnlag.tilPdfJson(),
),
eps = null,
eps = if (skattegrunnlagEps != null) {
SkattPdfDataJson(
fnr = skattegrunnlagEps.fnr,
navn = hentNavn(skattegrunnlagEps.fnr).getOrElse { return it.left() },
årsgrunnlag = skattegrunnlagEps.årsgrunnlag.tilPdfJson(),
)
} else {
null
},
begrunnelse = begrunnelse,
)
).right()
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.su.se.bakover.client.dokarkiv

import io.kotest.matchers.shouldBe
import no.nav.su.se.bakover.domain.journalpost.JournalpostSkatt.Companion.lagJournalpost
import no.nav.su.se.bakover.domain.journalpost.JournalpostSkattForSak.Companion.lagJournalpost
import no.nav.su.se.bakover.test.sakinfo
import no.nav.su.se.bakover.test.skatt.nySkattedokumentGenerert
import org.junit.jupiter.api.Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,11 @@ data object Feilresponser {
code = "nye_overlappende_vedtak",
)

val feilVedOpprettelseAvJournalpost = InternalServerError.errorJson(
"Feil ved opprettelse av journalpost",
"feil_ved_opprettelse_av_journalpost",
)

data object Brev {
val kunneIkkeGenerereBrev = InternalServerError.errorJson(
"Kunne ikke generere brev",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ abstract class PdfInnhold {
// TODO CHM 05.05.2021: Se på å samle mer av det som er felles for brevinnholdene, f.eks. personalia

// TODO ØH 21.06.2022: Denne bør være abstract på sikt, og settes for alle brev eksplisitt
@get:JsonIgnore
open val sakstype: Sakstype = Sakstype.UFØRE

@JsonProperty
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ sealed interface JournalpostCommand {
val fnr: Fnr
}

sealed interface JournalpostUtenforSakCommand : JournalpostCommand {
val fagsystemId: String
}

sealed interface JournalpostForSakCommand : JournalpostCommand {
val saksnummer: Saksnummer

Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,77 @@
package no.nav.su.se.bakover.domain.journalpost

import arrow.core.Either
import arrow.core.getOrElse
import arrow.core.left
import arrow.core.right
import dokument.domain.Dokument
import no.nav.su.se.bakover.common.domain.Saksnummer
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.domain.sak.SakInfo
import no.nav.su.se.bakover.domain.sak.Sakstype
import no.nav.su.se.bakover.domain.skatt.Skattedokument
import org.jetbrains.annotations.TestOnly
import java.lang.IllegalArgumentException

/**
* kan brukes som mal for 'Notat' poster i Joark.
*/
data class JournalpostSkatt(
data class JournalpostSkattForSak(
override val saksnummer: Saksnummer,
override val sakstype: Sakstype,
override val fnr: Fnr,
val dokument: Skattedokument,
) : JournalpostForSakCommand {

companion object {
fun Skattedokument.lagJournalpost(sakInfo: SakInfo): JournalpostSkatt = JournalpostSkatt(
fun Skattedokument.lagJournalpost(sakInfo: SakInfo): JournalpostSkattForSak = JournalpostSkattForSak(
saksnummer = sakInfo.saksnummer,
sakstype = sakInfo.type,
dokument = this,
fnr = sakInfo.fnr,
)
}
}

data class JournalpostSkattUtenforSak private constructor(
override val fnr: Fnr,
override val sakstype: Sakstype,
/**
* i contexten av skatt, er det mulig at fagsystemId'en er en sak vi har i systemet. Må sees sammen med sakstype.
*/
override val fagsystemId: String,
val dokument: Dokument.UtenMetadata,
) : JournalpostUtenforSakCommand {

companion object {
@TestOnly
fun create(
fnr: Fnr,
sakstype: Sakstype,
fagsystemId: String,
dokument: Dokument.UtenMetadata,
): JournalpostSkattUtenforSak {
return tryCreate(fnr, sakstype, fagsystemId, dokument).getOrElse {
throw IllegalArgumentException("Valideringsfeil i JournalpostSkattUtenforSak - ")
}
}

fun tryCreate(
fnr: Fnr,
sakstype: Sakstype,
fagsystemId: String,
dokument: Dokument.UtenMetadata,
): Either<KunneIkkeLageJournalpostUtenforSak, JournalpostSkattUtenforSak> {
if (fagsystemId.isBlank()) {
return KunneIkkeLageJournalpostUtenforSak.FagsystemIdErTom.left()
}

return JournalpostSkattUtenforSak(
fnr,
sakstype,
fagsystemId,
dokument,
).right()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package no.nav.su.se.bakover.domain.journalpost

sealed interface KunneIkkeLageJournalpostUtenforSak {
data object FagsystemIdErTom : KunneIkkeLageJournalpostUtenforSak
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class AvslagsPdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 2021
},
"sakstype": "UFØRE",
"avslagsgrunner": ["FLYKTNING"],
"erAldersbrev": false,
"harFlereAvslagsgrunner": false,
Expand Down Expand Up @@ -113,6 +114,7 @@ class AvslagsPdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 2021
},
"sakstype": "UFØRE",
"avslagsgrunner": ["FORMUE"],
"erAldersbrev": false,
"harFlereAvslagsgrunner": false,
Expand Down Expand Up @@ -191,6 +193,7 @@ class AvslagsPdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 2021
},
"sakstype": "UFØRE",
"avslagsgrunner": ["FORMUE"],
"erAldersbrev": false,
"harFlereAvslagsgrunner": false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ internal class PdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 2021
},
"sakstype": "UFØRE",
"fradato": "01.01.2020",
"tildato": "01.01.2020",
"forventetInntektStørreEnn0": true,
Expand Down Expand Up @@ -163,6 +164,7 @@ internal class PdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 2021
},
"sakstype": "UFØRE",
"erAldersbrev": false,
"datoSøknadOpprettet": "01.01.2020",
"trukketDato": "01.02.2020",
Expand Down Expand Up @@ -222,6 +224,7 @@ internal class PdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 2021
},
"sakstype": "UFØRE",
"harEktefelle": true,
"harFradrag": false,
"beregningsperioder": [{
Expand Down Expand Up @@ -290,6 +293,7 @@ internal class PdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 12345676
},
"sakstype": "UFØRE",
"erAldersbrev": false,
"saksbehandlerNavn": "saks",
"fritekst": "fri",
Expand Down Expand Up @@ -330,6 +334,7 @@ internal class PdfInnholdTest {
"etternavn": "Strømøy",
"saksnummer": 12345676
},
"sakstype": "UFØRE",
"erAldersbrev": false,
"saksbehandlerNavn": "saks",
"fritekst": "fri",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class JournalføringService(
) {
fun journalfør() {
journalførDokumentService.journalfør()
journalførSkattDokumentService.journalfør()
journalførSkattDokumentService.journalførAlleSkattedokumenter()
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.su.se.bakover.service.skatt

import no.nav.su.se.bakover.common.ident.NavIdentBruker
import no.nav.su.se.bakover.common.person.Fnr
import no.nav.su.se.bakover.domain.sak.Sakstype
import no.nav.su.se.bakover.domain.skatt.Skattegrunnlag
import java.time.Year

data class FrioppslagSkattRequest(
val fnr: Fnr,
val epsFnr: Fnr?,
val år: Year,
val begrunnelse: String,
val saksbehandler: NavIdentBruker.Saksbehandler,
val sakstype: Sakstype,
val fagsystemId: String,
)

data class GenererSkattPdfRequest(
val skattegrunnlagSøkers: Skattegrunnlag,
val skattegrunnlagEps: Skattegrunnlag?,
val begrunnelse: String,
val sakstype: Sakstype,
val fagsystemId: String,
)

This file was deleted.

Loading

0 comments on commit cbd1d73

Please sign in to comment.