From 18bad667dba7c78f4ca7a4c069b5cc40d828f1a9 Mon Sep 17 00:00:00 2001 From: charliemidtlyng Date: Wed, 11 Sep 2024 14:34:57 +0200 Subject: [PATCH] Skal summere kreditorposteringer ved simulering --- pom.xml | 2 +- .../simulering/SimuleringUtil.kt" | 9 ++++++- .../familie/ef/iverksett/DomainTestUtil.kt | 2 ++ .../simulering/SimuleringUtilKtTest.kt" | 26 +++++++++++++++++++ 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f308e5381..65fe0a7c5 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,7 @@ 2.0.20 2.6.0 3.20240806111424_fff2930 - 3.0_20240906070327_03089ba + 3.0_20240911135543_ae5a9ac 2.0_20240425094647_26b983d 2.0_20230214104704_706e9c0 2.0_20230214104704_706e9c0 diff --git "a/src/main/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtil.kt" "b/src/main/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtil.kt" index fcc8271f8..d07581ba5 100644 --- "a/src/main/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtil.kt" +++ "b/src/main/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtil.kt" @@ -46,6 +46,7 @@ fun lagSimuleringsoppsummering( tidSimuleringHentet = tidSimuleringHentet, tomSisteUtbetaling = tomSisteUtbetaling, sumManuellePosteringer = summerManuellePosteringer(detaljertSimuleringResultat), + sumKreditorPosteringer = summerKreditorPosteringer(detaljertSimuleringResultat), ) } @@ -53,7 +54,13 @@ fun summerManuellePosteringer(detaljertSimuleringResultat: DetaljertSimuleringRe detaljertSimuleringResultat.simuleringMottaker .flatMap { simuleringMottaker -> simuleringMottaker.simulertPostering } .filter { simulertPostering -> simulertPostering.fagOmrådeKode.gjelderManuellPostering() } - .fold(ZERO) { acc, simulertPostering -> acc + simulertPostering.beløp } + .sumOf ( SimulertPostering::beløp ) + +fun summerKreditorPosteringer(detaljertSimuleringResultat: DetaljertSimuleringResultat): BigDecimal = + detaljertSimuleringResultat.simuleringMottaker + .flatMap { simuleringMottaker -> simuleringMottaker.simulertPostering } + .filter { simulertPostering -> simulertPostering.gjelderKreditortrekk() } + .sumOf ( SimulertPostering::beløp ) fun grupperPosteringerEtterDato(mottakere: List): List = mottakere diff --git a/src/test/kotlin/no/nav/familie/ef/iverksett/DomainTestUtil.kt b/src/test/kotlin/no/nav/familie/ef/iverksett/DomainTestUtil.kt index 88546d5a8..87137cdbc 100644 --- a/src/test/kotlin/no/nav/familie/ef/iverksett/DomainTestUtil.kt +++ b/src/test/kotlin/no/nav/familie/ef/iverksett/DomainTestUtil.kt @@ -139,6 +139,7 @@ fun posteringer( posteringstype: PosteringType = PosteringType.YTELSE, betalingstype: BetalingType = if (beløp >= 0) BetalingType.DEBIT else BetalingType.KREDIT, fagOmrådeKode: FagOmrådeKode = FagOmrådeKode.ENSLIG_FORSØRGER_OVERGANGSSTØNAD, + klassekode: String = "EFOG" ): List = MutableList(antallMåneder) { index -> SimulertPostering( @@ -154,6 +155,7 @@ fun posteringer( .atEndOfMonth(), // Forfallsdato i bank (dagen går til brukeren). Det sendes til banken kanskje en uke i forveien utenInntrekk = false, + klassekode = klassekode ) // Brukes ikke for EF } diff --git "a/src/test/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtilKtTest.kt" "b/src/test/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtilKtTest.kt" index 698f1fa6a..e7448aa21 100644 --- "a/src/test/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtilKtTest.kt" +++ "b/src/test/kotlin/no/nav/familie/ef/iverksett/\303\270konomi/simulering/SimuleringUtilKtTest.kt" @@ -71,4 +71,30 @@ class SimuleringUtilKtTest { every { simuleringsResultat.simuleringMottaker } returns emptyList() assertThat(summerManuellePosteringer(simuleringsResultat)).isEqualTo(BigDecimal.ZERO) } + + @Test + fun `summerKreditorPosteringer skal returnere ZERO by default `() { + every { simuleringsResultat.simuleringMottaker } returns emptyList() + assertThat(summerKreditorPosteringer(simuleringsResultat)).isEqualTo(BigDecimal.ZERO) + } + + @Test + fun `summer flere kreditorposteringer`() { + val simulertePosteringer = + posteringer(klassekode = "KREDKRED", beløp = 1, antallMåneder = 3) + val simulertePosteringerAnnenKlassekode = + posteringer(klassekode = "KLASSEKODE", beløp = 2) + val simuleringsMottaker = + listOf( + SimuleringMottaker( + simulertPostering = simulertePosteringer + simulertePosteringerAnnenKlassekode, + mottakerType = MottakerType.BRUKER, + ), + ) + + every { simuleringsResultat.simuleringMottaker } returns simuleringsMottaker + + assertThat(summerKreditorPosteringer(simuleringsResultat)).isEqualTo(BigDecimal(3)) + } + }