diff --git a/pom.xml b/pom.xml index b8e1a0422..1ffb104fb 100644 --- a/pom.xml +++ b/pom.xml @@ -339,7 +339,7 @@ org.owasp dependency-check-maven - 8.4.3 + 9.0.2 8 ${skipOwasp} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt index 5829990c6..25e407676 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -7,11 +7,8 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement import no.nav.bidrag.behandling.dto.inntekt.InntekterResponse import no.nav.bidrag.behandling.dto.inntekt.UpdateInntekterRequest import no.nav.bidrag.behandling.service.BehandlingService -import no.nav.bidrag.behandling.transformers.toBarnetilleggDomain import no.nav.bidrag.behandling.transformers.toBarnetilleggDto -import no.nav.bidrag.behandling.transformers.toInntektDomain import no.nav.bidrag.behandling.transformers.toInntektDto -import no.nav.bidrag.behandling.transformers.toUtvidetbarnetrygdDomain import no.nav.bidrag.behandling.transformers.toUtvidetbarnetrygdDto import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable @@ -41,13 +38,11 @@ class InntekterController(private val behandlingService: BehandlingService) { @PathVariable behandlingId: Long, @RequestBody request: UpdateInntekterRequest, ): InntekterResponse { - var behandling = behandlingService.hentBehandlingById(behandlingId) - behandlingService.oppdaterInntekter( behandlingId, - request.inntekter.toInntektDomain(behandling!!), - request.barnetillegg.toBarnetilleggDomain(behandling), - request.utvidetbarnetrygd.toUtvidetbarnetrygdDomain(behandling), + request.inntekter, + request.barnetillegg, + request.utvidetbarnetrygd, request.inntektBegrunnelseMedIVedtakNotat, request.inntektBegrunnelseKunINotat, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt index 291db5f83..aae5f1f88 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandling.kt @@ -77,7 +77,7 @@ class Behandling( @OneToMany( fetch = FetchType.EAGER, mappedBy = "behandling", - cascade = [CascadeType.ALL], + cascade = [CascadeType.PERSIST, CascadeType.MERGE], orphanRemoval = true, ) var inntekter: MutableSet = mutableSetOf(), @@ -91,14 +91,14 @@ class Behandling( @OneToMany( fetch = FetchType.EAGER, mappedBy = "behandling", - cascade = [CascadeType.ALL], + cascade = [CascadeType.PERSIST, CascadeType.MERGE], orphanRemoval = true, ) var barnetillegg: MutableSet = mutableSetOf(), @OneToMany( fetch = FetchType.EAGER, mappedBy = "behandling", - cascade = [CascadeType.ALL], + cascade = [CascadeType.PERSIST, CascadeType.MERGE], orphanRemoval = true, ) var utvidetbarnetrygd: MutableSet = mutableSetOf(), diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt index f9c0a299c..2bc44509d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -2,21 +2,24 @@ package no.nav.bidrag.behandling.service import mu.KotlinLogging import no.nav.bidrag.behandling.behandlingNotFoundException -import no.nav.bidrag.behandling.database.datamodell.Barnetillegg import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import no.nav.bidrag.behandling.database.datamodell.HusstandsBarn -import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.Sivilstand -import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.database.repository.RolleRepository import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto import no.nav.bidrag.behandling.dto.forsendelse.BehandlingInfoDto import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest +import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto +import no.nav.bidrag.behandling.dto.inntekt.InntektDto +import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto import no.nav.bidrag.behandling.transformers.tilForsendelseRolleDto import no.nav.bidrag.behandling.transformers.tilVedtakType +import no.nav.bidrag.behandling.transformers.toBarnetilleggDomain +import no.nav.bidrag.behandling.transformers.toInntektDomain import no.nav.bidrag.behandling.transformers.toRolle +import no.nav.bidrag.behandling.transformers.toUtvidetbarnetrygdDomain import no.nav.bidrag.domene.enums.rolle.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -97,9 +100,9 @@ class BehandlingService( @Transactional fun oppdaterInntekter( behandlingId: Long, - inntekter: MutableSet, - barnetillegg: MutableSet, - utvidetbarnetrygd: MutableSet, + nyeInntekter: Set, + nyeBarnetillegg: Set, + nyUtvidetbarnetrygd: Set, inntektBegrunnelseMedIVedtakNotat: String?, inntektBegrunnelseKunINotat: String?, ) { @@ -110,22 +113,35 @@ class BehandlingService( behandling.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat behandling.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat + var inntektOppdatert = false + + val inntekter = nyeInntekter.toInntektDomain(behandling) + val barnetillegg = nyeBarnetillegg.toBarnetilleggDomain(behandling) + val nyUtvidetbarnetrygd = nyUtvidetbarnetrygd.toUtvidetbarnetrygdDomain(behandling) + if (behandling.inntekter != inntekter) { log.info("Oppdaterer inntekter for behandlingsid $behandlingId") behandling.inntekter.clear() behandling.inntekter.addAll(inntekter) + inntektOppdatert = true } if (behandling.barnetillegg != barnetillegg) { log.info("Oppdaterer barnetillegg for behandlingsid $behandlingId") behandling.barnetillegg.clear() behandling.barnetillegg.addAll(barnetillegg) + inntektOppdatert = true } - if (behandling.utvidetbarnetrygd != utvidetbarnetrygd) { + if (behandling.utvidetbarnetrygd != nyUtvidetbarnetrygd) { log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingId") behandling.utvidetbarnetrygd.clear() - behandling.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + behandling.utvidetbarnetrygd.addAll(nyUtvidetbarnetrygd) + inntektOppdatert = true + } + + if (inntektOppdatert == true) { + behandlingRepository.save(behandling) } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt index 26d5dc0a5..f9f0e49c2 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -70,7 +70,7 @@ class InntekterControllerTest : KontrollerTestRunner() { @Test fun `skal hente inntekter for behandling`() { // given - var behandling = behandling() + var behandling = behandlingRepository.save(behandling()) var inntekt = inntekt(behandling) inntekt.inntektPostListe = inntektsposter(inntekt) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt index fa486a778..f9106a383 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -3,7 +3,6 @@ package no.nav.bidrag.behandling.service import jakarta.persistence.EntityManager import jakarta.persistence.PersistenceContext import no.nav.bidrag.behandling.TestContainerRunner -import no.nav.bidrag.behandling.database.datamodell.Barnetillegg import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType @@ -11,15 +10,18 @@ import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.behandling.SivilstandDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto +import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto +import no.nav.bidrag.behandling.dto.inntekt.InntektDto +import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto import no.nav.bidrag.behandling.transformers.toDomain import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toSivilstandDomain +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.domene.enums.person.Sivilstandskode import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.rolle.SøktAvType @@ -33,6 +35,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.transaction.annotation.Transactional import org.springframework.web.client.HttpClientErrorException import java.math.BigDecimal +import java.time.LocalDate import java.util.Calendar import java.util.Date @@ -318,33 +321,31 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf( - Inntekt( - "", - BigDecimal.valueOf(1.111), - Calendar.getInstance().time, - Calendar.getInstance().time, - "ident", - true, - true, - behandling = actualBehandling, + InntektDto( + taMed = true, + inntektType = Inntektsrapportering.KAPITALINNTEKT.name, + belop = BigDecimal.valueOf(4000), + datoFom = LocalDate.now().minusMonths(4), + datoTom = LocalDate.now().plusMonths(4), + ident = "123", + fraGrunnlag = true, + inntektPostListe = emptySet(), ), ), mutableSetOf( - Barnetillegg( - actualBehandling, - "ident", - BigDecimal.ONE, - Calendar.getInstance().time, - Calendar.getInstance().time, + BarnetilleggDto( + ident = "123", + barnetillegg = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), ), ), mutableSetOf( - Utvidetbarnetrygd( - actualBehandling, - true, - BigDecimal.TEN, - Calendar.getInstance().time, - Calendar.getInstance().time, + UtvidetbarnetrygdDto( + deltBoSted = false, + belop = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), ), ), "Med i Vedtaket", @@ -376,24 +377,23 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf( - Inntekt( - "", - BigDecimal.valueOf(1.111), - Calendar.getInstance().time, - Calendar.getInstance().time, - "ident", - true, - true, - behandling = actualBehandling, + InntektDto( + taMed = true, + inntektType = Inntektsrapportering.KAPITALINNTEKT.name, + belop = BigDecimal.valueOf(4000), + datoFom = LocalDate.now().minusMonths(4), + datoTom = LocalDate.now().plusMonths(4), + ident = "123", + fraGrunnlag = true, + inntektPostListe = emptySet(), ), ), mutableSetOf( - Barnetillegg( - actualBehandling, - "ident", - BigDecimal.ONE, - Calendar.getInstance().time, - Calendar.getInstance().time, + BarnetilleggDto( + ident = "123", + barnetillegg = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), ), ), mutableSetOf(), @@ -411,7 +411,14 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf(), - expectedBehandling.barnetillegg, + mutableSetOf( + BarnetilleggDto( + ident = "123", + barnetillegg = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), + ), + ), mutableSetOf(), null, null,