Skip to content

Commit

Permalink
Legg til antallbarn basert på barn med utbetaling i brevperiode (#4007)
Browse files Browse the repository at this point in the history
https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-15412

Løser foreløpig dette for den nye løsningen som kommer senere i løpet.
Tenker det er greit da dette ikke er prioritert til lansering.
  • Loading branch information
UyQuangNguyen authored Sep 26, 2023
1 parent 6c9da78 commit b4d4f76
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import no.nav.familie.ba.sak.kjerne.vedtak.begrunnelser.tilBrevTekst
import no.nav.familie.ba.sak.kjerne.vedtak.domene.BegrunnelseData
import no.nav.familie.ba.sak.kjerne.vedtak.domene.VedtaksperiodeMedBegrunnelser
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.IBegrunnelseGrunnlagForPeriode
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.finnBegrunnelseGrunnlagPerPerson
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.hentGyldigeBegrunnelserPerPerson
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.AndelForVedtaksperiode
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtaksperiodeProdusent.BehandlingsGrunnlagForVedtaksperioder
Expand All @@ -40,14 +39,13 @@ data class GrunnlagForBegrunnelse(
fun Standardbegrunnelse.lagBrevBegrunnelse(
vedtaksperiode: VedtaksperiodeMedBegrunnelser,
grunnlag: GrunnlagForBegrunnelse,
begrunnelsesGrunnlagPerPerson: Map<Person, IBegrunnelseGrunnlagForPeriode>,
): BegrunnelseData {
val sanityBegrunnelse = hentSanityBegrunnelse(grunnlag)

val personerGjeldeneForBegrunnelse = vedtaksperiode.hentGyldigeBegrunnelserPerPerson(grunnlag)
.mapNotNull { (person, begrunnelserPåPerson) -> person.takeIf { this in begrunnelserPåPerson } }

val begrunnelsesGrunnlagPerPerson = vedtaksperiode.finnBegrunnelseGrunnlagPerPerson(grunnlag)

val gjelderSøker = gjelderBegrunnelseSøker(personerGjeldeneForBegrunnelse)
val barnasFødselsdatoer = sanityBegrunnelse.hentBarnasFødselsdatoerForBegrunnelse(
grunnlag = grunnlag,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,20 @@ import no.nav.familie.ba.sak.kjerne.vedtak.domene.EØSBegrunnelseData
import no.nav.familie.ba.sak.kjerne.vedtak.domene.EØSBegrunnelseDataMedKompetanse
import no.nav.familie.ba.sak.kjerne.vedtak.domene.EØSBegrunnelseDataUtenKompetanse
import no.nav.familie.ba.sak.kjerne.vedtak.domene.VedtaksperiodeMedBegrunnelser
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.finnBegrunnelseGrunnlagPerPerson
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.IBegrunnelseGrunnlagForPeriode
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.hentGyldigeBegrunnelserPerPerson
import java.time.LocalDate

fun EØSStandardbegrunnelse.tilBrevBegrunnelse(
fun EØSStandardbegrunnelse.lagBrevBegrunnelse(
vedtaksperiode: VedtaksperiodeMedBegrunnelser,
grunnlag: GrunnlagForBegrunnelse,
begrunnelsesGrunnlagPerPerson: Map<Person, IBegrunnelseGrunnlagForPeriode>,
landkoder: Map<String, String>,
): List<EØSBegrunnelseData> {
val sanityBegrunnelse = hentSanityBegrunnelse(grunnlag)
val personerGjeldeneForBegrunnelse = vedtaksperiode.hentGyldigeBegrunnelserPerPerson(
grunnlag,
).mapNotNull { (person, begrunnelserPåPerson) -> person.takeIf { this in begrunnelserPåPerson } }

val begrunnelsesGrunnlagPerPerson = vedtaksperiode.finnBegrunnelseGrunnlagPerPerson(grunnlag)

val periodegrunnlagForPersonerIBegrunnelse =
begrunnelsesGrunnlagPerPerson.filter { (person, _) -> person in personerGjeldeneForBegrunnelse }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,72 @@
package no.nav.familie.ba.sak.kjerne.brev.brevPeriodeProdusent

import lagBrevBegrunnelse
import no.nav.familie.ba.sak.kjerne.brev.brevBegrunnelseProdusent.GrunnlagForBegrunnelse
import no.nav.familie.ba.sak.kjerne.brev.brevBegrunnelseProdusent.lagBrevBegrunnelse
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.BrevPeriodeType
import no.nav.familie.ba.sak.kjerne.brev.domene.maler.brevperioder.BrevPeriode
import no.nav.familie.ba.sak.kjerne.endretutbetaling.domene.Årsak
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.Person
import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonType
import no.nav.familie.ba.sak.kjerne.vedtak.domene.BrevBegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.domene.FritekstBegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.domene.VedtaksperiodeMedBegrunnelser
import tilBrevBegrunnelse
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.IBegrunnelseGrunnlagForPeriode
import no.nav.familie.ba.sak.kjerne.vedtak.vedtaksperiode.vedtakBegrunnelseProdusent.finnBegrunnelseGrunnlagPerPerson

fun VedtaksperiodeMedBegrunnelser.lagBrevPeriode(
grunnlagForBegrunnelse: GrunnlagForBegrunnelse,
landkoder: Map<String, String>,
): BrevPeriode? {
val begrunnelsesGrunnlagPerPerson = this.finnBegrunnelseGrunnlagPerPerson(grunnlagForBegrunnelse)

val standardbegrunnelser =
this.begrunnelser.map { it.standardbegrunnelse.lagBrevBegrunnelse(this, grunnlagForBegrunnelse) }
this.begrunnelser.map {
it.standardbegrunnelse.lagBrevBegrunnelse(
this,
grunnlagForBegrunnelse,
begrunnelsesGrunnlagPerPerson,
)
}

val eøsBegrunnelser =
this.eøsBegrunnelser.flatMap { it.begrunnelse.tilBrevBegrunnelse(this, grunnlagForBegrunnelse, landkoder) }
this.eøsBegrunnelser.flatMap {
it.begrunnelse.lagBrevBegrunnelse(
this,
grunnlagForBegrunnelse,
begrunnelsesGrunnlagPerPerson,
landkoder,
)
}

val fritekster = this.fritekster.map { FritekstBegrunnelse(it.fritekst) }

val barnMedUtbetaling = begrunnelsesGrunnlagPerPerson.finnBarnMedUtbetaling()

val begrunnelserOgFritekster =
standardbegrunnelser + eøsBegrunnelser + fritekster

if (begrunnelserOgFritekster.isEmpty()) return null

return this.byggBrevPeriode(
begrunnelserOgFritekster = begrunnelserOgFritekster,
antallBarn = barnMedUtbetaling.size.toString(),
)
}

private fun Map<Person, IBegrunnelseGrunnlagForPeriode>.finnBarnMedUtbetaling() =
filterKeys { it.type == PersonType.BARN }
.filterValues {
val endretUtbetalingAndelIPeriodeErDeltBosted =
it.dennePerioden.endretUtbetalingAndel?.årsak == Årsak.DELT_BOSTED
val utbetalingssumIPeriode = it.dennePerioden.andeler.sumOf { andel -> andel.kalkulertUtbetalingsbeløp }

utbetalingssumIPeriode != 0 || endretUtbetalingAndelIPeriodeErDeltBosted
}

private fun VedtaksperiodeMedBegrunnelser.byggBrevPeriode(
begrunnelserOgFritekster: List<BrevBegrunnelse>,
antallBarn: String,
): BrevPeriode {
return BrevPeriode(

Expand All @@ -39,7 +75,7 @@ private fun VedtaksperiodeMedBegrunnelser.byggBrevPeriode(
belop = "",
begrunnelser = begrunnelserOgFritekster,
brevPeriodeType = BrevPeriodeType.INNVILGELSE,
antallBarn = "",
antallBarn = antallBarn,
barnasFodselsdager = "",
antallBarnMedUtbetaling = "",
antallBarnMedNullutbetaling = "",
Expand Down

0 comments on commit b4d4f76

Please sign in to comment.