Skip to content

Commit

Permalink
Oppgraderer til ny bidrag-transport
Browse files Browse the repository at this point in the history
Legger til flere tests
Fikser én bug
  • Loading branch information
unorsk committed Sep 28, 2023
1 parent 4dc01ca commit fb1930d
Show file tree
Hide file tree
Showing 10 changed files with 122 additions and 61 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@
<dependency>
<groupId>no.nav.bidrag</groupId>
<artifactId>bidrag-transport</artifactId>
<version>20230821134807_d0642b9</version>
<version>20230918144946_1e1bc33</version>
</dependency>

<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,20 @@ import no.nav.bidrag.behandling.transformers.toNoString
import no.nav.bidrag.beregn.felles.enums.BostatusKode
import no.nav.bidrag.beregn.felles.enums.SivilstandKode
import no.nav.bidrag.domain.enums.GrunnlagType
import no.nav.bidrag.transport.beregning.forskudd.rest.request.BeregnForskuddGrunnlag
import no.nav.bidrag.transport.beregning.forskudd.rest.request.Grunnlag
import no.nav.bidrag.transport.beregning.felles.BeregnGrunnlag
import no.nav.bidrag.transport.beregning.felles.Grunnlag
import org.springframework.stereotype.Service
import java.math.BigDecimal
import java.time.LocalDate

@Service
class ForskuddBeregning {

private fun prepareSoknadsBarn(soknadBarn: Rolle): List<Grunnlag> =
listOf(
Grunnlag(
referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id,
type = GrunnlagType.SOKNADSBARN_INFO.toString(),
type = GrunnlagType.SOKNADSBARN_INFO,
innhold = POJONode(
SoknadsBarnNode(
soknadsbarnId = soknadBarn.id!!.toInt(),
Expand All @@ -57,7 +58,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(),
type = GrunnlagType.BOSTATUS.toString(),
type = GrunnlagType.BOSTATUS,
innhold = POJONode(
BostatusNode(
datoFom = it.datoFom.toNoString(),
Expand All @@ -75,7 +76,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""),
type = GrunnlagType.BARN_I_HUSSTAND.toString(),
type = GrunnlagType.BARN_I_HUSSTAND,
innhold = POJONode(it),
)
}
Expand All @@ -89,7 +90,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}",
type = GrunnlagType.INNTEKT.toString(),
type = GrunnlagType.INNTEKT,
innhold = POJONode(
InntektNode(
datoFom = it.datoFom.toNoString(),
Expand All @@ -104,7 +105,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(),
type = GrunnlagType.INNTEKT.toString(),
type = GrunnlagType.INNTEKT,
innhold = POJONode(
InntektNode(
datoFom = it.datoFom.toNoString(),
Expand All @@ -119,7 +120,7 @@ class ForskuddBeregning {
.map {
Grunnlag(
referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(),
type = GrunnlagType.INNTEKT.toString(),
type = GrunnlagType.INNTEKT,
innhold = POJONode(
InntektNode(
datoFom = it.datoFom.toNoString(),
Expand All @@ -144,7 +145,7 @@ class ForskuddBeregning {
sivilstand.map {
Grunnlag(
referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(),
type = GrunnlagType.SIVILSTAND.toString(),
type = GrunnlagType.SIVILSTAND,
innhold = POJONode(
SivilstandNode(
datoFom = it.datoFom.toNoString(),
Expand Down Expand Up @@ -194,7 +195,7 @@ class ForskuddBeregning {
currentPeriods = currentPeriods + list[i].info.heads - list[i].info.tails
}

return r
return r.filter { it.antall != 0.0 }
}

fun toBehandlingBeregningModel(behandling: Behandling): Either<NonEmptyList<String>, BehandlingBeregningModel> =
Expand All @@ -210,8 +211,8 @@ class ForskuddBeregning {
roller = behandling.roller,
)

fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnForskuddGrunnlag =
BeregnForskuddGrunnlag(
fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle): BeregnGrunnlag =
BeregnGrunnlag(
beregnDatoFra = b.virkningsDato,
beregnDatoTil = b.datoTom,
grunnlagListe = prepareSoknadsBarn(soknadsBarn) +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package no.nav.bidrag.behandling.consumer

import no.nav.bidrag.behandling.dto.behandling.ForskuddDto
import no.nav.bidrag.commons.web.client.AbstractRestClient
import no.nav.bidrag.transport.beregning.forskudd.rest.request.BeregnForskuddGrunnlag
import no.nav.bidrag.transport.beregning.felles.BeregnGrunnlag
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
Expand All @@ -18,5 +18,5 @@ class BidragBeregnForskuddConsumer(
private val beregnForskuddUri =
UriComponentsBuilder.fromUri(bidragBeregnForskuddUrl).pathSegment("beregn").pathSegment("forskudd").build().toUri()

fun beregnForskudd(payload: BeregnForskuddGrunnlag): ForskuddDto = postForNonNullEntity(beregnForskuddUri, payload)
fun beregnForskudd(payload: BeregnGrunnlag): ForskuddDto = postForNonNullEntity(beregnForskuddUri, payload)
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package no.nav.bidrag.behandling.controller

import arrow.core.mapOrAccumulate
import arrow.core.raise.either
import com.fasterxml.jackson.databind.ObjectMapper
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.security.SecurityRequirement
import mu.KotlinLogging
Expand All @@ -12,8 +11,6 @@ import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn
import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons
import no.nav.bidrag.behandling.service.BehandlingService
import no.nav.bidrag.domain.enums.Rolletype
import no.nav.bidrag.transport.beregning.forskudd.rest.request.BeregnForskuddGrunnlag
import org.springframework.http.HttpEntity
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.client.HttpClientErrorException
Expand Down Expand Up @@ -57,8 +54,6 @@ class BehandlingBeregnForskuddController(
.mapOrAccumulate {
val payload = forskuddBeregning.toPayload(behandlingModel, it)

if (false) printDebugPayload(payload)

try {
val respons =
bidragBeregnForskuddConsumer.beregnForskudd(payload)
Expand Down Expand Up @@ -91,10 +86,4 @@ class BehandlingBeregnForskuddController(
return ForskuddBeregningRespons(result.getOrNull(), result.leftOrNull())
}

private fun printDebugPayload(payload: BeregnForskuddGrunnlag) {
val message = HttpEntity(payload)
val objectMapper = ObjectMapper()

objectMapper.writeValue(System.out, message.body)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package no.nav.bidrag.behandling.dto.behandling

import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.behandling.database.datamodell.SivilstandType
import no.nav.bidrag.transport.beregning.forskudd.rest.request.Grunnlag
import no.nav.bidrag.transport.beregning.felles.Grunnlag
import java.math.BigDecimal
import java.time.LocalDate

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.bidrag.behandling.dto.beregning

import no.nav.bidrag.behandling.dto.behandling.ResultatPeriode
import no.nav.bidrag.transport.beregning.forskudd.rest.request.Grunnlag
import no.nav.bidrag.transport.beregning.felles.Grunnlag

data class ForskuddBeregningRespons(
val resultat: List<ForskuddBeregningPerBarn>?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ class BehandlingService(
enhet = behandling.behandlerEnhet,
roller = behandling.tilForsendelseRolleDto(),
behandlingInfo =
BehandlingInfoDto(
behandlingId = behandling.id,
soknadId = behandling.soknadId,
soknadFra = behandling.soknadFra,
behandlingType = behandling.behandlingType.name,
stonadType = behandling.stonadType,
engangsBelopType = behandling.engangsbelopType,
vedtakType = behandling.soknadType.tilVedtakType(),
),
BehandlingInfoDto(
behandlingId = behandling.id,
soknadId = behandling.soknadId,
soknadFra = behandling.soknadFra,
behandlingType = behandling.behandlingType.name,
stonadType = behandling.stonadType,
engangsBelopType = behandling.engangsbelopType,
vedtakType = behandling.soknadType.tilVedtakType(),
),
),
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class ForsendelseService(
val opprettForRoller = opprettForRoller(request.roller, request.behandlingInfo)
log.info {
"Oppretter forsendelse ${request.behandlingInfo.typeForsendelse()}brev " +
"for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}"
"for ${opprettForRoller.size} roller (${opprettForRoller.joinToString(",")}) og behandling ${request.behandlingInfo}"
}
val opprettetForsendelser = mutableListOf<String>()
opprettForRoller.forEach {
Expand Down Expand Up @@ -86,9 +86,9 @@ class ForsendelseService(
val erFattet = behandlingInfo.erFattetBeregnet != null
if (erFattet) return true
return !(
behandlingInfo.stonadType == StonadType.FORSKUDD &&
ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType)
)
behandlingInfo.stonadType == StonadType.FORSKUDD &&
ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType)
)
}

private fun opprettForRoller(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package no.nav.bidrag.behandling.beregning

import io.kotest.matchers.shouldBe
import no.nav.bidrag.behandling.beregning.model.HusstandsBarnPeriodeModel
import no.nav.bidrag.behandling.database.datamodell.BoStatusType
import no.nav.bidrag.behandling.transformers.toLocalDate
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import java.util.Calendar

Expand All @@ -20,18 +20,18 @@ class ForskuddBeregningTest {
val fraDato2 = cal2.time
cal1.add(Calendar.MONTH, 1)
cal2.add(Calendar.MONTH, 1)
val tilDao = cal1.time
val tilDao2 = cal2.time
val tilDato = cal1.time
val tilDato2 = cal2.time

val splitPeriods1 =
forskuddBeregning.splitPeriods(
listOf(
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDao2.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDato2.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
),
)

assertEquals(3, splitPeriods1.size)
splitPeriods1.size shouldBe 3
}

@Test
Expand All @@ -42,38 +42,109 @@ class ForskuddBeregningTest {

val fraDato = cal1.time
cal1.add(Calendar.MONTH, 1)
val tilDao = cal1.time
val tilDato = cal1.time

val splitPeriods =
forskuddBeregning.splitPeriods(
listOf(
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
),
)

assertEquals(1, splitPeriods.size)

splitPeriods.size shouldBe 1
}

@Test
fun `tre barn i samtidig`() {
fun `tre barn samtidig`() {
val forskuddBeregning = ForskuddBeregning()
val cal1 = Calendar.getInstance()
cal1.set(Calendar.DAY_OF_MONTH, 1)

val fraDato = cal1.time
cal1.add(Calendar.MONTH, 1)
val tilDao = cal1.time
val tilDato = cal1.time

val splitPeriods =
forskuddBeregning.splitPeriods(
listOf(
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
),
)


splitPeriods.size shouldBe 1
splitPeriods[0].antall shouldBe 3.0
}

@Test
fun `tre barn men bare to barn samtidig`() {
val forskuddBeregning = ForskuddBeregning()

val cal1 = Calendar.getInstance()
cal1.set(Calendar.DAY_OF_MONTH, 1)

val fraDato1 = cal1.time
cal1.add(Calendar.YEAR, 1)
val tilDato1 = cal1.time

val cal2 = Calendar.getInstance()
cal2.set(Calendar.DAY_OF_MONTH, 20)

val fraDato2 = cal2.time
cal2.add(Calendar.MONTH, 1)
val tilDato2 = cal2.time

cal2.add(Calendar.MONTH, 1)
val fraDato3 = cal2.time

cal2.add(Calendar.MONTH, 1)
val tilDato3 = cal2.time


val splitPeriods =
forskuddBeregning.splitPeriods(
listOf(
HusstandsBarnPeriodeModel(fraDato1.toLocalDate(), tilDato1.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDato2.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato3.toLocalDate(), tilDato3.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
),
)

splitPeriods.size shouldBe 5
splitPeriods[0].antall shouldBe 1.0
splitPeriods[1].antall shouldBe 2.0
splitPeriods[2].antall shouldBe 1.0
splitPeriods[3].antall shouldBe 2.0
splitPeriods[4].antall shouldBe 1.0
}

@Test
fun `to barn ikke samtidig`() {
val forskuddBeregning = ForskuddBeregning()
val cal1 = Calendar.getInstance()
cal1.set(Calendar.DAY_OF_MONTH, 1)

val fraDato = cal1.time
cal1.add(Calendar.MONTH, 1)
val tilDato = cal1.time

cal1.add(Calendar.MONTH, 1)
val fraDato1 = cal1.time

cal1.add(Calendar.MONTH, 1)
val tilDato1 = cal1.time

val splitPeriods =
forskuddBeregning.splitPeriods(
listOf(
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDao.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE),
HusstandsBarnPeriodeModel(fraDato1.toLocalDate(), tilDato1.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE),
),
)

assertEquals(1, splitPeriods.size)
assertEquals(3.0, splitPeriods.get(0).antall)
splitPeriods.size shouldBe 2
}
}
Loading

0 comments on commit fb1930d

Please sign in to comment.