Skip to content

Commit

Permalink
Merge branch 'main' into dev/fjern_paaminnelser_infotrygd
Browse files Browse the repository at this point in the history
  • Loading branch information
magnusae committed Nov 4, 2024
2 parents f4c7b51 + 6613483 commit 7fa3079
Show file tree
Hide file tree
Showing 20 changed files with 94 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ class LagreEksternImRiver(
private val sikkerLogger = sikkerLogger()

override fun les(json: Map<Key, JsonElement>): LagreEksternImMelding? =
// TODO ignorer behov etter overgangsfase
if (Key.FAIL in json) {
if (setOf(Key.BEHOV, Key.FAIL).any(json::containsKey)) {
null
} else {
val data = json[Key.DATA]?.toMap().orEmpty()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,14 @@ class LagreJournalpostIdRiver(
}

return mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET.toJson(),
Key.UUID to transaksjonId.toJson(),
Key.INNTEKTSMELDING to inntektsmelding.toJson(Inntektsmelding.serializer()),
Key.BESTEMMENDE_FRAVAERSDAG to json[Key.BESTEMMENDE_FRAVAERSDAG],
Key.JOURNALPOST_ID to journalpostId.toJson(),
).mapValuesNotNull { it }
.also {
logger.info("Publiserer event '${EventName.INNTEKTSMELDING_JOURNALFOERT}' med journalpost-ID '$journalpostId'.")
logger.info("Publiserer event '${EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET}' med journalpost-ID '$journalpostId'.")
sikkerLogger.info("Publiserer event:\n${it.toPretty()}")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import io.mockk.verify
import io.mockk.verifySequence
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonNull
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
import no.nav.helsearbeidsgiver.felles.domene.EksternInntektsmelding
Expand Down Expand Up @@ -90,7 +91,7 @@ class LagreEksternImRiverTest :
context("ignorerer melding") {
withData(
mapOf(
// "melding med uønsket behov" to Pair(Key.BEHOV, BehovType.HENT_VIRKSOMHET_NAVN.toJson()),
"melding med uønsket behov" to Pair(Key.BEHOV, BehovType.HENT_VIRKSOMHET_NAVN.toJson()),
"melding med data som flagg" to Pair(Key.DATA, "".toJson()),
"melding med fail" to Pair(Key.FAIL, mockFail.toJson(Fail.serializer())),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class LagreJournalpostIdRiverTest :

testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET.toJson(),
Key.UUID to innkommendeMelding.transaksjonId.toJson(),
Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()),
Key.BESTEMMENDE_FRAVAERSDAG to Mock.bestemmendeFravaersdag.toJson(),
Expand Down Expand Up @@ -101,7 +101,7 @@ class LagreJournalpostIdRiverTest :

testRapid.firstMessage().toMap() shouldContainExactly
mapOf(
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALFOERT.toJson(),
Key.EVENT_NAME to EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET.toJson(),
Key.UUID to innkommendeMelding.transaksjonId.toJson(),
Key.INNTEKTSMELDING to innkommendeMelding.inntektsmelding.toJson(Inntektsmelding.serializer()),
Key.JOURNALPOST_ID to innkommendeMelding.journalpostId.toJson(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,15 +213,15 @@ private object Mock {
val fail =
Fail(
feilmelding = "I'm afraid I can't let you do that.",
event = EventName.INNTEKTSMELDING_JOURNALFOERT,
event = EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET,
transaksjonId = UUID.randomUUID(),
forespoerselId = UUID.randomUUID(),
utloesendeMelding = JsonNull,
)

fun innkommendeMelding(): Melding =
Melding(
eventName = EventName.INNTEKTSMELDING_JOURNALFOERT,
eventName = EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET,
transaksjonId = UUID.randomUUID(),
inntektsmelding = mockInntektsmeldingV1(),
bestemmendeFravaersdag = bestemmendeFravaersdag,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ package no.nav.helsearbeidsgiver.felles.utils

import java.time.LocalDate
import java.time.YearMonth
import java.time.format.DateTimeFormatter

private val norskDatoFormat = DateTimeFormatter.ofPattern("dd.MM.yyyy")

fun LocalDate.tilNorskFormat(): String = format(norskDatoFormat)

fun LocalDate.toYearMonth(): YearMonth = YearMonth.of(year, month)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ class ForespoerselMottattRiver : PriObjectRiver<Melding>() {
Key.DATA to
mapOf(
Key.FORESPOERSEL_ID to forespoerselId.toJson(),
// TODO kan fjernes etter overgangsfase
Key.ORGNRUNDERENHET to orgnr.toJson(),
// TODO kan fjernes etter overgangsfase
Key.FNR to fnr.toJson(),
Key.SKAL_HA_PAAMINNELSE to skalHaPaaminnelse.toJson(Boolean.serializer()),
Key.FORESPOERSEL to forespoerselFraBro.toForespoersel().toJson(Forespoersel.serializer()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import io.kotest.matchers.nulls.shouldNotBeNull
import io.kotest.matchers.shouldBe
import io.mockk.coEvery
import kotlinx.serialization.builtins.serializer
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.til
import no.nav.helsearbeidsgiver.felles.BehovType
import no.nav.helsearbeidsgiver.felles.EventName
import no.nav.helsearbeidsgiver.felles.Key
Expand All @@ -21,6 +22,8 @@ import no.nav.helsearbeidsgiver.utils.json.fromJson
import no.nav.helsearbeidsgiver.utils.json.serializer.UuidSerializer
import no.nav.helsearbeidsgiver.utils.json.serializer.set
import no.nav.helsearbeidsgiver.utils.json.toJson
import no.nav.helsearbeidsgiver.utils.test.date.januar
import no.nav.helsearbeidsgiver.utils.test.date.mars
import no.nav.helsearbeidsgiver.utils.test.wrapper.genererGyldig
import no.nav.helsearbeidsgiver.utils.wrapper.Fnr
import no.nav.helsearbeidsgiver.utils.wrapper.Orgnr
Expand Down Expand Up @@ -52,7 +55,7 @@ class ForespoerselMottattIT : EndToEndTest() {
fnr = Mock.fnr,
forespoerselId = Mock.forespoerselId,
vedtaksperiodeId = UUID.randomUUID(),
sykmeldingsperioder = emptyList(),
sykmeldingsperioder = listOf(23.januar til 15.mars),
egenmeldingsperioder = emptyList(),
bestemmendeFravaersdager = emptyMap(),
forespurtData = mockForespurtData(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class InnsendingIT : EndToEndTest() {
}

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET)
.firstAsMap()
.also {
it shouldContainKey Key.INNTEKTSMELDING
Expand Down Expand Up @@ -153,6 +153,8 @@ class InnsendingIT : EndToEndTest() {

messages.filter(EventName.INNTEKTSMELDING_JOURNALFOERT).all() shouldHaveSize 0

messages.filter(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET).all() shouldHaveSize 0

messages.filter(EventName.INNTEKTSMELDING_DISTRIBUERT).all() shouldHaveSize 0
}

Expand Down Expand Up @@ -186,6 +188,8 @@ class InnsendingIT : EndToEndTest() {

messages.filter(EventName.INNTEKTSMELDING_JOURNALFOERT).all() shouldHaveSize 0

messages.filter(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET).all() shouldHaveSize 0

messages.filter(EventName.INNTEKTSMELDING_DISTRIBUERT).all() shouldHaveSize 0
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ class LagreSelvbestemtIT : EndToEndTest() {
.shouldContainNokTilJournalfoeringOgDistribusjon(transaksjonId, nyInntektsmelding, compareType = false)

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET)
.firstAsMap()
.shouldContainNokTilJournalfoeringOgDistribusjon(transaksjonId, nyInntektsmelding, compareType = false)

Expand Down Expand Up @@ -250,7 +250,7 @@ class LagreSelvbestemtIT : EndToEndTest() {
.shouldContainNokTilJournalfoeringOgDistribusjon(transaksjonId, Mock.inntektsmelding, compareType = true)

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET)
.firstAsMap()
.shouldContainNokTilJournalfoeringOgDistribusjon(transaksjonId, Mock.inntektsmelding, compareType = true)

Expand Down Expand Up @@ -324,7 +324,7 @@ class LagreSelvbestemtIT : EndToEndTest() {
.shouldBeEmpty()

messages
.filter(EventName.INNTEKTSMELDING_JOURNALFOERT)
.filter(EventName.INNTEKTSMELDING_JOURNALPOST_ID_LAGRET)
.all()
.shouldBeEmpty()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,14 @@ import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Permittering
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Sykefravaer
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Tariffendring
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.VarigLoennsendring
import no.nav.helsearbeidsgiver.felles.utils.tilNorskFormat

private const val FORKLARING_ENDRING = "Forklaring for endring"

class PdfDokument(
val inntektsmelding: Inntektsmelding,
) {
private val pdf = PdfBuilder(bodySize = 20, topText = "Innsendt: ${inntektsmelding.mottatt.toNorsk()}") // Setter skriftstørrelsen på labels og text
private val pdf = PdfBuilder(bodySize = 20, topText = "Innsendt: ${inntektsmelding.mottatt.tilNorskFormat()}") // Setter skriftstørrelsen på labels og text
private var y = 0
private val kolonneEn = 0
private val kolonneTo = 420
Expand Down Expand Up @@ -158,7 +159,7 @@ class PdfDokument(
val seksjonStartY = y // Husk når denne seksjonen starter i y-aksen

// --- Kolonnen til venstre -------------------------------------------------
addLabel("Bestemmende fraværsdag (skjæringstidpunkt)", inntektsmelding.inntekt?.inntektsdato?.toNorsk(), kolonneEn)
addLabel("Bestemmende fraværsdag (skjæringstidpunkt)", inntektsmelding.inntekt?.inntektsdato?.tilNorskFormat(), kolonneEn)
addLabel("Arbeidsgiverperiode", x = kolonneEn)
addPerioder(kolonneEn, inntektsmelding.agp?.perioder.orEmpty())

Expand All @@ -185,14 +186,17 @@ class PdfDokument(
perioder: List<Periode>,
) {
perioder.forEach {
addLabel("Fra", it.fom.toNorsk(), x, linefeed = false)
addLabel("Til", it.tom.toNorsk(), x + 200)
addLabel("Fra", it.fom.tilNorskFormat(), x, linefeed = false)
addLabel("Til", it.tom.tilNorskFormat(), x + 200)
}
}

private fun addInntekt() {
addSection("Beregnet månedslønn")
addLabel("Registrert inntekt (per ${inntektsmelding.inntekt?.inntektsdato?.toNorsk()})", "${inntektsmelding.inntekt?.beloep?.toNorsk()} kr/måned")
addLabel(
"Registrert inntekt (per ${inntektsmelding.inntekt?.inntektsdato?.tilNorskFormat()})",
"${inntektsmelding.inntekt?.beloep?.tilNorskFormat()} kr/måned",
)
val endringAarsak = inntektsmelding.inntekt?.endringAarsak
when (endringAarsak) {
null -> return // trenger ikke sende inn årsak...
Expand Down Expand Up @@ -245,29 +249,29 @@ class PdfDokument(

private fun addTariffendring(tariffendring: Tariffendring) {
addLabel(FORKLARING_ENDRING, "Tariffendring")
addLabel("Gjelder fra", tariffendring.gjelderFra.toNorsk(), linefeed = false)
addLabel("Ble kjent", tariffendring.bleKjent.toNorsk(), kolonneTo)
addLabel("Gjelder fra", tariffendring.gjelderFra.tilNorskFormat(), linefeed = false)
addLabel("Ble kjent", tariffendring.bleKjent.tilNorskFormat(), kolonneTo)
}

private fun addVarigLonnsendring(varigLoennsendring: VarigLoennsendring) {
addLabel(FORKLARING_ENDRING, "Varig lønnsendring")
addLabel("Gjelder fra", varigLoennsendring.gjelderFra.toNorsk())
addLabel("Gjelder fra", varigLoennsendring.gjelderFra.tilNorskFormat())
}

private fun addNyStilling(nyStilling: NyStilling) {
addLabel(FORKLARING_ENDRING, "Ny stilling", linefeed = false)
addLabel("Gjelder fra", nyStilling.gjelderFra.toNorsk(), kolonneTo)
addLabel("Gjelder fra", nyStilling.gjelderFra.tilNorskFormat(), kolonneTo)
}

private fun addNyStillingsprosent(nyStillingsprosent: NyStillingsprosent) {
addLabel(FORKLARING_ENDRING, "Ny stillingsprosent", linefeed = false)
addLabel("Gjelder fra", nyStillingsprosent.gjelderFra.toNorsk(), kolonneTo)
addLabel("Gjelder fra", nyStillingsprosent.gjelderFra.tilNorskFormat(), kolonneTo)
}

private fun addBonus() {
addLabel(FORKLARING_ENDRING, "Bonus")
// addLabel("Estimert årlig bonus", årligBonus.toNorsk())
// addLabel("Dato siste bonus", datoBonus.toNorsk())
// addLabel("Estimert årlig bonus", årligBonus.tilNorskFormat())
// addLabel("Dato siste bonus", datoBonus.tilNorskFormat())
}

private fun addFerietrekk() {
Expand All @@ -280,28 +284,28 @@ class PdfDokument(

addSection("Refusjon")

addLabel("Betaler arbeidsgiver full lønn til arbeidstaker i arbeidsgiverperioden?", (redusertLoennIAgp == null).toNorsk())
addLabel("Betaler arbeidsgiver full lønn til arbeidstaker i arbeidsgiverperioden?", (redusertLoennIAgp == null).tilNorskFormat())
if (redusertLoennIAgp != null) {
// Redusert lønn i AGP - to ekstra spørsmål
addLabel("Begrunnelse", redusertLoennIAgp.begrunnelse.tilTekst())
addLabel("Utbetalt under arbeidsgiverperiode", redusertLoennIAgp.beloep.toNorsk() + " kr")
addLabel("Utbetalt under arbeidsgiverperiode", redusertLoennIAgp.beloep.tilNorskFormat() + " kr")
}

addLabel("Betaler arbeidsgiver lønn under hele eller deler av sykefraværet?", (refusjon != null).toNorsk())
addLabel("Betaler arbeidsgiver lønn under hele eller deler av sykefraværet?", (refusjon != null).tilNorskFormat())
if (refusjon != null) {
// Ja - tre ekstra spørsmål
addLabel("Refusjonsbeløp pr måned", refusjon.beloepPerMaaned.toNorsk() + " kr/måned")
addLabel("Refusjonsbeløp pr måned", refusjon.beloepPerMaaned.tilNorskFormat() + " kr/måned")

val sluttdato = refusjon.sluttdato
addLabel("Opphører refusjonskravet i perioden", (sluttdato != null).toNorsk())
addLabel("Opphører refusjonskravet i perioden", (sluttdato != null).tilNorskFormat())
if (sluttdato != null) {
addLabel("Siste dag dere krever refusjon for", sluttdato.toNorsk())
addLabel("Siste dag dere krever refusjon for", sluttdato.tilNorskFormat())
}

addLabel("Endringer i refusjon i perioden", refusjon.endringer.isNotEmpty().toNorsk())
addLabel("Endringer i refusjon i perioden", refusjon.endringer.isNotEmpty().tilNorskFormat())
refusjon.endringer.forEach {
addLabel("Beløp", it.beloep.toNorsk(), kolonneEn, linefeed = false)
addLabel("Dato", it.startdato.toNorsk(), kolonneTo)
addLabel("Beløp", it.beloep.tilNorskFormat(), kolonneEn, linefeed = false)
addLabel("Dato", it.startdato.tilNorskFormat(), kolonneTo)
}
}
}
Expand All @@ -316,15 +320,15 @@ class PdfDokument(
addLabel("Verdi naturalytelse - kr/måned", x = naturalytelse3)
inntektsmelding.inntekt?.naturalytelser?.forEach {
addText(it.naturalytelse.name, naturalytelse1, linefeed = false)
addText(it.sluttdato.toNorsk(), naturalytelse2, linefeed = false)
addText(it.verdiBeloep.toNorsk(), naturalytelse3)
addText(it.sluttdato.tilNorskFormat(), naturalytelse2, linefeed = false)
addText(it.verdiBeloep.tilNorskFormat(), naturalytelse3)
}
moveCursorBy(pdf.bodySize * 2)
}
}

private fun addTidspunkt() {
pdf.addItalics("Innsendt: ${inntektsmelding.mottatt.toNorsk()}", kolonneEn, y)
pdf.addItalics("Innsendt: ${inntektsmelding.mottatt.tilNorskFormat()}", kolonneEn, y)
moveCursorBy(pdf.bodySize)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,17 @@ package no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument

import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.RedusertLoennIAgp
import java.text.DecimalFormat
import java.time.LocalDate
import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter

fun LocalDate.toNorsk(): String = this.format(DateTimeFormatter.ofPattern("dd.MM.yyyy"))
fun OffsetDateTime.tilNorskFormat(): String = this.format(DateTimeFormatter.ofPattern("dd.MM.yyyy ' kl. ' HH.mm.ss"))

fun OffsetDateTime.toNorsk(): String = this.format(DateTimeFormatter.ofPattern("dd.MM.yyyy ' kl. ' HH.mm.ss"))

fun Double.toNorsk(): String {
fun Double.tilNorskFormat(): String {
val format = DecimalFormat("#,###.##")
return format.format(this)
}

fun Boolean.toNorsk(): String =
fun Boolean.tilNorskFormat(): String =
if (this) {
"Ja"
} else {
Expand Down
Loading

0 comments on commit 7fa3079

Please sign in to comment.