Skip to content

Commit

Permalink
Merge branch 'main' into dev/fail-objekt
Browse files Browse the repository at this point in the history
  • Loading branch information
bjerga committed Oct 20, 2023
2 parents ad13aab + 281bbe5 commit d216383
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ fun Application.apiModule(rapid: RapidsConnection) {

install(StatusPages) {
exception<Throwable> { call, cause ->
"Ukjent feil.".also {
logger.error(it)
sikkerLogger.error(it, cause)
}

call.respondText(
text = "Error 500: $cause",
status = HttpStatusCode.InternalServerError
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import no.nav.helsearbeidsgiver.inntektsmelding.api.utils.respondInternalServerE
import no.nav.helsearbeidsgiver.inntektsmelding.api.validation.ValidationResponse
import no.nav.helsearbeidsgiver.inntektsmelding.api.validation.validationResponseMapper
import no.nav.helsearbeidsgiver.utils.json.fromJson
import no.nav.helsearbeidsgiver.utils.json.parseJson
import no.nav.helsearbeidsgiver.utils.json.toPretty
import org.valiktor.ConstraintViolationException
import java.util.UUID
Expand All @@ -43,7 +44,15 @@ fun RouteExtra.innsendingRoute() {

if (forespoerselId != null) {
try {
val request = call.receiveText().fromJson(Innsending.serializer())
val request = call.receiveText()
.parseJson()
.also { json ->
"Mottok innsending med forespørselId: $forespoerselId".let {
logger.info(it)
sikkerLogger.info("$it og request:\n$json")
}
}
.fromJson(Innsending.serializer())
.let {
// TODO gjør denne sjekken ved opprettelse
if (it.fullLønnIArbeidsgiverPerioden?.utbetalerFullLønn == true) {
Expand Down Expand Up @@ -91,11 +100,6 @@ fun RouteExtra.innsendingRoute() {
}
}

"Mottok innsending med forespørselId: $forespoerselId".let {
logger.info(it)
sikkerLogger.info("$it og request:\n$request")
}

authorize(
forespoerselId = forespoerselId,
tilgangProducer = tilgangProducer,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import no.nav.helsearbeidsgiver.inntektsmelding.api.validation.isValidBehandling
import org.valiktor.functions.isGreaterThan
import org.valiktor.functions.isGreaterThanOrEqualTo
import org.valiktor.functions.isLessThan
import org.valiktor.functions.isLessThanOrEqualTo
import org.valiktor.functions.isNotEmpty
import org.valiktor.functions.isNotNull
import org.valiktor.functions.isTrue
Expand Down Expand Up @@ -78,11 +79,13 @@ fun Innsending.validate() {
validate(Refusjon::refusjonPrMnd).isNotNull()
validate(Refusjon::refusjonPrMnd).isGreaterThanOrEqualTo(0.0)
validate(Refusjon::refusjonPrMnd).isLessThan(1_000_000.0)
validate(Refusjon::refusjonPrMnd).isLessThanOrEqualTo(innsendt.inntekt.beregnetInntekt)

validate(Refusjon::refusjonEndringer).validateForEach {
validate(RefusjonEndring::beløp).isNotNull()
validate(RefusjonEndring::beløp).isGreaterThanOrEqualTo(0.0)
validate(RefusjonEndring::beløp).isLessThan(1_000_000.0)
validate(RefusjonEndring::beløp).isLessThanOrEqualTo(innsendt.inntekt.beregnetInntekt)
validate(RefusjonEndring::dato).isNotNull()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class InnsendingValidateKtTest : FunSpec({
val maksRefusjon = 1_000_001.0
val maksNaturalBeloep = 1_000_000.0
val negativtBeloep = -0.1
val hoeyereEnnInntekt = GYLDIG_INNSENDING_REQUEST.inntekt.beregnetInntekt.plus(1)

test("godtar fullstendig innsending") {
GYLDIG_INNSENDING_REQUEST.validate()
Expand Down Expand Up @@ -155,7 +156,10 @@ class InnsendingValidateKtTest : FunSpec({
context(Innsending::inntekt.name) {
test("skal tillate inntekt på 0 kroner") {
val inntekt = GYLDIG_INNSENDING_REQUEST.inntekt.copy(beregnetInntekt = zero)
GYLDIG_INNSENDING_REQUEST.copy(inntekt = inntekt).validate()
GYLDIG_INNSENDING_REQUEST.copy(
inntekt = inntekt,
refusjon = Refusjon(utbetalerHeleEllerDeler = false)
).validate()
}
test("skal gi feil dersom beregnetInntekt er for høy") {
Expand Down Expand Up @@ -213,7 +217,7 @@ class InnsendingValidateKtTest : FunSpec({
val gyldigInnsending = GYLDIG_INNSENDING_REQUEST.copy(
inntekt = Inntekt(
endringÅrsak = endringAarsak,
beregnetInntekt = 1.0,
beregnetInntekt = GYLDIG_INNSENDING_REQUEST.inntekt.beregnetInntekt,
bekreftet = true,
manueltKorrigert = false
)
Expand Down Expand Up @@ -269,7 +273,8 @@ class InnsendingValidateKtTest : FunSpec({
mapOf(
"skal gi feil dersom refusjonsbeløp er udefinert" to null,
"skal gi feil dersom refusjonsbeløp er negativt" to negativtBeloep,
"skal gi feil dersom refusjonsbeløp er for høyt" to maksRefusjon
"skal gi feil dersom refusjonsbeløp er for høyt" to maksRefusjon,
"skal gi feil dersom refusjonsbeløp er høyere enn inntekt" to hoeyereEnnInntekt
)
) { refusjonPrMnd ->
val ugyldigInnsending = GYLDIG_INNSENDING_REQUEST.copy(
Expand Down Expand Up @@ -317,6 +322,7 @@ class InnsendingValidateKtTest : FunSpec({
"feiler ved endring av refusjon uten definert beløp" to RefusjonEndring(null, now),
"feiler ved endring av refusjon til negativt beløp" to RefusjonEndring(negativtBeloep, now),
"feiler ved endring av refusjon til over maksimalt beløp" to RefusjonEndring(maksRefusjon, now),
"feiler ved endring av refusjon til høyere enn inntekt" to RefusjonEndring(hoeyereEnnInntekt, now),
"feiler ved endring av refusjon uten satt dato" to RefusjonEndring(1.0, null)
)
) { refusjonEndring ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package no.nav.helsearbeidsgiver.inntektsmelding.integrasjonstest
import io.kotest.matchers.ints.shouldBeGreaterThan
import io.kotest.matchers.nulls.shouldNotBeNull
import io.kotest.matchers.shouldBe
import io.mockk.coEvery
import kotlinx.serialization.json.JsonElement
import no.nav.helsearbeidsgiver.dokarkiv.domene.OpprettOgFerdigstillResponse
import no.nav.helsearbeidsgiver.domene.inntektsmelding.Innsending
import no.nav.helsearbeidsgiver.felles.DataFelt
import no.nav.helsearbeidsgiver.felles.EventName
Expand All @@ -29,6 +31,15 @@ class InnsendingServiceIT : EndToEndTest() {
forespoerselRepository.oppdaterSakId(Mock.forespoerselId.toString(), Mock.SAK_ID)
forespoerselRepository.oppdaterOppgaveId(Mock.forespoerselId.toString(), Mock.OPPGAVE_ID)

coEvery {
dokarkivClient.opprettOgFerdigstillJournalpost(any(), any(), any(), any(), any(), any(), any())
} returns OpprettOgFerdigstillResponse(
journalpostId = "journalpost-id-sukkerspinn",
journalpostFerdigstilt = true,
melding = "Ha en brillefin dag!",
dokumenter = emptyList()
)

publish(
Key.EVENT_NAME to EventName.INSENDING_STARTED.toJson(),
Key.CLIENT_ID to Mock.clientId.toJson(),
Expand All @@ -43,6 +54,8 @@ class InnsendingServiceIT : EndToEndTest() {

messages.all().filter(Mock.clientId).size shouldBe 10

messages.filterFeil().all().size shouldBe 0

val innsendingStr = redisStore.get(Mock.clientId.toString()).shouldNotBeNull()
innsendingStr.length shouldBeGreaterThan 2
}
Expand Down Expand Up @@ -79,13 +92,13 @@ private fun List<JsonElement>.filter(clientId: UUID): List<JsonElement> {
msg[Key.TRANSACTION_ORIGIN]
)
.firstOrNull()
.shouldNotBeNull()
.fromJson(UuidSerializer)
?.fromJson(UuidSerializer)

val innsendingStartetEllerImMottatt = eventName == EventName.INSENDING_STARTED ||
(eventName == EventName.INNTEKTSMELDING_MOTTATT && !msg.contains(Key.BEHOV))

uuid == transaksjonId &&
uuid != null &&
uuid == transaksjonId &&
innsendingStartetEllerImMottatt &&
!msg.contains(Key.LØSNING)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ class PdfBuilder(
val titleSize: Int = 30,
val sectionSize: Int = 24,
val bodySize: Int = 16,
private val logo: String = "logo.png"
private val logo: String = "logo.png",
private val topText: String? = null
) {

private val list: MutableList<Text> = mutableListOf()
Expand Down Expand Up @@ -67,6 +68,16 @@ class PdfBuilder(
return y >= pageNumber * PAGE_HEIGHT && y < (pageNumber + 1) * PAGE_HEIGHT
}

private fun addTopText(contentStream: PDPageContentStream, font: PDType0Font, text: String) {
contentStream.beginText()
Text(bodySize, text, bold = false, italic = true, 0 + paddingHorisontal / 2, MAX).also { text ->
contentStream.setFont(font, text.fontSize.toFloat() * RATIO)
contentStream.newLineAtOffset(text.x.toFloat(), text.y.toFloat())
contentStream.showText(text.value)
}
contentStream.endText()
}

private fun producePage(pageNr: Int, doc: PDDocument, FONT_NORMAL: PDType0Font, FONT_BOLD: PDType0Font, FONT_ITALIC: PDType0Font): PDPage {
val page = PDPage()
val contentStream = PDPageContentStream(doc, page)
Expand All @@ -79,6 +90,7 @@ class PdfBuilder(
val logoX = PAGE_WIDTH - w - paddingHorisontal
val logoY = MAX - h
contentStream.drawImage(pdImage, logoX, logoY, w, h)
topText?.also { addTopText(contentStream, FONT_ITALIC, it) }
}

val filteredList = list.filter { isPage(it.y, pageNr) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import java.time.LocalDate
private const val FORKLARING_ENDRING = "Forklaring for endring"
class PdfDokument(val dokument: Inntektsmelding) {

private val pdf = PdfBuilder(bodySize = 20) // Setter skriftstørrelsen på labels og text
private val pdf = PdfBuilder(bodySize = 20, topText = "Innsendt: ${dokument.tidspunkt.toNorsk()}") // Setter skriftstørrelsen på labels og text
private var y = 0
private val KOLONNE_EN = 0
private val KOLONNE_TO = 420
Expand Down Expand Up @@ -252,7 +252,7 @@ class PdfDokument(val dokument: Inntektsmelding) {
// addLabel("Dato siste bonus", datoBonus.toNorsk())
}
private fun addFerietrekk() {
addLabel(FORKLARING_ENDRING, "Ferietrekk")
addLabel(FORKLARING_ENDRING, "Ferietrekk/Utbetaling av feriepenger")
}

private fun addRefusjon() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import no.nav.helsearbeidsgiver.domene.inntektsmelding.BegrunnelseIngenEllerRedu
import no.nav.helsearbeidsgiver.domene.inntektsmelding.Bonus
import no.nav.helsearbeidsgiver.domene.inntektsmelding.Feilregistrert
import no.nav.helsearbeidsgiver.domene.inntektsmelding.Ferie
import no.nav.helsearbeidsgiver.domene.inntektsmelding.Ferietrekk
import no.nav.helsearbeidsgiver.domene.inntektsmelding.FullLoennIArbeidsgiverPerioden
import no.nav.helsearbeidsgiver.domene.inntektsmelding.Inntekt
import no.nav.helsearbeidsgiver.domene.inntektsmelding.InntektEndringAarsak
Expand Down Expand Up @@ -173,6 +174,7 @@ class PdfDokumentTest {
map["sykefravaer"] = Sykefravaer(perioder)
map["nyansatt"] = Nyansatt
map["feilregistrert"] = Feilregistrert
map["ferietrekk"] = Ferietrekk

map.forEach {
writePDF(
Expand Down

0 comments on commit d216383

Please sign in to comment.