Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lagt til tester, refaktorert og justert litt på mappingen ut #141

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import no.nav.bidrag.beregn.forskudd.core.bo.BostatusPeriode
import no.nav.bidrag.beregn.forskudd.core.bo.InntektPeriode
import no.nav.bidrag.beregn.forskudd.core.bo.ResultatPeriode
import no.nav.bidrag.beregn.forskudd.core.bo.SivilstandPeriode
import no.nav.bidrag.beregn.forskudd.core.bo.SoknadBarn
import no.nav.bidrag.beregn.forskudd.core.bo.Søknadsbarn
import no.nav.bidrag.beregn.forskudd.core.dto.BarnIHusstandenPeriodeCore
import no.nav.bidrag.beregn.forskudd.core.dto.BeregnForskuddGrunnlagCore
import no.nav.bidrag.beregn.forskudd.core.dto.BeregnetForskuddResultatCore
Expand All @@ -27,7 +27,7 @@ import no.nav.bidrag.beregn.forskudd.core.dto.InntektPeriodeCore
import no.nav.bidrag.beregn.forskudd.core.dto.ResultatBeregningCore
import no.nav.bidrag.beregn.forskudd.core.dto.ResultatPeriodeCore
import no.nav.bidrag.beregn.forskudd.core.dto.SivilstandPeriodeCore
import no.nav.bidrag.beregn.forskudd.core.dto.SoknadBarnCore
import no.nav.bidrag.beregn.forskudd.core.dto.SøknadsbarnCore
import no.nav.bidrag.beregn.forskudd.core.periode.ForskuddPeriode
import no.nav.bidrag.domene.enums.person.AldersgruppeForskudd
import no.nav.bidrag.domene.enums.person.Bostatuskode
Expand All @@ -50,7 +50,7 @@ internal class ForskuddCore(private val forskuddPeriode: ForskuddPeriode = Forsk
private fun mapTilBusinessObject(grunnlag: BeregnForskuddGrunnlagCore) = BeregnForskuddGrunnlag(
beregnDatoFra = grunnlag.beregnDatoFra,
beregnDatoTil = grunnlag.beregnDatoTil,
soknadBarn = mapSoknadBarn(grunnlag.soknadBarn),
søknadsbarn = mapSøknadsbarn(grunnlag.søknadsbarn),
bostatusPeriodeListe = mapBostatusPeriodeListe(grunnlag.bostatusPeriodeListe),
inntektPeriodeListe = mapInntektPeriodeListe(grunnlag.inntektPeriodeListe),
sivilstandPeriodeListe = mapSivilstandPeriodeListe(grunnlag.sivilstandPeriodeListe),
Expand All @@ -64,8 +64,8 @@ internal class ForskuddCore(private val forskuddPeriode: ForskuddPeriode = Forsk
avvikListe = mapAvvik(avvikListe),
)

private fun mapSoknadBarn(soknadBarnCore: SoknadBarnCore) =
SoknadBarn(referanse = soknadBarnCore.referanse, fodselsdato = soknadBarnCore.fodselsdato)
private fun mapSøknadsbarn(søknadsbarnCore: SøknadsbarnCore) =
Søknadsbarn(referanse = søknadsbarnCore.referanse, fødselsdato = søknadsbarnCore.fødselsdato)

private fun mapBostatusPeriodeListe(bostatusPeriodeListeCore: List<BostatusPeriodeCore>): List<BostatusPeriode> {
val bostatusPeriodeListe = mutableListOf<BostatusPeriode>()
Expand All @@ -89,7 +89,7 @@ internal class ForskuddCore(private val forskuddPeriode: ForskuddPeriode = Forsk
referanse = it.referanse,
inntektPeriode = Periode(datoFom = it.periode.datoFom, datoTil = it.periode.datoTil),
type = " ",
belop = it.belop,
beløp = it.beløp,
),
)
}
Expand Down Expand Up @@ -127,18 +127,18 @@ internal class ForskuddCore(private val forskuddPeriode: ForskuddPeriode = Forsk
private fun mapSjablonPeriodeListe(sjablonPeriodeListeCore: List<SjablonPeriodeCore>): List<SjablonPeriode> {
val sjablonPeriodeListe = mutableListOf<SjablonPeriode>()
sjablonPeriodeListeCore.forEach {
val sjablonNokkelListe = mutableListOf<SjablonNokkel>()
val sjablonNøkkelListe = mutableListOf<SjablonNokkel>()
val sjablonInnholdListe = mutableListOf<SjablonInnhold>()
it.nokkelListe!!.forEach { nokkel ->
sjablonNokkelListe.add(SjablonNokkel(navn = nokkel.navn, verdi = nokkel.verdi))
sjablonNøkkelListe.add(SjablonNokkel(navn = nokkel.navn, verdi = nokkel.verdi))
}
it.innholdListe.forEach { innhold ->
sjablonInnholdListe.add(SjablonInnhold(navn = innhold.navn, verdi = innhold.verdi))
}
sjablonPeriodeListe.add(
SjablonPeriode(
sjablonPeriode = Periode(datoFom = it.periode.datoFom, datoTil = it.periode.datoTil),
sjablon = Sjablon(navn = it.navn, nokkelListe = sjablonNokkelListe, innholdListe = sjablonInnholdListe),
sjablon = Sjablon(navn = it.navn, nokkelListe = sjablonNøkkelListe, innholdListe = sjablonInnholdListe),
),
)
}
Expand All @@ -152,10 +152,10 @@ internal class ForskuddCore(private val forskuddPeriode: ForskuddPeriode = Forsk
ResultatPeriodeCore(
PeriodeCore(datoFom = it.periode.datoFom, datoTil = it.periode.datoTil),
ResultatBeregningCore(
belop = it.resultat.belop,
beløp = it.resultat.beløp,
kode = it.resultat.kode,
regel = it.resultat.regel,
alder = finnAldersgruppe(it.grunnlag.soknadBarnAlder.alder),
aldersgruppe = finnAldersgruppe(it.grunnlag.søknadsbarnAlder.alder),
),
mapReferanseListe(it),
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@ import java.time.LocalDate
data class BeregnForskuddGrunnlag(
val beregnDatoFra: LocalDate,
val beregnDatoTil: LocalDate,
val soknadBarn: SoknadBarn,
val søknadsbarn: Søknadsbarn,
val bostatusPeriodeListe: List<BostatusPeriode>,
val inntektPeriodeListe: List<InntektPeriode>,
val sivilstandPeriodeListe: List<SivilstandPeriode>,
val barnIHusstandenPeriodeListe: List<BarnIHusstandenPeriode>,
val sjablonPeriodeListe: List<SjablonPeriode>,
)

data class SoknadBarn(
data class Søknadsbarn(
val referanse: String,
val fodselsdato: LocalDate,
val fødselsdato: LocalDate,
)

// Resultat periode
Expand All @@ -42,15 +42,15 @@ data class GrunnlagBeregning(
val inntektListe: List<Inntekt>,
val sivilstand: Sivilstand,
val barnIHusstandenListe: List<BarnIHusstanden>,
val soknadBarnAlder: Alder,
val soknadBarnBostatus: Bostatus,
val søknadsbarnAlder: Alder,
val søknadsbarnBostatus: Bostatus,
val sjablonListe: List<SjablonPeriode>,
)

data class Inntekt(
val referanse: String,
val type: String,
val belop: BigDecimal,
val beløp: BigDecimal,
)

data class Sivilstand(
Expand All @@ -75,7 +75,7 @@ data class Bostatus(

// Resultat beregning
data class ResultatBeregning(
val belop: BigDecimal,
val beløp: BigDecimal,
val kode: Resultatkode,
val regel: String,
val sjablonListe: List<SjablonPeriodeNavnVerdi>,
Expand All @@ -95,10 +95,10 @@ data class GrunnlagTilBeregning(

data class Sjablonverdier(
var maksInntektForskuddMottakerMultiplikator: BigDecimal = BigDecimal.ZERO,
var inntektsintervallForskuddBelop: BigDecimal = BigDecimal.ZERO,
var forskuddssats75ProsentBelop: BigDecimal = BigDecimal.ZERO,
var forskuddssats100ProsentBelop: BigDecimal = BigDecimal.ZERO,
var inntektsgrense100ProsentForskuddBelop: BigDecimal = BigDecimal.ZERO,
var inntektsgrenseEnslig75ProsentForskuddBelop: BigDecimal = BigDecimal.ZERO,
var inntektsgrenseGiftSamboer75ProsentForskuddBelop: BigDecimal = BigDecimal.ZERO,
var inntektsintervallForskuddBeløp: BigDecimal = BigDecimal.ZERO,
var forskuddssats75ProsentBeløp: BigDecimal = BigDecimal.ZERO,
var forskuddssats100ProsentBeløp: BigDecimal = BigDecimal.ZERO,
var inntektsgrense100ProsentForskuddBeløp: BigDecimal = BigDecimal.ZERO,
var inntektsgrenseEnslig75ProsentForskuddBeløp: BigDecimal = BigDecimal.ZERO,
var inntektsgrenseGiftSamboer75ProsentForskuddBeløp: BigDecimal = BigDecimal.ZERO,
)
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ data class InntektPeriode(
val referanse: String,
val inntektPeriode: Periode,
val type: String,
val belop: BigDecimal,
val beløp: BigDecimal,
) : PeriodisertGrunnlag {
override fun getPeriode(): Periode {
return inntektPeriode
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@ import java.time.LocalDate
data class BeregnForskuddGrunnlagCore(
val beregnDatoFra: LocalDate,
val beregnDatoTil: LocalDate,
val soknadBarn: SoknadBarnCore,
val søknadsbarn: SøknadsbarnCore,
val bostatusPeriodeListe: List<BostatusPeriodeCore>,
val inntektPeriodeListe: List<InntektPeriodeCore>,
val sivilstandPeriodeListe: List<SivilstandPeriodeCore>,
val barnIHusstandenPeriodeListe: List<BarnIHusstandenPeriodeCore>,
var sjablonPeriodeListe: List<SjablonPeriodeCore>,
)

data class SoknadBarnCore(
data class SøknadsbarnCore(
val referanse: String,
val fodselsdato: LocalDate,
val fødselsdato: LocalDate,
)

data class BostatusPeriodeCore(
Expand All @@ -35,7 +35,7 @@ data class BostatusPeriodeCore(
data class InntektPeriodeCore(
override val referanse: String,
override val periode: PeriodeCore,
val belop: BigDecimal,
val beløp: BigDecimal,
override val grunnlagsreferanseListe: List<String>,
) : DelberegningForskudd

Expand Down Expand Up @@ -72,8 +72,8 @@ data class ResultatPeriodeCore(
)

data class ResultatBeregningCore(
val belop: BigDecimal,
val beløp: BigDecimal,
val kode: Resultatkode,
val regel: String,
val alder: AldersgruppeForskudd,
val aldersgruppe: AldersgruppeForskudd,
)
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,11 @@ internal class ForskuddPeriode(private val forskuddBeregning: ForskuddBeregning

grunnlagTilBeregning.alderPeriodeListe =
settBarnAlderPerioder(
fødselsdato = periodeGrunnlag.soknadBarn.fodselsdato,
fødselsdato = periodeGrunnlag.søknadsbarn.fødselsdato,
beregnDatoFra = periodeGrunnlag.beregnDatoFra,
beregnDatoTil = periodeGrunnlag.beregnDatoTil,
)
.map { AlderPeriode(referanse = periodeGrunnlag.soknadBarn.referanse, alderPeriode = it.alderPeriode, alder = it.alder) }
.map { AlderPeriode(referanse = periodeGrunnlag.søknadsbarn.referanse, alderPeriode = it.alderPeriode, alder = it.alder) }

grunnlagTilBeregning.sjablonPeriodeListe = periodeGrunnlag.sjablonPeriodeListe.map { it }
}
Expand Down Expand Up @@ -97,7 +97,7 @@ internal class ForskuddPeriode(private val forskuddBeregning: ForskuddBeregning
val inntektListe =
grunnlagTilBeregning.inntektPeriodeListe
.filter { it.getPeriode().overlapperMed(beregningsperiode) }
.map { Inntekt(referanse = it.referanse, type = it.type, belop = it.belop) }
.map { Inntekt(referanse = it.referanse, type = it.type, beløp = it.beløp) }

val sivilstand =
grunnlagTilBeregning.sivilstandPeriodeListe.stream()
Expand Down Expand Up @@ -146,8 +146,8 @@ internal class ForskuddPeriode(private val forskuddBeregning: ForskuddBeregning
inntektListe = inntektListe,
sivilstand = sivilstand,
barnIHusstandenListe = barnIHusstandenListe,
soknadBarnAlder = alder,
soknadBarnBostatus = bostatus,
søknadsbarnAlder = alder,
søknadsbarnBostatus = bostatus,
sjablonListe = sjablonListe,
)

Expand All @@ -165,76 +165,64 @@ internal class ForskuddPeriode(private val forskuddBeregning: ForskuddBeregning
// Deler opp i aldersperioder med utgangspunkt i fødselsdato
private fun settBarnAlderPerioder(fødselsdato: LocalDate, beregnDatoFra: LocalDate, beregnDatoTil: LocalDate): List<AlderPeriode> {
val bruddAlderListe = ArrayList<AlderPeriode>()
val barn11AarDato = fødselsdato.plusYears(11).with(firstDayOfMonth())
val barn18AarDato = fødselsdato.plusYears(18).with(firstDayOfNextMonth())
val barn11ÅrDato = fødselsdato.plusYears(11).with(firstDayOfMonth())
val barn18ÅrDato = fødselsdato.plusYears(18).with(firstDayOfNextMonth())

var alderStartPeriode = 0
if (!barn11AarDato.isAfter(beregnDatoFra)) {
alderStartPeriode = if (!barn18AarDato.isAfter(beregnDatoFra)) 18 else 11
if (!barn11ÅrDato.isAfter(beregnDatoFra)) {
alderStartPeriode = if (!barn18ÅrDato.isAfter(beregnDatoFra)) 18 else 11
}

// Barn fyller 11 år i perioden
val barn11AarIPerioden = barn11AarDato.isAfter(beregnDatoFra.minusDays(1)) && barn11AarDato.isBefore(beregnDatoTil.plusDays(1))
val barn11ÅrIPerioden = barn11ÅrDato.isAfter(beregnDatoFra.minusDays(1)) && barn11ÅrDato.isBefore(beregnDatoTil.plusDays(1))

// Barn fyller 18 år i perioden
val barn18AarIPerioden = barn18AarDato.isAfter(beregnDatoFra.minusDays(1)) && barn18AarDato.isBefore(beregnDatoTil.plusDays(1))
if (barn11AarIPerioden) {
val barn18ÅrIPerioden = barn18ÅrDato.isAfter(beregnDatoFra.minusDays(1)) && barn18ÅrDato.isBefore(beregnDatoTil.plusDays(1))
if (barn11ÅrIPerioden) {
bruddAlderListe.add(
AlderPeriode(
referanse = "",
alderPeriode =
Periode(
datoFom = beregnDatoFra.with(firstDayOfMonth()),
datoTil = barn11AarDato.with(firstDayOfMonth()),
),
alderPeriode = Periode(datoFom = beregnDatoFra.with(firstDayOfMonth()), datoTil = barn11ÅrDato.with(firstDayOfMonth())),
alder = 0,
),
)
if (barn18AarIPerioden) {
if (barn18ÅrIPerioden) {
bruddAlderListe.add(
AlderPeriode(
referanse = "",
alderPeriode =
Periode(
datoFom = barn11AarDato.with(firstDayOfMonth()),
datoTil = barn18AarDato.with(firstDayOfMonth()),
),
alderPeriode = Periode(datoFom = barn11ÅrDato.with(firstDayOfMonth()), datoTil = barn18ÅrDato.with(firstDayOfMonth())),
alder = 11,
),
)
bruddAlderListe.add(
AlderPeriode(
referanse = "",
alderPeriode = Periode(datoFom = barn18AarDato.with(firstDayOfMonth()), datoTil = null),
alderPeriode = Periode(datoFom = barn18ÅrDato.with(firstDayOfMonth()), datoTil = null),
alder = 18,
),
)
} else {
bruddAlderListe.add(
AlderPeriode(
referanse = "",
alderPeriode = Periode(datoFom = barn11AarDato.with(firstDayOfMonth()), datoTil = null),
alderPeriode = Periode(datoFom = barn11ÅrDato.with(firstDayOfMonth()), datoTil = null),
alder = 11,
),
)
}
} else {
if (barn18AarIPerioden) {
if (barn18ÅrIPerioden) {
bruddAlderListe.add(
AlderPeriode(
referanse = "",
alderPeriode =
Periode(
datoFom = beregnDatoFra.with(firstDayOfMonth()),
datoTil = barn18AarDato.with(firstDayOfMonth()),
),
alderPeriode = Periode(datoFom = beregnDatoFra.with(firstDayOfMonth()), datoTil = barn18ÅrDato.with(firstDayOfMonth())),
alder = 11,
),
)
bruddAlderListe.add(
AlderPeriode(
referanse = "",
alderPeriode = Periode(datoFom = barn18AarDato.with(firstDayOfMonth()), datoTil = null),
alderPeriode = Periode(datoFom = barn18ÅrDato.with(firstDayOfMonth()), datoTil = null),
alder = 18,
),
)
Expand Down Expand Up @@ -295,7 +283,7 @@ internal class ForskuddPeriode(private val forskuddBeregning: ForskuddBeregning
PeriodeUtil.validerInputDatoer(
beregnDatoFom = grunnlag.beregnDatoFra,
beregnDatoTil = grunnlag.beregnDatoTil,
dataElement = "soknadBarnBostatusPeriodeListe",
dataElement = "søknadsbarnBostatusPeriodeListe",
periodeListe = grunnlag.bostatusPeriodeListe.map { it.getPeriode() },
sjekkOverlappendePerioder = true,
sjekkOppholdMellomPerioder = true,
Expand Down
Loading
Loading