-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flere begrunnelser v1 - Oppdatert IM modell og PDF støtte #837
base: main
Are you sure you want to change the base?
Changes from 5 commits
646c0ce
a977598
f13b675
7ee9e90
139fec1
5b05798
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,7 @@ | ||
package no.nav.helsearbeidsgiver.inntektsmelding.api.hentselvbestemtim | ||
|
||
import io.kotest.assertions.assertSoftly | ||
import io.kotest.assertions.json.shouldEqualJson | ||
import io.kotest.matchers.shouldBe | ||
import io.kotest.matchers.string.shouldBeEmpty | ||
import io.ktor.client.statement.bodyAsText | ||
|
@@ -77,6 +79,12 @@ class HentSelvbestemtImRouteKtTest : ApiTest() { | |
|
||
val actualJson = response.bodyAsText() | ||
|
||
println(Mock.successResponseJson(expectedInntektsmelding)) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Kan vel droppe println og assertSoftly egentlig? |
||
|
||
assertSoftly { | ||
actualJson shouldEqualJson Mock.successResponseJson(expectedInntektsmelding) | ||
} | ||
|
||
response.status shouldBe HttpStatusCode.OK | ||
actualJson shouldBe Mock.successResponseJson(expectedInntektsmelding) | ||
} | ||
|
@@ -318,7 +326,8 @@ private fun Inntekt.hardcodedJson(): String = | |
"beloep": $beloep, | ||
"inntektsdato": "$inntektsdato", | ||
"naturalytelser": [${naturalytelser.joinToString(transform = Naturalytelse::hardcodedJson)}], | ||
"endringAarsak": ${endringAarsak?.hardcodedJson()} | ||
"endringAarsak": ${endringAarsak?.hardcodedJson()}, | ||
"endringAarsaker": [${endringAarsak?.hardcodedJson()}] | ||
} | ||
""" | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package no.nav.helsearbeidsgiver.felles.utils | ||
|
||
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Inntektsmelding | ||
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.skjema.SkjemaInntektsmelding | ||
|
||
// midlertidlig duplisering for å støtte flere endringsÅrsaker | ||
fun SkjemaInntektsmelding.fyllUtMangledeEndringsAarsaker(): SkjemaInntektsmelding { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Kanskje ha et annet navn en fyllUtManglede - noe mer som ala "konverterEndringAarsakTilListe" |
||
val medEndringsAarsakerfyllt = this.copy(inntekt = this.inntekt?.copy(endringAarsaker = listOfNotNull(this.inntekt?.endringAarsak))) | ||
val verdiMangler = this.inntekt?.endringAarsaker.isNullOrEmpty() | ||
return if (verdiMangler) medEndringsAarsakerfyllt else this | ||
} | ||
|
||
fun Inntektsmelding.fyllUtMangledeEndringsAarsaker(): Inntektsmelding { | ||
val medEndringsAarsakerfyllt = this.copy(inntekt = this.inntekt?.copy(endringAarsaker = listOfNotNull(this.inntekt?.endringAarsak))) | ||
val verdiMangler = this.inntekt?.endringAarsaker.isNullOrEmpty() | ||
return if (verdiMangler) medEndringsAarsakerfyllt else this | ||
} | ||
|
||
// fun LagretInntektsmelding.fyllUtMangledeEndringsAarsaker(): LagretInntektsmelding { | ||
// | ||
// | ||
// val medEndringsAarsakerfyllt = this.copy(inntekt = this.inntekt?.copy(endringAarsaker = listOfNotNull(this.inntekt?.endringAarsak))) | ||
// val verdiMangler = this.inntekt?.endringAarsaker.isNullOrEmpty() | ||
// return if (verdiMangler) medEndringsAarsakerfyllt else this | ||
// } |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,7 @@ | |
|
||
package no.nav.helsearbeidsgiver.inntektsmelding.joark.dokument | ||
|
||
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.* | ||
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.AarsakInnsending | ||
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Bonus | ||
import no.nav.helsearbeidsgiver.domene.inntektsmelding.v1.Feilregistrert | ||
|
@@ -18,8 +19,9 @@ 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 | ||
import no.nav.helsearbeidsgiver.utils.pipe.orDefault | ||
|
||
private const val FORKLARING_ENDRING = "Forklaring for endring" | ||
private const val FORKLARING_ENDRING = "Endringsårsak" | ||
|
||
class PdfDokument( | ||
val inntektsmelding: Inntektsmelding, | ||
|
@@ -197,87 +199,85 @@ class PdfDokument( | |
"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... | ||
is Bonus -> addBonus() | ||
is Feilregistrert -> addFeilregistrert() | ||
is Ferie -> addFerie(endringAarsak) | ||
is Ferietrekk -> addFerietrekk() | ||
is NyStilling -> addNyStilling(endringAarsak) | ||
is NyStillingsprosent -> addNyStillingsprosent(endringAarsak) | ||
is Nyansatt -> addNyAnsatt() | ||
is Permisjon -> addPermisjon(endringAarsak) | ||
is Permittering -> addPermittering(endringAarsak) | ||
is Sykefravaer -> addSykefravaer(endringAarsak) | ||
is Tariffendring -> addTariffendring(endringAarsak) | ||
is VarigLoennsendring -> addVarigLonnsendring(endringAarsak) | ||
|
||
val endringAarsaker = inntektsmelding.inntekt?.endringAarsaker.orDefault(emptyList()) | ||
val antall = endringAarsaker.size | ||
endringAarsaker.forEachIndexed { indeks, endringAarsak -> | ||
|
||
val forklaringEndring = | ||
if (antall > 1) { | ||
"$FORKLARING_ENDRING (${indeks + 1} av $antall)" | ||
} else { | ||
FORKLARING_ENDRING | ||
} | ||
|
||
when (endringAarsak) { | ||
is Bonus, is Feilregistrert, is Nyansatt, is Ferietrekk -> | ||
addLabel(forklaringEndring, endringAarsak.beskrivelse()) | ||
|
||
is Ferie -> | ||
addInntektEndringPerioder(forklaringEndring, endringAarsak.beskrivelse(), endringAarsak.ferier) | ||
is Permisjon -> | ||
addInntektEndringPerioder(forklaringEndring, endringAarsak.beskrivelse(), endringAarsak.permisjoner) | ||
is Permittering -> | ||
addInntektEndringPerioder(forklaringEndring, endringAarsak.beskrivelse(), endringAarsak.permitteringer) | ||
is Sykefravaer -> | ||
addInntektEndringPerioder(forklaringEndring, endringAarsak.beskrivelse(), endringAarsak.sykefravaer) | ||
|
||
is NyStilling -> | ||
addNyStilling(forklaringEndring, endringAarsak) | ||
is Tariffendring -> | ||
addTariffendring(forklaringEndring, endringAarsak) | ||
is VarigLoennsendring -> | ||
addVarigLonnsendring(forklaringEndring, endringAarsak) | ||
is NyStillingsprosent -> | ||
addNyStillingsprosent(forklaringEndring, endringAarsak) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Her er løsningen på å ikke legge til en mutable verdi. Kan argumenteres at den er egentlig mer oversiktlig. Øverste del kan forenkles til: when (endringAarsak) {
is Bonus, is Feilregistrert, is Nyansatt, is Ferietrekk ->
addLabel(forklaringEndring, endringAarsak.beskrivelse()) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fint å slippe mutable! 👏 |
||
} | ||
} | ||
} | ||
|
||
private fun addInntektEndringPerioder( | ||
forklaringEndring: String, | ||
endringAarsak: String, | ||
perioder: List<Periode>, | ||
) { | ||
addLabel(FORKLARING_ENDRING, endringAarsak, linefeed = false) | ||
addLabel(forklaringEndring, endringAarsak, linefeed = false) | ||
addPerioder(kolonneTo, perioder) | ||
} | ||
|
||
private fun addPermisjon(permisjon: Permisjon) { | ||
addInntektEndringPerioder("Permisjon", permisjon.permisjoner) | ||
} | ||
|
||
private fun addFerie(ferie: Ferie) { | ||
addInntektEndringPerioder("Ferie", ferie.ferier) | ||
} | ||
|
||
private fun addPermittering(permittering: Permittering) { | ||
addInntektEndringPerioder("Permittering", permittering.permitteringer) | ||
} | ||
|
||
private fun addSykefravaer(sykefravaer: Sykefravaer) { | ||
addInntektEndringPerioder("Sykefravær", sykefravaer.sykefravaer) | ||
} | ||
|
||
private fun addNyAnsatt() { | ||
addLabel(FORKLARING_ENDRING, "Nyansatt") | ||
} | ||
|
||
private fun addFeilregistrert() { | ||
addLabel(FORKLARING_ENDRING, "Mangelfull eller uriktig rapportering til A-ordningen") | ||
} | ||
|
||
private fun addTariffendring(tariffendring: Tariffendring) { | ||
addLabel(FORKLARING_ENDRING, "Tariffendring") | ||
private fun addTariffendring( | ||
forklaringEndring: String, | ||
tariffendring: Tariffendring, | ||
) { | ||
addLabel(forklaringEndring, tariffendring.beskrivelse()) | ||
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") | ||
private fun addVarigLonnsendring( | ||
forklaringEndring: String, | ||
varigLoennsendring: VarigLoennsendring, | ||
) { | ||
addLabel(forklaringEndring, varigLoennsendring.beskrivelse()) | ||
addLabel("Gjelder fra", varigLoennsendring.gjelderFra.tilNorskFormat()) | ||
} | ||
|
||
private fun addNyStilling(nyStilling: NyStilling) { | ||
addLabel(FORKLARING_ENDRING, "Ny stilling", linefeed = false) | ||
private fun addNyStilling( | ||
forklaringEndring: String, | ||
nyStilling: NyStilling, | ||
) { | ||
addLabel(forklaringEndring, nyStilling.beskrivelse(), linefeed = false) | ||
addLabel("Gjelder fra", nyStilling.gjelderFra.tilNorskFormat(), kolonneTo) | ||
} | ||
|
||
private fun addNyStillingsprosent(nyStillingsprosent: NyStillingsprosent) { | ||
addLabel(FORKLARING_ENDRING, "Ny stillingsprosent", linefeed = false) | ||
private fun addNyStillingsprosent( | ||
forklaringEndring: String, | ||
nyStillingsprosent: NyStillingsprosent, | ||
) { | ||
addLabel(forklaringEndring, nyStillingsprosent.beskrivelse(), linefeed = false) | ||
addLabel("Gjelder fra", nyStillingsprosent.gjelderFra.tilNorskFormat(), kolonneTo) | ||
} | ||
|
||
private fun addBonus() { | ||
addLabel(FORKLARING_ENDRING, "Bonus") | ||
// addLabel("Estimert årlig bonus", årligBonus.tilNorskFormat()) | ||
// addLabel("Dato siste bonus", datoBonus.tilNorskFormat()) | ||
} | ||
|
||
private fun addFerietrekk() { | ||
addLabel(FORKLARING_ENDRING, "Ferietrekk/Utbetaling av feriepenger") | ||
} | ||
|
||
private fun addRefusjon() { | ||
val redusertLoennIAgp = inntektsmelding.agp?.redusertLoennIAgp | ||
val refusjon = inntektsmelding.refusjon | ||
|
@@ -332,3 +332,21 @@ class PdfDokument( | |
moveCursorBy(pdf.bodySize) | ||
} | ||
} | ||
|
||
fun InntektEndringAarsak.beskrivelse(): String = | ||
when (this) { | ||
is Bonus -> "Bonus" | ||
is Feilregistrert -> "Mangelfull eller uriktig rapportering til A-ordningen" | ||
is Nyansatt -> "Nyansatt" | ||
is Ferietrekk -> "Ferietrekk/Utbetaling av feriepenger" | ||
is Ferie -> "Ferie" | ||
is Permisjon -> "Permisjon" | ||
is Permittering -> "Permittering" | ||
is Sykefravaer -> "Sykefravær" | ||
is NyStilling -> "Ny stilling" | ||
is Tariffendring -> "Tariffendring" | ||
is VarigLoennsendring -> "Varig lønnsendring" | ||
is NyStillingsprosent -> "Ny stillingsprosent" | ||
|
||
else -> throw NotImplementedError("Ingen beskrivelse definert for InntektEndringAarsak") | ||
} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Denne eksisterer for å kunne teste at teksten kommer i PDFen |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Kan gjerne fjerne utkommentert kode, heller ta det inn når det faktisk skal tas i bruk