Skip to content

Commit

Permalink
Merge pull request #640 from navikt/feature/inntektrespons_gebyr
Browse files Browse the repository at this point in the history
* Inntektrespons inneholder gebyr endringer

* Inntektrespons inneholder gebyr endringer

* Inntektrespons inneholder gebyr endringer

* Oppdater beregning

* Oppdater beregning

* Sette til og med dato barnetilsyn
  • Loading branch information
ugur93 authored Dec 11, 2024
2 parents 89fab8b + ddab61c commit 20b5b26
Show file tree
Hide file tree
Showing 13 changed files with 138 additions and 19 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
<properties>
<java.version>21</java.version>
<kotlin.version>2.1.0</kotlin.version>
<bidrag-felles.version>2024.12.10.074340</bidrag-felles.version>
<bidrag-beregn-felles.version>2024.12.09.142728</bidrag-beregn-felles.version>
<bidrag-felles.version>2024.12.11.070437</bidrag-felles.version>
<bidrag-beregn-felles.version>2024.12.10.160924</bidrag-beregn-felles.version>
<h2.version>2.3.232</h2.version>
<logback-encoder.version>8.0</logback-encoder.version>
<token-support.version>3.2.0</token-support.version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.bidrag.behandling.dto.v2.inntekt
import com.fasterxml.jackson.annotation.JsonFormat
import io.swagger.v3.oas.annotations.media.Schema
import no.nav.bidrag.behandling.dto.v1.behandling.BegrunnelseDto
import no.nav.bidrag.behandling.dto.v2.behandling.GebyrDto
import no.nav.bidrag.behandling.dto.v2.behandling.OppdatereBegrunnelse
import no.nav.bidrag.behandling.dto.v2.validering.InntektValideringsfeilDto
import no.nav.bidrag.domene.enums.diverse.Kilde
Expand Down Expand Up @@ -106,6 +107,7 @@ data class OppdatereInntektRequest(
data class OppdatereInntektResponse(
@Schema(description = "Inntekt som ble oppdatert")
val inntekt: InntektDtoV2?,
val gebyr: GebyrDto? = null,
val beregnetGebyrErEndret: Boolean = false,
@Schema(description = "Periodiserte inntekter")
val beregnetInntekter: List<BeregnetInntekterDto> = emptyList(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,23 @@ data class UnderholdskostnadDto(
val tilsynsutgifter: BigDecimal = BigDecimal.ZERO,
val barnetrygd: BigDecimal = BigDecimal.ZERO,
val total: BigDecimal,
)
val beregningsdetaljer: Beregningsdetaljer? = null,
) {
data class Beregningsdetaljer(
val tilsynsutgifterBarn: List<TilsynsutgiftBarn> = emptyList(),
val totalTilsynsutgift: BigDecimal,
val endeligBeløp: BigDecimal,
val faktiskBeløp: BigDecimal,
val fordelingFaktor: BigDecimal,
val skattefradrag: BigDecimal,
)

data class TilsynsutgiftBarn(
val beløp: BigDecimal,
val kostpenger: BigDecimal? = null,
val tilleggsstønad: BigDecimal? = null,
)
}

data class OppdatereTilleggsstønadRequest(
val id: Long? = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import no.nav.bidrag.behandling.dto.v2.inntekt.OppdatereInntektRequest
import no.nav.bidrag.behandling.dto.v2.inntekt.OppdatereInntektResponse
import no.nav.bidrag.behandling.inntektIkkeFunnetException
import no.nav.bidrag.behandling.oppdateringAvInntektFeilet
import no.nav.bidrag.behandling.transformers.Dtomapper
import no.nav.bidrag.behandling.transformers.behandling.hentBeregnetInntekterForRolle
import no.nav.bidrag.behandling.transformers.behandling.hentInntekterValideringsfeil
import no.nav.bidrag.behandling.transformers.eksplisitteYtelser
Expand Down Expand Up @@ -55,6 +56,7 @@ class InntektService(
private val inntektRepository: InntektRepository,
private val notatService: NotatService,
private val gebyrService: GebyrService,
private val dtomapper: Dtomapper,
) {
@Transactional
fun rekalkulerPerioderInntekter(behandlingsid: Long) {
Expand Down Expand Up @@ -181,6 +183,7 @@ class InntektService(
val beregnetGebyrErEndret = gebyrService.rekalkulerGebyr(behandling)
return OppdatereInntektResponse(
inntekt = oppdatertInntekt,
gebyr = dtomapper.run { behandling.mapGebyr() },
beregnetGebyrErEndret = beregnetGebyrErEndret,
beregnetInntekter =
behandling.roller
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,12 @@ fun Set<BarnetilsynGrunnlagDto>.tilBarnetilsyn(u: Underholdskostnad) = this.map
fun BarnetilsynGrunnlagDto.tilBarnetilsyn(u: Underholdskostnad): Barnetilsyn {
fun erUnderSkolealder(fødselsdato: LocalDate) = fødselsdato.plusYears(ALDER_VED_SKOLESTART).year > LocalDate.now().year

val justerForDato = maxOf(u.behandling.virkningstidspunkt!!, LocalDate.now().withDayOfMonth(1))
val tilOgMedDato = this.periodeTil?.minusDays(1)
return Barnetilsyn(
underholdskostnad = u,
fom = this.periodeFra,
tom = this.periodeTil?.minusDays(1),
tom = if (tilOgMedDato != null && tilOgMedDato.isAfter(justerForDato)) null else tilOgMedDato,
kilde = Kilde.OFFENTLIG,
omfang = this.tilsynstype ?: Tilsynstype.IKKE_ANGITT,
under_skolealder = erUnderSkolealder(u.person.henteFødselsdato),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettInnhentetSivils
import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettKontantstøtteGrunnlagsreferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettSkattegrunnlagGrunnlagsreferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettSmåbarnstilleggGrunnlagsreferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettTilleggsstønadGrunnlagsreferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.opprettUtvidetbarnetrygGrunnlagsreferanse
import no.nav.bidrag.transport.behandling.felles.grunnlag.tilPersonreferanse
import no.nav.bidrag.transport.behandling.grunnlag.response.AinntektGrunnlagDto
Expand Down Expand Up @@ -373,8 +372,8 @@ fun List<TilleggsstønadGrunnlagDto>.tilGrunnlagsobjekt(
ktFomDato: LocalDate,
) = GrunnlagDto(
referanse =
opprettTilleggsstønadGrunnlagsreferanse(gjelderReferanse),
type = Grunnlagstype.INNHENTET_TILLEGGSSTØNAD,
"innhentet_tilleggsstønad_begrenset_$gjelderReferanse",
type = Grunnlagstype.INNHENTET_TILLEGGSSTØNAD_BEGRENSET,
gjelderReferanse = gjelderReferanse,
innhold =
POJONode(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ internal fun opprettGrunnlagForBostatusperioder(
)
}.toSet()

internal fun SluttberegningGebyr.tilResultatkode() = if (ilagtGebyr) Resultatkode.GEBYR_ILAGT else Resultatkode.GEBYR_FRITTATT
internal fun SluttberegningGebyr.tilResultatkode() = if (ilagtGebyr) Resultatkode.GEBYR_ILAGT else Resultatkode.GEBYR_FRITATT

fun List<BaseGrunnlag>.finnInntektSiste12Mnd(rolle: Rolle) =
filter {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ import no.nav.bidrag.behandling.database.repository.BehandlingRepository
import no.nav.bidrag.behandling.database.repository.InntektRepository
import no.nav.bidrag.behandling.dto.v2.inntekt.OppdatereInntektRequest
import no.nav.bidrag.behandling.dto.v2.inntekt.OppdatereManuellInntekt
import no.nav.bidrag.behandling.transformers.Dtomapper
import no.nav.bidrag.behandling.transformers.beregning.ValiderBeregning
import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.BehandlingTilGrunnlagMappingV2
import no.nav.bidrag.behandling.transformers.vedtak.mapping.tilvedtak.VedtakGrunnlagMapper
import no.nav.bidrag.behandling.utils.testdata.opprettInntekt
import no.nav.bidrag.behandling.utils.testdata.oppretteBehandling
import no.nav.bidrag.behandling.utils.testdata.oppretteBehandlingRoller
import no.nav.bidrag.beregn.barnebidrag.BeregnBarnebidragApi
import no.nav.bidrag.beregn.barnebidrag.BeregnGebyrApi
import no.nav.bidrag.beregn.barnebidrag.BeregnSamværsklasseApi
import no.nav.bidrag.commons.web.mock.stubSjablonService
Expand Down Expand Up @@ -51,12 +53,22 @@ class InntektServiceMockTest {
@MockK
lateinit var evnevurderingService: BeregningEvnevurderingService

@MockK
lateinit var tilgangskontrollService: TilgangskontrollService

@MockK
lateinit var validerBeregning: ValiderBeregning

@MockK
lateinit var validerBehandlingService: ValiderBehandlingService

lateinit var inntektService: InntektService

@BeforeEach
fun initMock() {
inntektRepository = stubInntektRepository()
val personService = PersonService(stubPersonConsumer())

val vedtakGrunnlagMapper =
VedtakGrunnlagMapper(
BehandlingTilGrunnlagMappingV2(personService, BeregnSamværsklasseApi(stubSjablonService())),
Expand All @@ -65,7 +77,15 @@ class InntektServiceMockTest {
personService,
BeregnGebyrApi(stubSjablonService()),
)
inntektService = InntektService(behandlingRepository, inntektRepository, notatService, GebyrService(vedtakGrunnlagMapper))
val dtomapper =
Dtomapper(
tilgangskontrollService,
validerBeregning,
validerBehandlingService,
vedtakGrunnlagMapper,
BeregnBarnebidragApi(),
)
inntektService = InntektService(behandlingRepository, inntektRepository, notatService, GebyrService(vedtakGrunnlagMapper), dtomapper)
every { inntektRepository.saveAll<Inntekt>(any()) } answers { firstArg() }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
val request = opprettVedtakRequest
request.type shouldBe Vedtakstype.FASTSETTELSE
withClue("Grunnlagliste skal inneholde ${request.grunnlagListe.size} grunnlag") {
request.grunnlagListe shouldHaveSize 171
request.grunnlagListe shouldHaveSize 172
}
}

Expand Down Expand Up @@ -227,7 +227,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
gebyrMottaker.kravhaver shouldBe Personident("NAV")
gebyrMottaker.mottaker shouldBe Personident("NAV")
gebyrMottaker.innkreving shouldBe Innkrevingstype.MED_INNKREVING
gebyrMottaker.resultatkode shouldBe Resultatkode.GEBYR_FRITTATT.name
gebyrMottaker.resultatkode shouldBe Resultatkode.GEBYR_FRITATT.name
gebyrMottaker.sak shouldBe Saksnummer(SAKSNUMMER)
gebyrMottaker.skyldner shouldBe Personident(testdataBM.ident)
gebyrMottaker.grunnlagReferanseListe shouldHaveSize 1
Expand Down Expand Up @@ -302,7 +302,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
hentGrunnlagstyper(Grunnlagstype.BEREGNET_INNTEKT) shouldHaveSize 3
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 5
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 3
hentGrunnlagstyper(Grunnlagstype.INNHENTET_TILLEGGSSTØNAD) shouldHaveSize 1
hentGrunnlagstyper(Grunnlagstype.INNHENTET_TILLEGGSSTØNAD_BEGRENSET) shouldHaveSize 1
hentGrunnlagstyper(Grunnlagstype.INNHENTET_BARNETILSYN) shouldHaveSize 1
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 1
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 1
Expand Down Expand Up @@ -404,7 +404,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
gebyrMottaker.kravhaver shouldBe Personident("NAV")
gebyrMottaker.mottaker shouldBe Personident("NAV")
gebyrMottaker.innkreving shouldBe Innkrevingstype.MED_INNKREVING
gebyrMottaker.resultatkode shouldBe Resultatkode.GEBYR_FRITTATT.name
gebyrMottaker.resultatkode shouldBe Resultatkode.GEBYR_FRITATT.name
gebyrMottaker.sak shouldBe Saksnummer(SAKSNUMMER)
gebyrMottaker.skyldner shouldBe Personident(testdataBM.ident)
gebyrMottaker.grunnlagReferanseListe shouldHaveSize 1
Expand Down Expand Up @@ -851,7 +851,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
kravhaver shouldBe Personident("NAV")
mottaker shouldBe Personident("NAV")
innkreving shouldBe Innkrevingstype.MED_INNKREVING
resultatkode shouldBe Resultatkode.GEBYR_FRITTATT.name
resultatkode shouldBe Resultatkode.GEBYR_FRITATT.name
sak shouldBe Saksnummer(SAKSNUMMER)
skyldner shouldBe Personident(testdataBM.ident)
grunnlagReferanseListe shouldHaveSize 1
Expand Down Expand Up @@ -969,7 +969,7 @@ class VedtakserviceBidragTest : CommonVedtakTilBehandlingTest() {
kravhaver shouldBe Personident("NAV")
mottaker shouldBe Personident("NAV")
innkreving shouldBe Innkrevingstype.MED_INNKREVING
resultatkode shouldBe Resultatkode.GEBYR_FRITTATT.name
resultatkode shouldBe Resultatkode.GEBYR_FRITATT.name
sak shouldBe Saksnummer(SAKSNUMMER)
skyldner shouldBe Personident(testdataBM.ident)
grunnlagReferanseListe shouldHaveSize 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ class VedtakserviceTest : TestContainerRunner() {
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SKATTEGRUNNLAG_PERIODE) shouldHaveSize 8
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_AINNTEKT) shouldHaveSize 3
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_BARNETILLEGG) shouldHaveSize 2
hentGrunnlagstyper(Grunnlagstype.INNHENTET_TILLEGGSSTØNAD) shouldHaveSize 0
hentGrunnlagstyper(Grunnlagstype.INNHENTET_TILLEGGSSTØNAD_BEGRENSET) shouldHaveSize 0
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_UTVIDETBARNETRYGD) shouldHaveSize 1
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_SMÅBARNSTILLEGG) shouldHaveSize 1
hentGrunnlagstyper(Grunnlagstype.INNHENTET_INNTEKT_KONTANTSTØTTE) shouldHaveSize 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,81 @@ class UtvidelserTest {
//
barnetilsyn.under_skolealder shouldBe true
}

@Test
fun `skal sette til og med dato til null hvis etter virkning`() {
// gitt
val b =
oppretteTestbehandling(
setteDatabaseider = true,
inkludereBp = true,
behandlingstype = TypeBehandling.BIDRAG,
)

val barnetilsynGrunnlagDto =
oppretteBarnetilsynGrunnlagDto(b, periodeFraAntallMndTilbake = 13)
.copy(periodeTil = LocalDate.now().plusMonths(2))

val u = b.underholdskostnader.first()
b.virkningstidspunkt = LocalDate.now().plusMonths(1).withDayOfMonth(1)

// hvis
val barnetilsyn = barnetilsynGrunnlagDto.tilBarnetilsyn(u)

//
barnetilsyn.tom shouldBe null
}

@Test
fun `skal sette til og med dato til null hvis etter dagens dato`() {
// gitt
val b =
oppretteTestbehandling(
setteDatabaseider = true,
inkludereBp = true,
behandlingstype = TypeBehandling.BIDRAG,
)

val barnetilsynGrunnlagDto =
oppretteBarnetilsynGrunnlagDto(b, periodeFraAntallMndTilbake = 13)
.copy(periodeTil = LocalDate.now().plusMonths(1))

val u = b.underholdskostnader.first()
b.virkningstidspunkt = LocalDate.now().minusMonths(3).withDayOfMonth(1)

// hvis
val barnetilsyn = barnetilsynGrunnlagDto.tilBarnetilsyn(u)

//
barnetilsyn.tom shouldBe null
}

@Test
fun `skal sette til og med dato hvis før virkning`() {
// gitt
val b =
oppretteTestbehandling(
setteDatabaseider = true,
inkludereBp = true,
behandlingstype = TypeBehandling.BIDRAG,
)

val barnetilsynGrunnlagDto =
oppretteBarnetilsynGrunnlagDto(b, periodeFraAntallMndTilbake = 13)
.copy(periodeTil = LocalDate.now().minusMonths(4).plusMonths(1))

val u = b.underholdskostnader.first()
b.virkningstidspunkt = LocalDate.now().minusMonths(3).withDayOfMonth(1)

// hvis
val barnetilsyn = barnetilsynGrunnlagDto.tilBarnetilsyn(u)

//
barnetilsyn.tom shouldBe
LocalDate
.now()
.minusMonths(4)
.plusMonths(1)
.minusDays(1)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ class VedtakGrunnlagMapperTest {
skattepliktigInntekt shouldBe BigDecimal(900000)
maksBarnetillegg shouldBe null
beløpGebyrsats shouldBe BigDecimal(1277)
resultatkode shouldBe Resultatkode.GEBYR_FRITTATT
resultatkode shouldBe Resultatkode.GEBYR_FRITATT
grunnlagsreferanseListeEngangsbeløp shouldHaveSize 2
grunnlagsreferanseListeEngangsbeløp shouldContain grunnlagsliste.find { it.type == Grunnlagstype.SLUTTBEREGNING_GEBYR }!!.referanse
grunnlagsreferanseListeEngangsbeløp shouldContain grunnlagsliste.find { it.type == Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE }!!.referanse
Expand Down Expand Up @@ -191,7 +191,7 @@ class VedtakGrunnlagMapperTest {
skattepliktigInntekt shouldBe BigDecimal(900000)
maksBarnetillegg shouldBe null
beløpGebyrsats shouldBe BigDecimal(1277)
resultatkode shouldBe Resultatkode.GEBYR_FRITTATT
resultatkode shouldBe Resultatkode.GEBYR_FRITATT
grunnlagsreferanseListeEngangsbeløp shouldHaveSize 2
grunnlagsreferanseListeEngangsbeløp shouldContain grunnlagsliste.find { it.type == Grunnlagstype.SLUTTBEREGNING_GEBYR }!!.referanse
grunnlagsreferanseListeEngangsbeløp shouldContain grunnlagsliste.find { it.type == Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE }!!.referanse
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4829,7 +4829,7 @@
"mottaker": "NAV",
"beløp": null,
"valutakode": null,
"resultatkode": "GEBYR_FRITTATT",
"resultatkode": "GEBYR_FRITATT",
"innkreving": "MED_INNKREVING",
"beslutning": "ENDRING",
"omgjørVedtakId": null,
Expand Down

0 comments on commit 20b5b26

Please sign in to comment.