diff --git a/src/main/kotlin/no/nav/bidrag/grunnlag/model/OppdaterRelatertePersoner.kt b/src/main/kotlin/no/nav/bidrag/grunnlag/model/OppdaterRelatertePersoner.kt index d6e01d4d..434e7b40 100644 --- a/src/main/kotlin/no/nav/bidrag/grunnlag/model/OppdaterRelatertePersoner.kt +++ b/src/main/kotlin/no/nav/bidrag/grunnlag/model/OppdaterRelatertePersoner.kt @@ -53,10 +53,11 @@ class OppdaterRelatertePersoner( // henter alle barn av BM/BP val barnListe = hentBarn(Personident(personIdOgPeriode.personId)) - // Alle husstandsmedlemmer lagres i tabell relatert_person. Det sjekkes om husstandsmedlem finnes i liste over barn. + // Alle husstandsmedlemmer innenfor aktuell periode lagres i tabell relatert_person. + // Det sjekkes om husstandsmedlem finnes i liste over barn. // erBarnAvmBp settes lik true i så fall. Tester slik at person ikke lagres som eget husstandsmedlem. husstandsmedlemmerListe.forEach { husstandsmedlem -> - if (husstandsmedlem.personId != personIdOgPeriode.personId) { + if (husstandsmedlem.personId != personIdOgPeriode.personId && husstandsmedlemInnenforPeriode(personIdOgPeriode, husstandsmedlem)) { persistenceService.opprettRelatertPerson( RelatertPersonBo( grunnlagspakkeId = grunnlagspakkeId, @@ -102,6 +103,27 @@ class OppdaterRelatertePersoner( return this } + private fun husstandsmedlemInnenforPeriode(personIdOgPeriode: PersonIdOgPeriodeRequest, husstandsmedlem: PersonBo): Boolean { + if (husstandsmedlem.husstandsmedlemPeriodeFra == null) { + return husstandsmedlem.husstandsmedlemPeriodeTil == null || husstandsmedlem.husstandsmedlemPeriodeTil.isAfter( + personIdOgPeriode.periodeFra, + ) + } + + if (husstandsmedlem.husstandsmedlemPeriodeTil == null) { + return husstandsmedlem.husstandsmedlemPeriodeFra.isBefore(personIdOgPeriode.periodeTil) + } + + if (husstandsmedlem.husstandsmedlemPeriodeFra.isAfter(personIdOgPeriode.periodeTil.minusDays(1))) { + return false + } + + if (husstandsmedlem.husstandsmedlemPeriodeTil.isAfter(personIdOgPeriode.periodeFra)) { + return true + } + return false + } + private fun hentHusstandsmedlemmer(husstandsmedlemmerRequest: String): List { LOGGER.info("Kaller bidrag-person Husstandsmedlemmer") SECURE_LOGGER.info("Kaller bidrag-person Husstandsmedlemmer med request: $husstandsmedlemmerRequest") diff --git a/src/test/kotlin/no/nav/bidrag/grunnlag/TestUtil.kt b/src/test/kotlin/no/nav/bidrag/grunnlag/TestUtil.kt index 337fd3c2..27435c19 100644 --- a/src/test/kotlin/no/nav/bidrag/grunnlag/TestUtil.kt +++ b/src/test/kotlin/no/nav/bidrag/grunnlag/TestUtil.kt @@ -994,6 +994,91 @@ class TestUtil { ), ) + fun byggHentHusstandsmedlemmerResponseTestPerioder() = HusstandsmedlemmerDto( + immutableListOf( + Husstand( + gyldigFraOgMed = LocalDate.parse("2011-01-01"), + gyldigTilOgMed = LocalDate.parse("2011-10-01"), + adressenavn = "adressenavn1", + husnummer = "husnummer1", + husbokstav = "husbokstav1", + bruksenhetsnummer = "bruksenhetsnummer1", + postnummer = "postnr1", + bydelsnummer = "bydelsnummer1", + kommunenummer = "kommunenummer1", + matrikkelId = 12345, + immutableListOf( + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2011-01-01"), + gyldigTilOgMed = LocalDate.parse("2011-02-01"), + personId = Personident("111"), + navn = "fornavn1 mellomnavn1 etternavn1", + fødselsdato = LocalDate.parse("2001-04-17"), + ), + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2011-05-17"), + gyldigTilOgMed = LocalDate.parse("2018-01-01"), + personId = Personident("111"), + navn = "fornavn1 mellomnavn1 etternavn1", + fødselsdato = LocalDate.parse("2001-04-17"), + ), + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2011-01-01"), + gyldigTilOgMed = LocalDate.parse("2011-12-01"), + personId = Personident("333"), + navn = "fornavn3 mellomnavn3 etternavn3", + fødselsdato = LocalDate.parse("2001-04-17"), + ), + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2011-05-01"), + gyldigTilOgMed = LocalDate.parse("2011-06-01"), + personId = Personident("444"), + navn = "fornavn4 mellomnavn4 etternavn4", + fødselsdato = LocalDate.parse("1974-02-01"), + ), + ), + ), + Husstand( + gyldigFraOgMed = LocalDate.parse("2011-10-01"), + gyldigTilOgMed = null, + adressenavn = "adressenavn2", + husnummer = "husnummer2", + husbokstav = "husbokstav2", + bruksenhetsnummer = "bruksenhetsnummer2", + postnummer = "postnr2", + bydelsnummer = "bydelsnummer2", + kommunenummer = "kommunenummer2", + matrikkelId = 54321, + immutableListOf( + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2018-01-01"), + gyldigTilOgMed = LocalDate.parse("2021-04-17"), + personId = Personident("111"), + navn = "fornavn1 mellomnavn1 etternavn1", + fødselsdato = LocalDate.parse("2001-04-17"), + dødsdato = null, + ), + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2022-04-17"), + gyldigTilOgMed = null, + personId = Personident("111"), + navn = "fornavn1 mellomnavn1 etternavn1", + fødselsdato = LocalDate.parse("2001-04-17"), + dødsdato = null, + ), + Husstandsmedlem( + gyldigFraOgMed = LocalDate.parse("2020-01-01"), + gyldigTilOgMed = null, + personId = Personident("555"), + navn = "fornavn5 mellomnavn5 etternavn5", + fødselsdato = LocalDate.parse("1985-07-17"), + dødsdato = null, + ), + ), + ), + ), + ) + fun byggHentSivilstandResponse() = SivilstandPdlHistorikkDto( immutableListOf( SivilstandPdlDto( diff --git a/src/test/kotlin/no/nav/bidrag/grunnlag/service/OppdaterGrunnlagspakkeServiceTest.kt b/src/test/kotlin/no/nav/bidrag/grunnlag/service/OppdaterGrunnlagspakkeServiceTest.kt index 3d02fc0a..87c54890 100644 --- a/src/test/kotlin/no/nav/bidrag/grunnlag/service/OppdaterGrunnlagspakkeServiceTest.kt +++ b/src/test/kotlin/no/nav/bidrag/grunnlag/service/OppdaterGrunnlagspakkeServiceTest.kt @@ -359,11 +359,6 @@ class OppdaterGrunnlagspakkeServiceTest { @Test fun `Skal oppdatere grunnlagspakke med egne barn i husstanden fra PDL via bidrag-person`() { - Mockito.`when`(persistenceServiceMock.opprettRelatertPerson(GrunnlagspakkeServiceMockTest.MockitoHelper.capture(relatertPersonBoCaptor))) - .thenReturn( - TestUtil.byggEgetBarnIHusstanden(), - ) - Mockito.`when`( bidragPersonConsumerMock.hentForelderBarnRelasjon( GrunnlagspakkeServiceMockTest.MockitoHelper.any( @@ -391,6 +386,11 @@ class OppdaterGrunnlagspakkeServiceTest { ) .thenReturn(RestResponse.Success(TestUtil.byggHentHusstandsmedlemmerResponse())) + Mockito.`when`(persistenceServiceMock.opprettRelatertPerson(GrunnlagspakkeServiceMockTest.MockitoHelper.capture(relatertPersonBoCaptor))) + .thenReturn( + TestUtil.byggEgetBarnIHusstanden(), + ) + val grunnlagspakkeIdOpprettet = TestUtil.byggGrunnlagspakke().grunnlagspakkeId val oppdatertGrunnlagspakke = oppdaterGrunnlagspakkeService.oppdaterGrunnlagspakke( grunnlagspakkeIdOpprettet, @@ -408,7 +408,7 @@ class OppdaterGrunnlagspakkeServiceTest { { Assertions.assertThat(oppdatertGrunnlagspakke).isNotNull() }, // sjekk relatertPersonBo - { Assertions.assertThat(relatertPersonListe.size).isEqualTo(8) }, + { Assertions.assertThat(relatertPersonListe.size).isEqualTo(5) }, { Assertions.assertThat(relatertPersonListe[0]?.partPersonId).isEqualTo("12345678910") }, { Assertions.assertThat(relatertPersonListe[0]?.relatertPersonPersonId).isEqualTo("111") }, { Assertions.assertThat(relatertPersonListe[0]?.aktiv).isTrue() }, @@ -431,10 +431,6 @@ class OppdaterGrunnlagspakkeServiceTest { Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagTypeResponsListe[0].status) .isEqualTo(GrunnlagRequestStatus.HENTET) }, - { - Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagTypeResponsListe[0].statusMelding) - .isEqualTo("Antall husstandsmedlemmer funnet: 6") - }, ) } @@ -470,7 +466,7 @@ class OppdaterGrunnlagspakkeServiceTest { ), ), ) - .thenReturn(RestResponse.Success(TestUtil.byggHentHusstandsmedlemmerResponse())) + .thenReturn(RestResponse.Success(TestUtil.byggHentHusstandsmedlemmerResponseTestPerioder())) val grunnlagspakkeIdOpprettet = TestUtil.byggGrunnlagspakke().grunnlagspakkeId val oppdatertGrunnlagspakke = oppdaterGrunnlagspakkeService.oppdaterGrunnlagspakke( @@ -491,35 +487,16 @@ class OppdaterGrunnlagspakkeServiceTest { { Assertions.assertThat(husstandsmedlemListe?.get(0)?.partPersonId).isEqualTo("12345678910") }, { Assertions.assertThat(husstandsmedlemListe?.get(0)?.relatertPersonPersonId).isEqualTo("111") }, { Assertions.assertThat(husstandsmedlemListe?.get(0)?.navn).isEqualTo("fornavn1 mellomnavn1 etternavn1") }, - { Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-01-01")) }, - { Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2011-02-01")) }, + { Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-05-17")) }, + { Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2021-04-17")) }, { Assertions.assertThat(husstandsmedlemListe?.get(0)?.hentetTidspunkt).isNotNull() }, - { Assertions.assertThat(husstandsmedlemListe?.get(1)?.partPersonId).isEqualTo("12345678910") }, - { Assertions.assertThat(husstandsmedlemListe?.get(1)?.relatertPersonPersonId).isEqualTo("111") }, - { Assertions.assertThat(husstandsmedlemListe?.get(1)?.navn).isEqualTo("fornavn1 mellomnavn1 etternavn1") }, - { Assertions.assertThat(husstandsmedlemListe?.get(1)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-05-17")) }, + { Assertions.assertThat(husstandsmedlemListe?.get(1)?.relatertPersonPersonId).isEqualTo("555") }, + { Assertions.assertThat(husstandsmedlemListe?.get(1)?.navn).isEqualTo("fornavn5 mellomnavn5 etternavn5") }, + { Assertions.assertThat(husstandsmedlemListe?.get(1)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2020-01-01")) }, { Assertions.assertThat(husstandsmedlemListe?.get(1)?.husstandsmedlemPeriodeTil).isNull() }, { Assertions.assertThat(husstandsmedlemListe?.get(1)?.hentetTidspunkt).isNotNull() }, - { Assertions.assertThat(husstandsmedlemListe?.get(2)?.relatertPersonPersonId).isEqualTo("333") }, - { Assertions.assertThat(husstandsmedlemListe?.get(2)?.navn).isEqualTo("fornavn3 mellomnavn3 etternavn3") }, - { Assertions.assertThat(husstandsmedlemListe?.get(2)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-01-01")) }, - { Assertions.assertThat(husstandsmedlemListe?.get(2)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2011-12-01")) }, - { Assertions.assertThat(husstandsmedlemListe?.get(2)?.hentetTidspunkt).isNotNull() }, - - { Assertions.assertThat(husstandsmedlemListe?.get(3)?.relatertPersonPersonId).isEqualTo("444") }, - { Assertions.assertThat(husstandsmedlemListe?.get(3)?.navn).isEqualTo("fornavn4 mellomnavn4 etternavn4") }, - { Assertions.assertThat(husstandsmedlemListe?.get(3)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-05-01")) }, - { Assertions.assertThat(husstandsmedlemListe?.get(3)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2011-06-01")) }, - { Assertions.assertThat(husstandsmedlemListe?.get(3)?.hentetTidspunkt).isNotNull() }, - - { Assertions.assertThat(husstandsmedlemListe?.get(4)?.relatertPersonPersonId).isEqualTo("555") }, - { Assertions.assertThat(husstandsmedlemListe?.get(4)?.navn).isEqualTo("fornavn5 mellomnavn5 etternavn5") }, - { Assertions.assertThat(husstandsmedlemListe?.get(4)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2020-01-01")) }, - { Assertions.assertThat(husstandsmedlemListe?.get(4)?.husstandsmedlemPeriodeTil).isNull() }, - { Assertions.assertThat(husstandsmedlemListe?.get(4)?.hentetTidspunkt).isNotNull() }, - // sjekk oppdatertGrunnlagspakke { Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagspakkeId).isEqualTo(grunnlagspakkeIdOpprettet) }, { Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagTypeResponsListe.size).isEqualTo(1) },