Skip to content

Commit

Permalink
Merge pull request #2767 from navikt/lagre-resultat-av-inntektskontro…
Browse files Browse the repository at this point in the history
…ll-selvstendig-næringsdrivende

Lagre resultat av inntektskontroll selvstendig næringsdrivende
  • Loading branch information
amiraliw authored Feb 12, 2025
2 parents 92474d9 + 44c9e9c commit 1a96e67
Show file tree
Hide file tree
Showing 18 changed files with 96 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/main/kotlin/no/nav/familie/ef/sak/brev/BrevClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import no.nav.familie.ef.sak.brev.VedtaksbrevService.Companion.BESLUTTER_VEDTAKS
import no.nav.familie.ef.sak.brev.domain.FRITEKST
import no.nav.familie.ef.sak.felles.util.medContentTypeJsonUTF8
import no.nav.familie.ef.sak.infrastruktur.exception.feilHvis
import no.nav.familie.ef.sak.selvstendig.NæringsinntektIngenEndringPdfRequest
import no.nav.familie.ef.sak.næringsinntektskontroll.NæringsinntektIngenEndringPdfRequest
import no.nav.familie.http.client.AbstractPingableRestClient
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.opplysninger.personopplysninger.secureLogger
import no.nav.tms.varsel.action.Produsent
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.fagsak.domain.Fagsak
import no.nav.familie.ef.sak.tilkjentytelse.domain.TilkjentYtelse
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.amelding.InntektService
import no.nav.familie.ef.sak.behandling.BehandlingService
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

data class NæringsinntektIngenEndringPdfRequest(
val saksid: String,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.arbeidsfordeling.ArbeidsfordelingService
import no.nav.familie.ef.sak.behandling.BehandlingService
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package no.nav.familie.ef.sak.næringsinntektskontroll

import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
import java.time.LocalDateTime
import java.util.UUID

@Table("naeringsinntekt_kontroll")
data class NæringsinntektKontrollDomain(
@Id
val id: UUID = UUID.randomUUID(),
val oppgaveId: Long,
val fagsakId: UUID,
@Column("kjoretidspunkt")
val kjøretidspunkt: LocalDateTime = LocalDateTime.now(),
val utfall: NæringsinntektKontrollUtfall,
)

enum class NæringsinntektKontrollUtfall {
KONTROLLERES_IKKE,
OPPFYLLER_IKKE_AKTIVITETSPLIKT,
MINIMUM_TI_PROSENT_ENDRING_I_INNTEKT,
UENDRET_INNTEKT,
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.prosessering.AsyncTaskStep
import no.nav.familie.prosessering.TaskStepBeskrivelse
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.repository.InsertUpdateRepository
import no.nav.familie.ef.sak.repository.RepositoryInterface
import org.springframework.stereotype.Repository
import java.util.UUID

@Repository
interface NæringsinntektKontrollRepository :
RepositoryInterface<NæringsinntektKontrollDomain, UUID>,
InsertUpdateRepository<NæringsinntektKontrollDomain>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.infrastruktur.featuretoggle.FeatureToggleService
import no.nav.familie.ef.sak.infrastruktur.featuretoggle.Toggle
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.infrastruktur.exception.Feil
import no.nav.familie.ef.sak.oppgave.OppgaveService
Expand All @@ -22,6 +22,7 @@ import java.util.UUID

@Service
class NæringsinntektKontrollService(
valringsinntektKontrollRepository: NæringsinntektKontrollRepository,
val oppgaveService: OppgaveService,
val tilkjentYtelseService: TilkjentYtelseService,
valringsinntektDataForBeregningService: NæringsinntektDataForBeregningService,
Expand Down Expand Up @@ -59,15 +60,20 @@ class NæringsinntektKontrollService(
val oppgaveMedUtsattFrist = næringsinntektDataForBeregning.oppgave.copy(fristFerdigstillelse = LocalDate.of(årstallIFjor + 2, 1, 11).toString())
oppgaveService.oppdaterOppgave(oppgaveMedUtsattFrist)
næringsinntektKontrollBrev.sendBrev(næringsinntektDataForBeregning) // Vurderes om skal tas i bruk eller ikke høst 2025. Favro: NAV-24146
næringsinntektKontrollRepository.insert(NæringsinntektKontrollDomain(oppgaveId = oppgaveId, fagsakId = næringsinntektDataForBeregning.fagsak.id, utfall = NæringsinntektKontrollUtfall.MINIMUM_TI_PROSENT_ENDRING_I_INNTEKT))
} else {
giBeskjedOmKontrollertInntektVedLøpendeOvergangsstønad(næringsinntektDataForBeregning.behandlingId, næringsinntektDataForBeregning.personIdent, årstallIFjor)
val avsluttOppgaveMedOppdatertBeskrivelse = næringsinntektDataForBeregning.oppgave.copy(beskrivelse = næringsinntektDataForBeregning.oppgave.beskrivelse + "\nAutomatisk avsluttet oppgave: Ingen endring i inntekt.", status = StatusEnum.FERDIGSTILT)
oppgaveService.oppdaterOppgave(avsluttOppgaveMedOppdatertBeskrivelse)
næringsinntektNotatService.lagNotat(næringsinntektDataForBeregning) // Må arkiveres / journalføres
næringsinntektKontrollRepository.insert(NæringsinntektKontrollDomain(oppgaveId = oppgaveId, fagsakId = næringsinntektDataForBeregning.fagsak.id, utfall = NæringsinntektKontrollUtfall.UENDRET_INNTEKT))
}
} else {
beOmRegnskap(næringsinntektDataForBeregning.personIdent, næringsinntektDataForBeregning.behandlingId)
næringsinntektKontrollRepository.insert(NæringsinntektKontrollDomain(oppgaveId = oppgaveId, fagsakId = næringsinntektDataForBeregning.fagsak.id, utfall = NæringsinntektKontrollUtfall.OPPFYLLER_IKKE_AKTIVITETSPLIKT))
}
} else {
næringsinntektKontrollRepository.insert(NæringsinntektKontrollDomain(oppgaveId = oppgaveId, fagsakId = næringsinntektDataForBeregning.fagsak.id, utfall = NæringsinntektKontrollUtfall.KONTROLLERES_IKKE))
}
opprettFremleggHvisOvergangsstønadMerEnn4MndIÅr(næringsinntektDataForBeregning)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.brev.BrevClient
import no.nav.familie.ef.sak.opplysninger.personopplysninger.PdlClient
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
CREATE TABLE naeringsinntekt_kontroll(
id UUID PRIMARY KEY,
oppgave_id INT,
fagsak_id UUID,
kjoretidspunkt TIMESTAMP(3),
utfall VARCHAR
);
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import no.nav.familie.ef.sak.fagsak.domain.FagsakPerson
import no.nav.familie.ef.sak.felles.util.TokenUtil
import no.nav.familie.ef.sak.infrastruktur.config.RolleConfig
import no.nav.familie.ef.sak.iverksett.oppgaveterminbarn.TerminbarnOppgave
import no.nav.familie.ef.sak.næringsinntektskontroll.NæringsinntektKontrollDomain
import no.nav.familie.ef.sak.oppgave.Oppgave
import no.nav.familie.ef.sak.opplysninger.personopplysninger.domene.Grunnlagsdata
import no.nav.familie.ef.sak.opplysninger.søknad.domain.Søknad
Expand Down Expand Up @@ -165,6 +166,7 @@ abstract class OppslagSpringRunnerTest {
Task::class,
Migreringsstatus::class,
OppgaverForOpprettelse::class,
NæringsinntektKontrollDomain::class,
).forEach { jdbcAggregateOperations.deleteAll(it.java) }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import io.mockk.every
import io.mockk.mockk
import io.mockk.slot
import no.nav.familie.ef.sak.minside.MinSideKafkaProducerService
import no.nav.familie.ef.sak.selvstendig.NæringsinntektBrukernotifikasjonService
import no.nav.familie.ef.sak.næringsinntektskontroll.NæringsinntektBrukernotifikasjonService
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Primary
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import io.mockk.every
import io.mockk.just
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package no.nav.familie.ef.sak.no.nav.familie.ef.sak.næringsinntektskontroll

import no.nav.familie.ef.sak.OppslagSpringRunnerTest
import no.nav.familie.ef.sak.næringsinntektskontroll.NæringsinntektKontrollDomain
import no.nav.familie.ef.sak.næringsinntektskontroll.NæringsinntektKontrollRepository
import no.nav.familie.ef.sak.næringsinntektskontroll.NæringsinntektKontrollUtfall
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import java.time.LocalDateTime
import java.util.UUID

class NæringsinntektKontrollRepositoryTest : OppslagSpringRunnerTest() {
@Autowired
private lateinit var næringsinntektKontrollRepository: NæringsinntektKontrollRepository

@Test
fun testInsert() {
næringsinntektKontrollRepository.insert(NæringsinntektKontrollDomain(oppgaveId = 1, fagsakId = UUID.randomUUID(), kjøretidspunkt = LocalDateTime.now(), utfall = NæringsinntektKontrollUtfall.UENDRET_INNTEKT))
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.nav.familie.ef.sak.selvstendig
package no.nav.familie.ef.sak.næringsinntektskontroll

import com.fasterxml.jackson.module.kotlin.readValue
import io.mockk.CapturingSlot
Expand Down Expand Up @@ -51,6 +51,9 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
@Autowired
private lateinit var næringsinntektKontrollService: NæringsinntektKontrollService

@Autowired
private lateinit var næringsinntektKontrollRepository: NæringsinntektKontrollRepository

@Autowired
private lateinit var behandlingRepository: BehandlingRepository

Expand Down Expand Up @@ -112,6 +115,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
assertThat(kafkaMeldingSlot.isCaptured).isTrue
assertThat(oppdaterOppgaveSlot.captured.fristFerdigstillelse).isEqualTo(LocalDate.of(LocalDate.now().year + 1, 1, 11).toString())
assertThat(oppgaveRepository.findByBehandlingIdAndType(behandlingIds.last(), Oppgavetype.Fremlegg)?.size).isEqualTo(1)
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.MINIMUM_TI_PROSENT_ENDRING_I_INNTEKT)
}
}

Expand All @@ -128,6 +132,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
kjørSomLeader {
næringsinntektKontrollService.kontrollerInntektForSelvstendigNæringsdrivende(2023, 9)
assertThat(oppdaterOppgaveSlot.captured.status).isEqualTo(StatusEnum.FERDIGSTILT)
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.UENDRET_INNTEKT)
}
}

Expand All @@ -148,6 +153,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
næringsinntektKontrollService.kontrollerInntektForSelvstendigNæringsdrivende(2023, 9)
assertThat(kafkaMeldingSlot.isCaptured).isTrue
assertThat(oppdaterOppgaveSlot.isCaptured).isTrue
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.MINIMUM_TI_PROSENT_ENDRING_I_INNTEKT)
}
}

Expand All @@ -158,8 +164,8 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
every { sigrunClient.hentPensjonsgivendeInntekt(any(), any()) } answers {
PensjonsgivendeInntektResponse(firstArg(), secondArg(), listOf(pensjonsgivendeInntektForSkatteordning))
}
val fom = LocalDate.of(YearMonth.now().year - 1, 5, 1)
val tom = LocalDate.of(YearMonth.now().year + 1, 6, 30)
val fom = LocalDate.of(2023, 5, 1)
val tom = LocalDate.of(2025, 6, 30)
val andelTilkjentYtelse = (lagAndelTilkjentYtelse(22761, fom, tom, personIdent, behandlingIds[3], 100_000, 0, 494))
val tilkjentYtelse = lagTilkjentYtelse(andelerTilkjentYtelse = listOf(andelTilkjentYtelse), behandlingId = behandlingIds[3], personident = personIdent, startdato = LocalDate.of(2022, 9, 1), grunnbeløpsmåned = YearMonth.of(2024, 5))
tilkjentYtelseRepository.insert(tilkjentYtelse)
Expand All @@ -168,6 +174,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
næringsinntektKontrollService.kontrollerInntektForSelvstendigNæringsdrivende(2023, 9)
assertThat(kafkaMeldingSlot.isCaptured).isTrue
assertThat(oppdaterOppgaveSlot.isCaptured).isTrue
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.UENDRET_INNTEKT)
}
}

Expand All @@ -183,6 +190,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
kjørSomLeader {
assertThat(kafkaMeldingSlot.isCaptured).isFalse()
næringsinntektKontrollService.kontrollerInntektForSelvstendigNæringsdrivende(2023, 9)
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.KONTROLLERES_IKKE)
}
}

Expand All @@ -198,6 +206,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
kjørSomLeader {
næringsinntektKontrollService.kontrollerInntektForSelvstendigNæringsdrivende(2023, 9)
assertThat(oppgaveRepository.findAll()).isEmpty()
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.KONTROLLERES_IKKE)
}
}

Expand All @@ -217,6 +226,7 @@ internal class NæringsinntektKontrollServiceTest : OppslagSpringRunnerTest() {
kjørSomLeader {
næringsinntektKontrollService.kontrollerInntektForSelvstendigNæringsdrivende(2023, 9)
assertThat(kafkaMeldingSlot.captured).contains("regnskap")
assertThat(næringsinntektKontrollRepository.findAll().first().utfall).isEqualTo(NæringsinntektKontrollUtfall.OPPFYLLER_IKKE_AKTIVITETSPLIKT)
}
}

Expand Down

0 comments on commit 1a96e67

Please sign in to comment.