From 352f43abcaa479d0a7dd9dd679a5e3374b6ac125 Mon Sep 17 00:00:00 2001 From: "Nicolas N." Date: Wed, 4 Dec 2024 09:15:46 +0100 Subject: [PATCH] EY-4790 Kopiere avtale med trygdetid, hvis finnes (#6530) --- .../main/kotlin/trygdetid/TrygdetidService.kt | 25 ++++++++++++++++ .../kotlin/trygdetid/avtale/AvtaleService.kt | 2 +- .../trygdetid/config/ApplicationContext.kt | 7 +++-- .../TrygdetidServiceIntegrationTest.kt | 30 +++++++++++++++++++ .../trygdetid/TrygdetidServiceTest.kt | 12 ++++++++ 5 files changed, 73 insertions(+), 3 deletions(-) diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt index 1725d0f5343..fb7a0024bdc 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/TrygdetidService.kt @@ -36,6 +36,7 @@ import no.nav.etterlatte.libs.common.trygdetid.TrygdetidDto import no.nav.etterlatte.libs.common.trygdetid.UKJENT_AVDOED import no.nav.etterlatte.libs.common.trygdetid.land.LandNormalisert import no.nav.etterlatte.libs.ktor.token.BrukerTokenInfo +import no.nav.etterlatte.trygdetid.avtale.AvtaleService import no.nav.etterlatte.trygdetid.klienter.BehandlingKlient import no.nav.etterlatte.trygdetid.klienter.GrunnlagKlient import no.nav.etterlatte.trygdetid.klienter.PesysKlient @@ -191,6 +192,7 @@ class TrygdetidServiceImpl( private val grunnlagKlient: GrunnlagKlient, private val beregnTrygdetidService: TrygdetidBeregningService, private val pesysKlient: PesysKlient, + private val avtaleService: AvtaleService, ) : TrygdetidService { private val logger = LoggerFactory.getLogger(this::class.java) @@ -440,12 +442,32 @@ class TrygdetidServiceImpl( logger.info("Kopierer trygdetid for behandling ${behandling.id} fra behandling $forrigeBehandlingId") + kopierAvtale(behandlingId, forrigeBehandlingId) + val forrigeTrygdetid = hentTrygdetiderIBehandling(forrigeBehandlingId, brukerTokenInfo) val eksisterendeTrygdetider = hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) return kopierSisteTrygdetidberegninger(behandling, forrigeTrygdetid, eksisterendeTrygdetider) } + private fun kopierAvtale( + behandlingId: UUID, + forrigeBehandlingId: UUID, + ) { + val avtale = + avtaleService + .hentAvtaleForBehandling(forrigeBehandlingId) + ?.copy(id = UUID.randomUUID(), behandlingId) + + if (avtale == null) { + logger.info("Fant ingen avtale på forrigeBehandling – hopper over kopiering av avtale") + } else { + logger.info("Kopierer avtale fra forrigeBehandling=$forrigeBehandlingId til nyBehandling=$behandlingId") + + avtaleService.opprettAvtale(avtale) + } + } + private fun kopierSisteTrygdetidberegninger( behandling: DetaljertBehandling, forrigeTrygdetider: List, @@ -886,6 +908,9 @@ class TrygdetidServiceImpl( brukerTokenInfo, ) } + + kopierAvtale(behandlingId, kildeBehandlingId) + hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo) .map { it.toDto() } } diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt index e58608f2da5..a4bcacef93d 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/avtale/AvtaleService.kt @@ -8,7 +8,7 @@ import no.nav.etterlatte.libs.common.trygdetid.avtale.TrygdetidAvtaleKriteria import java.util.UUID class AvtaleService( - val avtaleRepository: AvtaleRepository, + private val avtaleRepository: AvtaleRepository, ) { private var avtaler: List private var kriterier: List diff --git a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/config/ApplicationContext.kt b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/config/ApplicationContext.kt index e4beb3ee59f..d4a763dc9f9 100644 --- a/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/config/ApplicationContext.kt +++ b/apps/etterlatte-trygdetid/src/main/kotlin/trygdetid/config/ApplicationContext.kt @@ -25,7 +25,11 @@ class ApplicationContext { password = properties.dbPassword, ) private val grunnlagKlient = GrunnlagKlient(config, httpClient()) + private val avtaleRepository = AvtaleRepository(dataSource) + val behandlingKlient = BehandlingKlient(config, httpClient()) + val avtaleService = AvtaleService(avtaleRepository) + val trygdetidService = TrygdetidServiceImpl( TrygdetidRepository(dataSource), @@ -33,7 +37,6 @@ class ApplicationContext { grunnlagKlient = grunnlagKlient, beregnTrygdetidService = TrygdetidBeregningService, pesysKlient = PesysKlientImpl(config, httpClient()), + avtaleService = avtaleService, ) - private val avtaleRepository = AvtaleRepository(dataSource) - val avtaleService = AvtaleService(avtaleRepository) } diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt index 1cbc16a6879..04bd76d8f17 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceIntegrationTest.kt @@ -3,7 +3,10 @@ package no.nav.etterlatte.trygdetid import io.kotest.matchers.equals.shouldBeEqual import io.kotest.matchers.shouldBe import io.mockk.coEvery +import io.mockk.every +import io.mockk.justRun import io.mockk.mockk +import io.mockk.verify import kotlinx.coroutines.runBlocking import no.nav.etterlatte.behandling.randomSakId import no.nav.etterlatte.ktor.token.simpleSaksbehandler @@ -19,8 +22,10 @@ import no.nav.etterlatte.libs.common.trygdetid.GrunnlagOpplysningerDto import no.nav.etterlatte.libs.common.trygdetid.OpplysningerDifferanse import no.nav.etterlatte.libs.common.trygdetid.OpplysningsgrunnlagDto import no.nav.etterlatte.libs.common.trygdetid.UKJENT_AVDOED +import no.nav.etterlatte.libs.common.trygdetid.avtale.Trygdeavtale import no.nav.etterlatte.libs.testdata.grunnlag.GrunnlagTestData import no.nav.etterlatte.libs.testdata.grunnlag.kilde +import no.nav.etterlatte.trygdetid.avtale.AvtaleService import no.nav.etterlatte.trygdetid.klienter.BehandlingKlient import no.nav.etterlatte.trygdetid.klienter.GrunnlagKlient import no.nav.etterlatte.trygdetid.klienter.PesysKlient @@ -53,6 +58,7 @@ internal class TrygdetidServiceIntegrationTest( private val grunnlagKlient: GrunnlagKlient = mockk() private val behandlingKlient = mockk() + private val avtaleService = mockk() @BeforeAll fun beforeAll() { @@ -65,6 +71,7 @@ internal class TrygdetidServiceIntegrationTest( grunnlagKlient, TrygdetidBeregningService, mockk(), + avtaleService, ) } @@ -229,6 +236,8 @@ internal class TrygdetidServiceIntegrationTest( coEvery { behandlingKlient.kanOppdatereTrygdetid(behandlingId, saksbehandler) } returns true coEvery { behandlingKlient.settBehandlingStatusTrygdetidOppdatert(behandlingId, saksbehandler) } returns true + every { avtaleService.hentAvtaleForBehandling(any()) } returns opprettTrygdeavtale(kildeBehandlingId) + justRun { avtaleService.opprettAvtale(any()) } repository.opprettTrygdetid( trygdetid( @@ -266,8 +275,29 @@ internal class TrygdetidServiceIntegrationTest( this[0].periode.fra shouldBe LocalDate.of(2020, 5, 1) this[0].periode.til shouldBe LocalDate.of(2020, 7, 1) } + + verify(exactly = 1) { + avtaleService.hentAvtaleForBehandling(kildeBehandlingId) + avtaleService.opprettAvtale(any()) + } } + private fun opprettTrygdeavtale(behandlingId: UUID) = + Trygdeavtale( + behandlingId = behandlingId, + avtaleKode = "avtaleKode", + avtaleDatoKode = "avtaleDatoKode", + avtaleKriteriaKode = "avtaleKriteriaKode", + personKrets = null, + arbInntekt1G = null, + arbInntekt1GKommentar = "arbInntekt1GKommentar", + beregArt50 = null, + beregArt50Kommentar = "beregArt50Kommentar", + nordiskTrygdeAvtale = null, + nordiskTrygdeAvtaleKommentar = "nordiskTrygdeAvtaleKommentar", + kilde = Grunnlagsopplysning.Saksbehandler("ident", Tidspunkt.now()), + ) + private fun opplysningsgrunnlag(grunnlagTestData: GrunnlagTestData): List { val foedselsdato = grunnlagTestData.avdoede.first().foedselsdato!! val doedsdato = grunnlagTestData.avdoede.first().doedsdato!! diff --git a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt index 5c490cd71d6..377f658bb0c 100644 --- a/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt +++ b/apps/etterlatte-trygdetid/src/test/kotlin/no/nav/etterlatte/trygdetid/TrygdetidServiceTest.kt @@ -48,6 +48,7 @@ import no.nav.etterlatte.libs.testdata.grunnlag.AVDOED_FOEDSELSNUMMER import no.nav.etterlatte.libs.testdata.grunnlag.GrunnlagTestData import no.nav.etterlatte.libs.testdata.grunnlag.SOEKER_FOEDSELSNUMMER import no.nav.etterlatte.libs.testdata.grunnlag.eldreAvdoedTestopplysningerMap +import no.nav.etterlatte.trygdetid.avtale.AvtaleService import no.nav.etterlatte.trygdetid.klienter.BehandlingKlient import no.nav.etterlatte.trygdetid.klienter.GrunnlagKlient import no.nav.etterlatte.trygdetid.klienter.PesysKlient @@ -68,6 +69,8 @@ internal class TrygdetidServiceTest { private val behandlingKlient: BehandlingKlient = mockk() private val grunnlagKlient: GrunnlagKlient = mockk() private val beregningService: TrygdetidBeregningService = spyk(TrygdetidBeregningService) + private val avtaleService = mockk() + private val service: TrygdetidService = TrygdetidServiceImpl( repository, @@ -75,6 +78,7 @@ internal class TrygdetidServiceTest { grunnlagKlient, beregningService, mockk(), + avtaleService, ) @BeforeEach @@ -1142,6 +1146,8 @@ internal class TrygdetidServiceTest { every { repository.hentTrygdetiderForBehandling(behandlingId) } returns emptyList() every { repository.hentTrygdetiderForBehandling(forrigeBehandlingId) } returns listOf(forrigeTrygdetid) every { repository.opprettTrygdetid(any()) } answers { firstArg() } + every { avtaleService.hentAvtaleForBehandling(any()) } returns null + coEvery { grunnlagKlient.hentGrunnlag( forrigeBehandlingId, @@ -1172,6 +1178,8 @@ internal class TrygdetidServiceTest { verify { regulering.id regulering.sak + + avtaleService.hentAvtaleForBehandling(forrigeBehandlingId) } } @@ -1221,6 +1229,8 @@ internal class TrygdetidServiceTest { every { repository.hentTrygdetiderForBehandling(behandlingId) } returns listOf(eksisterendeTrygdetid) every { repository.hentTrygdetiderForBehandling(forrigeBehandlingId) } returns listOf(forrigeTrygdetid) every { repository.opprettTrygdetid(any()) } answers { firstArg() } + every { avtaleService.hentAvtaleForBehandling(any()) } returns null + coEvery { grunnlagKlient.hentGrunnlag( behandlingId, @@ -1251,6 +1261,8 @@ internal class TrygdetidServiceTest { verify { revurdering.id revurdering.sak + + avtaleService.hentAvtaleForBehandling(forrigeBehandlingId) } }