From 26d82237ef8d862b1b25e1a12f2f311369ac21bb Mon Sep 17 00:00:00 2001 From: Morten Osvik <33130876+mortenoosvik@users.noreply.github.com> Date: Thu, 16 Jan 2025 15:42:41 +0100 Subject: [PATCH] Nytt bekreftelsesbrev til arbeidsgiver tilpasset inntektsmelding gjennom nav.no (#348) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Bakgrunn I forbindelse med ny inntektsmelding gjennom nav.no som først skal tas i bruk for pleiepenger, ønsker vi å informere arbeidsgiver om at de kan sende inn inntektsmelding der. Jira oppgave: https://jira.adeo.no/browse/TSFF-1039 ## Løsning * Har tatt utgangspunkt i den eksisterende `ArbeidsgiverMeldingPDFGenerator` og lagd en tilsvarende `ArbeidsgiverMeldingNavNoPDFGenerator` som henter riktig brevmal. * Lagt til feature toggle som styres fra `SøknadService`. --- .../ArbeidsgiverMeldingNavNoPDFGenerator.kt | 27 ++++++++ .../pdf/ArbeidsgiverMeldingPDFGenerator.kt | 17 ++--- .../pdf/PleiepengerArbeidsgiverMelding.kt | 7 ++ .../pdf/S\303\270knadsPeriode.kt" | 8 +++ .../sifinnsynapi/soknad/InnsendingService.kt | 23 +++++-- src/main/resources/application-dev-gcp.yml | 4 ++ src/main/resources/application.yml | 3 + ...formasjonsbrev-til-arbeidsgiver-nav-no.hbs | 67 +++++++++++++++++++ ...rbeidsgiverMeldingNavNoPDFGeneratorTest.kt | 25 +++++++ 9 files changed, 163 insertions(+), 18 deletions(-) create mode 100644 src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGenerator.kt create mode 100644 src/main/kotlin/no/nav/sifinnsynapi/pdf/PleiepengerArbeidsgiverMelding.kt create mode 100644 "src/main/kotlin/no/nav/sifinnsynapi/pdf/S\303\270knadsPeriode.kt" create mode 100644 src/main/resources/handlebars/informasjonsbrev-til-arbeidsgiver-nav-no.hbs create mode 100644 src/test/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGeneratorTest.kt diff --git a/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGenerator.kt b/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGenerator.kt new file mode 100644 index 00000000..e06e53f8 --- /dev/null +++ b/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGenerator.kt @@ -0,0 +1,27 @@ +package no.nav.sifinnsynapi.pdf + +import no.nav.sifinnsynapi.util.storForbokstav +import org.springframework.stereotype.Service +import java.time.ZoneOffset.UTC +import java.time.ZonedDateTime + +@Service +class ArbeidsgiverMeldingNavNoPDFGenerator : PDFGenerator() { + + override val templateNavn: String + get() = "informasjonsbrev-til-arbeidsgiver-nav-no" + + + override fun PleiepengerArbeidsgiverMelding.tilMap(): Map = mapOf( + "arbeidsgiver_navn" to arbeidsgivernavn?.storForbokstav(), + "arbeidstaker_navn" to arbeidstakernavn.storForbokstav(), + "periode" to mapOf( + "fom" to DATE_FORMATTER.format(søknadsperiode.fraOgMed), + "tom" to DATE_FORMATTER.format(søknadsperiode.tilOgMed) + ), + "tidspunkt" to DATE_TIME_FORMATTER.format(ZonedDateTime.now(UTC)) + ) + + override val bilder: Map + get() = mapOf() +} diff --git a/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingPDFGenerator.kt b/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingPDFGenerator.kt index 430a8b4c..34b24e41 100644 --- a/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingPDFGenerator.kt +++ b/src/main/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingPDFGenerator.kt @@ -2,17 +2,19 @@ package no.nav.sifinnsynapi.pdf import no.nav.sifinnsynapi.util.storForbokstav import org.springframework.stereotype.Service -import java.time.LocalDate import java.time.ZoneOffset.UTC import java.time.ZonedDateTime +@Deprecated( + "Etter at ny inntektsmelding gjennom nav.no er aktivert, ønsker vi ikke å bruke denne lenger", + ReplaceWith("ArbeidsgiverMeldingNavNoPDFGenerator") +) @Service class ArbeidsgiverMeldingPDFGenerator : PDFGenerator() { override val templateNavn: String get() = "informasjonsbrev-til-arbeidsgiver" - override fun PleiepengerArbeidsgiverMelding.tilMap(): Map = mapOf( "arbeidsgiver_navn" to arbeidsgivernavn?.storForbokstav(), "arbeidstaker_navn" to arbeidstakernavn.storForbokstav(), @@ -26,14 +28,3 @@ class ArbeidsgiverMeldingPDFGenerator : PDFGenerator get() = mapOf() } -data class PleiepengerArbeidsgiverMelding( - val arbeidstakernavn: String, - val arbeidsgivernavn: String? = null, - val søknadsperiode: SøknadsPeriode -) - -data class SøknadsPeriode( - val fraOgMed: LocalDate, - val tilOgMed: LocalDate -) - diff --git a/src/main/kotlin/no/nav/sifinnsynapi/pdf/PleiepengerArbeidsgiverMelding.kt b/src/main/kotlin/no/nav/sifinnsynapi/pdf/PleiepengerArbeidsgiverMelding.kt new file mode 100644 index 00000000..717531e1 --- /dev/null +++ b/src/main/kotlin/no/nav/sifinnsynapi/pdf/PleiepengerArbeidsgiverMelding.kt @@ -0,0 +1,7 @@ +package no.nav.sifinnsynapi.pdf + +data class PleiepengerArbeidsgiverMelding( + val arbeidstakernavn: String, + val arbeidsgivernavn: String? = null, + val søknadsperiode: SøknadsPeriode +) \ No newline at end of file diff --git "a/src/main/kotlin/no/nav/sifinnsynapi/pdf/S\303\270knadsPeriode.kt" "b/src/main/kotlin/no/nav/sifinnsynapi/pdf/S\303\270knadsPeriode.kt" new file mode 100644 index 00000000..8360319b --- /dev/null +++ "b/src/main/kotlin/no/nav/sifinnsynapi/pdf/S\303\270knadsPeriode.kt" @@ -0,0 +1,8 @@ +package no.nav.sifinnsynapi.pdf + +import java.time.LocalDate + +data class SøknadsPeriode( + val fraOgMed: LocalDate, + val tilOgMed: LocalDate +) \ No newline at end of file diff --git a/src/main/kotlin/no/nav/sifinnsynapi/soknad/InnsendingService.kt b/src/main/kotlin/no/nav/sifinnsynapi/soknad/InnsendingService.kt index 12f2a9d4..2d6d8070 100644 --- a/src/main/kotlin/no/nav/sifinnsynapi/soknad/InnsendingService.kt +++ b/src/main/kotlin/no/nav/sifinnsynapi/soknad/InnsendingService.kt @@ -13,11 +13,13 @@ import no.nav.sifinnsynapi.omsorg.OmsorgService import no.nav.sifinnsynapi.oppslag.BarnOppslagDTO import no.nav.sifinnsynapi.oppslag.HentBarnForespørsel import no.nav.sifinnsynapi.oppslag.OppslagsService +import no.nav.sifinnsynapi.pdf.ArbeidsgiverMeldingNavNoPDFGenerator import no.nav.sifinnsynapi.pdf.ArbeidsgiverMeldingPDFGenerator import no.nav.sifinnsynapi.pdf.PleiepengerArbeidsgiverMelding import no.nav.sifinnsynapi.pdf.SøknadsPeriode import org.json.JSONObject import org.slf4j.LoggerFactory +import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.time.LocalDate @@ -31,8 +33,10 @@ class InnsendingService( private val omsorgService: OmsorgService, private val oppslagsService: OppslagsService, private val legacyInnsynApiService: LegacyInnsynApiService, + private val ettersendelseRepository: EttersendelseRepository, private val arbeidsgiverMeldingPDFGenerator: ArbeidsgiverMeldingPDFGenerator, - private val ettersendelseRepository: EttersendelseRepository + private val arbeidsgiverMeldingNavNoPDFGenerator: ArbeidsgiverMeldingNavNoPDFGenerator, + @Value("\${no.nav.inntektsmelding.ny-im-aktivert}") val erNyImAktivert: Boolean = false ) { private companion object { @@ -123,11 +127,20 @@ class InnsendingService( val pleiepengesøknadJson = JSONObject(søknad.søknad) val funnetOrg: JSONObject = pleiepengesøknadJson.finnOrganisasjon(søknadId.toString(), organisasjonsnummer) - arbeidsgiverMeldingPDFGenerator.genererPDF( - pleiepengesøknadJson.tilPleiepengerAreidsgivermelding( - funnetOrg + if (erNyImAktivert) { + logger.info("Ny inntektsmelding er aktivert, genererer PDF med nytt template.") + arbeidsgiverMeldingNavNoPDFGenerator.genererPDF( + pleiepengesøknadJson.tilPleiepengerAreidsgivermelding( + funnetOrg + ) ) - ) + } else { + arbeidsgiverMeldingPDFGenerator.genererPDF( + pleiepengesøknadJson.tilPleiepengerAreidsgivermelding( + funnetOrg + ) + ) + } } else -> throw NotSupportedArbeidsgiverMeldingException(søknadId.toString(), søknad.søknadstype) diff --git a/src/main/resources/application-dev-gcp.yml b/src/main/resources/application-dev-gcp.yml index 5a5a6b0d..9f4e8ffc 100644 --- a/src/main/resources/application-dev-gcp.yml +++ b/src/main/resources/application-dev-gcp.yml @@ -34,3 +34,7 @@ kafka: key-store-location: file:${KAFKA_KEYSTORE_PATH} key-store-password: ${KAFKA_CREDSTORE_PASSWORD} key-store-type: PKCS12 + +no.nav: + inntektsmelding: + ny-im-aktivert: true diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 98f5613a..8a232c89 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -8,6 +8,9 @@ no.nav: saf-selvbetjening-base-url: # Settes i nais/.json sif-innsyn-api-base-url: # Settes i nais/.json + inntektsmelding: + ny-im-aktivert: false + security: k9-drift-gruppe: ${K9_DRIFT_GRUPPE_ID} jwt: diff --git a/src/main/resources/handlebars/informasjonsbrev-til-arbeidsgiver-nav-no.hbs b/src/main/resources/handlebars/informasjonsbrev-til-arbeidsgiver-nav-no.hbs new file mode 100644 index 00000000..eecd8a8d --- /dev/null +++ b/src/main/resources/handlebars/informasjonsbrev-til-arbeidsgiver-nav-no.hbs @@ -0,0 +1,67 @@ + + + + + + Bekreftelse til Arbeidsgiver + + + + + + + + {{#block 'style-common' }} + {{/block}} + + + +
+ + +
+

Til {{arbeidsgiver_navn}}

+

{{arbeidstaker_navn}} har søkt om pleiepenger for perioden

+
    +
  • + {{periode.fom}} - {{periode.tom}} +
  • +
+ +

+ Hvis vi trenger inntektsmelding for å behandle søknaden, vil du få varsel om dette via Altinn og på + Min side – arbeidsgiver på nav.no. Du kan da logge inn på nav.no for å sende inn en forhåndsutfylt + inntektsmelding. +

+ +

+ Det er også mulig å sende inntektsmelding fra Altinn og lønns- og personalsystem, men du må da være + observant på at vi får riktig informasjon om første fraværsdag, organisasjonsnummer og eventuelt + arbeidsforholds-id. +

+ +

+ Som hovedregel trenger vi inntektsmelding hvis dette er første søknad, eller hvis det har vært et + opphold på minst 4 uker. Hvis det har vært et kortere opphold mellom pleiepengeperiodene, der den + ansatte har hatt en varig lønnsendring, trenger vi også ny inntektsmelding. +

+
+ +
+

Har dere spørsmål?

+

Dere finner mer informasjon på nav.no/arbeidsgiver

+ +

nav.no/kontakt kan dere chatte med oss.

+ +

Dere kan også ringe oss på telefon 55 55 33 36, hverdager 09.00-15.00.

+
+
+ + + + + + diff --git a/src/test/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGeneratorTest.kt b/src/test/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGeneratorTest.kt new file mode 100644 index 00000000..94b5da2b --- /dev/null +++ b/src/test/kotlin/no/nav/sifinnsynapi/pdf/ArbeidsgiverMeldingNavNoPDFGeneratorTest.kt @@ -0,0 +1,25 @@ +package no.nav.sifinnsynapi.pdf + +import org.junit.jupiter.api.Test +import java.io.File +import java.time.LocalDate + +class ArbeidsgiverMeldingNavNoPDFGeneratorTest { + + @Test + fun pdf() { + val pdf = ArbeidsgiverMeldingNavNoPDFGenerator().genererPDF( + melding = PleiepengerArbeidsgiverMelding( + arbeidstakernavn = "Ola Nordmann", + arbeidsgivernavn = "Sjokkerende Elektriker", + søknadsperiode = SøknadsPeriode( + fraOgMed = LocalDate.now().minusWeeks(1), + tilOgMed = LocalDate.now().plusWeeks(1) + ) + ) + ) + File(pdfPath("Bekreftelse til arbeidsgiver")).writeBytes(pdf) + } + + private fun pdfPath(filnavn: String) = "${System.getProperty("user.dir")}/generated-pdf-$filnavn.pdf" +}