diff --git a/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/clients/dokark/DokarkClient.kt b/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/clients/dokark/DokarkClient.kt index 5db231565b..1c53b69a8e 100644 --- a/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/clients/dokark/DokarkClient.kt +++ b/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/clients/dokark/DokarkClient.kt @@ -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( @@ -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( diff --git a/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutes.kt b/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutes.kt index 4026cc83a4..609c46613a 100644 --- a/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutes.kt +++ b/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutes.kt @@ -329,39 +329,3 @@ data class GodkjennRefusjonskrav( ) } -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, -) diff --git a/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/task/JournalforRefusjonskrav.kt b/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/task/JournalforRefusjonskrav.kt index 9d4d93ae2b..5ea9ddb41b 100644 --- a/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/task/JournalforRefusjonskrav.kt +++ b/mulighetsrommet-api/src/main/kotlin/no/nav/mulighetsrommet/api/refusjon/task/JournalforRefusjonskrav.kt @@ -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 @@ -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, @@ -63,6 +67,11 @@ 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" } + // TODO: Her må vi bruke vårt eget løpenummer vel, når vi slutter og skrive til arena + requireNotNull(gjennomforing.tiltaksnummer) { "Gjennomføringen må ha et tiltaksnummer id=$id" } + val pdf = run { val tilsagn = tilsagnService.getArrangorflateTilsagnTilRefusjon( gjennomforingId = krav.gjennomforing.id, @@ -73,7 +82,7 @@ class JournalforRefusjonskrav( } dokarkClient.opprettJournalpost( - refusjonskravJournalpost(pdf, krav.id, krav.arrangor.organisasjonsnummer), + refusjonskravJournalpost(pdf, krav.id, krav.arrangor, gjennomforing.tiltaksnummer), AccessType.M2M, ) .onRight { @@ -84,3 +93,45 @@ class JournalforRefusjonskrav( } } } + +fun refusjonskravJournalpost( + pdf: ByteArray, + refusjonskravId: UUID, + arrangor: RefusjonskravDto.Arrangor, + tiltaksnummer: 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 = tiltaksnummer, + fagsaksystem = Journalpost.Sak.Fagsaksystem.TILTAKSADMINISTRASJON, + ), + behandlingstema = null, +) diff --git a/mulighetsrommet-api/src/test/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutesTest.kt b/mulighetsrommet-api/src/test/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutesTest.kt index 1aa8ff46b4..f2d7012155 100644 --- a/mulighetsrommet-api/src/test/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutesTest.kt +++ b/mulighetsrommet-api/src/test/kotlin/no/nav/mulighetsrommet/api/refusjon/ArrangorflateRoutesTest.kt @@ -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) {