From 2d20e237de8c5b43207c18733e9cfbe2b77deeb8 Mon Sep 17 00:00:00 2001 From: tnarland <47184872+tnarland@users.noreply.github.com> Date: Thu, 25 Jan 2024 10:22:10 +0100 Subject: [PATCH] =?UTF-8?q?Barnetrygd=20til=20pensjon:=20Diverse=20robustg?= =?UTF-8?q?j=C3=B8ringer=20(#444)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fikser 3 tilfeller med 500-feil og 2 tilfeller med tom-dato før fom-dato --- .../familie/ba/infotrygd/model/dl1/Barn.kt | 2 +- .../ba/infotrygd/service/BarnetrygdService.kt | 20 ++++++++++++------- .../familie/ba/infotrygd/testutil/TestData.kt | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/no/nav/familie/ba/infotrygd/model/dl1/Barn.kt b/src/main/kotlin/no/nav/familie/ba/infotrygd/model/dl1/Barn.kt index d91ee30a..e655e7eb 100644 --- a/src/main/kotlin/no/nav/familie/ba/infotrygd/model/dl1/Barn.kt +++ b/src/main/kotlin/no/nav/familie/ba/infotrygd/model/dl1/Barn.kt @@ -21,7 +21,7 @@ data class Barn( @Column(name = "F_NR", columnDefinition = "VARCHAR2") @Convert(converter = ReversedFoedselNrConverter::class) - val fnr: FoedselsNr, + val fnr: FoedselsNr?, @Column(name = "TK_NR", columnDefinition = "VARCHAR2") val tkNr: String, diff --git a/src/main/kotlin/no/nav/familie/ba/infotrygd/service/BarnetrygdService.kt b/src/main/kotlin/no/nav/familie/ba/infotrygd/service/BarnetrygdService.kt index e27c1b71..55588194 100644 --- a/src/main/kotlin/no/nav/familie/ba/infotrygd/service/BarnetrygdService.kt +++ b/src/main/kotlin/no/nav/familie/ba/infotrygd/service/BarnetrygdService.kt @@ -162,7 +162,7 @@ class BarnetrygdService( if (!barn.isNullOrEmpty()) { val personerViaBarn = barnRepository.findBarnByFnrList(barn.map { FoedselsNr(it) }) - .map { it.fnr.asString } + .mapNotNull { it.fnr?.asString } personer.addAll(personerViaBarn) } return personer.map { person -> vedtakRepository.tellAntallÅpneSakerPåPerson(person) }.sum() @@ -185,7 +185,7 @@ class BarnetrygdService( // Sjekk om det finnes relaterte saker, dvs om barna finnes i andre stønader val barnetrygdFraRelaterteSaker = barnRepository.findBarnByFnrList(perioder.map { FoedselsNr(it.personIdent) }) .filter { it.fnr != brukerFnr && it.harGyldigStønadstype } - .map { it.fnr }.distinct() + .mapNotNull { it.fnr }.distinct() .mapNotNull { relatertBrukerFnr -> BarnetrygdTilPensjon( fnr = relatertBrukerFnr.asString, @@ -496,7 +496,8 @@ class BarnetrygdService( else -> YtelseTypeEkstern.ORDINÆR_BARNETRYGD }, stønadFom = utbetaling.fom()!!, - stønadTom = minOf(utbetalingTom, barnetsOpphørsdato), + stønadTom = minOf(utbetalingTom, barnetsOpphørsdato).takeUnless { it.isBefore(utbetaling.fom()) } + ?: maxOf(utbetalingTom, barnetsOpphørsdato), personIdent = barn.barnFnr.asString, delingsprosentYtelse = ytelseProsent(stønad, undervalg, fraDato.year), sakstypeEkstern = when (undervalg) { @@ -523,11 +524,16 @@ class BarnetrygdService( } private fun Barn.harDatoSomSamsvarer(stønad: TrunkertStønad): Boolean { - if (barnetrygdTom()?.isBefore(virkningFom()) == true) // tilhører en feilregistrert stønad - return false + try { + if (barnetrygdTom()?.isBefore(virkningFom()) == true) // tilhører en feilregistrert stønad + return false - return iverksatt().isSameOrBefore(stønad.iverksatt()) && - virkningFom().isSameOrBefore(stønad.virkningFom()) + return iverksatt().isSameOrBefore(stønad.iverksatt()) && + virkningFom().isSameOrBefore(stønad.virkningFom()) + } catch (e: DateTimeParseException) { + logger.warn("Klarte ikke parse dato på barn(id=$id), stønad(id=${stønad.id})") + return false + } } private fun TrunkertStønad.iverksatt() = DatoUtils.seqDatoTilYearMonth(iverksattFom)!! diff --git a/src/test/kotlin/no/nav/familie/ba/infotrygd/testutil/TestData.kt b/src/test/kotlin/no/nav/familie/ba/infotrygd/testutil/TestData.kt index 6e251fd1..023c51f9 100644 --- a/src/test/kotlin/no/nav/familie/ba/infotrygd/testutil/TestData.kt +++ b/src/test/kotlin/no/nav/familie/ba/infotrygd/testutil/TestData.kt @@ -61,7 +61,7 @@ object TestData { ): Barn { return Barn( id = nextId(), - fnr = stønad.fnr!!, + fnr = stønad.fnr, tkNr = stønad.tkNr, personKey = stønad.personKey, barnFnr = barnFnr,