Skip to content

Commit

Permalink
EY-4790 Kopiere avtale med trygdetid, hvis finnes (#6530)
Browse files Browse the repository at this point in the history
  • Loading branch information
Watercolours authored Dec 4, 2024
1 parent 7f12dcd commit 352f43a
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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<Trygdetid>,
Expand Down Expand Up @@ -886,6 +908,9 @@ class TrygdetidServiceImpl(
brukerTokenInfo,
)
}

kopierAvtale(behandlingId, kildeBehandlingId)

hentTrygdetiderIBehandling(behandlingId, brukerTokenInfo)
.map { it.toDto() }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<TrygdetidAvtale>
private var kriterier: List<TrygdetidAvtaleKriteria>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,18 @@ 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),
behandlingKlient = behandlingKlient,
grunnlagKlient = grunnlagKlient,
beregnTrygdetidService = TrygdetidBeregningService,
pesysKlient = PesysKlientImpl(config, httpClient()),
avtaleService = avtaleService,
)
private val avtaleRepository = AvtaleRepository(dataSource)
val avtaleService = AvtaleService(avtaleRepository)
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -53,6 +58,7 @@ internal class TrygdetidServiceIntegrationTest(
private val grunnlagKlient: GrunnlagKlient = mockk<GrunnlagKlient>()

private val behandlingKlient = mockk<BehandlingKlient>()
private val avtaleService = mockk<AvtaleService>()

@BeforeAll
fun beforeAll() {
Expand All @@ -65,6 +71,7 @@ internal class TrygdetidServiceIntegrationTest(
grunnlagKlient,
TrygdetidBeregningService,
mockk<PesysKlient>(),
avtaleService,
)
}

Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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<Opplysningsgrunnlag> {
val foedselsdato = grunnlagTestData.avdoede.first().foedselsdato!!
val doedsdato = grunnlagTestData.avdoede.first().doedsdato!!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -68,13 +69,16 @@ internal class TrygdetidServiceTest {
private val behandlingKlient: BehandlingKlient = mockk()
private val grunnlagKlient: GrunnlagKlient = mockk()
private val beregningService: TrygdetidBeregningService = spyk(TrygdetidBeregningService)
private val avtaleService = mockk<AvtaleService>()

private val service: TrygdetidService =
TrygdetidServiceImpl(
repository,
behandlingKlient,
grunnlagKlient,
beregningService,
mockk<PesysKlient>(),
avtaleService,
)

@BeforeEach
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -1172,6 +1178,8 @@ internal class TrygdetidServiceTest {
verify {
regulering.id
regulering.sak

avtaleService.hentAvtaleForBehandling(forrigeBehandlingId)
}
}

Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -1251,6 +1261,8 @@ internal class TrygdetidServiceTest {
verify {
revurdering.id
revurdering.sak

avtaleService.hentAvtaleForBehandling(forrigeBehandlingId)
}
}

Expand Down

0 comments on commit 352f43a

Please sign in to comment.