Skip to content

Commit

Permalink
Legg til logikk for nye brevperiode typer (#3986)
Browse files Browse the repository at this point in the history
Favrokort:
https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-15513

Vi oppretter 4 nye brevperiodetyper som erstatter de gamle.
Vi sender også mer data nå til familie-sanity-brev, slik at vi kan
skille mellom institusjon og du istedenfor å ha egen brevperiodetype for
hver av dem.

PR i familie-sanity-brev:
navikt/familie-sanity-brev#442
Nye brevperioder:
https://familie-brev.sanity.studio/ba-brev/desk/periode;523a9377-af63-4192-892c-ea31706da7ee
  • Loading branch information
UyQuangNguyen authored Sep 21, 2023
1 parent e0963a1 commit c4e9cc5
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import no.nav.familie.ba.sak.common.erSenereEnnInneværendeMåned
import no.nav.familie.ba.sak.common.førsteDagINesteMåned
import no.nav.familie.ba.sak.common.tilDagMånedÅr
import no.nav.familie.ba.sak.common.tilKortString
import no.nav.familie.ba.sak.common.tilMånedÅr
import no.nav.familie.ba.sak.config.FeatureToggleConfig
import no.nav.familie.ba.sak.config.FeatureToggleService
import no.nav.familie.ba.sak.kjerne.brev.domene.BrevBegrunnelseGrunnlagMedPersoner
import no.nav.familie.ba.sak.kjerne.brev.domene.MinimertKompetanse
Expand Down Expand Up @@ -59,19 +61,11 @@ class BrevPeriodeGenerator(

if (begrunnelserOgFritekster.isEmpty()) return null

val tomDato =
if (minimertVedtaksperiode.tom?.erSenereEnnInneværendeMåned() == false) {
minimertVedtaksperiode.tom.tilDagMånedÅr()
} else {
null
}

val identerIBegrunnelene = begrunnelseGrunnlagMedPersoner
.filter { it.vedtakBegrunnelseType.erInnvilget() }
.flatMap { it.personIdenter }

return byggBrevPeriode(
tomDato = tomDato,
begrunnelserOgFritekster = begrunnelserOgFritekster,
identerIBegrunnelene = identerIBegrunnelene,
)
Expand Down Expand Up @@ -202,14 +196,22 @@ class BrevPeriodeGenerator(
}

private fun byggBrevPeriode(
tomDato: String?,
begrunnelserOgFritekster: List<BrevBegrunnelse>,
identerIBegrunnelene: List<String>,
): BrevPeriode {
val (utbetalingerBarn, nullutbetalingerBarn) = minimertVedtaksperiode.minimerteUtbetalingsperiodeDetaljer
.filter { it.person.type == PersonType.BARN }
.partition { it.utbetaltPerMnd != 0 }

val skalBrukeNyBegrunnelseLogikk = featureToggleService.isEnabled(FeatureToggleConfig.BEGRUNNELSER_NY)

val tomDato =
if (minimertVedtaksperiode.tom?.erSenereEnnInneværendeMåned() == false) {
if (skalBrukeNyBegrunnelseLogikk) minimertVedtaksperiode.tom.tilMånedÅr() else minimertVedtaksperiode.tom.tilDagMånedÅr()
} else {
null
}

val barnMedUtbetaling = utbetalingerBarn.map { it.person }
val barnMedNullutbetaling = nullutbetalingerBarn.map { it.person }

Expand All @@ -225,11 +227,19 @@ class BrevPeriodeGenerator(
}

val utbetalingsbeløp = minimertVedtaksperiode.minimerteUtbetalingsperiodeDetaljer.totaltUtbetalt()
val brevPeriodeType = hentPeriodetype(minimertVedtaksperiode.fom, barnMedUtbetaling, utbetalingsbeløp)
val brevPeriodeType = if (skalBrukeNyBegrunnelseLogikk) {
hentPeriodeType(utbetalingsbeløp, minimertVedtaksperiode.fom)
} else {
hentPeriodeTypeGammel(utbetalingsbeløp, minimertVedtaksperiode.fom, barnMedUtbetaling)
}

val duEllerInstitusjonen = hentDuEllerInstitusjonenTekst(brevPeriodeType)

return BrevPeriode(

fom = this.hentFomTekst(),
fom = if (skalBrukeNyBegrunnelseLogikk) this.hentFomTekst() else this.hentFomTekstGammel(),
tom = when {
minimertVedtaksperiode.type == Vedtaksperiodetype.AVSLAG && skalBrukeNyBegrunnelseLogikk -> "til og med $tomDato"
minimertVedtaksperiode.type == Vedtaksperiodetype.FORTSATT_INNVILGET -> ""
tomDato.isNullOrBlank() -> ""
brevPeriodeType == BrevPeriodeType.INNVILGELSE_INGEN_UTBETALING -> " til $tomDato"
Expand All @@ -244,10 +254,14 @@ class BrevPeriodeGenerator(
antallBarnMedNullutbetaling = barnMedNullutbetaling.size.toString(),
fodselsdagerBarnMedUtbetaling = barnMedUtbetaling.tilBarnasFødselsdatoer(),
fodselsdagerBarnMedNullutbetaling = barnMedNullutbetaling.tilBarnasFødselsdatoer(),
duEllerInstitusjonen = duEllerInstitusjonen,
)
}

private fun hentFomTekst(): String = when (minimertVedtaksperiode.type) {
private fun hentFomTekst(): String = minimertVedtaksperiode.fom!!.tilMånedÅr()

@Deprecated("Erstattes av hentFomTekst når nye begrunnelse logikk går live")
private fun hentFomTekstGammel(): String = when (minimertVedtaksperiode.type) {
Vedtaksperiodetype.FORTSATT_INNVILGET -> hentFomtekstFortsattInnvilget(
brevMålform,
minimertVedtaksperiode.fom,
Expand All @@ -261,10 +275,45 @@ class BrevPeriodeGenerator(
Vedtaksperiodetype.ENDRET_UTBETALING -> throw Feil("Endret utbetaling skal ikke benyttes lenger.")
}

private fun hentPeriodetype(
private fun hentDuEllerInstitusjonenTekst(brevPeriodeType: BrevPeriodeType): String =
when (restBehandlingsgrunnlagForBrev.fagsakType) {
FagsakType.INSTITUSJON -> {
when (brevPeriodeType) {
BrevPeriodeType.UTBETALING, BrevPeriodeType.INGEN_UTBETALING -> "institusjonen"
else -> "Institusjonen"
}
}

FagsakType.NORMAL, FagsakType.BARN_ENSLIG_MINDREÅRIG -> {
when (brevPeriodeType) {
BrevPeriodeType.UTBETALING, BrevPeriodeType.INGEN_UTBETALING -> "du"
else -> "Du"
}
}
}

private fun hentPeriodeType(
utbetalingsbeløp: Int,
fom: LocalDate?,
barnMedUtbetaling: List<MinimertRestPerson>,
): BrevPeriodeType =
when (minimertVedtaksperiode.type) {
Vedtaksperiodetype.FORTSATT_INNVILGET -> BrevPeriodeType.FORTSATT_INNVILGET_NY
Vedtaksperiodetype.UTBETALING -> when {
utbetalingsbeløp == 0 -> BrevPeriodeType.INGEN_UTBETALING
else -> BrevPeriodeType.UTBETALING
}

Vedtaksperiodetype.AVSLAG -> if (fom != null) BrevPeriodeType.INGEN_UTBETALING else BrevPeriodeType.INGEN_UTBETALING_UTEN_PERIODE
Vedtaksperiodetype.OPPHØR -> BrevPeriodeType.INGEN_UTBETALING
Vedtaksperiodetype.UTBETALING_MED_REDUKSJON_FRA_SIST_IVERKSATTE_BEHANDLING -> BrevPeriodeType.UTBETALING
Vedtaksperiodetype.ENDRET_UTBETALING -> throw Feil("Endret utbetaling skal ikke benyttes lenger.")
}

@Deprecated("Erstattes av hentPeriodeType etter at ny begrunnelse logikk er produksjonsatt")
private fun hentPeriodeTypeGammel(
utbetalingsbeløp: Int,
fom: LocalDate?,
barnMedUtbetaling: List<MinimertRestPerson>,
) = if (restBehandlingsgrunnlagForBrev.fagsakType == FagsakType.INSTITUSJON) {
when (minimertVedtaksperiode.type) {
Vedtaksperiodetype.FORTSATT_INNVILGET -> BrevPeriodeType.FORTSATT_INNVILGET_INSTITUSJON
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ private fun VedtaksperiodeMedBegrunnelser.byggBrevPeriode(
antallBarnMedNullutbetaling = "",
fodselsdagerBarnMedUtbetaling = "",
fodselsdagerBarnMedNullutbetaling = "",
duEllerInstitusjonen = "",
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ enum class BrevPeriodeType(val apiNavn: String) {
AVSLAG_INSTITUSJON("avslagInstitusjon"),
AVSLAG_UTEN_PERIODE_INSTITUSJON("avslagUtenPeriodeInstitusjon"),
FORTSATT_INNVILGET_INSTITUSJON("fortsattInnvilgetInstitusjon"),
UTBETALING("utbetaling"),
FORTSATT_INNVILGET_NY("fortsattInnvilgetNy"),
INGEN_UTBETALING("ingenUtbetaling"),
INGEN_UTBETALING_UTEN_PERIODE("ingenUtbetalingUtenPeriode"),
}

enum class EndretUtbetalingBrevPeriodeType(val apiNavn: String) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ data class BrevPeriode(
val antallBarnMedNullutbetaling: Flettefelt,
val fodselsdagerBarnMedUtbetaling: Flettefelt,
val fodselsdagerBarnMedNullutbetaling: Flettefelt,
val duEllerInstitusjonen: Flettefelt,
) {

constructor(
Expand All @@ -32,6 +33,7 @@ data class BrevPeriode(
antallBarnMedNullutbetaling: String,
fodselsdagerBarnMedUtbetaling: String,
fodselsdagerBarnMedNullutbetaling: String,
duEllerInstitusjonen: String,
) : this(
fom = flettefelt(fom),
tom = flettefelt(tom),
Expand All @@ -44,5 +46,6 @@ data class BrevPeriode(
fodselsdagerBarnMedNullutbetaling = flettefelt(fodselsdagerBarnMedNullutbetaling),
begrunnelser = begrunnelser,
type = flettefelt(brevPeriodeType.apiNavn),
duEllerInstitusjonen = flettefelt(duEllerInstitusjonen),
)
}

0 comments on commit c4e9cc5

Please sign in to comment.