Skip to content

Commit

Permalink
Få inn riktige barn i avslag (#4132)
Browse files Browse the repository at this point in the history
### 💰 Hva skal gjøres, og hvorfor?


[Feil](https://sentry.gc.nav.no/organizations/nav/issues/518451/?environment=prod&query=is:unresolved+event.timestamp:%3E2023-10-25T11:40:00+02:00&statsPeriod=14d)

Det er vanskelig å vite hvilken periode vi skal se på når vi får et
generelt avslag for søker. Tar derfor med alle barna på behandlingen i
begrunnelsen når det er generelt avslag for søker.

### ✅ Checklist
_Har du husket alle punktene i listen?_
- [x] Jeg har testet mine endringer i henhold til akseptansekriteriene
🕵️
- [ ] Jeg har config- eller sql-endringer. I så fall, husk manuell
deploy til miljø for å verifisere endringene.
- [x] Jeg har skrevet tester
  • Loading branch information
halvorbmundal authored Oct 26, 2023
1 parent 26723c1 commit 0e61e48
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 20,285 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,8 @@ fun ISanityBegrunnelse.hentBarnasFødselsdatoerForBegrunnelse(
val barnMedEksplisitteAvslag =
begrunnelsesGrunnlagPerPerson.hentPersonerMedAvslagIPeriode().filter { it.type == PersonType.BARN }

val barnPåBehandlingen = grunnlag.behandlingsGrunnlagForVedtaksperioder.persongrunnlag.barna

val barnMedOppfylteVilkår = hentBarnMedOppfylteVilkår(begrunnelsesGrunnlagPerPerson)
val barnMedUtbetalingIForrigeperiode =
hentPersonerMedAndelIForrigePeriode(begrunnelsesGrunnlagPerPerson).filter { it.type == PersonType.BARN }
Expand All @@ -249,10 +251,18 @@ fun ISanityBegrunnelse.hentBarnasFødselsdatoerForBegrunnelse(

gjelderSøker && !this.gjelderEtterEndretUtbetaling && !this.gjelderEndretutbetaling -> {
when (this.periodeResultat) {
SanityPeriodeResultat.IKKE_INNVILGET ->
(barnMedUtbetalingIForrigeperiode + barnMedOppfylteVilkår + barnMedEksplisitteAvslag).toSet()
.map { it.fødselsdato } +
SanityPeriodeResultat.IKKE_INNVILGET -> {
val erGenereltAvslag = erGenereltAvslagPåSøker(begrunnelsesGrunnlagPerPerson, grunnlag)

val relevanteBarn = if (erGenereltAvslag) {
barnPåBehandlingen
} else {
(barnMedUtbetalingIForrigeperiode + barnMedOppfylteVilkår + barnMedEksplisitteAvslag).toSet()
}

relevanteBarn.map { it.fødselsdato } +
uregistrerteBarnPåBehandlingen.mapNotNull { it.fødselsdato }
}

else -> (barnMedUtbetaling + barnPåBegrunnelse).toSet().map { it.fødselsdato }
}
Expand All @@ -264,6 +274,21 @@ fun ISanityBegrunnelse.hentBarnasFødselsdatoerForBegrunnelse(
}
}

private fun ISanityBegrunnelse.erGenereltAvslagPåSøker(
begrunnelsesGrunnlagPerPerson: Map<Person, IBegrunnelseGrunnlagForPeriode>,
grunnlag: GrunnlagForBegrunnelse,
): Boolean {
val explisitteAvslagsvilkårForSøker =
begrunnelsesGrunnlagPerPerson[grunnlag.behandlingsGrunnlagForVedtaksperioder.persongrunnlag.søker]
?.dennePerioden?.eksplisitteAvslagForPerson ?: emptyList()

return explisitteAvslagsvilkårForSøker.any {
this.begrunnelseTypeForPerson == VedtakBegrunnelseType.AVSLAG &&
it.vilkårType in this.vilkår &&
it.fom == null && it.tom == null
}
}

private fun hentBarnMedOppfylteVilkår(begrunnelsesGrunnlagPerPerson: Map<Person, IBegrunnelseGrunnlagForPeriode>) =
begrunnelsesGrunnlagPerPerson.filterKeys { it.type == PersonType.BARN }
.filter { it.value.dennePerioden.vilkårResultater.erOppfyltForBarn() }
Expand Down

Large diffs are not rendered by default.

Loading

0 comments on commit 0e61e48

Please sign in to comment.