Skip to content

Commit

Permalink
Journalfor på fagsystem TILTAKSADMINISTRASJON
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrikpe committed Dec 2, 2024
1 parent b5ba0c6 commit 5ccd53e
Show file tree
Hide file tree
Showing 9 changed files with 71 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ data class Journalpost(
val journalfoerendeEnhet: String,
val journalposttype: String,
val kanal: String,
val sak: Sak?,
val sak: Sak,
) {
@Serializable
data class AvsenderMottaker(
Expand All @@ -89,10 +89,17 @@ data class Journalpost(

@Serializable
data class Sak(
val sakstype: Sakstype,
val fagsakId: String,
val fagsaksystem: String,
val sakstype: String,
)
val fagsaksystem: Fagsaksystem,
) {
enum class Sakstype {
FAGSAK,
}
enum class Fagsaksystem {
TILTAKSADMINISTRASJON,
}
}

@Serializable
data class Dokument(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -610,6 +610,7 @@ class TiltaksgjennomforingRepository(private val db: Database) {
id = uuid("id"),
navn = string("navn"),
tiltaksnummer = stringOrNull("tiltaksnummer"),
lopenummer = stringOrNull("lopenummer"),
startDato = startDato,
sluttDato = sluttDato,
status = TiltaksgjennomforingStatusDto(status, avbrutt),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ data class TiltaksgjennomforingDto(
val tiltakstype: Tiltakstype,
val navn: String,
val tiltaksnummer: String?,
val lopenummer: String?,
val arrangor: ArrangorUnderenhet,
@Serializable(with = LocalDateSerializer::class)
val startDato: LocalDate,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ private fun tasks(config: TaskConfig) = module {
single { SynchronizeNavAnsatte(config.synchronizeNavAnsatte, get(), get()) }
single { SynchronizeUtdanninger(config.synchronizeUtdanninger, get(), get()) }
single { GenerateRefusjonskrav(config.generateRefusjonskrav, get()) }
single { JournalforRefusjonskrav(get(), get(), get(), get(), get(), get()) }
single { JournalforRefusjonskrav(get(), get(), get(), get(), get(), get(), get()) }
single {
val updateTiltaksgjennomforingStatus = UpdateTiltaksgjennomforingStatus(
get(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -328,40 +328,3 @@ data class GodkjennRefusjonskrav(
val kid: Kid?,
)
}

fun refusjonskravJournalpost(
pdf: ByteArray,
refusjonskravId: UUID,
organisasjonsnummer: Organisasjonsnummer,
): Journalpost = Journalpost(
tittel = "Refusjonskrav",
journalposttype = "INNGAAENDE",
avsenderMottaker = Journalpost.AvsenderMottaker(
id = organisasjonsnummer.value,
idType = "ORGNR",
navn = null,
),
bruker = Journalpost.Bruker(
id = organisasjonsnummer.value,
idType = "ORGNR",
),
tema = "TIL",
datoMottatt = LocalDateTime.now().toString(),
dokumenter = listOf(
Journalpost.Dokument(
tittel = "Refusjonskrav",
dokumentvarianter = listOf(
Journalpost.Dokument.Dokumentvariant(
"PDFA",
pdf,
"ARKIV",
),
),
),
),
eksternReferanseId = refusjonskravId.toString(),
journalfoerendeEnhet = "9999", // Automatisk journalføring
kanal = "NAV_NO", // Påkrevd for INNGAENDE. Se https://confluence.adeo.no/display/BOA/Mottakskanal
sak = null,
behandlingstema = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import com.github.kagkarlsson.scheduler.task.helper.OneTimeTask
import com.github.kagkarlsson.scheduler.task.helper.Tasks
import kotlinx.serialization.Serializable
import no.nav.mulighetsrommet.api.clients.dokark.DokarkClient
import no.nav.mulighetsrommet.api.clients.dokark.Journalpost
import no.nav.mulighetsrommet.api.gjennomforing.db.TiltaksgjennomforingRepository
import no.nav.mulighetsrommet.api.pdfgen.Pdfgen
import no.nav.mulighetsrommet.api.refusjon.HentAdressebeskyttetPersonBolkPdlQuery
import no.nav.mulighetsrommet.api.refusjon.db.DeltakerRepository
import no.nav.mulighetsrommet.api.refusjon.db.RefusjonskravRepository
import no.nav.mulighetsrommet.api.refusjon.model.RefusjonKravAft
import no.nav.mulighetsrommet.api.refusjon.model.RefusjonskravDto
import no.nav.mulighetsrommet.api.refusjon.model.RefusjonskravStatus
import no.nav.mulighetsrommet.api.refusjon.refusjonskravJournalpost
import no.nav.mulighetsrommet.api.refusjon.toRefusjonskrav
import no.nav.mulighetsrommet.api.tilsagn.TilsagnService
import no.nav.mulighetsrommet.database.Database
Expand All @@ -21,11 +23,13 @@ import no.nav.mulighetsrommet.tasks.executeSuspend
import no.nav.mulighetsrommet.tokenprovider.AccessType
import org.slf4j.LoggerFactory
import java.time.Instant
import java.time.LocalDateTime
import java.util.*

class JournalforRefusjonskrav(
database: Database,
private val refusjonskravRepository: RefusjonskravRepository,
private val tiltaksgjennomforingRepository: TiltaksgjennomforingRepository,
private val tilsagnService: TilsagnService,
private val dokarkClient: DokarkClient,
private val deltakerRepository: DeltakerRepository,
Expand Down Expand Up @@ -63,6 +67,10 @@ class JournalforRefusjonskrav(
requireNotNull(krav) { "Fant ikke refusjonskrav med id=$id" }
require(krav.status == RefusjonskravStatus.GODKJENT_AV_ARRANGOR) { "Krav må være godkjent" }

val gjennomforing = tiltaksgjennomforingRepository.get(krav.gjennomforing.id)
requireNotNull(gjennomforing) { "Fant ikke gjennomforing til refusjonskrav med id=$id" }
requireNotNull(gjennomforing.lopenummer) { "Gjennomføringen må ha et lopenummer id=${gjennomforing.id}" }

val pdf = run {
val tilsagn = tilsagnService.getArrangorflateTilsagnTilRefusjon(
gjennomforingId = krav.gjennomforing.id,
Expand All @@ -73,7 +81,7 @@ class JournalforRefusjonskrav(
}

dokarkClient.opprettJournalpost(
refusjonskravJournalpost(pdf, krav.id, krav.arrangor.organisasjonsnummer),
refusjonskravJournalpost(pdf, krav.id, krav.arrangor, fagsakId = gjennomforing.lopenummer),
AccessType.M2M,
)
.onRight {
Expand All @@ -84,3 +92,45 @@ class JournalforRefusjonskrav(
}
}
}

fun refusjonskravJournalpost(
pdf: ByteArray,
refusjonskravId: UUID,
arrangor: RefusjonskravDto.Arrangor,
fagsakId: String,
): Journalpost = Journalpost(
tittel = "Refusjonskrav",
journalposttype = "INNGAAENDE",
avsenderMottaker = Journalpost.AvsenderMottaker(
id = arrangor.organisasjonsnummer.value,
idType = "ORGNR",
navn = arrangor.navn,
),
bruker = Journalpost.Bruker(
id = arrangor.organisasjonsnummer.value,
idType = "ORGNR",
),
tema = "TIL",
datoMottatt = LocalDateTime.now().toString(),
dokumenter = listOf(
Journalpost.Dokument(
tittel = "Refusjonskrav",
dokumentvarianter = listOf(
Journalpost.Dokument.Dokumentvariant(
"PDFA",
pdf,
"ARKIV",
),
),
),
),
eksternReferanseId = refusjonskravId.toString(),
journalfoerendeEnhet = "9999", // Automatisk journalføring
kanal = "NAV_NO", // Påkrevd for INNGAENDE. Se https://confluence.adeo.no/display/BOA/Mottakskanal
sak = Journalpost.Sak(
sakstype = Journalpost.Sak.Sakstype.FAGSAK,
fagsakId = fagsakId,
fagsaksystem = Journalpost.Sak.Fagsaksystem.TILTAKSADMINISTRASJON,
),
behandlingstema = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ select gjennomforing.id,
gjennomforing.estimert_ventetid_enhet,
gjennomforing.sted_for_gjennomforing,
gjennomforing.publisert,
gjennomforing.lopenummer,
gjennomforing.nav_region as nav_region_enhetsnummer,
nav_region.navn as nav_region_navn,
nav_region.type as nav_region_type,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ class ArrangorflateRoutesTest : FunSpec({
}
}

test("riktig sjekksum ved godkjenning av refusjon gir 200, og spawner journalforing task") {
test("riktig sjekksum ved godkjenning av refusjon gir 200") {
withTestApplication(appConfig()) {
val client = createClient {
install(ContentNegotiation) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import no.nav.mulighetsrommet.api.clients.dokark.DokarkResponse
import no.nav.mulighetsrommet.api.clients.pdl.PdlClient
import no.nav.mulighetsrommet.api.databaseConfig
import no.nav.mulighetsrommet.api.fixtures.*
import no.nav.mulighetsrommet.api.gjennomforing.db.TiltaksgjennomforingRepository
import no.nav.mulighetsrommet.api.refusjon.HentAdressebeskyttetPersonBolkPdlQuery
import no.nav.mulighetsrommet.api.refusjon.db.DeltakerRepository
import no.nav.mulighetsrommet.api.refusjon.db.RefusjonskravDbo
Expand Down Expand Up @@ -96,6 +97,7 @@ class JournalforRefusjonskravTest : FunSpec({
val task = JournalforRefusjonskrav(
database.db,
refusjonskravRepository = RefusjonskravRepository(database.db),
tiltaksgjennomforingRepository = TiltaksgjennomforingRepository(database.db),
tilsagnService,
dokarkClient,
deltakerRepository = DeltakerRepository(database.db),
Expand All @@ -112,6 +114,7 @@ class JournalforRefusjonskravTest : FunSpec({
val task = JournalforRefusjonskrav(
database.db,
refusjonskravRepository,
tiltaksgjennomforingRepository = TiltaksgjennomforingRepository(database.db),
tilsagnService,
dokarkClient,
deltakerRepository = DeltakerRepository(database.db),
Expand Down

0 comments on commit 5ccd53e

Please sign in to comment.