From d5e041314eeb744e8f59a66bde68026156aaeeb6 Mon Sep 17 00:00:00 2001 From: s148719 Date: Thu, 9 Nov 2023 08:51:09 +0100 Subject: [PATCH 01/33] BD-1764: Oppdatere grensensitt mot bidrag-beregn-forskudd-rest --- .gitignore | 3 +-- docker-compose.yaml | 2 +- pom.xml | 2 +- .../behandling/beregning/ForskuddBeregning.kt | 14 +++++++------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index d630055c4..34e36b062 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ target/ -!.mvn/wrapper/maven-wrapper.jar !**/src/main/**/target/ !**/src/test/**/target/ - +.mvn/wrapper/** mvnw mvnw.cmd diff --git a/docker-compose.yaml b/docker-compose.yaml index df96d333b..d73d30aa2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,7 +1,7 @@ version: "3.9" services: database: - image: postgres:15.4-alpine + image: postgres:latest ports: - "5445:5432" environment: diff --git a/pom.xml b/pom.xml index 1aa3d305f..bf02e67d4 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 21 1.9.20 20231103132440_edabbf8 - 20231106083046_e69b4f4 + 20231108150753_dc8a5b7 7.4 3.1.7 2.2.0 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt index b620a261a..01b9a63f7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -31,7 +31,7 @@ class ForskuddBeregning { private fun prepareSoknadsBarn(soknadBarn: Rolle, fDato: String): List = listOf( Grunnlag( - navn = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, + referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, type = Grunnlagstype.SOKNADSBARN_INFO, innhold = POJONode( SoknadsBarnNode( @@ -60,7 +60,7 @@ class ForskuddBeregning { .filter { soknadsBarnIdent == it.ident } .map { Grunnlag( - navn = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), + referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), type = Grunnlagstype.BOSTATUS, innhold = POJONode( BostatusNode( @@ -78,7 +78,7 @@ class ForskuddBeregning { splitPeriods(behandlingBeregningModel.husstandsBarnPerioder) .map { Grunnlag( - navn = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""), + referanse = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""), type = Grunnlagstype.BARN_I_HUSSTAND, innhold = POJONode(it), ) @@ -92,7 +92,7 @@ class ForskuddBeregning { inntekter .map { Grunnlag( - navn = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", + referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", type = Grunnlagstype.INNTEKT, innhold = POJONode( InntektNode( @@ -107,7 +107,7 @@ class ForskuddBeregning { } + barnetillegg .map { Grunnlag( - navn = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), + referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), type = Grunnlagstype.INNTEKT, innhold = POJONode( InntektNode( @@ -122,7 +122,7 @@ class ForskuddBeregning { } + utvidetbarnetrygd .map { Grunnlag( - navn = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), + referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), type = Grunnlagstype.INNTEKT, innhold = POJONode( InntektNode( @@ -147,7 +147,7 @@ class ForskuddBeregning { private fun prepareSivilstand(sivilstand: List): List = sivilstand.map { Grunnlag( - navn = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), + referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), type = Grunnlagstype.SIVILSTAND, innhold = POJONode( SivilstandNode( From 6a2b4b952bbf25548d3b89ce4320a19a154781c9 Mon Sep 17 00:00:00 2001 From: s148719 Date: Thu, 9 Nov 2023 10:12:01 +0100 Subject: [PATCH 02/33] Update feature.yaml --- .nais/feature.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.nais/feature.yaml b/.nais/feature.yaml index 42aaa1743..9dcc90c58 100644 --- a/.nais/feature.yaml +++ b/.nais/feature.yaml @@ -4,8 +4,8 @@ ingresses: env: BIDRAG_PERSON_URL: https://bidrag-person-feature.dev-fss-pub.nais.io/bidrag-person BIDRAG_PERSON_SCOPE: dev-fss.bidrag.bidrag-person-feature - BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest-feature - BIDRAG_BEREGN_FORSKUDD_SCOPE: dev-gcp.bidrag.bidrag-beregn-forskudd-rest-feature + BIDRAG_BEREGN_FORSKUDD_URL: http://bidrag-beregn-forskudd-rest + BIDRAG_BEREGN_FORSKUDD_SCOPE: dev-gcp.bidrag.bidrag-beregn-forskudd-rest BIDRAG_GRUNNLAG_URL: http://bidrag-grunnlag-feature BIDRAG_GRUNNLAG_URL_SCOPE: dev-gcp.bidrag.bidrag-grunnlag-feature BIDRAG_FORSENDELSE_URL: http://bidrag-dokument-forsendelse-feature @@ -34,7 +34,7 @@ database: autoResize: true tier: db-f1-micro outbound-access-apps: - - bidrag-beregn-forskudd-rest-feature + - bidrag-beregn-forskudd-rest - bidrag-grunnlag-feature - bidrag-dokument-forsendelse-feature - bidrag-tilgangskontroll-feature From 058373373fafef0b900b58557f81184b9631c035 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 10 Nov 2023 08:37:04 +0100 Subject: [PATCH 03/33] Legge til enhetstest for beregning av forskudd --- .../BehandlingBeregnForskuddControllerTest.kt | 189 ++++-------------- .../controller/InntekterControllerTest.kt | 16 +- .../controller/KontrollerTestRunner.kt | 2 + .../behandling/hendelse/VedtakHendelseTest.kt | 31 +-- .../nav/bidrag/behandling/utils/StubUtils.kt | 44 ++++ .../nav/bidrag/behandling/utils/Testdata.kt | 51 +++++ src/test/resources/application-test.yaml | 20 +- 7 files changed, 159 insertions(+), 194 deletions(-) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt index 5464f2b85..879dacd87 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -1,166 +1,63 @@ package no.nav.bidrag.behandling.controller -import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer -import no.nav.bidrag.behandling.database.datamodell.Barnetillegg +import io.kotest.assertions.assertSoftly +import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BehandlingType import no.nav.bidrag.behandling.database.datamodell.BoStatusType import no.nav.bidrag.behandling.database.datamodell.HusstandsBarn import no.nav.bidrag.behandling.database.datamodell.HusstandsBarnPeriode -import no.nav.bidrag.behandling.database.datamodell.Inntekt -import no.nav.bidrag.behandling.database.datamodell.Rolle -import no.nav.bidrag.behandling.database.datamodell.Sivilstand -import no.nav.bidrag.behandling.database.datamodell.SivilstandType -import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd -import no.nav.bidrag.behandling.service.BehandlingService -import no.nav.bidrag.domene.enums.Rolletype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.behandling.database.repository.BehandlingRepository +import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons +import no.nav.bidrag.behandling.utils.oppretteBehandling +import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller +import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired -import java.math.BigDecimal +import org.springframework.http.HttpEntity +import org.springframework.http.HttpMethod +import org.springframework.http.HttpStatus import java.util.* -import kotlin.test.Ignore class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { - @Autowired - lateinit var behandlingService: BehandlingService @Autowired - lateinit var bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer - - fun prepareBehandling(): Behandling { - val cal1 = Calendar.getInstance() - cal1.set(Calendar.DAY_OF_MONTH, 1) + lateinit var behandlingRepository: BehandlingRepository - val datoFom = cal1.time + @BeforeEach + fun oppsett() { + behandlingRepository.deleteAll() + } - val cal = Calendar.getInstance() - cal.add(Calendar.MONTH, 2) - val datoTom = cal.time - val b = - Behandling( - BehandlingType.FORSKUDD, - SoknadType.FASTSETTELSE, - datoFom, - datoTom, - datoFom, - "1234", - 123213L, - 123213L, - "ENHE", - SøktAvType.BIDRAGSMOTTAKER, - null, - null, - null, - datoFom, - null, - null, - null, - null, - null, - null, - null, - 1, - ) + @Test + fun `skal beregne forskudd for behandling`() { - val husstandsBarn = - HusstandsBarn( - behandling = b, - medISaken = true, - null, - "123", - null, - datoFom, - ) - husstandsBarn.perioder = - mutableSetOf( - HusstandsBarnPeriode( - husstandsBarn, - datoFom, - datoTom, - BoStatusType.REGISTRERT_PA_ADRESSE, - "", - ), - ) + // given + var behandling = lagreBehandlingMedRoller() - b.husstandsBarn = - mutableSetOf( - husstandsBarn, - ) - b.roller = - mutableSetOf( - Rolle(b, Rolletype.BIDRAGSMOTTAKER, "123", datoFom, null, null), - Rolle(b, Rolletype.BARN, "123", datoFom, null, null), - ) - b.inntekter = - mutableSetOf( - Inntekt("lønn", BigDecimal.TEN, datoFom, datoTom, "ident", true, true), - ) - b.barnetillegg = - mutableSetOf( - Barnetillegg(b, "ident", BigDecimal.TEN, datoFom, datoTom), - ) - b.utvidetbarnetrygd = - mutableSetOf( - Utvidetbarnetrygd(b, true, BigDecimal.TEN, datoFom, datoTom), - ) - b.sivilstand = - mutableSetOf( - Sivilstand(b, datoFom, datoTom, SivilstandType.GIFT), - ) + // when + val returnert = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${behandling.id}/beregn", + HttpMethod.POST, + HttpEntity.EMPTY, + ForskuddBeregningRespons::class.java,) - return b + // then + assertSoftly { + returnert shouldNotBe null + returnert.statusCode shouldBe HttpStatus.OK + returnert.body shouldNotBe null + } } -// @Test -// fun `split periods just one period`() { -// val controller = BehandlingBeregnForskuddController(behandlingService, bidragBeregnForskuddConsumer) -// val cal1 = Calendar.getInstance() -// val cal2 = Calendar.getInstance() -// cal1.set(Calendar.DAY_OF_MONTH, 1) -// cal2.set(Calendar.DAY_OF_MONTH, 10) -// -// val fraDato = cal1.time -// val fraDato2 = cal2.time -// cal1.add(Calendar.MONTH, 1) -// cal2.add(Calendar.MONTH, 1) -// val tilDao = cal1.time -// val tilDao2 = cal2.time -// -// val b = HusstandsBarn(prepareBehandling(), true) -// -// val splitPeriods1 = controller.splitPeriods( -// listOf( -// prepareHusstandsBarnPeriode(b, fraDato, tilDao), -// prepareHusstandsBarnPeriode(b, fraDato2, tilDao2), -// ), -// ) -// -// assertEquals(3, splitPeriods1.size) -// } -// @Test -// fun `split periods`() { -// val controller = BehandlingBeregnForskuddController(behandlingService, bidragBeregnForskuddConsumer) -// 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 b = HusstandsBarn(prepareBehandling(), true) -// -// val splitPeriods = controller.splitPeriods( -// listOf( -// prepareHusstandsBarnPeriode(b, fraDato, tilDao), -// ), -// ) -// -// assertEquals(1, splitPeriods.size) -// } + private fun lagreBehandlingMedRoller(): Behandling { + var behandling = oppretteBehandling() + behandling.roller = oppretteBehandlingRoller(behandling) + return behandlingRepository.save(behandling) + } private fun prepareHusstandsBarnPeriode( b: HusstandsBarn, @@ -174,14 +71,4 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { "", ) - @Test - @Ignore - fun preparePayload() { -// val c = BehandlingBeregnForskuddController(behandlingService, bidragBeregnForskuddConsumer) -// -// val message = HttpEntity(c.preparePayload(prepareBehandling(), R)) -// val objectMapper = ObjectMapper() -// -// objectMapper.writeValue(System.out, message.body) - } } 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 ffe32f788..99b7c9b92 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -16,6 +16,7 @@ import no.nav.bidrag.behandling.dto.inntekt.InntekterResponse import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toDate +import no.nav.bidrag.behandling.utils.oppretteBehandling import no.nav.bidrag.domene.enums.SøktAvType import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost import org.hibernate.engine.spi.SessionImplementor @@ -266,20 +267,7 @@ class InntekterControllerTest : KontrollerTestRunner() { private fun behandling(): Behandling { val behandling: Behandling = behandlingRepository.save( - Behandling( - BehandlingType.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(1), - Date(1), - "123", - 123, - null, - "ENH", - SøktAvType.BIDRAGSMOTTAKER, - null, - null, - ), + oppretteBehandling(), ) return behandling } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt index 60c314ca6..1302cfe36 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt @@ -28,5 +28,7 @@ abstract class KontrollerTestRunner : CommonTestRunner() { stubUtils.stubSlettForsendelse() stubUtils.stubHentForsendelserForSak() stubUtils.stubTilgangskontrollTema() + stubUtils.stubHentePersoninfo(personident = "12345") + stubUtils.stubBeregneForskudd() } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index 6490dcbc2..f6d2a4ff9 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -5,7 +5,6 @@ import com.github.tomakehurst.wiremock.client.WireMock import io.kotest.matchers.shouldBe import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.BehandlingType -import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.kafka.VedtakHendelseListener @@ -15,10 +14,10 @@ import no.nav.bidrag.behandling.utils.ROLLE_BM import no.nav.bidrag.behandling.utils.ROLLE_BP import no.nav.bidrag.behandling.utils.SAKSNUMMER import no.nav.bidrag.behandling.utils.SOKNAD_ID +import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller import no.nav.bidrag.domene.enums.BehandlingsrefKilde import no.nav.bidrag.domene.enums.Beslutningstype import no.nav.bidrag.domene.enums.Innkrevingstype -import no.nav.bidrag.domene.enums.Rolletype import no.nav.bidrag.domene.enums.Stønadstype import no.nav.bidrag.domene.enums.SøktAvType import no.nav.bidrag.domene.enums.Vedtakskilde @@ -58,7 +57,7 @@ class VedtakHendelseTest : CommonTestRunner() { stubUtils.stubOpprettForsendelse() val vedtakId = 123123 val behandlingRequest = opprettBehandling() - behandlingRequest.roller = opprettBehandlingRoller(behandlingRequest) + behandlingRequest.roller = oppretteBehandlingRoller(behandlingRequest) val behandling = behandlingRepository.save(behandlingRequest) vedtakHendelseListener.prossesserVedtakHendelse( opprettHendelseRecord( @@ -87,7 +86,7 @@ class VedtakHendelseTest : CommonTestRunner() { stubUtils.stubOpprettForsendelse() val vedtakId = 123123 val behandlingRequest = opprettBehandling() - behandlingRequest.roller = opprettBehandlingRoller(behandlingRequest) + behandlingRequest.roller = oppretteBehandlingRoller(behandlingRequest) val behandling = behandlingRepository.save(behandlingRequest) val vedtakHendelse = opprettVedtakhendelse(vedtakId, behandling.id!!, stonadType = Stønadstype.FORSKUDD) @@ -121,30 +120,6 @@ class VedtakHendelseTest : CommonTestRunner() { stonadType = Stønadstype.BIDRAG18AAR, ) - private fun opprettBehandlingRoller(behandling: Behandling) = mutableSetOf( - Rolle( - ident = ROLLE_BM.fødselsnummer?.verdi!!, - rolleType = Rolletype.BIDRAGSMOTTAKER, - behandling = behandling, - fodtDato = null, - opprettetDato = null, - ), - Rolle( - ident = ROLLE_BP.fødselsnummer?.verdi!!, - rolleType = Rolletype.BIDRAGSPLIKTIG, - behandling = behandling, - fodtDato = null, - opprettetDato = null, - ), - Rolle( - ident = ROLLE_BA_1.fødselsnummer?.verdi!!, - rolleType = Rolletype.BARN, - behandling = behandling, - fodtDato = null, - opprettetDato = null, - ), - ) - private fun opprettVedtakhendelse( vedtakId: Int, behandlingId: Long, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index 9b3482ce6..2021099b4 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -8,10 +8,19 @@ import com.github.tomakehurst.wiremock.matching.ContainsPattern import com.github.tomakehurst.wiremock.matching.RequestPatternBuilder import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo import no.nav.bidrag.behandling.consumer.OpprettForsendelseRespons +import no.nav.bidrag.behandling.dto.HentPersonResponse import no.nav.bidrag.behandling.utils.opprettForsendelseResponsUnderOpprettelse +import no.nav.bidrag.domene.enums.Grunnlagstype +import no.nav.bidrag.domene.ident.Personident +import no.nav.bidrag.domene.tid.Fødselsdato +import no.nav.bidrag.domene.tid.ÅrMånedsperiode +import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag +import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag +import no.nav.bidrag.transport.person.PersonDto import org.junit.Assert import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus +import java.time.LocalDate import java.util.* class StubUtils { @@ -81,6 +90,41 @@ class StubUtils { ) } + fun stubHentePersoninfo(status: HttpStatus = HttpStatus.OK, personident: String) { + WireMock.stubFor( + WireMock.post(WireMock.urlMatching("/bidrag-person/informasjon")) + .willReturn( + aClosedJsonResponse() + .withStatus(status.value()) + .withBody( + toJsonString( + HentPersonResponse( + personident, + fødselsdato = Fødselsdato(LocalDate.now().minusMonths(500)).toString() + ) + ) + ), + ), + ) + } + + fun stubBeregneForskudd(status: HttpStatus = HttpStatus.OK) { + WireMock.stubFor( + WireMock.post(WireMock.urlMatching("/beregn/forskudd")) + .willReturn( + aClosedJsonResponse() + .withStatus(status.value()) + .withBody( + toJsonString( + BeregnGrunnlag(periode = ÅrMånedsperiode(LocalDate.now().minusMonths(6), LocalDate.now().plusMonths(6)), søknadsbarnReferanse = "123", grunnlagListe = listOf( + Grunnlag(referanse="abra_cadabra", type= Grunnlagstype.BARNETILLEGG, grunnlagsreferanseListe = listOf("123")) + )) + ) + ), + ), + ) + } + fun stubTilgangskontrollTema( result: Boolean = true, status: HttpStatus = HttpStatus.OK, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt index ba6501066..42c65eb1f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt @@ -4,9 +4,18 @@ import no.nav.bidrag.behandling.consumer.BehandlingInfoResponseDto import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Rolle +import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto +import no.nav.bidrag.behandling.transformers.toDate import no.nav.bidrag.domene.enums.Rolletype +import no.nav.bidrag.domene.enums.SøktAvType import no.nav.bidrag.domene.ident.Personident +import java.time.LocalDate +import java.time.YearMonth +import java.util.* val SAKSNUMMER = "1233333" val SOKNAD_ID = 12412421414L @@ -27,3 +36,45 @@ fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = forsendelseType = ForsendelseTypeTo.UTGÅENDE, status = ForsendelseStatusTo.UNDER_OPPRETTELSE, ) + +fun oppretteBehandling(): Behandling { + return Behandling( + BehandlingType.FORSKUDD, + SoknadType.FASTSETTELSE, + datoFom = YearMonth.now().atDay(1).minusMonths(16).toDate(), + datoTom = YearMonth.now().plusMonths(10).atEndOfMonth().toDate(), + mottatDato = LocalDate.now().toDate(), + "123", + 123, + null, + "ENH", + SøktAvType.BIDRAGSMOTTAKER, + null, + null, + virkningsDato = LocalDate.now().toDate(), + ) +} + +fun oppretteBehandlingRoller(behandling: Behandling) = mutableSetOf( + Rolle( + ident = ROLLE_BM.fødselsnummer?.verdi!!, + rolleType = Rolletype.BIDRAGSMOTTAKER, + behandling = behandling, + fodtDato = null, + opprettetDato = null, + ), + Rolle( + ident = ROLLE_BP.fødselsnummer?.verdi!!, + rolleType = Rolletype.BIDRAGSPLIKTIG, + behandling = behandling, + fodtDato = null, + opprettetDato = null, + ), + Rolle( + ident = ROLLE_BA_1.fødselsnummer?.verdi!!, + rolleType = Rolletype.BARN, + behandling = behandling, + fodtDato = null, + opprettetDato = null, + ), +) diff --git a/src/test/resources/application-test.yaml b/src/test/resources/application-test.yaml index e85e4b07e..55639fb94 100644 --- a/src/test/resources/application-test.yaml +++ b/src/test/resources/application-test.yaml @@ -1,5 +1,5 @@ BIDRAG_PERSON_URL: http://localhost:${wiremock.server.port}/bidrag-person -BIDRAG_BEREGN_FORSKUDD_URL: http://localhost:${wiremock.server.port}/beregn-forskudd +BIDRAG_BEREGN_FORSKUDD_URL: http://localhost:${wiremock.server.port} BIDRAG_FORSENDELSE_URL: http://localhost:${wiremock.server.port}/forsendelse BIDRAG_TILGANGSKONTROLL_URL: http://localhost:${wiremock.server.port}/tilgangskontroll AZURE_OPENID_CONFIG_ISSUER: http://localhost:${mock-oauth2-server.port}/aad @@ -29,6 +29,24 @@ no.nav.security.jwt: client-id: 123 client-secret: 123 client-auth-method: client_secret_basic + bidrag-person: + resource-url: ${BIDRAG_PERSON_URL} + token-endpoint-url: http://localhost:${mock-oauth2-server.port:1234}/aad/token + grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer + scope: api://123/.default + authentication: + client-id: 123 + client-secret: 123 + client-auth-method: client_secret_basic + bidrag-beregn-forskudd-rest: + resource-url: ${BIDRAG_BEREGN_FORSKUDD_URL} + token-endpoint-url: http://localhost:${mock-oauth2-server.port:1234}/aad/token + grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer + scope: api://123/.default + authentication: + client-id: 123 + client-secret: 123 + client-auth-method: client_secret_basic issuer.aad: discovery_url: http://localhost:${mock-oauth2-server.port:1234}/aad/.well-known/openid-configuration accepted_audience: ${AZURE_APP_CLIENT_ID}, api://${AZURE_APP_CLIENT_ID}, aud-localhost From 82bd2a5b738cbdbc93eefeed8475a9117a162614 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 10 Nov 2023 12:14:54 +0100 Subject: [PATCH 04/33] ktlint --- .../BehandlingBeregnForskuddControllerTest.kt | 49 +++++++++++-------- .../controller/InntekterControllerTest.kt | 4 -- .../nav/bidrag/behandling/utils/StubUtils.kt | 27 ++++++---- 3 files changed, 47 insertions(+), 33 deletions(-) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt index 879dacd87..500e2498f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -4,20 +4,18 @@ import io.kotest.assertions.assertSoftly import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BoStatusType -import no.nav.bidrag.behandling.database.datamodell.HusstandsBarn -import no.nav.bidrag.behandling.database.datamodell.HusstandsBarnPeriode import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons import no.nav.bidrag.behandling.utils.oppretteBehandling import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller +import no.nav.bidrag.domene.enums.Rolletype import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus -import java.util.* class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { @@ -29,10 +27,8 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { behandlingRepository.deleteAll() } - @Test fun `skal beregne forskudd for behandling`() { - // given var behandling = lagreBehandlingMedRoller() @@ -42,7 +38,8 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { "${rootUri()}/behandling/${behandling.id}/beregn", HttpMethod.POST, HttpEntity.EMPTY, - ForskuddBeregningRespons::class.java,) + ForskuddBeregningRespons::class.java, + ) // then assertSoftly { @@ -52,23 +49,35 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { } } + @Test + @Disabled + fun `skal ikke beregne forskudd for behandling som mangler informasjon om søknadsbarn`() { + // given + var behandling = oppretteBehandling() + var rollerUtenBarn = oppretteBehandlingRoller(behandling) + rollerUtenBarn.removeIf { r -> r.rolleType == Rolletype.BARN } + behandling.roller = rollerUtenBarn + + // when + val returnert = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${behandling.id}/beregn", + HttpMethod.POST, + HttpEntity.EMPTY, + ForskuddBeregningRespons::class.java, + ) + + // then + assertSoftly { + returnert shouldNotBe null + returnert.statusCode shouldBe HttpStatus.OK + returnert.body shouldNotBe null + } + } private fun lagreBehandlingMedRoller(): Behandling { var behandling = oppretteBehandling() behandling.roller = oppretteBehandlingRoller(behandling) return behandlingRepository.save(behandling) } - - private fun prepareHusstandsBarnPeriode( - b: HusstandsBarn, - fraDato: Date, - tilDao: Date, - ) = HusstandsBarnPeriode( - b, - fraDato, - tilDao, - BoStatusType.REGISTRERT_PA_ADRESSE, - "", - ) - } 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 99b7c9b92..f0080ca7c 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -6,10 +6,8 @@ import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import jakarta.persistence.EntityManager import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BehandlingType import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.InntektPostDomain -import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto import no.nav.bidrag.behandling.dto.inntekt.InntekterResponse @@ -17,7 +15,6 @@ import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toDate import no.nav.bidrag.behandling.utils.oppretteBehandling -import no.nav.bidrag.domene.enums.SøktAvType import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost import org.hibernate.engine.spi.SessionImplementor import org.hibernate.resource.transaction.spi.TransactionStatus @@ -32,7 +29,6 @@ import org.springframework.http.HttpStatus import org.springframework.transaction.annotation.Transactional import java.math.BigDecimal import java.time.LocalDate -import java.util.* import kotlin.test.assertEquals import kotlin.test.assertNotNull diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index 2021099b4..c7d26c112 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -11,12 +11,10 @@ import no.nav.bidrag.behandling.consumer.OpprettForsendelseRespons import no.nav.bidrag.behandling.dto.HentPersonResponse import no.nav.bidrag.behandling.utils.opprettForsendelseResponsUnderOpprettelse import no.nav.bidrag.domene.enums.Grunnlagstype -import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.domene.tid.Fødselsdato import no.nav.bidrag.domene.tid.ÅrMånedsperiode import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag -import no.nav.bidrag.transport.person.PersonDto import org.junit.Assert import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus @@ -100,9 +98,9 @@ class StubUtils { toJsonString( HentPersonResponse( personident, - fødselsdato = Fødselsdato(LocalDate.now().minusMonths(500)).toString() - ) - ) + fødselsdato = Fødselsdato(LocalDate.now().minusMonths(500)).toString(), + ), + ), ), ), ) @@ -116,10 +114,21 @@ class StubUtils { .withStatus(status.value()) .withBody( toJsonString( - BeregnGrunnlag(periode = ÅrMånedsperiode(LocalDate.now().minusMonths(6), LocalDate.now().plusMonths(6)), søknadsbarnReferanse = "123", grunnlagListe = listOf( - Grunnlag(referanse="abra_cadabra", type= Grunnlagstype.BARNETILLEGG, grunnlagsreferanseListe = listOf("123")) - )) - ) + BeregnGrunnlag( + periode = ÅrMånedsperiode( + LocalDate.now().minusMonths(6), + LocalDate.now().plusMonths(6), + ), + søknadsbarnReferanse = "123", + grunnlagListe = listOf( + Grunnlag( + referanse = "abra_cadabra", + type = Grunnlagstype.BARNETILLEGG, + grunnlagsreferanseListe = listOf("123"), + ), + ), + ), + ), ), ), ) From 8e21deddf5f815a8ac97d33184fef94b05ad57a2 Mon Sep 17 00:00:00 2001 From: s148719 Date: Mon, 13 Nov 2023 17:26:01 +0100 Subject: [PATCH 05/33] Oppdatere grenesnitt mot bidrag-beregn-forskudd --- .gitignore | 2 + pom.xml | 6 +- .../no/nav/bidrag/behandling/Exceptions.kt | 12 +- .../aop/DefaultRestControllerAdvice.kt | 54 ++- .../aop/HendelseCorrelationAspect.kt | 5 +- .../behandling/beregning/ForskuddBeregning.kt | 240 ++++++------ .../model/BehandlingBeregningModel.kt | 171 +++++---- .../consumer/BidragBeregnForskuddConsumer.kt | 3 +- .../BidragTilgangskontrollConsumer.kt | 5 +- .../BehandlingBeregnForskuddController.kt | 37 +- .../controller/BehandlingController.kt | 27 +- .../controller/BoforholdController.kt | 9 +- .../behandling/controller/ExceptionHandler.kt | 11 +- .../controller/ForsendelseController.kt | 3 +- .../controller/InntekterController.kt | 9 +- .../controller/OpplysningerController.kt | 5 +- .../VirkningsTidspunktController.kt | 4 +- .../database/datamodell/Behandling.kt | 5 +- .../{BehandlingType.kt => Behandlingstype.kt} | 2 +- .../behandling/database/datamodell/Rolle.kt | 6 +- .../repository/BehandlingRepository.kt | 5 +- .../repository/OpplysningerRepository.kt | 5 +- .../dto/behandling/BehandlingDto.kt | 34 +- .../dto/behandling/CreateBehandlingRequest.kt | 4 +- .../dto/behandling/CreateRolleDto.kt | 22 +- .../behandling/dto/behandling/RolleDto.kt | 3 +- .../dto/beregning/ForskuddBeregningRespons.kt | 2 +- .../dto/boforhold/BoforholdResponse.kt | 4 +- .../dto/boforhold/UpdateBoforholdRequest.kt | 4 +- .../dto/forsendelse/ForsendelseTyper.kt | 6 +- ...usstandsBarnDto.kt => HusstandsbarnDto.kt} | 6 +- .../behandling/service/BehandlingService.kt | 62 ++-- .../behandling/service/ForsendelseService.kt | 6 +- .../behandling/service/OpplysningerService.kt | 12 +- .../behandling/transformers/DtoExtensions.kt | 349 +++++++++--------- ....31__alter_table_rolle_add_column_navn.sql | 11 + .../BehandlingBeregnForskuddControllerTest.kt | 11 +- .../controller/BehandlingControllerTest.kt | 27 +- .../controller/BoforholdControllerTest.kt | 4 +- .../controller/OpplysningerControllerTest.kt | 14 +- .../behandling/hendelse/VedtakHendelseTest.kt | 10 +- .../service/BehandlingServiceTest.kt | 67 ++-- .../service/OpplysningerServiceTest.kt | 4 +- .../nav/bidrag/behandling/utils/StubUtils.kt | 30 +- .../nav/bidrag/behandling/utils/Testdata.kt | 29 +- src/test/resources/application-local.yaml | 4 +- 46 files changed, 620 insertions(+), 731 deletions(-) rename src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/{BehandlingType.kt => Behandlingstype.kt} (89%) rename src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/{HusstandsBarnDto.kt => HusstandsbarnDto.kt} (83%) create mode 100644 src/main/resources/db/migration/V1.0.31__alter_table_rolle_add_column_navn.sql diff --git a/.gitignore b/.gitignore index 34e36b062..59757ab74 100644 --- a/.gitignore +++ b/.gitignore @@ -16,11 +16,13 @@ mvnw.cmd *nais-secrets* ### IntelliJ IDEA ### +.editorconfig .idea *.iws *.iml *.ipr + ### NetBeans ### /nbproject/private/ /nbbuild/ diff --git a/pom.xml b/pom.xml index bf02e67d4..dd99f7576 100644 --- a/pom.xml +++ b/pom.xml @@ -445,9 +445,9 @@ - com.pinterest - ktlint - 0.50.0 + com.pinterest.ktlint + ktlint-cli + 1.0.1 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt index c0c3a4298..70c3b1e07 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt @@ -8,8 +8,10 @@ fun behandlingNotFoundException(behandlingId: Long): Nothing = class KunneIkkeLeseMeldingFraHendelse(melding: String?, throwable: Throwable) : RuntimeException(melding, throwable) -fun fantIkkeSak(saksnummer: String): Nothing = - throw HttpClientErrorException( - HttpStatus.BAD_REQUEST, - "Sak med saksnummer $saksnummer finnes ikke", - ) +fun fantIkkeSak(saksnummer: String): Nothing = throw HttpClientErrorException( + HttpStatus.BAD_REQUEST, + "Sak med saksnummer $saksnummer finnes ikke", +) + +fun fantIkkeFødselsdatoTilSøknadsbarn(behandlingsid: Long): Nothing = + throw HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "Fant ikke fødselsdato til søknadsbarn i behandling med id $behandlingsid") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt index e9a6e057e..4dbf44374 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt @@ -23,30 +23,29 @@ class DefaultRestControllerAdvice { @ResponseBody @ExceptionHandler( - value = [MethodArgumentNotValidException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class], + value = [ + MethodArgumentNotValidException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, + ConversionFailedException::class, HttpMessageNotReadableException::class, + ], ) fun handleInvalidValueExceptions(exception: Exception): ResponseEntity<*> { val cause = exception.cause - val valideringsFeil = - if (cause is MissingKotlinParameterException) { - createMissingKotlinParameterViolation( - cause, - ) - } else { - null - } + val valideringsFeil = if (cause is MissingKotlinParameterException) { + createMissingKotlinParameterViolation( + cause, + ) + } else { + null + } LOGGER.warn( "Forespørselen inneholder ugyldig verdi: ${valideringsFeil ?: "ukjent feil"}", exception, ) - return ResponseEntity - .status(HttpStatus.BAD_REQUEST) - .header( - HttpHeaders.WARNING, - "Forespørselen inneholder ugyldig verdi: ${valideringsFeil ?: exception.message}", - ) - .build() + return ResponseEntity.status(HttpStatus.BAD_REQUEST).header( + HttpHeaders.WARNING, + "Forespørselen inneholder ugyldig verdi: ${valideringsFeil ?: exception.message}", + ).build() } @ResponseBody @@ -54,10 +53,7 @@ class DefaultRestControllerAdvice { fun handleHttpClientErrorException(exception: HttpStatusCodeException): ResponseEntity<*> { val errorMessage = getErrorMessage(exception) LOGGER.warn(errorMessage, exception) - return ResponseEntity - .status(exception.statusCode) - .header(HttpHeaders.WARNING, errorMessage) - .build() + return ResponseEntity.status(exception.statusCode).header(HttpHeaders.WARNING, errorMessage).build() } private fun getErrorMessage(exception: HttpStatusCodeException): String { @@ -75,9 +71,7 @@ class DefaultRestControllerAdvice { @ExceptionHandler(Exception::class) fun handleOtherExceptions(exception: Exception): ResponseEntity<*> { LOGGER.warn("Det skjedde en ukjent feil", exception) - return ResponseEntity - .status(HttpStatus.INTERNAL_SERVER_ERROR) - .header(HttpHeaders.WARNING, "Det skjedde en ukjent feil: ${exception.message}") + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).header(HttpHeaders.WARNING, "Det skjedde en ukjent feil: ${exception.message}") .build() } @@ -85,19 +79,15 @@ class DefaultRestControllerAdvice { @ExceptionHandler(JwtTokenUnauthorizedException::class) fun handleUnauthorizedException(exception: JwtTokenUnauthorizedException): ResponseEntity<*> { LOGGER.warn("Ugyldig eller manglende sikkerhetstoken", exception) - return ResponseEntity - .status(HttpStatus.UNAUTHORIZED) - .header(HttpHeaders.WARNING, "Ugyldig eller manglende sikkerhetstoken") - .build() + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).header(HttpHeaders.WARNING, "Ugyldig eller manglende sikkerhetstoken").build() } private fun createMissingKotlinParameterViolation(ex: MissingKotlinParameterException): String { val errorFieldRegex = Regex("\\.([^.]*)\\[\\\"(.*)\"\\]\$") - val paths = - ex.path.map { errorFieldRegex.find(it.description)!! }.map { - val (objectName, field) = it.destructured - "$objectName.$field" - } + val paths = ex.path.map { errorFieldRegex.find(it.description)!! }.map { + val (objectName, field) = it.destructured + "$objectName.$field" + } return "${paths.joinToString("->")} må fylles ut" } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt index 33a41ef7e..84e616ae2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt @@ -20,10 +20,7 @@ private val log = KotlinLogging.logger {} @Aspect class HendelseCorrelationAspect(private val objectMapper: ObjectMapper) { @Before(value = "execution(* no.nav.bidrag.behandling.kafka.VedtakHendelseListener.prossesserVedtakHendelse(..)) && args(hendelse)") - fun leggSporingFraVedtakHendelseTilMDC( - joinPoint: JoinPoint, - hendelse: ConsumerRecord, - ) { + fun leggSporingFraVedtakHendelseTilMDC(joinPoint: JoinPoint, hendelse: ConsumerRecord) { hentSporingFraHendelse(hendelse)?.let { val correlationId = CorrelationId.existing(it) MDC.put(CORRELATION_ID_HEADER, correlationId.get()) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt index 01b9a63f7..6e2a5b369 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -28,51 +28,42 @@ import java.time.LocalDate @Service class ForskuddBeregning { - private fun prepareSoknadsBarn(soknadBarn: Rolle, fDato: String): List = - listOf( - Grunnlag( - referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, - type = Grunnlagstype.SOKNADSBARN_INFO, - innhold = POJONode( - SoknadsBarnNode( - soknadsbarnId = soknadBarn.id!!.toInt(), - fodselsdato = fDato, - ), - ), + fun lagePersonobjektForSøknadsbarn(soknadBarn: Rolle, fødselsdato: String): Grunnlag = Grunnlag( + referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, + type = Grunnlagstype.SOKNADSBARN_INFO, + innhold = POJONode( + SoknadsBarnNode( + ident = soknadBarn.ident ?: "", + navn = soknadBarn.navn ?: "", + fodselsdato = fødselsdato, ), - ) + ), + ) // TODO BostatusKode - private fun boStatusTypeToBoStatusKode(boStatusType: BoStatusType): BostatusKode = - if (boStatusType == BoStatusType.REGISTRERT_PA_ADRESSE - ) { - BostatusKode.BOR_MED_FORELDRE - } else { - BostatusKode.BOR_IKKE_MED_FORELDRE - } + private fun boStatusTypeToBoStatusKode(boStatusType: BoStatusType): BostatusKode = if (boStatusType == BoStatusType.REGISTRERT_PA_ADRESSE + ) { + BostatusKode.BOR_MED_FORELDRE + } else { + BostatusKode.BOR_IKKE_MED_FORELDRE + } - private fun prepareBostatus( - husstandsBarnPerioder: List, - soknadsBarnIdent: String, - soknadBarn: Rolle, - ): List = - husstandsBarnPerioder - .filter { soknadsBarnIdent == it.ident } - .map { - Grunnlag( - referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), - type = Grunnlagstype.BOSTATUS, - innhold = POJONode( - BostatusNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "SOKNADSBARN", - bostatusKode = it.boStatus?.let { it1 -> boStatusTypeToBoStatusKode(it1).name }, - soknadsbarnId = soknadBarn.soknadsLinje, - ), + private fun prepareBostatus(husstandsBarnPerioder: List, søknadsbarn: Grunnlag): List = husstandsBarnPerioder + .filter { søknadsbarn.referanse == it.referanseTilBarn } + .map { + Grunnlag( + referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), + type = Grunnlagstype.BOSTATUS, + innhold = POJONode( + BostatusNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = "SOKNADSBARN", + bostatusKode = it.boStatus?.let { it1 -> boStatusTypeToBoStatusKode(it1).name }, ), - ) - } + ), + ) + } private fun prepareBarnIHusstand(behandlingBeregningModel: BehandlingBeregningModel): List = splitPeriods(behandlingBeregningModel.husstandsBarnPerioder) @@ -88,77 +79,74 @@ class ForskuddBeregning { inntekter: List, barnetillegg: List, utvidetbarnetrygd: List, - ): List = - inntekter - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", - type = Grunnlagstype.INNTEKT, - innhold = POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = it.rolle, - inntektType = it.inntektType, - belop = it.belop, - ), - ), - ) - } + barnetillegg - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), - type = Grunnlagstype.INNTEKT, - innhold = POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "BIDRAGSMOTTAKER", - inntektType = "EKSTRA_SMAABARNSTILLEGG", - belop = it.belop, - ), + ): List = inntekter + .map { + Grunnlag( + referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", + type = Grunnlagstype.INNTEKT, + innhold = POJONode( + InntektNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = it.rolle, + inntektType = it.inntektType, + belop = it.belop, ), - ) - } + utvidetbarnetrygd - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), - type = Grunnlagstype.INNTEKT, - innhold = POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "BIDRAGSMOTTAKER", - inntektType = "UTVIDET_BARNETRYGD", - belop = it.belop, - ), + ), + ) + } + barnetillegg + .map { + Grunnlag( + referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), + type = Grunnlagstype.INNTEKT, + innhold = POJONode( + InntektNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = "BIDRAGSMOTTAKER", + inntektType = "EKSTRA_SMAABARNSTILLEGG", + belop = it.belop, ), - ) - } - - // TODO SivilstandKode - private fun sivilstandTypeToSivilstandKode(sivilstandType: SivilstandType): SivilstandKode = - if (sivilstandType == SivilstandType.GIFT) { - SivilstandKode.GIFT - } else { - SivilstandKode.ENSLIG - } - - private fun prepareSivilstand(sivilstand: List): List = - sivilstand.map { + ), + ) + } + utvidetbarnetrygd + .map { Grunnlag( - referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), - type = Grunnlagstype.SIVILSTAND, + referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), + type = Grunnlagstype.INNTEKT, innhold = POJONode( - SivilstandNode( + InntektNode( datoFom = it.datoFom.toNoString(), datoTil = it.datoTom?.toNoString(), - sivilstandKode = sivilstandTypeToSivilstandKode(it.sivilstandType).name, + rolle = "BIDRAGSMOTTAKER", + inntektType = "UTVIDET_BARNETRYGD", + belop = it.belop, ), ), ) } + // TODO SivilstandKode + private fun sivilstandTypeToSivilstandKode(sivilstandType: SivilstandType): SivilstandKode = if (sivilstandType == SivilstandType.GIFT) { + SivilstandKode.GIFT + } else { + SivilstandKode.ENSLIG + } + + private fun prepareSivilstand(sivilstand: List): List = sivilstand.map { + Grunnlag( + referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), + type = Grunnlagstype.SIVILSTAND, + innhold = POJONode( + SivilstandNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + sivilstandKode = sivilstandTypeToSivilstandKode(it.sivilstandType).name, + ), + ), + ) + } + fun splitPeriods(husstandsBarnPerioder: List): List { if (husstandsBarnPerioder.isEmpty()) return emptyList() @@ -207,32 +195,30 @@ class ForskuddBeregning { return r.filter { it.antall != 0.0 } } - fun toBehandlingBeregningModel(behandling: Behandling): Either, BehandlingBeregningModel> = - BehandlingBeregningModel.invoke( - behandlingId = behandling.id, - virkningsDato = behandling.virkningsDato, - datoTom = behandling.datoTom, - sivilstand = behandling.sivilstand, - inntekter = behandling.inntekter.filter { it.taMed }.toSet(), - barnetillegg = behandling.barnetillegg, - utvidetbarnetrygd = behandling.utvidetbarnetrygd, - husstandsBarn = behandling.husstandsBarn, - roller = behandling.roller, - ) + fun toBehandlingBeregningModel(behandling: Behandling): Either, BehandlingBeregningModel> = BehandlingBeregningModel.invoke( + behandlingId = behandling.id, + virkningsDato = behandling.virkningsDato, + datoTom = behandling.datoTom, + sivilstand = behandling.sivilstand, + inntekter = behandling.inntekter.filter { it.taMed }.toSet(), + barnetillegg = behandling.barnetillegg, + utvidetbarnetrygd = behandling.utvidetbarnetrygd, + husstandsBarn = behandling.husstandsBarn, + roller = behandling.roller, + ) - fun toPayload(b: BehandlingBeregningModel, soknadsBarn: Rolle, fDato: String): BeregnGrunnlag = - BeregnGrunnlag( - periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), - grunnlagListe = prepareSoknadsBarn(soknadsBarn, fDato) + - prepareBarnIHusstand(b) + - prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) + - prepareInntekterForBeregning( - b.inntekter, - b.barnetillegg, - b.utvidetbarnetrygd, - ) + - prepareSivilstand(b.sivilstand), - ) + fun toPayload(b: BehandlingBeregningModel, søknadsbarn: Grunnlag): BeregnGrunnlag = BeregnGrunnlag( + periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), + grunnlagListe = listOf(søknadsbarn) + + prepareBarnIHusstand(b) + + prepareBostatus(b.husstandsBarnPerioder, søknadsbarn) + + prepareInntekterForBeregning( + b.inntekter, + b.barnetillegg, + b.utvidetbarnetrygd, + ) + + prepareSivilstand(b.sivilstand), + ) } data class PointInTimeInfo( @@ -256,11 +242,11 @@ data class BostatusNode( val datoTil: String? = null, val rolle: String, val bostatusKode: String?, - val soknadsbarnId: Int, ) data class SoknadsBarnNode( - val soknadsbarnId: Int, + val ident: String, + val navn: String, val fodselsdato: String, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt index f29fe5561..403101a17 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt @@ -17,7 +17,7 @@ import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.domene.enums.Rolletype import java.math.BigDecimal import java.time.LocalDate -import java.util.Date +import java.util.* fun Set.rolleType(ident: String): String { val rolleType = this.find { it.ident == ident }?.rolleType @@ -49,98 +49,97 @@ data class BehandlingBeregningModel private constructor( utvidetbarnetrygd: Set, husstandsBarn: Set, roller: Set, - ): Either, BehandlingBeregningModel> = - either { - zipOrAccumulate( - { - ensure(behandlingId != null) { raise("Behandling id kan ikke være null") } - behandlingId - }, - { - ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") } - virkningsDato.toLocalDate() - }, - { - ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") } - datoTom.toLocalDate() - }, - { - mapOrAccumulate(sivilstand) { - SivilstandModel( - it.datoFom?.toLocalDate() - ?: raise("Sivilstand Dato Fra må fylles ut"), - it.datoTom?.toLocalDate(), - it.sivilstandType, - ) - } - }, - { - mapOrAccumulate(inntekter.filter { it.taMed }) { - InntektModel( - inntektType = it.inntektType - ?: raise("InntektType kan ikke være null"), - belop = it.belop, - rolle = roller.rolleType(it.ident), - datoFom = it.datoFom?.toLocalDate() - ?: raise("Inntekts Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - ) - } - }, - { - mapOrAccumulate(barnetillegg) { - BarnetilleggModel( - datoFom = it.datoFom?.toLocalDate() - ?: raise("Barnetillegg Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - belop = it.barnetillegg, - ) - } - }, - { - mapOrAccumulate(utvidetbarnetrygd) { - UtvidetbarnetrygdModel( - datoFom = it.datoFom?.toLocalDate() - ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - belop = it.belop, - ) - } - }, - { - mapOrAccumulate( - husstandsBarn.filter { it.medISaken } - .flatMap { it.perioder }, - ) { - HusstandsBarnPeriodeModel( - datoFom = it.datoFom?.toLocalDate() - ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - ident = it.husstandsBarn.ident, - boStatus = it.boStatus, - ) - } - }, - ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder -> - BehandlingBeregningModel( - behandlingId, - virkningsDato, - datoTom, - sivilstand, - inntekter, - barnetillegg, - utvidetbarnetrygd, - husstandsBarnPerioder, - ) - } + ): Either, BehandlingBeregningModel> = either { + zipOrAccumulate( + { + ensure(behandlingId != null) { raise("Behandling id kan ikke være null") } + behandlingId + }, + { + ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") } + virkningsDato.toLocalDate() + }, + { + ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") } + datoTom.toLocalDate() + }, + { + mapOrAccumulate(sivilstand) { + SivilstandModel( + it.datoFom?.toLocalDate() + ?: raise("Sivilstand Dato Fra må fylles ut"), + it.datoTom?.toLocalDate(), + it.sivilstandType, + ) + } + }, + { + mapOrAccumulate(inntekter.filter { it.taMed }) { + InntektModel( + inntektType = it.inntektType + ?: raise("InntektType kan ikke være null"), + belop = it.belop, + rolle = roller.rolleType(it.ident), + datoFom = it.datoFom?.toLocalDate() + ?: raise("Inntekts Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + ) + } + }, + { + mapOrAccumulate(barnetillegg) { + BarnetilleggModel( + datoFom = it.datoFom?.toLocalDate() + ?: raise("Barnetillegg Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + belop = it.barnetillegg, + ) + } + }, + { + mapOrAccumulate(utvidetbarnetrygd) { + UtvidetbarnetrygdModel( + datoFom = it.datoFom?.toLocalDate() + ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + belop = it.belop, + ) + } + }, + { + mapOrAccumulate( + husstandsBarn.filter { it.medISaken } + .flatMap { it.perioder }, + ) { + HusstandsBarnPeriodeModel( + datoFom = it.datoFom?.toLocalDate() + ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + referanseTilBarn = it.husstandsBarn.ident, + boStatus = it.boStatus, + ) + } + }, + ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder -> + BehandlingBeregningModel( + behandlingId, + virkningsDato, + datoTom, + sivilstand, + inntekter, + barnetillegg, + utvidetbarnetrygd, + husstandsBarnPerioder, + ) } + } } } data class HusstandsBarnPeriodeModel( val datoFom: LocalDate, val datoTom: LocalDate? = null, - val ident: String?, + val referanseTilBarn: String?, val boStatus: BoStatusType?, // TODO ENDRE til bostatusKode fra felles // import no.nav.bidrag.beregn.felles.enums.BostatusKode diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt index eb022d955..816e66454 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt @@ -19,6 +19,5 @@ class BidragBeregnForskuddConsumer( UriComponentsBuilder.fromUri(bidragBeregnForskuddUrl).pathSegment("beregn") .pathSegment("forskudd").build().toUri() - fun beregnForskudd(payload: BeregnGrunnlag): ForskuddDto = - postForNonNullEntity(beregnForskuddUri, payload) + fun beregnForskudd(payload: BeregnGrunnlag): ForskuddDto = postForNonNullEntity(beregnForskuddUri, payload) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt index 21a40e56b..b3b5f1552 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt @@ -22,9 +22,8 @@ class BidragTilgangskontrollConsumer( @Value("\${BIDRAG_TILGANGSKONTROLL_URL}") val url: URI, @Qualifier("azure") private val restTemplate: RestOperations, ) : AbstractRestClient(restTemplate, "bidrag-tilgangskontroll") { - private fun createUri(path: String?) = - UriComponentsBuilder.fromUri(url) - .path(path ?: "").build().toUri() + private fun createUri(path: String?) = UriComponentsBuilder.fromUri(url) + .path(path ?: "").build().toUri() // TODO: Bruk dette for å sjekke om saksbehandler har tilgang til behandling (sak) @Retryable(value = [Exception::class], maxAttempts = 3, backoff = Backoff(delay = 200, maxDelay = 1000, multiplier = 2.0)) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index be064571b..115542c87 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -10,6 +10,7 @@ import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer import no.nav.bidrag.behandling.consumer.BidragPersonConsumer import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons +import no.nav.bidrag.behandling.fantIkkeFødselsdatoTilSøknadsbarn import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toNoString @@ -27,15 +28,11 @@ class BehandlingBeregnForskuddController( private val forskuddBeregning: ForskuddBeregning, private val bidragPersonConsumer: BidragPersonConsumer, ) { - private fun isPeriodOneWithinPeriodTwo( - datoFom1: LocalDate?, - datoTom1: LocalDate?, - datoFom2: LocalDate, - datoTom2: LocalDate?, - ) = (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && ( - (datoTom2 == null && datoTom1 == null) || - (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2))) - ) + private fun isPeriodOneWithinPeriodTwo(datoFom1: LocalDate?, datoTom1: LocalDate?, datoFom2: LocalDate, datoTom2: LocalDate?) = + (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && ( + (datoTom2 == null && datoTom1 == null) || + (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2))) + ) @Suppress("unused") @PostMapping("/behandling/{behandlingId}/beregn") @@ -43,9 +40,7 @@ class BehandlingBeregnForskuddController( description = "Beregn forskudd", security = [SecurityRequirement(name = "bearer-key")], ) - fun beregnForskudd( - @PathVariable behandlingId: Long, - ): ForskuddBeregningRespons { + fun beregnForskudd(@PathVariable behandlingId: Long): ForskuddBeregningRespons { val behandling = behandlingService.hentBehandlingById(behandlingId) val result = either { @@ -54,13 +49,20 @@ class BehandlingBeregnForskuddController( behandling .getSøknadsBarn() .mapOrAccumulate { - val fDato = if (it.fodtDato == null) { + val fødselsdatoSøknadsbarn = if (it.fodtDato == null && it.ident != null) { bidragPersonConsumer.hentPerson(it.ident).fødselsdato } else { - it.fodtDato.toLocalDate().toNoString() + it.fodtDato?.toLocalDate()?.toNoString() ?: null } - val payload = forskuddBeregning.toPayload(behandlingModel, it, fDato) + // Avbryter prosesering dersom fødselsdato til søknadsbarn er ukjent + if (fødselsdatoSøknadsbarn == null) { + fantIkkeFødselsdatoTilSøknadsbarn(behandlingId) + } + + var søknadsbarn = forskuddBeregning.lagePersonobjektForSøknadsbarn(it, fødselsdatoSøknadsbarn) + + val payload = forskuddBeregning.toPayload(behandlingModel, søknadsbarn) try { val respons = @@ -68,13 +70,12 @@ class BehandlingBeregnForskuddController( val beregnetForskuddPeriodeListe = respons.beregnetForskuddPeriodeListe beregnetForskuddPeriodeListe.forEach { r -> r.sivilstandType = - behandlingModel.sivilstand.find { - sivilstand -> + behandlingModel.sivilstand.find { sivilstand -> isPeriodOneWithinPeriodTwo(r.periode.datoFom, r.periode.datoTil, sivilstand.datoFom, sivilstand.datoTom) }?.sivilstandType } ForskuddBeregningPerBarn( - ident = it.ident, + referanseTilBarn = søknadsbarn.referanse, beregnetForskuddPeriodeListe = beregnetForskuddPeriodeListe, grunnlagListe = respons.grunnlagListe, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt index 7f5092b08..6e073c223 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt @@ -91,10 +91,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { description = "Oppdatere behandling", security = [SecurityRequirement(name = "bearer-key")], ) - fun updateBehandling( - @PathVariable behandlingId: Long, - @Valid @RequestBody(required = true) request: UpdateBehandlingRequest, - ) { + fun updateBehandling(@PathVariable behandlingId: Long, @Valid @RequestBody(required = true) request: UpdateBehandlingRequest) { behandlingService.updateBehandling(behandlingId, request.grunnlagspakkeId) } @@ -104,10 +101,8 @@ class BehandlingController(private val behandlingService: BehandlingService) { description = "Sync fra behandling", security = [SecurityRequirement(name = "bearer-key")], ) - fun syncRoller( - @PathVariable behandlingId: Long, - @Valid @RequestBody(required = true) request: SyncRollerRequest, - ) = behandlingService.syncRoller(behandlingId, request.roller) + fun syncRoller(@PathVariable behandlingId: Long, @Valid @RequestBody(required = true) request: SyncRollerRequest) = + behandlingService.syncRoller(behandlingId, request.roller) @Suppress("unused") @PutMapping("/behandling/{behandlingId}/vedtak/{vedtakId}") @@ -126,10 +121,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun oppdaterVedtakId( - @PathVariable behandlingId: Long, - @PathVariable vedtakId: Long, - ) { + fun oppdaterVedtakId(@PathVariable behandlingId: Long, @PathVariable vedtakId: Long) { behandlingService.oppdaterVedtakId(behandlingId, vedtakId) } @@ -150,9 +142,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun hentBehandling( - @PathVariable behandlingId: Long, - ): BehandlingDto { + fun hentBehandling(@PathVariable behandlingId: Long): BehandlingDto { return findBehandlingById(behandlingId) } @@ -161,10 +151,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { return behandlingDto(behandlingId, behandling) } - private fun behandlingDto( - behandlingId: Long, - behandling: Behandling, - ) = BehandlingDto( + private fun behandlingDto(behandlingId: Long, behandling: Behandling) = BehandlingDto( behandlingId, behandling.behandlingType, behandling.soknadType, @@ -177,7 +164,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { behandling.soknadId, behandling.behandlerEnhet, behandling.roller.map { - RolleDto(it.id!!, it.rolleType.toRolleTypeDto(), it.ident, it.fodtDato, it.opprettetDato) + RolleDto(it.id!!, it.rolleType.toRolleTypeDto(), it.ident, it.navn, it.fodtDato, it.opprettetDato) }.toSet(), behandling.husstandsBarn.toHusstandsBarnDto(), behandling.sivilstand.toSivilstandDto(), diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt index 64ad5f27f..5e08e9b31 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt @@ -22,10 +22,7 @@ class BoforholdController(private val behandlingService: BehandlingService) { description = "Oppdatere boforhold data", security = [SecurityRequirement(name = "bearer-key")], ) - fun oppdatereBoforhold( - @PathVariable behandlingId: Long, - @RequestBody updateBoforholdRequest: UpdateBoforholdRequest, - ): BoforholdResponse { + fun oppdatereBoforhold(@PathVariable behandlingId: Long, @RequestBody updateBoforholdRequest: UpdateBoforholdRequest): BoforholdResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) behandlingService.updateBoforhold( @@ -52,9 +49,7 @@ class BoforholdController(private val behandlingService: BehandlingService) { description = "Hente boforhold data", security = [SecurityRequirement(name = "bearer-key")], ) - fun hentBoforhold( - @PathVariable behandlingId: Long, - ): BoforholdResponse { + fun hentBoforhold(@PathVariable behandlingId: Long): BoforholdResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) return BoforholdResponse( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt index fbba0ba1a..f6e13813e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt @@ -22,7 +22,10 @@ import org.springframework.web.method.annotation.MethodArgumentTypeMismatchExcep class ExceptionHandler { @ResponseBody @ExceptionHandler( - value = [MethodArgumentNotValidException::class, InvalidFormatException::class, IllegalArgumentException::class, MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class], + value = [ + MethodArgumentNotValidException::class, InvalidFormatException::class, IllegalArgumentException::class, + MethodArgumentTypeMismatchException::class, ConversionFailedException::class, HttpMessageNotReadableException::class, + ], ) fun handleInvalidValueExceptions(exception: Exception): ResponseEntity<*> { val cause = exception.cause ?: exception @@ -88,11 +91,7 @@ class ExceptionHandler { val message: String, val fieldErrors: MutableList = mutableListOf(), ) { - fun addFieldError( - objectName: String, - field: String, - message: String, - ) { + fun addFieldError(objectName: String, field: String, message: String) { val error = CustomFieldError(objectName, field, message) fieldErrors.add(error) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt index ddeb42525..6aa0b11de 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt @@ -13,7 +13,8 @@ class ForsendelseController(private val forsendelseService: ForsendelseService) @Suppress("unused") @PostMapping("/forsendelse/init") @Operation( - description = "Oppretter forsendelse for behandling eller vedtak. Skal bare benyttes hvis vedtakId eller behandlingId mangler for behandling (Søknad som behandles gjennom Bisys)", + description = "Oppretter forsendelse for behandling eller vedtak. Skal bare benyttes hvis vedtakId eller behandlingId mangler for " + + "behandling (Søknad som behandles gjennom Bisys)", security = [SecurityRequirement(name = "bearer-key")], ) fun opprettForsendelse( 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..73e686a4e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -37,10 +37,7 @@ class InntekterController(private val behandlingService: BehandlingService) { ), ], ) - fun oppdaterInntekter( - @PathVariable behandlingId: Long, - @RequestBody request: UpdateInntekterRequest, - ): InntekterResponse { + fun oppdaterInntekter(@PathVariable behandlingId: Long, @RequestBody request: UpdateInntekterRequest): InntekterResponse { var behandling = behandlingService.hentBehandlingById(behandlingId) behandlingService.oppdaterInntekter( @@ -80,9 +77,7 @@ class InntekterController(private val behandlingService: BehandlingService) { ), ], ) - fun hentInntekter( - @PathVariable behandlingId: Long, - ): InntekterResponse { + fun hentInntekter(@PathVariable behandlingId: Long): InntekterResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) return InntekterResponse( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt index 5ce4aea95..839982bca 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt @@ -61,10 +61,7 @@ class OpplysningerController(val opplysningerService: OpplysningerService) { ), ], ) - fun hentAktiv( - @PathVariable behandlingId: Long, - @PathVariable opplysningerType: OpplysningerType, - ): OpplysningerDto { + fun hentAktiv(@PathVariable behandlingId: Long, @PathVariable opplysningerType: OpplysningerType): OpplysningerDto { return opplysningerService.hentSistAktiv( behandlingId, opplysningerType, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt index b2434a38e..aca7b266c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt @@ -72,9 +72,7 @@ class VirkningsTidspunktController(private val behandlingService: BehandlingServ ), ], ) - fun hentVirkningsTidspunkt( - @PathVariable behandlingId: Long, - ): VirkningsTidspunktResponse { + fun hentVirkningsTidspunkt(@PathVariable behandlingId: Long): VirkningsTidspunktResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) return VirkningsTidspunktResponse( behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, 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 28d53bfee..e8cff82d6 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 @@ -23,9 +23,10 @@ import java.util.Date @Where(clause = "deleted=false") class Behandling( @Enumerated(EnumType.STRING) - val behandlingType: BehandlingType, + val behandlingType: Behandlingstype, + // TODO Endre til Vedtakstype @Enumerated(EnumType.STRING) - val soknadType: SoknadType, // TODO Endre til Vedtakstype + val soknadType: SoknadType, val datoFom: Date, val datoTom: Date, val mottatDato: Date, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BehandlingType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt similarity index 89% rename from src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BehandlingType.kt rename to src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt index 1c4056c6d..ce699d018 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BehandlingType.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt @@ -3,7 +3,7 @@ package no.nav.bidrag.behandling.database.datamodell import io.swagger.v3.oas.annotations.media.Schema @Schema(enumAsRef = true) -enum class BehandlingType { +enum class Behandlingstype { BIDRAG, FORSKUDD, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt index 446289e7e..75f890e65 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt @@ -23,13 +23,13 @@ class Rolle( val behandling: Behandling, @Enumerated(EnumType.STRING) val rolleType: Rolletype, - val ident: String, + val ident: String?, val fodtDato: Date?, val opprettetDato: Date?, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, + val navn: String? = null, val deleted: Boolean = false, - @Transient - val soknadsLinje: Int = 1, + ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt index fea2d101e..8af1d329a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt @@ -39,8 +39,5 @@ interface BehandlingRepository : CrudRepository { "b.vedtakId = :vedtakId " + "where b.id = :behandlingId", ) - fun oppdaterVedtakId( - behandlingId: Long, - vedtakId: Long, - ) + fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt index 9d5910ee4..b09977c53 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt @@ -6,8 +6,5 @@ import org.springframework.data.repository.CrudRepository import java.util.Optional interface OpplysningerRepository : CrudRepository { - fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc( - behandlingId: Long, - opplysningerType: OpplysningerType, - ): Optional + fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(behandlingId: Long, opplysningerType: OpplysningerType): Optional } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt index b3268e8cb..d8f264c80 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt @@ -2,18 +2,20 @@ package no.nav.bidrag.behandling.dto.behandling import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema -import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto import no.nav.bidrag.domene.enums.SøktAvType import java.time.LocalDate // TODO: Flytt dette til bidrag-transport data class BehandlingDto( val id: Long, - val behandlingType: BehandlingType, // Union av Stønadstype og Engangsbeløptype - val soknadType: SoknadType, // TODO Bruk Vedtakstype istedenfor + // Union av Stønadstype og Engangsbeløptype + val behandlingtype: Behandlingstype, + // TODO Bruk Vedtakstype istedenfor + val søknadstype: SoknadType, val erVedtakFattet: Boolean, @Schema(type = "string", format = "date", example = "01.12.2025") @JsonFormat(pattern = "yyyy-MM-dd") @@ -26,21 +28,21 @@ data class BehandlingDto( val mottatDato: LocalDate, val soknadFraType: SøktAvType, val saksnummer: String, - val soknadId: Long, - val behandlerEnhet: String, + val soknadsid: Long, + val behandlerenhet: String, val roller: Set, - val husstandsBarn: Set, + val husstandsbarn: Set, val sivilstand: Set, @Schema(type = "string", format = "date", example = "01.12.2025") @JsonFormat(pattern = "yyyy-MM-dd") - val virkningsDato: LocalDate? = null, + val virkningsdato: LocalDate? = null, val soknadRefId: Long? = null, - val grunnlagspakkeId: Long? = null, - val aarsak: ForskuddAarsakType? = null, - val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, - val virkningsTidspunktBegrunnelseKunINotat: String? = null, - val boforholdBegrunnelseMedIVedtakNotat: String? = null, - val boforholdBegrunnelseKunINotat: String? = null, - val inntektBegrunnelseMedIVedtakNotat: String? = null, - val inntektBegrunnelseKunINotat: String? = null, + val grunnlagspakkeid: Long? = null, + val årsak: ForskuddAarsakType? = null, + val virkningstidspunktBegrunnelseMedIVedtaksnotat: String? = null, + val virkningstidspunktBegrunnelseKunINotat: String? = null, + val boforholdsbegrunnelseMedIVedtaksnotat: String? = null, + val boforholdsbegrunnelseKunINotat: String? = null, + val inntektsbegrunnelseMedIVedtaksnotat: String? = null, + val inntektsbegrunnelseKunINotat: String? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt index fdaa49e5f..d360c1b8f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema import jakarta.validation.Valid import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size -import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.domene.enums.Engangsbeløptype import no.nav.bidrag.domene.enums.Stønadstype @@ -13,7 +13,7 @@ import java.util.Date data class CreateBehandlingRequest( @Schema(required = true) - val behandlingType: BehandlingType, + val behandlingType: Behandlingstype, @Schema(required = true) val soknadType: SoknadType, @Schema(required = true) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt index 70f03f51d..e1f4c88d1 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt @@ -1,7 +1,6 @@ package no.nav.bidrag.behandling.dto.behandling import io.swagger.v3.oas.annotations.media.Schema -import jakarta.validation.constraints.NotBlank import java.util.Date enum class CreateRolleRolleType { @@ -16,12 +15,23 @@ enum class CreateRolleRolleType { data class CreateRolleDto( @Schema(required = true, enumAsRef = true) val rolleType: CreateRolleRolleType, - @Schema(type = "string", description = "F.eks fødselsnummer", required = true, nullable = false) - @field:NotBlank - val ident: String, - @Schema(type = "string", format = "date", description = "F.eks fødselsdato") + @Schema( + type = "String", + description = "F.eks fødselsnummer. Påkrevd for alle rolletyper utenom for barn som ikke inngår i beregning.", + required = false, + nullable = true, + ) + val ident: String?, + @Schema( + type = "String", + description = "Navn på rolleinnehaver hvis ident er ukjent. Gjelder kun barn som ikke inngår i beregning", + required = false, + nullable = true, + ) + val navn: String?, + @Schema(type = "String", format = "date", description = "F.eks fødselsdato") val fodtDato: Date?, - @Schema(type = "string", format = "date", description = "Opprettet dato") + @Schema(type = "String", format = "date", description = "Opprettet dato") val opprettetDato: Date?, val erSlettet: Boolean = false, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt index 80becea76..a2ece7e3d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt @@ -5,7 +5,8 @@ import java.util.Date data class RolleDto( val id: Long, val rolleType: RolleTypeDto, - val ident: String, + val ident: String?, + val navn: String?, val fodtDato: Date?, val opprettetDato: Date?, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt index db30e5f17..936d7c667 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt @@ -9,7 +9,7 @@ data class ForskuddBeregningRespons( ) data class ForskuddBeregningPerBarn( - val ident: String, + val referanseTilBarn: String?, val beregnetForskuddPeriodeListe: List, val grunnlagListe: List? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt index b8a83deae..30834b620 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt @@ -1,10 +1,10 @@ package no.nav.bidrag.behandling.dto.boforhold import no.nav.bidrag.behandling.dto.behandling.SivilstandDto -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto data class BoforholdResponse( - val husstandsBarn: Set, + val husstandsBarn: Set, val sivilstand: Set, val boforholdBegrunnelseMedIVedtakNotat: String? = null, val boforholdBegrunnelseKunINotat: String? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt index 66eb5a506..cbb025f18 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt @@ -2,11 +2,11 @@ package no.nav.bidrag.behandling.dto.boforhold import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.dto.behandling.SivilstandDto -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto data class UpdateBoforholdRequest( @Schema(required = true) - val husstandsBarn: Set, + val husstandsBarn: Set, @Schema(required = true) val sivilstand: Set, val boforholdBegrunnelseMedIVedtakNotat: String? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt index 193b3c586..72f2a1529 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt @@ -21,11 +21,9 @@ data class BehandlingInfoDto( ) { fun erBehandlingType(stonadType: Stønadstype?) = this.stonadType == stonadType - fun erBehandlingType(engangsBelopType: Engangsbeløptype?) = - this.engangsBelopType == engangsBelopType + fun erBehandlingType(engangsBelopType: Engangsbeløptype?) = this.engangsBelopType == engangsBelopType - fun erGebyr() = - erBehandlingType(Engangsbeløptype.GEBYR_SKYLDNER) || erBehandlingType(Engangsbeløptype.GEBYR_MOTTAKER) + fun erGebyr() = erBehandlingType(Engangsbeløptype.GEBYR_SKYLDNER) || erBehandlingType(Engangsbeløptype.GEBYR_MOTTAKER) fun erBehandlingType(behandlingType: String?) = this.behandlingType == behandlingType diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt similarity index 83% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt rename to src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt index 4e10d309c..bcc35978a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt @@ -4,15 +4,15 @@ import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema import java.time.LocalDate -data class HusstandsBarnDto( +data class HusstandsbarnDto( val id: Long?, @Schema(required = true) - val medISaken: Boolean, + val medISak: Boolean, @Schema(required = true) val perioder: Set, val ident: String? = null, val navn: String? = null, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") - val foedselsDato: LocalDate? = null, + val foedselsdato: LocalDate? = null, ) 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 c735f3098..cbb232dfd 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -30,12 +30,11 @@ class BehandlingService( private val rolleRepository: RolleRepository, private val forsendelseService: ForsendelseService, ) { - fun createBehandling(behandling: Behandling): Behandling = - behandlingRepository.save(behandling) - .let { - opprettForsendelseForBehandling(it) - it - } + fun createBehandling(behandling: Behandling): Behandling = behandlingRepository.save(behandling) + .let { + opprettForsendelseForBehandling(it) + it + } private fun opprettForsendelseForBehandling(behandling: Behandling) { forsendelseService.slettEllerOpprettForsendelse( @@ -69,28 +68,26 @@ class BehandlingService( inntektBegrunnelseKunINotat: String? = null, aarsak: ForskuddAarsakType? = null, virkningsDato: Date? = null, - ): Behandling = - behandlingRepository.save( - behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { behandlingNotFoundException(behandlingId) } - .let { - it.virkningsTidspunktBegrunnelseMedIVedtakNotat = - virkningsTidspunktBegrunnelseMedIVedtakNotat - it.virkningsTidspunktBegrunnelseKunINotat = - virkningsTidspunktBegrunnelseKunINotat - it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat - it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat - it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.aarsak = aarsak - it.virkningsDato = virkningsDato - it - }, - ) - - fun hentBehandlingById(behandlingId: Long): Behandling = + ): Behandling = behandlingRepository.save( behandlingRepository.findBehandlingById(behandlingId) .orElseThrow { behandlingNotFoundException(behandlingId) } + .let { + it.virkningsTidspunktBegrunnelseMedIVedtakNotat = + virkningsTidspunktBegrunnelseMedIVedtakNotat + it.virkningsTidspunktBegrunnelseKunINotat = + virkningsTidspunktBegrunnelseKunINotat + it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat + it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat + it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat + it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat + it.aarsak = aarsak + it.virkningsDato = virkningsDato + it + }, + ) + + fun hentBehandlingById(behandlingId: Long): Behandling = behandlingRepository.findBehandlingById(behandlingId) + .orElseThrow { behandlingNotFoundException(behandlingId) } fun hentBehandlinger(): List = behandlingRepository.hentBehandlinger() @@ -166,14 +163,10 @@ class BehandlingService( ) @Transactional - fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) = - behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId) + fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) = behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId) @Transactional - fun syncRoller( - behandlingId: Long, - roller: List, - ) { + fun syncRoller(behandlingId: Long, roller: List) { val existingRoller = rolleRepository.findRollerByBehandlingId(behandlingId) val behandling = behandlingRepository.findById(behandlingId).get() @@ -196,10 +189,7 @@ class BehandlingService( } } - fun updateBehandling( - behandlingId: Long, - grunnlagspakkeId: Long?, - ) { + fun updateBehandling(behandlingId: Long, grunnlagspakkeId: Long?) { hentBehandlingById(behandlingId).let { it.grunnlagspakkeId = grunnlagspakkeId behandlingRepository.save(it) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt index 87c9e7b32..c10247c55 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt @@ -147,8 +147,6 @@ class OpprettForsendelseForRollerListe : MutableList by mut } fun BehandlingInfoDto.typeForsendelse() = if (this.erVedtakFattet()) "vedtak" else "varsel" -fun List.hentRolle(rolleType: Rolletype): ForsendelseRolleDto? = - this.find { it.type == rolleType } +fun List.hentRolle(rolleType: Rolletype): ForsendelseRolleDto? = this.find { it.type == rolleType } -fun List.hentBarn(): List = - this.filter { it.type == Rolletype.BARN } +fun List.hentBarn(): List = this.filter { it.type == Rolletype.BARN } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt index 18ad8e28d..14881db40 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt @@ -16,12 +16,7 @@ class OpplysningerService( private val behandlingRepository: BehandlingRepository, ) { @Transactional - fun opprett( - behandlingId: Long, - opplysningerType: OpplysningerType, - data: String, - hentetDato: Date, - ): Opplysninger { + fun opprett(behandlingId: Long, opplysningerType: OpplysningerType, data: String, hentetDato: Date): Opplysninger { behandlingRepository .findBehandlingById(behandlingId).orElseThrow { behandlingNotFoundException(behandlingId) } .let { @@ -29,9 +24,6 @@ class OpplysningerService( } } - fun hentSistAktiv( - behandlingId: Long, - opplysningerType: OpplysningerType, - ): Optional = + fun hentSistAktiv(behandlingId: Long, opplysningerType: OpplysningerType): Optional = opplysningerRepository.findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(behandlingId, opplysningerType) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index bb09b030a..35975abcd 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -16,8 +16,8 @@ import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.behandling.RolleTypeDto import no.nav.bidrag.behandling.dto.behandling.SivilstandDto import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto +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 @@ -27,157 +27,143 @@ import no.nav.bidrag.domene.enums.Vedtakstype import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost -fun Set.toSivilstandDto() = - this.map { - SivilstandDto( - it.id, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.sivilstandType, - ) - }.toSet() - -fun Set.toSivilstandDomain(behandling: Behandling) = - this.map { - Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id) - }.toMutableSet() - -fun Set.toBarnetilleggDto() = - this.map { - BarnetilleggDto( - it.id, - it.ident, - it.barnetillegg, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - ) - }.toSet() +fun Set.toSivilstandDto() = this.map { + SivilstandDto( + it.id, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.sivilstandType, + ) +}.toSet() + +fun Set.toSivilstandDomain(behandling: Behandling) = this.map { + Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id) +}.toMutableSet() + +fun Set.toBarnetilleggDto() = this.map { + BarnetilleggDto( + it.id, + it.ident, + it.barnetillegg, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + ) +}.toSet() -fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = - this.map { - Utvidetbarnetrygd( - behandling, - it.deltBoSted, - it.belop, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - ) - }.toMutableSet() +fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = this.map { + Utvidetbarnetrygd( + behandling, + it.deltBoSted, + it.belop, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + ) +}.toMutableSet() + +fun Set.toUtvidetbarnetrygdDto() = this.map { + UtvidetbarnetrygdDto( + it.id, + it.deltBoSted, + it.belop, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + ) +}.toSet() -fun Set.toUtvidetbarnetrygdDto() = - this.map { - UtvidetbarnetrygdDto( - it.id, - it.deltBoSted, - it.belop, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - ) - }.toSet() +fun Set.toBarnetilleggDomain(behandling: Behandling) = this.map { + Barnetillegg( + behandling, + it.ident, + it.barnetillegg, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + it.id, + ) +}.toMutableSet() + +fun Set.toHusstandsBarnPeriodeDto() = this.map { + HusstandsBarnPeriodeDto( + it.id, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.boStatus, + it.kilde, + ) +}.toSet() + +fun Set.toDomain(husstandsBarn: HusstandsBarn) = this.map { + HusstandsBarnPeriode( + husstandsBarn, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + it.boStatus, + it.kilde, + ) +}.toSet() + +fun Set.toHusstandsBarnDto() = this.map { + HusstandsbarnDto( + it.id!!, + it.medISaken, + it.perioder.toHusstandsBarnPeriodeDto(), + it.ident, + it.navn, + it.foedselsDato?.toLocalDate(), + ) +}.toSet() -fun Set.toBarnetilleggDomain(behandling: Behandling) = - this.map { - Barnetillegg( +fun Set.toDomain(behandling: Behandling) = this.map { + val barn = + HusstandsBarn( behandling, - it.ident, - it.barnetillegg, - it.datoFom?.toDate(), - it.datoTom?.toDate(), + it.medISak, it.id, - ) - }.toMutableSet() - -fun Set.toHusstandsBarnPeriodeDto() = - this.map { - HusstandsBarnPeriodeDto( - it.id, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.boStatus, - it.kilde, - ) - }.toSet() - -fun Set.toDomain(husstandsBarn: HusstandsBarn) = - this.map { - HusstandsBarnPeriode( - husstandsBarn, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - it.boStatus, - it.kilde, - ) - }.toSet() - -fun Set.toHusstandsBarnDto() = - this.map { - HusstandsBarnDto( - it.id!!, - it.medISaken, - it.perioder.toHusstandsBarnPeriodeDto(), it.ident, it.navn, - it.foedselsDato?.toLocalDate(), + it.foedselsdato?.toDate(), ) - }.toSet() - -fun Set.toDomain(behandling: Behandling) = - this.map { - val barn = - HusstandsBarn( - behandling, - it.medISaken, - it.id, - it.ident, - it.navn, - it.foedselsDato?.toDate(), - ) - barn.perioder = it.perioder.toDomain(barn).toMutableSet() - barn - }.toMutableSet() - -fun Set.toInntektDomain(behandling: Behandling) = - this.map { - val inntekt = - Inntekt( - it.inntektType, - it.belop, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - it.ident, - it.fraGrunnlag, - it.taMed, - it.id, - behandling, - ) - inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet() - inntekt - }.toMutableSet() - -fun Set.toInntektPostDomain(inntekt: Inntekt) = - this.map { - InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) - }.toSet() - -fun Set.toInntektPost() = - this.map { - InntektPost(it.kode, it.visningsnavn, it.beløp) - }.toSet() - -fun Set.toInntektDto() = - this.map { - InntektDto( - it.id, - it.taMed, + barn.perioder = it.perioder.toDomain(barn).toMutableSet() + barn +}.toMutableSet() + +fun Set.toInntektDomain(behandling: Behandling) = this.map { + val inntekt = + Inntekt( it.inntektType, it.belop, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), + it.datoFom?.toDate(), + it.datoTom?.toDate(), it.ident, it.fraGrunnlag, - it.inntektPostListe.toInntektPost(), + it.taMed, + it.id, + behandling, ) - }.toSet() + inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet() + inntekt +}.toMutableSet() + +fun Set.toInntektPostDomain(inntekt: Inntekt) = this.map { + InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) +}.toSet() + +fun Set.toInntektPost() = this.map { + InntektPost(it.kode, it.visningsnavn, it.beløp) +}.toSet() + +fun Set.toInntektDto() = this.map { + InntektDto( + it.id, + it.taMed, + it.inntektType, + it.belop, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.ident, + it.fraGrunnlag, + it.inntektPostListe.toInntektPost(), + ) +}.toSet() fun Opplysninger.toDto(): OpplysningerDto { return OpplysningerDto( @@ -189,49 +175,46 @@ fun Opplysninger.toDto(): OpplysningerDto { ) } -fun Behandling.tilForsendelseRolleDto() = - roller.map { - ForsendelseRolleDto( - fødselsnummer = Personident(it.ident), - type = it.rolleType, - ) - } - -fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = - Rolle( - behandling, - rolleType = - when (this.rolleType) { - CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER - CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG - CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER - CreateRolleRolleType.BARN -> Rolletype.BARN - CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT - }, - this.ident, - this.fodtDato, - this.opprettetDato, +fun Behandling.tilForsendelseRolleDto() = roller.filter { r -> !(r.rolleType == Rolletype.BARN && r.ident == null) }.map { + ForsendelseRolleDto( + fødselsnummer = Personident(it.ident!!), + type = it.rolleType, ) +} -fun SoknadType.tilVedtakType(): Vedtakstype = - when (this) { - SoknadType.FASTSETTELSE -> Vedtakstype.FASTSETTELSE - SoknadType.REVURDERING -> Vedtakstype.REVURDERING - SoknadType.ALDERSJUSTERING -> Vedtakstype.ALDERSJUSTERING - SoknadType.ALDERSOPPHØR -> Vedtakstype.ALDERSOPPHØR - SoknadType.ENDRING -> Vedtakstype.ENDRING - SoknadType.ENDRING_MOTTAKER -> Vedtakstype.ENDRING_MOTTAKER - SoknadType.KLAGE -> Vedtakstype.KLAGE - SoknadType.OPPHØR -> Vedtakstype.OPPHØR - SoknadType.INDEKSREGULERING -> Vedtakstype.INDEKSREGULERING - SoknadType.INNKREVING -> Vedtakstype.INNKREVING - } - -fun Rolletype.toRolleTypeDto(): RolleTypeDto = - when (this) { - Rolletype.BARN -> RolleTypeDto.BARN - Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER - Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG - Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT - Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER - } +fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = Rolle( + behandling, + rolleType = + when (this.rolleType) { + CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER + CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG + CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER + CreateRolleRolleType.BARN -> Rolletype.BARN + CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT + }, + this.ident, + this.fodtDato, + this.opprettetDato, + navn = this.navn, +) + +fun SoknadType.tilVedtakType(): Vedtakstype = when (this) { + SoknadType.FASTSETTELSE -> Vedtakstype.FASTSETTELSE + SoknadType.REVURDERING -> Vedtakstype.REVURDERING + SoknadType.ALDERSJUSTERING -> Vedtakstype.ALDERSJUSTERING + SoknadType.ALDERSOPPHØR -> Vedtakstype.ALDERSOPPHØR + SoknadType.ENDRING -> Vedtakstype.ENDRING + SoknadType.ENDRING_MOTTAKER -> Vedtakstype.ENDRING_MOTTAKER + SoknadType.KLAGE -> Vedtakstype.KLAGE + SoknadType.OPPHØR -> Vedtakstype.OPPHØR + SoknadType.INDEKSREGULERING -> Vedtakstype.INDEKSREGULERING + SoknadType.INNKREVING -> Vedtakstype.INNKREVING +} + +fun Rolletype.toRolleTypeDto(): RolleTypeDto = when (this) { + Rolletype.BARN -> RolleTypeDto.BARN + Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER + Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG + Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT + Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER +} diff --git a/src/main/resources/db/migration/V1.0.31__alter_table_rolle_add_column_navn.sql b/src/main/resources/db/migration/V1.0.31__alter_table_rolle_add_column_navn.sql new file mode 100644 index 000000000..7f1b39dd9 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.31__alter_table_rolle_add_column_navn.sql @@ -0,0 +1,11 @@ +-- Table: ROLLE + +/* + ALTER TABLE ROLLE + DROP COLUMN ROLLE; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.31'; + */ + +ALTER TABLE ROLLE + ADD COLUMN NAVN VARCHAR(200); diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt index 500e2498f..d755b989f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -8,7 +8,6 @@ import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons import no.nav.bidrag.behandling.utils.oppretteBehandling import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller -import no.nav.bidrag.domene.enums.Rolletype import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test @@ -51,12 +50,10 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { @Test @Disabled - fun `skal ikke beregne forskudd for behandling som mangler informasjon om søknadsbarn`() { + fun `skal videreføre BAD_REQUEST fra bidrag-beregn-forskudd-rest`() { // given - var behandling = oppretteBehandling() - var rollerUtenBarn = oppretteBehandlingRoller(behandling) - rollerUtenBarn.removeIf { r -> r.rolleType == Rolletype.BARN } - behandling.roller = rollerUtenBarn + stubUtils.stubBeregneForskudd(HttpStatus.BAD_REQUEST) + var behandling = lagreBehandlingMedRoller() // when val returnert = @@ -70,7 +67,7 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { // then assertSoftly { returnert shouldNotBe null - returnert.statusCode shouldBe HttpStatus.OK + returnert.statusCode shouldBe HttpStatus.BAD_REQUEST returnert.body shouldNotBe null } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index f1d7c2332..a910608f2 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -1,7 +1,7 @@ package no.nav.bidrag.behandling.controller import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.dto.behandling.BehandlingDto import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse @@ -22,7 +22,7 @@ import kotlin.test.Ignore import kotlin.test.assertNotNull data class CreateBehandlingRequestTest( - val behandlingType: BehandlingType, + val behandlingType: Behandlingstype, val stonadType: Stønadstype, val soknadType: SoknadType, val datoFom: Date, @@ -118,7 +118,7 @@ class BehandlingControllerTest() : KontrollerTestRunner() { ) assertNotNull(updatedBehandling.body) - assertEquals(123L, updatedBehandling.body!!.grunnlagspakkeId) + assertEquals(123L, updatedBehandling.body!!.grunnlagspakkeid) } @Test @@ -215,7 +215,7 @@ class BehandlingControllerTest() : KontrollerTestRunner() { val behandling = behandlingService.createBehandling( Behandling( - BehandlingType.FORSKUDD, + Behandlingstype.FORSKUDD, SoknadType.FASTSETTELSE, Date(1), Date(2), @@ -230,16 +230,16 @@ class BehandlingControllerTest() : KontrollerTestRunner() { ), ) - val VEDTAK_ID: Long = 1 + val vedtaksid: Long = 1 val responseMedNull = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${behandling.id}/vedtak/$VEDTAK_ID", + "${rootUri()}/behandling/${behandling.id}/vedtak/$vedtaksid", HttpMethod.PUT, HttpEntity.EMPTY, Void::class.java, ) assertEquals(HttpStatus.OK, responseMedNull.statusCode) - assertEquals(VEDTAK_ID, behandlingService.hentBehandlingById(behandling.id!!).vedtakId) + assertEquals(vedtaksid, behandlingService.hentBehandlingById(behandling.id!!).vedtakId) } @Test @@ -277,6 +277,8 @@ class BehandlingControllerTest() : KontrollerTestRunner() { @Test fun `skal ikke opprette en behandling med rolle med null ident`() { + + // given val roller = setOf( CreateRolleDtoTest(CreateRolleRolleType.BARN, null, Date(1)), @@ -284,6 +286,7 @@ class BehandlingControllerTest() : KontrollerTestRunner() { ) val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + // when val responseMedNull = httpHeaderTestRestTemplate.exchange( "${rootUri()}/behandling", @@ -291,6 +294,8 @@ class BehandlingControllerTest() : KontrollerTestRunner() { HttpEntity(testBehandlingMedNull), Void::class.java, ) + + // then assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode) } @@ -387,14 +392,10 @@ class BehandlingControllerTest() : KontrollerTestRunner() { } companion object { - fun createBehandlingRequestTest( - saksnummer: String?, - enhet: String, - roller: Set, - ): CreateBehandlingRequestTest { + fun createBehandlingRequestTest(saksnummer: String?, enhet: String, roller: Set): CreateBehandlingRequestTest { val testBehandling = CreateBehandlingRequestTest( - BehandlingType.FORSKUDD, + Behandlingstype.FORSKUDD, Stønadstype.FORSKUDD, SoknadType.FASTSETTELSE, Date(1), diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt index cfd7fed75..bfb251609 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt @@ -5,8 +5,8 @@ import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.boforhold.BoforholdResponse import no.nav.bidrag.behandling.dto.boforhold.UpdateBoforholdRequest -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.springframework.http.HttpEntity @@ -38,7 +38,7 @@ class BoforholdControllerTest : KontrollerTestRunner() { // 2.1 Prepare husstandsBarn val perioder = setOf(HusstandsBarnPeriodeDto(null, null, null, BoStatusType.IKKE_REGISTRERT_PA_ADRESSE, "offentlig")) - val husstandsBarn = setOf(HusstandsBarnDto(behandling.body!!.id, true, perioder, "ident", null)) + val husstandsBarn = setOf(HusstandsbarnDto(behandling.body!!.id, true, perioder, "ident", null)) // 2.2 val boforholdData = UpdateBoforholdRequest(husstandsBarn, emptySet(), "med i vedtak", "kun i notat") // diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt index 0744a08bc..e1fdd4095 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt @@ -204,12 +204,7 @@ class OpplysningerControllerTest : KontrollerTestRunner() { Assertions.assertEquals("inn1", oppAktivResult2.body!!.data) } - private fun skalOppretteOpplysninger( - behandlingId: Long, - data: String, - aktiv: Boolean, - opplysningerType: OpplysningerType, - ): OpplysningerDto { + private fun skalOppretteOpplysninger(behandlingId: Long, data: String, aktiv: Boolean, opplysningerType: OpplysningerType): OpplysningerDto { val opplysninger = createOpplysninger(behandlingId, data, aktiv, opplysningerType) val opp = @@ -227,12 +222,7 @@ class OpplysningerControllerTest : KontrollerTestRunner() { return body } - private fun createOpplysninger( - behandlingId: Long, - data: String, - aktiv: Boolean, - opplysningerType: OpplysningerType, - ): AddOpplysningerRequest { + private fun createOpplysninger(behandlingId: Long, data: String, aktiv: Boolean, opplysningerType: OpplysningerType): AddOpplysningerRequest { val opplysninger = AddOpplysningerRequest(behandlingId, aktiv, opplysningerType, data, "2025-02-01") return opplysninger diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index f6d2a4ff9..b6f21a45c 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -4,7 +4,7 @@ import StubUtils import com.github.tomakehurst.wiremock.client.WireMock import io.kotest.matchers.shouldBe import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.kafka.VedtakHendelseListener @@ -112,7 +112,7 @@ class VedtakHendelseTest : CommonTestRunner() { saksnummer = SAKSNUMMER, soknadId = 123123L, behandlerEnhet = "4806", - behandlingType = BehandlingType.BIDRAG18AAR, + behandlingType = Behandlingstype.BIDRAG18AAR, engangsbelopType = null, mottatDato = Date(), soknadFra = SøktAvType.BIDRAGSMOTTAKER, @@ -120,11 +120,7 @@ class VedtakHendelseTest : CommonTestRunner() { stonadType = Stønadstype.BIDRAG18AAR, ) - private fun opprettVedtakhendelse( - vedtakId: Int, - behandlingId: Long, - stonadType: Stønadstype = Stønadstype.BIDRAG18AAR, - ): VedtakHendelse { + private fun opprettVedtakhendelse(vedtakId: Int, behandlingId: Long, stonadType: Stønadstype = Stønadstype.BIDRAG18AAR): VedtakHendelse { return VedtakHendelse( type = Vedtakstype.FASTSETTELSE, stønadsendringListe = listOf( 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 b827300a3..842b6d7de 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -5,7 +5,7 @@ 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.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.Rolle @@ -16,7 +16,7 @@ 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.husstandsbarn.HusstandsbarnDto import no.nav.bidrag.behandling.transformers.toDomain import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toSivilstandDomain @@ -61,13 +61,13 @@ class BehandlingServiceTest : TestContainerRunner() { val actualBehandling = createBehandling() assertNotNull(actualBehandling.id) - assertEquals(BehandlingType.FORSKUDD, actualBehandling.behandlingType) + assertEquals(Behandlingstype.FORSKUDD, actualBehandling.behandlingType) assertEquals(3, actualBehandling.roller.size) val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) - assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) assertEquals(3, actualBehandlingFetched.roller.size) assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) } @@ -96,7 +96,7 @@ class BehandlingServiceTest : TestContainerRunner() { val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) - assertEquals(BehandlingType.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) assertEquals(1, actualBehandlingFetched.inntekter.size) assertEquals( BigDecimal.valueOf(555.55), @@ -108,8 +108,8 @@ class BehandlingServiceTest : TestContainerRunner() { fun `skal oppdatere boforhold data`() { val behandling = prepareBehandling() - val NOTAT = "New Notat" - val MED_I_VEDTAK = "med i vedtak" + val notat = "New Notat" + val medIVedtak = "med i vedtak" val createdBehandling = behandlingService.createBehandling(behandling) @@ -118,7 +118,7 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(0, createdBehandling.husstandsBarn.size) assertEquals(0, createdBehandling.sivilstand.size) - val husstandsBarn = setOf(HusstandsBarnDto(null, true, emptySet(), "Manuelt", "ident!")) + val husstandsBarn = setOf(HusstandsbarnDto(null, true, emptySet(), "Manuelt", "ident!")) val sivilstand = setOf( SivilstandDto( @@ -133,24 +133,24 @@ class BehandlingServiceTest : TestContainerRunner() { createdBehandling.id!!, husstandsBarn.toDomain(createdBehandling), sivilstand.toSivilstandDomain(createdBehandling), - NOTAT, - MED_I_VEDTAK, + notat, + medIVedtak, ) val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) assertEquals(1, updatedBehandling.husstandsBarn.size) assertEquals(1, updatedBehandling.sivilstand.size) - assertEquals(NOTAT, updatedBehandling.boforholdBegrunnelseKunINotat) - assertEquals(MED_I_VEDTAK, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat) + assertEquals(notat, updatedBehandling.boforholdBegrunnelseKunINotat) + assertEquals(medIVedtak, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat) } @Test fun `skal oppdatere virkningstidspunkt data`() { val behandling = prepareBehandling() - val NOTAT = "New Notat" - val MED_I_VEDTAK = "med i vedtak" + val notat = "New Notat" + val medIVedtak = "med i vedtak" val createdBehandling = behandlingService.createBehandling(behandling) @@ -161,16 +161,16 @@ class BehandlingServiceTest : TestContainerRunner() { createdBehandling.id!!, ForskuddAarsakType.BF, null, - NOTAT, - MED_I_VEDTAK, + notat, + medIVedtak, ) val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) - assertEquals(NOTAT, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(notat, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat) assertEquals( - MED_I_VEDTAK, + medIVedtak, updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, ) } @@ -201,6 +201,7 @@ class BehandlingServiceTest : TestContainerRunner() { CreateRolleDto( CreateRolleRolleType.BARN, "newident", + null, Date(1), Date(2), ), @@ -216,7 +217,7 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.syncRoller( b.id!!, listOf( - CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true), + CreateRolleDto(CreateRolleRolleType.BARN, "1111", null, Date(1), Date(2), true), ), ) @@ -231,9 +232,9 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.syncRoller( b.id!!, listOf( - CreateRolleDto(CreateRolleRolleType.BARN, "1111", Date(1), Date(2), true), - CreateRolleDto(CreateRolleRolleType.BARN, "111123", Date(1), Date(2)), - CreateRolleDto(CreateRolleRolleType.BARN, "1111234", Date(1), Date(2)), + CreateRolleDto(CreateRolleRolleType.BARN, "1111", null, Date(1), Date(2), true), + CreateRolleDto(CreateRolleRolleType.BARN, "111123", null, Date(1), Date(2)), + CreateRolleDto(CreateRolleRolleType.BARN, "1111234", null, Date(1), Date(2)), ), ) @@ -257,8 +258,8 @@ class BehandlingServiceTest : TestContainerRunner() { fun `skal oppdatere en behandling`() { val behandling = prepareBehandling() - val NOTAT = "New Notat" - val MED_I_VEDTAK = "med i vedtak" + val notat = "New Notat" + val medIVedtak = "med i vedtak" val createdBehandling = behandlingService.createBehandling(behandling) @@ -268,20 +269,20 @@ class BehandlingServiceTest : TestContainerRunner() { val oppdatertBehandling = behandlingService.oppdaterBehandling( createdBehandling.id!!, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, - MED_I_VEDTAK, - NOTAT, + medIVedtak, + notat, + medIVedtak, + notat, + medIVedtak, + notat, ) val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) assertEquals(3, hentBehandlingById.roller.size) - assertEquals(NOTAT, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(notat, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) assertEquals( - MED_I_VEDTAK, + medIVedtak, oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, ) } @@ -451,7 +452,7 @@ class BehandlingServiceTest : TestContainerRunner() { fun prepareBehandling(): Behandling { val behandling = Behandling( - BehandlingType.FORSKUDD, + Behandlingstype.FORSKUDD, SoknadType.FASTSETTELSE, Calendar.getInstance().time, Calendar.getInstance().time, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt index dc0b07e94..a4a9d3695 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt @@ -2,7 +2,7 @@ package no.nav.bidrag.behandling.service import no.nav.bidrag.behandling.TestContainerRunner import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.OpplysningerType import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.domene.enums.Engangsbeløptype @@ -32,7 +32,7 @@ class OpplysningerServiceTest : TestContainerRunner() { val b = behandlingService.createBehandling( Behandling( - BehandlingType.FORSKUDD, + Behandlingstype.FORSKUDD, SoknadType.FASTSETTELSE, Date(1), Date(2), diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index c7d26c112..665c2378f 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -30,10 +30,7 @@ class StubUtils { } } - fun stubResponse( - url: String, - personResponse: R, - ) { + fun stubResponse(url: String, personResponse: R) { try { WireMock.stubFor( WireMock.post(url).willReturn( @@ -47,10 +44,7 @@ class StubUtils { } } - fun stubOpprettForsendelse( - forsendelseId: String = "12312321", - status: HttpStatus = HttpStatus.OK, - ) { + fun stubOpprettForsendelse(forsendelseId: String = "12312321", status: HttpStatus = HttpStatus.OK) { WireMock.stubFor( WireMock.post(WireMock.urlMatching("/forsendelse/api/forsendelse")).willReturn( aClosedJsonResponse() @@ -134,10 +128,7 @@ class StubUtils { ) } - fun stubTilgangskontrollTema( - result: Boolean = true, - status: HttpStatus = HttpStatus.OK, - ) { + fun stubTilgangskontrollTema(result: Boolean = true, status: HttpStatus = HttpStatus.OK) { WireMock.stubFor( WireMock.post(WireMock.urlMatching("/tilgangskontroll/api/tilgang/tema")).willReturn( aClosedJsonResponse() @@ -156,10 +147,7 @@ class StubUtils { verifyContains(verify, *contains) } - fun forsendelseHentetForSak( - saksnummer: String, - antall: Int = -1, - ) { + fun forsendelseHentetForSak(saksnummer: String, antall: Int = -1) { val verify = WireMock.getRequestedFor( WireMock.urlMatching("/forsendelse/api/forsendelse/sak/$saksnummer/forsendelser"), @@ -177,10 +165,7 @@ class StubUtils { ) } - fun forsendelseSlettet( - forsendelseId: String = "(.*)", - antall: Int = -1, - ) { + fun forsendelseSlettet(forsendelseId: String = "(.*)", antall: Int = -1) { val verify = WireMock.postRequestedFor( WireMock.urlMatching("/forsendelse/api/forsendelse/journal/$forsendelseId/avvik"), @@ -210,10 +195,7 @@ class StubUtils { opprettForsendelseKaltAntallGanger(0) } - private fun verifyContains( - verify: RequestPatternBuilder, - vararg contains: String, - ) { + private fun verifyContains(verify: RequestPatternBuilder, vararg contains: String) { Arrays.stream(contains).forEach { verify.withRequestBody(ContainsPattern(it)) } WireMock.verify(verify) } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt index 42c65eb1f..eb84ef8ec 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt @@ -5,7 +5,7 @@ import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BehandlingType +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto @@ -15,31 +15,28 @@ import no.nav.bidrag.domene.enums.SøktAvType import no.nav.bidrag.domene.ident.Personident import java.time.LocalDate import java.time.YearMonth -import java.util.* val SAKSNUMMER = "1233333" val SOKNAD_ID = 12412421414L val ROLLE_BM = ForsendelseRolleDto(Personident("313213213"), type = Rolletype.BIDRAGSMOTTAKER) val ROLLE_BA_1 = ForsendelseRolleDto(Personident("1344124"), type = Rolletype.BARN) -val ROLLE_BA_2 = ForsendelseRolleDto(Personident("12344424214"), type = Rolletype.BARN) val ROLLE_BP = ForsendelseRolleDto(Personident("213244124"), type = Rolletype.BIDRAGSPLIKTIG) -fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = - ForsendelseResponsTo( - forsendelseId = forsendelseId, - saksnummer = SAKSNUMMER, - behandlingInfo = - BehandlingInfoResponseDto( - soknadId = SOKNAD_ID.toString(), - erFattet = false, - ), - forsendelseType = ForsendelseTypeTo.UTGÅENDE, - status = ForsendelseStatusTo.UNDER_OPPRETTELSE, - ) +fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = ForsendelseResponsTo( + forsendelseId = forsendelseId, + saksnummer = SAKSNUMMER, + behandlingInfo = + BehandlingInfoResponseDto( + soknadId = SOKNAD_ID.toString(), + erFattet = false, + ), + forsendelseType = ForsendelseTypeTo.UTGÅENDE, + status = ForsendelseStatusTo.UNDER_OPPRETTELSE, +) fun oppretteBehandling(): Behandling { return Behandling( - BehandlingType.FORSKUDD, + Behandlingstype.FORSKUDD, SoknadType.FASTSETTELSE, datoFom = YearMonth.now().atDay(1).minusMonths(16).toDate(), datoTom = YearMonth.now().plusMonths(10).atEndOfMonth().toDate(), diff --git a/src/test/resources/application-local.yaml b/src/test/resources/application-local.yaml index 7de36b82b..496aa823e 100644 --- a/src/test/resources/application-local.yaml +++ b/src/test/resources/application-local.yaml @@ -12,10 +12,8 @@ AZURE_APP_CLIENT_SECRET: unset server.port: 8990 NAIS_APP_NAME: bidrag-behandling DB_HOST: localhost -DB_PORT: 5445 +DB_PORT: 5432 DB_DATABASE: bidrag-behandling -DB_USERNAME: cloudsqliamuser -DB_PASSWORD: admin spring: kafka: From 99af4b0bf01bd078c357091381a725f083a86f10 Mon Sep 17 00:00:00 2001 From: s148719 Date: Tue, 14 Nov 2023 08:39:19 +0100 Subject: [PATCH 06/33] =?UTF-8?q?Legge=20til=20navn=20p=C3=A5=20roller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 0 README.md | 16 + .../no/nav/bidrag/behandling/Exceptions.kt | 14 +- .../aop/DefaultRestControllerAdvice.kt | 32 +- .../aop/HendelseCorrelationAspect.kt | 7 +- .../behandling/beregning/ForskuddBeregning.kt | 269 +++++++------ .../model/BehandlingBeregningModel.kt | 174 ++++---- .../bidrag/behandling/config/CacheConfig.kt | 5 +- .../consumer/BidragPersonConsumer.kt | 1 - .../BidragTilgangskontrollConsumer.kt | 5 +- .../BehandlingBeregnForskuddController.kt | 39 +- .../controller/BehandlingController.kt | 34 +- .../controller/BoforholdController.kt | 9 +- .../behandling/controller/ExceptionHandler.kt | 6 +- .../controller/ForsendelseController.kt | 5 +- .../controller/InntekterController.kt | 9 +- .../controller/OpplysningerController.kt | 5 +- .../VirkningsTidspunktController.kt | 4 +- .../behandling/database/datamodell/Rolle.kt | 1 - .../repository/BehandlingRepository.kt | 5 +- .../repository/OpplysningerRepository.kt | 5 +- .../kafka/VedtakHendelseListener.kt | 26 +- .../behandling/service/BehandlingService.kt | 89 +++-- .../behandling/service/ForsendelseService.kt | 54 ++- .../behandling/service/OpplysningerService.kt | 12 +- .../behandling/transformers/DtoExtensions.kt | 348 ++++++++-------- .../BehandlingBeregnForskuddControllerTest.kt | 1 - .../controller/BehandlingControllerTest.kt | 9 +- .../controller/ForsendelseControllerTest.kt | 81 ++-- .../controller/InntekterControllerTest.kt | 153 +++---- .../controller/OpplysningerControllerTest.kt | 14 +- .../behandling/hendelse/VedtakHendelseTest.kt | 98 ++--- .../service/BehandlingServiceTest.kt | 28 +- .../service/ForsendelseServiceTest.kt | 373 ++++++++++-------- .../service/OpplysningerServiceTest.kt | 15 +- .../nav/bidrag/behandling/utils/StubUtils.kt | 59 ++- .../nav/bidrag/behandling/utils/Testdata.kt | 70 ++-- 37 files changed, 1175 insertions(+), 900 deletions(-) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..e69de29bb diff --git a/README.md b/README.md index 2b2ef0a92..e15cf6d5a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,22 @@ Et lokalt Dockermiljø må være tilgjengelig for lokal kjøring. Forebredelsess > docker-compose build \ > docker-compose up +#### Bygge applikasjonen + +###### Maven wrapper +Maven wrapper sikrer at alle Maven bygg-forutsetninger er til stede. For å benytte Maven wrapper kjør +> mvn wrapper:wrapper + +deretter kan Maven-kommandoer som clean install kjøres med +> ./mvnw clean install + +###### Ktlint med Maven wrapper +verifisere +> ./mvnw antrun:run@ktlint + +formattere +> ./mvnw antrun:run@ktlint-format + #### Starte applikasjon lokalt Profil: local (angis i program arguments) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt index 70c3b1e07..5f1a7ef78 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt @@ -8,10 +8,14 @@ fun behandlingNotFoundException(behandlingId: Long): Nothing = class KunneIkkeLeseMeldingFraHendelse(melding: String?, throwable: Throwable) : RuntimeException(melding, throwable) -fun fantIkkeSak(saksnummer: String): Nothing = throw HttpClientErrorException( - HttpStatus.BAD_REQUEST, - "Sak med saksnummer $saksnummer finnes ikke", -) +fun fantIkkeSak(saksnummer: String): Nothing = + throw HttpClientErrorException( + HttpStatus.BAD_REQUEST, + "Sak med saksnummer $saksnummer finnes ikke", + ) fun fantIkkeFødselsdatoTilSøknadsbarn(behandlingsid: Long): Nothing = - throw HttpClientErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "Fant ikke fødselsdato til søknadsbarn i behandling med id $behandlingsid") + throw HttpClientErrorException( + HttpStatus.INTERNAL_SERVER_ERROR, + "Fant ikke fødselsdato til søknadsbarn i behandling med id $behandlingsid", + ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt index 4dbf44374..ae8de8d8f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/DefaultRestControllerAdvice.kt @@ -30,13 +30,14 @@ class DefaultRestControllerAdvice { ) fun handleInvalidValueExceptions(exception: Exception): ResponseEntity<*> { val cause = exception.cause - val valideringsFeil = if (cause is MissingKotlinParameterException) { - createMissingKotlinParameterViolation( - cause, - ) - } else { - null - } + val valideringsFeil = + if (cause is MissingKotlinParameterException) { + createMissingKotlinParameterViolation( + cause, + ) + } else { + null + } LOGGER.warn( "Forespørselen inneholder ugyldig verdi: ${valideringsFeil ?: "ukjent feil"}", exception, @@ -71,7 +72,9 @@ class DefaultRestControllerAdvice { @ExceptionHandler(Exception::class) fun handleOtherExceptions(exception: Exception): ResponseEntity<*> { LOGGER.warn("Det skjedde en ukjent feil", exception) - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).header(HttpHeaders.WARNING, "Det skjedde en ukjent feil: ${exception.message}") + return ResponseEntity.status( + HttpStatus.INTERNAL_SERVER_ERROR, + ).header(HttpHeaders.WARNING, "Det skjedde en ukjent feil: ${exception.message}") .build() } @@ -79,15 +82,18 @@ class DefaultRestControllerAdvice { @ExceptionHandler(JwtTokenUnauthorizedException::class) fun handleUnauthorizedException(exception: JwtTokenUnauthorizedException): ResponseEntity<*> { LOGGER.warn("Ugyldig eller manglende sikkerhetstoken", exception) - return ResponseEntity.status(HttpStatus.UNAUTHORIZED).header(HttpHeaders.WARNING, "Ugyldig eller manglende sikkerhetstoken").build() + return ResponseEntity.status( + HttpStatus.UNAUTHORIZED, + ).header(HttpHeaders.WARNING, "Ugyldig eller manglende sikkerhetstoken").build() } private fun createMissingKotlinParameterViolation(ex: MissingKotlinParameterException): String { val errorFieldRegex = Regex("\\.([^.]*)\\[\\\"(.*)\"\\]\$") - val paths = ex.path.map { errorFieldRegex.find(it.description)!! }.map { - val (objectName, field) = it.destructured - "$objectName.$field" - } + val paths = + ex.path.map { errorFieldRegex.find(it.description)!! }.map { + val (objectName, field) = it.destructured + "$objectName.$field" + } return "${paths.joinToString("->")} må fylles ut" } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt index 84e616ae2..d9af0206c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/HendelseCorrelationAspect.kt @@ -12,7 +12,7 @@ import org.aspectj.lang.annotation.Aspect import org.aspectj.lang.annotation.Before import org.slf4j.MDC import org.springframework.stereotype.Component -import java.util.* +import java.util.UUID private val log = KotlinLogging.logger {} @@ -20,7 +20,10 @@ private val log = KotlinLogging.logger {} @Aspect class HendelseCorrelationAspect(private val objectMapper: ObjectMapper) { @Before(value = "execution(* no.nav.bidrag.behandling.kafka.VedtakHendelseListener.prossesserVedtakHendelse(..)) && args(hendelse)") - fun leggSporingFraVedtakHendelseTilMDC(joinPoint: JoinPoint, hendelse: ConsumerRecord) { + fun leggSporingFraVedtakHendelseTilMDC( + joinPoint: JoinPoint, + hendelse: ConsumerRecord, + ) { hentSporingFraHendelse(hendelse)?.let { val correlationId = CorrelationId.existing(it) MDC.put(CORRELATION_ID_HEADER, correlationId.get()) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt index 6e2a5b369..2f25d942c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -28,43 +28,54 @@ import java.time.LocalDate @Service class ForskuddBeregning { - fun lagePersonobjektForSøknadsbarn(soknadBarn: Rolle, fødselsdato: String): Grunnlag = Grunnlag( - referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, - type = Grunnlagstype.SOKNADSBARN_INFO, - innhold = POJONode( - SoknadsBarnNode( - ident = soknadBarn.ident ?: "", - navn = soknadBarn.navn ?: "", - fodselsdato = fødselsdato, - ), - ), - ) - - // TODO BostatusKode - private fun boStatusTypeToBoStatusKode(boStatusType: BoStatusType): BostatusKode = if (boStatusType == BoStatusType.REGISTRERT_PA_ADRESSE - ) { - BostatusKode.BOR_MED_FORELDRE - } else { - BostatusKode.BOR_IKKE_MED_FORELDRE - } - - private fun prepareBostatus(husstandsBarnPerioder: List, søknadsbarn: Grunnlag): List = husstandsBarnPerioder - .filter { søknadsbarn.referanse == it.referanseTilBarn } - .map { - Grunnlag( - referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), - type = Grunnlagstype.BOSTATUS, - innhold = POJONode( - BostatusNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "SOKNADSBARN", - bostatusKode = it.boStatus?.let { it1 -> boStatusTypeToBoStatusKode(it1).name }, + fun lagePersonobjektForSøknadsbarn( + soknadBarn: Rolle, + fødselsdato: String, + ): Grunnlag = + Grunnlag( + referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, + type = Grunnlagstype.SOKNADSBARN_INFO, + innhold = + POJONode( + SoknadsBarnNode( + ident = soknadBarn.ident ?: "", + navn = soknadBarn.navn ?: "", + fodselsdato = fødselsdato, ), ), - ) + ) + + // TODO BostatusKode + private fun boStatusTypeToBoStatusKode(boStatusType: BoStatusType): BostatusKode = + if (boStatusType == BoStatusType.REGISTRERT_PA_ADRESSE + ) { + BostatusKode.BOR_MED_FORELDRE + } else { + BostatusKode.BOR_IKKE_MED_FORELDRE } + private fun prepareBostatus( + husstandsBarnPerioder: List, + søknadsbarn: Grunnlag, + ): List = + husstandsBarnPerioder + .filter { søknadsbarn.referanse == it.referanseTilBarn } + .map { + Grunnlag( + referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), + type = Grunnlagstype.BOSTATUS, + innhold = + POJONode( + BostatusNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = "SOKNADSBARN", + bostatusKode = it.boStatus?.let { it1 -> boStatusTypeToBoStatusKode(it1).name }, + ), + ), + ) + } + private fun prepareBarnIHusstand(behandlingBeregningModel: BehandlingBeregningModel): List = splitPeriods(behandlingBeregningModel.husstandsBarnPerioder) .map { @@ -79,79 +90,89 @@ class ForskuddBeregning { inntekter: List, barnetillegg: List, utvidetbarnetrygd: List, - ): List = inntekter - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", - type = Grunnlagstype.INNTEKT, - innhold = POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = it.rolle, - inntektType = it.inntektType, - belop = it.belop, - ), - ), - ) - } + barnetillegg - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), - type = Grunnlagstype.INNTEKT, - innhold = POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "BIDRAGSMOTTAKER", - inntektType = "EKSTRA_SMAABARNSTILLEGG", - belop = it.belop, - ), - ), - ) - } + utvidetbarnetrygd - .map { + ): List = + inntekter + .map { + Grunnlag( + referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", + type = Grunnlagstype.INNTEKT, + innhold = + POJONode( + InntektNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = it.rolle, + inntektType = it.inntektType, + belop = it.belop, + ), + ), + ) + } + + barnetillegg + .map { + Grunnlag( + referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), + type = Grunnlagstype.INNTEKT, + innhold = + POJONode( + InntektNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = "BIDRAGSMOTTAKER", + inntektType = "EKSTRA_SMAABARNSTILLEGG", + belop = it.belop, + ), + ), + ) + } + + utvidetbarnetrygd + .map { + Grunnlag( + referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), + type = Grunnlagstype.INNTEKT, + innhold = + POJONode( + InntektNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + rolle = "BIDRAGSMOTTAKER", + inntektType = "UTVIDET_BARNETRYGD", + belop = it.belop, + ), + ), + ) + } + + // TODO SivilstandKode + private fun sivilstandTypeToSivilstandKode(sivilstandType: SivilstandType): SivilstandKode = + if (sivilstandType == SivilstandType.GIFT) { + SivilstandKode.GIFT + } else { + SivilstandKode.ENSLIG + } + + private fun prepareSivilstand(sivilstand: List): List = + sivilstand.map { Grunnlag( - referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), - type = Grunnlagstype.INNTEKT, - innhold = POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "BIDRAGSMOTTAKER", - inntektType = "UTVIDET_BARNETRYGD", - belop = it.belop, + referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), + type = Grunnlagstype.SIVILSTAND, + innhold = + POJONode( + SivilstandNode( + datoFom = it.datoFom.toNoString(), + datoTil = it.datoTom?.toNoString(), + sivilstandKode = sivilstandTypeToSivilstandKode(it.sivilstandType).name, + ), ), - ), ) } - // TODO SivilstandKode - private fun sivilstandTypeToSivilstandKode(sivilstandType: SivilstandType): SivilstandKode = if (sivilstandType == SivilstandType.GIFT) { - SivilstandKode.GIFT - } else { - SivilstandKode.ENSLIG - } - - private fun prepareSivilstand(sivilstand: List): List = sivilstand.map { - Grunnlag( - referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), - type = Grunnlagstype.SIVILSTAND, - innhold = POJONode( - SivilstandNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - sivilstandKode = sivilstandTypeToSivilstandKode(it.sivilstandType).name, - ), - ), - ) - } - fun splitPeriods(husstandsBarnPerioder: List): List { if (husstandsBarnPerioder.isEmpty()) return emptyList() - val timesMap = HashMap() - .toSortedMap() + val timesMap = + HashMap() + .toSortedMap() husstandsBarnPerioder.forEach { val startDate = it.datoFom @@ -195,30 +216,36 @@ class ForskuddBeregning { return r.filter { it.antall != 0.0 } } - fun toBehandlingBeregningModel(behandling: Behandling): Either, BehandlingBeregningModel> = BehandlingBeregningModel.invoke( - behandlingId = behandling.id, - virkningsDato = behandling.virkningsDato, - datoTom = behandling.datoTom, - sivilstand = behandling.sivilstand, - inntekter = behandling.inntekter.filter { it.taMed }.toSet(), - barnetillegg = behandling.barnetillegg, - utvidetbarnetrygd = behandling.utvidetbarnetrygd, - husstandsBarn = behandling.husstandsBarn, - roller = behandling.roller, - ) + fun toBehandlingBeregningModel(behandling: Behandling): Either, BehandlingBeregningModel> = + BehandlingBeregningModel.invoke( + behandlingId = behandling.id, + virkningsDato = behandling.virkningsDato, + datoTom = behandling.datoTom, + sivilstand = behandling.sivilstand, + inntekter = behandling.inntekter.filter { it.taMed }.toSet(), + barnetillegg = behandling.barnetillegg, + utvidetbarnetrygd = behandling.utvidetbarnetrygd, + husstandsBarn = behandling.husstandsBarn, + roller = behandling.roller, + ) - fun toPayload(b: BehandlingBeregningModel, søknadsbarn: Grunnlag): BeregnGrunnlag = BeregnGrunnlag( - periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), - grunnlagListe = listOf(søknadsbarn) + - prepareBarnIHusstand(b) + - prepareBostatus(b.husstandsBarnPerioder, søknadsbarn) + - prepareInntekterForBeregning( - b.inntekter, - b.barnetillegg, - b.utvidetbarnetrygd, - ) + - prepareSivilstand(b.sivilstand), - ) + fun toPayload( + b: BehandlingBeregningModel, + søknadsbarn: Grunnlag, + ): BeregnGrunnlag = + BeregnGrunnlag( + periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), + grunnlagListe = + listOf(søknadsbarn) + + prepareBarnIHusstand(b) + + prepareBostatus(b.husstandsBarnPerioder, søknadsbarn) + + prepareInntekterForBeregning( + b.inntekter, + b.barnetillegg, + b.utvidetbarnetrygd, + ) + + prepareSivilstand(b.sivilstand), + ) } data class PointInTimeInfo( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt index 403101a17..73a4cbb35 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt @@ -17,7 +17,7 @@ import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.domene.enums.Rolletype import java.math.BigDecimal import java.time.LocalDate -import java.util.* +import java.util.Date fun Set.rolleType(ident: String): String { val rolleType = this.find { it.ident == ident }?.rolleType @@ -49,90 +49,96 @@ data class BehandlingBeregningModel private constructor( utvidetbarnetrygd: Set, husstandsBarn: Set, roller: Set, - ): Either, BehandlingBeregningModel> = either { - zipOrAccumulate( - { - ensure(behandlingId != null) { raise("Behandling id kan ikke være null") } - behandlingId - }, - { - ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") } - virkningsDato.toLocalDate() - }, - { - ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") } - datoTom.toLocalDate() - }, - { - mapOrAccumulate(sivilstand) { - SivilstandModel( - it.datoFom?.toLocalDate() - ?: raise("Sivilstand Dato Fra må fylles ut"), - it.datoTom?.toLocalDate(), - it.sivilstandType, - ) - } - }, - { - mapOrAccumulate(inntekter.filter { it.taMed }) { - InntektModel( - inntektType = it.inntektType - ?: raise("InntektType kan ikke være null"), - belop = it.belop, - rolle = roller.rolleType(it.ident), - datoFom = it.datoFom?.toLocalDate() - ?: raise("Inntekts Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - ) - } - }, - { - mapOrAccumulate(barnetillegg) { - BarnetilleggModel( - datoFom = it.datoFom?.toLocalDate() - ?: raise("Barnetillegg Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - belop = it.barnetillegg, - ) - } - }, - { - mapOrAccumulate(utvidetbarnetrygd) { - UtvidetbarnetrygdModel( - datoFom = it.datoFom?.toLocalDate() - ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - belop = it.belop, - ) - } - }, - { - mapOrAccumulate( - husstandsBarn.filter { it.medISaken } - .flatMap { it.perioder }, - ) { - HusstandsBarnPeriodeModel( - datoFom = it.datoFom?.toLocalDate() - ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - referanseTilBarn = it.husstandsBarn.ident, - boStatus = it.boStatus, - ) - } - }, - ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder -> - BehandlingBeregningModel( - behandlingId, - virkningsDato, - datoTom, - sivilstand, - inntekter, - barnetillegg, - utvidetbarnetrygd, - husstandsBarnPerioder, - ) + ): Either, BehandlingBeregningModel> = + either { + zipOrAccumulate( + { + ensure(behandlingId != null) { raise("Behandling id kan ikke være null") } + behandlingId + }, + { + ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") } + virkningsDato.toLocalDate() + }, + { + ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") } + datoTom.toLocalDate() + }, + { + mapOrAccumulate(sivilstand) { + SivilstandModel( + it.datoFom?.toLocalDate() + ?: raise("Sivilstand Dato Fra må fylles ut"), + it.datoTom?.toLocalDate(), + it.sivilstandType, + ) + } + }, + { + mapOrAccumulate(inntekter.filter { it.taMed }) { + InntektModel( + inntektType = + it.inntektType + ?: raise("InntektType kan ikke være null"), + belop = it.belop, + rolle = roller.rolleType(it.ident), + datoFom = + it.datoFom?.toLocalDate() + ?: raise("Inntekts Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + ) + } + }, + { + mapOrAccumulate(barnetillegg) { + BarnetilleggModel( + datoFom = + it.datoFom?.toLocalDate() + ?: raise("Barnetillegg Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + belop = it.barnetillegg, + ) + } + }, + { + mapOrAccumulate(utvidetbarnetrygd) { + UtvidetbarnetrygdModel( + datoFom = + it.datoFom?.toLocalDate() + ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + belop = it.belop, + ) + } + }, + { + mapOrAccumulate( + husstandsBarn.filter { it.medISaken } + .flatMap { it.perioder }, + ) { + HusstandsBarnPeriodeModel( + datoFom = + it.datoFom?.toLocalDate() + ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"), + datoTom = it.datoTom?.toLocalDate(), + referanseTilBarn = it.husstandsBarn.ident, + boStatus = it.boStatus, + ) + } + }, + ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder -> + BehandlingBeregningModel( + behandlingId, + virkningsDato, + datoTom, + sivilstand, + inntekter, + barnetillegg, + utvidetbarnetrygd, + husstandsBarnPerioder, + ) + } } - } } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt b/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt index af7a31bc5..243458472 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/config/CacheConfig.kt @@ -27,7 +27,10 @@ class CacheConfig { @Bean fun cacheManager(): CacheManager { val caffeineCacheManager = CaffeineCacheManager() - caffeineCacheManager.registerCustomCache(PERSON_CACHE, Caffeine.newBuilder().expireAfter(InvaliderCacheFørStartenAvArbeidsdag()).build()) + caffeineCacheManager.registerCustomCache( + PERSON_CACHE, + Caffeine.newBuilder().expireAfter(InvaliderCacheFørStartenAvArbeidsdag()).build(), + ) caffeineCacheManager.registerCustomCache(TILGANG_TEMA_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build()) caffeineCacheManager.registerCustomCache(TILGANG_PERSON_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build()) caffeineCacheManager.registerCustomCache(TILGANG_SAK_CACHE, Caffeine.newBuilder().expireAfterWrite(1, TimeUnit.HOURS).build()) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt index 073132be6..cf9da69b2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragPersonConsumer.kt @@ -17,7 +17,6 @@ class BidragPersonConsumer( @Value("\${BIDRAG_PERSON_URL}") bidragPersonUrl: URI, @Qualifier("azure") restTemplate: RestTemplate, ) : AbstractRestClient(restTemplate, "bidrag-person") { - private val hentPersonUri = UriComponentsBuilder.fromUri(bidragPersonUrl).pathSegment("informasjon").build().toUri() diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt index b3b5f1552..21a40e56b 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragTilgangskontrollConsumer.kt @@ -22,8 +22,9 @@ class BidragTilgangskontrollConsumer( @Value("\${BIDRAG_TILGANGSKONTROLL_URL}") val url: URI, @Qualifier("azure") private val restTemplate: RestOperations, ) : AbstractRestClient(restTemplate, "bidrag-tilgangskontroll") { - private fun createUri(path: String?) = UriComponentsBuilder.fromUri(url) - .path(path ?: "").build().toUri() + private fun createUri(path: String?) = + UriComponentsBuilder.fromUri(url) + .path(path ?: "").build().toUri() // TODO: Bruk dette for å sjekke om saksbehandler har tilgang til behandling (sak) @Retryable(value = [Exception::class], maxAttempts = 3, backoff = Backoff(delay = 200, maxDelay = 1000, multiplier = 2.0)) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 115542c87..24aeb912d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -28,11 +28,15 @@ class BehandlingBeregnForskuddController( private val forskuddBeregning: ForskuddBeregning, private val bidragPersonConsumer: BidragPersonConsumer, ) { - private fun isPeriodOneWithinPeriodTwo(datoFom1: LocalDate?, datoTom1: LocalDate?, datoFom2: LocalDate, datoTom2: LocalDate?) = - (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && ( - (datoTom2 == null && datoTom1 == null) || - (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2))) - ) + private fun isPeriodOneWithinPeriodTwo( + datoFom1: LocalDate?, + datoTom1: LocalDate?, + datoFom2: LocalDate, + datoTom2: LocalDate?, + ) = (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && ( + (datoTom2 == null && datoTom1 == null) || + (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2))) + ) @Suppress("unused") @PostMapping("/behandling/{behandlingId}/beregn") @@ -40,7 +44,9 @@ class BehandlingBeregnForskuddController( description = "Beregn forskudd", security = [SecurityRequirement(name = "bearer-key")], ) - fun beregnForskudd(@PathVariable behandlingId: Long): ForskuddBeregningRespons { + fun beregnForskudd( + @PathVariable behandlingId: Long, + ): ForskuddBeregningRespons { val behandling = behandlingService.hentBehandlingById(behandlingId) val result = either { @@ -49,18 +55,20 @@ class BehandlingBeregnForskuddController( behandling .getSøknadsBarn() .mapOrAccumulate { - val fødselsdatoSøknadsbarn = if (it.fodtDato == null && it.ident != null) { - bidragPersonConsumer.hentPerson(it.ident).fødselsdato - } else { - it.fodtDato?.toLocalDate()?.toNoString() ?: null - } + val fødselsdatoSøknadsbarn = + if (it.fodtDato == null && it.ident != null) { + bidragPersonConsumer.hentPerson(it.ident).fødselsdato + } else { + it.fodtDato?.toLocalDate()?.toNoString() ?: null + } // Avbryter prosesering dersom fødselsdato til søknadsbarn er ukjent if (fødselsdatoSøknadsbarn == null) { fantIkkeFødselsdatoTilSøknadsbarn(behandlingId) } - var søknadsbarn = forskuddBeregning.lagePersonobjektForSøknadsbarn(it, fødselsdatoSøknadsbarn) + var søknadsbarn = + forskuddBeregning.lagePersonobjektForSøknadsbarn(it, fødselsdatoSøknadsbarn) val payload = forskuddBeregning.toPayload(behandlingModel, søknadsbarn) @@ -71,7 +79,12 @@ class BehandlingBeregnForskuddController( beregnetForskuddPeriodeListe.forEach { r -> r.sivilstandType = behandlingModel.sivilstand.find { sivilstand -> - isPeriodOneWithinPeriodTwo(r.periode.datoFom, r.periode.datoTil, sivilstand.datoFom, sivilstand.datoTom) + isPeriodOneWithinPeriodTwo( + r.periode.datoFom, + r.periode.datoTil, + sivilstand.datoFom, + sivilstand.datoTom, + ) }?.sivilstandType } ForskuddBeregningPerBarn( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt index 6e073c223..239b99195 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt @@ -10,6 +10,8 @@ import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.dto.behandling.BehandlingDto import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingRequest import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse +import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto +import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.behandling.RolleDto import no.nav.bidrag.behandling.dto.behandling.SyncRollerRequest import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest @@ -51,6 +53,8 @@ class BehandlingController(private val behandlingService: BehandlingService) { @RequestBody(required = true) createBehandling: CreateBehandlingRequest, ): CreateBehandlingResponse { + validereRollerBarn(createBehandling.roller) + val behandling = Behandling( createBehandling.behandlingType, @@ -91,7 +95,10 @@ class BehandlingController(private val behandlingService: BehandlingService) { description = "Oppdatere behandling", security = [SecurityRequirement(name = "bearer-key")], ) - fun updateBehandling(@PathVariable behandlingId: Long, @Valid @RequestBody(required = true) request: UpdateBehandlingRequest) { + fun updateBehandling( + @PathVariable behandlingId: Long, + @Valid @RequestBody(required = true) request: UpdateBehandlingRequest, + ) { behandlingService.updateBehandling(behandlingId, request.grunnlagspakkeId) } @@ -101,8 +108,10 @@ class BehandlingController(private val behandlingService: BehandlingService) { description = "Sync fra behandling", security = [SecurityRequirement(name = "bearer-key")], ) - fun syncRoller(@PathVariable behandlingId: Long, @Valid @RequestBody(required = true) request: SyncRollerRequest) = - behandlingService.syncRoller(behandlingId, request.roller) + fun syncRoller( + @PathVariable behandlingId: Long, + @Valid @RequestBody(required = true) request: SyncRollerRequest, + ) = behandlingService.syncRoller(behandlingId, request.roller) @Suppress("unused") @PutMapping("/behandling/{behandlingId}/vedtak/{vedtakId}") @@ -121,7 +130,10 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun oppdaterVedtakId(@PathVariable behandlingId: Long, @PathVariable vedtakId: Long) { + fun oppdaterVedtakId( + @PathVariable behandlingId: Long, + @PathVariable vedtakId: Long, + ) { behandlingService.oppdaterVedtakId(behandlingId, vedtakId) } @@ -142,7 +154,9 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun hentBehandling(@PathVariable behandlingId: Long): BehandlingDto { + fun hentBehandling( + @PathVariable behandlingId: Long, + ): BehandlingDto { return findBehandlingById(behandlingId) } @@ -151,7 +165,10 @@ class BehandlingController(private val behandlingService: BehandlingService) { return behandlingDto(behandlingId, behandling) } - private fun behandlingDto(behandlingId: Long, behandling: Behandling) = BehandlingDto( + private fun behandlingDto( + behandlingId: Long, + behandling: Behandling, + ) = BehandlingDto( behandlingId, behandling.behandlingType, behandling.soknadType, @@ -200,4 +217,9 @@ class BehandlingController(private val behandlingService: BehandlingService) { fun hentBehandlinger(): List { return behandlingService.hentBehandlinger().map { behandlingDto(it.id!!, it) } } + + private fun validereRollerBarn(roller: Set) { + roller.filter { r -> r.rolleType == CreateRolleRolleType.BARN && (r.ident == null || r.ident.isBlank()) } + .filter { r -> r.navn == null || r.navn.isBlank() }.size == 0 + } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt index 5e08e9b31..64ad5f27f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt @@ -22,7 +22,10 @@ class BoforholdController(private val behandlingService: BehandlingService) { description = "Oppdatere boforhold data", security = [SecurityRequirement(name = "bearer-key")], ) - fun oppdatereBoforhold(@PathVariable behandlingId: Long, @RequestBody updateBoforholdRequest: UpdateBoforholdRequest): BoforholdResponse { + fun oppdatereBoforhold( + @PathVariable behandlingId: Long, + @RequestBody updateBoforholdRequest: UpdateBoforholdRequest, + ): BoforholdResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) behandlingService.updateBoforhold( @@ -49,7 +52,9 @@ class BoforholdController(private val behandlingService: BehandlingService) { description = "Hente boforhold data", security = [SecurityRequirement(name = "bearer-key")], ) - fun hentBoforhold(@PathVariable behandlingId: Long): BoforholdResponse { + fun hentBoforhold( + @PathVariable behandlingId: Long, + ): BoforholdResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) return BoforholdResponse( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt index f6e13813e..b69e1bd8d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt @@ -91,7 +91,11 @@ class ExceptionHandler { val message: String, val fieldErrors: MutableList = mutableListOf(), ) { - fun addFieldError(objectName: String, field: String, message: String) { + fun addFieldError( + objectName: String, + field: String, + message: String, + ) { val error = CustomFieldError(objectName, field, message) fieldErrors.add(error) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt index 6aa0b11de..4674dc89d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt @@ -13,8 +13,9 @@ class ForsendelseController(private val forsendelseService: ForsendelseService) @Suppress("unused") @PostMapping("/forsendelse/init") @Operation( - description = "Oppretter forsendelse for behandling eller vedtak. Skal bare benyttes hvis vedtakId eller behandlingId mangler for " + - "behandling (Søknad som behandles gjennom Bisys)", + description = + "Oppretter forsendelse for behandling eller vedtak. Skal bare benyttes hvis vedtakId eller behandlingId mangler for " + + "behandling (Søknad som behandles gjennom Bisys)", security = [SecurityRequirement(name = "bearer-key")], ) fun opprettForsendelse( 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 73e686a4e..5829990c6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -37,7 +37,10 @@ class InntekterController(private val behandlingService: BehandlingService) { ), ], ) - fun oppdaterInntekter(@PathVariable behandlingId: Long, @RequestBody request: UpdateInntekterRequest): InntekterResponse { + fun oppdaterInntekter( + @PathVariable behandlingId: Long, + @RequestBody request: UpdateInntekterRequest, + ): InntekterResponse { var behandling = behandlingService.hentBehandlingById(behandlingId) behandlingService.oppdaterInntekter( @@ -77,7 +80,9 @@ class InntekterController(private val behandlingService: BehandlingService) { ), ], ) - fun hentInntekter(@PathVariable behandlingId: Long): InntekterResponse { + fun hentInntekter( + @PathVariable behandlingId: Long, + ): InntekterResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) return InntekterResponse( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt index 839982bca..5ce4aea95 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt @@ -61,7 +61,10 @@ class OpplysningerController(val opplysningerService: OpplysningerService) { ), ], ) - fun hentAktiv(@PathVariable behandlingId: Long, @PathVariable opplysningerType: OpplysningerType): OpplysningerDto { + fun hentAktiv( + @PathVariable behandlingId: Long, + @PathVariable opplysningerType: OpplysningerType, + ): OpplysningerDto { return opplysningerService.hentSistAktiv( behandlingId, opplysningerType, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt index aca7b266c..b2434a38e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt @@ -72,7 +72,9 @@ class VirkningsTidspunktController(private val behandlingService: BehandlingServ ), ], ) - fun hentVirkningsTidspunkt(@PathVariable behandlingId: Long): VirkningsTidspunktResponse { + fun hentVirkningsTidspunkt( + @PathVariable behandlingId: Long, + ): VirkningsTidspunktResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) return VirkningsTidspunktResponse( behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt index 75f890e65..0966bb535 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt @@ -31,5 +31,4 @@ class Rolle( val id: Long? = null, val navn: String? = null, val deleted: Boolean = false, - ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt index 8af1d329a..fea2d101e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt @@ -39,5 +39,8 @@ interface BehandlingRepository : CrudRepository { "b.vedtakId = :vedtakId " + "where b.id = :behandlingId", ) - fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) + fun oppdaterVedtakId( + behandlingId: Long, + vedtakId: Long, + ) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt index b09977c53..9d5910ee4 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/OpplysningerRepository.kt @@ -6,5 +6,8 @@ import org.springframework.data.repository.CrudRepository import java.util.Optional interface OpplysningerRepository : CrudRepository { - fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(behandlingId: Long, opplysningerType: OpplysningerType): Optional + fun findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc( + behandlingId: Long, + opplysningerType: OpplysningerType, + ): Optional } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt index 2b6deddfc..f0688ff31 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt @@ -32,7 +32,8 @@ class VedtakHendelseListener( if (!vedtak.erFattetFraBidragBehandling()) return val behandling = behandlingService.hentBehandlingById(vedtak.behandlingId!!) log.info { - "Mottok hendelse for vedtak ${vedtak.id} med type ${vedtak.type}. Lagrer vedtakId på behandling og oppretter forsendelser for vedtaket" + "Mottok hendelse for vedtak ${vedtak.id} med type ${vedtak.type}. Lagrer vedtakId på behandling og " + + "oppretter forsendelser for vedtaket" } behandlingService.oppdaterVedtakId( @@ -42,21 +43,24 @@ class VedtakHendelseListener( opprettForsendelse(vedtak, behandling) } - private fun opprettForsendelse(vedtak: VedtakHendelse, behandling: Behandling) { + private fun opprettForsendelse( + vedtak: VedtakHendelse, + behandling: Behandling, + ) { forsendelseService.slettEllerOpprettForsendelse( InitalizeForsendelseRequest( saksnummer = vedtak.saksnummer, enhet = vedtak.enhetsnummer.verdi, behandlingInfo = - BehandlingInfoDto( - soknadId = vedtak.soknadId ?: behandling.soknadId, - vedtakId = vedtak.id.toLong(), - soknadFra = behandling.soknadFra, - stonadType = vedtak.stonadType, - engangsBelopType = vedtak.engangsbelopType, - erFattetBeregnet = true, - vedtakType = vedtak.type, - ), + BehandlingInfoDto( + soknadId = vedtak.soknadId ?: behandling.soknadId, + vedtakId = vedtak.id.toLong(), + soknadFra = behandling.soknadFra, + stonadType = vedtak.stonadType, + engangsBelopType = vedtak.engangsbelopType, + erFattetBeregnet = true, + vedtakType = vedtak.type, + ), roller = behandling.tilForsendelseRolleDto(), ), ) 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 cbb232dfd..51e72e08b 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -20,7 +20,7 @@ import no.nav.bidrag.behandling.transformers.toRolle import no.nav.bidrag.domene.enums.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional -import java.util.* +import java.util.Date private val log = KotlinLogging.logger {} @@ -30,11 +30,12 @@ class BehandlingService( private val rolleRepository: RolleRepository, private val forsendelseService: ForsendelseService, ) { - fun createBehandling(behandling: Behandling): Behandling = behandlingRepository.save(behandling) - .let { - opprettForsendelseForBehandling(it) - it - } + fun createBehandling(behandling: Behandling): Behandling = + behandlingRepository.save(behandling) + .let { + opprettForsendelseForBehandling(it) + it + } private fun opprettForsendelseForBehandling(behandling: Behandling) { forsendelseService.slettEllerOpprettForsendelse( @@ -43,15 +44,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(), + ), ), ) } @@ -68,26 +69,28 @@ class BehandlingService( inntektBegrunnelseKunINotat: String? = null, aarsak: ForskuddAarsakType? = null, virkningsDato: Date? = null, - ): Behandling = behandlingRepository.save( + ): Behandling = + behandlingRepository.save( + behandlingRepository.findBehandlingById(behandlingId) + .orElseThrow { behandlingNotFoundException(behandlingId) } + .let { + it.virkningsTidspunktBegrunnelseMedIVedtakNotat = + virkningsTidspunktBegrunnelseMedIVedtakNotat + it.virkningsTidspunktBegrunnelseKunINotat = + virkningsTidspunktBegrunnelseKunINotat + it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat + it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat + it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat + it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat + it.aarsak = aarsak + it.virkningsDato = virkningsDato + it + }, + ) + + fun hentBehandlingById(behandlingId: Long): Behandling = behandlingRepository.findBehandlingById(behandlingId) .orElseThrow { behandlingNotFoundException(behandlingId) } - .let { - it.virkningsTidspunktBegrunnelseMedIVedtakNotat = - virkningsTidspunktBegrunnelseMedIVedtakNotat - it.virkningsTidspunktBegrunnelseKunINotat = - virkningsTidspunktBegrunnelseKunINotat - it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat - it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat - it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.aarsak = aarsak - it.virkningsDato = virkningsDato - it - }, - ) - - fun hentBehandlingById(behandlingId: Long): Behandling = behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { behandlingNotFoundException(behandlingId) } fun hentBehandlinger(): List = behandlingRepository.hentBehandlinger() @@ -100,8 +103,9 @@ class BehandlingService( inntektBegrunnelseMedIVedtakNotat: String?, inntektBegrunnelseKunINotat: String?, ) { - var behandling = behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { behandlingNotFoundException(behandlingId) } + var behandling = + behandlingRepository.findBehandlingById(behandlingId) + .orElseThrow { behandlingNotFoundException(behandlingId) } behandling.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat behandling.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat @@ -163,10 +167,16 @@ class BehandlingService( ) @Transactional - fun oppdaterVedtakId(behandlingId: Long, vedtakId: Long) = behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId) + fun oppdaterVedtakId( + behandlingId: Long, + vedtakId: Long, + ) = behandlingRepository.oppdaterVedtakId(behandlingId, vedtakId) @Transactional - fun syncRoller(behandlingId: Long, roller: List) { + fun syncRoller( + behandlingId: Long, + roller: List, + ) { val existingRoller = rolleRepository.findRollerByBehandlingId(behandlingId) val behandling = behandlingRepository.findById(behandlingId).get() @@ -189,7 +199,10 @@ class BehandlingService( } } - fun updateBehandling(behandlingId: Long, grunnlagspakkeId: Long?) { + fun updateBehandling( + behandlingId: Long, + grunnlagspakkeId: Long?, + ) { hentBehandlingById(behandlingId).let { it.grunnlagspakkeId = grunnlagspakkeId behandlingRepository.save(it) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt index c10247c55..6b1338d26 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt @@ -45,18 +45,22 @@ class ForsendelseService( } private fun opprettForsendelse(request: InitalizeForsendelseRequest): List { - val opprettRequestTemplate = OpprettForsendelseForespørsel( - behandlingInfo = request.behandlingInfo - .copy( - barnIBehandling = request.roller - .filter { it.type == Rolletype.BARN && !it.fødselsnummer?.verdi.isNullOrEmpty() } - .map { it.fødselsnummer!!.verdi }, - ), - saksnummer = request.saksnummer, - enhet = request.enhet, - tema = request.tema - ?: if (request.enhet == ENHET_FARSKAP && harTilgangTilTemaFar()) "FAR" else "BID", - ) + val opprettRequestTemplate = + OpprettForsendelseForespørsel( + behandlingInfo = + request.behandlingInfo + .copy( + barnIBehandling = + request.roller + .filter { it.type == Rolletype.BARN && !it.fødselsnummer?.verdi.isNullOrEmpty() } + .map { it.fødselsnummer!!.verdi }, + ), + saksnummer = request.saksnummer, + enhet = request.enhet, + tema = + request.tema + ?: if (request.enhet == ENHET_FARSKAP && harTilgangTilTemaFar()) "FAR" else "BID", + ) val opprettForRoller = opprettForRoller(request.roller, request.behandlingInfo) log.info { @@ -66,17 +70,20 @@ class ForsendelseService( val opprettetForsendelser = mutableListOf() opprettForRoller.forEach { try { - val response = bidragForsendelseConsumer.opprettForsendelse( - opprettRequestTemplate.copy( - mottaker = MottakerDto(ident = it.fødselsnummer!!.verdi), - gjelderIdent = it.fødselsnummer.verdi, - ), - ) + val response = + bidragForsendelseConsumer.opprettForsendelse( + opprettRequestTemplate.copy( + mottaker = MottakerDto(ident = it.fødselsnummer!!.verdi), + gjelderIdent = it.fødselsnummer.verdi, + ), + ) opprettetForsendelser.add(response.forsendelseId ?: "-1") log.info { "Opprettet forsendelse med id ${response.forsendelseId} for rolle $it" } SECURE_LOGGER.info("Opprettet forsendelse med id ${response.forsendelseId} for rolle $it, fnr: ${it.fødselsnummer.verdi}") } catch (e: Exception) { - log.error(e) { "Det skjedde en feil ved opprettelse av forsendelse for rolle $it. Ignorerer feilen uten å opprette forsendelse" } + log.error( + e, + ) { "Det skjedde en feil ved opprettelse av forsendelse for rolle $it. Ignorerer feilen uten å opprette forsendelse" } } } if (request.behandlingInfo.erVedtakFattet()) { @@ -85,7 +92,10 @@ class ForsendelseService( return opprettetForsendelser } - private fun slettVarselbrevUnderOpprettelse(saksnummer: String, soknadId: Long): List { + private fun slettVarselbrevUnderOpprettelse( + saksnummer: String, + soknadId: Long, + ): List { val forsendelser = bidragForsendelseConsumer.hentForsendelserISak(saksnummer) return forsendelser .filter { it.forsendelseType == ForsendelseTypeTo.UTGÅENDE } @@ -99,13 +109,14 @@ class ForsendelseService( } private fun harTilgangTilTemaFar() = tilgangskontrollConsumer.sjekkTilgangTema(tema = "FAR") + private fun skalOppretteForsendelseForSoknad(behandlingInfo: BehandlingInfoDto): Boolean { val erFattet = behandlingInfo.erFattetBeregnet != null if (erFattet) return true return !( behandlingInfo.stonadType == Stønadstype.FORSKUDD && ikkeOpprettVarslingForForskuddMedType.contains(behandlingInfo.vedtakType) - ) + ) } private fun opprettForRoller( @@ -147,6 +158,7 @@ class OpprettForsendelseForRollerListe : MutableList by mut } fun BehandlingInfoDto.typeForsendelse() = if (this.erVedtakFattet()) "vedtak" else "varsel" + fun List.hentRolle(rolleType: Rolletype): ForsendelseRolleDto? = this.find { it.type == rolleType } fun List.hentBarn(): List = this.filter { it.type == Rolletype.BARN } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt index 14881db40..18ad8e28d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/OpplysningerService.kt @@ -16,7 +16,12 @@ class OpplysningerService( private val behandlingRepository: BehandlingRepository, ) { @Transactional - fun opprett(behandlingId: Long, opplysningerType: OpplysningerType, data: String, hentetDato: Date): Opplysninger { + fun opprett( + behandlingId: Long, + opplysningerType: OpplysningerType, + data: String, + hentetDato: Date, + ): Opplysninger { behandlingRepository .findBehandlingById(behandlingId).orElseThrow { behandlingNotFoundException(behandlingId) } .let { @@ -24,6 +29,9 @@ class OpplysningerService( } } - fun hentSistAktiv(behandlingId: Long, opplysningerType: OpplysningerType): Optional = + fun hentSistAktiv( + behandlingId: Long, + opplysningerType: OpplysningerType, + ): Optional = opplysningerRepository.findTopByBehandlingIdAndOpplysningerTypeOrderByTsDescIdDesc(behandlingId, opplysningerType) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index 35975abcd..b1d195190 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -27,143 +27,157 @@ import no.nav.bidrag.domene.enums.Vedtakstype import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost -fun Set.toSivilstandDto() = this.map { - SivilstandDto( - it.id, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.sivilstandType, - ) -}.toSet() - -fun Set.toSivilstandDomain(behandling: Behandling) = this.map { - Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id) -}.toMutableSet() - -fun Set.toBarnetilleggDto() = this.map { - BarnetilleggDto( - it.id, - it.ident, - it.barnetillegg, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - ) -}.toSet() +fun Set.toSivilstandDto() = + this.map { + SivilstandDto( + it.id, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.sivilstandType, + ) + }.toSet() -fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = this.map { - Utvidetbarnetrygd( - behandling, - it.deltBoSted, - it.belop, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - ) -}.toMutableSet() - -fun Set.toUtvidetbarnetrygdDto() = this.map { - UtvidetbarnetrygdDto( - it.id, - it.deltBoSted, - it.belop, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - ) -}.toSet() +fun Set.toSivilstandDomain(behandling: Behandling) = + this.map { + Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id) + }.toMutableSet() -fun Set.toBarnetilleggDomain(behandling: Behandling) = this.map { - Barnetillegg( - behandling, - it.ident, - it.barnetillegg, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - it.id, - ) -}.toMutableSet() - -fun Set.toHusstandsBarnPeriodeDto() = this.map { - HusstandsBarnPeriodeDto( - it.id, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.boStatus, - it.kilde, - ) -}.toSet() - -fun Set.toDomain(husstandsBarn: HusstandsBarn) = this.map { - HusstandsBarnPeriode( - husstandsBarn, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - it.boStatus, - it.kilde, - ) -}.toSet() - -fun Set.toHusstandsBarnDto() = this.map { - HusstandsbarnDto( - it.id!!, - it.medISaken, - it.perioder.toHusstandsBarnPeriodeDto(), - it.ident, - it.navn, - it.foedselsDato?.toLocalDate(), - ) -}.toSet() +fun Set.toBarnetilleggDto() = + this.map { + BarnetilleggDto( + it.id, + it.ident, + it.barnetillegg, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + ) + }.toSet() -fun Set.toDomain(behandling: Behandling) = this.map { - val barn = - HusstandsBarn( +fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = + this.map { + Utvidetbarnetrygd( behandling, - it.medISak, + it.deltBoSted, + it.belop, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + ) + }.toMutableSet() + +fun Set.toUtvidetbarnetrygdDto() = + this.map { + UtvidetbarnetrygdDto( it.id, + it.deltBoSted, + it.belop, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + ) + }.toSet() + +fun Set.toBarnetilleggDomain(behandling: Behandling) = + this.map { + Barnetillegg( + behandling, it.ident, - it.navn, - it.foedselsdato?.toDate(), + it.barnetillegg, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + it.id, ) - barn.perioder = it.perioder.toDomain(barn).toMutableSet() - barn -}.toMutableSet() + }.toMutableSet() -fun Set.toInntektDomain(behandling: Behandling) = this.map { - val inntekt = - Inntekt( - it.inntektType, - it.belop, +fun Set.toHusstandsBarnPeriodeDto() = + this.map { + HusstandsBarnPeriodeDto( + it.id, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.boStatus, + it.kilde, + ) + }.toSet() + +fun Set.toDomain(husstandsBarn: HusstandsBarn) = + this.map { + HusstandsBarnPeriode( + husstandsBarn, it.datoFom?.toDate(), it.datoTom?.toDate(), + it.boStatus, + it.kilde, + ) + }.toSet() + +fun Set.toHusstandsBarnDto() = + this.map { + HusstandsbarnDto( + it.id!!, + it.medISaken, + it.perioder.toHusstandsBarnPeriodeDto(), it.ident, - it.fraGrunnlag, - it.taMed, + it.navn, + it.foedselsDato?.toLocalDate(), + ) + }.toSet() + +fun Set.toDomain(behandling: Behandling) = + this.map { + val barn = + HusstandsBarn( + behandling, + it.medISak, + it.id, + it.ident, + it.navn, + it.foedselsdato?.toDate(), + ) + barn.perioder = it.perioder.toDomain(barn).toMutableSet() + barn + }.toMutableSet() + +fun Set.toInntektDomain(behandling: Behandling) = + this.map { + val inntekt = + Inntekt( + it.inntektType, + it.belop, + it.datoFom?.toDate(), + it.datoTom?.toDate(), + it.ident, + it.fraGrunnlag, + it.taMed, + it.id, + behandling, + ) + inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet() + inntekt + }.toMutableSet() + +fun Set.toInntektPostDomain(inntekt: Inntekt) = + this.map { + InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) + }.toSet() + +fun Set.toInntektPost() = + this.map { + InntektPost(it.kode, it.visningsnavn, it.beløp) + }.toSet() + +fun Set.toInntektDto() = + this.map { + InntektDto( it.id, - behandling, + it.taMed, + it.inntektType, + it.belop, + it.datoFom?.toLocalDate(), + it.datoTom?.toLocalDate(), + it.ident, + it.fraGrunnlag, + it.inntektPostListe.toInntektPost(), ) - inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet() - inntekt -}.toMutableSet() - -fun Set.toInntektPostDomain(inntekt: Inntekt) = this.map { - InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) -}.toSet() - -fun Set.toInntektPost() = this.map { - InntektPost(it.kode, it.visningsnavn, it.beløp) -}.toSet() - -fun Set.toInntektDto() = this.map { - InntektDto( - it.id, - it.taMed, - it.inntektType, - it.belop, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.ident, - it.fraGrunnlag, - it.inntektPostListe.toInntektPost(), - ) -}.toSet() + }.toSet() fun Opplysninger.toDto(): OpplysningerDto { return OpplysningerDto( @@ -175,46 +189,50 @@ fun Opplysninger.toDto(): OpplysningerDto { ) } -fun Behandling.tilForsendelseRolleDto() = roller.filter { r -> !(r.rolleType == Rolletype.BARN && r.ident == null) }.map { - ForsendelseRolleDto( - fødselsnummer = Personident(it.ident!!), - type = it.rolleType, - ) -} +fun Behandling.tilForsendelseRolleDto() = + roller.filter { r -> !(r.rolleType == Rolletype.BARN && r.ident == null) }.map { + ForsendelseRolleDto( + fødselsnummer = Personident(it.ident!!), + type = it.rolleType, + ) + } -fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = Rolle( - behandling, - rolleType = - when (this.rolleType) { - CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER - CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG - CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER - CreateRolleRolleType.BARN -> Rolletype.BARN - CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT - }, - this.ident, - this.fodtDato, - this.opprettetDato, - navn = this.navn, -) - -fun SoknadType.tilVedtakType(): Vedtakstype = when (this) { - SoknadType.FASTSETTELSE -> Vedtakstype.FASTSETTELSE - SoknadType.REVURDERING -> Vedtakstype.REVURDERING - SoknadType.ALDERSJUSTERING -> Vedtakstype.ALDERSJUSTERING - SoknadType.ALDERSOPPHØR -> Vedtakstype.ALDERSOPPHØR - SoknadType.ENDRING -> Vedtakstype.ENDRING - SoknadType.ENDRING_MOTTAKER -> Vedtakstype.ENDRING_MOTTAKER - SoknadType.KLAGE -> Vedtakstype.KLAGE - SoknadType.OPPHØR -> Vedtakstype.OPPHØR - SoknadType.INDEKSREGULERING -> Vedtakstype.INDEKSREGULERING - SoknadType.INNKREVING -> Vedtakstype.INNKREVING -} +fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = + Rolle( + behandling, + rolleType = + when (this.rolleType) { + CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER + CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG + CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER + CreateRolleRolleType.BARN -> Rolletype.BARN + CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT + }, + this.ident, + this.fodtDato, + this.opprettetDato, + navn = this.navn, + ) -fun Rolletype.toRolleTypeDto(): RolleTypeDto = when (this) { - Rolletype.BARN -> RolleTypeDto.BARN - Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER - Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG - Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT - Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER -} +fun SoknadType.tilVedtakType(): Vedtakstype = + when (this) { + SoknadType.FASTSETTELSE -> Vedtakstype.FASTSETTELSE + SoknadType.REVURDERING -> Vedtakstype.REVURDERING + SoknadType.ALDERSJUSTERING -> Vedtakstype.ALDERSJUSTERING + SoknadType.ALDERSOPPHØR -> Vedtakstype.ALDERSOPPHØR + SoknadType.ENDRING -> Vedtakstype.ENDRING + SoknadType.ENDRING_MOTTAKER -> Vedtakstype.ENDRING_MOTTAKER + SoknadType.KLAGE -> Vedtakstype.KLAGE + SoknadType.OPPHØR -> Vedtakstype.OPPHØR + SoknadType.INDEKSREGULERING -> Vedtakstype.INDEKSREGULERING + SoknadType.INNKREVING -> Vedtakstype.INNKREVING + } + +fun Rolletype.toRolleTypeDto(): RolleTypeDto = + when (this) { + Rolletype.BARN -> RolleTypeDto.BARN + Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER + Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG + Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT + Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER + } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt index d755b989f..09e3a2e86 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -17,7 +17,6 @@ import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { - @Autowired lateinit var behandlingRepository: BehandlingRepository diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index a910608f2..d4c46e74d 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -17,7 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus -import java.util.* +import java.util.Date import kotlin.test.Ignore import kotlin.test.assertNotNull @@ -277,7 +277,6 @@ class BehandlingControllerTest() : KontrollerTestRunner() { @Test fun `skal ikke opprette en behandling med rolle med null ident`() { - // given val roller = setOf( @@ -392,7 +391,11 @@ class BehandlingControllerTest() : KontrollerTestRunner() { } companion object { - fun createBehandlingRequestTest(saksnummer: String?, enhet: String, roller: Set): CreateBehandlingRequestTest { + fun createBehandlingRequestTest( + saksnummer: String?, + enhet: String, + roller: Set, + ): CreateBehandlingRequestTest { val testBehandling = CreateBehandlingRequestTest( Behandlingstype.FORSKUDD, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt index a5bc17ff5..644ff00d3 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt @@ -37,16 +37,16 @@ class ForsendelseControllerTest : KontrollerTestRunner() { saksnummer = SAKSNUMMER, enhet = BidragEnhet.ENHET_FARSKAP, behandlingInfo = - BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - ), + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + ), roller = - listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), ), ), List::class.java, @@ -200,17 +200,17 @@ class ForsendelseControllerTest : KontrollerTestRunner() { saksnummer = SAKSNUMMER, enhet = BidragEnhet.ENHET_FARSKAP, behandlingInfo = - BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - vedtakId = 1, - ), + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + vedtakId = 1, + ), roller = - listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), ), ), List::class.java, @@ -239,28 +239,31 @@ class ForsendelseControllerTest : KontrollerTestRunner() { ), ) stubUtils.stubTilgangskontrollTema() - val response = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/forsendelse/init", - HttpMethod.POST, - HttpEntity( - InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - behandlingStatus = BehandlingStatus.FEILREGISTRERT, - enhet = BidragEnhet.ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - vedtakId = 1, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, + val response = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/forsendelse/init", + HttpMethod.POST, + HttpEntity( + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + behandlingStatus = BehandlingStatus.FEILREGISTRERT, + enhet = BidragEnhet.ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + vedtakId = 1, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), ), ), - ), - List::class.java, - ) + List::class.java, + ) response.statusCode shouldBe HttpStatus.OK response.body shouldBe listOf("1", "2") 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 f0080ca7c..26d5dc0a5 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -67,7 +67,6 @@ class InntekterControllerTest : KontrollerTestRunner() { @Nested @DisplayName("Tester endepunkt for henting av inntekter") open inner class HenteInntekter { - @Test fun `skal hente inntekter for behandling`() { // given @@ -81,12 +80,13 @@ class InntekterControllerTest : KontrollerTestRunner() { var lagretBehandlingMedInntekter = behandlingRepository.findAll().iterator().next() // when - val r1 = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", - HttpMethod.GET, - HttpEntity.EMPTY, - InntekterResponse::class.java, - ) + val r1 = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", + HttpMethod.GET, + HttpEntity.EMPTY, + InntekterResponse::class.java, + ) // then assertSoftly { @@ -107,12 +107,13 @@ class InntekterControllerTest : KontrollerTestRunner() { var lagretBehandlingUtenInntekter = behandlingRepository.findAll().iterator().next() // when - val r1 = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", - HttpMethod.GET, - HttpEntity.EMPTY, - InntekterResponse::class.java, - ) + val r1 = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", + HttpMethod.GET, + HttpEntity.EMPTY, + InntekterResponse::class.java, + ) // then assertSoftly { @@ -127,7 +128,6 @@ class InntekterControllerTest : KontrollerTestRunner() { @Nested @DisplayName("Tester endepunkt for oppdatering av inntekter") open inner class OppdatereInntekter { - @Test @Transactional open fun `skal opprette inntekter`() { @@ -140,12 +140,13 @@ class InntekterControllerTest : KontrollerTestRunner() { val inn = testInntektDto() // when - val r = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", - HttpMethod.PUT, - HttpEntity(TestInntektRequest(setOf(inn), emptySet(), emptySet())), - InntekterResponse::class.java, - ) + val r = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", + HttpMethod.PUT, + HttpEntity(TestInntektRequest(setOf(inn), emptySet(), emptySet())), + InntekterResponse::class.java, + ) // then assertEquals(HttpStatus.OK, r.statusCode) @@ -162,22 +163,25 @@ class InntekterControllerTest : KontrollerTestRunner() { assert(lagretBehandlingMedInntekter.inntekter.size > 0) // when - val inntekt1 = testInntektDto().copy( - id = null, - inntektPostListe = setOf( - InntektPost("ABC1", "ABC1", BigDecimal.TEN), - InntektPost("ABC2", "ABC2", BigDecimal.TEN), - ), - ) + val inntekt1 = + testInntektDto().copy( + id = null, + inntektPostListe = + setOf( + InntektPost("ABC1", "ABC1", BigDecimal.TEN), + InntektPost("ABC2", "ABC2", BigDecimal.TEN), + ), + ) val inntekt2 = testInntektDto().copy(datoFom = null, inntektType = "null") - val r1 = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", - HttpMethod.PUT, - HttpEntity(TestInntektRequest(setOf(inntekt1, inntekt2), setOf(), setOf())), - InntekterResponse::class.java, - ) + val r1 = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", + HttpMethod.PUT, + HttpEntity(TestInntektRequest(setOf(inntekt1, inntekt2), setOf(), setOf())), + InntekterResponse::class.java, + ) // then assertEquals(HttpStatus.OK, r1.statusCode) @@ -196,12 +200,13 @@ class InntekterControllerTest : KontrollerTestRunner() { assert(lagretBehandlingMedInntekter.inntekter.size > 0) // when - val r = httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", - HttpMethod.PUT, - HttpEntity(TestInntektRequest(emptySet(), emptySet(), emptySet())), - InntekterResponse::class.java, - ) + val r = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", + HttpMethod.PUT, + HttpEntity(TestInntektRequest(emptySet(), emptySet(), emptySet())), + InntekterResponse::class.java, + ) // then assertEquals(HttpStatus.OK, r.statusCode) @@ -230,41 +235,45 @@ class InntekterControllerTest : KontrollerTestRunner() { transaction.commit() } - private fun inntekt(behandling: Behandling) = Inntekt( - "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER", - BigDecimal.valueOf(45000), - LocalDate.now().minusYears(1).withDayOfYear(1).toDate(), - LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31).toDate(), - "1234", - true, - true, - behandling = behandling, - ) - - private fun inntektsposter(inntekt: Inntekt): MutableSet = setOf( - InntektPostDomain( - BigDecimal.valueOf(400000), - "lønnFraFluefiske", - "Lønn fra fluefiske", - inntekt = inntekt, - ), - ).toMutableSet() - - private fun testInntektDto() = TestInntektDto( - null, - true, - "some0", - "1.123", - "2022-10-10", - "2022-10-10", - "blablabla", - setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)), - ) + private fun inntekt(behandling: Behandling) = + Inntekt( + "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER", + BigDecimal.valueOf(45000), + LocalDate.now().minusYears(1).withDayOfYear(1).toDate(), + LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31).toDate(), + "1234", + true, + true, + behandling = behandling, + ) - private fun behandling(): Behandling { - val behandling: Behandling = behandlingRepository.save( - oppretteBehandling(), + private fun inntektsposter(inntekt: Inntekt): MutableSet = + setOf( + InntektPostDomain( + BigDecimal.valueOf(400000), + "lønnFraFluefiske", + "Lønn fra fluefiske", + inntekt = inntekt, + ), + ).toMutableSet() + + private fun testInntektDto() = + TestInntektDto( + null, + true, + "some0", + "1.123", + "2022-10-10", + "2022-10-10", + "blablabla", + setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)), ) + + private fun behandling(): Behandling { + val behandling: Behandling = + behandlingRepository.save( + oppretteBehandling(), + ) return behandling } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt index e1fdd4095..0744a08bc 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt @@ -204,7 +204,12 @@ class OpplysningerControllerTest : KontrollerTestRunner() { Assertions.assertEquals("inn1", oppAktivResult2.body!!.data) } - private fun skalOppretteOpplysninger(behandlingId: Long, data: String, aktiv: Boolean, opplysningerType: OpplysningerType): OpplysningerDto { + private fun skalOppretteOpplysninger( + behandlingId: Long, + data: String, + aktiv: Boolean, + opplysningerType: OpplysningerType, + ): OpplysningerDto { val opplysninger = createOpplysninger(behandlingId, data, aktiv, opplysningerType) val opp = @@ -222,7 +227,12 @@ class OpplysningerControllerTest : KontrollerTestRunner() { return body } - private fun createOpplysninger(behandlingId: Long, data: String, aktiv: Boolean, opplysningerType: OpplysningerType): AddOpplysningerRequest { + private fun createOpplysninger( + behandlingId: Long, + data: String, + aktiv: Boolean, + opplysningerType: OpplysningerType, + ): AddOpplysningerRequest { val opplysninger = AddOpplysningerRequest(behandlingId, aktiv, opplysningerType, data, "2025-02-01") return opplysninger diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index b6f21a45c..39258c0f6 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -34,7 +34,7 @@ import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import java.time.LocalDateTime -import java.util.* +import java.util.Date class VedtakHendelseTest : CommonTestRunner() { val stubUtils: StubUtils = StubUtils() @@ -98,46 +98,53 @@ class VedtakHendelseTest : CommonTestRunner() { .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BM.fødselsnummer?.verdi}\"") } - private fun opprettHendelseRecord(vedtakHendelse: VedtakHendelse) = ConsumerRecord( - "", - 1, - 1, - "", - stubUtils.toJsonString(vedtakHendelse), - ) + private fun opprettHendelseRecord(vedtakHendelse: VedtakHendelse) = + ConsumerRecord( + "", + 1, + 1, + "", + stubUtils.toJsonString(vedtakHendelse), + ) - private fun opprettBehandling() = Behandling( - datoFom = Date(), - datoTom = Date(), - saksnummer = SAKSNUMMER, - soknadId = 123123L, - behandlerEnhet = "4806", - behandlingType = Behandlingstype.BIDRAG18AAR, - engangsbelopType = null, - mottatDato = Date(), - soknadFra = SøktAvType.BIDRAGSMOTTAKER, - soknadType = SoknadType.FASTSETTELSE, - stonadType = Stønadstype.BIDRAG18AAR, - ) + private fun opprettBehandling() = + Behandling( + datoFom = Date(), + datoTom = Date(), + saksnummer = SAKSNUMMER, + soknadId = 123123L, + behandlerEnhet = "4806", + behandlingType = Behandlingstype.BIDRAG18AAR, + engangsbelopType = null, + mottatDato = Date(), + soknadFra = SøktAvType.BIDRAGSMOTTAKER, + soknadType = SoknadType.FASTSETTELSE, + stonadType = Stønadstype.BIDRAG18AAR, + ) - private fun opprettVedtakhendelse(vedtakId: Int, behandlingId: Long, stonadType: Stønadstype = Stønadstype.BIDRAG18AAR): VedtakHendelse { + private fun opprettVedtakhendelse( + vedtakId: Int, + behandlingId: Long, + stonadType: Stønadstype = Stønadstype.BIDRAG18AAR, + ): VedtakHendelse { return VedtakHendelse( type = Vedtakstype.FASTSETTELSE, - stønadsendringListe = listOf( - Stønadsendring( - type = stonadType, - eksternReferanse = "", - beslutning = Beslutningstype.ENDRING, - førsteIndeksreguleringsår = 2024, - innkreving = Innkrevingstype.MED_INNKREVING, - kravhaver = Personident(""), - mottaker = Personident(""), - omgjørVedtakId = 1, - periodeListe = emptyList(), - sak = Saksnummer(SAKSNUMMER), - skyldner = Personident(""), + stønadsendringListe = + listOf( + Stønadsendring( + type = stonadType, + eksternReferanse = "", + beslutning = Beslutningstype.ENDRING, + førsteIndeksreguleringsår = 2024, + innkreving = Innkrevingstype.MED_INNKREVING, + kravhaver = Personident(""), + mottaker = Personident(""), + omgjørVedtakId = 1, + periodeListe = emptyList(), + sak = Saksnummer(SAKSNUMMER), + skyldner = Personident(""), + ), ), - ), engangsbeløpListe = emptyList(), enhetsnummer = Enhetsnummer("4806"), id = vedtakId, @@ -149,16 +156,17 @@ class VedtakHendelseTest : CommonTestRunner() { innkrevingUtsattTilDato = null, vedtakstidspunkt = LocalDateTime.now(), fastsattILand = null, - behandlingsreferanseListe = listOf( - Behandlingsreferanse( - BehandlingsrefKilde.BEHANDLING_ID.name, - behandlingId.toString(), + behandlingsreferanseListe = + listOf( + Behandlingsreferanse( + BehandlingsrefKilde.BEHANDLING_ID.name, + behandlingId.toString(), + ), + Behandlingsreferanse( + BehandlingsrefKilde.BISYS_SOKNAD.name, + SOKNAD_ID.toString(), + ), ), - Behandlingsreferanse( - BehandlingsrefKilde.BISYS_SOKNAD.name, - SOKNAD_ID.toString(), - ), - ), ) } } 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 842b6d7de..aced010a2 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -32,7 +32,8 @@ 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.util.* +import java.util.Calendar +import java.util.Date class BehandlingServiceTest : TestContainerRunner() { @Autowired @@ -76,18 +77,19 @@ class BehandlingServiceTest : TestContainerRunner() { fun `skal opprette en behandling med inntekter`() { val behandling = prepareBehandling() - behandling.inntekter = mutableSetOf( - Inntekt( - "", - BigDecimal.valueOf(555.55), - null, - null, - "ident", - true, - true, - behandling = behandling, - ), - ) + behandling.inntekter = + mutableSetOf( + Inntekt( + "", + BigDecimal.valueOf(555.55), + null, + null, + "ident", + true, + true, + behandling = behandling, + ), + ) val actualBehandling = behandlingService.createBehandling(behandling) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt index f401cbbdc..6f3fcbfa4 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt @@ -55,20 +55,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med tema FAR når enhet er farskap`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - vedtakType = Vedtakstype.KLAGE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + vedtakType = Vedtakstype.KLAGE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -84,20 +87,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for gebyr behandling for bidragsmottaker`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - engangsBelopType = Engangsbeløptype.GEBYR_MOTTAKER, - vedtakType = Vedtakstype.ENDRING, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + engangsBelopType = Engangsbeløptype.GEBYR_MOTTAKER, + vedtakType = Vedtakstype.ENDRING, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -111,20 +117,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for gebyr behandling for bidragspliktig`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - engangsBelopType = Engangsbeløptype.GEBYR_SKYLDNER, - vedtakType = Vedtakstype.ENDRING, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + engangsBelopType = Engangsbeløptype.GEBYR_SKYLDNER, + vedtakType = Vedtakstype.ENDRING, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -138,20 +147,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med tema BID når enhet er farskap men person ikke har tilgang`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns false - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.BIDRAG, - vedtakType = Vedtakstype.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.BIDRAG, + vedtakType = Vedtakstype.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 2) { bidragForsendelseConsumer.opprettForsendelse( @@ -164,20 +176,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type FORSKUDD og vedtakType KLAGE`() { - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - vedtakType = Vedtakstype.KLAGE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + vedtakType = Vedtakstype.KLAGE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 1) { bidragForsendelseConsumer.opprettForsendelse( @@ -200,20 +215,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type BIDRAG`() { - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.BIDRAG, - vedtakType = Vedtakstype.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.BIDRAG, + vedtakType = Vedtakstype.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 2) { bidragForsendelseConsumer.opprettForsendelse( @@ -248,20 +266,23 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type BIDRAG 18 år`() { - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.BIDRAG18AAR, - vedtakType = Vedtakstype.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.BIDRAG18AAR, + vedtakType = Vedtakstype.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 3) { @@ -305,20 +326,23 @@ class ForsendelseServiceTest { fun `Skal ikke opprette forsendelse for behandling med type forskudd fastsettelse hvis vedtak ikke er fattet`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - vedtakType = Vedtakstype.FASTSETTELSE, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + vedtakType = Vedtakstype.FASTSETTELSE, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 0) { @@ -330,20 +354,23 @@ class ForsendelseServiceTest { fun `Skal ikke opprette forsendelse for behandling med type forskudd endring hvis vedtak ikke er fattet`() { every { bidragTIlgangskontrollConsumer.sjekkTilgangTema(any()) } returns true - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = ENHET_FARSKAP, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.FORSKUDD, - vedtakType = Vedtakstype.ENDRING, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = ENHET_FARSKAP, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.FORSKUDD, + vedtakType = Vedtakstype.ENDRING, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 0) { @@ -353,27 +380,31 @@ class ForsendelseServiceTest { @Test fun `Skal opprette forsendelse for behandling med type BIDRAG som er fattet og slette forsendelser for varsel under opprettelse`() { - every { bidragForsendelseConsumer.hentForsendelserISak(any()) } returns listOf( - opprettForsendelseResponsUnderOpprettelse(1), - opprettForsendelseResponsUnderOpprettelse(2), - opprettForsendelseResponsUnderOpprettelse(3).copy(status = ForsendelseStatusTo.DISTRIBUERT), - opprettForsendelseResponsUnderOpprettelse(4).copy(forsendelseType = ForsendelseTypeTo.NOTAT), - ) - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.BIDRAG, - vedtakType = Vedtakstype.FASTSETTELSE, - erFattetBeregnet = true, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + every { bidragForsendelseConsumer.hentForsendelserISak(any()) } returns + listOf( + opprettForsendelseResponsUnderOpprettelse(1), + opprettForsendelseResponsUnderOpprettelse(2), + opprettForsendelseResponsUnderOpprettelse(3).copy(status = ForsendelseStatusTo.DISTRIBUERT), + opprettForsendelseResponsUnderOpprettelse(4).copy(forsendelseType = ForsendelseTypeTo.NOTAT), + ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.BIDRAG, + vedtakType = Vedtakstype.FASTSETTELSE, + erFattetBeregnet = true, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 2) { @@ -418,28 +449,32 @@ class ForsendelseServiceTest { @Test fun `Skal slette forsendelser for varsel under opprettelse hvis behandlingstatus er feilregistrert`() { - every { bidragForsendelseConsumer.hentForsendelserISak(any()) } returns listOf( - opprettForsendelseResponsUnderOpprettelse(1), - opprettForsendelseResponsUnderOpprettelse(2), - opprettForsendelseResponsUnderOpprettelse(3).copy(status = ForsendelseStatusTo.DISTRIBUERT), - opprettForsendelseResponsUnderOpprettelse(4).copy(forsendelseType = ForsendelseTypeTo.NOTAT), - ) - val request = InitalizeForsendelseRequest( - saksnummer = SAKSNUMMER, - enhet = "4806", - behandlingStatus = BehandlingStatus.FEILREGISTRERT, - behandlingInfo = BehandlingInfoDto( - soknadId = SOKNAD_ID, - stonadType = Stønadstype.BIDRAG, - vedtakType = Vedtakstype.FASTSETTELSE, - erFattetBeregnet = true, - ), - roller = listOf( - ROLLE_BM, - ROLLE_BP, - ROLLE_BA_1, - ), - ) + every { bidragForsendelseConsumer.hentForsendelserISak(any()) } returns + listOf( + opprettForsendelseResponsUnderOpprettelse(1), + opprettForsendelseResponsUnderOpprettelse(2), + opprettForsendelseResponsUnderOpprettelse(3).copy(status = ForsendelseStatusTo.DISTRIBUERT), + opprettForsendelseResponsUnderOpprettelse(4).copy(forsendelseType = ForsendelseTypeTo.NOTAT), + ) + val request = + InitalizeForsendelseRequest( + saksnummer = SAKSNUMMER, + enhet = "4806", + behandlingStatus = BehandlingStatus.FEILREGISTRERT, + behandlingInfo = + BehandlingInfoDto( + soknadId = SOKNAD_ID, + stonadType = Stønadstype.BIDRAG, + vedtakType = Vedtakstype.FASTSETTELSE, + erFattetBeregnet = true, + ), + roller = + listOf( + ROLLE_BM, + ROLLE_BP, + ROLLE_BA_1, + ), + ) forsendelseService.slettEllerOpprettForsendelse(request) verify(exactly = 0) { bidragForsendelseConsumer.opprettForsendelse(any()) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt index a4a9d3695..27b074d21 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt @@ -10,7 +10,7 @@ import no.nav.bidrag.domene.enums.SøktAvType import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired -import java.util.* +import java.util.Date import kotlin.test.assertEquals import kotlin.test.assertTrue @@ -49,12 +49,13 @@ class OpplysningerServiceTest : TestContainerRunner() { val opp1 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) val opp2 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) val opp4 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) - val opp3 = opplysningerService.opprett( - b.id!!, - OpplysningerType.INNTEKTSOPPLYSNINGER, - "data", - Date(1), - ) + val opp3 = + opplysningerService.opprett( + b.id!!, + OpplysningerType.INNTEKTSOPPLYSNINGER, + "data", + Date(1), + ) val option = opplysningerService.hentSistAktiv(b.id!!, OpplysningerType.BOFORHOLD) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index 665c2378f..ec8e23a7d 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -19,7 +19,7 @@ import org.junit.Assert import org.springframework.http.HttpHeaders import org.springframework.http.HttpStatus import java.time.LocalDate -import java.util.* +import java.util.Arrays class StubUtils { companion object { @@ -30,7 +30,10 @@ class StubUtils { } } - fun stubResponse(url: String, personResponse: R) { + fun stubResponse( + url: String, + personResponse: R, + ) { try { WireMock.stubFor( WireMock.post(url).willReturn( @@ -44,7 +47,10 @@ class StubUtils { } } - fun stubOpprettForsendelse(forsendelseId: String = "12312321", status: HttpStatus = HttpStatus.OK) { + fun stubOpprettForsendelse( + forsendelseId: String = "12312321", + status: HttpStatus = HttpStatus.OK, + ) { WireMock.stubFor( WireMock.post(WireMock.urlMatching("/forsendelse/api/forsendelse")).willReturn( aClosedJsonResponse() @@ -82,7 +88,10 @@ class StubUtils { ) } - fun stubHentePersoninfo(status: HttpStatus = HttpStatus.OK, personident: String) { + fun stubHentePersoninfo( + status: HttpStatus = HttpStatus.OK, + personident: String, + ) { WireMock.stubFor( WireMock.post(WireMock.urlMatching("/bidrag-person/informasjon")) .willReturn( @@ -109,18 +118,20 @@ class StubUtils { .withBody( toJsonString( BeregnGrunnlag( - periode = ÅrMånedsperiode( - LocalDate.now().minusMonths(6), - LocalDate.now().plusMonths(6), - ), + periode = + ÅrMånedsperiode( + LocalDate.now().minusMonths(6), + LocalDate.now().plusMonths(6), + ), søknadsbarnReferanse = "123", - grunnlagListe = listOf( - Grunnlag( - referanse = "abra_cadabra", - type = Grunnlagstype.BARNETILLEGG, - grunnlagsreferanseListe = listOf("123"), + grunnlagListe = + listOf( + Grunnlag( + referanse = "abra_cadabra", + type = Grunnlagstype.BARNETILLEGG, + grunnlagsreferanseListe = listOf("123"), + ), ), - ), ), ), ), @@ -128,7 +139,10 @@ class StubUtils { ) } - fun stubTilgangskontrollTema(result: Boolean = true, status: HttpStatus = HttpStatus.OK) { + fun stubTilgangskontrollTema( + result: Boolean = true, + status: HttpStatus = HttpStatus.OK, + ) { WireMock.stubFor( WireMock.post(WireMock.urlMatching("/tilgangskontroll/api/tilgang/tema")).willReturn( aClosedJsonResponse() @@ -147,7 +161,10 @@ class StubUtils { verifyContains(verify, *contains) } - fun forsendelseHentetForSak(saksnummer: String, antall: Int = -1) { + fun forsendelseHentetForSak( + saksnummer: String, + antall: Int = -1, + ) { val verify = WireMock.getRequestedFor( WireMock.urlMatching("/forsendelse/api/forsendelse/sak/$saksnummer/forsendelser"), @@ -165,7 +182,10 @@ class StubUtils { ) } - fun forsendelseSlettet(forsendelseId: String = "(.*)", antall: Int = -1) { + fun forsendelseSlettet( + forsendelseId: String = "(.*)", + antall: Int = -1, + ) { val verify = WireMock.postRequestedFor( WireMock.urlMatching("/forsendelse/api/forsendelse/journal/$forsendelseId/avvik"), @@ -195,7 +215,10 @@ class StubUtils { opprettForsendelseKaltAntallGanger(0) } - private fun verifyContains(verify: RequestPatternBuilder, vararg contains: String) { + private fun verifyContains( + verify: RequestPatternBuilder, + vararg contains: String, + ) { Arrays.stream(contains).forEach { verify.withRequestBody(ContainsPattern(it)) } WireMock.verify(verify) } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt index eb84ef8ec..5b36119e9 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt @@ -22,17 +22,18 @@ val ROLLE_BM = ForsendelseRolleDto(Personident("313213213"), type = Rolletype.BI val ROLLE_BA_1 = ForsendelseRolleDto(Personident("1344124"), type = Rolletype.BARN) val ROLLE_BP = ForsendelseRolleDto(Personident("213244124"), type = Rolletype.BIDRAGSPLIKTIG) -fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = ForsendelseResponsTo( - forsendelseId = forsendelseId, - saksnummer = SAKSNUMMER, - behandlingInfo = - BehandlingInfoResponseDto( - soknadId = SOKNAD_ID.toString(), - erFattet = false, - ), - forsendelseType = ForsendelseTypeTo.UTGÅENDE, - status = ForsendelseStatusTo.UNDER_OPPRETTELSE, -) +fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = + ForsendelseResponsTo( + forsendelseId = forsendelseId, + saksnummer = SAKSNUMMER, + behandlingInfo = + BehandlingInfoResponseDto( + soknadId = SOKNAD_ID.toString(), + erFattet = false, + ), + forsendelseType = ForsendelseTypeTo.UTGÅENDE, + status = ForsendelseStatusTo.UNDER_OPPRETTELSE, + ) fun oppretteBehandling(): Behandling { return Behandling( @@ -52,26 +53,27 @@ fun oppretteBehandling(): Behandling { ) } -fun oppretteBehandlingRoller(behandling: Behandling) = mutableSetOf( - Rolle( - ident = ROLLE_BM.fødselsnummer?.verdi!!, - rolleType = Rolletype.BIDRAGSMOTTAKER, - behandling = behandling, - fodtDato = null, - opprettetDato = null, - ), - Rolle( - ident = ROLLE_BP.fødselsnummer?.verdi!!, - rolleType = Rolletype.BIDRAGSPLIKTIG, - behandling = behandling, - fodtDato = null, - opprettetDato = null, - ), - Rolle( - ident = ROLLE_BA_1.fødselsnummer?.verdi!!, - rolleType = Rolletype.BARN, - behandling = behandling, - fodtDato = null, - opprettetDato = null, - ), -) +fun oppretteBehandlingRoller(behandling: Behandling) = + mutableSetOf( + Rolle( + ident = ROLLE_BM.fødselsnummer?.verdi!!, + rolleType = Rolletype.BIDRAGSMOTTAKER, + behandling = behandling, + fodtDato = null, + opprettetDato = null, + ), + Rolle( + ident = ROLLE_BP.fødselsnummer?.verdi!!, + rolleType = Rolletype.BIDRAGSPLIKTIG, + behandling = behandling, + fodtDato = null, + opprettetDato = null, + ), + Rolle( + ident = ROLLE_BA_1.fødselsnummer?.verdi!!, + rolleType = Rolletype.BARN, + behandling = behandling, + fodtDato = null, + opprettetDato = null, + ), + ) From 0b1db1306067d7d03f955da724b87707da3f1b5c Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 15 Nov 2023 08:30:33 +0100 Subject: [PATCH 07/33] Fikse og opprette tester --- .../controller/BehandlingController.kt | 20 ++++++-- .../controller/BehandlingControllerTest.kt | 48 ++++++++++++++++++- 2 files changed, 63 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt index 239b99195..ec97a2e45 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt @@ -21,6 +21,7 @@ import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toRolle import no.nav.bidrag.behandling.transformers.toRolleTypeDto import no.nav.bidrag.behandling.transformers.toSivilstandDto +import org.apache.commons.lang3.Validate import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping @@ -53,7 +54,14 @@ class BehandlingController(private val behandlingService: BehandlingService) { @RequestBody(required = true) createBehandling: CreateBehandlingRequest, ): CreateBehandlingResponse { - validereRollerBarn(createBehandling.roller) + ingenBarnMedVerkenIdentEllerNavn(createBehandling.roller) + + Validate.isTrue( + ingenBarnMedVerkenIdentEllerNavn(createBehandling.roller) && + ingenVoksneUtenIdent( + createBehandling.roller, + ), + ) val behandling = Behandling( @@ -218,8 +226,12 @@ class BehandlingController(private val behandlingService: BehandlingService) { return behandlingService.hentBehandlinger().map { behandlingDto(it.id!!, it) } } - private fun validereRollerBarn(roller: Set) { - roller.filter { r -> r.rolleType == CreateRolleRolleType.BARN && (r.ident == null || r.ident.isBlank()) } - .filter { r -> r.navn == null || r.navn.isBlank() }.size == 0 + private fun ingenBarnMedVerkenIdentEllerNavn(roller: Set): Boolean { + return roller.filter { r -> r.rolleType == CreateRolleRolleType.BARN && r.ident.isNullOrBlank() } + .none { r -> r.navn.isNullOrBlank() } + } + + private fun ingenVoksneUtenIdent(roller: Set): Boolean { + return roller.filter { r -> r.rolleType != CreateRolleRolleType.BARN && r.ident.isNullOrBlank() }.none() } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index d4c46e74d..3575a5c52 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -38,6 +38,7 @@ data class CreateRolleDtoTest( val rolleType: CreateRolleRolleType, val ident: String?, val opprettetDato: Date?, + val navn: String? = null, ) @Suppress("NonAsciiCharacters") @@ -276,7 +277,7 @@ class BehandlingControllerTest() : KontrollerTestRunner() { } @Test - fun `skal ikke opprette en behandling med rolle med null ident`() { + fun `skal ikke opprette behandling som inkluderer barn uten navn og ident`() { // given val roller = setOf( @@ -298,6 +299,51 @@ class BehandlingControllerTest() : KontrollerTestRunner() { assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode) } + @Test + fun `skal opprette behandling som inkluderer barn med navn men uten ident`() { // given + val roller = + setOf( + CreateRolleDtoTest(CreateRolleRolleType.BARN, null, Date(1), "Ola Dunk"), + CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + ) + val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + + // when + val responseMedNull = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling", + HttpMethod.POST, + HttpEntity(testBehandlingMedNull), + Void::class.java, + ) + + // then + assertEquals(HttpStatus.OK, responseMedNull.statusCode) + } + + @Test + fun `skal ikke opprette behandling som inkluderer BP uten ident`() { + // given + val roller = + setOf( + CreateRolleDtoTest(CreateRolleRolleType.BARN, "1235", Date(1)), + CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, null, Date(1), "Ola Dunk"), + ) + val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + + // when + val responseMedNull = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling", + HttpMethod.POST, + HttpEntity(testBehandlingMedNull), + Void::class.java, + ) + + // then + assertEquals(HttpStatus.BAD_REQUEST, responseMedNull.statusCode) + } + @Ignore @Test fun `skal ikke opprette en behandling med rolle med blank ident`() { From ff645ef115b865d66efcd7f35b513186d7847e08 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 17 Nov 2023 12:19:15 +0100 Subject: [PATCH 08/33] =?UTF-8?q?S=C3=B8knadsbarnreferanse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nav/bidrag/behandling/beregning/ForskuddBeregning.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt index 2f25d942c..910f140f7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -34,13 +34,13 @@ class ForskuddBeregning { ): Grunnlag = Grunnlag( referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, - type = Grunnlagstype.SOKNADSBARN_INFO, + type = Grunnlagstype.PERSON, innhold = POJONode( SoknadsBarnNode( ident = soknadBarn.ident ?: "", navn = soknadBarn.navn ?: "", - fodselsdato = fødselsdato, + fødselsdato = fødselsdato, ), ), ) @@ -235,6 +235,7 @@ class ForskuddBeregning { ): BeregnGrunnlag = BeregnGrunnlag( periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), + søknadsbarnReferanse = søknadsbarn.referanse, grunnlagListe = listOf(søknadsbarn) + prepareBarnIHusstand(b) + @@ -274,7 +275,7 @@ data class BostatusNode( data class SoknadsBarnNode( val ident: String, val navn: String, - val fodselsdato: String, + val fødselsdato: String, ) data class InntektNode( From 2d8d50435ed35a528e7390f0fa1e52a19eebcc71 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 17 Nov 2023 14:01:12 +0100 Subject: [PATCH 09/33] Legge til kilde i Sivilstand --- .../database/datamodell/Behandlingstype.kt | 18 ----- .../database/datamodell/BoStatusType.kt | 9 --- .../{ForskuddAarsakType.kt => Enumtyper.kt} | 65 +++++++++++++++++++ .../database/datamodell/OpplysningerType.kt | 9 --- .../database/datamodell/Sivilstand.kt | 2 + .../database/datamodell/SivilstandType.kt | 10 --- .../database/datamodell/SoknadType.kt | 26 -------- .../dto/behandling/SivilstandDto.kt | 2 + .../husstandsbarn/HusstandsBarnPeriodeDto.kt | 3 +- .../behandling/transformers/DtoExtensions.kt | 3 +- ...lter_table_sivilstand_add_column_kilde.sql | 11 ++++ 11 files changed, 84 insertions(+), 74 deletions(-) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BoStatusType.kt rename src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/{ForskuddAarsakType.kt => Enumtyper.kt} (59%) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/OpplysningerType.kt delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SivilstandType.kt delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt create mode 100644 src/main/resources/db/migration/V1.0.32__alter_table_sivilstand_add_column_kilde.sql diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt deleted file mode 100644 index ce699d018..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Behandlingstype.kt +++ /dev/null @@ -1,18 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import io.swagger.v3.oas.annotations.media.Schema - -@Schema(enumAsRef = true) -enum class Behandlingstype { - BIDRAG, - - FORSKUDD, - - BIDRAG18AAR, - - EKTEFELLEBIDRAG, - - MOTREGNING, - - OPPFOSTRINGSBIDRAG, -} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BoStatusType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BoStatusType.kt deleted file mode 100644 index 06e50dcad..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/BoStatusType.kt +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import io.swagger.v3.oas.annotations.media.Schema - -@Schema(enumAsRef = true) -enum class BoStatusType { - IKKE_REGISTRERT_PA_ADRESSE, - REGISTRERT_PA_ADRESSE, -} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/ForskuddAarsakType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt similarity index 59% rename from src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/ForskuddAarsakType.kt rename to src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt index 201fc9157..e9379a273 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/ForskuddAarsakType.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt @@ -2,6 +2,71 @@ package no.nav.bidrag.behandling.database.datamodell import io.swagger.v3.oas.annotations.media.Schema +@Schema(enumAsRef = true) +enum class BoStatusType { + IKKE_REGISTRERT_PA_ADRESSE, + REGISTRERT_PA_ADRESSE, +} + +@Schema(enumAsRef = true) +enum class Kilde { + MANUELL, + OFFENTLIG, +} + +@Schema(enumAsRef = true) +enum class OpplysningerType { + INNTEKTSOPPLYSNINGER, + BOFORHOLD, +} + +// TODO Bruk Sivilstandstype fra bidrag-domain istedenfor +@Schema(enumAsRef = true) +enum class SivilstandType { + BOR_ALENE_MED_BARN, + GIFT, +} + +@Schema(enumAsRef = true) +enum class Behandlingstype { + BIDRAG, + + FORSKUDD, + + BIDRAG18AAR, + + EKTEFELLEBIDRAG, + + MOTREGNING, + + OPPFOSTRINGSBIDRAG, +} + + +@Schema(enumAsRef = true) +enum class SoknadType { + INDEKSREGULERING, + + ALDERSJUSTERING, + + OPPHØR, + + ALDERSOPPHØR, + + REVURDERING, + + FASTSETTELSE, + + INNKREVING, + + KLAGE, + + ENDRING, + + ENDRING_MOTTAKER, +} + + @Schema(enumAsRef = true) enum class ForskuddAarsakType(val beskrivelse: String) { SF("Annet"), diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/OpplysningerType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/OpplysningerType.kt deleted file mode 100644 index 8eb6fcedd..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/OpplysningerType.kt +++ /dev/null @@ -1,9 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import io.swagger.v3.oas.annotations.media.Schema - -@Schema(enumAsRef = true) -enum class OpplysningerType { - INNTEKTSOPPLYSNINGER, - BOFORHOLD, -} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt index 96b9edca5..7499187ea 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt @@ -20,6 +20,8 @@ class Sivilstand( val datoTom: Date?, @Enumerated(EnumType.STRING) val sivilstandType: SivilstandType, + @Enumerated(EnumType.STRING) + val kilde: Kilde, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SivilstandType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SivilstandType.kt deleted file mode 100644 index 419fbbff8..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SivilstandType.kt +++ /dev/null @@ -1,10 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import io.swagger.v3.oas.annotations.media.Schema - -// TODO Bruk Sivilstandstype fra bidrag-domain istedenfor -@Schema(enumAsRef = true) -enum class SivilstandType { - BOR_ALENE_MED_BARN, - GIFT, -} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt deleted file mode 100644 index 8c98b2865..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/SoknadType.kt +++ /dev/null @@ -1,26 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import io.swagger.v3.oas.annotations.media.Schema - -@Schema(enumAsRef = true) -enum class SoknadType { - INDEKSREGULERING, - - ALDERSJUSTERING, - - OPPHØR, - - ALDERSOPPHØR, - - REVURDERING, - - FASTSETTELSE, - - INNKREVING, - - KLAGE, - - ENDRING, - - ENDRING_MOTTAKER, -} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt index bb181ad9c..f5f74b658 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt @@ -2,6 +2,7 @@ package no.nav.bidrag.behandling.dto.behandling import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.database.datamodell.SivilstandType import java.time.LocalDate @@ -14,4 +15,5 @@ data class SivilstandDto( @JsonFormat(pattern = "yyyy-MM-dd") val datoTom: LocalDate?, val sivilstandType: SivilstandType, + val kilde: Kilde, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt index e6a1c9347..72161d82e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt @@ -3,6 +3,7 @@ package no.nav.bidrag.behandling.dto.husstandsbarn import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.database.datamodell.BoStatusType +import no.nav.bidrag.behandling.database.datamodell.Kilde import java.time.LocalDate data class HusstandsBarnPeriodeDto( @@ -16,5 +17,5 @@ data class HusstandsBarnPeriodeDto( @Schema(required = true) val boStatus: BoStatusType?, @Schema(required = true) - val kilde: String, + val kilde: Kilde, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index b1d195190..27e76b52e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -34,12 +34,13 @@ fun Set.toSivilstandDto() = it.datoFom?.toLocalDate(), it.datoTom?.toLocalDate(), it.sivilstandType, + it.kilde, ) }.toSet() fun Set.toSivilstandDomain(behandling: Behandling) = this.map { - Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.id) + Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType,it.kilde, it.id) }.toMutableSet() fun Set.toBarnetilleggDto() = diff --git a/src/main/resources/db/migration/V1.0.32__alter_table_sivilstand_add_column_kilde.sql b/src/main/resources/db/migration/V1.0.32__alter_table_sivilstand_add_column_kilde.sql new file mode 100644 index 000000000..2aefc1537 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.32__alter_table_sivilstand_add_column_kilde.sql @@ -0,0 +1,11 @@ +-- Table: SIVILSTAND + +/* + ALTER TABLE SIVILSTAND + DROP COLUMN KILDE; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.32'; + */ + +ALTER TABLE SIVILSTAND + ADD COLUMN KILDE VARCHAR(25); From 9865e056a2071e56e34ec9df1ef0cbe1a1a11dc4 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 17 Nov 2023 14:04:01 +0100 Subject: [PATCH 10/33] formattering --- .../no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt | 2 -- .../no/nav/bidrag/behandling/transformers/DtoExtensions.kt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt index e9379a273..69b6ca8ef 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt @@ -42,7 +42,6 @@ enum class Behandlingstype { OPPFOSTRINGSBIDRAG, } - @Schema(enumAsRef = true) enum class SoknadType { INDEKSREGULERING, @@ -66,7 +65,6 @@ enum class SoknadType { ENDRING_MOTTAKER, } - @Schema(enumAsRef = true) enum class ForskuddAarsakType(val beskrivelse: String) { SF("Annet"), diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index 27e76b52e..6907766e5 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -40,7 +40,7 @@ fun Set.toSivilstandDto() = fun Set.toSivilstandDomain(behandling: Behandling) = this.map { - Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType,it.kilde, it.id) + Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.kilde, it.id) }.toMutableSet() fun Set.toBarnetilleggDto() = From 1c7b7e5927fb23caa4212fa902e186ef7a0c51a1 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 17 Nov 2023 14:20:29 +0100 Subject: [PATCH 11/33] Legge inn kilde for Sivilstand --- .../no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt | 2 +- .../behandling/database/datamodell/HusstandsBarnPeriode.kt | 3 ++- .../bidrag/behandling/controller/BoforholdControllerTest.kt | 4 +++- .../no/nav/bidrag/behandling/service/BehandlingServiceTest.kt | 2 ++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt index 69b6ca8ef..af424ec4a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt @@ -10,7 +10,7 @@ enum class BoStatusType { @Schema(enumAsRef = true) enum class Kilde { - MANUELL, + MANUELT, OFFENTLIG, } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt index 6e7ccb31e..c9e58d53f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt @@ -20,7 +20,8 @@ class HusstandsBarnPeriode( val datoTom: Date?, @Enumerated(EnumType.STRING) val boStatus: BoStatusType?, - val kilde: String, + @Enumerated(EnumType.STRING) + val kilde: Kilde, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt index bfb251609..02c60f8d9 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt @@ -1,6 +1,7 @@ package no.nav.bidrag.behandling.controller import no.nav.bidrag.behandling.database.datamodell.BoStatusType +import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.boforhold.BoforholdResponse @@ -37,7 +38,8 @@ class BoforholdControllerTest : KontrollerTestRunner() { // 2.1 Prepare husstandsBarn - val perioder = setOf(HusstandsBarnPeriodeDto(null, null, null, BoStatusType.IKKE_REGISTRERT_PA_ADRESSE, "offentlig")) + val perioder = + setOf(HusstandsBarnPeriodeDto(null, null, null, BoStatusType.IKKE_REGISTRERT_PA_ADRESSE, Kilde.OFFENTLIG)) val husstandsBarn = setOf(HusstandsbarnDto(behandling.body!!.id, true, perioder, "ident", null)) // 2.2 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 aced010a2..1dab1dcb5 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -8,6 +8,7 @@ import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType 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.SivilstandType import no.nav.bidrag.behandling.database.datamodell.SoknadType @@ -128,6 +129,7 @@ class BehandlingServiceTest : TestContainerRunner() { Calendar.getInstance().time.toLocalDate(), Calendar.getInstance().time.toLocalDate(), SivilstandType.BOR_ALENE_MED_BARN, + Kilde.OFFENTLIG, ), ) From adc4069b1e48afb9472292ec74938a2c1df1c101 Mon Sep 17 00:00:00 2001 From: s148719 Date: Mon, 20 Nov 2023 12:18:58 +0100 Subject: [PATCH 12/33] Oppdatere kilde --- .../database/datamodell/Enumtyper.kt | 16 +--------------- .../V1.0.33__update_table_med_kilde.sql | 19 +++++++++++++++++++ ...__update_table_barn_i_husstand_periode.sql | 19 +++++++++++++++++++ 3 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql create mode 100644 src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt index af424ec4a..eb3901938 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt @@ -10,7 +10,7 @@ enum class BoStatusType { @Schema(enumAsRef = true) enum class Kilde { - MANUELT, + MANUELL, OFFENTLIG, } @@ -30,38 +30,24 @@ enum class SivilstandType { @Schema(enumAsRef = true) enum class Behandlingstype { BIDRAG, - FORSKUDD, - BIDRAG18AAR, - EKTEFELLEBIDRAG, - MOTREGNING, - OPPFOSTRINGSBIDRAG, } @Schema(enumAsRef = true) enum class SoknadType { INDEKSREGULERING, - ALDERSJUSTERING, - OPPHØR, - ALDERSOPPHØR, - REVURDERING, - FASTSETTELSE, - INNKREVING, - KLAGE, - ENDRING, - ENDRING_MOTTAKER, } diff --git a/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql b/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql new file mode 100644 index 000000000..0071ffb05 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql @@ -0,0 +1,19 @@ +-- Table: SIVILSTAND + +/* + UPDATE TABLE SIVILSTAND + SET KILDE = 'manuelt' WHERE KILDE = 'MANUELL'; + UPDATE TABLE SIVILSTAND + SET KILDE = 'offentlig' WHERE KILDE = 'OFFENTLIG'; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.33'; + */ + +UPDATE TABLE SIVILSTAND + SET KILDE = 'MANUELL' WHERE KILDE = 'manuelt'; +UPDATE TABLE SIVILSTAND + SET KILDE = 'OFFENTLIG' WHERE KILDE = 'offentlig' OR KILDE IS NULL; + + + + diff --git a/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql b/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql new file mode 100644 index 000000000..39d679f93 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql @@ -0,0 +1,19 @@ +-- Table: BARN_I_HUSSTAND_PERIODE + +/* + UPDATE TABLE BARN_I_HUSSTAND_PERIODE + SET KILDE = 'manuelt' WHERE KILDE = 'MANUELL'; + UPDATE TABLE BARN_I_HUSSTAND_PERIODE + SET KILDE = 'offentlig' WHERE KILDE = 'OFFENTLIG'; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.34'; + */ + +UPDATE TABLE BARN_I_HUSSTAND_PERIODE + SET KILDE = 'MANUELL' WHERE KILDE = 'manuelt'; +UPDATE TABLE BARN_I_HUSSTAND_PERIODE + SET KILDE = 'OFFENTLIG' WHERE KILDE = 'offentlig' OR KILDE IS NULL; + + + + From 45881faac146e64e54b91174420aa2b2c2f63c92 Mon Sep 17 00:00:00 2001 From: s148719 Date: Mon, 20 Nov 2023 12:37:40 +0100 Subject: [PATCH 13/33] fikse migreringsskript --- .../db/migration/V1.0.33__update_table_med_kilde.sql | 8 ++++---- .../V1.0.34__update_table_barn_i_husstand_periode.sql | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql b/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql index 0071ffb05..748453716 100644 --- a/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql +++ b/src/main/resources/db/migration/V1.0.33__update_table_med_kilde.sql @@ -1,17 +1,17 @@ -- Table: SIVILSTAND /* - UPDATE TABLE SIVILSTAND + UPDATE SIVILSTAND SET KILDE = 'manuelt' WHERE KILDE = 'MANUELL'; - UPDATE TABLE SIVILSTAND + UPDATE SIVILSTAND SET KILDE = 'offentlig' WHERE KILDE = 'OFFENTLIG'; DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.33'; */ -UPDATE TABLE SIVILSTAND +UPDATE SIVILSTAND SET KILDE = 'MANUELL' WHERE KILDE = 'manuelt'; -UPDATE TABLE SIVILSTAND +UPDATE SIVILSTAND SET KILDE = 'OFFENTLIG' WHERE KILDE = 'offentlig' OR KILDE IS NULL; diff --git a/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql b/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql index 39d679f93..f9a92fb11 100644 --- a/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql +++ b/src/main/resources/db/migration/V1.0.34__update_table_barn_i_husstand_periode.sql @@ -1,17 +1,17 @@ -- Table: BARN_I_HUSSTAND_PERIODE /* - UPDATE TABLE BARN_I_HUSSTAND_PERIODE + UPDATE BARN_I_HUSSTAND_PERIODE SET KILDE = 'manuelt' WHERE KILDE = 'MANUELL'; - UPDATE TABLE BARN_I_HUSSTAND_PERIODE + UPDATE BARN_I_HUSSTAND_PERIODE SET KILDE = 'offentlig' WHERE KILDE = 'OFFENTLIG'; DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.34'; */ -UPDATE TABLE BARN_I_HUSSTAND_PERIODE +UPDATE BARN_I_HUSSTAND_PERIODE SET KILDE = 'MANUELL' WHERE KILDE = 'manuelt'; -UPDATE TABLE BARN_I_HUSSTAND_PERIODE +UPDATE BARN_I_HUSSTAND_PERIODE SET KILDE = 'OFFENTLIG' WHERE KILDE = 'offentlig' OR KILDE IS NULL; From 2fe80b51c50a65cc77201e879dad415e066fc356 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 24 Nov 2023 07:16:18 +0100 Subject: [PATCH 14/33] Merge --- .../behandling/beregning/ForskuddBeregning.kt | 43 ------------------- .../BehandlingBeregnForskuddController.kt | 9 ---- .../nav/bidrag/behandling/utils/StubUtils.kt | 4 -- 3 files changed, 56 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt index 2db844760..910f140f7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -28,7 +28,6 @@ import java.time.LocalDate @Service class ForskuddBeregning { -<<<<<<< HEAD fun lagePersonobjektForSøknadsbarn( soknadBarn: Rolle, fødselsdato: String, @@ -44,24 +43,6 @@ class ForskuddBeregning { fødselsdato = fødselsdato, ), ), -======= - private fun prepareSoknadsBarn( - soknadBarn: Rolle, - fDato: String, - ): List = - listOf( - Grunnlag( - navn = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, - type = Grunnlagstype.SOKNADSBARN_INFO, - innhold = - POJONode( - SoknadsBarnNode( - soknadsbarnId = soknadBarn.id!!.toInt(), - fodselsdato = fDato, - ), - ), - ), ->>>>>>> main ) // TODO BostatusKode @@ -113,11 +94,7 @@ class ForskuddBeregning { inntekter .map { Grunnlag( -<<<<<<< HEAD referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", -======= - navn = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", ->>>>>>> main type = Grunnlagstype.INNTEKT, innhold = POJONode( @@ -134,11 +111,7 @@ class ForskuddBeregning { barnetillegg .map { Grunnlag( -<<<<<<< HEAD referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), -======= - navn = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), ->>>>>>> main type = Grunnlagstype.INNTEKT, innhold = POJONode( @@ -155,11 +128,7 @@ class ForskuddBeregning { utvidetbarnetrygd .map { Grunnlag( -<<<<<<< HEAD referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), -======= - navn = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), ->>>>>>> main type = Grunnlagstype.INNTEKT, innhold = POJONode( @@ -262,7 +231,6 @@ class ForskuddBeregning { fun toPayload( b: BehandlingBeregningModel, -<<<<<<< HEAD søknadsbarn: Grunnlag, ): BeregnGrunnlag = BeregnGrunnlag( @@ -272,17 +240,6 @@ class ForskuddBeregning { listOf(søknadsbarn) + prepareBarnIHusstand(b) + prepareBostatus(b.husstandsBarnPerioder, søknadsbarn) + -======= - soknadsBarn: Rolle, - fDato: String, - ): BeregnGrunnlag = - BeregnGrunnlag( - periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), - grunnlagListe = - prepareSoknadsBarn(soknadsBarn, fDato) + - prepareBarnIHusstand(b) + - prepareBostatus(b.husstandsBarnPerioder, soknadsBarn.ident, soknadsBarn) + ->>>>>>> main prepareInntekterForBeregning( b.inntekter, b.barnetillegg, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 00bcbbe3d..24aeb912d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -55,7 +55,6 @@ class BehandlingBeregnForskuddController( behandling .getSøknadsBarn() .mapOrAccumulate { -<<<<<<< HEAD val fødselsdatoSøknadsbarn = if (it.fodtDato == null && it.ident != null) { bidragPersonConsumer.hentPerson(it.ident).fødselsdato @@ -67,14 +66,6 @@ class BehandlingBeregnForskuddController( if (fødselsdatoSøknadsbarn == null) { fantIkkeFødselsdatoTilSøknadsbarn(behandlingId) } -======= - val fDato = - if (it.fodtDato == null) { - bidragPersonConsumer.hentPerson(it.ident).fødselsdato - } else { - it.fodtDato.toLocalDate().toNoString() - } ->>>>>>> main var søknadsbarn = forskuddBeregning.lagePersonobjektForSøknadsbarn(it, fødselsdatoSøknadsbarn) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index 97415eb75..ec8e23a7d 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -127,11 +127,7 @@ class StubUtils { grunnlagListe = listOf( Grunnlag( -<<<<<<< HEAD referanse = "abra_cadabra", -======= - navn = "abra_cadabra", ->>>>>>> main type = Grunnlagstype.BARNETILLEGG, grunnlagsreferanseListe = listOf("123"), ), From 4710495c7aedc8ec3b888608076a81379d9c279c Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 24 Nov 2023 10:27:41 +0100 Subject: [PATCH 15/33] Oppdatere bidrag-transport og commons --- pom.xml | 4 ++-- .../behandling/beregning/ForskuddBeregning.kt | 2 +- .../model/BehandlingBeregningModel.kt | 2 +- .../database/datamodell/Behandling.kt | 8 +++---- .../behandling/database/datamodell/Rolle.kt | 2 +- .../dto/behandling/BehandlingDto.kt | 2 +- .../dto/behandling/CreateBehandlingRequest.kt | 6 +++--- .../dto/forsendelse/ForsendelseTyper.kt | 8 +++---- .../InitalizeForsendelseRequest.kt | 4 ++-- .../kafka/VedtakHendelseListener.kt | 6 +++--- .../behandling/service/BehandlingService.kt | 2 +- .../behandling/service/ForsendelseService.kt | 8 +++---- .../behandling/transformers/DtoExtensions.kt | 4 ++-- .../controller/BehandlingControllerTest.kt | 4 ++-- .../controller/ForsendelseControllerTest.kt | 2 +- .../behandling/hendelse/VedtakHendelseTest.kt | 21 ++++++++++--------- .../service/BehandlingServiceTest.kt | 4 ++-- .../service/ForsendelseServiceTest.kt | 6 +++--- .../service/OpplysningerServiceTest.kt | 4 ++-- .../nav/bidrag/behandling/utils/StubUtils.kt | 5 ++--- .../nav/bidrag/behandling/utils/Testdata.kt | 4 ++-- 21 files changed, 54 insertions(+), 54 deletions(-) diff --git a/pom.xml b/pom.xml index 3c4fad449..c23feed37 100644 --- a/pom.xml +++ b/pom.xml @@ -16,8 +16,8 @@ 21 1.9.20 - 20231103132440_edabbf8 - 20231108150753_dc8a5b7 + 20231114143627_14d61cd + 20231123151257_652ccbb 7.4 3.1.8 2.2.0 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt index 910f140f7..50d25cb69 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt @@ -18,7 +18,7 @@ import no.nav.bidrag.behandling.transformers.toCompactString 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.domene.enums.Grunnlagstype +import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.domene.tid.ÅrMånedsperiode import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt index 73a4cbb35..18830c075 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt @@ -14,7 +14,7 @@ import no.nav.bidrag.behandling.database.datamodell.Sivilstand import no.nav.bidrag.behandling.database.datamodell.SivilstandType import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd import no.nav.bidrag.behandling.transformers.toLocalDate -import no.nav.bidrag.domene.enums.Rolletype +import no.nav.bidrag.domene.enums.rolle.Rolletype import java.math.BigDecimal import java.time.LocalDate import java.util.Date 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 e8cff82d6..291db5f83 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 @@ -10,10 +10,10 @@ import jakarta.persistence.GeneratedValue import jakarta.persistence.GenerationType import jakarta.persistence.Id import jakarta.persistence.OneToMany -import no.nav.bidrag.domene.enums.Engangsbeløptype -import no.nav.bidrag.domene.enums.Rolletype -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype import org.hibernate.annotations.SQLDelete import org.hibernate.annotations.Where import java.util.Date diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt index 0966bb535..4e14562a2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt @@ -9,7 +9,7 @@ import jakarta.persistence.GenerationType import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne -import no.nav.bidrag.domene.enums.Rolletype +import no.nav.bidrag.domene.enums.rolle.Rolletype import org.hibernate.annotations.SQLDelete import org.hibernate.annotations.Where import java.util.Date diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt index d8f264c80..4157bd0c0 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt @@ -6,7 +6,7 @@ import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.SøktAvType import java.time.LocalDate // TODO: Flytt dette til bidrag-transport diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt index d360c1b8f..f21105c93 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt @@ -6,9 +6,9 @@ import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.domene.enums.Engangsbeløptype -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype import java.util.Date data class CreateBehandlingRequest( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt index 72f2a1529..fde9336d5 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/ForsendelseTyper.kt @@ -1,9 +1,9 @@ package no.nav.bidrag.behandling.dto.forsendelse -import no.nav.bidrag.domene.enums.Engangsbeløptype -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.SøktAvType -import no.nav.bidrag.domene.enums.Vedtakstype +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import no.nav.bidrag.domene.enums.vedtak.Vedtakstype data class BehandlingInfoDto( val vedtakId: Long? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt index c982f6449..37fa6ed8a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/forsendelse/InitalizeForsendelseRequest.kt @@ -2,7 +2,7 @@ package no.nav.bidrag.behandling.dto.forsendelse import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size -import no.nav.bidrag.domene.enums.Rolletype +import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.ident.Personident data class InitalizeForsendelseRequest( @@ -10,7 +10,7 @@ data class InitalizeForsendelseRequest( @field:Size(max = 7, message = "Saksnummer kan ikke være lengre enn 7 tegn") val saksnummer: String, val behandlingInfo: BehandlingInfoDto, - val enhet: String, + val enhet: String? = null, val tema: String? = null, val roller: List, val behandlingStatus: BehandlingStatus? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt index f0688ff31..14e1e5816 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt @@ -9,7 +9,7 @@ import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.service.ForsendelseService import no.nav.bidrag.behandling.transformers.tilForsendelseRolleDto -import no.nav.bidrag.domene.enums.BehandlingsrefKilde +import no.nav.bidrag.domene.enums.vedtak.BehandlingsrefKilde import no.nav.bidrag.transport.behandling.vedtak.VedtakHendelse import org.apache.kafka.clients.consumer.ConsumerRecord import org.springframework.kafka.annotation.KafkaListener @@ -50,7 +50,7 @@ class VedtakHendelseListener( forsendelseService.slettEllerOpprettForsendelse( InitalizeForsendelseRequest( saksnummer = vedtak.saksnummer, - enhet = vedtak.enhetsnummer.verdi, + enhet = vedtak.enhetsnummer?.verdi, behandlingInfo = BehandlingInfoDto( soknadId = vedtak.soknadId ?: behandling.soknadId, @@ -81,7 +81,7 @@ val VedtakHendelse.engangsbelopType get() = this.engangsbeløpListe?.firstOrNull val VedtakHendelse.soknadId get() = this.behandlingsreferanseListe?.find { - it.kilde == BehandlingsrefKilde.BISYS_SOKNAD.name + it.kilde == BehandlingsrefKilde.BISYS_SØKNAD.name }?.referanse?.toLong() val VedtakHendelse.behandlingId get() = 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 51e72e08b..f9c0a299c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -17,7 +17,7 @@ import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest import no.nav.bidrag.behandling.transformers.tilForsendelseRolleDto import no.nav.bidrag.behandling.transformers.tilVedtakType import no.nav.bidrag.behandling.transformers.toRolle -import no.nav.bidrag.domene.enums.Rolletype +import no.nav.bidrag.domene.enums.rolle.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.util.Date diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt index 6b1338d26..d25ce15be 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForsendelseService.kt @@ -12,10 +12,10 @@ import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest import no.nav.bidrag.behandling.dto.forsendelse.MottakerDto import no.nav.bidrag.behandling.dto.forsendelse.OpprettForsendelseForespørsel -import no.nav.bidrag.domene.enums.Engangsbeløptype -import no.nav.bidrag.domene.enums.Rolletype -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.Vedtakstype +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.transport.dokument.BidragEnhet.ENHET_FARSKAP import org.springframework.stereotype.Service diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index 6907766e5..8161fb327 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -22,8 +22,8 @@ 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.dto.opplysninger.OpplysningerDto -import no.nav.bidrag.domene.enums.Rolletype -import no.nav.bidrag.domene.enums.Vedtakstype +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.domene.ident.Personident import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index 3575a5c52..fbbe36f6d 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -9,8 +9,8 @@ import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.service.BehandlingServiceTest -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Stønadstype import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt index 644ff00d3..92087dbad 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/ForsendelseControllerTest.kt @@ -12,7 +12,7 @@ import no.nav.bidrag.behandling.utils.ROLLE_BP import no.nav.bidrag.behandling.utils.SAKSNUMMER import no.nav.bidrag.behandling.utils.SOKNAD_ID import no.nav.bidrag.behandling.utils.opprettForsendelseResponsUnderOpprettelse -import no.nav.bidrag.domene.enums.Stønadstype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype import no.nav.bidrag.transport.dokument.BidragEnhet import org.intellij.lang.annotations.Language import org.junit.jupiter.api.Test diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index 39258c0f6..f38bff64b 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -15,16 +15,16 @@ import no.nav.bidrag.behandling.utils.ROLLE_BP import no.nav.bidrag.behandling.utils.SAKSNUMMER import no.nav.bidrag.behandling.utils.SOKNAD_ID import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller -import no.nav.bidrag.domene.enums.BehandlingsrefKilde -import no.nav.bidrag.domene.enums.Beslutningstype -import no.nav.bidrag.domene.enums.Innkrevingstype -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.SøktAvType -import no.nav.bidrag.domene.enums.Vedtakskilde -import no.nav.bidrag.domene.enums.Vedtakstype +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.BehandlingsrefKilde +import no.nav.bidrag.domene.enums.vedtak.Beslutningstype +import no.nav.bidrag.domene.enums.vedtak.Innkrevingstype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import no.nav.bidrag.domene.enums.vedtak.Vedtakskilde +import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.domene.ident.Personident -import no.nav.bidrag.domene.streng.Enhetsnummer -import no.nav.bidrag.domene.streng.Saksnummer +import no.nav.bidrag.domene.organisasjon.Enhetsnummer +import no.nav.bidrag.domene.sak.Saksnummer import no.nav.bidrag.transport.behandling.vedtak.Behandlingsreferanse import no.nav.bidrag.transport.behandling.vedtak.Sporingsdata import no.nav.bidrag.transport.behandling.vedtak.Stønadsendring @@ -149,6 +149,7 @@ class VedtakHendelseTest : CommonTestRunner() { enhetsnummer = Enhetsnummer("4806"), id = vedtakId, kilde = Vedtakskilde.MANUELT, + kildeapplikasjon = "bidrag-behandling", opprettetTidspunkt = LocalDateTime.now(), opprettetAvNavn = "", opprettetAv = "", @@ -163,7 +164,7 @@ class VedtakHendelseTest : CommonTestRunner() { behandlingId.toString(), ), Behandlingsreferanse( - BehandlingsrefKilde.BISYS_SOKNAD.name, + BehandlingsrefKilde.BISYS_SØKNAD.name, SOKNAD_ID.toString(), ), ), 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 1dab1dcb5..419b24366 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -21,8 +21,8 @@ import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto 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.Rolletype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.enums.rolle.SøktAvType import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertNotNull diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt index 6f3fcbfa4..4a8f7ab32 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/ForsendelseServiceTest.kt @@ -22,9 +22,9 @@ import no.nav.bidrag.behandling.utils.ROLLE_BP import no.nav.bidrag.behandling.utils.SAKSNUMMER import no.nav.bidrag.behandling.utils.SOKNAD_ID import no.nav.bidrag.behandling.utils.opprettForsendelseResponsUnderOpprettelse -import no.nav.bidrag.domene.enums.Engangsbeløptype -import no.nav.bidrag.domene.enums.Stønadstype -import no.nav.bidrag.domene.enums.Vedtakstype +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import no.nav.bidrag.domene.enums.vedtak.Vedtakstype import no.nav.bidrag.transport.dokument.BidragEnhet.ENHET_FARSKAP import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt index 27b074d21..b8eb28bf5 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt @@ -5,8 +5,8 @@ import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.OpplysningerType import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.domene.enums.Engangsbeløptype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt index ec8e23a7d..9d3beadf9 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/StubUtils.kt @@ -10,8 +10,7 @@ import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo import no.nav.bidrag.behandling.consumer.OpprettForsendelseRespons import no.nav.bidrag.behandling.dto.HentPersonResponse import no.nav.bidrag.behandling.utils.opprettForsendelseResponsUnderOpprettelse -import no.nav.bidrag.domene.enums.Grunnlagstype -import no.nav.bidrag.domene.tid.Fødselsdato +import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype import no.nav.bidrag.domene.tid.ÅrMånedsperiode import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag @@ -101,7 +100,7 @@ class StubUtils { toJsonString( HentPersonResponse( personident, - fødselsdato = Fødselsdato(LocalDate.now().minusMonths(500)).toString(), + fødselsdato = LocalDate.now().minusMonths(500).toString(), ), ), ), diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt index 5b36119e9..9a3baf297 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt @@ -10,8 +10,8 @@ import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.SoknadType import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto import no.nav.bidrag.behandling.transformers.toDate -import no.nav.bidrag.domene.enums.Rolletype -import no.nav.bidrag.domene.enums.SøktAvType +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.ident.Personident import java.time.LocalDate import java.time.YearMonth From 2d3b473797364de3748cdef3ca52dd16a7c6dd34 Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 08:25:52 +0100 Subject: [PATCH 16/33] BD-1764: Endre datamodell. Beregne forskudd. --- pom.xml | 2 +- .../no/nav/bidrag/behandling/Exceptions.kt | 3 + .../behandling/beregning/ForskuddBeregning.kt | 294 ------------------ .../model/BehandlingBeregningModel.kt | 178 ----------- .../consumer/BidragBeregnForskuddConsumer.kt | 4 +- .../consumer/BidragGrunnlagConsumer.kt | 21 ++ .../BehandlingBeregnForskuddController.kt | 88 +----- .../controller/BehandlingController.kt | 71 ++--- .../controller/BoforholdController.kt | 12 +- .../behandling/controller/ExceptionHandler.kt | 6 +- .../controller/InntekterController.kt | 28 +- ...ler.kt => VirkningstidspunktController.kt} | 40 ++- .../database/datamodell/Behandling.kt | 103 ++++-- .../database/datamodell/Enumtyper.kt | 11 +- .../database/datamodell/HusstandsBarn.kt | 10 +- .../datamodell/HusstandsBarnPeriode.kt | 13 +- .../database/datamodell/Husstandsbarn.kt | 30 ++ .../datamodell/Husstandsbarnperiode.kt | 29 ++ .../behandling/database/datamodell/Inntekt.kt | 14 +- .../{InntektPostDomain.kt => Inntektspost.kt} | 4 +- .../behandling/database/datamodell/Rolle.kt | 8 +- .../database/datamodell/Sivilstand.kt | 10 +- ...idetbarnetrygd.kt => UtvidetBarnetrygd.kt} | 12 +- .../repository/BehandlingRepository.kt | 32 +- .../dto/behandling/BehandlingDto.kt | 14 +- .../dto/behandling/CreateBehandlingRequest.kt | 28 +- .../dto/behandling/CreateRolleDto.kt | 19 +- .../behandling/dto/behandling/ForskuddDto.kt | 4 +- .../behandling/dto/behandling/RolleDto.kt | 16 +- .../dto/behandling/SivilstandDto.kt | 4 +- .../dto/beregning/ForskuddBeregningRespons.kt | 15 - .../beregning/Forskuddsberegningrespons.kt | 7 + .../husstandsbarn/HusstandsBarnPeriodeDto.kt | 4 +- .../dto/husstandsbarn/HusstandsbarnDto.kt | 2 +- .../behandling/dto/inntekt/InntektDto.kt | 9 +- .../dto/inntekt/InntekterResponse.kt | 2 +- ...equest.kt => OppdatereInntekterRequest.kt} | 8 +- ...rnetrygdDto.kt => UtvidetBarnetrygdDto.kt} | 2 +- ... => OppdatereVirkningstidspunktRequest.kt} | 10 +- ...ponse.kt => VirkningstidspunktResponse.kt} | 10 +- .../kafka/VedtakHendelseListener.kt | 2 +- .../behandling/service/BehandlingService.kt | 138 ++++---- .../behandling/service/ForskuddService.kt | 134 ++++++++ .../behandling/transformers/DtoExtensions.kt | 136 ++++---- .../transformers/Forskuddsmapping.kt | 133 ++++++++ src/main/resources/application.yaml | 9 + .../V1.0.35__alter_table_behandling.sql | 42 +++ .../V1.0.36__alter_table_sivilstand.sql | 14 + ...7__alter_table_barn_i_husstand_periode.sql | 14 + ...1.0.38__alter_table_utvidet_barnetrygd.sql | 16 + .../V1.0.39__delete_inntekt_type_null.sql | 19 ++ .../V1.0.40__alter_table_inntekt.sql | 15 + .../V1.0.41__alter_table_inntekt_post.sql | 14 + ...date_table_inntekt_column_inntektstype.sql | 17 + .../migration/V1.0.43__alter_table_rolle.sql | 19 ++ .../V1.0.44__alter_table_barn_i_husstand.sql | 17 + .../beregning/ForskuddBeregningTest.kt | 147 --------- .../BehandlingBeregnForskuddControllerTest.kt | 58 +++- .../controller/BehandlingControllerTest.kt | 289 +++++++++++++---- .../controller/BoforholdControllerTest.kt | 36 ++- .../controller/InntekterControllerTest.kt | 73 ++--- .../controller/OpplysningerControllerTest.kt | 68 +++- .../VirkningsTidspunktControllerTest.kt | 92 ------ .../VirkningstidspunktControllerTest.kt | 51 +++ .../behandling/hendelse/VedtakHendelseTest.kt | 22 +- .../service/BehandlingServiceTest.kt | 180 +++++++---- .../service/OpplysningerServiceTest.kt | 24 +- .../nav/bidrag/behandling/utils/Testdata.kt | 27 +- src/test/resources/application-test.yaml | 10 + 69 files changed, 1566 insertions(+), 1427 deletions(-) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragGrunnlagConsumer.kt rename src/main/kotlin/no/nav/bidrag/behandling/controller/{VirkningsTidspunktController.kt => VirkningstidspunktController.kt} (67%) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarn.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt rename src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/{InntektPostDomain.kt => Inntektspost.kt} (92%) rename src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/{Utvidetbarnetrygd.kt => UtvidetBarnetrygd.kt} (77%) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/Forskuddsberegningrespons.kt rename src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/{UpdateInntekterRequest.kt => OppdatereInntekterRequest.kt} (56%) rename src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/{UtvidetbarnetrygdDto.kt => UtvidetBarnetrygdDto.kt} (94%) rename src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/{UpdateVirkningsTidspunktRequest.kt => OppdatereVirkningstidspunktRequest.kt} (58%) rename src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/{VirkningsTidspunktResponse.kt => VirkningstidspunktResponse.kt} (59%) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/service/ForskuddService.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt create mode 100644 src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql create mode 100644 src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql create mode 100644 src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql create mode 100644 src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql create mode 100644 src/main/resources/db/migration/V1.0.39__delete_inntekt_type_null.sql create mode 100644 src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql create mode 100644 src/main/resources/db/migration/V1.0.41__alter_table_inntekt_post.sql create mode 100644 src/main/resources/db/migration/V1.0.42__update_table_inntekt_column_inntektstype.sql create mode 100644 src/main/resources/db/migration/V1.0.43__alter_table_rolle.sql create mode 100644 src/main/resources/db/migration/V1.0.44__alter_table_barn_i_husstand.sql delete mode 100644 src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt delete mode 100644 src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt create mode 100644 src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktControllerTest.kt diff --git a/pom.xml b/pom.xml index c23feed37..c15ef2ee4 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ 21 1.9.20 20231114143627_14d61cd - 20231123151257_652ccbb + 20231201123116_52f7fbf 7.4 3.1.8 2.2.0 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt index 5f1a7ef78..af71f8399 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/Exceptions.kt @@ -19,3 +19,6 @@ fun fantIkkeFødselsdatoTilSøknadsbarn(behandlingsid: Long): Nothing = HttpStatus.INTERNAL_SERVER_ERROR, "Fant ikke fødselsdato til søknadsbarn i behandling med id $behandlingsid", ) + +fun valideringAvBehandlingFeilet(valideringsfeil: List): Nothing = + throw HttpClientErrorException(HttpStatus.BAD_REQUEST, valideringsfeil.toString()) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt deleted file mode 100644 index 50d25cb69..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregning.kt +++ /dev/null @@ -1,294 +0,0 @@ -package no.nav.bidrag.behandling.beregning - -import arrow.core.Either -import arrow.core.NonEmptyList -import com.fasterxml.jackson.databind.node.POJONode -import no.nav.bidrag.behandling.beregning.model.BarnetilleggModel -import no.nav.bidrag.behandling.beregning.model.BehandlingBeregningModel -import no.nav.bidrag.behandling.beregning.model.HusstandsBarnPeriodeModel -import no.nav.bidrag.behandling.beregning.model.InntektModel -import no.nav.bidrag.behandling.beregning.model.SivilstandModel -import no.nav.bidrag.behandling.beregning.model.UtvidetbarnetrygdModel -import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.BoStatusType -import no.nav.bidrag.behandling.database.datamodell.Rolle -import no.nav.bidrag.behandling.database.datamodell.SivilstandType -import no.nav.bidrag.behandling.transformers.INFINITY -import no.nav.bidrag.behandling.transformers.toCompactString -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.domene.enums.grunnlag.Grunnlagstype -import no.nav.bidrag.domene.tid.ÅrMånedsperiode -import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag -import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag -import org.springframework.stereotype.Service -import java.math.BigDecimal -import java.time.LocalDate - -@Service -class ForskuddBeregning { - fun lagePersonobjektForSøknadsbarn( - soknadBarn: Rolle, - fødselsdato: String, - ): Grunnlag = - Grunnlag( - referanse = "Mottatt_SoknadsbarnInfo_SB" + soknadBarn.id, - type = Grunnlagstype.PERSON, - innhold = - POJONode( - SoknadsBarnNode( - ident = soknadBarn.ident ?: "", - navn = soknadBarn.navn ?: "", - fødselsdato = fødselsdato, - ), - ), - ) - - // TODO BostatusKode - private fun boStatusTypeToBoStatusKode(boStatusType: BoStatusType): BostatusKode = - if (boStatusType == BoStatusType.REGISTRERT_PA_ADRESSE - ) { - BostatusKode.BOR_MED_FORELDRE - } else { - BostatusKode.BOR_IKKE_MED_FORELDRE - } - - private fun prepareBostatus( - husstandsBarnPerioder: List, - søknadsbarn: Grunnlag, - ): List = - husstandsBarnPerioder - .filter { søknadsbarn.referanse == it.referanseTilBarn } - .map { - Grunnlag( - referanse = "Mottatt_Bostatus_" + it.datoFom.toCompactString(), - type = Grunnlagstype.BOSTATUS, - innhold = - POJONode( - BostatusNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "SOKNADSBARN", - bostatusKode = it.boStatus?.let { it1 -> boStatusTypeToBoStatusKode(it1).name }, - ), - ), - ) - } - - private fun prepareBarnIHusstand(behandlingBeregningModel: BehandlingBeregningModel): List = - splitPeriods(behandlingBeregningModel.husstandsBarnPerioder) - .map { - Grunnlag( - referanse = "Mottatt_BarnIHusstand_" + it.datoFom.replace("-", ""), - type = Grunnlagstype.BARN_I_HUSSTAND, - innhold = POJONode(it), - ) - } - - private fun prepareInntekterForBeregning( - inntekter: List, - barnetillegg: List, - utvidetbarnetrygd: List, - ): List = - inntekter - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_${it.inntektType}_${it.rolle}_${it.datoFom.toCompactString()}", - type = Grunnlagstype.INNTEKT, - innhold = - POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = it.rolle, - inntektType = it.inntektType, - belop = it.belop, - ), - ), - ) - } + - barnetillegg - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_TG" + it.datoFom.toCompactString(), - type = Grunnlagstype.INNTEKT, - innhold = - POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "BIDRAGSMOTTAKER", - inntektType = "EKSTRA_SMAABARNSTILLEGG", - belop = it.belop, - ), - ), - ) - } + - utvidetbarnetrygd - .map { - Grunnlag( - referanse = "Mottatt_Inntekt_UB" + it.datoFom.toCompactString(), - type = Grunnlagstype.INNTEKT, - innhold = - POJONode( - InntektNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - rolle = "BIDRAGSMOTTAKER", - inntektType = "UTVIDET_BARNETRYGD", - belop = it.belop, - ), - ), - ) - } - - // TODO SivilstandKode - private fun sivilstandTypeToSivilstandKode(sivilstandType: SivilstandType): SivilstandKode = - if (sivilstandType == SivilstandType.GIFT) { - SivilstandKode.GIFT - } else { - SivilstandKode.ENSLIG - } - - private fun prepareSivilstand(sivilstand: List): List = - sivilstand.map { - Grunnlag( - referanse = "Mottatt_Sivilstand_" + it.datoFom.toCompactString(), - type = Grunnlagstype.SIVILSTAND, - innhold = - POJONode( - SivilstandNode( - datoFom = it.datoFom.toNoString(), - datoTil = it.datoTom?.toNoString(), - sivilstandKode = sivilstandTypeToSivilstandKode(it.sivilstandType).name, - ), - ), - ) - } - - fun splitPeriods(husstandsBarnPerioder: List): List { - if (husstandsBarnPerioder.isEmpty()) return emptyList() - - val timesMap = - HashMap() - .toSortedMap() - - husstandsBarnPerioder.forEach { - val startDate = it.datoFom - - if (timesMap.contains(startDate)) { - val existingStart = timesMap[startDate]!! - existingStart.heads += 1 - } else { - timesMap[startDate] = PointInTimeInfo(1, 0) - } - - val endDate = it.datoTom ?: INFINITY - if (timesMap.contains(endDate)) { - val existingEnd = timesMap[endDate]!! - existingEnd.tails += 1 - } else { - timesMap[endDate] = PointInTimeInfo(0, 1) - } - } - - val list = timesMap.map { PointInTime(it.key, it.value) }.toList() - - val r = mutableListOf() - - var lastStartDate: LocalDate = list[0].point - var currentPeriods: Long = list[0].info.heads - - for (i in 1 until list.size) { - val nextDate = if (list[i].point == INFINITY) null else list[i].point - r.add( - BarnPeriodeNode( - lastStartDate.toNoString(), - nextDate?.toNoString(), - currentPeriods.toDouble(), - ), - ) - lastStartDate = list[i].point - currentPeriods = currentPeriods + list[i].info.heads - list[i].info.tails - } - - return r.filter { it.antall != 0.0 } - } - - fun toBehandlingBeregningModel(behandling: Behandling): Either, BehandlingBeregningModel> = - BehandlingBeregningModel.invoke( - behandlingId = behandling.id, - virkningsDato = behandling.virkningsDato, - datoTom = behandling.datoTom, - sivilstand = behandling.sivilstand, - inntekter = behandling.inntekter.filter { it.taMed }.toSet(), - barnetillegg = behandling.barnetillegg, - utvidetbarnetrygd = behandling.utvidetbarnetrygd, - husstandsBarn = behandling.husstandsBarn, - roller = behandling.roller, - ) - - fun toPayload( - b: BehandlingBeregningModel, - søknadsbarn: Grunnlag, - ): BeregnGrunnlag = - BeregnGrunnlag( - periode = ÅrMånedsperiode(b.virkningsDato, b.datoTom), - søknadsbarnReferanse = søknadsbarn.referanse, - grunnlagListe = - listOf(søknadsbarn) + - prepareBarnIHusstand(b) + - prepareBostatus(b.husstandsBarnPerioder, søknadsbarn) + - prepareInntekterForBeregning( - b.inntekter, - b.barnetillegg, - b.utvidetbarnetrygd, - ) + - prepareSivilstand(b.sivilstand), - ) -} - -data class PointInTimeInfo( - var heads: Long = 0, - var tails: Long = 0, -) - -data class PointInTime( - val point: LocalDate, - val info: PointInTimeInfo, -) - -data class BarnPeriodeNode( - val datoFom: String, - val datoTil: String? = null, - val antall: Double, -) - -data class BostatusNode( - val datoFom: String, - val datoTil: String? = null, - val rolle: String, - val bostatusKode: String?, -) - -data class SoknadsBarnNode( - val ident: String, - val navn: String, - val fødselsdato: String, -) - -data class InntektNode( - val datoFom: String?, - val datoTil: String?, - val rolle: String?, - val inntektType: String?, - val belop: BigDecimal?, -) - -data class SivilstandNode( - val datoFom: String?, - val datoTil: String?, - val sivilstandKode: String?, - val rolle: String = "BIDRAGSMOTTAKER", -) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt b/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt deleted file mode 100644 index 18830c075..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/beregning/model/BehandlingBeregningModel.kt +++ /dev/null @@ -1,178 +0,0 @@ -package no.nav.bidrag.behandling.beregning.model - -import arrow.core.Either -import arrow.core.NonEmptyList -import arrow.core.raise.either -import arrow.core.raise.ensure -import arrow.core.raise.zipOrAccumulate -import no.nav.bidrag.behandling.database.datamodell.Barnetillegg -import no.nav.bidrag.behandling.database.datamodell.BoStatusType -import no.nav.bidrag.behandling.database.datamodell.HusstandsBarn -import no.nav.bidrag.behandling.database.datamodell.Inntekt -import no.nav.bidrag.behandling.database.datamodell.Rolle -import no.nav.bidrag.behandling.database.datamodell.Sivilstand -import no.nav.bidrag.behandling.database.datamodell.SivilstandType -import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd -import no.nav.bidrag.behandling.transformers.toLocalDate -import no.nav.bidrag.domene.enums.rolle.Rolletype -import java.math.BigDecimal -import java.time.LocalDate -import java.util.Date - -fun Set.rolleType(ident: String): String { - val rolleType = this.find { it.ident == ident }?.rolleType - return when (rolleType) { - Rolletype.BIDRAGSPLIKTIG -> "BIDRAGSPLIKTIG" - Rolletype.BIDRAGSMOTTAKER -> "BIDRAGSMOTTAKER" - else -> rolleType?.name ?: "BIDRAGSMOTTAKER" - } -} - -data class BehandlingBeregningModel private constructor( - val behandlingId: Long, - val virkningsDato: LocalDate, - val datoTom: LocalDate, - val sivilstand: List, - val inntekter: List, - val barnetillegg: List, - val utvidetbarnetrygd: List, - val husstandsBarnPerioder: List, -) { - companion object { - operator fun invoke( - behandlingId: Long?, - virkningsDato: Date?, - datoTom: Date?, - sivilstand: Set, - inntekter: Set, - barnetillegg: Set, - utvidetbarnetrygd: Set, - husstandsBarn: Set, - roller: Set, - ): Either, BehandlingBeregningModel> = - either { - zipOrAccumulate( - { - ensure(behandlingId != null) { raise("Behandling id kan ikke være null") } - behandlingId - }, - { - ensure(virkningsDato != null) { raise("Behandling virkningsDato må fylles ut") } - virkningsDato.toLocalDate() - }, - { - ensure(datoTom != null) { raise("Behandling Dato Til må fylles ut") } - datoTom.toLocalDate() - }, - { - mapOrAccumulate(sivilstand) { - SivilstandModel( - it.datoFom?.toLocalDate() - ?: raise("Sivilstand Dato Fra må fylles ut"), - it.datoTom?.toLocalDate(), - it.sivilstandType, - ) - } - }, - { - mapOrAccumulate(inntekter.filter { it.taMed }) { - InntektModel( - inntektType = - it.inntektType - ?: raise("InntektType kan ikke være null"), - belop = it.belop, - rolle = roller.rolleType(it.ident), - datoFom = - it.datoFom?.toLocalDate() - ?: raise("Inntekts Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - ) - } - }, - { - mapOrAccumulate(barnetillegg) { - BarnetilleggModel( - datoFom = - it.datoFom?.toLocalDate() - ?: raise("Barnetillegg Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - belop = it.barnetillegg, - ) - } - }, - { - mapOrAccumulate(utvidetbarnetrygd) { - UtvidetbarnetrygdModel( - datoFom = - it.datoFom?.toLocalDate() - ?: raise("Utvidetbarnetrygd Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - belop = it.belop, - ) - } - }, - { - mapOrAccumulate( - husstandsBarn.filter { it.medISaken } - .flatMap { it.perioder }, - ) { - HusstandsBarnPeriodeModel( - datoFom = - it.datoFom?.toLocalDate() - ?: raise("HusstandsBarnPeriode Dato Fra må fylles ut"), - datoTom = it.datoTom?.toLocalDate(), - referanseTilBarn = it.husstandsBarn.ident, - boStatus = it.boStatus, - ) - } - }, - ) { behandlingId, virkningsDato, datoTom, sivilstand, inntekter, barnetillegg, utvidetbarnetrygd, husstandsBarnPerioder -> - BehandlingBeregningModel( - behandlingId, - virkningsDato, - datoTom, - sivilstand, - inntekter, - barnetillegg, - utvidetbarnetrygd, - husstandsBarnPerioder, - ) - } - } - } -} - -data class HusstandsBarnPeriodeModel( - val datoFom: LocalDate, - val datoTom: LocalDate? = null, - val referanseTilBarn: String?, - val boStatus: BoStatusType?, - // TODO ENDRE til bostatusKode fra felles - // import no.nav.bidrag.beregn.felles.enums.BostatusKode -) - -data class SivilstandModel( - val datoFom: LocalDate, - val datoTom: LocalDate? = null, - val sivilstandType: SivilstandType, -) - -data class InntektModel( - val inntektType: String, - val belop: BigDecimal, - val rolle: String, - val datoFom: LocalDate, - val datoTom: LocalDate? = null, -) - -data class BarnetilleggModel( - val datoFom: LocalDate, - val datoTom: LocalDate? = null, - val belop: BigDecimal, -) - -data class UtvidetbarnetrygdModel( - val datoFom: LocalDate, - val datoTom: LocalDate? = null, - val belop: BigDecimal, -) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt index 816e66454..1aefafbb0 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragBeregnForskuddConsumer.kt @@ -1,8 +1,8 @@ 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.behandling.beregning.felles.BeregnGrunnlag +import no.nav.bidrag.transport.behandling.beregning.forskudd.BeregnetForskuddResultat import org.springframework.beans.factory.annotation.Qualifier import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service @@ -19,5 +19,5 @@ class BidragBeregnForskuddConsumer( UriComponentsBuilder.fromUri(bidragBeregnForskuddUrl).pathSegment("beregn") .pathSegment("forskudd").build().toUri() - fun beregnForskudd(payload: BeregnGrunnlag): ForskuddDto = postForNonNullEntity(beregnForskuddUri, payload) + fun beregnForskudd(payload: BeregnGrunnlag): BeregnetForskuddResultat = postForNonNullEntity(beregnForskuddUri, payload) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragGrunnlagConsumer.kt b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragGrunnlagConsumer.kt new file mode 100644 index 000000000..7fe20d815 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/consumer/BidragGrunnlagConsumer.kt @@ -0,0 +1,21 @@ +package no.nav.bidrag.behandling.consumer + +import no.nav.bidrag.commons.web.client.AbstractRestClient +import no.nav.bidrag.transport.behandling.grunnlag.response.HentGrunnlagspakkeDto +import org.springframework.beans.factory.annotation.Qualifier +import org.springframework.beans.factory.annotation.Value +import org.springframework.stereotype.Component +import org.springframework.web.client.RestTemplate +import org.springframework.web.util.UriComponentsBuilder +import java.net.URI + +@Component +class BidragGrunnlagConsumer( + @Value("\${BIDRAG_GRUNNLAG_URL}") private val bidragGrunnlagUrl: URI, + @Qualifier("azure") restTemplate: RestTemplate, +) : AbstractRestClient(restTemplate, "bidrag-grunnlag") { + private val bidragGrunnlagUri get() = UriComponentsBuilder.fromUri(bidragGrunnlagUrl).pathSegment("grunnlagspakke") + + fun henteGrunnlagspakke(grunnlagspakkeid: Long): HentGrunnlagspakkeDto = + getForNonNullEntity(bidragGrunnlagUri.pathSegment(grunnlagspakkeid.toString()).build().toUri()) +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index 24aeb912d..4573dc579 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -1,43 +1,23 @@ package no.nav.bidrag.behandling.controller -import arrow.core.mapOrAccumulate -import arrow.core.raise.either import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement import mu.KotlinLogging -import no.nav.bidrag.behandling.beregning.ForskuddBeregning -import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer -import no.nav.bidrag.behandling.consumer.BidragPersonConsumer -import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn -import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons -import no.nav.bidrag.behandling.fantIkkeFødselsdatoTilSøknadsbarn +import no.nav.bidrag.behandling.dto.beregning.Forskuddsberegningrespons import no.nav.bidrag.behandling.service.BehandlingService -import no.nav.bidrag.behandling.transformers.toLocalDate -import no.nav.bidrag.behandling.transformers.toNoString +import no.nav.bidrag.behandling.service.ForskuddService +import org.springframework.http.HttpStatus import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.client.HttpClientErrorException -import java.time.LocalDate private val LOGGER = KotlinLogging.logger {} @BehandlingRestController class BehandlingBeregnForskuddController( private val behandlingService: BehandlingService, - private val bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer, - private val forskuddBeregning: ForskuddBeregning, - private val bidragPersonConsumer: BidragPersonConsumer, + private val forskuddService: ForskuddService, ) { - private fun isPeriodOneWithinPeriodTwo( - datoFom1: LocalDate?, - datoTom1: LocalDate?, - datoFom2: LocalDate, - datoTom2: LocalDate?, - ) = (datoFom1 === null || datoFom1 > datoFom2 || datoFom1.isEqual(datoFom2)) && ( - (datoTom2 == null && datoTom1 == null) || - (datoTom1 != null && (datoTom2 == null || datoTom1 < datoTom2 || datoTom1.isEqual(datoTom2))) - ) - @Suppress("unused") @PostMapping("/behandling/{behandlingId}/beregn") @Operation( @@ -46,65 +26,11 @@ class BehandlingBeregnForskuddController( ) fun beregnForskudd( @PathVariable behandlingId: Long, - ): ForskuddBeregningRespons { + ): Forskuddsberegningrespons { val behandling = behandlingService.hentBehandlingById(behandlingId) - val result = - either { - val behandlingModel = forskuddBeregning.toBehandlingBeregningModel(behandling).bind() - val results = - behandling - .getSøknadsBarn() - .mapOrAccumulate { - val fødselsdatoSøknadsbarn = - if (it.fodtDato == null && it.ident != null) { - bidragPersonConsumer.hentPerson(it.ident).fødselsdato - } else { - it.fodtDato?.toLocalDate()?.toNoString() ?: null - } - - // Avbryter prosesering dersom fødselsdato til søknadsbarn er ukjent - if (fødselsdatoSøknadsbarn == null) { - fantIkkeFødselsdatoTilSøknadsbarn(behandlingId) - } - - var søknadsbarn = - forskuddBeregning.lagePersonobjektForSøknadsbarn(it, fødselsdatoSøknadsbarn) - - val payload = forskuddBeregning.toPayload(behandlingModel, søknadsbarn) - - try { - val respons = - bidragBeregnForskuddConsumer.beregnForskudd(payload) - val beregnetForskuddPeriodeListe = respons.beregnetForskuddPeriodeListe - beregnetForskuddPeriodeListe.forEach { r -> - r.sivilstandType = - behandlingModel.sivilstand.find { sivilstand -> - isPeriodOneWithinPeriodTwo( - r.periode.datoFom, - r.periode.datoTil, - sivilstand.datoFom, - sivilstand.datoTom, - ) - }?.sivilstandType - } - ForskuddBeregningPerBarn( - referanseTilBarn = søknadsbarn.referanse, - beregnetForskuddPeriodeListe = beregnetForskuddPeriodeListe, - grunnlagListe = respons.grunnlagListe, - ) - } catch (e: HttpClientErrorException) { - LOGGER.warn { e } - val errors = e.responseHeaders?.get("error")?.joinToString("\r\n") - raise(errors ?: e.message!!) - } catch (e: Exception) { - LOGGER.warn { e } - raise(e.message!!) - } - }.bind() - return@either results - } + if (behandling.id == null) throw HttpClientErrorException(HttpStatus.NOT_FOUND) - return ForskuddBeregningRespons(result.getOrNull(), result.leftOrNull()) + return forskuddService.beregneForskudd(behandling.id) } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt index ec97a2e45..87caa192a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt @@ -11,16 +11,14 @@ import no.nav.bidrag.behandling.dto.behandling.BehandlingDto import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingRequest import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto -import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.behandling.RolleDto import no.nav.bidrag.behandling.dto.behandling.SyncRollerRequest import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto -import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toRolle -import no.nav.bidrag.behandling.transformers.toRolleTypeDto import no.nav.bidrag.behandling.transformers.toSivilstandDto +import no.nav.bidrag.domene.enums.rolle.Rolletype import org.apache.commons.lang3.Validate import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable @@ -54,29 +52,25 @@ class BehandlingController(private val behandlingService: BehandlingService) { @RequestBody(required = true) createBehandling: CreateBehandlingRequest, ): CreateBehandlingResponse { - ingenBarnMedVerkenIdentEllerNavn(createBehandling.roller) - Validate.isTrue( ingenBarnMedVerkenIdentEllerNavn(createBehandling.roller) && - ingenVoksneUtenIdent( - createBehandling.roller, - ), + ingenVoksneUtenIdent(createBehandling.roller), ) val behandling = Behandling( - createBehandling.behandlingType, - createBehandling.soknadType, + createBehandling.behandlingstype, + createBehandling.søknadstype, createBehandling.datoFom, createBehandling.datoTom, - createBehandling.mottatDato, + createBehandling.mottattdato, createBehandling.saksnummer, - createBehandling.soknadId, - createBehandling.soknadRefId, - createBehandling.behandlerEnhet, - createBehandling.soknadFra, - createBehandling.stonadType, - createBehandling.engangsbelopType, + createBehandling.søknadsid, + createBehandling.søknadsreferanseid, + createBehandling.behandlerenhet, + createBehandling.søknadFra, + createBehandling.stønadstype, + createBehandling.engangsbeløpstype, ) val roller = HashSet( @@ -89,9 +83,9 @@ class BehandlingController(private val behandlingService: BehandlingService) { val behandlingDo = behandlingService.createBehandling(behandling) LOGGER.info { - "Opprettet behandling for behandlingType ${createBehandling.behandlingType} " + - "soknadType ${createBehandling.soknadType} " + - "og soknadFra ${createBehandling.soknadFra} " + + "Opprettet behandling for behandlingType ${createBehandling.behandlingstype} " + + "soknadType ${createBehandling.søknadstype} " + + "og soknadFra ${createBehandling.søknadFra} " + "med id ${behandlingDo.id} " } return CreateBehandlingResponse(behandlingDo.id!!) @@ -179,30 +173,30 @@ class BehandlingController(private val behandlingService: BehandlingService) { ) = BehandlingDto( behandlingId, behandling.behandlingType, - behandling.soknadType, - behandling.vedtakId != null, - behandling.datoFom.toLocalDate(), - behandling.datoTom.toLocalDate(), - behandling.mottatDato.toLocalDate(), + behandling.soknadstype, + behandling.vedtaksid != null, + behandling.datoFom, + behandling.datoTom, + behandling.mottattdato, behandling.soknadFra, behandling.saksnummer, - behandling.soknadId, + behandling.soknadsid, behandling.behandlerEnhet, behandling.roller.map { - RolleDto(it.id!!, it.rolleType.toRolleTypeDto(), it.ident, it.navn, it.fodtDato, it.opprettetDato) + RolleDto(it.id!!, it.rolletype, it.ident, it.navn, it.foedselsdato) }.toSet(), - behandling.husstandsBarn.toHusstandsBarnDto(), + behandling.husstandsbarn.toHusstandsBarnDto(), behandling.sivilstand.toSivilstandDto(), - behandling.virkningsDato?.toLocalDate(), + behandling.virkningsdato, behandling.soknadRefId, - behandling.grunnlagspakkeId, + behandling.grunnlagspakkeid, behandling.aarsak, - behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, - behandling.virkningsTidspunktBegrunnelseKunINotat, - behandling.boforholdBegrunnelseMedIVedtakNotat, - behandling.boforholdBegrunnelseKunINotat, - behandling.inntektBegrunnelseMedIVedtakNotat, - behandling.inntektBegrunnelseKunINotat, + behandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + behandling.virkningstidspunktbegrunnelseKunINotat, + behandling.boforholdsbegrunnelseIVedtakOgNotat, + behandling.boforholdsbegrunnelseKunINotat, + behandling.inntektsbegrunnelseIVedtakOgNotat, + behandling.inntektsbegrunnelseKunINotat, ) @Suppress("unused") @@ -227,11 +221,12 @@ class BehandlingController(private val behandlingService: BehandlingService) { } private fun ingenBarnMedVerkenIdentEllerNavn(roller: Set): Boolean { - return roller.filter { r -> r.rolleType == CreateRolleRolleType.BARN && r.ident.isNullOrBlank() } + return roller.filter { r -> r.rolletype == Rolletype.BARN && r.ident.isNullOrBlank() } .none { r -> r.navn.isNullOrBlank() } } private fun ingenVoksneUtenIdent(roller: Set): Boolean { - return roller.filter { r -> r.rolleType != CreateRolleRolleType.BARN && r.ident.isNullOrBlank() }.none() + return roller.filter { r -> r.rolletype != Rolletype.BARN && r.ident.isNullOrBlank() } + .none() } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt index 64ad5f27f..98162e64d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt @@ -39,10 +39,10 @@ class BoforholdController(private val behandlingService: BehandlingService) { val updatedBehandling = behandlingService.hentBehandlingById(behandlingId) return BoforholdResponse( - updatedBehandling.husstandsBarn.toHusstandsBarnDto(), + updatedBehandling.husstandsbarn.toHusstandsBarnDto(), updatedBehandling.sivilstand.toSivilstandDto(), - updatedBehandling.boforholdBegrunnelseMedIVedtakNotat, - updatedBehandling.boforholdBegrunnelseKunINotat, + updatedBehandling.boforholdsbegrunnelseIVedtakOgNotat, + updatedBehandling.boforholdsbegrunnelseKunINotat, ) } @@ -58,10 +58,10 @@ class BoforholdController(private val behandlingService: BehandlingService) { val behandling = behandlingService.hentBehandlingById(behandlingId) return BoforholdResponse( - behandling.husstandsBarn.toHusstandsBarnDto(), + behandling.husstandsbarn.toHusstandsBarnDto(), behandling.sivilstand.toSivilstandDto(), - behandling.boforholdBegrunnelseMedIVedtakNotat, - behandling.boforholdBegrunnelseKunINotat, + behandling.boforholdsbegrunnelseIVedtakOgNotat, + behandling.boforholdsbegrunnelseKunINotat, ) } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt index b69e1bd8d..e059ff5cb 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt @@ -60,7 +60,11 @@ class ExceptionHandler { private fun getErrorMessage(exception: HttpStatusCodeException): String { val errorMessage = StringBuilder() - errorMessage.append("Det skjedde en feil ved kall mot ekstern tjeneste: ") + if (exception.statusText == null) { + errorMessage.append("Det skjedde en feil ved kall mot ekstern tjeneste: ") + } else { + errorMessage.append("Validering feilet") + } exception.responseHeaders?.get(HttpHeaders.WARNING)?.firstOrNull()?.let { errorMessage.append(it) } if (exception.statusText.isNotEmpty()) { errorMessage.append(" - ") 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..e7bbc60cd 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponses 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.dto.inntekt.OppdatereInntekterRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toBarnetilleggDomain import no.nav.bidrag.behandling.transformers.toBarnetilleggDto @@ -39,7 +39,7 @@ class InntekterController(private val behandlingService: BehandlingService) { ) fun oppdaterInntekter( @PathVariable behandlingId: Long, - @RequestBody request: UpdateInntekterRequest, + @RequestBody request: OppdatereInntekterRequest, ): InntekterResponse { var behandling = behandlingService.hentBehandlingById(behandlingId) @@ -47,19 +47,19 @@ class InntekterController(private val behandlingService: BehandlingService) { behandlingId, request.inntekter.toInntektDomain(behandling!!), request.barnetillegg.toBarnetilleggDomain(behandling), - request.utvidetbarnetrygd.toUtvidetbarnetrygdDomain(behandling), - request.inntektBegrunnelseMedIVedtakNotat, - request.inntektBegrunnelseKunINotat, + request.utvidetBarnetrygd.toUtvidetbarnetrygdDomain(behandling), + request.inntektsbegrunnelseIVedtakOgNotat, + request.inntektsbegrunnelseKunINotat, ) - val newBehandling = behandlingService.hentBehandlingById(behandlingId) + val nyBehandling = behandlingService.hentBehandlingById(behandlingId) return InntekterResponse( - newBehandling.inntekter.toInntektDto(), - newBehandling.barnetillegg.toBarnetilleggDto(), - newBehandling.utvidetbarnetrygd.toUtvidetbarnetrygdDto(), - newBehandling.inntektBegrunnelseMedIVedtakNotat, - newBehandling.inntektBegrunnelseKunINotat, + nyBehandling.inntekter.toInntektDto(), + nyBehandling.barnetillegg.toBarnetilleggDto(), + nyBehandling.utvidetBarnetrygd.toUtvidetbarnetrygdDto(), + nyBehandling.inntektsbegrunnelseIVedtakOgNotat, + nyBehandling.inntektsbegrunnelseKunINotat, ) } @@ -88,9 +88,9 @@ class InntekterController(private val behandlingService: BehandlingService) { return InntekterResponse( behandling.inntekter.toInntektDto(), behandling.barnetillegg.toBarnetilleggDto(), - behandling.utvidetbarnetrygd.toUtvidetbarnetrygdDto(), - behandling.inntektBegrunnelseMedIVedtakNotat, - behandling.inntektBegrunnelseKunINotat, + behandling.utvidetBarnetrygd.toUtvidetbarnetrygdDto(), + behandling.inntektsbegrunnelseIVedtakOgNotat, + behandling.inntektsbegrunnelseKunINotat, ) } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktController.kt similarity index 67% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktController.kt index b2434a38e..9007f50e4 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktController.kt @@ -4,18 +4,16 @@ import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponses import io.swagger.v3.oas.annotations.security.SecurityRequirement -import no.nav.bidrag.behandling.dto.virkningstidspunkt.UpdateVirkningsTidspunktRequest -import no.nav.bidrag.behandling.dto.virkningstidspunkt.VirkningsTidspunktResponse +import no.nav.bidrag.behandling.dto.virkningstidspunkt.OppdatereVirkningstidspunktRequest +import no.nav.bidrag.behandling.dto.virkningstidspunkt.VirkningstidspunktResponse import no.nav.bidrag.behandling.service.BehandlingService -import no.nav.bidrag.behandling.transformers.toDate -import no.nav.bidrag.behandling.transformers.toLocalDate import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody @BehandlingRestController -class VirkningsTidspunktController(private val behandlingService: BehandlingService) { +class VirkningstidspunktController(private val behandlingService: BehandlingService) { @Suppress("unused") @PutMapping("/behandling/{behandlingId}/virkningstidspunkt") @Operation( @@ -35,23 +33,23 @@ class VirkningsTidspunktController(private val behandlingService: BehandlingServ ) fun oppdaterVirkningsTidspunkt( @PathVariable behandlingId: Long, - @RequestBody updateVirkningsTidspunktRequest: UpdateVirkningsTidspunktRequest, - ): VirkningsTidspunktResponse { - behandlingService.updateVirkningsTidspunkt( + @RequestBody oppdatereVirkningsTidspunktRequest: OppdatereVirkningstidspunktRequest, + ): VirkningstidspunktResponse { + behandlingService.oppdatereVirkningstidspunkt( behandlingId, - updateVirkningsTidspunktRequest.aarsak, - updateVirkningsTidspunktRequest.virkningsDato?.toDate(), - updateVirkningsTidspunktRequest.virkningsTidspunktBegrunnelseKunINotat, - updateVirkningsTidspunktRequest.virkningsTidspunktBegrunnelseMedIVedtakNotat, + oppdatereVirkningsTidspunktRequest.årsak, + oppdatereVirkningsTidspunktRequest.virkningsdato, + oppdatereVirkningsTidspunktRequest.virkningstidspunktsbegrunnelseKunINotat, + oppdatereVirkningsTidspunktRequest.virkningstidspunktsbegrunnelseIVedtakOgNotat, ) val behandling = behandlingService.hentBehandlingById(behandlingId) - return VirkningsTidspunktResponse( - behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, - behandling.virkningsTidspunktBegrunnelseKunINotat, + return VirkningstidspunktResponse( + behandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + behandling.virkningstidspunktbegrunnelseKunINotat, behandling.aarsak, - behandling.virkningsDato?.toLocalDate(), + behandling.virkningsdato, ) } @@ -74,13 +72,13 @@ class VirkningsTidspunktController(private val behandlingService: BehandlingServ ) fun hentVirkningsTidspunkt( @PathVariable behandlingId: Long, - ): VirkningsTidspunktResponse { + ): VirkningstidspunktResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) - return VirkningsTidspunktResponse( - behandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, - behandling.virkningsTidspunktBegrunnelseKunINotat, + return VirkningstidspunktResponse( + behandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + behandling.virkningstidspunktbegrunnelseKunINotat, behandling.aarsak, - behandling.virkningsDato?.toLocalDate(), + behandling.virkningsdato, ) } } 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..91089169d 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 @@ -1,5 +1,10 @@ package no.nav.bidrag.behandling.database.datamodell +import arrow.core.Either +import arrow.core.NonEmptyList +import arrow.core.raise.either +import arrow.core.raise.ensure +import arrow.core.raise.zipOrAccumulate import jakarta.persistence.CascadeType import jakarta.persistence.Column import jakarta.persistence.Entity @@ -16,7 +21,8 @@ import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import no.nav.bidrag.domene.enums.vedtak.Stønadstype import org.hibernate.annotations.SQLDelete import org.hibernate.annotations.Where -import java.util.Date +import java.time.LocalDate +import java.time.LocalDateTime @Entity(name = "behandling") @SQLDelete(sql = "UPDATE behandling SET deleted = true WHERE id=?") @@ -26,40 +32,41 @@ class Behandling( val behandlingType: Behandlingstype, // TODO Endre til Vedtakstype @Enumerated(EnumType.STRING) - val soknadType: SoknadType, - val datoFom: Date, - val datoTom: Date, - val mottatDato: Date, + val soknadstype: Soknadstype, + val datoFom: LocalDate, + val datoTom: LocalDate, + val mottattdato: LocalDate, val saksnummer: String, - val soknadId: Long, + val soknadsid: Long, val soknadRefId: Long? = null, val behandlerEnhet: String, @Enumerated(EnumType.STRING) val soknadFra: SøktAvType, @Enumerated(EnumType.STRING) - var stonadType: Stønadstype?, + var stonadstype: Stønadstype?, @Enumerated(EnumType.STRING) - var engangsbelopType: Engangsbeløptype?, - var vedtakId: Long? = null, - var virkningsDato: Date? = null, + var engangsbeloptype: Engangsbeløptype?, + var vedtaksid: Long? = null, + var virkningsdato: LocalDate? = null, @Enumerated(EnumType.STRING) var aarsak: ForskuddAarsakType? = null, - @Column(name = "VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT") - var virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, - @Column(name = "VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT") - var virkningsTidspunktBegrunnelseKunINotat: String? = null, - @Column(name = "BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT") - var boforholdBegrunnelseMedIVedtakNotat: String? = null, - @Column(name = "BOFORHOLD_BEGRUNNELSE_KUN_I_NOTAT") - var boforholdBegrunnelseKunINotat: String? = null, - @Column(name = "INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT") - var inntektBegrunnelseMedIVedtakNotat: String? = null, - @Column(name = "INNTEKT_BEGRUNNELSE_KUN_I_NOTAT") - var inntektBegrunnelseKunINotat: String? = null, + @Column(name = "VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT") + var virkningstidspunktsbegrunnelseIVedtakOgNotat: String? = null, + @Column(name = "VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT") + var virkningstidspunktbegrunnelseKunINotat: String? = null, + @Column(name = "BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT") + var boforholdsbegrunnelseIVedtakOgNotat: String? = null, + @Column(name = "BOFORHOLDSBEGRUNNELSE_KUN_NOTAT") + var boforholdsbegrunnelseKunINotat: String? = null, + @Column(name = "INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT") + var inntektsbegrunnelseIVedtakOgNotat: String? = null, + @Column(name = "INNTEKTSBEGRUNNELSE_KUN_NOTAT") + var inntektsbegrunnelseKunINotat: String? = null, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, - var grunnlagspakkeId: Long? = null, + var grunnlagspakkeid: Long? = null, + var grunnlagSistInnhentet: LocalDateTime? = null, @OneToMany( fetch = FetchType.EAGER, mappedBy = "behandling", @@ -73,7 +80,7 @@ class Behandling( cascade = [CascadeType.ALL], orphanRemoval = true, ) - var husstandsBarn: MutableSet = mutableSetOf(), + var husstandsbarn: MutableSet = mutableSetOf(), @OneToMany( fetch = FetchType.EAGER, mappedBy = "behandling", @@ -101,8 +108,52 @@ class Behandling( cascade = [CascadeType.ALL], orphanRemoval = true, ) - var utvidetbarnetrygd: MutableSet = mutableSetOf(), + var utvidetBarnetrygd: MutableSet = mutableSetOf(), var deleted: Boolean = false, ) { - fun getSøknadsBarn() = roller.filter { it.rolleType == Rolletype.BARN } + fun getSøknadsbarn() = roller.filter { it.rolletype == Rolletype.BARN } } + +fun Behandling.validere(): Either, Behandling> = + either { + zipOrAccumulate( + { ensure(this@validere.id != null) { raise("Behandlingsid mangler") } }, + { ensure(this@validere.datoTom != null) { raise("Til-dato mangler for behandling") } }, + { ensure(this@validere.virkningsdato != null) { raise("Virkningsdato mangler for behandling") } }, + { ensure(this@validere.saksnummer.isNotBlank()) { raise("Saksnummer mangler for behandling") } }, + { + mapOrAccumulate(sivilstand) { + ensure(it.datoFom != null) { raise("Til-dato mangler for sivilstand i behandling") } + } + }, + { + mapOrAccumulate(inntekter.filter { it.taMed }) { + ensure(it.datoFom != null) { raise("Til-dato mangler for sivilstand i behandling") } + ensure(it.inntektstype != null) { raise("Inntektstype mangler for behandling") } + it + } + }, + { + mapOrAccumulate(utvidetBarnetrygd) { + ensure(it.datoFom != null) { raise("Fra-dato mangler for utvidet barnetrygd i behandling") } + } + }, + { + mapOrAccumulate(barnetillegg) { + ensure(it.datoFom != null) { raise("Fra-dato mangler for barnetillegg i behandling") } + } + }, + { + ensure(this@validere.husstandsbarn.size > 0) { raise("Husstandsbarn mangler i behandling") } + mapOrAccumulate(husstandsbarn.filter { it.medISaken }.flatMap { it.perioder }) { + ensure(it.datoFom != null) { raise("Fra-dato mangler for husstandsbarnpreiode i behandling") } + it + } + }, + ) { _, _, _, _, _, _, _, _, _ -> + var behandling = this@validere + behandling.inntekter = inntekter + behandling.husstandsbarn = husstandsbarn + behandling + } + } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt index eb3901938..d218897b7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Enumtyper.kt @@ -3,7 +3,7 @@ package no.nav.bidrag.behandling.database.datamodell import io.swagger.v3.oas.annotations.media.Schema @Schema(enumAsRef = true) -enum class BoStatusType { +enum class Bostatustype { IKKE_REGISTRERT_PA_ADRESSE, REGISTRERT_PA_ADRESSE, } @@ -20,13 +20,6 @@ enum class OpplysningerType { BOFORHOLD, } -// TODO Bruk Sivilstandstype fra bidrag-domain istedenfor -@Schema(enumAsRef = true) -enum class SivilstandType { - BOR_ALENE_MED_BARN, - GIFT, -} - @Schema(enumAsRef = true) enum class Behandlingstype { BIDRAG, @@ -38,7 +31,7 @@ enum class Behandlingstype { } @Schema(enumAsRef = true) -enum class SoknadType { +enum class Soknadstype { INDEKSREGULERING, ALDERSJUSTERING, OPPHØR, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt index 63b264753..fbaab29d8 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt @@ -10,10 +10,10 @@ import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne import jakarta.persistence.OneToMany -import java.util.Date +import java.time.LocalDate @Entity(name = "barn_i_husstand") -class HusstandsBarn( +class Husstandsbarn( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, @@ -24,7 +24,7 @@ class HusstandsBarn( val id: Long? = null, val ident: String? = null, val navn: String? = null, - val foedselsDato: Date? = null, - @OneToMany(fetch = FetchType.EAGER, mappedBy = "husstandsBarn", cascade = [CascadeType.ALL], orphanRemoval = true) - var perioder: MutableSet = mutableSetOf(), + val foedselsdato: LocalDate, + @OneToMany(fetch = FetchType.EAGER, mappedBy = "husstandsbarn", cascade = [CascadeType.ALL], orphanRemoval = true) + var perioder: MutableSet = mutableSetOf(), ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt index c9e58d53f..84207b8c8 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt @@ -9,17 +9,18 @@ import jakarta.persistence.GenerationType import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne -import java.util.Date +import no.nav.bidrag.domene.enums.person.Bostatuskode +import java.time.LocalDate @Entity(name = "barn_i_husstand_periode") -class HusstandsBarnPeriode( +class Husstandsbarnperiode( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "barn_i_husstand_id", nullable = false) - val husstandsBarn: HusstandsBarn, - val datoFom: Date?, - val datoTom: Date?, + val husstandsbarn: Husstandsbarn, + val datoFom: LocalDate?, + val datoTom: LocalDate?, @Enumerated(EnumType.STRING) - val boStatus: BoStatusType?, + val bostatus: Bostatuskode, @Enumerated(EnumType.STRING) val kilde: Kilde, @Id diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarn.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarn.kt new file mode 100644 index 000000000..fbaab29d8 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarn.kt @@ -0,0 +1,30 @@ +package no.nav.bidrag.behandling.database.datamodell + +import jakarta.persistence.CascadeType +import jakarta.persistence.Column +import jakarta.persistence.Entity +import jakarta.persistence.FetchType +import jakarta.persistence.GeneratedValue +import jakarta.persistence.GenerationType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import jakarta.persistence.OneToMany +import java.time.LocalDate + +@Entity(name = "barn_i_husstand") +class Husstandsbarn( + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "behandling_id", nullable = false) + val behandling: Behandling, + @Column(name = "med_i_saken") + val medISaken: Boolean, + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long? = null, + val ident: String? = null, + val navn: String? = null, + val foedselsdato: LocalDate, + @OneToMany(fetch = FetchType.EAGER, mappedBy = "husstandsbarn", cascade = [CascadeType.ALL], orphanRemoval = true) + var perioder: MutableSet = mutableSetOf(), +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt new file mode 100644 index 000000000..84207b8c8 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt @@ -0,0 +1,29 @@ +package no.nav.bidrag.behandling.database.datamodell + +import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated +import jakarta.persistence.FetchType +import jakarta.persistence.GeneratedValue +import jakarta.persistence.GenerationType +import jakarta.persistence.Id +import jakarta.persistence.JoinColumn +import jakarta.persistence.ManyToOne +import no.nav.bidrag.domene.enums.person.Bostatuskode +import java.time.LocalDate + +@Entity(name = "barn_i_husstand_periode") +class Husstandsbarnperiode( + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "barn_i_husstand_id", nullable = false) + val husstandsbarn: Husstandsbarn, + val datoFom: LocalDate?, + val datoTom: LocalDate?, + @Enumerated(EnumType.STRING) + val bostatus: Bostatuskode, + @Enumerated(EnumType.STRING) + val kilde: Kilde, + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val id: Long? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt index 1944608e0..de3e833b6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntekt.kt @@ -2,6 +2,8 @@ package no.nav.bidrag.behandling.database.datamodell import jakarta.persistence.CascadeType import jakarta.persistence.Entity +import jakarta.persistence.EnumType +import jakarta.persistence.Enumerated import jakarta.persistence.FetchType import jakarta.persistence.GeneratedValue import jakarta.persistence.GenerationType @@ -9,15 +11,17 @@ import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne import jakarta.persistence.OneToMany +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import java.math.BigDecimal -import java.util.Date +import java.time.LocalDate @Entity(name = "inntekt") class Inntekt( - val inntektType: String?, + @Enumerated(EnumType.STRING) + val inntektstype: Inntektsrapportering, val belop: BigDecimal, - val datoFom: Date?, - val datoTom: Date?, + val datoFom: LocalDate, + val datoTom: LocalDate?, val ident: String, val fraGrunnlag: Boolean, val taMed: Boolean, @@ -28,5 +32,5 @@ class Inntekt( @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling? = null, @OneToMany(fetch = FetchType.EAGER, mappedBy = "inntekt", cascade = [CascadeType.ALL], orphanRemoval = true) - var inntektPostListe: MutableSet = mutableSetOf(), + var inntektsposter: MutableSet = mutableSetOf(), ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntektspost.kt similarity index 92% rename from src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt rename to src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntektspost.kt index 729b656ac..70cd315ff 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/InntektPostDomain.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Inntektspost.kt @@ -10,8 +10,8 @@ import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne import java.math.BigDecimal -@Entity(name = "inntekt_post") -class InntektPostDomain( +@Entity(name = "inntektspost") +class Inntektspost( @Column(name = "belop") val beløp: BigDecimal, val kode: String, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt index 4e14562a2..cc8efcac6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt @@ -12,7 +12,7 @@ import jakarta.persistence.ManyToOne import no.nav.bidrag.domene.enums.rolle.Rolletype import org.hibernate.annotations.SQLDelete import org.hibernate.annotations.Where -import java.util.Date +import java.time.LocalDate @Entity(name = "rolle") @SQLDelete(sql = "UPDATE rolle SET deleted = true WHERE id=?") @@ -22,10 +22,10 @@ class Rolle( @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, @Enumerated(EnumType.STRING) - val rolleType: Rolletype, + val rolletype: Rolletype, val ident: String?, - val fodtDato: Date?, - val opprettetDato: Date?, + val foedselsdato: LocalDate, + val opprettetDato: LocalDate?, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt index 7499187ea..42d75faf7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt @@ -9,17 +9,17 @@ import jakarta.persistence.GenerationType import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne -import java.util.Date +import java.time.LocalDate +// TODO: koble sammen med rolletabellen @Entity(name = "sivilstand") class Sivilstand( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, - val datoFom: Date?, - val datoTom: Date?, - @Enumerated(EnumType.STRING) - val sivilstandType: SivilstandType, + val datoFom: LocalDate? = null, + val datoTom: LocalDate? = null, + val sivilstandstype: String, @Enumerated(EnumType.STRING) val kilde: Kilde, @Id diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/UtvidetBarnetrygd.kt similarity index 77% rename from src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt rename to src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/UtvidetBarnetrygd.kt index 460003ba0..28fa70232 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Utvidetbarnetrygd.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/UtvidetBarnetrygd.kt @@ -8,17 +8,17 @@ import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne import java.math.BigDecimal -import java.util.Date +import java.time.LocalDate -@Entity(name = "utvidetbarnetrygd") -class Utvidetbarnetrygd( +@Entity(name = "utvidet_barnetrygd") +class UtvidetBarnetrygd( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, - val deltBoSted: Boolean, + val deltBosted: Boolean, val belop: BigDecimal, - val datoFom: Date?, - val datoTom: Date?, + val datoFom: LocalDate?, + val datoTom: LocalDate?, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt index fea2d101e..caafd11cf 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/repository/BehandlingRepository.kt @@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.Modifying import org.springframework.data.jpa.repository.Query import org.springframework.data.repository.CrudRepository import org.springframework.transaction.annotation.Transactional -import java.util.Date +import java.time.LocalDate import java.util.Optional interface BehandlingRepository : CrudRepository { @@ -19,28 +19,28 @@ interface BehandlingRepository : CrudRepository { @Modifying @Query( "update behandling b set " + - "b.aarsak = :aarsak," + - "b.virkningsDato = :virkningsDato," + - "b.virkningsTidspunktBegrunnelseKunINotat = :virkningsTidspunktBegrunnelseKunINotat," + - "b.virkningsTidspunktBegrunnelseMedIVedtakNotat = :virkningsTidspunktBegrunnelseMedIVedtakNotat " + - "where b.id = :behandlingId", + "b.aarsak = :årsak," + + "b.virkningsdato = :virkningsdato," + + "b.virkningstidspunktbegrunnelseKunINotat = :virkningstidspunktsbegrunnelseKunINotat," + + "b.virkningstidspunktsbegrunnelseIVedtakOgNotat = :virkningstidspunktsbegrunnelseIVedtakOgNotat " + + "where b.id = :behandlingsid", ) - fun updateVirkningsTidspunkt( - behandlingId: Long, - aarsak: ForskuddAarsakType?, - virkningsDato: Date?, - virkningsTidspunktBegrunnelseKunINotat: String?, - virkningsTidspunktBegrunnelseMedIVedtakNotat: String?, + fun updateVirkningstidspunkt( + behandlingsid: Long, + årsak: ForskuddAarsakType?, + virkningsdato: LocalDate?, + virkningstidspunktsbegrunnelseKunINotat: String?, + virkningstidspunktsbegrunnelseIVedtakOgNotat: String?, ) @Modifying @Query( "update behandling b set " + - "b.vedtakId = :vedtakId " + - "where b.id = :behandlingId", + "b.vedtaksid = :vedtaksid " + + "where b.id = :behandlingsid", ) fun oppdaterVedtakId( - behandlingId: Long, - vedtakId: Long, + behandlingsid: Long, + vedtaksid: Long, ) } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt index 4157bd0c0..50b7a2b51 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/BehandlingDto.kt @@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType -import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto import no.nav.bidrag.domene.enums.rolle.SøktAvType import java.time.LocalDate @@ -15,7 +15,7 @@ data class BehandlingDto( // Union av Stønadstype og Engangsbeløptype val behandlingtype: Behandlingstype, // TODO Bruk Vedtakstype istedenfor - val søknadstype: SoknadType, + val søknadType: Soknadstype, val erVedtakFattet: Boolean, @Schema(type = "string", format = "date", example = "01.12.2025") @JsonFormat(pattern = "yyyy-MM-dd") @@ -25,7 +25,7 @@ data class BehandlingDto( val datoTom: LocalDate, @Schema(type = "string", format = "date", example = "01.12.2025") @JsonFormat(pattern = "yyyy-MM-dd") - val mottatDato: LocalDate, + val mottattdato: LocalDate, val soknadFraType: SøktAvType, val saksnummer: String, val soknadsid: Long, @@ -39,10 +39,10 @@ data class BehandlingDto( val soknadRefId: Long? = null, val grunnlagspakkeid: Long? = null, val årsak: ForskuddAarsakType? = null, - val virkningstidspunktBegrunnelseMedIVedtaksnotat: String? = null, - val virkningstidspunktBegrunnelseKunINotat: String? = null, - val boforholdsbegrunnelseMedIVedtaksnotat: String? = null, + val virkningstidspunktsbegrunnelseIVedtakOgNotat: String? = null, + val virkningstidspunktsbegrunnelseKunINotat: String? = null, + val boforholdsbegrunnelseIVedtakOgNotat: String? = null, val boforholdsbegrunnelseKunINotat: String? = null, - val inntektsbegrunnelseMedIVedtaksnotat: String? = null, + val inntektsbegrunnelseIVedtakOgNotat: String? = null, val inntektsbegrunnelseKunINotat: String? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt index f21105c93..f926d68cc 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt @@ -5,38 +5,38 @@ import jakarta.validation.Valid import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import no.nav.bidrag.domene.enums.vedtak.Stønadstype -import java.util.Date +import java.time.LocalDate data class CreateBehandlingRequest( @Schema(required = true) - val behandlingType: Behandlingstype, + val behandlingstype: Behandlingstype, @Schema(required = true) - val soknadType: SoknadType, + val søknadstype: Soknadstype, @Schema(required = true) - val datoFom: Date, + val datoFom: LocalDate, @Schema(required = true) - val datoTom: Date, + val datoTom: LocalDate, @Schema(required = true) - val mottatDato: Date, + val mottattdato: LocalDate, @Schema(required = true) - val soknadFra: SøktAvType, + val søknadFra: SøktAvType, @field:NotBlank(message = "Saksnummer kan ikke være blank") - @field:Size(max = 7, message = "Saks nummer kan ikke være lengre enn 7 tegn") + @field:Size(max = 7, min = 7, message = "Saksnummer skal ha sju tegn") val saksnummer: String, @field:NotBlank(message = "Enhet kan ikke være blank") @field:Size(min = 4, max = 4, message = "Enhet må være 4 tegn") - val behandlerEnhet: String, + val behandlerenhet: String, @field:Size(min = 2, message = "Sak må ha minst to roller involvert") val roller: Set<@Valid CreateRolleDto>, @Schema(required = true) - var stonadType: Stønadstype?, + var stønadstype: Stønadstype?, @Schema(required = true) - var engangsbelopType: Engangsbeløptype?, + var engangsbeløpstype: Engangsbeløptype?, @Schema(required = true) - val soknadId: Long, - val soknadRefId: Long? = null, + val søknadsid: Long, + val søknadsreferanseid: Long? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt index e1f4c88d1..4e0ee1dfb 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateRolleDto.kt @@ -1,20 +1,13 @@ package no.nav.bidrag.behandling.dto.behandling import io.swagger.v3.oas.annotations.media.Schema -import java.util.Date - -enum class CreateRolleRolleType { - BIDRAGS_PLIKTIG, - BIDRAGS_MOTTAKER, - BARN, - REELL_MOTTAKER, - FEILREGISTRERT, -} +import no.nav.bidrag.domene.enums.rolle.Rolletype +import java.time.LocalDate @Schema(description = "Rolle beskrivelse som er brukte til å opprette nye roller") data class CreateRolleDto( @Schema(required = true, enumAsRef = true) - val rolleType: CreateRolleRolleType, + val rolletype: Rolletype, @Schema( type = "String", description = "F.eks fødselsnummer. Påkrevd for alle rolletyper utenom for barn som ikke inngår i beregning.", @@ -30,8 +23,8 @@ data class CreateRolleDto( ) val navn: String?, @Schema(type = "String", format = "date", description = "F.eks fødselsdato") - val fodtDato: Date?, - @Schema(type = "String", format = "date", description = "Opprettet dato") - val opprettetDato: Date?, + val fødselsdato: LocalDate, + @Schema(type = "String", format = "date", description = "Opprettetdato") + val opprettetdato: LocalDate?, val erSlettet: Boolean = false, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt index bcfd86b84..dac3c231d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt @@ -1,7 +1,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.domene.enums.person.Sivilstandskode import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag import java.math.BigDecimal import java.time.LocalDate @@ -18,7 +18,7 @@ data class ResultatPeriode( @Schema(description = "Beregnet resultat periode") var periode: Periode = Periode(), @Schema(description = "Beregnet resultat innhold") var resultat: ResultatBeregning = ResultatBeregning(), @Schema(description = "Beregnet grunnlag innhold") var grunnlagReferanseListe: List = emptyList(), - @Schema(description = "Sivilstand") var sivilstandType: SivilstandType? = null, + @Schema(description = "Sivilstand") var sivilstandType: Sivilstandskode? = null, ) @Schema(description = "Periode (fra-til dato") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt index a2ece7e3d..a5c375b60 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt @@ -1,20 +1,12 @@ package no.nav.bidrag.behandling.dto.behandling -import java.util.Date +import no.nav.bidrag.domene.enums.rolle.Rolletype +import java.time.LocalDate data class RolleDto( val id: Long, - val rolleType: RolleTypeDto, + val rolletype: Rolletype, val ident: String?, val navn: String?, - val fodtDato: Date?, - val opprettetDato: Date?, + val fødselsdato: LocalDate?, ) - -enum class RolleTypeDto { - BARN, - BIDRAGSMOTTAKER, - BIDRAGSPLIKTIG, - FEILREGISTRERT, - REELMOTTAKER, -} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt index f5f74b658..0035986fe 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/SivilstandDto.kt @@ -3,7 +3,7 @@ package no.nav.bidrag.behandling.dto.behandling import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.database.datamodell.Kilde -import no.nav.bidrag.behandling.database.datamodell.SivilstandType +import no.nav.bidrag.domene.enums.person.Sivilstandskode import java.time.LocalDate data class SivilstandDto( @@ -14,6 +14,6 @@ data class SivilstandDto( @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") val datoTom: LocalDate?, - val sivilstandType: SivilstandType, + val sivilstand: Sivilstandskode, val kilde: Kilde, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt deleted file mode 100644 index 936d7c667..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/ForskuddBeregningRespons.kt +++ /dev/null @@ -1,15 +0,0 @@ -package no.nav.bidrag.behandling.dto.beregning - -import no.nav.bidrag.behandling.dto.behandling.ResultatPeriode -import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag - -data class ForskuddBeregningRespons( - val resultat: List?, - val feil: List?, -) - -data class ForskuddBeregningPerBarn( - val referanseTilBarn: String?, - val beregnetForskuddPeriodeListe: List, - val grunnlagListe: List? = null, -) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/Forskuddsberegningrespons.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/Forskuddsberegningrespons.kt new file mode 100644 index 000000000..b9a49063d --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/beregning/Forskuddsberegningrespons.kt @@ -0,0 +1,7 @@ +package no.nav.bidrag.behandling.dto.beregning + +import no.nav.bidrag.transport.behandling.beregning.forskudd.BeregnetForskuddResultat + +data class Forskuddsberegningrespons( + val resultat: List?, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt index 72161d82e..a23ac77d3 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt @@ -2,8 +2,8 @@ package no.nav.bidrag.behandling.dto.husstandsbarn import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema -import no.nav.bidrag.behandling.database.datamodell.BoStatusType import no.nav.bidrag.behandling.database.datamodell.Kilde +import no.nav.bidrag.domene.enums.person.Bostatuskode import java.time.LocalDate data class HusstandsBarnPeriodeDto( @@ -15,7 +15,7 @@ data class HusstandsBarnPeriodeDto( @JsonFormat(pattern = "yyyy-MM-dd") val datoTom: LocalDate?, @Schema(required = true) - val boStatus: BoStatusType?, + val bostatus: Bostatuskode, @Schema(required = true) val kilde: Kilde, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt index bcc35978a..dfdaf93d5 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt @@ -14,5 +14,5 @@ data class HusstandsbarnDto( val navn: String? = null, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") - val foedselsdato: LocalDate? = null, + val fødselsdato: LocalDate, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt index f40bea289..d5fd80a71 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntektDto.kt @@ -2,6 +2,7 @@ package no.nav.bidrag.behandling.dto.inntekt import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost import java.math.BigDecimal import java.time.LocalDate @@ -10,12 +11,12 @@ data class InntektDto( val id: Long? = null, @Schema(required = true) val taMed: Boolean, - val inntektType: String?, + val inntektstype: Inntektsrapportering, @Schema(required = true) - val belop: BigDecimal, + val beløp: BigDecimal, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") - val datoFom: LocalDate?, + val datoFom: LocalDate, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") val datoTom: LocalDate?, @@ -24,5 +25,5 @@ data class InntektDto( @Schema(required = true) val fraGrunnlag: Boolean, @Schema(required = true) - val inntektPostListe: Set, + val inntektsposter: Set, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntekterResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntekterResponse.kt index 793c3aa4a..9aa57a672 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntekterResponse.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/InntekterResponse.kt @@ -3,7 +3,7 @@ package no.nav.bidrag.behandling.dto.inntekt data class InntekterResponse( val inntekter: Set, val barnetillegg: Set, - val utvidetbarnetrygd: Set, + val utvidetbarnetrygd: Set, val inntektBegrunnelseMedIVedtakNotat: String? = null, val inntektBegrunnelseKunINotat: String? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/OppdatereInntekterRequest.kt similarity index 56% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt rename to src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/OppdatereInntekterRequest.kt index ab3f4a1a6..703b6acc1 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UpdateInntekterRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/OppdatereInntekterRequest.kt @@ -2,13 +2,13 @@ package no.nav.bidrag.behandling.dto.inntekt import io.swagger.v3.oas.annotations.media.Schema -data class UpdateInntekterRequest( +data class OppdatereInntekterRequest( @Schema(required = true) val inntekter: Set, @Schema(required = true) val barnetillegg: Set, @Schema(required = true) - val utvidetbarnetrygd: Set, - val inntektBegrunnelseMedIVedtakNotat: String? = null, - val inntektBegrunnelseKunINotat: String? = null, + val utvidetBarnetrygd: Set, + val inntektsbegrunnelseIVedtakOgNotat: String? = null, + val inntektsbegrunnelseKunINotat: String? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt similarity index 94% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt rename to src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt index fbfda68f8..4e3486c2e 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetbarnetrygdDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema import java.math.BigDecimal import java.time.LocalDate -data class UtvidetbarnetrygdDto( +data class UtvidetBarnetrygdDto( val id: Long? = null, @Schema(required = true) val deltBoSted: Boolean, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/OppdatereVirkningstidspunktRequest.kt similarity index 58% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt rename to src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/OppdatereVirkningstidspunktRequest.kt index b7b048d84..7ddcfe290 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/UpdateVirkningsTidspunktRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/OppdatereVirkningstidspunktRequest.kt @@ -5,11 +5,11 @@ import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import java.time.LocalDate -data class UpdateVirkningsTidspunktRequest( - val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, - val virkningsTidspunktBegrunnelseKunINotat: String? = null, - val aarsak: ForskuddAarsakType? = null, +data class OppdatereVirkningstidspunktRequest( + val virkningstidspunktsbegrunnelseIVedtakOgNotat: String? = null, + val virkningstidspunktsbegrunnelseKunINotat: String? = null, + val årsak: ForskuddAarsakType? = null, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") - val virkningsDato: LocalDate? = null, + val virkningsdato: LocalDate? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningstidspunktResponse.kt similarity index 59% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt rename to src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningstidspunktResponse.kt index 069ebca65..649f851b2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningsTidspunktResponse.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/virkningstidspunkt/VirkningstidspunktResponse.kt @@ -5,11 +5,11 @@ import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import java.time.LocalDate -data class VirkningsTidspunktResponse( - val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, - val virkningsTidspunktBegrunnelseKunINotat: String? = null, - val aarsak: ForskuddAarsakType? = null, +data class VirkningstidspunktResponse( + val virkningstidspunktsbegrunnelseIVedtakOgNotat: String? = null, + val virkningstidspunktsbegrunnelseKunINotat: String? = null, + val årsak: ForskuddAarsakType? = null, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") - val virkningsDato: LocalDate? = null, + val virkningsdato: LocalDate? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt index 14e1e5816..b9b4b77b1 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/kafka/VedtakHendelseListener.kt @@ -53,7 +53,7 @@ class VedtakHendelseListener( enhet = vedtak.enhetsnummer?.verdi, behandlingInfo = BehandlingInfoDto( - soknadId = vedtak.soknadId ?: behandling.soknadId, + soknadId = vedtak.soknadId ?: behandling.soknadsid, vedtakId = vedtak.id.toLong(), soknadFra = behandling.soknadFra, stonadType = vedtak.stonadType, 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..53edcbc25 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -2,13 +2,14 @@ package no.nav.bidrag.behandling.service import mu.KotlinLogging import no.nav.bidrag.behandling.behandlingNotFoundException +import no.nav.bidrag.behandling.consumer.BidragGrunnlagConsumer 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.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.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 @@ -20,13 +21,14 @@ import no.nav.bidrag.behandling.transformers.toRolle import no.nav.bidrag.domene.enums.rolle.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional -import java.util.Date +import java.time.LocalDate private val log = KotlinLogging.logger {} @Service class BehandlingService( private val behandlingRepository: BehandlingRepository, + private val bidragGrunnlagConsumer: BidragGrunnlagConsumer, private val rolleRepository: RolleRepository, private val forsendelseService: ForsendelseService, ) { @@ -46,12 +48,12 @@ class BehandlingService( behandlingInfo = BehandlingInfoDto( behandlingId = behandling.id, - soknadId = behandling.soknadId, + soknadId = behandling.soknadsid, soknadFra = behandling.soknadFra, behandlingType = behandling.behandlingType.name, - stonadType = behandling.stonadType, - engangsBelopType = behandling.engangsbelopType, - vedtakType = behandling.soknadType.tilVedtakType(), + stonadType = behandling.stonadstype, + engangsBelopType = behandling.engangsbeloptype, + vedtakType = behandling.soknadstype.tilVedtakType(), ), ), ) @@ -60,30 +62,30 @@ class BehandlingService( fun deleteBehandlingById(behandlingId: Long) = behandlingRepository.deleteById(behandlingId) fun oppdaterBehandling( - behandlingId: Long, - virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, - virkningsTidspunktBegrunnelseKunINotat: String? = null, - boforholdBegrunnelseMedIVedtakNotat: String? = null, - boforholdBegrunnelseKunINotat: String? = null, - inntektBegrunnelseMedIVedtakNotat: String? = null, - inntektBegrunnelseKunINotat: String? = null, - aarsak: ForskuddAarsakType? = null, - virkningsDato: Date? = null, + behandlingsid: Long, + virkningstidspunktBegrunnelseMedIVedtakNotat: String? = null, + virkningstidspunktBegrunnelseKunINotat: String? = null, + boforholdsbegrunnelseMedIVedtakOgNotat: String? = null, + boforholdsbegrunnelseKunINotat: String? = null, + inntektsbegrunnelseMedIVedtakNotat: String? = null, + inntektsbegrunnelseKunINotat: String? = null, + årsak: ForskuddAarsakType? = null, + virkningsdato: LocalDate? = null, ): Behandling = behandlingRepository.save( - behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { behandlingNotFoundException(behandlingId) } + behandlingRepository.findBehandlingById(behandlingsid) + .orElseThrow { behandlingNotFoundException(behandlingsid) } .let { - it.virkningsTidspunktBegrunnelseMedIVedtakNotat = - virkningsTidspunktBegrunnelseMedIVedtakNotat - it.virkningsTidspunktBegrunnelseKunINotat = - virkningsTidspunktBegrunnelseKunINotat - it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat - it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat - it.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - it.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat - it.aarsak = aarsak - it.virkningsDato = virkningsDato + it.virkningstidspunktsbegrunnelseIVedtakOgNotat = + virkningstidspunktBegrunnelseMedIVedtakNotat + it.virkningstidspunktbegrunnelseKunINotat = + virkningstidspunktBegrunnelseKunINotat + it.boforholdsbegrunnelseIVedtakOgNotat = boforholdsbegrunnelseMedIVedtakOgNotat + it.boforholdsbegrunnelseKunINotat = boforholdsbegrunnelseKunINotat + it.inntektsbegrunnelseIVedtakOgNotat = inntektsbegrunnelseMedIVedtakNotat + it.inntektsbegrunnelseKunINotat = inntektsbegrunnelseKunINotat + it.aarsak = årsak + it.virkningsdato = virkningsdato it }, ) @@ -96,68 +98,68 @@ class BehandlingService( @Transactional fun oppdaterInntekter( - behandlingId: Long, + behandlingsid: Long, inntekter: MutableSet, barnetillegg: MutableSet, - utvidetbarnetrygd: MutableSet, - inntektBegrunnelseMedIVedtakNotat: String?, - inntektBegrunnelseKunINotat: String?, + utvidetbarnetrygd: MutableSet, + inntektsbegrunnelseMedIVedtakOgNotat: String?, + inntektsbegrunnelseKunINotat: String?, ) { var behandling = - behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { behandlingNotFoundException(behandlingId) } + behandlingRepository.findBehandlingById(behandlingsid) + .orElseThrow { behandlingNotFoundException(behandlingsid) } - behandling.inntektBegrunnelseMedIVedtakNotat = inntektBegrunnelseMedIVedtakNotat - behandling.inntektBegrunnelseKunINotat = inntektBegrunnelseKunINotat + behandling.inntektsbegrunnelseIVedtakOgNotat = inntektsbegrunnelseMedIVedtakOgNotat + behandling.inntektsbegrunnelseKunINotat = inntektsbegrunnelseKunINotat if (behandling.inntekter != inntekter) { - log.info("Oppdaterer inntekter for behandlingsid $behandlingId") + log.info("Oppdaterer inntekter for behandlingsid $behandlingsid") behandling.inntekter.clear() behandling.inntekter.addAll(inntekter) } if (behandling.barnetillegg != barnetillegg) { - log.info("Oppdaterer barnetillegg for behandlingsid $behandlingId") + log.info("Oppdaterer barnetillegg for behandlingsid $behandlingsid") behandling.barnetillegg.clear() behandling.barnetillegg.addAll(barnetillegg) } - if (behandling.utvidetbarnetrygd != utvidetbarnetrygd) { - log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingId") - behandling.utvidetbarnetrygd.clear() - behandling.utvidetbarnetrygd.addAll(utvidetbarnetrygd) + if (behandling.utvidetBarnetrygd != utvidetbarnetrygd) { + log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingsid") + behandling.utvidetBarnetrygd.clear() + behandling.utvidetBarnetrygd.addAll(utvidetbarnetrygd) } } - fun updateVirkningsTidspunkt( - behandlingId: Long, - aarsak: ForskuddAarsakType?, - virkningsDato: Date?, - virkningsTidspunktBegrunnelseKunINotat: String?, - virkningsTidspunktBegrunnelseMedIVedtakNotat: String?, - ) = behandlingRepository.updateVirkningsTidspunkt( - behandlingId, - aarsak, - virkningsDato, - virkningsTidspunktBegrunnelseKunINotat, - virkningsTidspunktBegrunnelseMedIVedtakNotat, + fun oppdatereVirkningstidspunkt( + behandlingsid: Long, + årsak: ForskuddAarsakType?, + virkningsdato: LocalDate?, + virkningstidspunktbegrunnelseKunINotat: String?, + virkningstidspunktbegrunnelseMedIVedtakOgNotat: String?, + ) = behandlingRepository.updateVirkningstidspunkt( + behandlingsid, + årsak, + virkningsdato, + virkningstidspunktbegrunnelseKunINotat, + virkningstidspunktbegrunnelseMedIVedtakOgNotat, ) fun updateBoforhold( - behandlingId: Long, - husstandsBarn: MutableSet, + behandlingsid: Long, + husstandsbarn: MutableSet, sivilstand: MutableSet, - boforholdBegrunnelseKunINotat: String?, - boforholdBegrunnelseMedIVedtakNotat: String?, + boforholdsbegrunnelseKunINotat: String?, + boforholdsbegrunnelseMedIVedtakOgNotat: String?, ) = behandlingRepository.save( - behandlingRepository.findBehandlingById(behandlingId) - .orElseThrow { behandlingNotFoundException(behandlingId) } + behandlingRepository.findBehandlingById(behandlingsid) + .orElseThrow { behandlingNotFoundException(behandlingsid) } .let { - it.boforholdBegrunnelseKunINotat = boforholdBegrunnelseKunINotat - it.boforholdBegrunnelseMedIVedtakNotat = boforholdBegrunnelseMedIVedtakNotat + it.boforholdsbegrunnelseKunINotat = boforholdsbegrunnelseKunINotat + it.boforholdsbegrunnelseIVedtakOgNotat = boforholdsbegrunnelseMedIVedtakOgNotat - it.husstandsBarn.clear() - it.husstandsBarn.addAll(husstandsBarn) + it.husstandsbarn.clear() + it.husstandsbarn.addAll(husstandsbarn) it.sivilstand.clear() it.sivilstand.addAll(sivilstand) @@ -194,7 +196,7 @@ class BehandlingService( behandlingRepository.save(behandling) - if (behandling.roller.none { r -> r.rolleType == Rolletype.BARN }) { + if (behandling.roller.none { r -> r.rolletype == Rolletype.BARN }) { behandlingRepository.delete(behandling) } } @@ -204,8 +206,12 @@ class BehandlingService( grunnlagspakkeId: Long?, ) { hentBehandlingById(behandlingId).let { - it.grunnlagspakkeId = grunnlagspakkeId + it.grunnlagspakkeid = grunnlagspakkeId behandlingRepository.save(it) } } + + fun oppfriskeGrunnlagsdata(grunlagspakkeid: Long) { + val grunnlagspakke = bidragGrunnlagConsumer.henteGrunnlagspakke(grunlagspakkeid) + } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/service/ForskuddService.kt b/src/main/kotlin/no/nav/bidrag/behandling/service/ForskuddService.kt new file mode 100644 index 000000000..93038b515 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/ForskuddService.kt @@ -0,0 +1,134 @@ +package no.nav.bidrag.behandling.service + +import arrow.core.mapOrAccumulate +import arrow.core.raise.either +import com.fasterxml.jackson.databind.node.POJONode +import mu.KotlinLogging +import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer +import no.nav.bidrag.behandling.consumer.BidragPersonConsumer +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.validere +import no.nav.bidrag.behandling.dto.beregning.Forskuddsberegningrespons +import no.nav.bidrag.behandling.fantIkkeFødselsdatoTilSøknadsbarn +import no.nav.bidrag.behandling.transformers.tilBeregnGrunnlag +import no.nav.bidrag.behandling.valideringAvBehandlingFeilet +import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.ident.Personident +import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag +import no.nav.bidrag.transport.behandling.felles.grunnlag.Person +import org.springframework.stereotype.Service +import org.springframework.web.client.HttpClientErrorException +import java.time.LocalDate +import java.time.format.DateTimeFormatter + +private val LOGGER = KotlinLogging.logger {} + +@Service +class ForskuddService( + private val behandlingService: BehandlingService, + private val bidragBeregnForskuddConsumer: BidragBeregnForskuddConsumer, + private val bidragPersonConsumer: BidragPersonConsumer, +) { + fun beregneForskudd(behandlingsid: Long): Forskuddsberegningrespons { + val respons = + either { + val behandling = behandlingService.hentBehandlingById(behandlingsid).validere().bind() + val resultat = + behandling.getSøknadsbarn().mapOrAccumulate { + val fødselsdato = finneFødselsdato(it.ident, it.foedselsdato) + + // Avbryter prosesering dersom fødselsdato til søknadsbarn er ukjent + if (fødselsdato == null) { + fantIkkeFødselsdatoTilSøknadsbarn(behandlingsid) + } + + val rolleBm = behandling.roller.filter { r -> r.rolletype == Rolletype.BIDRAGSMOTTAKER }.first() + val bm = + lagePersonobjekt( + rolleBm.ident, + rolleBm.navn, + rolleBm.foedselsdato, + "bidragsmottaker", + ) + val søknadsbarn = lagePersonobjekt(it.ident, it.navn, fødselsdato, "søknadsbarn-${it.id}") + val øvrigeBarnIHusstand = oppretteGrunnlagForHusstandsbarn(behandling, it.ident!!) + var beregnForskudd = behandling.tilBeregnGrunnlag(bm, søknadsbarn, øvrigeBarnIHusstand) + + try { + bidragBeregnForskuddConsumer.beregnForskudd(beregnForskudd) + } catch (e: HttpClientErrorException) { + LOGGER.warn { e } + val errors = e.responseHeaders?.get("error")?.joinToString("\r\n") + raise(errors ?: e.message!!) + } catch (e: Exception) { + LOGGER.warn { e } + raise(e.message!!) + } + }.bind() + + return@either resultat + } + + if (respons.isLeft()) { + respons.leftOrNull()?.let { + LOGGER.warn { "Validering av forskuddsbehandling feilet med: ${it.all}" } + valideringAvBehandlingFeilet(it.all) + } + } + + return Forskuddsberegningrespons(respons.getOrNull()) + } + + private fun oppretteGrunnlagForHusstandsbarn( + behandling: Behandling, + personidentSøknadsbarn: String, + ): Set { + val grunnlag = HashSet() + behandling.husstandsbarn.filter { barn -> barn.ident != personidentSøknadsbarn }.forEach { + val fødselsdato = finneFødselsdato(it.ident, it.foedselsdato) + + // Avbryter prosesering dersom fødselsdato til søknadsbarn er ukjent + if (fødselsdato == null) { + fantIkkeFødselsdatoTilSøknadsbarn(behandling.id!!) + } + grunnlag.add(lagePersonobjekt(it.ident, it.navn, fødselsdato, "husstandsbarn-${it.id}")) + } + + return grunnlag + } + + private fun lagePersonobjekt( + ident: String?, + navn: String?, + fødselsdato: LocalDate, + referanse: String, + ): Grunnlag { + var personident = ident ?: "" + + return Grunnlag( + referanse = "person-$referanse", + type = Grunnlagstype.PERSON, + innhold = + POJONode( + Person( + ident = Personident(personident), + navn = navn ?: "", + fødselsdato = fødselsdato, + ), + ), + ) + } + + private fun finneFødselsdato( + ident: String?, + fødselsdato: LocalDate?, + ): LocalDate? { + return if (fødselsdato == null && ident != null) { + val formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy") + LocalDate.parse(bidragPersonConsumer.hentPerson(ident).fødselsdato, formatter) + } else { + fødselsdato + } + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index 8161fb327..7304264cb 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -2,25 +2,23 @@ package no.nav.bidrag.behandling.transformers import no.nav.bidrag.behandling.database.datamodell.Barnetillegg import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.HusstandsBarn -import no.nav.bidrag.behandling.database.datamodell.HusstandsBarnPeriode +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarn +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarnperiode import no.nav.bidrag.behandling.database.datamodell.Inntekt -import no.nav.bidrag.behandling.database.datamodell.InntektPostDomain +import no.nav.bidrag.behandling.database.datamodell.Inntektspost import no.nav.bidrag.behandling.database.datamodell.Opplysninger import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.Sivilstand -import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +import no.nav.bidrag.behandling.database.datamodell.UtvidetBarnetrygd import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto -import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType -import no.nav.bidrag.behandling.dto.behandling.RolleTypeDto import no.nav.bidrag.behandling.dto.behandling.SivilstandDto import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto 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.dto.inntekt.UtvidetBarnetrygdDto import no.nav.bidrag.behandling.dto.opplysninger.OpplysningerDto import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.vedtak.Vedtakstype @@ -31,16 +29,16 @@ fun Set.toSivilstandDto() = this.map { SivilstandDto( it.id, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.sivilstandType, + it.datoFom, + it.datoTom, + it.sivilstandstype.tilSivilstandskodeForBeregning(), it.kilde, ) }.toSet() fun Set.toSivilstandDomain(behandling: Behandling) = this.map { - Sivilstand(behandling, it.datoFom?.toDate(), it.datoTom?.toDate(), it.sivilstandType, it.kilde, it.id) + Sivilstand(behandling, it.datoFom, it.datoTom, it.sivilstand.name, it.kilde, it.id) }.toMutableSet() fun Set.toBarnetilleggDto() = @@ -54,25 +52,25 @@ fun Set.toBarnetilleggDto() = ) }.toSet() -fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = +fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = this.map { - Utvidetbarnetrygd( + UtvidetBarnetrygd( behandling, it.deltBoSted, it.belop, - it.datoFom?.toDate(), - it.datoTom?.toDate(), + it.datoFom, + it.datoTom, ) }.toMutableSet() -fun Set.toUtvidetbarnetrygdDto() = +fun Set.toUtvidetbarnetrygdDto() = this.map { - UtvidetbarnetrygdDto( + UtvidetBarnetrygdDto( it.id, - it.deltBoSted, + it.deltBosted, it.belop, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), + it.datoFom, + it.datoTom, ) }.toSet() @@ -88,29 +86,29 @@ fun Set.toBarnetilleggDomain(behandling: Behandling) = ) }.toMutableSet() -fun Set.toHusstandsBarnPeriodeDto() = +fun Set.toHusstandsBarnPeriodeDto() = this.map { HusstandsBarnPeriodeDto( it.id, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.boStatus, + it.datoFom, + it.datoTom, + it.bostatus, it.kilde, ) }.toSet() -fun Set.toDomain(husstandsBarn: HusstandsBarn) = +fun Set.toDomain(husstandsBarn: Husstandsbarn) = this.map { - HusstandsBarnPeriode( + Husstandsbarnperiode( husstandsBarn, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - it.boStatus, + it.datoFom, + it.datoTom, + it.bostatus, it.kilde, ) }.toSet() -fun Set.toHusstandsBarnDto() = +fun Set.toHusstandsBarnDto() = this.map { HusstandsbarnDto( it.id!!, @@ -118,20 +116,20 @@ fun Set.toHusstandsBarnDto() = it.perioder.toHusstandsBarnPeriodeDto(), it.ident, it.navn, - it.foedselsDato?.toLocalDate(), + it.foedselsdato, ) }.toSet() fun Set.toDomain(behandling: Behandling) = this.map { val barn = - HusstandsBarn( + Husstandsbarn( behandling, it.medISak, it.id, it.ident, it.navn, - it.foedselsdato?.toDate(), + it.fødselsdato, ) barn.perioder = it.perioder.toDomain(barn).toMutableSet() barn @@ -141,26 +139,26 @@ fun Set.toInntektDomain(behandling: Behandling) = this.map { val inntekt = Inntekt( - it.inntektType, - it.belop, - it.datoFom?.toDate(), - it.datoTom?.toDate(), + it.inntektstype, + it.beløp, + it.datoFom, + it.datoTom, it.ident, it.fraGrunnlag, it.taMed, it.id, behandling, ) - inntekt.inntektPostListe = it.inntektPostListe.toInntektPostDomain(inntekt).toMutableSet() + inntekt.inntektsposter = it.inntektsposter.toInntektPostDomain(inntekt).toMutableSet() inntekt }.toMutableSet() fun Set.toInntektPostDomain(inntekt: Inntekt) = this.map { - InntektPostDomain(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) + Inntektspost(it.beløp, it.kode, it.visningsnavn, inntekt = inntekt) }.toSet() -fun Set.toInntektPost() = +fun Set.toInntektPost() = this.map { InntektPost(it.kode, it.visningsnavn, it.beløp) }.toSet() @@ -170,13 +168,13 @@ fun Set.toInntektDto() = InntektDto( it.id, it.taMed, - it.inntektType, + it.inntektstype, it.belop, - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), + it.datoFom, + it.datoTom, it.ident, it.fraGrunnlag, - it.inntektPostListe.toInntektPost(), + it.inntektsposter.toInntektPost(), ) }.toSet() @@ -191,49 +189,33 @@ fun Opplysninger.toDto(): OpplysningerDto { } fun Behandling.tilForsendelseRolleDto() = - roller.filter { r -> !(r.rolleType == Rolletype.BARN && r.ident == null) }.map { + roller.filter { r -> !(r.rolletype == Rolletype.BARN && r.ident == null) }.map { ForsendelseRolleDto( fødselsnummer = Personident(it.ident!!), - type = it.rolleType, + type = it.rolletype, ) } fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = Rolle( behandling, - rolleType = - when (this.rolleType) { - CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER - CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG - CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER - CreateRolleRolleType.BARN -> Rolletype.BARN - CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT - }, + rolletype = this.rolletype, this.ident, - this.fodtDato, - this.opprettetDato, + this.fødselsdato, + this.opprettetdato, navn = this.navn, ) -fun SoknadType.tilVedtakType(): Vedtakstype = - when (this) { - SoknadType.FASTSETTELSE -> Vedtakstype.FASTSETTELSE - SoknadType.REVURDERING -> Vedtakstype.REVURDERING - SoknadType.ALDERSJUSTERING -> Vedtakstype.ALDERSJUSTERING - SoknadType.ALDERSOPPHØR -> Vedtakstype.ALDERSOPPHØR - SoknadType.ENDRING -> Vedtakstype.ENDRING - SoknadType.ENDRING_MOTTAKER -> Vedtakstype.ENDRING_MOTTAKER - SoknadType.KLAGE -> Vedtakstype.KLAGE - SoknadType.OPPHØR -> Vedtakstype.OPPHØR - SoknadType.INDEKSREGULERING -> Vedtakstype.INDEKSREGULERING - SoknadType.INNKREVING -> Vedtakstype.INNKREVING - } - -fun Rolletype.toRolleTypeDto(): RolleTypeDto = +fun Soknadstype.tilVedtakType(): Vedtakstype = when (this) { - Rolletype.BARN -> RolleTypeDto.BARN - Rolletype.BIDRAGSMOTTAKER -> RolleTypeDto.BIDRAGSMOTTAKER - Rolletype.BIDRAGSPLIKTIG -> RolleTypeDto.BIDRAGSPLIKTIG - Rolletype.FEILREGISTRERT -> RolleTypeDto.FEILREGISTRERT - Rolletype.REELMOTTAKER -> RolleTypeDto.REELMOTTAKER + Soknadstype.FASTSETTELSE -> Vedtakstype.FASTSETTELSE + Soknadstype.REVURDERING -> Vedtakstype.REVURDERING + Soknadstype.ALDERSJUSTERING -> Vedtakstype.ALDERSJUSTERING + Soknadstype.ALDERSOPPHØR -> Vedtakstype.ALDERSOPPHØR + Soknadstype.ENDRING -> Vedtakstype.ENDRING + Soknadstype.ENDRING_MOTTAKER -> Vedtakstype.ENDRING_MOTTAKER + Soknadstype.KLAGE -> Vedtakstype.KLAGE + Soknadstype.OPPHØR -> Vedtakstype.OPPHØR + Soknadstype.INDEKSREGULERING -> Vedtakstype.INDEKSREGULERING + Soknadstype.INNKREVING -> Vedtakstype.INNKREVING } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt new file mode 100644 index 000000000..4b494cce2 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt @@ -0,0 +1,133 @@ +package no.nav.bidrag.behandling.transformers + +import com.fasterxml.jackson.databind.node.POJONode +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarnperiode +import no.nav.bidrag.behandling.database.datamodell.Kilde +import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering +import no.nav.bidrag.domene.enums.person.Bostatuskode +import no.nav.bidrag.domene.enums.person.Sivilstandskode +import no.nav.bidrag.domene.enums.person.SivilstandskodePDL +import no.nav.bidrag.domene.tid.ÅrMånedsperiode +import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag +import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag +import no.nav.bidrag.transport.behandling.beregning.felles.grunnlag.BeregningInntektRapporteringPeriode +import no.nav.bidrag.transport.behandling.felles.grunnlag.BostatusPeriode +import no.nav.bidrag.transport.behandling.felles.grunnlag.Person +import no.nav.bidrag.transport.behandling.felles.grunnlag.SivilstandPeriode + +fun Behandling.tilBeregnGrunnlag( + bm: Grunnlag, + søknadsbarn: Grunnlag, + øvrigeBarnIHusstand: Set, +): BeregnGrunnlag { + val personobjekterBarn = listOf(søknadsbarn) + øvrigeBarnIHusstand + + return BeregnGrunnlag( + periode = ÅrMånedsperiode(this.virkningsdato!!, this.datoTom), + søknadsbarnReferanse = søknadsbarn.referanse, + grunnlagListe = + personobjekterBarn + + this.tilGrunnlagBostatus( + personobjekterBarn.toSet(), + ) + this.tilGrunnlagInntekt(bm) + this.tilGrunnlagSivilstand(bm), + ) +} + +fun Behandling.tilGrunnlagSivilstand(bm: Grunnlag): Set { + return this.sivilstand.map { + Grunnlag( + grunnlagsreferanseListe = listOf(bm.referanse!!), + referanse = "sivilstand-${bm.referanse}", + type = Grunnlagstype.SIVILSTAND_PERIODE, + innhold = + POJONode( + SivilstandPeriode( + sivilstand = it.sivilstandstype.tilSivilstandskodeForBeregning(), + periode = ÅrMånedsperiode(it.datoFom!!, it.datoTom), + ), + ), + ) + }.toSet() +} + +fun Behandling.tilGrunnlagBostatus(grunnlagBarn: Set): Set { + var bostatusperiodegrunnlag = mutableSetOf() + val mapper = jacksonObjectMapper() + grunnlagBarn.forEach { + val barn = mapper.treeToValue(it.innhold, Person::class.java) + val bostatusperioderForBarn = this.husstandsbarn.filter { hb -> hb.ident == barn.ident.verdi }.first() + bostatusperiodegrunnlag + oppretteGrunnlagForBostatusperioder(it.referanse!!, bostatusperioderForBarn.perioder) + } + return bostatusperiodegrunnlag +} + +private fun oppretteGrunnlagForBostatusperioder( + personreferanse: String, + husstandsbarnperioder: Set, +): Set { + var bostatusperiodegrunnlag = mutableSetOf() + + Bostatuskode.values().forEach { + val husstandsbarnperioder = husstandsbarnperioder.filter { p -> p.bostatus == it } + husstandsbarnperioder.forEach { + bostatusperiodegrunnlag + + Grunnlag( + grunnlagsreferanseListe = listOf(personreferanse), + referanse = "bostatus-$personreferanse", + type = Grunnlagstype.BOSTATUS_PERIODE, + innhold = + POJONode( + BostatusPeriode( + bostatus = it.bostatus!!, + manueltRegistrert = it.kilde == Kilde.MANUELL, + periode = + ÅrMånedsperiode( + it.datoFom!!, it.datoTom, + ), + ), + ), + ) + } + } + + return bostatusperiodegrunnlag +} + +fun Behandling.tilGrunnlagInntekt(bm: Grunnlag): Set { + val mapper = jacksonObjectMapper() + val personidentBm = mapper.treeToValue(bm.innhold, Person::class.java).ident + + return inntekter.filter { i -> i.taMed }.filter { i -> i.ident == personidentBm.verdi } + .filter { i -> i.inntektstype != Inntektsrapportering.KONTANTSTØTTE }.map { + Grunnlag( + type = Grunnlagstype.BEREGNING_INNTEKT_RAPPORTERING_PERIODE, + referanse = "Inntekt_${it.inntektstype}_${it.datoFom?.toCompactString()}", + grunnlagsreferanseListe = listOf(bm.referanse!!), + innhold = + POJONode( + BeregningInntektRapporteringPeriode( + beløp = it.belop, + periode = ÅrMånedsperiode(it.datoFom, it.datoTom), + inntektsrapportering = it.inntektstype, + manueltRegistrert = !it.fraGrunnlag, + valgt = it.taMed, + gjelderBarn = null, + ), + ), + ) + }.toSet() +} + +fun String.tilSivilstandskodeForBeregning(): Sivilstandskode { + return when (this) { + SivilstandskodePDL.GIFT.name, SivilstandskodePDL.REGISTRERT_PARTNER.name, Sivilstandskode.GIFT_SAMBOER.name, + -> Sivilstandskode.GIFT_SAMBOER + + else -> { + Sivilstandskode.BOR_ALENE_MED_BARN + } + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 3ccc5ac4b..730aab949 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -36,6 +36,15 @@ no.nav.security.jwt: client-id: ${AZURE_APP_CLIENT_ID} client-secret: ${AZURE_APP_CLIENT_SECRET} client-auth-method: client_secret_post + bidrag-grunnlag: + resource-url: ${BIDRAG_GRUNNLAG_URL} + token-endpoint-url: https://login.microsoftonline.com/${AZURE_APP_TENANT_ID}/oauth2/v2.0/token + grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer + scope: api://${BIDRAG_GRUNNLAG_SCOPE}/.default + authentication: + client-id: ${AZURE_APP_CLIENT_ID} + client-secret: ${AZURE_APP_CLIENT_SECRET} + client-auth-method: client_secret_post bidrag-dokument-forsendelse: resource-url: ${BIDRAG_FORSENDELSE_URL} token-endpoint-url: https://login.microsoftonline.com/${AZURE_APP_TENANT_ID}/oauth2/v2.0/token diff --git a/src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql new file mode 100644 index 000000000..31c513d4a --- /dev/null +++ b/src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql @@ -0,0 +1,42 @@ +-- Table: BEHANDLING + +/* + ALTER TABLE BEHANDLING DROP COLUMN GRUNNLAG_SIST_INNHENTET; + ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSTYPE TO SOKNAD_TYPE; + ALTER TABLE BEHANDLINGRENAME COLUMN MOTTATTDATO TO MOTTATT_DATO; + ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSID TO SOKNAD_ID; + ALTER TABLE BEHANDLING RENAME COLUMN STONADSTYPE TO STONAD_TYPE; + ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOPTYPE TO ENGANGSBELOP_TYPE; + ALTER TABLE BEHANDLING RENAME COLUMN VEDTAKSID TO VEDTAK_ID; + ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSDATO TO VIRKNINGS_DATO; + ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT TO BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_KUN_I_NOTAT; + ALTER TABLE BEHANDLINGRENAME COLUMN GRUNNLAGSPAKKEID TO GRUNNLAGSPAKKE_ID; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.35'; + */ + +ALTER TABLE BEHANDLING ADD COLUMN GRUNNLAG_SIST_INNHENTET TIMESTAMP WITHOUT TIME ZONE; +ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_TYPE TO SOKNADSTYPE; +ALTER TABLE BEHANDLING RENAME COLUMN MOTTAT_DATO TO MOTTATTDATO; +ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_ID TO SOKNADSID; +ALTER TABLE BEHANDLING RENAME COLUMN STONAD_TYPE TO STONADSTYPE; +ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOP_TYPE TO ENGANGSBELOPTYPE; +ALTER TABLE BEHANDLING RENAME COLUMN VEDTAK_ID TO VEDTAKSID; +ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_DATO TO VIRKNINGSDATO; +ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT TO VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLD_BEGRUNNELSE_KUN_I_NOTAT TO BOFORHOLDSBEGRUNNELSE_KUN_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN INNTEKT_BEGRUNNELSE_KUN_I_NOTAT TO INNTEKTSBEGRUNNELSE_KUN_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN GRUNNLAGSPAKKE_ID TO GRUNNLAGSPAKKEID; + + + + + diff --git a/src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql b/src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql new file mode 100644 index 000000000..e89594f48 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql @@ -0,0 +1,14 @@ +-- Table: SIVILSTAND + +/* + ALTER TABLE SIVILSTAND RENAME COLUMN SIVILSTANDSTYPE TO SIVILSTAND_TYPE; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.36'; + */ + +ALTER TABLE SIVILSTAND RENAME COLUMN SIVILSTAND_TYPE TO SIVILSTANDSTYPE; + + + + + diff --git a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql b/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql new file mode 100644 index 000000000..a7c59e060 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql @@ -0,0 +1,14 @@ +-- Table: BARN_I_HUSSTAND_PERIODE + +/* + ALTER TABLE BARN_I_HUSSTAND_PERIODE RENAME COLUMN BOSTATUS TO BO_STATUS; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.37'; + */ + +ALTER TABLE BARN_I_HUSSTAND_PERIODE RENAME COLUMN BO_STATUS TO BOSTATUS; + + + + + diff --git a/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql b/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql new file mode 100644 index 000000000..e572deeb6 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql @@ -0,0 +1,16 @@ +-- Table: UTVIDETBARNETRYGD => UTVIDET_BARNETRYGD + +/* + ALTER TABLE UTVIDET_BARNETRYGD RENAME TO UTVIDETBARNETRYGD; + ALTER TABLE UTVIDETBARNETRYGD RENAME COLUMN DELT_BOSTED TO DELT_BO_STED + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.38'; + */ + +ALTER TABLE UTVIDETBARNETRYGD RENAME COLUMN DELT_BO_STED TO DELT_BOSTED; +ALTER TABLE UTVIDETBARNETRYGD RENAME TO UTVIDET_BARNETRYGD; + + + + + diff --git a/src/main/resources/db/migration/V1.0.39__delete_inntekt_type_null.sql b/src/main/resources/db/migration/V1.0.39__delete_inntekt_type_null.sql new file mode 100644 index 000000000..dd88a1ef8 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.39__delete_inntekt_type_null.sql @@ -0,0 +1,19 @@ +-- Table: INNTEKT, INNTEKT_POST + +/* + Slettede data må evnt hentes fra backup + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.39'; + */ + +DELETE FROM INNTEKT_POST WHERE INNTEKT_ID IN ( + SELECT I.ID FROM INNTEKT I WHERE I.INNTEKT_TYPE IS NULL +); + +DELETE FROM INNTEKT I WHERE I.INNTEKT_TYPE IS NULL; + + + + + + diff --git a/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql b/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql new file mode 100644 index 000000000..016f08a8a --- /dev/null +++ b/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql @@ -0,0 +1,15 @@ +-- Table: INNTEKT + +/* + ALTER TABLE INNTEKT RENAME COLUMN INNTEKTSTYPE TO INNTEKT_TYPE + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.40'; + */ + +ALTER TABLE INNTEKT RENAME COLUMN INNTEKT_TYPE TO INNTEKTSTYPE; + + + + + + diff --git a/src/main/resources/db/migration/V1.0.41__alter_table_inntekt_post.sql b/src/main/resources/db/migration/V1.0.41__alter_table_inntekt_post.sql new file mode 100644 index 000000000..dd0cde5a1 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.41__alter_table_inntekt_post.sql @@ -0,0 +1,14 @@ +-- Table: INNTEKT_POST => INNTEKTSPOST + +/* + ALTER TABLE INNTEKTSPOST RENAME TO INNTEKT_POST; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.41'; + */ + +ALTER TABLE INNTEKT_POST RENAME TO INNTEKTSPOST; + + + + + diff --git a/src/main/resources/db/migration/V1.0.42__update_table_inntekt_column_inntektstype.sql b/src/main/resources/db/migration/V1.0.42__update_table_inntekt_column_inntektstype.sql new file mode 100644 index 000000000..59f55bcb4 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.42__update_table_inntekt_column_inntektstype.sql @@ -0,0 +1,17 @@ +-- Table: INNTEKT + +/* + Slettede data må evnt hentes fra backup + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.42'; + */ + +UPDATE INNTEKT SET INNTEKTSTYPE = 'YTELSE_FRA_OFFENTLIG_MANUELT_BEREGNET' WHERE INNTEKTSTYPE = 'YTELSE_FRA_OFFENTLIGE'; +UPDATE INNTEKT SET INNTEKTSTYPE = 'LØNNSINNTEKT' WHERE INNTEKTSTYPE = 'LOENNSINNTEKT'; + + + + + + + diff --git a/src/main/resources/db/migration/V1.0.43__alter_table_rolle.sql b/src/main/resources/db/migration/V1.0.43__alter_table_rolle.sql new file mode 100644 index 000000000..d860ab2ba --- /dev/null +++ b/src/main/resources/db/migration/V1.0.43__alter_table_rolle.sql @@ -0,0 +1,19 @@ +-- Table: ROLLE + +/* + ALTER TABLE ROLLE RENAME COLUMN FOEDSELSDATO TO FODT_DATO; + ALTER TABLE ROLLE RENAME COLUMN ROLLETYPE TO ROLLE_TYPE; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.43'; + */ + +ALTER TABLE ROLLE RENAME COLUMN FODT_DATO TO FOEDSELSDATO; +ALTER TABLE ROLLE RENAME COLUMN ROLLE_TYPE TO ROLLETYPE; + + + + + + + + diff --git a/src/main/resources/db/migration/V1.0.44__alter_table_barn_i_husstand.sql b/src/main/resources/db/migration/V1.0.44__alter_table_barn_i_husstand.sql new file mode 100644 index 000000000..0516fdea3 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.44__alter_table_barn_i_husstand.sql @@ -0,0 +1,17 @@ +-- Table: BARN_I_HUSSTAND + +/* + ALTER TABLE BARN_I_HUSSTAND RENAME COLUMN FOEDSELSDATO TO FOEDSELS_DATO; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.44'; + */ + +ALTER TABLE BARN_I_HUSSTAND RENAME COLUMN FOEDSELS_DATO TO FOEDSELSDATO; + + + + + + + + diff --git a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt deleted file mode 100644 index 627ec37a8..000000000 --- a/src/test/kotlin/no/nav/bidrag/behandling/beregning/ForskuddBeregningTest.kt +++ /dev/null @@ -1,147 +0,0 @@ -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.Test -import java.util.Calendar - -class ForskuddBeregningTest { - @Test - fun `split periods just one period`() { - val forskuddBeregning = ForskuddBeregning() - val cal1 = Calendar.getInstance() - val cal2 = Calendar.getInstance() - cal1.set(Calendar.DAY_OF_MONTH, 1) - cal2.set(Calendar.DAY_OF_MONTH, 10) - - val fraDato = cal1.time - val fraDato2 = cal2.time - cal1.add(Calendar.MONTH, 1) - cal2.add(Calendar.MONTH, 1) - val tilDato = cal1.time - val tilDato2 = cal2.time - - val splitPeriods1 = - forskuddBeregning.splitPeriods( - listOf( - HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE), - HusstandsBarnPeriodeModel(fraDato2.toLocalDate(), tilDato2.toLocalDate(), "ident2", BoStatusType.REGISTRERT_PA_ADRESSE), - ), - ) - - splitPeriods1.size shouldBe 3 - } - - @Test - fun `split periods`() { - 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 - - val splitPeriods = - forskuddBeregning.splitPeriods( - listOf( - HusstandsBarnPeriodeModel(fraDato.toLocalDate(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE), - ), - ) - - splitPeriods.size shouldBe 1 - } - - @Test - 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 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(), tilDato.toLocalDate(), "ident", BoStatusType.REGISTRERT_PA_ADRESSE), - HusstandsBarnPeriodeModel(fraDato1.toLocalDate(), tilDato1.toLocalDate(), "ident1", BoStatusType.REGISTRERT_PA_ADRESSE), - ), - ) - - splitPeriods.size shouldBe 2 - } -} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt index 09e3a2e86..16e38e311 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddControllerTest.kt @@ -4,10 +4,14 @@ import io.kotest.assertions.assertSoftly import io.kotest.matchers.shouldBe import io.kotest.matchers.shouldNotBe import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarn +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarnperiode +import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.database.repository.BehandlingRepository -import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons +import no.nav.bidrag.behandling.dto.beregning.Forskuddsberegningrespons import no.nav.bidrag.behandling.utils.oppretteBehandling import no.nav.bidrag.behandling.utils.oppretteBehandlingRoller +import no.nav.bidrag.domene.enums.person.Bostatuskode import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test @@ -15,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus +import java.time.LocalDate class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { @Autowired @@ -26,9 +31,29 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { } @Test - fun `skal beregne forskudd for behandling`() { + fun `skal beregne forskudd for validert behandling`() { // given - var behandling = lagreBehandlingMedRoller() + var behandling = oppretteBehandling() + behandling.roller = oppretteBehandlingRoller(behandling) + var husstandsbarn = + Husstandsbarn( + behandling = behandling, + medISaken = true, + ident = behandling.getSøknadsbarn().first().ident, + navn = "Lavransdottir", + foedselsdato = LocalDate.now().minusMonths(140), + ) + var husstandsbarnperiode = + Husstandsbarnperiode( + husstandsbarn = husstandsbarn, + datoFom = LocalDate.now().minusMonths(5), + datoTom = LocalDate.now().plusMonths(3), + bostatus = Bostatuskode.MED_FORELDER, + kilde = Kilde.OFFENTLIG, + ) + husstandsbarn.perioder = mutableSetOf(husstandsbarnperiode) + behandling.husstandsbarn = mutableSetOf(husstandsbarn) + behandlingRepository.save(behandling) // when val returnert = @@ -36,7 +61,7 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { "${rootUri()}/behandling/${behandling.id}/beregn", HttpMethod.POST, HttpEntity.EMPTY, - ForskuddBeregningRespons::class.java, + Forskuddsberegningrespons::class.java, ) // then @@ -47,6 +72,29 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { } } + @Test + fun `skal returnere httpkode 400 dersom behandling mangler informasjon om husstandsbarn`() { + // given + var behandling = lagreBehandlingMedRoller() + + // when + val returnert = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${behandling.id}/beregn", + HttpMethod.POST, + HttpEntity.EMPTY, + Forskuddsberegningrespons::class.java, + ) + + // then + assertSoftly { + returnert shouldNotBe null + returnert.statusCode shouldBe HttpStatus.BAD_REQUEST + returnert.body shouldBe null + returnert.headers["Warning"]?.get(0) shouldBe "Validering feilet - [Husstandsbarn mangler i behandling]" + } + } + @Test @Disabled fun `skal videreføre BAD_REQUEST fra bidrag-beregn-forskudd-rest`() { @@ -60,7 +108,7 @@ class BehandlingBeregnForskuddControllerTest : KontrollerTestRunner() { "${rootUri()}/behandling/${behandling.id}/beregn", HttpMethod.POST, HttpEntity.EMPTY, - ForskuddBeregningRespons::class.java, + Forskuddsberegningrespons::class.java, ) // then diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index fbbe36f6d..4a9b647c3 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -2,13 +2,13 @@ package no.nav.bidrag.behandling.controller import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.behandling.dto.behandling.BehandlingDto import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse -import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.service.BehandlingServiceTest +import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Stønadstype import org.junit.jupiter.api.Assertions.assertEquals @@ -17,32 +17,33 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus -import java.util.Date +import java.time.LocalDate import kotlin.test.Ignore import kotlin.test.assertNotNull data class CreateBehandlingRequestTest( - val behandlingType: Behandlingstype, - val stonadType: Stønadstype, - val soknadType: SoknadType, - val datoFom: Date, - val datoTom: Date, - val mottatDato: Date, - val soknadFra: SøktAvType, + val behandlingstype: Behandlingstype, + val stønadstype: Stønadstype, + val søknadstype: Soknadstype, + val datoFom: LocalDate, + val datoTom: LocalDate, + val mottattdato: LocalDate, + val søknadFra: SøktAvType, val saksnummer: String?, - val behandlerEnhet: String, + val behandlerenhet: String, val roller: Set, ) data class CreateRolleDtoTest( - val rolleType: CreateRolleRolleType, + val rolletype: Rolletype, val ident: String?, - val opprettetDato: Date?, + val opprettetDato: LocalDate?, val navn: String? = null, + val fødselsdato: LocalDate, ) @Suppress("NonAsciiCharacters") -class BehandlingControllerTest() : KontrollerTestRunner() { +class BehandlingControllerTest : KontrollerTestRunner() { @Autowired lateinit var behandlingService: BehandlingService @@ -50,11 +51,26 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal opprette en behandling med null opprettetDato`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BARN, "1234", null), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BARN, + "1234", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(101), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(456), + ), ) - val behandlingReq = createBehandlingRequestTest("sak123", "en12", roller) + val behandlingReq = createBehandlingRequestTest("1900000", "en12", roller) val behandlingRes = httpHeaderTestRestTemplate.exchange( @@ -70,11 +86,21 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal opprette en behandling med null opprettetDato og så hente den`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BARN, "1234", null), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest(Rolletype.BARN, "1234", opprettetDato = null, fødselsdato = LocalDate.now().minusMonths(136)), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(555), + ), ) - val behandlingReq = createBehandlingRequestTest("sak123", "en12", roller) + val behandlingReq = createBehandlingRequestTest("1900000", "en12", roller) val behandlingRes = httpHeaderTestRestTemplate.exchange( @@ -126,10 +152,20 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal opprette en behandling`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(499), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) val responseMedNull = httpHeaderTestRestTemplate.exchange( @@ -146,10 +182,20 @@ class BehandlingControllerTest() : KontrollerTestRunner() { stubUtils.stubOpprettForsendelse() val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(511), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) val responseMedNull = httpHeaderTestRestTemplate.exchange( @@ -167,15 +213,25 @@ class BehandlingControllerTest() : KontrollerTestRunner() { stubUtils.stubOpprettForsendelse() val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(609), + ), ) val testBehandlingMedNull = createBehandlingRequestTest( - "sak123", + "1900000", "en12", roller, - ).copy(stonadType = Stønadstype.BIDRAG) + ).copy(stønadstype = Stønadstype.BIDRAG) val responseMedNull = httpHeaderTestRestTemplate.exchange( @@ -196,10 +252,20 @@ class BehandlingControllerTest() : KontrollerTestRunner() { stubUtils.stubOpprettForsendelse(status = HttpStatus.BAD_REQUEST) val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(542), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) val responseMedNull = httpHeaderTestRestTemplate.exchange( @@ -217,10 +283,10 @@ class BehandlingControllerTest() : KontrollerTestRunner() { behandlingService.createBehandling( Behandling( Behandlingstype.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(2), - Date(1), + Soknadstype.FASTSETTELSE, + LocalDate.now().minusMonths(5), + LocalDate.now().plusMonths(5), + LocalDate.now(), "123", 123213L, null, @@ -240,16 +306,23 @@ class BehandlingControllerTest() : KontrollerTestRunner() { Void::class.java, ) assertEquals(HttpStatus.OK, responseMedNull.statusCode) - assertEquals(vedtaksid, behandlingService.hentBehandlingById(behandling.id!!).vedtakId) + assertEquals(vedtaksid, behandlingService.hentBehandlingById(behandling.id!!).vedtaksid) } @Test fun `skal ikke opprette en behandling med bare én rolle`() { val testBehandlingMedNull = createBehandlingRequestTest( - "sak123", + "1900000", "en12", - setOf(CreateRolleDtoTest(CreateRolleRolleType.BARN, "abc1s", Date(1))), + setOf( + CreateRolleDtoTest( + Rolletype.BARN, + "abc1s", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + ), ) val responseMedNull = @@ -264,7 +337,7 @@ class BehandlingControllerTest() : KontrollerTestRunner() { @Test fun `skal ikke opprette en behandling uten roller`() { - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", setOf()) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", setOf()) val responseMedNull = httpHeaderTestRestTemplate.exchange( @@ -281,10 +354,20 @@ class BehandlingControllerTest() : KontrollerTestRunner() { // given val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, null, Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + null, + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(399), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) // when val responseMedNull = @@ -303,10 +386,21 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal opprette behandling som inkluderer barn med navn men uten ident`() { // given val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, null, Date(1), "Ola Dunk"), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + null, + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + navn = "Ola Dunk", + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(682), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) // when val responseMedNull = @@ -326,10 +420,21 @@ class BehandlingControllerTest() : KontrollerTestRunner() { // given val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "1235", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, null, Date(1), "Ola Dunk"), + CreateRolleDtoTest( + Rolletype.BARN, + "1235", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + null, + navn = "Ola Dunk", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(529), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) // when val responseMedNull = @@ -349,10 +454,20 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal ikke opprette en behandling med rolle med blank ident`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, " ", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + " ", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(555), + ), ) - val testBehandlingMedNull = createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) val responseMedNull = httpHeaderTestRestTemplate.exchange( @@ -368,8 +483,18 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal ikke opprette en behandling med blank sak`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(444), + ), ) val testBehandlingMedBlank = createBehandlingRequestTest(" ", "en12", roller) val responseMedBlank = @@ -386,8 +511,18 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal ikke opprette en behandling med blank sak1`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(478), + ), ) val testBehandlingMedBlank = createBehandlingRequestTest("", "en12", roller) val responseMedBlank = @@ -404,8 +539,18 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal ikke opprette en behandling med lang sak`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(533), + ), ) val testBehandlingMedBlank = createBehandlingRequestTest("123456789", "en12", roller) val responseMedBlank = @@ -422,8 +567,18 @@ class BehandlingControllerTest() : KontrollerTestRunner() { fun `skal ikke opprette en behandling med ugyldig enhet`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(500), + ), ) val b = createBehandlingRequestTest(null, "12312312312", roller) val r = @@ -446,10 +601,10 @@ class BehandlingControllerTest() : KontrollerTestRunner() { CreateBehandlingRequestTest( Behandlingstype.FORSKUDD, Stønadstype.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(1), - Date(1), + Soknadstype.FASTSETTELSE, + LocalDate.now().minusMonths(4), + LocalDate.now().plusMonths(4), + LocalDate.now(), SøktAvType.BIDRAGSMOTTAKER, saksnummer, enhet, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt index 02c60f8d9..e622c98e7 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt @@ -1,19 +1,19 @@ package no.nav.bidrag.behandling.controller -import no.nav.bidrag.behandling.database.datamodell.BoStatusType import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse -import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.boforhold.BoforholdResponse import no.nav.bidrag.behandling.dto.boforhold.UpdateBoforholdRequest import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto +import no.nav.bidrag.domene.enums.person.Bostatuskode +import no.nav.bidrag.domene.enums.rolle.Rolletype import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus -import java.util.Date +import java.time.LocalDate import kotlin.test.assertEquals class BoforholdControllerTest : KontrollerTestRunner() { @@ -21,10 +21,20 @@ class BoforholdControllerTest : KontrollerTestRunner() { fun `skal lagre boforhold data`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(529), + ), ) - val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("1900000", "en12", roller) // 1. Create new behandling val behandling = @@ -39,8 +49,18 @@ class BoforholdControllerTest : KontrollerTestRunner() { // 2.1 Prepare husstandsBarn val perioder = - setOf(HusstandsBarnPeriodeDto(null, null, null, BoStatusType.IKKE_REGISTRERT_PA_ADRESSE, Kilde.OFFENTLIG)) - val husstandsBarn = setOf(HusstandsbarnDto(behandling.body!!.id, true, perioder, "ident", null)) + setOf(HusstandsBarnPeriodeDto(null, null, null, Bostatuskode.IKKE_MED_FORELDER, Kilde.OFFENTLIG)) + val husstandsBarn = + setOf( + HusstandsbarnDto( + behandling.body!!.id, + true, + perioder, + "ident", + null, + fødselsdato = LocalDate.now().minusMonths(687), + ), + ) // 2.2 val boforholdData = UpdateBoforholdRequest(husstandsBarn, emptySet(), "med i vedtak", "kun i notat") // 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..e39e3f5ac 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/InntekterControllerTest.kt @@ -7,14 +7,14 @@ import io.kotest.matchers.shouldNotBe import jakarta.persistence.EntityManager import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Inntekt -import no.nav.bidrag.behandling.database.datamodell.InntektPostDomain +import no.nav.bidrag.behandling.database.datamodell.Inntektspost import no.nav.bidrag.behandling.database.repository.BehandlingRepository -import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto +import no.nav.bidrag.behandling.dto.inntekt.InntektDto import no.nav.bidrag.behandling.dto.inntekt.InntekterResponse -import no.nav.bidrag.behandling.dto.inntekt.UtvidetbarnetrygdDto +import no.nav.bidrag.behandling.dto.inntekt.OppdatereInntekterRequest import no.nav.bidrag.behandling.service.BehandlingService -import no.nav.bidrag.behandling.transformers.toDate import no.nav.bidrag.behandling.utils.oppretteBehandling +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost import org.hibernate.engine.spi.SessionImplementor import org.hibernate.resource.transaction.spi.TransactionStatus @@ -32,23 +32,6 @@ import java.time.LocalDate import kotlin.test.assertEquals import kotlin.test.assertNotNull -data class TestInntektRequest( - val inntekter: Set, - val barnetillegg: Set, - val utvidetbarnetrygd: Set, -) - -data class TestInntektDto( - val id: Long?, - val taMed: Boolean, - val inntektType: String?, - val belop: String, - val datoTom: String?, - val datoFom: String?, - val ident: String, - val inntektPostListe: Set, -) - class InntekterControllerTest : KontrollerTestRunner() { @Autowired lateinit var behandlingRepository: BehandlingRepository @@ -73,7 +56,7 @@ class InntekterControllerTest : KontrollerTestRunner() { var behandling = behandling() var inntekt = inntekt(behandling) - inntekt.inntektPostListe = inntektsposter(inntekt) + inntekt.inntektsposter = inntektsposter(inntekt) behandling.inntekter = setOf(inntekt).toMutableSet() behandlingRepository.save(behandling) @@ -144,7 +127,7 @@ class InntekterControllerTest : KontrollerTestRunner() { httpHeaderTestRestTemplate.exchange( "${rootUri()}/behandling/${lagretBehandlingUtenInntekter.id}/inntekter", HttpMethod.PUT, - HttpEntity(TestInntektRequest(setOf(inn), emptySet(), emptySet())), + HttpEntity(OppdatereInntekterRequest(setOf(inn), emptySet(), emptySet())), InntekterResponse::class.java, ) @@ -166,28 +149,37 @@ class InntekterControllerTest : KontrollerTestRunner() { val inntekt1 = testInntektDto().copy( id = null, - inntektPostListe = + inntektsposter = setOf( InntektPost("ABC1", "ABC1", BigDecimal.TEN), InntektPost("ABC2", "ABC2", BigDecimal.TEN), ), ) - val inntekt2 = testInntektDto().copy(datoFom = null, inntektType = "null") + val inntekt2 = + testInntektDto().copy( + datoFom = LocalDate.now().minusMonths(5), + inntektstype = Inntektsrapportering.INNTEKTSOPPLYSNINGER_ARBEIDSGIVER, + ) val r1 = httpHeaderTestRestTemplate.exchange( "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", HttpMethod.PUT, - HttpEntity(TestInntektRequest(setOf(inntekt1, inntekt2), setOf(), setOf())), + HttpEntity(OppdatereInntekterRequest(setOf(inntekt1, inntekt2), setOf(), setOf())), InntekterResponse::class.java, ) // then assertEquals(HttpStatus.OK, r1.statusCode) assertEquals(2, r1.body!!.inntekter.size) - assertNotNull(r1.body!!.inntekter.find { it.inntektType == "some0" && it.inntektPostListe.size == 2 }) - assertNotNull(r1.body!!.inntekter.find { it.inntektType == "null" && it.inntektPostListe.size == 1 }) + assertNotNull(r1.body!!.inntekter.find { it.inntektstype == Inntektsrapportering.DAGPENGER && it.inntektsposter.size == 2 }) + assertNotNull( + r1.body!!.inntekter.find { + it.inntektstype == Inntektsrapportering.INNTEKTSOPPLYSNINGER_ARBEIDSGIVER && + it.inntektsposter.size == 1 + }, + ) } @Test @@ -204,7 +196,7 @@ class InntekterControllerTest : KontrollerTestRunner() { httpHeaderTestRestTemplate.exchange( "${rootUri()}/behandling/${lagretBehandlingMedInntekter.id}/inntekter", HttpMethod.PUT, - HttpEntity(TestInntektRequest(emptySet(), emptySet(), emptySet())), + HttpEntity(OppdatereInntekterRequest(emptySet(), emptySet(), emptySet())), InntekterResponse::class.java, ) @@ -227,7 +219,7 @@ class InntekterControllerTest : KontrollerTestRunner() { if (inkludereInntekter) { var inntekt = inntekt(behandling) - inntekt.inntektPostListe = inntektsposter(inntekt) + inntekt.inntektsposter = inntektsposter(inntekt) behandling.inntekter = setOf(inntekt).toMutableSet() } @@ -237,19 +229,19 @@ class InntekterControllerTest : KontrollerTestRunner() { private fun inntekt(behandling: Behandling) = Inntekt( - "INNTEKTSOPPLYSNINGER_ARBEIDSGIVER", + Inntektsrapportering.INNTEKTSOPPLYSNINGER_ARBEIDSGIVER, BigDecimal.valueOf(45000), - LocalDate.now().minusYears(1).withDayOfYear(1).toDate(), - LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31).toDate(), + LocalDate.now().minusYears(1).withDayOfYear(1), + LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31), "1234", true, true, behandling = behandling, ) - private fun inntektsposter(inntekt: Inntekt): MutableSet = + private fun inntektsposter(inntekt: Inntekt): MutableSet = setOf( - InntektPostDomain( + Inntektspost( BigDecimal.valueOf(400000), "lønnFraFluefiske", "Lønn fra fluefiske", @@ -258,14 +250,15 @@ class InntekterControllerTest : KontrollerTestRunner() { ).toMutableSet() private fun testInntektDto() = - TestInntektDto( + InntektDto( null, true, - "some0", - "1.123", - "2022-10-10", - "2022-10-10", + Inntektsrapportering.DAGPENGER, + BigDecimal.valueOf(305203), + LocalDate.now().minusYears(1).withDayOfYear(1), + LocalDate.now().minusYears(1).withMonth(12).withDayOfMonth(31), "blablabla", + true, setOf(InntektPost("ABC", "ABC", BigDecimal.TEN)), ) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt index 0744a08bc..b8e7a2482 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/OpplysningerControllerTest.kt @@ -2,14 +2,14 @@ package no.nav.bidrag.behandling.controller import no.nav.bidrag.behandling.database.datamodell.OpplysningerType import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse -import no.nav.bidrag.behandling.dto.behandling.CreateRolleRolleType import no.nav.bidrag.behandling.dto.opplysninger.OpplysningerDto +import no.nav.bidrag.domene.enums.rolle.Rolletype import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.springframework.http.HttpEntity import org.springframework.http.HttpMethod import org.springframework.http.HttpStatus -import java.util.Date +import java.time.LocalDate import kotlin.test.Ignore data class AddOpplysningerRequest( @@ -25,10 +25,20 @@ class OpplysningerControllerTest : KontrollerTestRunner() { fun `skal opprette og oppdatere opplysninger`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(568), + ), ) - val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("1900000", "en12", roller) // 1. Create new behandling val behandling = @@ -63,10 +73,20 @@ class OpplysningerControllerTest : KontrollerTestRunner() { fun `skal ikke være mulig å opprette flere aktive opplysninger`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(429), + ), ) - val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("1900000", "en12", roller) // 1. Create new behandling val behandling = @@ -113,10 +133,20 @@ class OpplysningerControllerTest : KontrollerTestRunner() { fun `skal returnere 404 hvis opplysninger ikke eksisterer for en gitt behandling`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(471), + ), ) - val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("1900000", "en12", roller) // 1. Create new behandling val behandling = @@ -156,10 +186,20 @@ class OpplysningerControllerTest : KontrollerTestRunner() { fun `skal opprette og oppdatere opplysninger1`() { val roller = setOf( - CreateRolleDtoTest(CreateRolleRolleType.BARN, "123", Date(1)), - CreateRolleDtoTest(CreateRolleRolleType.BIDRAGS_MOTTAKER, "123", Date(1)), + CreateRolleDtoTest( + Rolletype.BARN, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(136), + ), + CreateRolleDtoTest( + Rolletype.BIDRAGSMOTTAKER, + "123", + opprettetDato = LocalDate.now().minusMonths(8), + fødselsdato = LocalDate.now().minusMonths(409), + ), ) - val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) + val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("1900000", "en12", roller) // 1. Create new behandling val behandling = diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt deleted file mode 100644 index 01af8f376..000000000 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningsTidspunktControllerTest.kt +++ /dev/null @@ -1,92 +0,0 @@ -package no.nav.bidrag.behandling.controller - -import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType -import no.nav.bidrag.behandling.dto.virkningstidspunkt.VirkningsTidspunktResponse -import no.nav.bidrag.behandling.service.BehandlingService -import no.nav.bidrag.behandling.service.BehandlingServiceTest -import org.junit.jupiter.api.Assertions -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.http.HttpEntity -import org.springframework.http.HttpMethod -import org.springframework.http.HttpStatus - -class VirkningsTidspunktControllerTest : KontrollerTestRunner() { - @Autowired - lateinit var behandlingService: BehandlingService - - @Test - fun `skal oppdatere virknings tidspunkt data`() { - val behandling = behandlingService.createBehandling(BehandlingServiceTest.prepareBehandling()) - - val req = - UpdateVirkningsTidspunktRequestTest( - "MED I VEDTAK", - "KUN I NOTAT", - ForskuddAarsakType.KF, - "2025-12-27", - ) - - val virknsRes = - httpHeaderTestRestTemplate.exchange( - "${rootUri()}/behandling/${behandling.id}/virkningstidspunkt", - HttpMethod.PUT, - HttpEntity(req), - VirkningsTidspunktResponse::class.java, - ) - Assertions.assertEquals(HttpStatus.OK, virknsRes.statusCode) - - val body = virknsRes.body!! - Assertions.assertEquals("KUN I NOTAT", body.virkningsTidspunktBegrunnelseKunINotat) - Assertions.assertEquals("MED I VEDTAK", body.virkningsTidspunktBegrunnelseMedIVedtakNotat) - Assertions.assertEquals("2025-12-27", body.virkningsDato.toString()) - } - -// @Test -// fun `skal validere aarsak type not blank`() { -// val updateReq = UpdateBehandlingRequestTest(aarsak = "") -// val updatedBehandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/123", HttpMethod.PUT, HttpEntity(updateReq), Void::class.java) -// -// Assertions.assertEquals(HttpStatus.BAD_REQUEST, updatedBehandling.statusCode) -// } - -// @Test -// fun `skal ignorere felt som ikke eksisterer i backend`() { -// val roller = setOf( -// CreateRolleDtoTest(RolleType.BARN, "123", Date(1)), -// CreateRolleDtoTest(RolleType.BIDRAGS_MOTTAKER, "123", Date(1)), -// ) -// val createBehandling = BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) -// -// val behandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling", HttpMethod.POST, HttpEntity(createBehandling), CreateBehandlingResponse::class.java) -// Assertions.assertEquals(HttpStatus.OK, behandling.statusCode) -// -// val updateReq = UpdateBehandlingRequestNonExistingFieldTest(avslag = AvslagType.MANGL_DOK.name, begrunnelseMedIVedtakNotat = "Some text") -// val updatedBehandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/${behandling.body!!.id}", HttpMethod.PUT, HttpEntity(updateReq), Void::class.java) -// -// Assertions.assertEquals(HttpStatus.OK, updatedBehandling.statusCode) -// } - -// @Test -// fun `skal validere avlag type not blank`() { -// val updateReq = UpdateBehandlingRequestTest(avslag = " ") -// val updatedBehandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/123", HttpMethod.PUT, HttpEntity(updateReq), Void::class.java) -// -// Assertions.assertEquals(HttpStatus.BAD_REQUEST, updatedBehandling.statusCode) -// } - -// @Test -// fun `skal validere datoer`() { -// val updateReq = UpdateBehandlingRequestTest(avslag = AvslagType.MANGL_DOK.name, virkningsDato = "1.2.2023") -// val updatedBehandling = httpHeaderTestRestTemplate.exchange("${rootUri()}/behandling/123", HttpMethod.PUT, HttpEntity(updateReq), Void::class.java) -// -// Assertions.assertEquals(HttpStatus.BAD_REQUEST, updatedBehandling.statusCode) -// } -} - -data class UpdateVirkningsTidspunktRequestTest( - val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, - val virkningsTidspunktBegrunnelseKunINotat: String? = null, - val aarsak: ForskuddAarsakType? = null, - val virkningsDato: String? = null, -) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktControllerTest.kt new file mode 100644 index 000000000..7111effcd --- /dev/null +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktControllerTest.kt @@ -0,0 +1,51 @@ +package no.nav.bidrag.behandling.controller + +import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType +import no.nav.bidrag.behandling.dto.virkningstidspunkt.VirkningstidspunktResponse +import no.nav.bidrag.behandling.service.BehandlingService +import no.nav.bidrag.behandling.service.BehandlingServiceTest +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.HttpEntity +import org.springframework.http.HttpMethod +import org.springframework.http.HttpStatus + +class VirkningstidspunktControllerTest : KontrollerTestRunner() { + @Autowired + lateinit var behandlingService: BehandlingService + + @Test + fun `skal oppdatere virknings tidspunkt data`() { + val behandling = behandlingService.createBehandling(BehandlingServiceTest.prepareBehandling()) + + val req = + OppdatereVirkningsTidspunktRequestTest( + "MED I VEDTAK", + "KUN I NOTAT", + ForskuddAarsakType.KF, + "2025-12-27", + ) + + val respons = + httpHeaderTestRestTemplate.exchange( + "${rootUri()}/behandling/${behandling.id}/virkningstidspunkt", + HttpMethod.PUT, + HttpEntity(req), + VirkningstidspunktResponse::class.java, + ) + Assertions.assertEquals(HttpStatus.OK, respons.statusCode) + + val body = respons.body!! + Assertions.assertEquals("KUN I NOTAT", body.virkningstidspunktsbegrunnelseKunINotat) + Assertions.assertEquals("MED I VEDTAK", body.virkningstidspunktsbegrunnelseIVedtakOgNotat) + Assertions.assertEquals("2025-12-27", body.virkningsdato.toString()) + } +} + +data class OppdatereVirkningsTidspunktRequestTest( + val virkningstidspunktsbegrunnelseIVedtakOgNotat: String? = null, + val virkningstidspunktsbegrunnelseKunINotat: String? = null, + val årsak: ForskuddAarsakType? = null, + val virkningsdato: String? = null, +) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index f38bff64b..b5487a5f8 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -5,7 +5,7 @@ import com.github.tomakehurst.wiremock.client.WireMock import io.kotest.matchers.shouldBe import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.kafka.VedtakHendelseListener import no.nav.bidrag.behandling.service.CommonTestRunner @@ -33,8 +33,8 @@ import org.apache.kafka.clients.consumer.ConsumerRecord import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired +import java.time.LocalDate import java.time.LocalDateTime -import java.util.Date class VedtakHendelseTest : CommonTestRunner() { val stubUtils: StubUtils = StubUtils() @@ -68,7 +68,7 @@ class VedtakHendelseTest : CommonTestRunner() { ), ) val oppdatertBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get() - oppdatertBehandling.vedtakId shouldBe vedtakId + oppdatertBehandling.vedtaksid shouldBe vedtakId stubUtils.Verify().opprettForsendelseKaltAntallGanger(3) stubUtils.Verify() .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BM.fødselsnummer?.verdi}\"") @@ -92,7 +92,7 @@ class VedtakHendelseTest : CommonTestRunner() { opprettVedtakhendelse(vedtakId, behandling.id!!, stonadType = Stønadstype.FORSKUDD) vedtakHendelseListener.prossesserVedtakHendelse(opprettHendelseRecord(vedtakHendelse)) val oppdatertBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get() - oppdatertBehandling.vedtakId shouldBe vedtakId + oppdatertBehandling.vedtaksid shouldBe vedtakId stubUtils.Verify().opprettForsendelseKaltAntallGanger(1) stubUtils.Verify() .opprettForsendelseKaltMed("\"gjelderIdent\":\"${ROLLE_BM.fødselsnummer?.verdi}\"") @@ -109,17 +109,17 @@ class VedtakHendelseTest : CommonTestRunner() { private fun opprettBehandling() = Behandling( - datoFom = Date(), - datoTom = Date(), + datoFom = LocalDate.now(), + datoTom = LocalDate.now(), saksnummer = SAKSNUMMER, - soknadId = 123123L, + soknadsid = 123123L, behandlerEnhet = "4806", behandlingType = Behandlingstype.BIDRAG18AAR, - engangsbelopType = null, - mottatDato = Date(), + engangsbeloptype = null, + mottattdato = LocalDate.now(), soknadFra = SøktAvType.BIDRAGSMOTTAKER, - soknadType = SoknadType.FASTSETTELSE, - stonadType = Stønadstype.BIDRAG18AAR, + soknadstype = Soknadstype.FASTSETTELSE, + stonadstype = Stønadstype.BIDRAG18AAR, ) private fun opprettVedtakhendelse( 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 419b24366..43b119065 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -10,17 +10,17 @@ import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType 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.SivilstandType -import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.behandling.database.datamodell.Utvidetbarnetrygd +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +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.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 import org.junit.jupiter.api.Assertions @@ -30,13 +30,18 @@ import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Nested import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.mock.mockito.MockBean import org.springframework.transaction.annotation.Transactional import org.springframework.web.client.HttpClientErrorException import java.math.BigDecimal +import java.time.LocalDate +import java.time.YearMonth import java.util.Calendar -import java.util.Date class BehandlingServiceTest : TestContainerRunner() { + @MockBean + lateinit var forsendelseService: ForsendelseService + @Autowired lateinit var behandlingService: BehandlingService @@ -49,7 +54,7 @@ class BehandlingServiceTest : TestContainerRunner() { @Nested open inner class HenteBehandling { @Test - fun `skal caste 404 exception hvis behandlingen ikke er der`() { + fun `skal kaste 404 exception hvis behandlingen ikke er der`() { Assertions.assertThrows(HttpClientErrorException::class.java) { behandlingService.hentBehandlingById(1234) } @@ -71,7 +76,7 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) assertEquals(3, actualBehandlingFetched.roller.size) - assertNotNull(actualBehandlingFetched.roller.iterator().next().fodtDato) + assertNotNull(actualBehandlingFetched.roller.iterator().next().foedselsdato) } @Test @@ -81,9 +86,9 @@ class BehandlingServiceTest : TestContainerRunner() { behandling.inntekter = mutableSetOf( Inntekt( - "", + Inntektsrapportering.AINNTEKT_BEREGNET_3MND, BigDecimal.valueOf(555.55), - null, + LocalDate.now().minusMonths(4), null, "ident", true, @@ -118,17 +123,27 @@ class BehandlingServiceTest : TestContainerRunner() { assertNotNull(createdBehandling.id) assertNull(createdBehandling.aarsak) - assertEquals(0, createdBehandling.husstandsBarn.size) + assertEquals(0, createdBehandling.husstandsbarn.size) assertEquals(0, createdBehandling.sivilstand.size) - val husstandsBarn = setOf(HusstandsbarnDto(null, true, emptySet(), "Manuelt", "ident!")) + val husstandsBarn = + setOf( + HusstandsbarnDto( + null, + true, + emptySet(), + ident = "Manuelt", + navn = "ident!", + fødselsdato = LocalDate.now().minusMonths(156), + ), + ) val sivilstand = setOf( SivilstandDto( null, Calendar.getInstance().time.toLocalDate(), Calendar.getInstance().time.toLocalDate(), - SivilstandType.BOR_ALENE_MED_BARN, + Sivilstandskode.BOR_ALENE_MED_BARN, Kilde.OFFENTLIG, ), ) @@ -143,10 +158,10 @@ class BehandlingServiceTest : TestContainerRunner() { val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) - assertEquals(1, updatedBehandling.husstandsBarn.size) + assertEquals(1, updatedBehandling.husstandsbarn.size) assertEquals(1, updatedBehandling.sivilstand.size) - assertEquals(notat, updatedBehandling.boforholdBegrunnelseKunINotat) - assertEquals(medIVedtak, updatedBehandling.boforholdBegrunnelseMedIVedtakNotat) + assertEquals(notat, updatedBehandling.boforholdsbegrunnelseKunINotat) + assertEquals(medIVedtak, updatedBehandling.boforholdsbegrunnelseIVedtakOgNotat) } @Test @@ -161,7 +176,7 @@ class BehandlingServiceTest : TestContainerRunner() { assertNotNull(createdBehandling.id) assertNull(createdBehandling.aarsak) - behandlingService.updateVirkningsTidspunkt( + behandlingService.oppdatereVirkningstidspunkt( createdBehandling.id!!, ForskuddAarsakType.BF, null, @@ -172,10 +187,10 @@ class BehandlingServiceTest : TestContainerRunner() { val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) - assertEquals(notat, updatedBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(notat, updatedBehandling.virkningstidspunktbegrunnelseKunINotat) assertEquals( medIVedtak, - updatedBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, + updatedBehandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, ) } } @@ -203,11 +218,11 @@ class BehandlingServiceTest : TestContainerRunner() { b.id!!, listOf( CreateRolleDto( - CreateRolleRolleType.BARN, + Rolletype.BARN, "newident", null, - Date(1), - Date(2), + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), ), ), ) @@ -221,7 +236,14 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.syncRoller( b.id!!, listOf( - CreateRolleDto(CreateRolleRolleType.BARN, "1111", null, Date(1), Date(2), true), + CreateRolleDto( + Rolletype.BARN, + "1111", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + true, + ), ), ) @@ -236,15 +258,34 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.syncRoller( b.id!!, listOf( - CreateRolleDto(CreateRolleRolleType.BARN, "1111", null, Date(1), Date(2), true), - CreateRolleDto(CreateRolleRolleType.BARN, "111123", null, Date(1), Date(2)), - CreateRolleDto(CreateRolleRolleType.BARN, "1111234", null, Date(1), Date(2)), + CreateRolleDto( + Rolletype.BARN, + "1111", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + true, + ), + CreateRolleDto( + Rolletype.BARN, + "111123", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + ), + CreateRolleDto( + Rolletype.BARN, + "1111234", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + ), ), ) assertEquals( 2, - behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolleType == Rolletype.BARN }.size, + behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolletype == Rolletype.BARN }.size, ) } } @@ -284,10 +325,10 @@ class BehandlingServiceTest : TestContainerRunner() { val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) assertEquals(3, hentBehandlingById.roller.size) - assertEquals(notat, oppdatertBehandling.virkningsTidspunktBegrunnelseKunINotat) + assertEquals(notat, oppdatertBehandling.virkningstidspunktbegrunnelseKunINotat) assertEquals( medIVedtak, - oppdatertBehandling.virkningsTidspunktBegrunnelseMedIVedtakNotat, + oppdatertBehandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, ) } @@ -297,7 +338,7 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.updateBehandling(b.id!!, 123L) - assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeId) + assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeid) } } @@ -311,18 +352,18 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(0, actualBehandling.inntekter.size) assertEquals(0, actualBehandling.barnetillegg.size) - assertEquals(0, actualBehandling.utvidetbarnetrygd.size) - assertNull(actualBehandling.inntektBegrunnelseMedIVedtakNotat) - assertNull(actualBehandling.inntektBegrunnelseKunINotat) + assertEquals(0, actualBehandling.utvidetBarnetrygd.size) + assertNull(actualBehandling.inntektsbegrunnelseIVedtakOgNotat) + assertNull(actualBehandling.inntektsbegrunnelseKunINotat) behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf( Inntekt( - "", + Inntektsrapportering.AINNTEKT_BEREGNET_3MND, BigDecimal.valueOf(1.111), - Calendar.getInstance().time, - Calendar.getInstance().time, + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), "ident", true, true, @@ -339,12 +380,12 @@ class BehandlingServiceTest : TestContainerRunner() { ), ), mutableSetOf( - Utvidetbarnetrygd( + UtvidetBarnetrygd( actualBehandling, true, BigDecimal.TEN, - Calendar.getInstance().time, - Calendar.getInstance().time, + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), ), ), "Med i Vedtaket", @@ -355,9 +396,9 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(1, expectedBehandling.inntekter.size) assertEquals(1, expectedBehandling.barnetillegg.size) - assertEquals(1, expectedBehandling.utvidetbarnetrygd.size) - assertEquals("Med i Vedtaket", expectedBehandling.inntektBegrunnelseMedIVedtakNotat) - assertEquals("Kun i Notat", expectedBehandling.inntektBegrunnelseKunINotat) + assertEquals(1, expectedBehandling.utvidetBarnetrygd.size) + assertEquals("Med i Vedtaket", expectedBehandling.inntektsbegrunnelseIVedtakOgNotat) + assertEquals("Kun i Notat", expectedBehandling.inntektsbegrunnelseKunINotat) } @Test @@ -371,16 +412,16 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(0, actualBehandling.inntekter.size) assertEquals(0, actualBehandling.barnetillegg.size) - assertEquals(0, actualBehandling.utvidetbarnetrygd.size) + assertEquals(0, actualBehandling.utvidetBarnetrygd.size) behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf( Inntekt( - "", + Inntektsrapportering.DAGPENGER, BigDecimal.valueOf(1.111), - Calendar.getInstance().time, - Calendar.getInstance().time, + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), "ident", true, true, @@ -405,8 +446,8 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(1, expectedBehandling.inntekter.size) assertEquals(1, expectedBehandling.barnetillegg.size) - assertNotNull(expectedBehandling.inntektBegrunnelseMedIVedtakNotat) - assertNotNull(expectedBehandling.inntektBegrunnelseKunINotat) + assertNotNull(expectedBehandling.inntektsbegrunnelseIVedtakOgNotat) + assertNotNull(expectedBehandling.inntektsbegrunnelseKunINotat) behandlingService.oppdaterInntekter( actualBehandling.id!!, @@ -422,8 +463,8 @@ class BehandlingServiceTest : TestContainerRunner() { assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) - assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseMedIVedtakNotat) - assertNull(expectedBehandlingWithoutInntekter.inntektBegrunnelseKunINotat) + assertNull(expectedBehandlingWithoutInntekter.inntektsbegrunnelseIVedtakOgNotat) + assertNull(expectedBehandlingWithoutInntekter.inntektsbegrunnelseKunINotat) } } @@ -432,7 +473,7 @@ class BehandlingServiceTest : TestContainerRunner() { val behandling = createBehandling() assertEquals(3, behandling.roller.size) - behandling.roller.removeIf { it.rolleType == Rolletype.BARN } + behandling.roller.removeIf { it.rolletype == Rolletype.BARN } behandlingRepository.save(behandling) @@ -457,11 +498,11 @@ class BehandlingServiceTest : TestContainerRunner() { val behandling = Behandling( Behandlingstype.FORSKUDD, - SoknadType.FASTSETTELSE, - Calendar.getInstance().time, - Calendar.getInstance().time, - Calendar.getInstance().time, - "1234", + Soknadstype.FASTSETTELSE, + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), + LocalDate.now(), + "1900000", 123213L, null, "1234", @@ -475,9 +516,9 @@ class BehandlingServiceTest : TestContainerRunner() { createRoller.map { Rolle( behandling, - it.rolleType, + it.rolletype, it.ident, - it.fodtDato, + it.foedselsdato, it.opprettetDato, ) }, @@ -488,11 +529,28 @@ class BehandlingServiceTest : TestContainerRunner() { } fun prepareRoles(behandling: Behandling): Set { - val someDate = Calendar.getInstance().time return setOf( - Rolle(behandling, Rolletype.BIDRAGSMOTTAKER, "123344", someDate, someDate), - Rolle(behandling, Rolletype.BIDRAGSPLIKTIG, "44332211", someDate, someDate), - Rolle(behandling, Rolletype.BARN, "1111", someDate, someDate), + Rolle( + behandling, + Rolletype.BIDRAGSMOTTAKER, + "123344", + LocalDate.now().minusMonths(1025), + LocalDate.now().minusMonths(2), + ), + Rolle( + behandling, + Rolletype.BIDRAGSPLIKTIG, + "44332211", + LocalDate.now().minusMonths(1068), + LocalDate.now().minusMonths(2), + ), + Rolle( + behandling, + Rolletype.BARN, + "1111", + LocalDate.now().minusMonths(154), + LocalDate.now().minusMonths(2), + ), ) } } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt index b8eb28bf5..384fc8f93 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt @@ -4,12 +4,13 @@ import no.nav.bidrag.behandling.TestContainerRunner import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.OpplysningerType -import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired +import java.time.LocalDate import java.util.Date import kotlin.test.assertEquals import kotlin.test.assertTrue @@ -33,29 +34,20 @@ class OpplysningerServiceTest : TestContainerRunner() { behandlingService.createBehandling( Behandling( Behandlingstype.FORSKUDD, - SoknadType.FASTSETTELSE, - Date(1), - Date(2), - Date(2), + Soknadstype.FASTSETTELSE, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(2), + mottattdato = LocalDate.now(), "123", 123L, null, "ENH1", SøktAvType.VERGE, - engangsbelopType = Engangsbeløptype.ETTERGIVELSE, - stonadType = null, + engangsbeloptype = Engangsbeløptype.ETTERGIVELSE, + stonadstype = null, ), ) - val opp1 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) - val opp2 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) val opp4 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) - val opp3 = - opplysningerService.opprett( - b.id!!, - OpplysningerType.INNTEKTSOPPLYSNINGER, - "data", - Date(1), - ) val option = opplysningerService.hentSistAktiv(b.id!!, OpplysningerType.BOFORHOLD) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt index 9a3baf297..41e4887fa 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt @@ -7,9 +7,8 @@ import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.Rolle -import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto -import no.nav.bidrag.behandling.transformers.toDate import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.ident.Personident @@ -38,18 +37,18 @@ fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = fun oppretteBehandling(): Behandling { return Behandling( Behandlingstype.FORSKUDD, - SoknadType.FASTSETTELSE, - datoFom = YearMonth.now().atDay(1).minusMonths(16).toDate(), - datoTom = YearMonth.now().plusMonths(10).atEndOfMonth().toDate(), - mottatDato = LocalDate.now().toDate(), - "123", + Soknadstype.FASTSETTELSE, + datoFom = YearMonth.now().atDay(1).minusMonths(16), + datoTom = YearMonth.now().plusMonths(10).atEndOfMonth(), + mottattdato = LocalDate.now(), + "1900000", 123, null, "ENH", SøktAvType.BIDRAGSMOTTAKER, null, null, - virkningsDato = LocalDate.now().toDate(), + virkningsdato = LocalDate.now(), ) } @@ -57,23 +56,23 @@ fun oppretteBehandlingRoller(behandling: Behandling) = mutableSetOf( Rolle( ident = ROLLE_BM.fødselsnummer?.verdi!!, - rolleType = Rolletype.BIDRAGSMOTTAKER, + rolletype = Rolletype.BIDRAGSMOTTAKER, behandling = behandling, - fodtDato = null, + foedselsdato = LocalDate.now().minusMonths(29 * 13), opprettetDato = null, ), Rolle( ident = ROLLE_BP.fødselsnummer?.verdi!!, - rolleType = Rolletype.BIDRAGSPLIKTIG, + rolletype = Rolletype.BIDRAGSPLIKTIG, behandling = behandling, - fodtDato = null, + foedselsdato = LocalDate.now().minusMonths(33 * 11), opprettetDato = null, ), Rolle( ident = ROLLE_BA_1.fødselsnummer?.verdi!!, - rolleType = Rolletype.BARN, + rolletype = Rolletype.BARN, behandling = behandling, - fodtDato = null, + foedselsdato = LocalDate.now().minusMonths(3 * 14), opprettetDato = null, ), ) diff --git a/src/test/resources/application-test.yaml b/src/test/resources/application-test.yaml index 55639fb94..87e21182f 100644 --- a/src/test/resources/application-test.yaml +++ b/src/test/resources/application-test.yaml @@ -1,5 +1,6 @@ BIDRAG_PERSON_URL: http://localhost:${wiremock.server.port}/bidrag-person BIDRAG_BEREGN_FORSKUDD_URL: http://localhost:${wiremock.server.port} +BIDRAG_GRUNNLAG_URL: http://localhost:${wiremock.server.port}/grunnlag BIDRAG_FORSENDELSE_URL: http://localhost:${wiremock.server.port}/forsendelse BIDRAG_TILGANGSKONTROLL_URL: http://localhost:${wiremock.server.port}/tilgangskontroll AZURE_OPENID_CONFIG_ISSUER: http://localhost:${mock-oauth2-server.port}/aad @@ -47,6 +48,15 @@ no.nav.security.jwt: client-id: 123 client-secret: 123 client-auth-method: client_secret_basic + bidrag-grunnlag: + resource-url: ${BIDRAG_GRUNNLAG_URL} + token-endpoint-url: http://localhost:${mock-oauth2-server.port:1234}/aad/token + grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer + scope: api://123/.default + authentication: + client-id: 123 + client-secret: 123 + client-auth-method: client_secret_basic issuer.aad: discovery_url: http://localhost:${mock-oauth2-server.port:1234}/aad/.well-known/openid-configuration accepted_audience: ${AZURE_APP_CLIENT_ID}, api://${AZURE_APP_CLIENT_ID}, aud-localhost From 3c6dee0d1faabdea9abd7df96f110845ad66f05a Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 08:47:45 +0100 Subject: [PATCH 17/33] =?UTF-8?q?Flytte=20db-migreringsskript=20for=20?= =?UTF-8?q?=C3=A5=20klargj=C3=B8re=20for=20main=20rebase?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1.0.45__alter_table_behandling.sql | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/resources/db/migration/V1.0.45__alter_table_behandling.sql diff --git a/src/main/resources/db/migration/V1.0.45__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.45__alter_table_behandling.sql new file mode 100644 index 000000000..6e43b068f --- /dev/null +++ b/src/main/resources/db/migration/V1.0.45__alter_table_behandling.sql @@ -0,0 +1,42 @@ +-- Table: BEHANDLING + +/* + ALTER TABLE BEHANDLING DROP COLUMN GRUNNLAG_SIST_INNHENTET; + ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSTYPE TO SOKNAD_TYPE; + ALTER TABLE BEHANDLINGRENAME COLUMN MOTTATTDATO TO MOTTATT_DATO; + ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSID TO SOKNAD_ID; + ALTER TABLE BEHANDLING RENAME COLUMN STONADSTYPE TO STONAD_TYPE; + ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOPTYPE TO ENGANGSBELOP_TYPE; + ALTER TABLE BEHANDLING RENAME COLUMN VEDTAKSID TO VEDTAK_ID; + ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSDATO TO VIRKNINGS_DATO; + ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT TO BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_KUN_I_NOTAT; + ALTER TABLE BEHANDLINGRENAME COLUMN GRUNNLAGSPAKKEID TO GRUNNLAGSPAKKE_ID; + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.45'; + */ + +ALTER TABLE BEHANDLING ADD COLUMN GRUNNLAG_SIST_INNHENTET TIMESTAMP WITHOUT TIME ZONE; +ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_TYPE TO SOKNADSTYPE; +ALTER TABLE BEHANDLING RENAME COLUMN MOTTAT_DATO TO MOTTATTDATO; +ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_ID TO SOKNADSID; +ALTER TABLE BEHANDLING RENAME COLUMN STONAD_TYPE TO STONADSTYPE; +ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOP_TYPE TO ENGANGSBELOPTYPE; +ALTER TABLE BEHANDLING RENAME COLUMN VEDTAK_ID TO VEDTAKSID; +ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_DATO TO VIRKNINGSDATO; +ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT TO VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLD_BEGRUNNELSE_KUN_I_NOTAT TO BOFORHOLDSBEGRUNNELSE_KUN_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN INNTEKT_BEGRUNNELSE_KUN_I_NOTAT TO INNTEKTSBEGRUNNELSE_KUN_NOTAT; +ALTER TABLE BEHANDLING RENAME COLUMN GRUNNLAGSPAKKE_ID TO GRUNNLAGSPAKKEID; + + + + + From d4a5f0dcada785c36d6b37430c28ff3ea2f1684c Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 11:18:25 +0100 Subject: [PATCH 18/33] Merge med main --- pom.xml | 8 +- .../BehandlingBeregnForskuddController.kt | 16 +- .../controller/InntekterController.kt | 14 +- .../datamodell/Husstandsbarnperiode.kt | 8 - .../behandling/database/datamodell/Rolle.kt | 7 - .../database/datamodell/Sivilstand.kt | 14 +- .../dto/behandling/CreateBehandlingRequest.kt | 8 - .../CreateBehandlingRequest.kt.orig | 50 ++ .../behandling/dto/behandling/ForskuddDto.kt | 4 - .../dto/behandling/ForskuddDto.kt.orig | 39 ++ .../husstandsbarn/HusstandsBarnPeriodeDto.kt | 4 - .../HusstandsBarnPeriodeDto.kt.orig | 25 + .../dto/inntekt/UtvidetBarnetrygdDto.kt | 4 +- .../behandling/service/BehandlingService.kt | 43 +- .../behandling/transformers/DtoExtensions.kt | 47 +- .../transformers/Forskuddsmapping.kt | 2 +- .../V1.0.35__alter_table_behandling.sql | 42 -- .../V1.0.36__alter_table_sivilstand.sql | 14 - ... V1.0.37__alter_table_barn_i_husstand.sql} | 0 ...7__alter_table_barn_i_husstand_periode.sql | 14 - ...ql => V1.0.44__alter_table_behandling.sql} | 0 .../controller/BehandlingControllerTest.kt | 3 - .../controller/BoforholdControllerTest.kt | 23 +- .../service/BehandlingServiceTest.kt | 61 +- .../service/BehandlingServiceTest.kt.orig | 609 ++++++++++++++++++ .../service/OpplysningerServiceTest.kt | 4 - .../service/OpplysningerServiceTest.kt.orig | 61 ++ .../nav/bidrag/behandling/utils/Testdata.kt | 4 - .../bidrag/behandling/utils/Testdata.kt.orig | 82 +++ 29 files changed, 899 insertions(+), 311 deletions(-) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig delete mode 100644 src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql delete mode 100644 src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql rename src/main/resources/db/migration/{V1.0.44__alter_table_barn_i_husstand.sql => V1.0.37__alter_table_barn_i_husstand.sql} (100%) delete mode 100644 src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql rename src/main/resources/db/migration/{V1.0.45__alter_table_behandling.sql => V1.0.44__alter_table_behandling.sql} (100%) create mode 100644 src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig create mode 100644 src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig create mode 100644 src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig diff --git a/pom.xml b/pom.xml index ce3454f11..2b976b179 100644 --- a/pom.xml +++ b/pom.xml @@ -15,15 +15,9 @@ bidrag-behandling 21 -<<<<<<< HEAD - 1.9.20 - 20231114143627_14d61cd - 20231201123116_52f7fbf -======= 1.9.21 20231124134729_6778484 - 20231129081122_595a8a8 ->>>>>>> main + 20231206085150_493c399 7.4 3.1.9 2.3.0 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt index ade9028a1..510609b24 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt @@ -3,16 +3,7 @@ package no.nav.bidrag.behandling.controller import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement import mu.KotlinLogging -<<<<<<< HEAD import no.nav.bidrag.behandling.dto.beregning.Forskuddsberegningrespons -======= -import no.nav.bidrag.behandling.beregning.ForskuddBeregning -import no.nav.bidrag.behandling.consumer.BidragBeregnForskuddConsumer -import no.nav.bidrag.behandling.consumer.BidragPersonConsumer -import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningPerBarn -import no.nav.bidrag.behandling.dto.beregning.ForskuddBeregningRespons -import no.nav.bidrag.behandling.fantIkkeFødselsdatoTilSøknadsbarn ->>>>>>> main import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.service.ForskuddService import org.springframework.http.HttpStatus @@ -28,15 +19,16 @@ class BehandlingBeregnForskuddController( private val forskuddService: ForskuddService, ) { @Suppress("unused") - @PostMapping("/behandling/{behandlingId}/beregn") + @PostMapping("/behandling/{behandlingsid}/beregn") @Operation( description = "Beregn forskudd", security = [SecurityRequirement(name = "bearer-key")], ) fun beregnForskudd( - @PathVariable behandlingId: Long, + @PathVariable behandlingsid: Long, ): Forskuddsberegningrespons { - val behandling = behandlingService.hentBehandlingById(behandlingId) + LOGGER.info("Beregner forskudd for behandling med id $behandlingsid") + val behandling = behandlingService.hentBehandlingById(behandlingsid) if (behandling.id == null) throw HttpClientErrorException(HttpStatus.NOT_FOUND) 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 aa51ccc26..b11c8f785 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt @@ -40,19 +40,11 @@ class InntekterController(private val behandlingService: BehandlingService) { ): InntekterResponse { behandlingService.oppdaterInntekter( behandlingId, -<<<<<<< HEAD - request.inntekter.toInntektDomain(behandling!!), - request.barnetillegg.toBarnetilleggDomain(behandling), - request.utvidetBarnetrygd.toUtvidetbarnetrygdDomain(behandling), - request.inntektsbegrunnelseIVedtakOgNotat, - request.inntektsbegrunnelseKunINotat, -======= request.inntekter, request.barnetillegg, - request.utvidetbarnetrygd, - request.inntektBegrunnelseMedIVedtakNotat, - request.inntektBegrunnelseKunINotat, ->>>>>>> main + request.utvidetBarnetrygd, + request.inntektsbegrunnelseIVedtakOgNotat, + request.inntektsbegrunnelseKunINotat, ) val nyBehandling = behandlingService.hentBehandlingById(behandlingId) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt index a0506aa25..84207b8c8 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Husstandsbarnperiode.kt @@ -10,11 +10,7 @@ import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne import no.nav.bidrag.domene.enums.person.Bostatuskode -<<<<<<< HEAD import java.time.LocalDate -======= -import java.util.Date ->>>>>>> main @Entity(name = "barn_i_husstand_periode") class Husstandsbarnperiode( @@ -24,11 +20,7 @@ class Husstandsbarnperiode( val datoFom: LocalDate?, val datoTom: LocalDate?, @Enumerated(EnumType.STRING) -<<<<<<< HEAD val bostatus: Bostatuskode, -======= - val bostatus: Bostatuskode?, ->>>>>>> main @Enumerated(EnumType.STRING) val kilde: Kilde, @Id diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt index 2656c89bd..cc8efcac6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Rolle.kt @@ -22,17 +22,10 @@ class Rolle( @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, @Enumerated(EnumType.STRING) -<<<<<<< HEAD val rolletype: Rolletype, val ident: String?, val foedselsdato: LocalDate, val opprettetDato: LocalDate?, -======= - val rolleType: Rolletype, - val ident: String?, - val fodtDato: Date?, - val opprettetDato: Date?, ->>>>>>> main @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt index 8c15668a2..d0a14cd62 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/Sivilstand.kt @@ -9,12 +9,7 @@ import jakarta.persistence.GenerationType import jakarta.persistence.Id import jakarta.persistence.JoinColumn import jakarta.persistence.ManyToOne -<<<<<<< HEAD import java.time.LocalDate -======= -import no.nav.bidrag.domene.enums.person.Sivilstandskode -import java.util.Date ->>>>>>> main // TODO: koble sammen med rolletabellen @Entity(name = "sivilstand") @@ -22,16 +17,9 @@ class Sivilstand( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, -<<<<<<< HEAD val datoFom: LocalDate? = null, val datoTom: LocalDate? = null, - val sivilstandstype: String, -======= - val datoFom: Date?, - val datoTom: Date?, - @Enumerated(EnumType.STRING) - val sivilstand: Sivilstandskode, ->>>>>>> main + val sivilstand: String, @Enumerated(EnumType.STRING) val kilde: Kilde, @Id diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt index ec44b9fce..f926d68cc 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt @@ -5,19 +5,11 @@ import jakarta.validation.Valid import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -<<<<<<< HEAD import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import no.nav.bidrag.domene.enums.vedtak.Stønadstype import java.time.LocalDate -======= -import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.domene.enums.rolle.SøktAvType -import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype -import no.nav.bidrag.domene.enums.vedtak.Stønadstype -import java.util.Date ->>>>>>> main data class CreateBehandlingRequest( @Schema(required = true) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig new file mode 100644 index 000000000..ec44b9fce --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig @@ -0,0 +1,50 @@ +package no.nav.bidrag.behandling.dto.behandling + +import io.swagger.v3.oas.annotations.media.Schema +import jakarta.validation.Valid +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype +<<<<<<< HEAD +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import java.time.LocalDate +======= +import no.nav.bidrag.behandling.database.datamodell.SoknadType +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import java.util.Date +>>>>>>> main + +data class CreateBehandlingRequest( + @Schema(required = true) + val behandlingstype: Behandlingstype, + @Schema(required = true) + val søknadstype: Soknadstype, + @Schema(required = true) + val datoFom: LocalDate, + @Schema(required = true) + val datoTom: LocalDate, + @Schema(required = true) + val mottattdato: LocalDate, + @Schema(required = true) + val søknadFra: SøktAvType, + @field:NotBlank(message = "Saksnummer kan ikke være blank") + @field:Size(max = 7, min = 7, message = "Saksnummer skal ha sju tegn") + val saksnummer: String, + @field:NotBlank(message = "Enhet kan ikke være blank") + @field:Size(min = 4, max = 4, message = "Enhet må være 4 tegn") + val behandlerenhet: String, + @field:Size(min = 2, message = "Sak må ha minst to roller involvert") + val roller: Set<@Valid CreateRolleDto>, + @Schema(required = true) + var stønadstype: Stønadstype?, + @Schema(required = true) + var engangsbeløpstype: Engangsbeløptype?, + @Schema(required = true) + val søknadsid: Long, + val søknadsreferanseid: Long? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt index 3c92971dd..ba7016eb8 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt @@ -18,11 +18,7 @@ data class ResultatPeriode( @Schema(description = "Beregnet resultat periode") var periode: Periode = Periode(), @Schema(description = "Beregnet resultat innhold") var resultat: ResultatBeregning = ResultatBeregning(), @Schema(description = "Beregnet grunnlag innhold") var grunnlagReferanseListe: List = emptyList(), -<<<<<<< HEAD - @Schema(description = "Sivilstand") var sivilstandType: Sivilstandskode? = null, -======= @Schema(description = "Sivilstand") var sivilstand: Sivilstandskode? = null, ->>>>>>> main ) @Schema(description = "Periode (fra-til dato") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig new file mode 100644 index 000000000..3c92971dd --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig @@ -0,0 +1,39 @@ +package no.nav.bidrag.behandling.dto.behandling + +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.domene.enums.person.Sivilstandskode +import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag +import java.math.BigDecimal +import java.time.LocalDate + +@Schema(description = "Beregnet forskudd") +data class ForskuddDto( + @Schema(description = "Periodisert liste over resultat av forskuddsberegning") var beregnetForskuddPeriodeListe: List = + emptyList(), + @Schema(description = "Grunnlagsliste") val grunnlagListe: List, +) + +@Schema(description = "Resultatet av en beregning for en gitt periode") +data class ResultatPeriode( + @Schema(description = "Beregnet resultat periode") var periode: Periode = Periode(), + @Schema(description = "Beregnet resultat innhold") var resultat: ResultatBeregning = ResultatBeregning(), + @Schema(description = "Beregnet grunnlag innhold") var grunnlagReferanseListe: List = emptyList(), +<<<<<<< HEAD + @Schema(description = "Sivilstand") var sivilstandType: Sivilstandskode? = null, +======= + @Schema(description = "Sivilstand") var sivilstand: Sivilstandskode? = null, +>>>>>>> main +) + +@Schema(description = "Periode (fra-til dato") +data class Periode( + @Schema(description = "Fra-og-med-dato") var datoFom: LocalDate? = null, + @Schema(description = "Til-dato") var datoTil: LocalDate? = null, +) + +@Schema(description = "Resultatet av en beregning") +data class ResultatBeregning( + @Schema(description = "Resultat beløp") var belop: BigDecimal = BigDecimal.ZERO, + @Schema(description = "Resultat kode") var kode: String = "", + @Schema(description = "Resultat regel") var regel: String = "", +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt index c570dc68f..a23ac77d3 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt @@ -15,11 +15,7 @@ data class HusstandsBarnPeriodeDto( @JsonFormat(pattern = "yyyy-MM-dd") val datoTom: LocalDate?, @Schema(required = true) -<<<<<<< HEAD val bostatus: Bostatuskode, -======= - val bostatus: Bostatuskode?, ->>>>>>> main @Schema(required = true) val kilde: Kilde, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig new file mode 100644 index 000000000..c570dc68f --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig @@ -0,0 +1,25 @@ +package no.nav.bidrag.behandling.dto.husstandsbarn + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Kilde +import no.nav.bidrag.domene.enums.person.Bostatuskode +import java.time.LocalDate + +data class HusstandsBarnPeriodeDto( + val id: Long?, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoFom: LocalDate?, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoTom: LocalDate?, + @Schema(required = true) +<<<<<<< HEAD + val bostatus: Bostatuskode, +======= + val bostatus: Bostatuskode?, +>>>>>>> main + @Schema(required = true) + val kilde: Kilde, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt index 4e3486c2e..587f74b2f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/inntekt/UtvidetBarnetrygdDto.kt @@ -8,9 +8,9 @@ import java.time.LocalDate data class UtvidetBarnetrygdDto( val id: Long? = null, @Schema(required = true) - val deltBoSted: Boolean, + val deltBosted: Boolean, @Schema(required = true) - val belop: BigDecimal, + val beløp: BigDecimal, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") val datoFom: LocalDate?, 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 13e37a2d6..fab5966e4 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,11 @@ package no.nav.bidrag.behandling.service import mu.KotlinLogging import no.nav.bidrag.behandling.behandlingNotFoundException -<<<<<<< HEAD import no.nav.bidrag.behandling.consumer.BidragGrunnlagConsumer -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.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.Sivilstand ->>>>>>> main import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.database.repository.RolleRepository import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto @@ -24,16 +14,13 @@ 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.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 -<<<<<<< HEAD -======= import no.nav.bidrag.behandling.transformers.toUtvidetbarnetrygdDomain ->>>>>>> main import no.nav.bidrag.domene.enums.rolle.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -114,21 +101,12 @@ class BehandlingService( @Transactional fun oppdaterInntekter( -<<<<<<< HEAD behandlingsid: Long, - inntekter: MutableSet, - barnetillegg: MutableSet, - utvidetbarnetrygd: MutableSet, - inntektsbegrunnelseMedIVedtakOgNotat: String?, - inntektsbegrunnelseKunINotat: String?, -======= - behandlingId: Long, nyeInntekter: Set, nyeBarnetillegg: Set, - nyUtvidetbarnetrygd: Set, - inntektBegrunnelseMedIVedtakNotat: String?, - inntektBegrunnelseKunINotat: String?, ->>>>>>> main + nyUtvidetBarnetrygd: Set, + inntektsbegrunnelseMedIVedtakOgNotat: String?, + inntektsbegrunnelseKunINotat: String?, ) { var behandling = behandlingRepository.findBehandlingById(behandlingsid) @@ -141,7 +119,7 @@ class BehandlingService( val inntekter = nyeInntekter.toInntektDomain(behandling) val barnetillegg = nyeBarnetillegg.toBarnetilleggDomain(behandling) - val nyUtvidetbarnetrygd = nyUtvidetbarnetrygd.toUtvidetbarnetrygdDomain(behandling) + val nyUtvidetbarnetrygd = nyUtvidetBarnetrygd.toUtvidetbarnetrygdDomain(behandling) if (behandling.inntekter != inntekter) { log.info("Oppdaterer inntekter for behandlingsid $behandlingsid") @@ -157,22 +135,15 @@ class BehandlingService( inntektOppdatert = true } -<<<<<<< HEAD - if (behandling.utvidetBarnetrygd != utvidetbarnetrygd) { + if (behandling.utvidetBarnetrygd != nyUtvidetbarnetrygd) { log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingsid") behandling.utvidetBarnetrygd.clear() - behandling.utvidetBarnetrygd.addAll(utvidetbarnetrygd) -======= - if (behandling.utvidetbarnetrygd != nyUtvidetbarnetrygd) { - log.info("Oppdaterer utvidet barnetrygd for behandlingsid $behandlingId") - behandling.utvidetbarnetrygd.clear() - behandling.utvidetbarnetrygd.addAll(nyUtvidetbarnetrygd) + behandling.utvidetBarnetrygd.addAll(nyUtvidetbarnetrygd) inntektOppdatert = true } if (inntektOppdatert == true) { behandlingRepository.save(behandling) ->>>>>>> main } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index 7c0dcb63d..a559002b7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -29,33 +29,16 @@ fun Set.toSivilstandDto() = this.map { SivilstandDto( it.id, -<<<<<<< HEAD it.datoFom, it.datoTom, - it.sivilstandstype.tilSivilstandskodeForBeregning(), -======= - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), - it.sivilstand, ->>>>>>> main + it.sivilstand.tilSivilstandskodeForBeregning(), it.kilde, ) }.toSet() fun Set.toSivilstandDomain(behandling: Behandling) = this.map { -<<<<<<< HEAD Sivilstand(behandling, it.datoFom, it.datoTom, it.sivilstand.name, it.kilde, it.id) -======= - Sivilstand( - behandling, - it.datoFom?.toDate(), - it.datoTom?.toDate(), - it.sivilstand, - it.kilde, - it.id, - ) ->>>>>>> main }.toMutableSet() fun Set.toBarnetilleggDto() = @@ -73,8 +56,8 @@ fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) this.map { UtvidetBarnetrygd( behandling, - it.deltBoSted, - it.belop, + it.deltBosted, + it.beløp, it.datoFom, it.datoTom, ) @@ -107,13 +90,8 @@ fun Set.toHusstandsBarnPeriodeDto() = this.map { HusstandsBarnPeriodeDto( it.id, -<<<<<<< HEAD it.datoFom, it.datoTom, -======= - it.datoFom?.toLocalDate(), - it.datoTom?.toLocalDate(), ->>>>>>> main it.bostatus, it.kilde, ) @@ -123,13 +101,8 @@ fun Set.toDomain(husstandsBarn: Husstandsbarn) = this.map { Husstandsbarnperiode( husstandsBarn, -<<<<<<< HEAD it.datoFom, it.datoTom, -======= - it.datoFom?.toDate(), - it.datoTom?.toDate(), ->>>>>>> main it.bostatus, it.kilde, ) @@ -226,24 +199,10 @@ fun Behandling.tilForsendelseRolleDto() = fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = Rolle( behandling, -<<<<<<< HEAD rolletype = this.rolletype, this.ident, this.fødselsdato, this.opprettetdato, -======= - rolleType = - when (this.rolleType) { - CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER - CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG - CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER - CreateRolleRolleType.BARN -> Rolletype.BARN - CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT - }, - this.ident, - this.fodtDato, - this.opprettetDato, ->>>>>>> main navn = this.navn, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt index 4b494cce2..e5b156414 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/Forskuddsmapping.kt @@ -45,7 +45,7 @@ fun Behandling.tilGrunnlagSivilstand(bm: Grunnlag): Set { innhold = POJONode( SivilstandPeriode( - sivilstand = it.sivilstandstype.tilSivilstandskodeForBeregning(), + sivilstand = it.sivilstand.tilSivilstandskodeForBeregning(), periode = ÅrMånedsperiode(it.datoFom!!, it.datoTom), ), ), diff --git a/src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql deleted file mode 100644 index 31c513d4a..000000000 --- a/src/main/resources/db/migration/V1.0.35__alter_table_behandling.sql +++ /dev/null @@ -1,42 +0,0 @@ --- Table: BEHANDLING - -/* - ALTER TABLE BEHANDLING DROP COLUMN GRUNNLAG_SIST_INNHENTET; - ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSTYPE TO SOKNAD_TYPE; - ALTER TABLE BEHANDLINGRENAME COLUMN MOTTATTDATO TO MOTTATT_DATO; - ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSID TO SOKNAD_ID; - ALTER TABLE BEHANDLING RENAME COLUMN STONADSTYPE TO STONAD_TYPE; - ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOPTYPE TO ENGANGSBELOP_TYPE; - ALTER TABLE BEHANDLING RENAME COLUMN VEDTAKSID TO VEDTAK_ID; - ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSDATO TO VIRKNINGS_DATO; - ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT TO BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_KUN_I_NOTAT; - ALTER TABLE BEHANDLINGRENAME COLUMN GRUNNLAGSPAKKEID TO GRUNNLAGSPAKKE_ID; - - DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.35'; - */ - -ALTER TABLE BEHANDLING ADD COLUMN GRUNNLAG_SIST_INNHENTET TIMESTAMP WITHOUT TIME ZONE; -ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_TYPE TO SOKNADSTYPE; -ALTER TABLE BEHANDLING RENAME COLUMN MOTTAT_DATO TO MOTTATTDATO; -ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_ID TO SOKNADSID; -ALTER TABLE BEHANDLING RENAME COLUMN STONAD_TYPE TO STONADSTYPE; -ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOP_TYPE TO ENGANGSBELOPTYPE; -ALTER TABLE BEHANDLING RENAME COLUMN VEDTAK_ID TO VEDTAKSID; -ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_DATO TO VIRKNINGSDATO; -ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT; -ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT TO VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT; -ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT; -ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLD_BEGRUNNELSE_KUN_I_NOTAT TO BOFORHOLDSBEGRUNNELSE_KUN_NOTAT; -ALTER TABLE BEHANDLING RENAME COLUMN INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT TO INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT; -ALTER TABLE BEHANDLING RENAME COLUMN INNTEKT_BEGRUNNELSE_KUN_I_NOTAT TO INNTEKTSBEGRUNNELSE_KUN_NOTAT; -ALTER TABLE BEHANDLING RENAME COLUMN GRUNNLAGSPAKKE_ID TO GRUNNLAGSPAKKEID; - - - - - diff --git a/src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql b/src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql deleted file mode 100644 index e89594f48..000000000 --- a/src/main/resources/db/migration/V1.0.36__alter_table_sivilstand.sql +++ /dev/null @@ -1,14 +0,0 @@ --- Table: SIVILSTAND - -/* - ALTER TABLE SIVILSTAND RENAME COLUMN SIVILSTANDSTYPE TO SIVILSTAND_TYPE; - - DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.36'; - */ - -ALTER TABLE SIVILSTAND RENAME COLUMN SIVILSTAND_TYPE TO SIVILSTANDSTYPE; - - - - - diff --git a/src/main/resources/db/migration/V1.0.44__alter_table_barn_i_husstand.sql b/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql similarity index 100% rename from src/main/resources/db/migration/V1.0.44__alter_table_barn_i_husstand.sql rename to src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql diff --git a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql b/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql deleted file mode 100644 index a7c59e060..000000000 --- a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand_periode.sql +++ /dev/null @@ -1,14 +0,0 @@ --- Table: BARN_I_HUSSTAND_PERIODE - -/* - ALTER TABLE BARN_I_HUSSTAND_PERIODE RENAME COLUMN BOSTATUS TO BO_STATUS; - - DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.37'; - */ - -ALTER TABLE BARN_I_HUSSTAND_PERIODE RENAME COLUMN BO_STATUS TO BOSTATUS; - - - - - diff --git a/src/main/resources/db/migration/V1.0.45__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql similarity index 100% rename from src/main/resources/db/migration/V1.0.45__alter_table_behandling.sql rename to src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index a967681c0..4a9b647c3 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -8,10 +8,7 @@ import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.service.BehandlingServiceTest -<<<<<<< HEAD import no.nav.bidrag.domene.enums.rolle.Rolletype -======= ->>>>>>> main import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Stønadstype import org.junit.jupiter.api.Assertions.assertEquals diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt index 23b272e4a..6496cbef8 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt @@ -7,10 +7,7 @@ import no.nav.bidrag.behandling.dto.boforhold.UpdateBoforholdRequest import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto import no.nav.bidrag.domene.enums.person.Bostatuskode -<<<<<<< HEAD import no.nav.bidrag.domene.enums.rolle.Rolletype -======= ->>>>>>> main import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.springframework.http.HttpEntity @@ -37,12 +34,8 @@ class BoforholdControllerTest : KontrollerTestRunner() { fødselsdato = LocalDate.now().minusMonths(529), ), ) -<<<<<<< HEAD + val testBehandlingMedNull = BehandlingControllerTest.createBehandlingRequestTest("1900000", "en12", roller) -======= - val testBehandlingMedNull = - BehandlingControllerTest.createBehandlingRequestTest("sak123", "en12", roller) ->>>>>>> main // 1. Create new behandling val behandling = @@ -57,7 +50,6 @@ class BoforholdControllerTest : KontrollerTestRunner() { // 2.1 Prepare husstandsBarn val perioder = -<<<<<<< HEAD setOf(HusstandsBarnPeriodeDto(null, null, null, Bostatuskode.IKKE_MED_FORELDER, Kilde.OFFENTLIG)) val husstandsBarn = setOf( @@ -70,19 +62,6 @@ class BoforholdControllerTest : KontrollerTestRunner() { fødselsdato = LocalDate.now().minusMonths(687), ), ) -======= - setOf( - HusstandsBarnPeriodeDto( - null, - null, - null, - Bostatuskode.MED_FORELDER, - Kilde.OFFENTLIG, - ), - ) - val husstandsBarn = - setOf(HusstandsbarnDto(behandling.body!!.id, true, perioder, "ident", null)) ->>>>>>> main // 2.2 val boforholdData = 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 577651683..27301b83a 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -9,19 +9,14 @@ import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType import no.nav.bidrag.behandling.database.datamodell.Inntekt import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.database.datamodell.Rolle -<<<<<<< HEAD import no.nav.bidrag.behandling.database.datamodell.Soknadstype -import no.nav.bidrag.behandling.database.datamodell.UtvidetBarnetrygd -======= -import no.nav.bidrag.behandling.database.datamodell.SoknadType ->>>>>>> main import no.nav.bidrag.behandling.database.repository.BehandlingRepository import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto 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.dto.inntekt.UtvidetBarnetrygdDto import no.nav.bidrag.behandling.transformers.toDomain import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toSivilstandDomain @@ -41,10 +36,7 @@ import org.springframework.transaction.annotation.Transactional import org.springframework.web.client.HttpClientErrorException import java.math.BigDecimal import java.time.LocalDate -<<<<<<< HEAD import java.time.YearMonth -======= ->>>>>>> main import java.util.Calendar class BehandlingServiceTest : TestContainerRunner() { @@ -368,27 +360,15 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf( -<<<<<<< HEAD - Inntekt( - Inntektsrapportering.AINNTEKT_BEREGNET_3MND, - BigDecimal.valueOf(1.111), - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), - "ident", - true, - true, - behandling = actualBehandling, -======= InntektDto( taMed = true, - inntektType = Inntektsrapportering.KAPITALINNTEKT.name, - belop = BigDecimal.valueOf(4000), + inntektstype = Inntektsrapportering.KAPITALINNTEKT, + beløp = BigDecimal.valueOf(4000), datoFom = LocalDate.now().minusMonths(4), datoTom = LocalDate.now().plusMonths(4), ident = "123", fraGrunnlag = true, - inntektPostListe = emptySet(), ->>>>>>> main + inntektsposter = emptySet(), ), ), mutableSetOf( @@ -400,20 +380,11 @@ class BehandlingServiceTest : TestContainerRunner() { ), ), mutableSetOf( -<<<<<<< HEAD - UtvidetBarnetrygd( - actualBehandling, - true, - BigDecimal.TEN, - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), -======= - UtvidetbarnetrygdDto( - deltBoSted = false, - belop = BigDecimal.TEN, + UtvidetBarnetrygdDto( + deltBosted = false, + beløp = BigDecimal.TEN, datoFom = LocalDate.now().minusMonths(3), datoTom = LocalDate.now().plusMonths(3), ->>>>>>> main ), ), "Med i Vedtaket", @@ -445,27 +416,15 @@ class BehandlingServiceTest : TestContainerRunner() { behandlingService.oppdaterInntekter( actualBehandling.id!!, mutableSetOf( -<<<<<<< HEAD - Inntekt( - Inntektsrapportering.DAGPENGER, - BigDecimal.valueOf(1.111), - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), - "ident", - true, - true, - behandling = actualBehandling, -======= InntektDto( taMed = true, - inntektType = Inntektsrapportering.KAPITALINNTEKT.name, - belop = BigDecimal.valueOf(4000), + inntektstype = Inntektsrapportering.KAPITALINNTEKT, + beløp = BigDecimal.valueOf(4000), datoFom = LocalDate.now().minusMonths(4), datoTom = LocalDate.now().plusMonths(4), ident = "123", fraGrunnlag = true, - inntektPostListe = emptySet(), ->>>>>>> main + inntektsposter = emptySet(), ), ), mutableSetOf( diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig new file mode 100644 index 000000000..577651683 --- /dev/null +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig @@ -0,0 +1,609 @@ +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.Behandling +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype +import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType +import no.nav.bidrag.behandling.database.datamodell.Inntekt +import no.nav.bidrag.behandling.database.datamodell.Kilde +import no.nav.bidrag.behandling.database.datamodell.Rolle +<<<<<<< HEAD +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +import no.nav.bidrag.behandling.database.datamodell.UtvidetBarnetrygd +======= +import no.nav.bidrag.behandling.database.datamodell.SoknadType +>>>>>>> main +import no.nav.bidrag.behandling.database.repository.BehandlingRepository +import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto +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 +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertNotNull +import org.junit.jupiter.api.Assertions.assertNull +import org.junit.jupiter.api.Nested +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.mock.mockito.MockBean +import org.springframework.transaction.annotation.Transactional +import org.springframework.web.client.HttpClientErrorException +import java.math.BigDecimal +import java.time.LocalDate +<<<<<<< HEAD +import java.time.YearMonth +======= +>>>>>>> main +import java.util.Calendar + +class BehandlingServiceTest : TestContainerRunner() { + @MockBean + lateinit var forsendelseService: ForsendelseService + + @Autowired + lateinit var behandlingService: BehandlingService + + @Autowired + lateinit var behandlingRepository: BehandlingRepository + + @PersistenceContext + lateinit var entityManager: EntityManager + + @Nested + open inner class HenteBehandling { + @Test + fun `skal kaste 404 exception hvis behandlingen ikke er der`() { + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(1234) + } + } + } + + @Nested + open inner class OppretteBehandling { + @Test + fun `skal opprette en forskuddsbehandling`() { + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + assertEquals(Behandlingstype.FORSKUDD, actualBehandling.behandlingType) + assertEquals(3, actualBehandling.roller.size) + + val actualBehandlingFetched = + behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(3, actualBehandlingFetched.roller.size) + assertNotNull(actualBehandlingFetched.roller.iterator().next().foedselsdato) + } + + @Test + fun `skal opprette en behandling med inntekter`() { + val behandling = prepareBehandling() + + behandling.inntekter = + mutableSetOf( + Inntekt( + Inntektsrapportering.AINNTEKT_BEREGNET_3MND, + BigDecimal.valueOf(555.55), + LocalDate.now().minusMonths(4), + null, + "ident", + true, + true, + behandling = behandling, + ), + ) + + val actualBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(actualBehandling.id) + + val actualBehandlingFetched = + behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(1, actualBehandlingFetched.inntekter.size) + assertEquals( + BigDecimal.valueOf(555.55), + actualBehandlingFetched.inntekter.iterator().next().belop, + ) + } + + @Test + fun `skal oppdatere boforhold data`() { + val behandling = prepareBehandling() + + val notat = "New Notat" + val medIVedtak = "med i vedtak" + + val createdBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + assertEquals(0, createdBehandling.husstandsbarn.size) + assertEquals(0, createdBehandling.sivilstand.size) + + val husstandsBarn = + setOf( + HusstandsbarnDto( + null, + true, + emptySet(), + ident = "Manuelt", + navn = "ident!", + fødselsdato = LocalDate.now().minusMonths(156), + ), + ) + val sivilstand = + setOf( + SivilstandDto( + null, + Calendar.getInstance().time.toLocalDate(), + Calendar.getInstance().time.toLocalDate(), + Sivilstandskode.BOR_ALENE_MED_BARN, + Kilde.OFFENTLIG, + ), + ) + + behandlingService.updateBoforhold( + createdBehandling.id!!, + husstandsBarn.toDomain(createdBehandling), + sivilstand.toSivilstandDomain(createdBehandling), + notat, + medIVedtak, + ) + + val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(1, updatedBehandling.husstandsbarn.size) + assertEquals(1, updatedBehandling.sivilstand.size) + assertEquals(notat, updatedBehandling.boforholdsbegrunnelseKunINotat) + assertEquals(medIVedtak, updatedBehandling.boforholdsbegrunnelseIVedtakOgNotat) + } + + @Test + fun `skal oppdatere virkningstidspunkt data`() { + val behandling = prepareBehandling() + + val notat = "New Notat" + val medIVedtak = "med i vedtak" + + val createdBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + + behandlingService.oppdatereVirkningstidspunkt( + createdBehandling.id!!, + ForskuddAarsakType.BF, + null, + notat, + medIVedtak, + ) + + val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) + assertEquals(notat, updatedBehandling.virkningstidspunktbegrunnelseKunINotat) + assertEquals( + medIVedtak, + updatedBehandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + ) + } + } + + @Nested + open inner class SletteBehandling { + @Test + fun `delete behandling`() { + val behandling = createBehandling() + behandlingService.deleteBehandlingById(behandling.id!!) + + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(behandling.id!!) + } + } + } + + @Nested + open inner class SynkronisereRoller { + @Test + fun `legge til flere roller`() { + val b = createBehandling() + + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto( + Rolletype.BARN, + "newident", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + ), + ), + ) + + assertEquals(4, behandlingService.hentBehandlingById(b.id!!).roller.size) + } + + @Test + fun `behandling må synce roller og slette behandling`() { + val b = createBehandling() + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto( + Rolletype.BARN, + "1111", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + true, + ), + ), + ) + + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.hentBehandlingById(b.id!!) + } + } + + @Test + fun `behandling må synce roller`() { + val b = createBehandling() + behandlingService.syncRoller( + b.id!!, + listOf( + CreateRolleDto( + Rolletype.BARN, + "1111", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + true, + ), + CreateRolleDto( + Rolletype.BARN, + "111123", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + ), + CreateRolleDto( + Rolletype.BARN, + "1111234", + null, + fødselsdato = LocalDate.now().minusMonths(144), + opprettetdato = LocalDate.now().minusMonths(4), + ), + ), + ) + + assertEquals( + 2, + behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolletype == Rolletype.BARN }.size, + ) + } + } + + @Nested + open inner class OppdatereBehandling { + @Test + fun `skal caste 404 exception hvis behandlingen ikke er der - oppdater`() { + Assertions.assertThrows(HttpClientErrorException::class.java) { + behandlingService.oppdaterBehandling(1234, "New Notat", "Med i Vedtak") + } + } + + @Test + fun `skal oppdatere en behandling`() { + val behandling = prepareBehandling() + + val notat = "New Notat" + val medIVedtak = "med i vedtak" + + val createdBehandling = behandlingService.createBehandling(behandling) + + assertNotNull(createdBehandling.id) + assertNull(createdBehandling.aarsak) + + val oppdatertBehandling = + behandlingService.oppdaterBehandling( + createdBehandling.id!!, + medIVedtak, + notat, + medIVedtak, + notat, + medIVedtak, + notat, + ) + + val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) + + assertEquals(3, hentBehandlingById.roller.size) + assertEquals(notat, oppdatertBehandling.virkningstidspunktbegrunnelseKunINotat) + assertEquals( + medIVedtak, + oppdatertBehandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + ) + } + + @Test + fun `skal opprette en behandling med grunnlagspakkeId`() { + val b = createBehandling() + + behandlingService.updateBehandling(b.id!!, 123L) + + assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeid) + } + } + + @Nested + open inner class OppdatereInntekter { + @Test + fun `skal legge til inntekter`() { + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + + assertEquals(0, actualBehandling.inntekter.size) + assertEquals(0, actualBehandling.barnetillegg.size) + assertEquals(0, actualBehandling.utvidetBarnetrygd.size) + assertNull(actualBehandling.inntektsbegrunnelseIVedtakOgNotat) + assertNull(actualBehandling.inntektsbegrunnelseKunINotat) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf( +<<<<<<< HEAD + Inntekt( + Inntektsrapportering.AINNTEKT_BEREGNET_3MND, + BigDecimal.valueOf(1.111), + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), + "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(), +>>>>>>> main + ), + ), + mutableSetOf( + BarnetilleggDto( + ident = "123", + barnetillegg = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), + ), + ), + mutableSetOf( +<<<<<<< HEAD + UtvidetBarnetrygd( + actualBehandling, + true, + BigDecimal.TEN, + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), +======= + UtvidetbarnetrygdDto( + deltBoSted = false, + belop = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), +>>>>>>> main + ), + ), + "Med i Vedtaket", + "Kun i Notat", + ) + + val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(1, expectedBehandling.inntekter.size) + assertEquals(1, expectedBehandling.barnetillegg.size) + assertEquals(1, expectedBehandling.utvidetBarnetrygd.size) + assertEquals("Med i Vedtaket", expectedBehandling.inntektsbegrunnelseIVedtakOgNotat) + assertEquals("Kun i Notat", expectedBehandling.inntektsbegrunnelseKunINotat) + } + + @Test + @Transactional + open fun `skal slette inntekter`() { + stubUtils.stubOpprettForsendelse() + + val actualBehandling = createBehandling() + + assertNotNull(actualBehandling.id) + + assertEquals(0, actualBehandling.inntekter.size) + assertEquals(0, actualBehandling.barnetillegg.size) + assertEquals(0, actualBehandling.utvidetBarnetrygd.size) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf( +<<<<<<< HEAD + Inntekt( + Inntektsrapportering.DAGPENGER, + BigDecimal.valueOf(1.111), + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), + "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(), +>>>>>>> main + ), + ), + mutableSetOf( + BarnetilleggDto( + ident = "123", + barnetillegg = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), + ), + ), + mutableSetOf(), + "null", + "null", + ) + + val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(1, expectedBehandling.inntekter.size) + assertEquals(1, expectedBehandling.barnetillegg.size) + assertNotNull(expectedBehandling.inntektsbegrunnelseIVedtakOgNotat) + assertNotNull(expectedBehandling.inntektsbegrunnelseKunINotat) + + behandlingService.oppdaterInntekter( + actualBehandling.id!!, + mutableSetOf(), + mutableSetOf( + BarnetilleggDto( + ident = "123", + barnetillegg = BigDecimal.TEN, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(3), + ), + ), + mutableSetOf(), + null, + null, + ) + + val expectedBehandlingWithoutInntekter = + behandlingService.hentBehandlingById(actualBehandling.id!!) + + assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) + assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) + assertNull(expectedBehandlingWithoutInntekter.inntektsbegrunnelseIVedtakOgNotat) + assertNull(expectedBehandlingWithoutInntekter.inntektsbegrunnelseKunINotat) + } + } + + @Test + fun `delete behandling rolle`() { + val behandling = createBehandling() + + assertEquals(3, behandling.roller.size) + behandling.roller.removeIf { it.rolletype == Rolletype.BARN } + + behandlingRepository.save(behandling) + + val updatedBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get() + assertEquals(2, updatedBehandling.roller.size) + + val realCount = + entityManager.createNativeQuery("select count(*) from rolle r where r.behandling_id = " + behandling.id!!) + .getSingleResult() + + val deletedCount = + entityManager.createNativeQuery( + "select count(*) from rolle r where r.behandling_id = " + behandling.id!! + " and r.deleted = true", + ).getSingleResult() + + assertEquals(3L, realCount) + assertEquals(1L, deletedCount) + } + + companion object { + fun prepareBehandling(): Behandling { + val behandling = + Behandling( + Behandlingstype.FORSKUDD, + Soknadstype.FASTSETTELSE, + YearMonth.now().atDay(1), + YearMonth.now().atEndOfMonth(), + LocalDate.now(), + "1900000", + 123213L, + null, + "1234", + SøktAvType.BIDRAGSMOTTAKER, + null, + null, + ) + val createRoller = prepareRoles(behandling) + val roller = + HashSet( + createRoller.map { + Rolle( + behandling, + it.rolletype, + it.ident, + it.foedselsdato, + it.opprettetDato, + ) + }, + ) + + behandling.roller.addAll(roller) + return behandling + } + + fun prepareRoles(behandling: Behandling): Set { + return setOf( + Rolle( + behandling, + Rolletype.BIDRAGSMOTTAKER, + "123344", + LocalDate.now().minusMonths(1025), + LocalDate.now().minusMonths(2), + ), + Rolle( + behandling, + Rolletype.BIDRAGSPLIKTIG, + "44332211", + LocalDate.now().minusMonths(1068), + LocalDate.now().minusMonths(2), + ), + Rolle( + behandling, + Rolletype.BARN, + "1111", + LocalDate.now().minusMonths(154), + LocalDate.now().minusMonths(2), + ), + ) + } + } + + fun createBehandling(): Behandling { + val behandling = prepareBehandling() + + return behandlingService.createBehandling(behandling) + } +} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt index df325931d..384fc8f93 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt @@ -4,11 +4,7 @@ import no.nav.bidrag.behandling.TestContainerRunner import no.nav.bidrag.behandling.database.datamodell.Behandling import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.OpplysningerType -<<<<<<< HEAD import no.nav.bidrag.behandling.database.datamodell.Soknadstype -======= -import no.nav.bidrag.behandling.database.datamodell.SoknadType ->>>>>>> main import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype import org.junit.jupiter.api.Assertions.assertFalse diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig new file mode 100644 index 000000000..df325931d --- /dev/null +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig @@ -0,0 +1,61 @@ +package no.nav.bidrag.behandling.service + +import no.nav.bidrag.behandling.TestContainerRunner +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype +import no.nav.bidrag.behandling.database.datamodell.OpplysningerType +<<<<<<< HEAD +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +======= +import no.nav.bidrag.behandling.database.datamodell.SoknadType +>>>>>>> main +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import java.time.LocalDate +import java.util.Date +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +class OpplysningerServiceTest : TestContainerRunner() { + @Autowired + lateinit var opplysningerService: OpplysningerService + + @Autowired + lateinit var behandlingService: BehandlingService + + @Test + fun `hente opplysninger`() { + val res = opplysningerService.hentSistAktiv(1, OpplysningerType.BOFORHOLD) + assertFalse(res.isPresent) + } + + @Test + fun `skal være bare en rad med aktive opplysninger`() { + val b = + behandlingService.createBehandling( + Behandling( + Behandlingstype.FORSKUDD, + Soknadstype.FASTSETTELSE, + datoFom = LocalDate.now().minusMonths(3), + datoTom = LocalDate.now().plusMonths(2), + mottattdato = LocalDate.now(), + "123", + 123L, + null, + "ENH1", + SøktAvType.VERGE, + engangsbeloptype = Engangsbeløptype.ETTERGIVELSE, + stonadstype = null, + ), + ) + val opp4 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) + + val option = opplysningerService.hentSistAktiv(b.id!!, OpplysningerType.BOFORHOLD) + + assertTrue(option.isPresent) + assertEquals(opp4.id, option.get().id) + } +} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt index f746f8dce..41e4887fa 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt @@ -9,10 +9,6 @@ import no.nav.bidrag.behandling.database.datamodell.Behandlingstype import no.nav.bidrag.behandling.database.datamodell.Rolle import no.nav.bidrag.behandling.database.datamodell.Soknadstype import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto -<<<<<<< HEAD -======= -import no.nav.bidrag.behandling.transformers.toDate ->>>>>>> main import no.nav.bidrag.domene.enums.rolle.Rolletype import no.nav.bidrag.domene.enums.rolle.SøktAvType import no.nav.bidrag.domene.ident.Personident diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig new file mode 100644 index 000000000..f746f8dce --- /dev/null +++ b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig @@ -0,0 +1,82 @@ +package no.nav.bidrag.behandling.utils + +import no.nav.bidrag.behandling.consumer.BehandlingInfoResponseDto +import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo +import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo +import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype +import no.nav.bidrag.behandling.database.datamodell.Rolle +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto +<<<<<<< HEAD +======= +import no.nav.bidrag.behandling.transformers.toDate +>>>>>>> main +import no.nav.bidrag.domene.enums.rolle.Rolletype +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.ident.Personident +import java.time.LocalDate +import java.time.YearMonth + +val SAKSNUMMER = "1233333" +val SOKNAD_ID = 12412421414L +val ROLLE_BM = ForsendelseRolleDto(Personident("313213213"), type = Rolletype.BIDRAGSMOTTAKER) +val ROLLE_BA_1 = ForsendelseRolleDto(Personident("1344124"), type = Rolletype.BARN) +val ROLLE_BP = ForsendelseRolleDto(Personident("213244124"), type = Rolletype.BIDRAGSPLIKTIG) + +fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = + ForsendelseResponsTo( + forsendelseId = forsendelseId, + saksnummer = SAKSNUMMER, + behandlingInfo = + BehandlingInfoResponseDto( + soknadId = SOKNAD_ID.toString(), + erFattet = false, + ), + forsendelseType = ForsendelseTypeTo.UTGÅENDE, + status = ForsendelseStatusTo.UNDER_OPPRETTELSE, + ) + +fun oppretteBehandling(): Behandling { + return Behandling( + Behandlingstype.FORSKUDD, + Soknadstype.FASTSETTELSE, + datoFom = YearMonth.now().atDay(1).minusMonths(16), + datoTom = YearMonth.now().plusMonths(10).atEndOfMonth(), + mottattdato = LocalDate.now(), + "1900000", + 123, + null, + "ENH", + SøktAvType.BIDRAGSMOTTAKER, + null, + null, + virkningsdato = LocalDate.now(), + ) +} + +fun oppretteBehandlingRoller(behandling: Behandling) = + mutableSetOf( + Rolle( + ident = ROLLE_BM.fødselsnummer?.verdi!!, + rolletype = Rolletype.BIDRAGSMOTTAKER, + behandling = behandling, + foedselsdato = LocalDate.now().minusMonths(29 * 13), + opprettetDato = null, + ), + Rolle( + ident = ROLLE_BP.fødselsnummer?.verdi!!, + rolletype = Rolletype.BIDRAGSPLIKTIG, + behandling = behandling, + foedselsdato = LocalDate.now().minusMonths(33 * 11), + opprettetDato = null, + ), + Rolle( + ident = ROLLE_BA_1.fødselsnummer?.verdi!!, + rolletype = Rolletype.BARN, + behandling = behandling, + foedselsdato = LocalDate.now().minusMonths(3 * 14), + opprettetDato = null, + ), + ) From c271d9e6bf034a5bd9c8a69a991c2613138e152b Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 11:31:52 +0100 Subject: [PATCH 19/33] Refaktorisere --- .../bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt | 2 +- ...usstandsBarnPeriodeDto.kt => HusstandsbarnperiodeDto.kt} | 2 +- .../no/nav/bidrag/behandling/transformers/DtoExtensions.kt | 6 +++--- .../bidrag/behandling/controller/BoforholdControllerTest.kt | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) rename src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/{HusstandsBarnPeriodeDto.kt => HusstandsbarnperiodeDto.kt} (95%) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt index dfdaf93d5..b3b1ac3b7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnDto.kt @@ -9,7 +9,7 @@ data class HusstandsbarnDto( @Schema(required = true) val medISak: Boolean, @Schema(required = true) - val perioder: Set, + val perioder: Set, val ident: String? = null, val navn: String? = null, @Schema(type = "string", format = "date", example = "2025-01-25") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnperiodeDto.kt similarity index 95% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt rename to src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnperiodeDto.kt index a23ac77d3..f4fef40b2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsbarnperiodeDto.kt @@ -6,7 +6,7 @@ import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.domene.enums.person.Bostatuskode import java.time.LocalDate -data class HusstandsBarnPeriodeDto( +data class HusstandsbarnperiodeDto( val id: Long?, @Schema(type = "string", format = "date", example = "2025-01-25") @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index a559002b7..eeaa4eb24 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -14,8 +14,8 @@ import no.nav.bidrag.behandling.database.datamodell.UtvidetBarnetrygd import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto import no.nav.bidrag.behandling.dto.behandling.SivilstandDto import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnperiodeDto import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto import no.nav.bidrag.behandling.dto.inntekt.InntektDto import no.nav.bidrag.behandling.dto.inntekt.UtvidetBarnetrygdDto @@ -88,7 +88,7 @@ fun Set.toBarnetilleggDomain(behandling: Behandling) = fun Set.toHusstandsBarnPeriodeDto() = this.map { - HusstandsBarnPeriodeDto( + HusstandsbarnperiodeDto( it.id, it.datoFom, it.datoTom, @@ -97,7 +97,7 @@ fun Set.toHusstandsBarnPeriodeDto() = ) }.toSet() -fun Set.toDomain(husstandsBarn: Husstandsbarn) = +fun Set.toDomain(husstandsBarn: Husstandsbarn) = this.map { Husstandsbarnperiode( husstandsBarn, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt index 6496cbef8..ac128ad2b 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt @@ -4,8 +4,8 @@ import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse import no.nav.bidrag.behandling.dto.boforhold.BoforholdResponse import no.nav.bidrag.behandling.dto.boforhold.UpdateBoforholdRequest -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsBarnPeriodeDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnperiodeDto import no.nav.bidrag.domene.enums.person.Bostatuskode import no.nav.bidrag.domene.enums.rolle.Rolletype import org.junit.jupiter.api.Assertions @@ -50,7 +50,7 @@ class BoforholdControllerTest : KontrollerTestRunner() { // 2.1 Prepare husstandsBarn val perioder = - setOf(HusstandsBarnPeriodeDto(null, null, null, Bostatuskode.IKKE_MED_FORELDER, Kilde.OFFENTLIG)) + setOf(HusstandsbarnperiodeDto(null, null, null, Bostatuskode.IKKE_MED_FORELDER, Kilde.OFFENTLIG)) val husstandsBarn = setOf( HusstandsbarnDto( From 55b10f191d1200e8173df385e85c8b144af23a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kjetil=20Sk=C3=A5r?= <43172034+s148719@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:19:54 +0100 Subject: [PATCH 20/33] Update and rename HusstandsBarnPeriode.kt to HusstandsBarnPeriodeVissvass.kt Fjerne duplikat kt-fil --- .../{HusstandsBarnPeriode.kt => HusstandsBarnPeriodeVissvass.kt} | 1 + 1 file changed, 1 insertion(+) rename src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/{HusstandsBarnPeriode.kt => HusstandsBarnPeriodeVissvass.kt} (99%) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt similarity index 99% rename from src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt rename to src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt index 84207b8c8..50966ad67 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriode.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt @@ -27,3 +27,4 @@ class Husstandsbarnperiode( @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, ) + From 090957c50aa92e4ed950d1cbf4b384e1153049b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kjetil=20Sk=C3=A5r?= <43172034+s148719@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:20:24 +0100 Subject: [PATCH 21/33] Rename HusstandsBarn.kt to HusstandsBarnVissvass.kt Fjerne duplikat kt-fil 2 --- .../datamodell/{HusstandsBarn.kt => HusstandsBarnVissvass.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/{HusstandsBarn.kt => HusstandsBarnVissvass.kt} (100%) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt similarity index 100% rename from src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarn.kt rename to src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt From 9d59dcd8a743c99caffaabd51f6ef415083376ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Kjetil=20Sk=C3=A5r?= <43172034+s148719@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:23:04 +0100 Subject: [PATCH 22/33] Vissvass --- .../database/datamodell/HusstandsBarnPeriodeVissvass.kt | 2 +- .../behandling/database/datamodell/HusstandsBarnVissvass.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt index 50966ad67..aa150346f 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt @@ -13,7 +13,7 @@ import no.nav.bidrag.domene.enums.person.Bostatuskode import java.time.LocalDate @Entity(name = "barn_i_husstand_periode") -class Husstandsbarnperiode( +class HusstandsbarnperiodeVissvass( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "barn_i_husstand_id", nullable = false) val husstandsbarn: Husstandsbarn, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt index fbaab29d8..eade02021 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt @@ -13,7 +13,7 @@ import jakarta.persistence.OneToMany import java.time.LocalDate @Entity(name = "barn_i_husstand") -class Husstandsbarn( +class HusstandsbarnVissvass( @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "behandling_id", nullable = false) val behandling: Behandling, From 49b76e7f44841ec342c3fa1aef129266f5ca377f Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 12:28:54 +0100 Subject: [PATCH 23/33] Fjerne vissvass --- .../HusstandsBarnPeriodeVissvass.kt | 30 ------------------- .../datamodell/HusstandsBarnVissvass.kt | 30 ------------------- 2 files changed, 60 deletions(-) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt deleted file mode 100644 index aa150346f..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnPeriodeVissvass.kt +++ /dev/null @@ -1,30 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import jakarta.persistence.Entity -import jakarta.persistence.EnumType -import jakarta.persistence.Enumerated -import jakarta.persistence.FetchType -import jakarta.persistence.GeneratedValue -import jakarta.persistence.GenerationType -import jakarta.persistence.Id -import jakarta.persistence.JoinColumn -import jakarta.persistence.ManyToOne -import no.nav.bidrag.domene.enums.person.Bostatuskode -import java.time.LocalDate - -@Entity(name = "barn_i_husstand_periode") -class HusstandsbarnperiodeVissvass( - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "barn_i_husstand_id", nullable = false) - val husstandsbarn: Husstandsbarn, - val datoFom: LocalDate?, - val datoTom: LocalDate?, - @Enumerated(EnumType.STRING) - val bostatus: Bostatuskode, - @Enumerated(EnumType.STRING) - val kilde: Kilde, - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - val id: Long? = null, -) - diff --git a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt b/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt deleted file mode 100644 index eade02021..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/database/datamodell/HusstandsBarnVissvass.kt +++ /dev/null @@ -1,30 +0,0 @@ -package no.nav.bidrag.behandling.database.datamodell - -import jakarta.persistence.CascadeType -import jakarta.persistence.Column -import jakarta.persistence.Entity -import jakarta.persistence.FetchType -import jakarta.persistence.GeneratedValue -import jakarta.persistence.GenerationType -import jakarta.persistence.Id -import jakarta.persistence.JoinColumn -import jakarta.persistence.ManyToOne -import jakarta.persistence.OneToMany -import java.time.LocalDate - -@Entity(name = "barn_i_husstand") -class HusstandsbarnVissvass( - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "behandling_id", nullable = false) - val behandling: Behandling, - @Column(name = "med_i_saken") - val medISaken: Boolean, - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - val id: Long? = null, - val ident: String? = null, - val navn: String? = null, - val foedselsdato: LocalDate, - @OneToMany(fetch = FetchType.EAGER, mappedBy = "husstandsbarn", cascade = [CascadeType.ALL], orphanRemoval = true) - var perioder: MutableSet = mutableSetOf(), -) From a79f6ace11458458b8acfa4c4ee5524445c09f1c Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 13:25:32 +0100 Subject: [PATCH 24/33] Korrigere db-migreringsskript++ --- .../behandling/controller/BehandlingController.kt | 2 +- .../behandling/database/datamodell/Behandling.kt | 2 +- .../bidrag/behandling/service/BehandlingService.kt | 2 +- .../V1.0.37__alter_table_barn_i_husstand.sql | 2 +- .../db/migration/V1.0.44__alter_table_behandling.sql | 11 ++++++----- .../bidrag/behandling/hendelse/VedtakHendelseTest.kt | 2 +- .../behandling/service/BehandlingServiceTest.kt | 6 +++--- 7 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt index 87caa192a..ab99be48b 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt @@ -172,7 +172,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { behandling: Behandling, ) = BehandlingDto( behandlingId, - behandling.behandlingType, + behandling.behandlingstype, behandling.soknadstype, behandling.vedtaksid != null, behandling.datoFom, 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 3cbb412e2..f8f4455b2 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 @@ -29,7 +29,7 @@ import java.time.LocalDateTime @Where(clause = "deleted=false") class Behandling( @Enumerated(EnumType.STRING) - val behandlingType: Behandlingstype, + val behandlingstype: Behandlingstype, // TODO Endre til Vedtakstype @Enumerated(EnumType.STRING) val soknadstype: Soknadstype, 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 fab5966e4..dd5da8975 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -53,7 +53,7 @@ class BehandlingService( behandlingId = behandling.id, soknadId = behandling.soknadsid, soknadFra = behandling.soknadFra, - behandlingType = behandling.behandlingType.name, + behandlingType = behandling.behandlingstype.name, stonadType = behandling.stonadstype, engangsBelopType = behandling.engangsbeloptype, vedtakType = behandling.soknadstype.tilVedtakType(), diff --git a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql b/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql index 0516fdea3..b3b2fe46c 100644 --- a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql +++ b/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql @@ -3,7 +3,7 @@ /* ALTER TABLE BARN_I_HUSSTAND RENAME COLUMN FOEDSELSDATO TO FOEDSELS_DATO; - DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.44'; + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.37'; */ ALTER TABLE BARN_I_HUSSTAND RENAME COLUMN FOEDSELS_DATO TO FOEDSELSDATO; diff --git a/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql index 6e43b068f..abdddaf5f 100644 --- a/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql +++ b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql @@ -3,7 +3,7 @@ /* ALTER TABLE BEHANDLING DROP COLUMN GRUNNLAG_SIST_INNHENTET; ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSTYPE TO SOKNAD_TYPE; - ALTER TABLE BEHANDLINGRENAME COLUMN MOTTATTDATO TO MOTTATT_DATO; + ALTER TABLE BEHANDLING RENAME COLUMN MOTTATTDATO TO MOTTATT_DATO; ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSID TO SOKNAD_ID; ALTER TABLE BEHANDLING RENAME COLUMN STONADSTYPE TO STONAD_TYPE; ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOPTYPE TO ENGANGSBELOP_TYPE; @@ -12,15 +12,16 @@ ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_VEDTAK_OG_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; ALTER TABLE BEHANDLING RENAME COLUMN VIRKNINGSTIDSPUNKTBEGRUNNELSE_KUN_NOTAT TO VIRKNINGS_TIDSPUNKT_BEGRUNNELSE_KUN_I_NOTAT; ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_VEDTAK_OG_NOTAT TO BOFORHOLD_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN BOFORHOLDSBEGRUNNELSE_KUN_NOTAT TO BOFORHOLD_BEGRUNNELSE_KUN_I_NOTAT; ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_VEDTAK_OG_NOTAT TO INNTEKT_BEGRUNNELSE_MED_I_VEDTAK_NOTAT; - ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_KUN_I_NOTAT TO INNTEKT_BEGRUNNELSE_KUN_I_NOTAT; - ALTER TABLE BEHANDLINGRENAME COLUMN GRUNNLAGSPAKKEID TO GRUNNLAGSPAKKE_ID; + ALTER TABLE BEHANDLING RENAME COLUMN INNTEKTSBEGRUNNELSE_KUN_NOTAT TO INNTEKT_BEGRUNNELSE_KUN_I_NOTAT; + ALTER TABLE BEHANDLING RENAME COLUMN GRUNNLAGSPAKKEID TO GRUNNLAGSPAKKE_ID; - DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.45'; + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.44'; */ ALTER TABLE BEHANDLING ADD COLUMN GRUNNLAG_SIST_INNHENTET TIMESTAMP WITHOUT TIME ZONE; +ALTER TABLE BEHANDLING RENAME COLUMN BEHANDLING_TYPE TO BEHANDLINGSTYPE; ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_TYPE TO SOKNADSTYPE; ALTER TABLE BEHANDLING RENAME COLUMN MOTTAT_DATO TO MOTTATTDATO; ALTER TABLE BEHANDLING RENAME COLUMN SOKNAD_ID TO SOKNADSID; diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index b5487a5f8..77b15900c 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -114,7 +114,7 @@ class VedtakHendelseTest : CommonTestRunner() { saksnummer = SAKSNUMMER, soknadsid = 123123L, behandlerEnhet = "4806", - behandlingType = Behandlingstype.BIDRAG18AAR, + behandlingstype = Behandlingstype.BIDRAG18AAR, engangsbeloptype = null, mottattdato = LocalDate.now(), soknadFra = SøktAvType.BIDRAGSMOTTAKER, 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 27301b83a..d8840a750 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt @@ -69,13 +69,13 @@ class BehandlingServiceTest : TestContainerRunner() { val actualBehandling = createBehandling() assertNotNull(actualBehandling.id) - assertEquals(Behandlingstype.FORSKUDD, actualBehandling.behandlingType) + assertEquals(Behandlingstype.FORSKUDD, actualBehandling.behandlingstype) assertEquals(3, actualBehandling.roller.size) val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) - assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingstype) assertEquals(3, actualBehandlingFetched.roller.size) assertNotNull(actualBehandlingFetched.roller.iterator().next().foedselsdato) } @@ -105,7 +105,7 @@ class BehandlingServiceTest : TestContainerRunner() { val actualBehandlingFetched = behandlingService.hentBehandlingById(actualBehandling.id!!) - assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) + assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingstype) assertEquals(1, actualBehandlingFetched.inntekter.size) assertEquals( BigDecimal.valueOf(555.55), From ecaf2443472f0484ea97f85ad07cb0d151205b65 Mon Sep 17 00:00:00 2001 From: s148719 Date: Wed, 6 Dec 2023 14:05:40 +0100 Subject: [PATCH 25/33] Update V1.0.44__alter_table_behandling.sql --- .../resources/db/migration/V1.0.44__alter_table_behandling.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql index abdddaf5f..8972b948a 100644 --- a/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql +++ b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql @@ -3,7 +3,7 @@ /* ALTER TABLE BEHANDLING DROP COLUMN GRUNNLAG_SIST_INNHENTET; ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSTYPE TO SOKNAD_TYPE; - ALTER TABLE BEHANDLING RENAME COLUMN MOTTATTDATO TO MOTTATT_DATO; + ALTER TABLE BEHANDLING RENAME COLUMN MOTTATTDATO TO MOTTAT_DATO; ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSID TO SOKNAD_ID; ALTER TABLE BEHANDLING RENAME COLUMN STONADSTYPE TO STONAD_TYPE; ALTER TABLE BEHANDLING RENAME COLUMN ENGANGSBELOPTYPE TO ENGANGSBELOP_TYPE; From 37861870a6765cbf6fefd1362df9e04ab4a9c517 Mon Sep 17 00:00:00 2001 From: s148719 Date: Thu, 7 Dec 2023 09:59:28 +0100 Subject: [PATCH 26/33] Fikse reverseringskript --- .../db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql | 2 +- .../resources/db/migration/V1.0.40__alter_table_inntekt.sql | 2 +- .../resources/db/migration/V1.0.44__alter_table_behandling.sql | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql b/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql index e572deeb6..297d002f5 100644 --- a/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql +++ b/src/main/resources/db/migration/V1.0.38__alter_table_utvidet_barnetrygd.sql @@ -2,7 +2,7 @@ /* ALTER TABLE UTVIDET_BARNETRYGD RENAME TO UTVIDETBARNETRYGD; - ALTER TABLE UTVIDETBARNETRYGD RENAME COLUMN DELT_BOSTED TO DELT_BO_STED + ALTER TABLE UTVIDETBARNETRYGD RENAME COLUMN DELT_BOSTED TO DELT_BO_STED; DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.38'; */ diff --git a/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql b/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql index 016f08a8a..a5fbd29da 100644 --- a/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql +++ b/src/main/resources/db/migration/V1.0.40__alter_table_inntekt.sql @@ -1,7 +1,7 @@ -- Table: INNTEKT /* - ALTER TABLE INNTEKT RENAME COLUMN INNTEKTSTYPE TO INNTEKT_TYPE + ALTER TABLE INNTEKT RENAME COLUMN INNTEKTSTYPE TO INNTEKT_TYPE; DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.40'; */ diff --git a/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql index 8972b948a..fc0c5dcd1 100644 --- a/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql +++ b/src/main/resources/db/migration/V1.0.44__alter_table_behandling.sql @@ -2,6 +2,7 @@ /* ALTER TABLE BEHANDLING DROP COLUMN GRUNNLAG_SIST_INNHENTET; + ALTER TABLE BEHANDLING RENAME COLUMN BEHANDLINGSTYPE TO BEHANDLING_TYPE; ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSTYPE TO SOKNAD_TYPE; ALTER TABLE BEHANDLING RENAME COLUMN MOTTATTDATO TO MOTTAT_DATO; ALTER TABLE BEHANDLING RENAME COLUMN SOKNADSID TO SOKNAD_ID; From 13a89b2e24f08ee9598a1b9ada1bf7ad39937c16 Mon Sep 17 00:00:00 2001 From: s148719 Date: Thu, 7 Dec 2023 12:56:20 +0100 Subject: [PATCH 27/33] Fjerne mergefiler --- .gitignore | 1 + .../CreateBehandlingRequest.kt.orig | 50 -- .../dto/behandling/ForskuddDto.kt.orig | 39 -- .../HusstandsBarnPeriodeDto.kt.orig | 25 - .../service/BehandlingServiceTest.kt.orig | 609 ------------------ .../service/OpplysningerServiceTest.kt.orig | 61 -- .../bidrag/behandling/utils/Testdata.kt.orig | 82 --- 7 files changed, 1 insertion(+), 866 deletions(-) delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig delete mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig delete mode 100644 src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig delete mode 100644 src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig delete mode 100644 src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig diff --git a/.gitignore b/.gitignore index 59757ab74..5f3de5ccf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ target/ .mvn/wrapper/** mvnw mvnw.cmd +*.orig ### STS ### .apt_generated diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig deleted file mode 100644 index ec44b9fce..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/CreateBehandlingRequest.kt.orig +++ /dev/null @@ -1,50 +0,0 @@ -package no.nav.bidrag.behandling.dto.behandling - -import io.swagger.v3.oas.annotations.media.Schema -import jakarta.validation.Valid -import jakarta.validation.constraints.NotBlank -import jakarta.validation.constraints.Size -import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -<<<<<<< HEAD -import no.nav.bidrag.behandling.database.datamodell.Soknadstype -import no.nav.bidrag.domene.enums.rolle.SøktAvType -import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype -import no.nav.bidrag.domene.enums.vedtak.Stønadstype -import java.time.LocalDate -======= -import no.nav.bidrag.behandling.database.datamodell.SoknadType -import no.nav.bidrag.domene.enums.rolle.SøktAvType -import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype -import no.nav.bidrag.domene.enums.vedtak.Stønadstype -import java.util.Date ->>>>>>> main - -data class CreateBehandlingRequest( - @Schema(required = true) - val behandlingstype: Behandlingstype, - @Schema(required = true) - val søknadstype: Soknadstype, - @Schema(required = true) - val datoFom: LocalDate, - @Schema(required = true) - val datoTom: LocalDate, - @Schema(required = true) - val mottattdato: LocalDate, - @Schema(required = true) - val søknadFra: SøktAvType, - @field:NotBlank(message = "Saksnummer kan ikke være blank") - @field:Size(max = 7, min = 7, message = "Saksnummer skal ha sju tegn") - val saksnummer: String, - @field:NotBlank(message = "Enhet kan ikke være blank") - @field:Size(min = 4, max = 4, message = "Enhet må være 4 tegn") - val behandlerenhet: String, - @field:Size(min = 2, message = "Sak må ha minst to roller involvert") - val roller: Set<@Valid CreateRolleDto>, - @Schema(required = true) - var stønadstype: Stønadstype?, - @Schema(required = true) - var engangsbeløpstype: Engangsbeløptype?, - @Schema(required = true) - val søknadsid: Long, - val søknadsreferanseid: Long? = null, -) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig deleted file mode 100644 index 3c92971dd..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/ForskuddDto.kt.orig +++ /dev/null @@ -1,39 +0,0 @@ -package no.nav.bidrag.behandling.dto.behandling - -import io.swagger.v3.oas.annotations.media.Schema -import no.nav.bidrag.domene.enums.person.Sivilstandskode -import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag -import java.math.BigDecimal -import java.time.LocalDate - -@Schema(description = "Beregnet forskudd") -data class ForskuddDto( - @Schema(description = "Periodisert liste over resultat av forskuddsberegning") var beregnetForskuddPeriodeListe: List = - emptyList(), - @Schema(description = "Grunnlagsliste") val grunnlagListe: List, -) - -@Schema(description = "Resultatet av en beregning for en gitt periode") -data class ResultatPeriode( - @Schema(description = "Beregnet resultat periode") var periode: Periode = Periode(), - @Schema(description = "Beregnet resultat innhold") var resultat: ResultatBeregning = ResultatBeregning(), - @Schema(description = "Beregnet grunnlag innhold") var grunnlagReferanseListe: List = emptyList(), -<<<<<<< HEAD - @Schema(description = "Sivilstand") var sivilstandType: Sivilstandskode? = null, -======= - @Schema(description = "Sivilstand") var sivilstand: Sivilstandskode? = null, ->>>>>>> main -) - -@Schema(description = "Periode (fra-til dato") -data class Periode( - @Schema(description = "Fra-og-med-dato") var datoFom: LocalDate? = null, - @Schema(description = "Til-dato") var datoTil: LocalDate? = null, -) - -@Schema(description = "Resultatet av en beregning") -data class ResultatBeregning( - @Schema(description = "Resultat beløp") var belop: BigDecimal = BigDecimal.ZERO, - @Schema(description = "Resultat kode") var kode: String = "", - @Schema(description = "Resultat regel") var regel: String = "", -) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig b/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig deleted file mode 100644 index c570dc68f..000000000 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/husstandsbarn/HusstandsBarnPeriodeDto.kt.orig +++ /dev/null @@ -1,25 +0,0 @@ -package no.nav.bidrag.behandling.dto.husstandsbarn - -import com.fasterxml.jackson.annotation.JsonFormat -import io.swagger.v3.oas.annotations.media.Schema -import no.nav.bidrag.behandling.database.datamodell.Kilde -import no.nav.bidrag.domene.enums.person.Bostatuskode -import java.time.LocalDate - -data class HusstandsBarnPeriodeDto( - val id: Long?, - @Schema(type = "string", format = "date", example = "2025-01-25") - @JsonFormat(pattern = "yyyy-MM-dd") - val datoFom: LocalDate?, - @Schema(type = "string", format = "date", example = "2025-01-25") - @JsonFormat(pattern = "yyyy-MM-dd") - val datoTom: LocalDate?, - @Schema(required = true) -<<<<<<< HEAD - val bostatus: Bostatuskode, -======= - val bostatus: Bostatuskode?, ->>>>>>> main - @Schema(required = true) - val kilde: Kilde, -) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig b/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig deleted file mode 100644 index 577651683..000000000 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/BehandlingServiceTest.kt.orig +++ /dev/null @@ -1,609 +0,0 @@ -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.Behandling -import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType -import no.nav.bidrag.behandling.database.datamodell.Inntekt -import no.nav.bidrag.behandling.database.datamodell.Kilde -import no.nav.bidrag.behandling.database.datamodell.Rolle -<<<<<<< HEAD -import no.nav.bidrag.behandling.database.datamodell.Soknadstype -import no.nav.bidrag.behandling.database.datamodell.UtvidetBarnetrygd -======= -import no.nav.bidrag.behandling.database.datamodell.SoknadType ->>>>>>> main -import no.nav.bidrag.behandling.database.repository.BehandlingRepository -import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto -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 -import org.junit.jupiter.api.Assertions -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertNotNull -import org.junit.jupiter.api.Assertions.assertNull -import org.junit.jupiter.api.Nested -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.test.mock.mockito.MockBean -import org.springframework.transaction.annotation.Transactional -import org.springframework.web.client.HttpClientErrorException -import java.math.BigDecimal -import java.time.LocalDate -<<<<<<< HEAD -import java.time.YearMonth -======= ->>>>>>> main -import java.util.Calendar - -class BehandlingServiceTest : TestContainerRunner() { - @MockBean - lateinit var forsendelseService: ForsendelseService - - @Autowired - lateinit var behandlingService: BehandlingService - - @Autowired - lateinit var behandlingRepository: BehandlingRepository - - @PersistenceContext - lateinit var entityManager: EntityManager - - @Nested - open inner class HenteBehandling { - @Test - fun `skal kaste 404 exception hvis behandlingen ikke er der`() { - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(1234) - } - } - } - - @Nested - open inner class OppretteBehandling { - @Test - fun `skal opprette en forskuddsbehandling`() { - val actualBehandling = createBehandling() - - assertNotNull(actualBehandling.id) - assertEquals(Behandlingstype.FORSKUDD, actualBehandling.behandlingType) - assertEquals(3, actualBehandling.roller.size) - - val actualBehandlingFetched = - behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) - assertEquals(3, actualBehandlingFetched.roller.size) - assertNotNull(actualBehandlingFetched.roller.iterator().next().foedselsdato) - } - - @Test - fun `skal opprette en behandling med inntekter`() { - val behandling = prepareBehandling() - - behandling.inntekter = - mutableSetOf( - Inntekt( - Inntektsrapportering.AINNTEKT_BEREGNET_3MND, - BigDecimal.valueOf(555.55), - LocalDate.now().minusMonths(4), - null, - "ident", - true, - true, - behandling = behandling, - ), - ) - - val actualBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(actualBehandling.id) - - val actualBehandlingFetched = - behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(Behandlingstype.FORSKUDD, actualBehandlingFetched.behandlingType) - assertEquals(1, actualBehandlingFetched.inntekter.size) - assertEquals( - BigDecimal.valueOf(555.55), - actualBehandlingFetched.inntekter.iterator().next().belop, - ) - } - - @Test - fun `skal oppdatere boforhold data`() { - val behandling = prepareBehandling() - - val notat = "New Notat" - val medIVedtak = "med i vedtak" - - val createdBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(createdBehandling.id) - assertNull(createdBehandling.aarsak) - assertEquals(0, createdBehandling.husstandsbarn.size) - assertEquals(0, createdBehandling.sivilstand.size) - - val husstandsBarn = - setOf( - HusstandsbarnDto( - null, - true, - emptySet(), - ident = "Manuelt", - navn = "ident!", - fødselsdato = LocalDate.now().minusMonths(156), - ), - ) - val sivilstand = - setOf( - SivilstandDto( - null, - Calendar.getInstance().time.toLocalDate(), - Calendar.getInstance().time.toLocalDate(), - Sivilstandskode.BOR_ALENE_MED_BARN, - Kilde.OFFENTLIG, - ), - ) - - behandlingService.updateBoforhold( - createdBehandling.id!!, - husstandsBarn.toDomain(createdBehandling), - sivilstand.toSivilstandDomain(createdBehandling), - notat, - medIVedtak, - ) - - val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(1, updatedBehandling.husstandsbarn.size) - assertEquals(1, updatedBehandling.sivilstand.size) - assertEquals(notat, updatedBehandling.boforholdsbegrunnelseKunINotat) - assertEquals(medIVedtak, updatedBehandling.boforholdsbegrunnelseIVedtakOgNotat) - } - - @Test - fun `skal oppdatere virkningstidspunkt data`() { - val behandling = prepareBehandling() - - val notat = "New Notat" - val medIVedtak = "med i vedtak" - - val createdBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(createdBehandling.id) - assertNull(createdBehandling.aarsak) - - behandlingService.oppdatereVirkningstidspunkt( - createdBehandling.id!!, - ForskuddAarsakType.BF, - null, - notat, - medIVedtak, - ) - - val updatedBehandling = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(ForskuddAarsakType.BF, updatedBehandling.aarsak) - assertEquals(notat, updatedBehandling.virkningstidspunktbegrunnelseKunINotat) - assertEquals( - medIVedtak, - updatedBehandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, - ) - } - } - - @Nested - open inner class SletteBehandling { - @Test - fun `delete behandling`() { - val behandling = createBehandling() - behandlingService.deleteBehandlingById(behandling.id!!) - - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(behandling.id!!) - } - } - } - - @Nested - open inner class SynkronisereRoller { - @Test - fun `legge til flere roller`() { - val b = createBehandling() - - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto( - Rolletype.BARN, - "newident", - null, - fødselsdato = LocalDate.now().minusMonths(144), - opprettetdato = LocalDate.now().minusMonths(4), - ), - ), - ) - - assertEquals(4, behandlingService.hentBehandlingById(b.id!!).roller.size) - } - - @Test - fun `behandling må synce roller og slette behandling`() { - val b = createBehandling() - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto( - Rolletype.BARN, - "1111", - null, - fødselsdato = LocalDate.now().minusMonths(144), - opprettetdato = LocalDate.now().minusMonths(4), - true, - ), - ), - ) - - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.hentBehandlingById(b.id!!) - } - } - - @Test - fun `behandling må synce roller`() { - val b = createBehandling() - behandlingService.syncRoller( - b.id!!, - listOf( - CreateRolleDto( - Rolletype.BARN, - "1111", - null, - fødselsdato = LocalDate.now().minusMonths(144), - opprettetdato = LocalDate.now().minusMonths(4), - true, - ), - CreateRolleDto( - Rolletype.BARN, - "111123", - null, - fødselsdato = LocalDate.now().minusMonths(144), - opprettetdato = LocalDate.now().minusMonths(4), - ), - CreateRolleDto( - Rolletype.BARN, - "1111234", - null, - fødselsdato = LocalDate.now().minusMonths(144), - opprettetdato = LocalDate.now().minusMonths(4), - ), - ), - ) - - assertEquals( - 2, - behandlingService.hentBehandlingById(b.id!!).roller.filter { r -> r.rolletype == Rolletype.BARN }.size, - ) - } - } - - @Nested - open inner class OppdatereBehandling { - @Test - fun `skal caste 404 exception hvis behandlingen ikke er der - oppdater`() { - Assertions.assertThrows(HttpClientErrorException::class.java) { - behandlingService.oppdaterBehandling(1234, "New Notat", "Med i Vedtak") - } - } - - @Test - fun `skal oppdatere en behandling`() { - val behandling = prepareBehandling() - - val notat = "New Notat" - val medIVedtak = "med i vedtak" - - val createdBehandling = behandlingService.createBehandling(behandling) - - assertNotNull(createdBehandling.id) - assertNull(createdBehandling.aarsak) - - val oppdatertBehandling = - behandlingService.oppdaterBehandling( - createdBehandling.id!!, - medIVedtak, - notat, - medIVedtak, - notat, - medIVedtak, - notat, - ) - - val hentBehandlingById = behandlingService.hentBehandlingById(createdBehandling.id!!) - - assertEquals(3, hentBehandlingById.roller.size) - assertEquals(notat, oppdatertBehandling.virkningstidspunktbegrunnelseKunINotat) - assertEquals( - medIVedtak, - oppdatertBehandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, - ) - } - - @Test - fun `skal opprette en behandling med grunnlagspakkeId`() { - val b = createBehandling() - - behandlingService.updateBehandling(b.id!!, 123L) - - assertEquals(123L, behandlingService.hentBehandlingById(b.id!!).grunnlagspakkeid) - } - } - - @Nested - open inner class OppdatereInntekter { - @Test - fun `skal legge til inntekter`() { - val actualBehandling = createBehandling() - - assertNotNull(actualBehandling.id) - - assertEquals(0, actualBehandling.inntekter.size) - assertEquals(0, actualBehandling.barnetillegg.size) - assertEquals(0, actualBehandling.utvidetBarnetrygd.size) - assertNull(actualBehandling.inntektsbegrunnelseIVedtakOgNotat) - assertNull(actualBehandling.inntektsbegrunnelseKunINotat) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf( -<<<<<<< HEAD - Inntekt( - Inntektsrapportering.AINNTEKT_BEREGNET_3MND, - BigDecimal.valueOf(1.111), - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), - "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(), ->>>>>>> main - ), - ), - mutableSetOf( - BarnetilleggDto( - ident = "123", - barnetillegg = BigDecimal.TEN, - datoFom = LocalDate.now().minusMonths(3), - datoTom = LocalDate.now().plusMonths(3), - ), - ), - mutableSetOf( -<<<<<<< HEAD - UtvidetBarnetrygd( - actualBehandling, - true, - BigDecimal.TEN, - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), -======= - UtvidetbarnetrygdDto( - deltBoSted = false, - belop = BigDecimal.TEN, - datoFom = LocalDate.now().minusMonths(3), - datoTom = LocalDate.now().plusMonths(3), ->>>>>>> main - ), - ), - "Med i Vedtaket", - "Kun i Notat", - ) - - val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(1, expectedBehandling.inntekter.size) - assertEquals(1, expectedBehandling.barnetillegg.size) - assertEquals(1, expectedBehandling.utvidetBarnetrygd.size) - assertEquals("Med i Vedtaket", expectedBehandling.inntektsbegrunnelseIVedtakOgNotat) - assertEquals("Kun i Notat", expectedBehandling.inntektsbegrunnelseKunINotat) - } - - @Test - @Transactional - open fun `skal slette inntekter`() { - stubUtils.stubOpprettForsendelse() - - val actualBehandling = createBehandling() - - assertNotNull(actualBehandling.id) - - assertEquals(0, actualBehandling.inntekter.size) - assertEquals(0, actualBehandling.barnetillegg.size) - assertEquals(0, actualBehandling.utvidetBarnetrygd.size) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf( -<<<<<<< HEAD - Inntekt( - Inntektsrapportering.DAGPENGER, - BigDecimal.valueOf(1.111), - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), - "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(), ->>>>>>> main - ), - ), - mutableSetOf( - BarnetilleggDto( - ident = "123", - barnetillegg = BigDecimal.TEN, - datoFom = LocalDate.now().minusMonths(3), - datoTom = LocalDate.now().plusMonths(3), - ), - ), - mutableSetOf(), - "null", - "null", - ) - - val expectedBehandling = behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(1, expectedBehandling.inntekter.size) - assertEquals(1, expectedBehandling.barnetillegg.size) - assertNotNull(expectedBehandling.inntektsbegrunnelseIVedtakOgNotat) - assertNotNull(expectedBehandling.inntektsbegrunnelseKunINotat) - - behandlingService.oppdaterInntekter( - actualBehandling.id!!, - mutableSetOf(), - mutableSetOf( - BarnetilleggDto( - ident = "123", - barnetillegg = BigDecimal.TEN, - datoFom = LocalDate.now().minusMonths(3), - datoTom = LocalDate.now().plusMonths(3), - ), - ), - mutableSetOf(), - null, - null, - ) - - val expectedBehandlingWithoutInntekter = - behandlingService.hentBehandlingById(actualBehandling.id!!) - - assertEquals(0, expectedBehandlingWithoutInntekter.inntekter.size) - assertEquals(1, expectedBehandlingWithoutInntekter.barnetillegg.size) - assertNull(expectedBehandlingWithoutInntekter.inntektsbegrunnelseIVedtakOgNotat) - assertNull(expectedBehandlingWithoutInntekter.inntektsbegrunnelseKunINotat) - } - } - - @Test - fun `delete behandling rolle`() { - val behandling = createBehandling() - - assertEquals(3, behandling.roller.size) - behandling.roller.removeIf { it.rolletype == Rolletype.BARN } - - behandlingRepository.save(behandling) - - val updatedBehandling = behandlingRepository.findBehandlingById(behandling.id!!).get() - assertEquals(2, updatedBehandling.roller.size) - - val realCount = - entityManager.createNativeQuery("select count(*) from rolle r where r.behandling_id = " + behandling.id!!) - .getSingleResult() - - val deletedCount = - entityManager.createNativeQuery( - "select count(*) from rolle r where r.behandling_id = " + behandling.id!! + " and r.deleted = true", - ).getSingleResult() - - assertEquals(3L, realCount) - assertEquals(1L, deletedCount) - } - - companion object { - fun prepareBehandling(): Behandling { - val behandling = - Behandling( - Behandlingstype.FORSKUDD, - Soknadstype.FASTSETTELSE, - YearMonth.now().atDay(1), - YearMonth.now().atEndOfMonth(), - LocalDate.now(), - "1900000", - 123213L, - null, - "1234", - SøktAvType.BIDRAGSMOTTAKER, - null, - null, - ) - val createRoller = prepareRoles(behandling) - val roller = - HashSet( - createRoller.map { - Rolle( - behandling, - it.rolletype, - it.ident, - it.foedselsdato, - it.opprettetDato, - ) - }, - ) - - behandling.roller.addAll(roller) - return behandling - } - - fun prepareRoles(behandling: Behandling): Set { - return setOf( - Rolle( - behandling, - Rolletype.BIDRAGSMOTTAKER, - "123344", - LocalDate.now().minusMonths(1025), - LocalDate.now().minusMonths(2), - ), - Rolle( - behandling, - Rolletype.BIDRAGSPLIKTIG, - "44332211", - LocalDate.now().minusMonths(1068), - LocalDate.now().minusMonths(2), - ), - Rolle( - behandling, - Rolletype.BARN, - "1111", - LocalDate.now().minusMonths(154), - LocalDate.now().minusMonths(2), - ), - ) - } - } - - fun createBehandling(): Behandling { - val behandling = prepareBehandling() - - return behandlingService.createBehandling(behandling) - } -} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig b/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig deleted file mode 100644 index df325931d..000000000 --- a/src/test/kotlin/no/nav/bidrag/behandling/service/OpplysningerServiceTest.kt.orig +++ /dev/null @@ -1,61 +0,0 @@ -package no.nav.bidrag.behandling.service - -import no.nav.bidrag.behandling.TestContainerRunner -import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -import no.nav.bidrag.behandling.database.datamodell.OpplysningerType -<<<<<<< HEAD -import no.nav.bidrag.behandling.database.datamodell.Soknadstype -======= -import no.nav.bidrag.behandling.database.datamodell.SoknadType ->>>>>>> main -import no.nav.bidrag.domene.enums.rolle.SøktAvType -import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype -import org.junit.jupiter.api.Assertions.assertFalse -import org.junit.jupiter.api.Test -import org.springframework.beans.factory.annotation.Autowired -import java.time.LocalDate -import java.util.Date -import kotlin.test.assertEquals -import kotlin.test.assertTrue - -class OpplysningerServiceTest : TestContainerRunner() { - @Autowired - lateinit var opplysningerService: OpplysningerService - - @Autowired - lateinit var behandlingService: BehandlingService - - @Test - fun `hente opplysninger`() { - val res = opplysningerService.hentSistAktiv(1, OpplysningerType.BOFORHOLD) - assertFalse(res.isPresent) - } - - @Test - fun `skal være bare en rad med aktive opplysninger`() { - val b = - behandlingService.createBehandling( - Behandling( - Behandlingstype.FORSKUDD, - Soknadstype.FASTSETTELSE, - datoFom = LocalDate.now().minusMonths(3), - datoTom = LocalDate.now().plusMonths(2), - mottattdato = LocalDate.now(), - "123", - 123L, - null, - "ENH1", - SøktAvType.VERGE, - engangsbeloptype = Engangsbeløptype.ETTERGIVELSE, - stonadstype = null, - ), - ) - val opp4 = opplysningerService.opprett(b.id!!, OpplysningerType.BOFORHOLD, "data", Date(1)) - - val option = opplysningerService.hentSistAktiv(b.id!!, OpplysningerType.BOFORHOLD) - - assertTrue(option.isPresent) - assertEquals(opp4.id, option.get().id) - } -} diff --git a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig b/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig deleted file mode 100644 index f746f8dce..000000000 --- a/src/test/kotlin/no/nav/bidrag/behandling/utils/Testdata.kt.orig +++ /dev/null @@ -1,82 +0,0 @@ -package no.nav.bidrag.behandling.utils - -import no.nav.bidrag.behandling.consumer.BehandlingInfoResponseDto -import no.nav.bidrag.behandling.consumer.ForsendelseResponsTo -import no.nav.bidrag.behandling.consumer.ForsendelseStatusTo -import no.nav.bidrag.behandling.consumer.ForsendelseTypeTo -import no.nav.bidrag.behandling.database.datamodell.Behandling -import no.nav.bidrag.behandling.database.datamodell.Behandlingstype -import no.nav.bidrag.behandling.database.datamodell.Rolle -import no.nav.bidrag.behandling.database.datamodell.Soknadstype -import no.nav.bidrag.behandling.dto.forsendelse.ForsendelseRolleDto -<<<<<<< HEAD -======= -import no.nav.bidrag.behandling.transformers.toDate ->>>>>>> main -import no.nav.bidrag.domene.enums.rolle.Rolletype -import no.nav.bidrag.domene.enums.rolle.SøktAvType -import no.nav.bidrag.domene.ident.Personident -import java.time.LocalDate -import java.time.YearMonth - -val SAKSNUMMER = "1233333" -val SOKNAD_ID = 12412421414L -val ROLLE_BM = ForsendelseRolleDto(Personident("313213213"), type = Rolletype.BIDRAGSMOTTAKER) -val ROLLE_BA_1 = ForsendelseRolleDto(Personident("1344124"), type = Rolletype.BARN) -val ROLLE_BP = ForsendelseRolleDto(Personident("213244124"), type = Rolletype.BIDRAGSPLIKTIG) - -fun opprettForsendelseResponsUnderOpprettelse(forsendelseId: Long = 1) = - ForsendelseResponsTo( - forsendelseId = forsendelseId, - saksnummer = SAKSNUMMER, - behandlingInfo = - BehandlingInfoResponseDto( - soknadId = SOKNAD_ID.toString(), - erFattet = false, - ), - forsendelseType = ForsendelseTypeTo.UTGÅENDE, - status = ForsendelseStatusTo.UNDER_OPPRETTELSE, - ) - -fun oppretteBehandling(): Behandling { - return Behandling( - Behandlingstype.FORSKUDD, - Soknadstype.FASTSETTELSE, - datoFom = YearMonth.now().atDay(1).minusMonths(16), - datoTom = YearMonth.now().plusMonths(10).atEndOfMonth(), - mottattdato = LocalDate.now(), - "1900000", - 123, - null, - "ENH", - SøktAvType.BIDRAGSMOTTAKER, - null, - null, - virkningsdato = LocalDate.now(), - ) -} - -fun oppretteBehandlingRoller(behandling: Behandling) = - mutableSetOf( - Rolle( - ident = ROLLE_BM.fødselsnummer?.verdi!!, - rolletype = Rolletype.BIDRAGSMOTTAKER, - behandling = behandling, - foedselsdato = LocalDate.now().minusMonths(29 * 13), - opprettetDato = null, - ), - Rolle( - ident = ROLLE_BP.fødselsnummer?.verdi!!, - rolletype = Rolletype.BIDRAGSPLIKTIG, - behandling = behandling, - foedselsdato = LocalDate.now().minusMonths(33 * 11), - opprettetDato = null, - ), - Rolle( - ident = ROLLE_BA_1.fødselsnummer?.verdi!!, - rolletype = Rolletype.BARN, - behandling = behandling, - foedselsdato = LocalDate.now().minusMonths(3 * 14), - opprettetDato = null, - ), - ) From fd68e2ddafac3adda07b98096ff1530d0fdecbe7 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Dec 2023 11:20:25 +0100 Subject: [PATCH 28/33] API-versjonering --- .../DeprecatedBehandlingController.kt | 249 ++++++++++++++++++ .../DeprecatedBehandlingRestController.kt | 16 ++ .../DeprecatedBoforholdController.kt | 68 +++++ .../DeprecatedForsendelseController.kt | 29 ++ .../DeprecatedInntekterController.kt | 96 +++++++ .../DeprecatedOpplysningerController.kt | 74 ++++++ .../DeprecatedVirkningsTidspunktController.kt | 85 ++++++ .../DeprecatedVisningsnavnController.kt | 25 ++ .../BehandlingBeregnForskuddController.kt | 4 +- .../{ => v1}/BehandlingController.kt | 12 +- .../BehandlingRestControllerV1.kt} | 6 +- .../{ => v1}/BoforholdController.kt | 16 +- .../controller/{ => v1}/ExceptionHandler.kt | 8 +- .../{ => v1}/ForsendelseController.kt | 4 +- .../{ => v1}/InntekterController.kt | 10 +- .../{ => v1}/OpplysningerController.kt | 4 +- .../{ => v1}/VirkningstidspunktController.kt | 4 +- .../{ => v1}/VisningsnavnController.kt | 4 +- .../deprecated/dto/BehandlingDto.kt | 49 ++++ .../deprecated/dto/BoforholdResponse.kt | 11 + .../deprecated/dto/CreateBehandlingRequest.kt | 42 +++ .../deprecated/dto/CreateRolleDto.kt | 72 +++++ .../behandling/deprecated/dto/InntektDto.kt | 59 +++++ .../deprecated/dto/InntekterResponse.kt | 11 + .../behandling/deprecated/dto/RolleDto.kt | 20 ++ .../deprecated/dto/SyncRollerRequest.kt | 7 + .../dto}/UpdateBoforholdRequest.kt | 2 +- .../deprecated/dto/UpdateInntekterRequest.kt | 15 ++ .../dto/UpdateVirkningsTidspunktRequest.kt | 15 ++ .../deprecated/dto/UtvidetbarnetrygdDto.kt | 43 +++ .../dto/VirkningsTidspunktResponse.kt | 15 ++ .../behandling/deprecated/modell/Api.kt | 26 ++ .../dto/boforhold/BoforholdResponse.kt | 6 +- .../boforhold/OppdatereBoforholdRequest.kt | 14 + .../behandling/service/BehandlingService.kt | 4 +- .../behandling/transformers/DtoExtensions.kt | 4 +- .../controller/BoforholdControllerTest.kt | 8 +- .../controller/KontrollerTestRunner.kt | 2 +- 38 files changed, 1089 insertions(+), 50 deletions(-) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingRestController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedForsendelseController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedInntekterController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedOpplysningerController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVirkningsTidspunktController.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVisningsnavnController.kt rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/BehandlingBeregnForskuddController.kt (94%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/BehandlingController.kt (97%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{BehandlingRestController.kt => v1/BehandlingRestControllerV1.kt} (76%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/BoforholdController.kt (81%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/ExceptionHandler.kt (95%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/ForsendelseController.kt (93%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/InntekterController.kt (92%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/OpplysningerController.kt (97%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/VirkningstidspunktController.kt (97%) rename src/main/kotlin/no/nav/bidrag/behandling/controller/{ => v1}/VisningsnavnController.kt (93%) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BehandlingDto.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BoforholdResponse.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateBehandlingRequest.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateRolleDto.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntektDto.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntekterResponse.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/RolleDto.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/SyncRollerRequest.kt rename src/main/kotlin/no/nav/bidrag/behandling/{dto/boforhold => deprecated/dto}/UpdateBoforholdRequest.kt (90%) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateInntekterRequest.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateVirkningsTidspunktRequest.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UtvidetbarnetrygdDto.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/VirkningsTidspunktResponse.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/modell/Api.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/OppdatereBoforholdRequest.kt diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt new file mode 100644 index 000000000..ad7496d42 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt @@ -0,0 +1,249 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.responses.ApiResponses +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import jakarta.validation.Valid +import mu.KotlinLogging +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Soknadstype +import no.nav.bidrag.behandling.deprecated.dto.BehandlingDto +import no.nav.bidrag.behandling.deprecated.dto.CreateBehandlingRequest +import no.nav.bidrag.behandling.deprecated.dto.RolleDto +import no.nav.bidrag.behandling.deprecated.dto.RolleTypeDto +import no.nav.bidrag.behandling.deprecated.dto.SyncRollerRequest +import no.nav.bidrag.behandling.deprecated.dto.toCreateRolleDto +import no.nav.bidrag.behandling.deprecated.dto.toRolle +import no.nav.bidrag.behandling.deprecated.modell.SoknadType +import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse +import no.nav.bidrag.behandling.dto.behandling.CreateRolleDto +import no.nav.bidrag.behandling.dto.behandling.UpdateBehandlingRequest +import no.nav.bidrag.behandling.service.BehandlingService +import no.nav.bidrag.behandling.transformers.toDate +import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto +import no.nav.bidrag.behandling.transformers.toLocalDate +import no.nav.bidrag.behandling.transformers.toSivilstandDto +import no.nav.bidrag.domene.enums.rolle.Rolletype +import org.apache.commons.lang3.Validate +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody + +private val LOGGER = KotlinLogging.logger {} + +@Deprecated("Bruk endepunktene i BehandlingController /api/v1/behandling") +@DeprecatedBehandlingRestController +class DeprecatedBehandlingController(private val behandlingService: BehandlingService) { + @Suppress("unused") + @PostMapping("/behandling") + @Operation( + description = "Legge til en ny behandling", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200", description = "Lagret behandling"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun createBehandling( + @Valid + @RequestBody(required = true) + createBehandling: CreateBehandlingRequest, + ): CreateBehandlingResponse { + ingenBarnMedVerkenIdentEllerNavn(createBehandling.roller.toCreateRolleDto()) + + Validate.isTrue( + ingenBarnMedVerkenIdentEllerNavn(createBehandling.roller.toCreateRolleDto()) && + ingenVoksneUtenIdent( + createBehandling.roller.toCreateRolleDto(), + ), + ) + + val behandling = + Behandling( + createBehandling.behandlingType, + Soknadstype.valueOf(createBehandling.soknadType.name), + createBehandling.datoFom.toLocalDate(), + createBehandling.datoTom.toLocalDate(), + createBehandling.mottatDato.toLocalDate(), + createBehandling.saksnummer, + createBehandling.soknadId, + createBehandling.soknadRefId, + createBehandling.behandlerEnhet, + createBehandling.soknadFra, + createBehandling.stonadType, + createBehandling.engangsbelopType, + ) + val roller = + HashSet( + createBehandling.roller.map { + it.toRolle(behandling) + }, + ) + + behandling.roller.addAll(roller) + + val behandlingDo = behandlingService.createBehandling(behandling) + LOGGER.info { + "Opprettet behandling for behandlingType ${createBehandling.behandlingType} " + + "soknadType ${createBehandling.soknadType} " + + "og soknadFra ${createBehandling.soknadFra} " + + "med id ${behandlingDo.id} " + } + return CreateBehandlingResponse(behandlingDo.id!!) + } + + @Suppress("unused") + @PutMapping("/behandling/{behandlingId}") + @Operation( + description = "Oppdatere behandling", + security = [SecurityRequirement(name = "bearer-key")], + ) + fun updateBehandling( + @PathVariable behandlingId: Long, + @Valid @RequestBody(required = true) request: UpdateBehandlingRequest, + ) { + behandlingService.updateBehandling(behandlingId, request.grunnlagspakkeId) + } + + @Suppress("unused") + @PutMapping("/behandling/{behandlingId}/roller/sync") + @Operation( + description = "Sync fra behandling", + security = [SecurityRequirement(name = "bearer-key")], + ) + fun syncRoller( + @PathVariable behandlingId: Long, + @Valid @RequestBody(required = true) request: SyncRollerRequest, + ) = behandlingService.syncRoller(behandlingId, request.roller.toSet().toCreateRolleDto().toList()) + + @Suppress("unused") + @PutMapping("/behandling/{behandlingId}/vedtak/{vedtakId}") + @Operation( + description = "Oppdaterer vedtak id", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200", description = "Lagret behandling"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Oppdaterer behandling med ny vedtak id", + ), + ], + ) + fun oppdaterVedtakId( + @PathVariable behandlingId: Long, + @PathVariable vedtakId: Long, + ) { + behandlingService.oppdaterVedtakId(behandlingId, vedtakId) + } + + @Suppress("unused") + @GetMapping("/behandling") + @Operation( + description = "Hente en liste av alle behandlinger", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200", description = "Hentet behandlinger"), + ApiResponse(responseCode = "404", description = "Fant ikke behandlinger"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun hentBehandlinger(): List { + return behandlingService.hentBehandlinger().map { behandlingDto(it.id!!, it) } + } + + @Suppress("unused") + @GetMapping("/behandling/{behandlingId}") + @Operation( + description = "Hente en behandling", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200", description = "Hentet behandling"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun hentBehandling( + @PathVariable behandlingId: Long, + ): BehandlingDto { + return findBehandlingById(behandlingId) + } + + private fun findBehandlingById(behandlingId: Long): BehandlingDto { + val behandling = behandlingService.hentBehandlingById(behandlingId) + return behandlingDto(behandlingId, behandling) + } + + private fun behandlingDto( + behandlingId: Long, + behandling: Behandling, + ) = BehandlingDto( + behandlingId, + behandling.behandlingstype, + SoknadType.valueOf(behandling.soknadstype.name), + behandling.vedtaksid != null, + behandling.datoFom, + behandling.datoTom, + behandling.mottattdato, + behandling.soknadFra, + behandling.saksnummer, + behandling.soknadsid, + behandling.behandlerEnhet, + behandling.roller.map { + RolleDto( + it.id!!, + RolleTypeDto.valueOf(it.rolletype.name), + it.ident, + it.navn, + it.foedselsdato.toDate(), + it.opprettetDato?.toDate(), + ) + }.toSet(), + behandling.husstandsbarn.toHusstandsBarnDto(), + behandling.sivilstand.toSivilstandDto(), + behandling.virkningsdato, + behandling.soknadRefId, + behandling.grunnlagspakkeid, + behandling.aarsak, + behandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + behandling.virkningstidspunktbegrunnelseKunINotat, + behandling.boforholdsbegrunnelseIVedtakOgNotat, + behandling.boforholdsbegrunnelseKunINotat, + behandling.inntektsbegrunnelseIVedtakOgNotat, + behandling.inntektsbegrunnelseKunINotat, + ) + + private fun ingenBarnMedVerkenIdentEllerNavn(roller: Set): Boolean { + return roller.filter { r -> r.rolletype == Rolletype.BARN && r.ident.isNullOrBlank() } + .none { r -> r.navn.isNullOrBlank() } + } + + private fun ingenVoksneUtenIdent(roller: Set): Boolean { + return roller.filter { r -> r.rolletype != Rolletype.BARN && r.ident.isNullOrBlank() }.none() + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingRestController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingRestController.kt new file mode 100644 index 000000000..8c7122a08 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingRestController.kt @@ -0,0 +1,16 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import no.nav.security.token.support.core.api.Protected +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import java.lang.annotation.Inherited + +@Deprecated("Bruk BehandlingRestController v1 i stedet") +@MustBeDocumented +@Inherited +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS) +@RestController +@Protected +@RequestMapping("/api") +annotation class DeprecatedBehandlingRestController diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt new file mode 100644 index 000000000..890714e4a --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt @@ -0,0 +1,68 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import no.nav.bidrag.behandling.deprecated.dto.BoforholdResponse +import no.nav.bidrag.behandling.deprecated.dto.UpdateBoforholdRequest +import no.nav.bidrag.behandling.service.BehandlingService +import no.nav.bidrag.behandling.transformers.toDomain +import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto +import no.nav.bidrag.behandling.transformers.toSivilstandDomain +import no.nav.bidrag.behandling.transformers.toSivilstandDto +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody + +@Deprecated("Bruk endepunktene i BoforholdController /api/v1/boforhold") +@DeprecatedBehandlingRestController +class DeprecatedBoforholdController(private val behandlingService: BehandlingService) { + @Suppress("unused") + @PutMapping("/behandling/{behandlingId}/boforhold") + @Operation( + description = "Oppdatere boforhold data", + security = [SecurityRequirement(name = "bearer-key")], + ) + fun oppdatereBoforhold( + @PathVariable behandlingId: Long, + @RequestBody updateBoforholdRequest: UpdateBoforholdRequest, + ): BoforholdResponse { + val behandling = behandlingService.hentBehandlingById(behandlingId) + + behandlingService.updateBoforhold( + behandlingId, + updateBoforholdRequest.husstandsBarn.toDomain(behandling), + updateBoforholdRequest.sivilstand.toSivilstandDomain(behandling), + updateBoforholdRequest.boforholdBegrunnelseKunINotat, + updateBoforholdRequest.boforholdBegrunnelseMedIVedtakNotat, + ) + + val updatedBehandling = behandlingService.hentBehandlingById(behandlingId) + + return BoforholdResponse( + updatedBehandling.husstandsbarn.toHusstandsBarnDto(), + updatedBehandling.sivilstand.toSivilstandDto(), + updatedBehandling.boforholdsbegrunnelseIVedtakOgNotat, + updatedBehandling.boforholdsbegrunnelseKunINotat, + ) + } + + @Suppress("unused") + @GetMapping("/behandling/{behandlingId}/boforhold") + @Operation( + description = "Hente boforhold data", + security = [SecurityRequirement(name = "bearer-key")], + ) + fun hentBoforhold( + @PathVariable behandlingId: Long, + ): BoforholdResponse { + val behandling = behandlingService.hentBehandlingById(behandlingId) + + return BoforholdResponse( + behandling.husstandsbarn.toHusstandsBarnDto(), + behandling.sivilstand.toSivilstandDto(), + behandling.boforholdsbegrunnelseIVedtakOgNotat, + behandling.boforholdsbegrunnelseKunINotat, + ) + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedForsendelseController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedForsendelseController.kt new file mode 100644 index 000000000..b02df7d7b --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedForsendelseController.kt @@ -0,0 +1,29 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import jakarta.validation.Valid +import no.nav.bidrag.behandling.dto.forsendelse.InitalizeForsendelseRequest +import no.nav.bidrag.behandling.service.ForsendelseService +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody + +@Deprecated("Bruk v1") +@DeprecatedBehandlingRestController +class DeprecatedForsendelseController(private val forsendelseService: ForsendelseService) { + @Suppress("unused") + @PostMapping("/forsendelse/init") + @Operation( + description = + "Oppretter forsendelse for behandling eller vedtak. Skal bare benyttes hvis vedtakId eller behandlingId mangler for " + + "behandling (Søknad som behandles gjennom Bisys)", + security = [SecurityRequirement(name = "bearer-key")], + ) + fun pprettForsendelse( + @Valid + @RequestBody(required = true) + request: InitalizeForsendelseRequest, + ): List { + return forsendelseService.slettEllerOpprettForsendelse(request) + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedInntekterController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedInntekterController.kt new file mode 100644 index 000000000..4b54ed037 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedInntekterController.kt @@ -0,0 +1,96 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.responses.ApiResponses +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import no.nav.bidrag.behandling.deprecated.dto.InntekterResponse +import no.nav.bidrag.behandling.deprecated.dto.UpdateInntekterRequest +import no.nav.bidrag.behandling.deprecated.dto.toDepreactedInntektDto +import no.nav.bidrag.behandling.deprecated.dto.toInntektDto +import no.nav.bidrag.behandling.deprecated.dto.toUtvidetBarnetrygdDto +import no.nav.bidrag.behandling.deprecated.dto.toUtvidetbarnetrygdDto +import no.nav.bidrag.behandling.service.BehandlingService +import no.nav.bidrag.behandling.transformers.toBarnetilleggDto +import no.nav.bidrag.behandling.transformers.toInntektDto +import no.nav.bidrag.behandling.transformers.toUtvidetBarnetrygdDto +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody + +@Deprecated("Bruk v1") +@DeprecatedBehandlingRestController +class DeprecatedInntekterController(private val behandlingService: BehandlingService) { + @Suppress("unused") + @PutMapping("/behandling/{behandlingId}/inntekter") + @Operation( + description = "Oppdatere inntekter data", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun oppdaterInntekter( + @PathVariable behandlingId: Long, + @RequestBody request: UpdateInntekterRequest, + ): InntekterResponse { + behandlingService.oppdaterInntekter( + behandlingId, + request.inntekter.toInntektDto(), + request.barnetillegg, + request.utvidetbarnetrygd.toUtvidetBarnetrygdDto(), + request.inntektBegrunnelseMedIVedtakNotat, + request.inntektBegrunnelseKunINotat, + ) + + val newBehandling = behandlingService.hentBehandlingById(behandlingId) + + return InntekterResponse( + newBehandling.inntekter.toInntektDto().toDepreactedInntektDto(), + newBehandling.barnetillegg.toBarnetilleggDto(), + newBehandling.utvidetBarnetrygd.toUtvidetBarnetrygdDto().toUtvidetbarnetrygdDto(), + newBehandling.inntektsbegrunnelseIVedtakOgNotat, + newBehandling.inntektsbegrunnelseKunINotat, + ) + } + + @Suppress("unused") + @GetMapping("/behandling/{behandlingId}/inntekter") + @Operation( + description = "Hente inntekter data", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun hentInntekter( + @PathVariable behandlingId: Long, + ): InntekterResponse { + val behandling = behandlingService.hentBehandlingById(behandlingId) + + return InntekterResponse( + behandling.inntekter.toInntektDto().toDepreactedInntektDto(), + behandling.barnetillegg.toBarnetilleggDto(), + behandling.utvidetBarnetrygd.toUtvidetBarnetrygdDto().toUtvidetbarnetrygdDto(), + behandling.inntektsbegrunnelseIVedtakOgNotat, + behandling.inntektsbegrunnelseKunINotat, + ) + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedOpplysningerController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedOpplysningerController.kt new file mode 100644 index 000000000..79fd1c651 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedOpplysningerController.kt @@ -0,0 +1,74 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.responses.ApiResponses +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import no.nav.bidrag.behandling.behandlingNotFoundException +import no.nav.bidrag.behandling.database.datamodell.OpplysningerType +import no.nav.bidrag.behandling.dto.opplysninger.AddOpplysningerRequest +import no.nav.bidrag.behandling.dto.opplysninger.OpplysningerDto +import no.nav.bidrag.behandling.service.OpplysningerService +import no.nav.bidrag.behandling.transformers.toDate +import no.nav.bidrag.behandling.transformers.toDto +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestBody + +@Deprecated("Bruk v1") +@DeprecatedBehandlingRestController +class DeprecatedOpplysningerController(val opplysningerService: OpplysningerService) { + @Suppress("unused") + @PostMapping("/behandling/{behandlingId}/opplysninger") + @Operation( + description = "Legge til nye opplysninger til behandling", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200", description = "Lagret opplysninger"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun addOpplysningerData( + @PathVariable behandlingId: Long, + @RequestBody(required = true) addOpplysningerRequest: AddOpplysningerRequest, + ): OpplysningerDto { + val (_, _, opplysningerType, data, hentetDato) = addOpplysningerRequest + return opplysningerService.opprett(behandlingId, opplysningerType, data, hentetDato.toDate()) + .toDto() + } + + @Suppress("unused") + @GetMapping("/behandling/{behandlingId}/opplysninger/{opplysningerType}/aktiv") + @Operation( + description = "Hente aktive opplysninger til behandling", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun hentAktiv( + @PathVariable behandlingId: Long, + @PathVariable opplysningerType: OpplysningerType, + ): OpplysningerDto { + return opplysningerService.hentSistAktiv( + behandlingId, + opplysningerType, + ).orElseThrow { behandlingNotFoundException(behandlingId) }.toDto() + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVirkningsTidspunktController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVirkningsTidspunktController.kt new file mode 100644 index 000000000..604951233 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVirkningsTidspunktController.kt @@ -0,0 +1,85 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.responses.ApiResponse +import io.swagger.v3.oas.annotations.responses.ApiResponses +import io.swagger.v3.oas.annotations.security.SecurityRequirement +import no.nav.bidrag.behandling.deprecated.dto.UpdateVirkningsTidspunktRequest +import no.nav.bidrag.behandling.deprecated.dto.VirkningsTidspunktResponse +import no.nav.bidrag.behandling.service.BehandlingService +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody + +@Deprecated("Bruk v1") +@DeprecatedBehandlingRestController +class DeprecatedVirkningsTidspunktController(private val behandlingService: BehandlingService) { + @Suppress("unused") + @PutMapping("/behandling/{behandlingId}/virkningstidspunkt") + @Operation( + description = "Oppdatere virkningstidspunkt data", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun oppdaterVirkningsTidspunkt( + @PathVariable behandlingId: Long, + @RequestBody updateVirkningsTidspunktRequest: UpdateVirkningsTidspunktRequest, + ): VirkningsTidspunktResponse { + behandlingService.oppdatereVirkningstidspunkt( + behandlingId, + updateVirkningsTidspunktRequest.aarsak, + updateVirkningsTidspunktRequest.virkningsDato, + updateVirkningsTidspunktRequest.virkningsTidspunktBegrunnelseKunINotat, + updateVirkningsTidspunktRequest.virkningsTidspunktBegrunnelseMedIVedtakNotat, + ) + + val behandling = behandlingService.hentBehandlingById(behandlingId) + + return VirkningsTidspunktResponse( + behandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + behandling.inntektsbegrunnelseKunINotat, + behandling.aarsak, + behandling.virkningsdato, + ) + } + + @Suppress("unused") + @GetMapping("/behandling/{behandlingId}/virkningstidspunkt") + @Operation( + description = "Hente virkningstidspunkt data", + security = [SecurityRequirement(name = "bearer-key")], + ) + @ApiResponses( + value = [ + ApiResponse(responseCode = "200"), + ApiResponse(responseCode = "404", description = "Fant ikke behandling"), + ApiResponse(responseCode = "401", description = "Sikkerhetstoken er ikke gyldig"), + ApiResponse( + responseCode = "403", + description = "Sikkerhetstoken er ikke gyldig, eller det er ikke gitt adgang til kode 6 og 7 (nav-ansatt)", + ), + ], + ) + fun hentVirkningsTidspunkt( + @PathVariable behandlingId: Long, + ): VirkningsTidspunktResponse { + val behandling = behandlingService.hentBehandlingById(behandlingId) + return VirkningsTidspunktResponse( + behandling.virkningstidspunktsbegrunnelseIVedtakOgNotat, + behandling.boforholdsbegrunnelseKunINotat, + behandling.aarsak, + behandling.virkningsdato, + ) + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVisningsnavnController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVisningsnavnController.kt new file mode 100644 index 000000000..7460a364b --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedVisningsnavnController.kt @@ -0,0 +1,25 @@ +package no.nav.bidrag.behandling.controller.deprecated + +import no.nav.bidrag.domene.enums.beregning.ResultatkodeBarnebidrag +import no.nav.bidrag.domene.enums.beregning.ResultatkodeForskudd +import no.nav.bidrag.domene.enums.beregning.ResultatkodeSærtilskudd +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering +import no.nav.bidrag.domene.enums.person.Bostatuskode +import no.nav.bidrag.domene.enums.person.Sivilstandskode +import no.nav.bidrag.domene.util.visningsnavn +import org.springframework.web.bind.annotation.GetMapping + +@Deprecated("Bruk v1") +@DeprecatedBehandlingRestController +class DeprecatedVisningsnavnController { + @Suppress("unused") + @GetMapping("/visningsnavn") + fun hentVisningsnavn(): Map { + return Inntektsrapportering.entries.associate { it.name to it.visningsnavn.intern } + + Bostatuskode.entries.associate { it.name to it.visningsnavn.intern } + + Sivilstandskode.entries.associate { it.name to it.visningsnavn.intern } + + ResultatkodeSærtilskudd.entries.associate { it.name to it.visningsnavn.intern } + + ResultatkodeBarnebidrag.entries.associate { it.name to it.visningsnavn.intern } + + ResultatkodeForskudd.entries.associate { it.name to it.visningsnavn.intern } + } +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingBeregnForskuddController.kt similarity index 94% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingBeregnForskuddController.kt index 510609b24..ec70b6564 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingBeregnForskuddController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingBeregnForskuddController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement @@ -13,7 +13,7 @@ import org.springframework.web.client.HttpClientErrorException private val LOGGER = KotlinLogging.logger {} -@BehandlingRestController +@BehandlingRestControllerV1 class BehandlingBeregnForskuddController( private val behandlingService: BehandlingService, private val forskuddService: ForskuddService, diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt similarity index 97% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt index ab99be48b..aef57f1bd 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse @@ -28,7 +28,7 @@ import org.springframework.web.bind.annotation.RequestBody private val LOGGER = KotlinLogging.logger {} -@BehandlingRestController +@BehandlingRestControllerV1 class BehandlingController(private val behandlingService: BehandlingService) { @Suppress("unused") @PostMapping("/behandling") @@ -47,7 +47,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun createBehandling( + fun oppretteBehandling( @Valid @RequestBody(required = true) createBehandling: CreateBehandlingRequest, @@ -97,7 +97,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { description = "Oppdatere behandling", security = [SecurityRequirement(name = "bearer-key")], ) - fun updateBehandling( + fun oppdatereBehandling( @PathVariable behandlingId: Long, @Valid @RequestBody(required = true) request: UpdateBehandlingRequest, ) { @@ -110,7 +110,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { description = "Sync fra behandling", security = [SecurityRequirement(name = "bearer-key")], ) - fun syncRoller( + fun synkronisereRoller( @PathVariable behandlingId: Long, @Valid @RequestBody(required = true) request: SyncRollerRequest, ) = behandlingService.syncRoller(behandlingId, request.roller) @@ -132,7 +132,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { ), ], ) - fun oppdaterVedtakId( + fun oppdatereVedtaksid( @PathVariable behandlingId: Long, @PathVariable vedtakId: Long, ) { diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingRestController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingRestControllerV1.kt similarity index 76% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingRestController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingRestControllerV1.kt index ab6fbcc70..47374068d 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingRestController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingRestControllerV1.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import no.nav.security.token.support.core.api.Protected import org.springframework.web.bind.annotation.RequestMapping @@ -11,5 +11,5 @@ import java.lang.annotation.Inherited @Target(AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CLASS) @RestController @Protected -@RequestMapping("/api") -annotation class BehandlingRestController +@RequestMapping("/api/v1") +annotation class BehandlingRestControllerV1 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BoforholdController.kt similarity index 81% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BoforholdController.kt index 98162e64d..40a2aecf9 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/BoforholdController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BoforholdController.kt @@ -1,9 +1,9 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement import no.nav.bidrag.behandling.dto.boforhold.BoforholdResponse -import no.nav.bidrag.behandling.dto.boforhold.UpdateBoforholdRequest +import no.nav.bidrag.behandling.dto.boforhold.OppdatereBoforholdRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toDomain import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody -@BehandlingRestController +@BehandlingRestControllerV1 class BoforholdController(private val behandlingService: BehandlingService) { @Suppress("unused") @PutMapping("/behandling/{behandlingId}/boforhold") @@ -24,16 +24,16 @@ class BoforholdController(private val behandlingService: BehandlingService) { ) fun oppdatereBoforhold( @PathVariable behandlingId: Long, - @RequestBody updateBoforholdRequest: UpdateBoforholdRequest, + @RequestBody oppdatereBoforholdRequest: OppdatereBoforholdRequest, ): BoforholdResponse { val behandling = behandlingService.hentBehandlingById(behandlingId) behandlingService.updateBoforhold( behandlingId, - updateBoforholdRequest.husstandsBarn.toDomain(behandling), - updateBoforholdRequest.sivilstand.toSivilstandDomain(behandling), - updateBoforholdRequest.boforholdBegrunnelseKunINotat, - updateBoforholdRequest.boforholdBegrunnelseMedIVedtakNotat, + oppdatereBoforholdRequest.husstandsbarn.toDomain(behandling), + oppdatereBoforholdRequest.sivilstand.toSivilstandDomain(behandling), + oppdatereBoforholdRequest.boforholdsbegrunnelseKunINotat, + oppdatereBoforholdRequest.boforholdsbegrunnelseIVedtakOgNotat, ) val updatedBehandling = behandlingService.hentBehandlingById(behandlingId) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ExceptionHandler.kt similarity index 95% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ExceptionHandler.kt index e059ff5cb..5ae94e774 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ExceptionHandler.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import com.fasterxml.jackson.databind.JsonMappingException import com.fasterxml.jackson.databind.exc.InvalidFormatException @@ -39,8 +39,7 @@ class ExceptionHandler { validationError?.fieldErrors?.joinToString(", ") { "${it.field}: ${it.message}" } ?: "ukjent feil" - return ResponseEntity - .status(HttpStatus.BAD_REQUEST) + return ResponseEntity.status(HttpStatus.BAD_REQUEST) .header( HttpHeaders.WARNING, "Forespørselen inneholder ugyldig verdi: $errorMessage", @@ -52,8 +51,7 @@ class ExceptionHandler { @ExceptionHandler(HttpStatusCodeException::class) fun handleHttpClientErrorException(exception: HttpStatusCodeException): ResponseEntity<*> { val errorMessage = getErrorMessage(exception) - return ResponseEntity - .status(exception.statusCode) + return ResponseEntity.status(exception.statusCode) .header(HttpHeaders.WARNING, errorMessage) .build() } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ForsendelseController.kt similarity index 93% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ForsendelseController.kt index 4674dc89d..b52ab7783 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/ForsendelseController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ForsendelseController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement @@ -8,7 +8,7 @@ import no.nav.bidrag.behandling.service.ForsendelseService import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody -@BehandlingRestController +@BehandlingRestControllerV1 class ForsendelseController(private val forsendelseService: ForsendelseService) { @Suppress("unused") @PostMapping("/forsendelse/init") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/InntekterController.kt similarity index 92% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/InntekterController.kt index b11c8f785..47737aadf 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/InntekterController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/InntekterController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse @@ -9,13 +9,13 @@ import no.nav.bidrag.behandling.dto.inntekt.OppdatereInntekterRequest import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toBarnetilleggDto import no.nav.bidrag.behandling.transformers.toInntektDto -import no.nav.bidrag.behandling.transformers.toUtvidetbarnetrygdDto +import no.nav.bidrag.behandling.transformers.toUtvidetBarnetrygdDto import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody -@BehandlingRestController +@BehandlingRestControllerV1 class InntekterController(private val behandlingService: BehandlingService) { @Suppress("unused") @PutMapping("/behandling/{behandlingId}/inntekter") @@ -52,7 +52,7 @@ class InntekterController(private val behandlingService: BehandlingService) { return InntekterResponse( nyBehandling.inntekter.toInntektDto(), nyBehandling.barnetillegg.toBarnetilleggDto(), - nyBehandling.utvidetBarnetrygd.toUtvidetbarnetrygdDto(), + nyBehandling.utvidetBarnetrygd.toUtvidetBarnetrygdDto(), nyBehandling.inntektsbegrunnelseIVedtakOgNotat, nyBehandling.inntektsbegrunnelseKunINotat, ) @@ -83,7 +83,7 @@ class InntekterController(private val behandlingService: BehandlingService) { return InntekterResponse( behandling.inntekter.toInntektDto(), behandling.barnetillegg.toBarnetilleggDto(), - behandling.utvidetBarnetrygd.toUtvidetbarnetrygdDto(), + behandling.utvidetBarnetrygd.toUtvidetBarnetrygdDto(), behandling.inntektsbegrunnelseIVedtakOgNotat, behandling.inntektsbegrunnelseKunINotat, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/OpplysningerController.kt similarity index 97% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/OpplysningerController.kt index 5ce4aea95..9070e05ff 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/OpplysningerController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/OpplysningerController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody -@BehandlingRestController +@BehandlingRestControllerV1 class OpplysningerController(val opplysningerService: OpplysningerService) { @Suppress("unused") @PostMapping("/behandling/{behandlingId}/opplysninger") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/VirkningstidspunktController.kt similarity index 97% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/VirkningstidspunktController.kt index 9007f50e4..ddd15fed9 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VirkningstidspunktController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/VirkningstidspunktController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PutMapping import org.springframework.web.bind.annotation.RequestBody -@BehandlingRestController +@BehandlingRestControllerV1 class VirkningstidspunktController(private val behandlingService: BehandlingService) { @Suppress("unused") @PutMapping("/behandling/{behandlingId}/virkningstidspunkt") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/VisningsnavnController.kt similarity index 93% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt rename to src/main/kotlin/no/nav/bidrag/behandling/controller/v1/VisningsnavnController.kt index 2ef40c551..307f0e97c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/VisningsnavnController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/VisningsnavnController.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller +package no.nav.bidrag.behandling.controller.v1 import no.nav.bidrag.domene.enums.beregning.ResultatkodeBarnebidrag import no.nav.bidrag.domene.enums.beregning.ResultatkodeForskudd @@ -9,7 +9,7 @@ import no.nav.bidrag.domene.enums.person.Sivilstandskode import no.nav.bidrag.domene.util.visningsnavn import org.springframework.web.bind.annotation.GetMapping -@BehandlingRestController +@BehandlingRestControllerV1 class VisningsnavnController { @Suppress("unused") @GetMapping("/visningsnavn") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BehandlingDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BehandlingDto.kt new file mode 100644 index 000000000..8b65a50cf --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BehandlingDto.kt @@ -0,0 +1,49 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype +import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType +import no.nav.bidrag.behandling.deprecated.modell.SoknadType +import no.nav.bidrag.behandling.dto.behandling.SivilstandDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import java.time.LocalDate + +// TODO: Flytt dette til bidrag-transport +data class BehandlingDto( + val id: Long, + // Union av Stønadstype og Engangsbeløptype + val behandlingtype: Behandlingstype, + // TODO Bruk Vedtakstype istedenfor + val søknadstype: SoknadType, + val erVedtakFattet: Boolean, + @Schema(type = "string", format = "date", example = "01.12.2025") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoFom: LocalDate, + @Schema(type = "string", format = "date", example = "01.12.2025") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoTom: LocalDate, + @Schema(type = "string", format = "date", example = "01.12.2025") + @JsonFormat(pattern = "yyyy-MM-dd") + val mottatDato: LocalDate, + val soknadFraType: SøktAvType, + val saksnummer: String, + val soknadsid: Long, + val behandlerenhet: String, + val roller: Set, + val husstandsbarn: Set, + val sivilstand: Set, + @Schema(type = "string", format = "date", example = "01.12.2025") + @JsonFormat(pattern = "yyyy-MM-dd") + val virkningsdato: LocalDate? = null, + val soknadRefId: Long? = null, + val grunnlagspakkeid: Long? = null, + val årsak: ForskuddAarsakType? = null, + val virkningstidspunktBegrunnelseMedIVedtaksnotat: String? = null, + val virkningstidspunktBegrunnelseKunINotat: String? = null, + val boforholdsbegrunnelseMedIVedtaksnotat: String? = null, + val boforholdsbegrunnelseKunINotat: String? = null, + val inntektsbegrunnelseMedIVedtaksnotat: String? = null, + val inntektsbegrunnelseKunINotat: String? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BoforholdResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BoforholdResponse.kt new file mode 100644 index 000000000..6ef4e94a4 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/BoforholdResponse.kt @@ -0,0 +1,11 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import no.nav.bidrag.behandling.dto.behandling.SivilstandDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto + +data class BoforholdResponse( + val husstandsBarn: Set, + val sivilstand: Set, + val boforholdBegrunnelseMedIVedtakNotat: String? = null, + val boforholdBegrunnelseKunINotat: String? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateBehandlingRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateBehandlingRequest.kt new file mode 100644 index 000000000..076f2fdd0 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateBehandlingRequest.kt @@ -0,0 +1,42 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import io.swagger.v3.oas.annotations.media.Schema +import jakarta.validation.Valid +import jakarta.validation.constraints.NotBlank +import jakarta.validation.constraints.Size +import no.nav.bidrag.behandling.database.datamodell.Behandlingstype +import no.nav.bidrag.behandling.deprecated.modell.SoknadType +import no.nav.bidrag.domene.enums.rolle.SøktAvType +import no.nav.bidrag.domene.enums.vedtak.Engangsbeløptype +import no.nav.bidrag.domene.enums.vedtak.Stønadstype +import java.util.Date + +data class CreateBehandlingRequest( + @Schema(required = true) + val behandlingType: Behandlingstype, + @Schema(required = true) + val soknadType: SoknadType, + @Schema(required = true) + val datoFom: Date, + @Schema(required = true) + val datoTom: Date, + @Schema(required = true) + val mottatDato: Date, + @Schema(required = true) + val soknadFra: SøktAvType, + @field:NotBlank(message = "Saksnummer kan ikke være blank") + @field:Size(max = 7, message = "Saks nummer kan ikke være lengre enn 7 tegn") + val saksnummer: String, + @field:NotBlank(message = "Enhet kan ikke være blank") + @field:Size(min = 4, max = 4, message = "Enhet må være 4 tegn") + val behandlerEnhet: String, + @field:Size(min = 2, message = "Sak må ha minst to roller involvert") + val roller: Set<@Valid CreateRolleDto>, + @Schema(required = true) + var stonadType: Stønadstype?, + @Schema(required = true) + var engangsbelopType: Engangsbeløptype?, + @Schema(required = true) + val soknadId: Long, + val soknadRefId: Long? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateRolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateRolleDto.kt new file mode 100644 index 000000000..9cf8ffae4 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/CreateRolleDto.kt @@ -0,0 +1,72 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Rolle +import no.nav.bidrag.behandling.transformers.toLocalDate +import no.nav.bidrag.domene.enums.rolle.Rolletype +import java.util.Date + +enum class CreateRolleRolleType { + BIDRAGS_PLIKTIG, + BIDRAGS_MOTTAKER, + BARN, + REELL_MOTTAKER, + FEILREGISTRERT, +} + +@Schema(description = "Rolle beskrivelse som er brukte til å opprette nye roller") +data class CreateRolleDto( + @Schema(required = true, enumAsRef = true) + val rolleType: CreateRolleRolleType, + @Schema( + type = "String", + description = "F.eks fødselsnummer. Påkrevd for alle rolletyper utenom for barn som ikke inngår i beregning.", + required = false, + nullable = true, + ) + val ident: String?, + @Schema( + type = "String", + description = "Navn på rolleinnehaver hvis ident er ukjent. Gjelder kun barn som ikke inngår i beregning", + required = false, + nullable = true, + ) + val navn: String?, + @Schema(type = "String", format = "date", description = "F.eks fødselsdato") + val fodtDato: Date?, + @Schema(type = "String", format = "date", description = "Opprettet dato") + val opprettetDato: Date?, + val erSlettet: Boolean = false, +) + +fun Set.toCreateRolleDto(): Set = + this.map { + no.nav.bidrag.behandling.dto.behandling.CreateRolleDto( + rolletype = it.rolleType.toRolletype(), + fødselsdato = it.fodtDato?.toLocalDate()!!, + opprettetdato = it.opprettetDato?.toLocalDate(), + ident = it.ident, + navn = it.navn, + ) + }.toSet() + +fun CreateRolleRolleType.toRolletype(): Rolletype { + return when (this) { + CreateRolleRolleType.BIDRAGS_PLIKTIG -> Rolletype.BIDRAGSPLIKTIG + CreateRolleRolleType.BIDRAGS_MOTTAKER -> Rolletype.BIDRAGSMOTTAKER + CreateRolleRolleType.BARN -> Rolletype.BARN + CreateRolleRolleType.REELL_MOTTAKER -> Rolletype.REELMOTTAKER + CreateRolleRolleType.FEILREGISTRERT -> Rolletype.FEILREGISTRERT + } +} + +fun CreateRolleDto.toRolle(behandling: Behandling): Rolle = + Rolle( + behandling, + rolletype = this.rolleType.toRolletype(), + this.ident, + this.fodtDato?.toLocalDate()!!, + this.opprettetDato?.toLocalDate(), + navn = this.navn, + ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntektDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntektDto.kt new file mode 100644 index 000000000..42215cdcf --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntektDto.kt @@ -0,0 +1,59 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.domene.enums.inntekt.Inntektsrapportering +import no.nav.bidrag.transport.behandling.inntekt.response.InntektPost +import java.math.BigDecimal +import java.time.LocalDate + +data class InntektDto( + val id: Long? = null, + @Schema(required = true) + val taMed: Boolean, + val inntektType: String?, + @Schema(required = true) + val belop: BigDecimal, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoFom: LocalDate?, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoTom: LocalDate?, + @Schema(required = true) + val ident: String, + @Schema(required = true) + val fraGrunnlag: Boolean, + @Schema(required = true) + val inntektPostListe: Set, +) + +fun Set.toInntektDto(): Set = + this.map { + no.nav.bidrag.behandling.dto.inntekt.InntektDto( + id = it.id, + taMed = it.taMed, + inntektstype = Inntektsrapportering.valueOf(it.inntektType!!), + beløp = it.belop, + datoFom = it.datoFom!!, + datoTom = it.datoTom, + ident = it.ident, + fraGrunnlag = it.fraGrunnlag, + inntektsposter = it.inntektPostListe, + ) + }.toSet() + +fun Set.toDepreactedInntektDto(): Set = + this.map { + InntektDto( + id = it.id, + taMed = it.taMed, + inntektType = it.inntektstype.name, + belop = it.beløp, + datoFom = it.datoFom!!, + datoTom = it.datoTom, + ident = it.ident, + fraGrunnlag = it.fraGrunnlag, + inntektPostListe = it.inntektsposter, + ) + }.toSet() diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntekterResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntekterResponse.kt new file mode 100644 index 000000000..4176ace73 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/InntekterResponse.kt @@ -0,0 +1,11 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto + +data class InntekterResponse( + val inntekter: Set, + val barnetillegg: Set, + val utvidetbarnetrygd: Set, + val inntektBegrunnelseMedIVedtakNotat: String? = null, + val inntektBegrunnelseKunINotat: String? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/RolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/RolleDto.kt new file mode 100644 index 000000000..6fbc43344 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/RolleDto.kt @@ -0,0 +1,20 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import java.util.Date + +data class RolleDto( + val id: Long, + val rolleType: RolleTypeDto, + val ident: String?, + val navn: String?, + val fodtDato: Date?, + val opprettetDato: Date?, +) + +enum class RolleTypeDto { + BARN, + BIDRAGSMOTTAKER, + BIDRAGSPLIKTIG, + FEILREGISTRERT, + REELMOTTAKER, +} diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/SyncRollerRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/SyncRollerRequest.kt new file mode 100644 index 000000000..3a802df51 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/SyncRollerRequest.kt @@ -0,0 +1,7 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import io.swagger.v3.oas.annotations.media.Schema + +data class SyncRollerRequest( + @Schema(required = true) val roller: List, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt similarity index 90% rename from src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt rename to src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt index cbb025f18..cf3fc1e61 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/UpdateBoforholdRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.dto.boforhold +package no.nav.bidrag.behandling.deprecated.dto import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.dto.behandling.SivilstandDto diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateInntekterRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateInntekterRequest.kt new file mode 100644 index 000000000..bddf24dfd --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateInntekterRequest.kt @@ -0,0 +1,15 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.dto.inntekt.BarnetilleggDto + +data class UpdateInntekterRequest( + @Schema(required = true) + val inntekter: Set, + @Schema(required = true) + val barnetillegg: Set, + @Schema(required = true) + val utvidetbarnetrygd: Set, + val inntektBegrunnelseMedIVedtakNotat: String? = null, + val inntektBegrunnelseKunINotat: String? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateVirkningsTidspunktRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateVirkningsTidspunktRequest.kt new file mode 100644 index 000000000..260c2260e --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateVirkningsTidspunktRequest.kt @@ -0,0 +1,15 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType +import java.time.LocalDate + +data class UpdateVirkningsTidspunktRequest( + val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, + val virkningsTidspunktBegrunnelseKunINotat: String? = null, + val aarsak: ForskuddAarsakType? = null, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val virkningsDato: LocalDate? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UtvidetbarnetrygdDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UtvidetbarnetrygdDto.kt new file mode 100644 index 000000000..6de2f9014 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UtvidetbarnetrygdDto.kt @@ -0,0 +1,43 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.dto.inntekt.UtvidetBarnetrygdDto +import java.math.BigDecimal +import java.time.LocalDate + +data class UtvidetbarnetrygdDto( + val id: Long? = null, + @Schema(required = true) + val deltBoSted: Boolean, + @Schema(required = true) + val belop: BigDecimal, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoFom: LocalDate?, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoTom: LocalDate?, +) + +fun Set.toUtvidetBarnetrygdDto(): Set = + this.map { + UtvidetBarnetrygdDto( + id = it.id, + deltBosted = it.deltBoSted, + beløp = it.belop, + datoFom = it.datoFom, + datoTom = it.datoTom, + ) + }.toSet() + +fun Set.toUtvidetbarnetrygdDto(): Set = + this.map { + UtvidetbarnetrygdDto( + id = it.id, + deltBoSted = it.deltBosted, + belop = it.beløp, + datoFom = it.datoFom, + datoTom = it.datoTom, + ) + }.toSet() diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/VirkningsTidspunktResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/VirkningsTidspunktResponse.kt new file mode 100644 index 000000000..0bffd02a1 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/VirkningsTidspunktResponse.kt @@ -0,0 +1,15 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.ForskuddAarsakType +import java.time.LocalDate + +data class VirkningsTidspunktResponse( + val virkningsTidspunktBegrunnelseMedIVedtakNotat: String? = null, + val virkningsTidspunktBegrunnelseKunINotat: String? = null, + val aarsak: ForskuddAarsakType? = null, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val virkningsDato: LocalDate? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/modell/Api.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/modell/Api.kt new file mode 100644 index 000000000..9b1a385b2 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/modell/Api.kt @@ -0,0 +1,26 @@ +package no.nav.bidrag.behandling.deprecated.modell + +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.dto.behandling.SivilstandDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto + +@Schema(enumAsRef = true) +enum class SoknadType { + INDEKSREGULERING, + ALDERSJUSTERING, + OPPHØR, + ALDERSOPPHØR, + REVURDERING, + FASTSETTELSE, + INNKREVING, + KLAGE, + ENDRING, + ENDRING_MOTTAKER, +} + +data class BoforholdResponse( + val husstandsBarn: Set, + val sivilstand: Set, + val boforholdBegrunnelseMedIVedtakNotat: String? = null, + val boforholdBegrunnelseKunINotat: String? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt index 30834b620..5abae7fba 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/BoforholdResponse.kt @@ -4,8 +4,8 @@ import no.nav.bidrag.behandling.dto.behandling.SivilstandDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto data class BoforholdResponse( - val husstandsBarn: Set, + val husstandsbarn: Set, val sivilstand: Set, - val boforholdBegrunnelseMedIVedtakNotat: String? = null, - val boforholdBegrunnelseKunINotat: String? = null, + val boforholdsbegrunnelseIVedtakOgNotat: String? = null, + val boforholdsbegrunnelseKunINotat: String? = null, ) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/OppdatereBoforholdRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/OppdatereBoforholdRequest.kt new file mode 100644 index 000000000..3260f8fb4 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/boforhold/OppdatereBoforholdRequest.kt @@ -0,0 +1,14 @@ +package no.nav.bidrag.behandling.dto.boforhold + +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.dto.behandling.SivilstandDto +import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto + +data class OppdatereBoforholdRequest( + @Schema(required = true) + val husstandsbarn: Set, + @Schema(required = true) + val sivilstand: Set, + val boforholdsbegrunnelseIVedtakOgNotat: String? = null, + val boforholdsbegrunnelseKunINotat: String? = null, +) 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 dd5da8975..a83579ad2 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/service/BehandlingService.kt @@ -20,7 +20,7 @@ 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.behandling.transformers.toUtvidetBarnetrygdDomain import no.nav.bidrag.domene.enums.rolle.Rolletype import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional @@ -119,7 +119,7 @@ class BehandlingService( val inntekter = nyeInntekter.toInntektDomain(behandling) val barnetillegg = nyeBarnetillegg.toBarnetilleggDomain(behandling) - val nyUtvidetbarnetrygd = nyUtvidetBarnetrygd.toUtvidetbarnetrygdDomain(behandling) + val nyUtvidetbarnetrygd = nyUtvidetBarnetrygd.toUtvidetBarnetrygdDomain(behandling) if (behandling.inntekter != inntekter) { log.info("Oppdaterer inntekter for behandlingsid $behandlingsid") diff --git a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt index eeaa4eb24..71b536d8c 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/transformers/DtoExtensions.kt @@ -52,7 +52,7 @@ fun Set.toBarnetilleggDto() = ) }.toSet() -fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) = +fun Set.toUtvidetBarnetrygdDomain(behandling: Behandling) = this.map { UtvidetBarnetrygd( behandling, @@ -63,7 +63,7 @@ fun Set.toUtvidetbarnetrygdDomain(behandling: Behandling) ) }.toMutableSet() -fun Set.toUtvidetbarnetrygdDto() = +fun Set.toUtvidetBarnetrygdDto() = this.map { UtvidetBarnetrygdDto( it.id, diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt index ac128ad2b..767ff5919 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BoforholdControllerTest.kt @@ -3,7 +3,7 @@ package no.nav.bidrag.behandling.controller import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.behandling.dto.behandling.CreateBehandlingResponse import no.nav.bidrag.behandling.dto.boforhold.BoforholdResponse -import no.nav.bidrag.behandling.dto.boforhold.UpdateBoforholdRequest +import no.nav.bidrag.behandling.dto.boforhold.OppdatereBoforholdRequest import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnperiodeDto import no.nav.bidrag.domene.enums.person.Bostatuskode @@ -65,7 +65,7 @@ class BoforholdControllerTest : KontrollerTestRunner() { // 2.2 val boforholdData = - UpdateBoforholdRequest(husstandsBarn, emptySet(), "med i vedtak", "kun i notat") // + OppdatereBoforholdRequest(husstandsBarn, emptySet(), "med i vedtak", "kun i notat") // val boforholdResponse = httpHeaderTestRestTemplate.exchange( "${rootUri()}/behandling/${behandling.body!!.id}/boforhold", @@ -74,8 +74,8 @@ class BoforholdControllerTest : KontrollerTestRunner() { BoforholdResponse::class.java, ) - assertEquals(1, boforholdResponse.body!!.husstandsBarn.size) - val husstandsBarnDto = boforholdResponse.body!!.husstandsBarn.iterator().next() + assertEquals(1, boforholdResponse.body!!.husstandsbarn.size) + val husstandsBarnDto = boforholdResponse.body!!.husstandsbarn.iterator().next() assertEquals("ident", husstandsBarnDto.ident) assertEquals(1, husstandsBarnDto.perioder.size) } diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt index 1302cfe36..222e94732 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/KontrollerTestRunner.kt @@ -18,7 +18,7 @@ abstract class KontrollerTestRunner : CommonTestRunner() { val stubUtils: StubUtils = StubUtils() protected fun rootUri(): String { - return "http://localhost:$port/api/" + return "http://localhost:$port/api/v1" } @BeforeEach From 14755643a355a1786c47c16d94953468f07586c0 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Dec 2023 11:22:38 +0100 Subject: [PATCH 29/33] Update V1.0.45__alter_table_barn_i_husstand.sql --- ..._i_husstand.sql => V1.0.45__alter_table_barn_i_husstand.sql} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/db/migration/{V1.0.37__alter_table_barn_i_husstand.sql => V1.0.45__alter_table_barn_i_husstand.sql} (75%) diff --git a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql b/src/main/resources/db/migration/V1.0.45__alter_table_barn_i_husstand.sql similarity index 75% rename from src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql rename to src/main/resources/db/migration/V1.0.45__alter_table_barn_i_husstand.sql index b3b2fe46c..f7e4ca162 100644 --- a/src/main/resources/db/migration/V1.0.37__alter_table_barn_i_husstand.sql +++ b/src/main/resources/db/migration/V1.0.45__alter_table_barn_i_husstand.sql @@ -3,7 +3,7 @@ /* ALTER TABLE BARN_I_HUSSTAND RENAME COLUMN FOEDSELSDATO TO FOEDSELS_DATO; - DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.37'; + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.45'; */ ALTER TABLE BARN_I_HUSSTAND RENAME COLUMN FOEDSELS_DATO TO FOEDSELSDATO; From f415772f7838ec139da228db1dfd97e4162ee0f1 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Dec 2023 11:52:40 +0100 Subject: [PATCH 30/33] Fikse mergekonflikt --- pom.xml | 7 +-- .../DeprecatedBehandlingController.kt | 35 ++++++++---- .../controller/v1/BehandlingController.kt | 55 +++++-------------- .../behandling/dto/behandling/RolleDto.kt | 1 + .../controller/BehandlingControllerTest.kt | 9 --- .../behandling/hendelse/VedtakHendelseTest.kt | 12 +--- 6 files changed, 42 insertions(+), 77 deletions(-) diff --git a/pom.xml b/pom.xml index 7619655ba..c5561cf5e 100644 --- a/pom.xml +++ b/pom.xml @@ -16,13 +16,8 @@ 21 1.9.21 -<<<<<<< HEAD - 20231124134729_6778484 - 20231206085150_493c399 -======= 20231201131246_f719b2b - 20231129081122_595a8a8 ->>>>>>> main + 20231206085150_493c399 7.4 3.1.9 2.3.0 diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt index ad7496d42..e5e496599 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBehandlingController.kt @@ -24,6 +24,8 @@ import no.nav.bidrag.behandling.transformers.toDate import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto import no.nav.bidrag.behandling.transformers.toLocalDate import no.nav.bidrag.behandling.transformers.toSivilstandDto +import no.nav.bidrag.commons.security.utils.TokenUtils +import no.nav.bidrag.commons.service.organisasjon.SaksbehandlernavnProvider import no.nav.bidrag.domene.enums.rolle.Rolletype import org.apache.commons.lang3.Validate import org.springframework.web.bind.annotation.GetMapping @@ -68,20 +70,29 @@ class DeprecatedBehandlingController(private val behandlingService: BehandlingSe ), ) + val opprettetAv = + TokenUtils.hentSaksbehandlerIdent() ?: TokenUtils.hentApplikasjonsnavn() ?: "ukjent" + val opprettetAvNavn = + TokenUtils.hentSaksbehandlerIdent() + ?.let { SaksbehandlernavnProvider.hentSaksbehandlernavn(it) } + val behandling = Behandling( - createBehandling.behandlingType, - Soknadstype.valueOf(createBehandling.soknadType.name), - createBehandling.datoFom.toLocalDate(), - createBehandling.datoTom.toLocalDate(), - createBehandling.mottatDato.toLocalDate(), - createBehandling.saksnummer, - createBehandling.soknadId, - createBehandling.soknadRefId, - createBehandling.behandlerEnhet, - createBehandling.soknadFra, - createBehandling.stonadType, - createBehandling.engangsbelopType, + behandlingstype = createBehandling.behandlingType, + soknadstype = Soknadstype.valueOf(createBehandling.soknadType.name), + datoFom = createBehandling.datoFom.toLocalDate(), + datoTom = createBehandling.datoTom.toLocalDate(), + mottattdato = createBehandling.mottatDato.toLocalDate(), + saksnummer = createBehandling.saksnummer, + soknadsid = createBehandling.soknadId, + soknadRefId = createBehandling.soknadRefId, + behandlerEnhet = createBehandling.behandlerEnhet, + soknadFra = createBehandling.soknadFra, + stonadstype = createBehandling.stonadType, + engangsbeloptype = createBehandling.engangsbelopType, + opprettetAv = opprettetAv, + opprettetAvNavn = opprettetAvNavn, + kildeapplikasjon = TokenUtils.hentApplikasjonsnavn() ?: "ukjent", ) val roller = HashSet( diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt index 087dee1da..d6f90f8e5 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt @@ -18,12 +18,9 @@ import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto import no.nav.bidrag.behandling.transformers.toRolle import no.nav.bidrag.behandling.transformers.toSivilstandDto -<<<<<<< HEAD:src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt -import no.nav.bidrag.domene.enums.rolle.Rolletype -======= import no.nav.bidrag.commons.security.utils.TokenUtils import no.nav.bidrag.commons.service.organisasjon.SaksbehandlernavnProvider ->>>>>>> main:src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt +import no.nav.bidrag.domene.enums.rolle.Rolletype import org.apache.commons.lang3.Validate import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable @@ -69,30 +66,21 @@ class BehandlingController(private val behandlingService: BehandlingService) { ?.let { SaksbehandlernavnProvider.hentSaksbehandlernavn(it) } val behandling = Behandling( - createBehandling.behandlingstype, - createBehandling.søknadstype, - createBehandling.datoFom, - createBehandling.datoTom, - createBehandling.mottattdato, - createBehandling.saksnummer, -<<<<<<< HEAD:src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt - createBehandling.søknadsid, - createBehandling.søknadsreferanseid, - createBehandling.behandlerenhet, - createBehandling.søknadFra, - createBehandling.stønadstype, - createBehandling.engangsbeløpstype, -======= - createBehandling.soknadId, - createBehandling.soknadRefId, - createBehandling.behandlerEnhet, + behandlingstype = createBehandling.behandlingstype, + soknadstype = createBehandling.søknadstype, + datoFom = createBehandling.datoFom, + datoTom = createBehandling.datoTom, + mottattdato = createBehandling.mottattdato, + saksnummer = createBehandling.saksnummer, + soknadsid = createBehandling.søknadsid, + soknadRefId = createBehandling.søknadsreferanseid, + behandlerEnhet = createBehandling.behandlerenhet, + soknadFra = createBehandling.søknadFra, + stonadstype = createBehandling.stønadstype, + engangsbeloptype = createBehandling.engangsbeløpstype, opprettetAv = opprettetAv, opprettetAvNavn = opprettetAvNavn, kildeapplikasjon = TokenUtils.hentApplikasjonsnavn() ?: "ukjent", - createBehandling.soknadFra, - createBehandling.stonadType, - createBehandling.engangsbelopType, ->>>>>>> main:src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt ) val roller = HashSet( @@ -205,18 +193,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { behandling.soknadsid, behandling.behandlerEnhet, behandling.roller.map { -<<<<<<< HEAD:src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt - RolleDto(it.id!!, it.rolletype, it.ident, it.navn, it.foedselsdato) -======= - RolleDto( - it.id!!, - it.rolleType.toRolleTypeDto(), - it.ident, - it.navn, - it.fodtDato, - it.opprettetDato, - ) ->>>>>>> main:src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt + RolleDto(it.id!!, it.rolletype, it.ident, it.navn, it.foedselsdato, it.opprettetDato) }.toSet(), behandling.husstandsbarn.toHusstandsBarnDto(), behandling.sivilstand.toSivilstandDto(), @@ -259,11 +236,7 @@ class BehandlingController(private val behandlingService: BehandlingService) { } private fun ingenVoksneUtenIdent(roller: Set): Boolean { -<<<<<<< HEAD:src/main/kotlin/no/nav/bidrag/behandling/controller/v1/BehandlingController.kt return roller.filter { r -> r.rolletype != Rolletype.BARN && r.ident.isNullOrBlank() } -======= - return roller.filter { r -> r.rolleType != CreateRolleRolleType.BARN && r.ident.isNullOrBlank() } ->>>>>>> main:src/main/kotlin/no/nav/bidrag/behandling/controller/BehandlingController.kt .none() } } diff --git a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt index a5c375b60..5e2f10ab6 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/dto/behandling/RolleDto.kt @@ -9,4 +9,5 @@ data class RolleDto( val ident: String?, val navn: String?, val fødselsdato: LocalDate?, + val opprettetdato: LocalDate?, ) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt index 6aa45dcb5..815d43cc1 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/controller/BehandlingControllerTest.kt @@ -428,7 +428,6 @@ class BehandlingControllerTest : KontrollerTestRunner() { // given val roller = setOf( -<<<<<<< HEAD CreateRolleDtoTest( Rolletype.BARN, "1235", @@ -441,14 +440,6 @@ class BehandlingControllerTest : KontrollerTestRunner() { navn = "Ola Dunk", opprettetDato = LocalDate.now().minusMonths(8), fødselsdato = LocalDate.now().minusMonths(529), -======= - CreateRolleDtoTest(CreateRolleRolleType.BARN, "1235", Date(1)), - CreateRolleDtoTest( - CreateRolleRolleType.BIDRAGS_MOTTAKER, - null, - Date(1), - "Ola Dunk", ->>>>>>> main ), ) val testBehandlingMedNull = createBehandlingRequestTest("1900000", "en12", roller) diff --git a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt index f0d6d0c7f..3e70f7761 100644 --- a/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt +++ b/src/test/kotlin/no/nav/bidrag/behandling/hendelse/VedtakHendelseTest.kt @@ -114,18 +114,12 @@ class VedtakHendelseTest : CommonTestRunner() { saksnummer = SAKSNUMMER, soknadsid = 123123L, behandlerEnhet = "4806", -<<<<<<< HEAD - behandlingstype = Behandlingstype.BIDRAG18AAR, - engangsbeloptype = null, - mottattdato = LocalDate.now(), -======= opprettetAv = "Z99999", opprettetAvNavn = "Saksbehandler Navn", kildeapplikasjon = "bisys", - behandlingType = Behandlingstype.BIDRAG18AAR, - engangsbelopType = null, - mottatDato = Date(), ->>>>>>> main + behandlingstype = Behandlingstype.BIDRAG18AAR, + engangsbeloptype = null, + mottattdato = LocalDate.now(), soknadFra = SøktAvType.BIDRAGSMOTTAKER, soknadstype = Soknadstype.FASTSETTELSE, stonadstype = Stønadstype.BIDRAG18AAR, From e83f6483b87e81cab99966e92fd94338146421e4 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Dec 2023 14:58:58 +0100 Subject: [PATCH 31/33] =?UTF-8?q?Slette=20husstandsbarn=20som=20mangler=20?= =?UTF-8?q?f=C3=B8dselsdato.=20Legge=20p=C3=A5=20null-begrensning=20for=20?= =?UTF-8?q?f=C3=B8dselsdatofeltet=20til=20husstandsbarn=20i=20databasen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\303\270dselsdato_fra_barn_i_husstand.sql" | 20 +++++++++++++++++++ .../V1.0.47__alter_table_barn_i_husstand.sql | 16 +++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 "src/main/resources/db/migration/V1.0.46__slette_barn_uten_f\303\270dselsdato_fra_barn_i_husstand.sql" create mode 100644 src/main/resources/db/migration/V1.0.47__alter_table_barn_i_husstand.sql diff --git "a/src/main/resources/db/migration/V1.0.46__slette_barn_uten_f\303\270dselsdato_fra_barn_i_husstand.sql" "b/src/main/resources/db/migration/V1.0.46__slette_barn_uten_f\303\270dselsdato_fra_barn_i_husstand.sql" new file mode 100644 index 000000000..02aed587d --- /dev/null +++ "b/src/main/resources/db/migration/V1.0.46__slette_barn_uten_f\303\270dselsdato_fra_barn_i_husstand.sql" @@ -0,0 +1,20 @@ +-- Tables: BARN_I_HUSSTAND & BARN_I_HUSSTAND_PERIODE + +/* + Slettede data må evnt gjenopprettes fra backup + + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.46'; + */ + +DELETE FROM BARN_I_HUSSTAND_PERIODE WHERE BARN_I_HUSSTAND_ID IN ( + SELECT ID FROM BARN_I_HUSSTAND WHERE FOEDSELSDATO IS NULL); + +DELETE FROM BARN_I_HUSSTAND WHERE FOEDSELSDATO IS NULL; + + + + + + + + diff --git a/src/main/resources/db/migration/V1.0.47__alter_table_barn_i_husstand.sql b/src/main/resources/db/migration/V1.0.47__alter_table_barn_i_husstand.sql new file mode 100644 index 000000000..ab7684678 --- /dev/null +++ b/src/main/resources/db/migration/V1.0.47__alter_table_barn_i_husstand.sql @@ -0,0 +1,16 @@ +-- Table: BARN_I_HUSSTAND + +/* + ALTER TABLE BARN_I_HUSSTAND ALTER COLUMN FOEDSELSDATO SET NULL; + DELETE FROM FLYWAY_SCHEMA_HISTORY WHERE VERSION = '1.0.47'; + */ + +ALTER TABLE BARN_I_HUSSTAND ALTER COLUMN FOEDSELSDATO SET NOT NULL; + + + + + + + + From 71863bed34d9c96e98d742a571b4d63409d3e060 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Dec 2023 15:27:31 +0100 Subject: [PATCH 32/33] Fikse deprekert boforhold-api --- .../v1 => aop}/ExceptionHandler.kt | 2 +- .../deprecated/dto/HusstandsBarnPeriodeDto.kt | 21 +++++++++++++++++++ .../deprecated/dto/HusstandsbarnDto.kt | 18 ++++++++++++++++ .../deprecated/dto/UpdateBoforholdRequest.kt | 1 - 4 files changed, 40 insertions(+), 2 deletions(-) rename src/main/kotlin/no/nav/bidrag/behandling/{controller/v1 => aop}/ExceptionHandler.kt (98%) create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt create mode 100644 src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ExceptionHandler.kt b/src/main/kotlin/no/nav/bidrag/behandling/aop/ExceptionHandler.kt similarity index 98% rename from src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ExceptionHandler.kt rename to src/main/kotlin/no/nav/bidrag/behandling/aop/ExceptionHandler.kt index 5ae94e774..2fced00f7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/v1/ExceptionHandler.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/aop/ExceptionHandler.kt @@ -1,4 +1,4 @@ -package no.nav.bidrag.behandling.controller.v1 +package no.nav.bidrag.behandling.aop import com.fasterxml.jackson.databind.JsonMappingException import com.fasterxml.jackson.databind.exc.InvalidFormatException diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt new file mode 100644 index 000000000..ac0486d3e --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt @@ -0,0 +1,21 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Kilde +import no.nav.bidrag.domene.enums.person.Bostatuskode +import java.time.LocalDate + +data class HusstandsBarnPeriodeDto( + val id: Long?, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoFom: LocalDate?, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val datoTom: LocalDate?, + @Schema(required = true) + val bostatus: Bostatuskode?, + @Schema(required = true) + val kilde: Kilde, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt new file mode 100644 index 000000000..d1af2ba33 --- /dev/null +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt @@ -0,0 +1,18 @@ +package no.nav.bidrag.behandling.deprecated.dto + +import com.fasterxml.jackson.annotation.JsonFormat +import io.swagger.v3.oas.annotations.media.Schema +import java.time.LocalDate + +data class HusstandsbarnDto( + val id: Long?, + @Schema(required = true) + val medISak: Boolean, + @Schema(required = true) + val perioder: Set, + val ident: String? = null, + val navn: String? = null, + @Schema(type = "string", format = "date", example = "2025-01-25") + @JsonFormat(pattern = "yyyy-MM-dd") + val foedselsdato: LocalDate? = null, +) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt index cf3fc1e61..9c3c1d21a 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/UpdateBoforholdRequest.kt @@ -2,7 +2,6 @@ package no.nav.bidrag.behandling.deprecated.dto import io.swagger.v3.oas.annotations.media.Schema import no.nav.bidrag.behandling.dto.behandling.SivilstandDto -import no.nav.bidrag.behandling.dto.husstandsbarn.HusstandsbarnDto data class UpdateBoforholdRequest( @Schema(required = true) From c1593025d168a7d7c72a8090026097150c385c76 Mon Sep 17 00:00:00 2001 From: s148719 Date: Fri, 8 Dec 2023 15:46:15 +0100 Subject: [PATCH 33/33] Fikse bakoverkompatibilitet husstandsmedlemmer --- .../DeprecatedBoforholdController.kt | 1 + .../deprecated/dto/HusstandsBarnPeriodeDto.kt | 13 +++++++++++++ .../deprecated/dto/HusstandsbarnDto.kt | 18 ++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt index 890714e4a..54c9c8009 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/controller/deprecated/DeprecatedBoforholdController.kt @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.security.SecurityRequirement import no.nav.bidrag.behandling.deprecated.dto.BoforholdResponse import no.nav.bidrag.behandling.deprecated.dto.UpdateBoforholdRequest +import no.nav.bidrag.behandling.deprecated.dto.toDomain import no.nav.bidrag.behandling.service.BehandlingService import no.nav.bidrag.behandling.transformers.toDomain import no.nav.bidrag.behandling.transformers.toHusstandsBarnDto diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt index ac0486d3e..f88686db7 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsBarnPeriodeDto.kt @@ -2,6 +2,8 @@ package no.nav.bidrag.behandling.deprecated.dto import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarn +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarnperiode import no.nav.bidrag.behandling.database.datamodell.Kilde import no.nav.bidrag.domene.enums.person.Bostatuskode import java.time.LocalDate @@ -19,3 +21,14 @@ data class HusstandsBarnPeriodeDto( @Schema(required = true) val kilde: Kilde, ) + +fun Set.toDomain(husstandsBarn: Husstandsbarn) = + this.map { + Husstandsbarnperiode( + husstandsBarn, + it.datoFom, + it.datoTom, + it.bostatus!!, + it.kilde, + ) + }.toSet() diff --git a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt index d1af2ba33..07c51f7e0 100644 --- a/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt +++ b/src/main/kotlin/no/nav/bidrag/behandling/deprecated/dto/HusstandsbarnDto.kt @@ -2,6 +2,9 @@ package no.nav.bidrag.behandling.deprecated.dto import com.fasterxml.jackson.annotation.JsonFormat import io.swagger.v3.oas.annotations.media.Schema +import no.nav.bidrag.behandling.database.datamodell.Behandling +import no.nav.bidrag.behandling.database.datamodell.Husstandsbarn +import no.nav.bidrag.behandling.transformers.toDomain import java.time.LocalDate data class HusstandsbarnDto( @@ -16,3 +19,18 @@ data class HusstandsbarnDto( @JsonFormat(pattern = "yyyy-MM-dd") val foedselsdato: LocalDate? = null, ) + +fun Set.toDomain(behandling: Behandling) = + this.map { + val barn = + Husstandsbarn( + behandling, + it.medISak, + it.id, + it.ident, + it.navn, + it.foedselsdato!!, + ) + barn.perioder = it.perioder.toDomain(barn).toMutableSet() + barn + }.toMutableSet()