Skip to content
Open
Show file tree
Hide file tree
Changes from 74 commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
c57b959
Legg til dependency til inntektskomponeneten
eirroer Nov 4, 2025
5c489c4
Legg til lagringstruktur for å lagre ned abonnementIDer sammen med ak…
eirroer Nov 4, 2025
c02dcf6
Merge branch 'master' into abonner-paa-inntekts-hendelser
eirroer Nov 5, 2025
b21711c
Endre klassenavn
eirroer Nov 5, 2025
9b9422f
Fix navn
eirroer Nov 5, 2025
6b11331
Opprett migreringsskript
eirroer Nov 5, 2025
7a77a68
Merge branch 'master' into abonner-paa-inntekts-hendelser
eirroer Nov 5, 2025
c7455ac
Oppdater entitet for abonnement
eirroer Nov 11, 2025
897d2d5
Oppdater migreringsskript
eirroer Nov 11, 2025
9214bae
Oppdater navn og bytt til å sette aktiv flagg til false istendenfor å…
eirroer Nov 11, 2025
ec21872
Opprett klient for abonnent-kall mot inntekstkomponenten
eirroer Nov 12, 2025
5692e89
Matcher navn med dto schemas, og setter limit til å hente 1000 hendel…
eirroer Nov 14, 2025
bc77746
Revert "Matcher navn med dto schemas, og setter limit til å hente 100…
eirroer Nov 14, 2025
a366625
Fix: Matcher navn med dto schemas, og setter limit til å hente 1000 h…
eirroer Nov 14, 2025
af74e5c
Oppretter tjeneste for å administrere og hente hendelser fra abonneme…
eirroer Nov 18, 2025
ae7d1ce
Endre metodenavn til hentAbonnenthendelser
eirroer Nov 18, 2025
9df2a0f
Merge branch 'master' into abonner-paa-inntekts-hendelser
eirroer Nov 18, 2025
943d66c
Bump k9-felles versjon til 9.2.0
eirroer Nov 18, 2025
ade32c1
Fjern todo og legg til logging
eirroer Nov 18, 2025
1525989
endre versjonsnummer på migreringsskript
eirroer Nov 18, 2025
4797b6f
Legg til metode for å hente første sekvensnummer fra tjenesten
eirroer Nov 19, 2025
ea85e72
Opprett task for å hente inntekthendelser for abonnenter
eirroer Nov 19, 2025
a640405
Opprett og avslutt inntekt abonnenter i VurderKompletthetStegImpl
eirroer Nov 19, 2025
0154e80
liten fiks
eirroer Nov 19, 2025
ea86b7a
Oppdater VurderKompletthetStegImplTest
eirroer Nov 19, 2025
c0c5b1d
Legg til feature flagg og konfigverdier
eirroer Nov 19, 2025
3a05d41
Merge branch 'master' into abonner-paa-inntekts-hendelser
eirroer Nov 20, 2025
8de8faa
Legg på aktiv flagg i query
eirroer Nov 20, 2025
4b994b8
Få med periode i opprettelse av abonnement
eirroer Nov 20, 2025
6bc1476
Fjern unødvendig sjekk av flagg
eirroer Nov 20, 2025
35276c1
Fjern logging av aktørid
eirroer Nov 20, 2025
d39691e
fix typo
eirroer Nov 20, 2025
bda0c93
fix typo
eirroer Nov 20, 2025
34ff8d2
Merge remote-tracking branch 'origin/abonner-paa-inntekts-hendelser' …
eirroer Nov 20, 2025
9d9ca14
bytte baseurl, og refaktorer
eirroer Nov 20, 2025
d0d6898
setter abonnement DTOer til private og pakkenivå
eirroer Nov 20, 2025
42f57c5
Merge branch 'master' into abonner-paa-inntekts-hendelser
eirroer Nov 20, 2025
cc8469d
opprett interface for restjenestefeil
eirroer Nov 21, 2025
fad3cd6
refaktorer
eirroer Nov 21, 2025
e280df9
håndter 404 dersom ingen sekvensnummer ved kall
eirroer Nov 21, 2025
2d4f1bd
Merge branch 'master' into abonner-paa-inntekts-hendelser
eirroer Nov 21, 2025
e0d2766
bruk behandlingrepository for å hente behandling istedenfor query
eirroer Nov 21, 2025
ecca3b8
refaktorerer for tydeligjøre flyten
eirroer Nov 21, 2025
83082f7
legg til sjekk på at hendelsen er relevant for behandlingen
eirroer Nov 21, 2025
54d64a1
refaktorerer for å ikke sjekke om behandling er relevant flere steder
eirroer Nov 21, 2025
7643beb
legg til toogle for å kunne logge innkommende inntekthendelser uten å…
eirroer Nov 21, 2025
929f1ed
fix
eirroer Nov 24, 2025
59266ae
tar bort noen konfigverdier for å forenkle
eirroer Nov 24, 2025
e94d51e
Håndter dersom ingen sekvensnummer fra inntektskomponenten ved oppsta…
eirroer Nov 24, 2025
457e8c4
Legg til url og scope i dev-miljøet
eirroer Nov 24, 2025
9f36107
gjør til metode til void siden returverdien ikke blir brukt
eirroer Nov 24, 2025
51d8f59
Oppgrader til inntektkomponenten V2 abonnentløsningen
eirroer Nov 24, 2025
0dbaf31
hent siste sekvensnummer på en safere måte og flytt filter av periode…
eirroer Nov 24, 2025
f5031b5
inntektskomponenten V2 tar personIdent og ikke lenger aktørId når abo…
eirroer Nov 24, 2025
0250a7d
bytt stream iterasjon til list
eirroer Nov 24, 2025
834817c
Fjern getter og sette på versjon
eirroer Nov 24, 2025
91b0414
Fjern unødvendige returns
eirroer Nov 24, 2025
d4126e2
Forenkle sjekk siden vi ikke avslutter behandlinger uten å også være …
eirroer Nov 24, 2025
db2f915
Småfiks
eirroer Nov 24, 2025
df116eb
Navn og typefiks
eirroer Nov 24, 2025
d3221e9
bytt til dependent
eirroer Nov 24, 2025
c248a26
Fjern unødvending konvertering
eirroer Nov 24, 2025
acf7f31
Endre kommentar på kolonne
eirroer Nov 24, 2025
b665812
Fjern return statement
eirroer Nov 24, 2025
a092dbb
fjern logging
eirroer Nov 24, 2025
5a59448
legg til periode og sisteBrukdag kolonner i inntektAbonnent entiteten
eirroer Nov 25, 2025
a43c767
Legg til sjekk på periode ved opprettelse av abonnement
eirroer Nov 25, 2025
74c5ea2
fix
eirroer Nov 25, 2025
42f51e0
Kall igjen på idempotens avslutt metode for inntektsabonnement ved av…
eirroer Nov 25, 2025
916a9d4
Endre navn på konfig verdi for å unngå dobbelnegering
eirroer Nov 25, 2025
1d1c70a
Endre navn på konfig verdi for å unngå dobbelnegering
eirroer Nov 25, 2025
d015b55
Merge remote-tracking branch 'origin/abonner-paa-inntekts-hendelser' …
eirroer Nov 25, 2025
8a6fe7c
oppdater enhetstest
eirroer Nov 25, 2025
dc9c169
fjern unique contraint
eirroer Nov 25, 2025
4daa874
legg til sekvensgenerator for inntekt abonnement
eirroer Nov 26, 2025
8a27484
abstraherer bort sekvensnummer i en InntektHendelsetilstand record
eirroer Nov 26, 2025
5d07cd8
legg til enhetstester for InntektAbonnentTjeneste
eirroer Nov 27, 2025
36c2335
legg til enhetstest for sjekke at abonnent blir oprettet og lagret
eirroer Nov 27, 2025
de9375f
abonnementId skal være unik
eirroer Nov 27, 2025
3343ba5
legg til enhetstester for InntektHendelseTilstand og gjør record synl…
eirroer Nov 27, 2025
9f470d1
Implementasjon med enklere flyt (#932)
tendestad Nov 27, 2025
f5be20c
fjern tilstander med enhetstester
eirroer Nov 27, 2025
c28af6f
unngå nullpointerException
eirroer Nov 27, 2025
0b3bb6b
fjern ubrukt metode
eirroer Nov 27, 2025
2a2d1fe
fjern ubrukt metode
eirroer Nov 27, 2025
08850ac
flip toggle sånn at logikken blir riktig og fjern noe logging
eirroer Nov 27, 2025
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package no.nav.ung.sak.behandlingslager.tilkjentytelse;

import jakarta.persistence.AttributeOverride;
import jakarta.persistence.AttributeOverrides;
import jakarta.persistence.Column;
import jakarta.persistence.Embedded;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import no.nav.k9.felles.konfigurasjon.konfig.Tid;
import no.nav.ung.sak.behandlingslager.BaseEntitet;
import no.nav.ung.sak.behandlingslager.PostgreSQLRangeType;
import no.nav.ung.sak.behandlingslager.Range;
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
import no.nav.ung.sak.typer.AktørId;
import org.hibernate.annotations.Type;

import java.time.LocalDate;

@Entity(name = "InntektAbonnement")
@Table(name = "INNTEKT_ABONNEMENT")
public class InntektAbonnement extends BaseEntitet {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_INNTEKT_ABONNEMENT")
private Long id;

@Column(name = "abonnement_id", nullable = false)
private String abonnementId;

@Embedded
@AttributeOverrides(@AttributeOverride(name = "aktørId", column = @Column(name = "aktoer_id", nullable = false)))
private AktørId aktørId;

@Type(PostgreSQLRangeType.class)
@Column(name = "periode", columnDefinition = "daterange")
private Range<LocalDate> periode;

@Column(name = "siste_bruksdag", nullable = false)
private LocalDate sisteBruksdag;

@Version
@Column(name = "versjon", nullable = false)
private long versjon;

@Column(name = "aktiv", nullable = false)
private boolean aktiv = true;

public InntektAbonnement() {
}

public InntektAbonnement(String abonnementId, AktørId aktørId) {
this.abonnementId = abonnementId;
this.aktørId = aktørId;
}

public Long getId() {
return id;
}

public String getAbonnementId() {
return abonnementId;
}

public AktørId getAktørId() {
return aktørId;
}

public DatoIntervallEntitet getPeriode() {
return DatoIntervallEntitet.fra(periode);
}

void setPeriode(LocalDate fom, LocalDate tom) {
if ((fom == null || fom.equals(Tid.TIDENES_BEGYNNELSE))) {
throw new IllegalArgumentException(String.format("Alle saker må angi en startdato: [%s, %s]", fom, tom));
}
if (tom == null || tom.equals(Tid.TIDENES_ENDE)) {
throw new IllegalArgumentException();
}
this.periode = DatoIntervallEntitet.fra(fom, tom).toRange();
}

public LocalDate getSisteBruksdag() {
return sisteBruksdag;
}

public void setSisteBruksdag(LocalDate sisteBruksdag) {
this.sisteBruksdag = sisteBruksdag;
}

public boolean erAktiv() {
return aktiv;
}
public void setAktiv(boolean aktiv) {
this.aktiv = aktiv;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package no.nav.ung.sak.behandlingslager.tilkjentytelse;

import jakarta.enterprise.context.Dependent;
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
import no.nav.ung.sak.typer.AktørId;
import java.util.Optional;

@Dependent
public class InntektAbonnementRepository {

private EntityManager entityManager;

@Inject
public InntektAbonnementRepository(EntityManager entityManager) {
this.entityManager = entityManager;
}

public void lagre(InntektAbonnement abonnement) {
entityManager.persist(abonnement);
}

public Optional<InntektAbonnement> hentAbonnementForAktør(AktørId aktørId) {
var query = entityManager.createQuery(
"SELECT i FROM InntektAbonnement i WHERE i.aktørId = :aktørId AND i.aktiv = true",
InntektAbonnement.class
);
query.setParameter("aktørId", aktørId);
return query.getResultStream().findFirst();
}

public void slettAbonnement(InntektAbonnement abonnement) {
abonnement.setAktiv(false);
entityManager.persist(abonnement);
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,19 @@
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import no.nav.k9.felles.konfigurasjon.konfig.KonfigVerdi;
import no.nav.ung.kodeverk.behandling.BehandlingÅrsakType;
import no.nav.ung.kodeverk.behandling.aksjonspunkt.AksjonspunktDefinisjon;
import no.nav.ung.kodeverk.behandling.aksjonspunkt.Venteårsak;
import no.nav.ung.kodeverk.varsel.EtterlysningType;
import no.nav.ung.sak.behandling.BehandlingReferanse;
import no.nav.ung.sak.behandlingskontroll.*;
import no.nav.ung.sak.behandlingslager.behandling.BehandlingÅrsak;
import no.nav.ung.sak.behandlingslager.behandling.repository.BehandlingRepository;
import no.nav.ung.sak.behandlingslager.etterlysning.Etterlysning;
import no.nav.ung.sak.behandlingslager.etterlysning.EtterlysningRepository;
import no.nav.ung.sak.behandlingslager.fagsak.Fagsak;
import no.nav.ung.sak.domene.behandling.steg.kompletthet.registerinntektkontroll.KontrollerInntektEtterlysningOppretter;
import no.nav.ung.sak.domene.behandling.steg.kompletthet.registerinntektkontroll.RapporteringsfristAutopunktUtleder;
import no.nav.ung.sak.domene.behandling.steg.ungdomsprogramkontroll.ProgramperiodeendringEtterlysningTjeneste;
import no.nav.ung.sak.domene.registerinnhenting.InntektAbonnentTjeneste;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -57,8 +56,10 @@ public class VurderKompletthetStegImpl implements VurderKompletthetSteg {
private BehandlingRepository behandlingRepository;
private KontrollerInntektEtterlysningOppretter kontrollerInntektEtterlysningOppretter;
private ProgramperiodeendringEtterlysningTjeneste programperiodeendringEtterlysningTjeneste;
private InntektAbonnentTjeneste inntektAbonnentTjeneste;
private RapporteringsfristAutopunktUtleder rapporteringsfristAutopunktUtleder;
private Duration ventePeriode;
private boolean hentInntektHendelserEnabled;


VurderKompletthetStegImpl() {
Expand All @@ -69,14 +70,18 @@ public VurderKompletthetStegImpl(EtterlysningRepository etterlysningRepository,
BehandlingRepository behandlingRepository,
KontrollerInntektEtterlysningOppretter kontrollerInntektEtterlysningOppretter,
ProgramperiodeendringEtterlysningTjeneste programperiodeendringEtterlysningTjeneste,
InntektAbonnentTjeneste inntektAbonnentTjeneste,
RapporteringsfristAutopunktUtleder rapporteringsfristAutopunktUtleder,
@KonfigVerdi(value = "VENTEFRIST_UTTALELSE", defaultVerdi = "P14D") String ventePeriode) {
@KonfigVerdi(value = "VENTEFRIST_UTTALELSE", defaultVerdi = "P14D") String ventePeriode,
@KonfigVerdi(value = "HENT_INNTEKT_HENDELSER_ENABLED", required = false, defaultVerdi = "false") boolean hentInntektHendelserEnabled) {
this.etterlysningRepository = etterlysningRepository;
this.behandlingRepository = behandlingRepository;
this.kontrollerInntektEtterlysningOppretter = kontrollerInntektEtterlysningOppretter;
this.programperiodeendringEtterlysningTjeneste = programperiodeendringEtterlysningTjeneste;
this.inntektAbonnentTjeneste = inntektAbonnentTjeneste;
this.rapporteringsfristAutopunktUtleder = rapporteringsfristAutopunktUtleder;
this.ventePeriode = Duration.parse(ventePeriode);
this.hentInntektHendelserEnabled = hentInntektHendelserEnabled;
}

@Override
Expand All @@ -95,6 +100,10 @@ public VurderKompletthetStegImpl(EtterlysningRepository etterlysningRepository,
log.info("Behandling {} har ikke digital bruker, hopper over opprettelse av etterlysninger for endret programperiode og kontroll av inntekt.", kontekst.getBehandlingId());
}

if (hentInntektHendelserEnabled) {
inntektAbonnentTjeneste.opprettAbonnement(behandlingReferanse.getAktørId(), behandling.getFagsak().getPeriode().tilPeriode());
}

// Steg 2: Utled aksjonspunkter
List<AksjonspunktResultat> aksjonspunktResultater = new ArrayList<>();

Expand All @@ -105,6 +114,11 @@ public VurderKompletthetStegImpl(EtterlysningRepository etterlysningRepository,
// Sjekker etterlysninger opprettet i steg 1
final var etterlysningerSomVenterPåSvar = etterlysningRepository.hentEtterlysningerSomVenterPåSvar(kontekst.getBehandlingId());
aksjonspunktResultater.addAll(utledFraEtterlysninger(etterlysningerSomVenterPåSvar));

if(etterlysningerSomVenterPåSvar.isEmpty()) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Denne må være i sync med at steget blir ferdig uten aksjonspunktere for at vi alltid skal avslutte abonnementet, så kanskje bedre å sjekke mot aksjonpsunktResultater?

inntektAbonnentTjeneste.avsluttAbonnentHvisFinnes(behandlingReferanse.getAktørId());
}

return BehandleStegResultat.utførtMedAksjonspunktResultater(aksjonspunktResultater);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import no.nav.ung.sak.domene.behandling.steg.kompletthet.registerinntektkontroll.KontrollerInntektEtterlysningOppretter;
import no.nav.ung.sak.domene.behandling.steg.kompletthet.registerinntektkontroll.RapporteringsfristAutopunktUtleder;
import no.nav.ung.sak.domene.behandling.steg.ungdomsprogramkontroll.ProgramperiodeendringEtterlysningTjeneste;
import no.nav.ung.sak.domene.registerinnhenting.InntektAbonnentTjeneste;
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
import no.nav.ung.sak.typer.AktørId;
import no.nav.ung.sak.typer.Saksnummer;
Expand Down Expand Up @@ -71,9 +72,11 @@ void setUp() {
vurderKompletthetSteg = new VurderKompletthetStegImpl(etterlysningRepository, behandlingRepository,
mock(KontrollerInntektEtterlysningOppretter.class),
mock(ProgramperiodeendringEtterlysningTjeneste.class),
mock(InntektAbonnentTjeneste.class),
rapporteringsfristAutopunktUtleder,
"P14D");

"P14D",
false
);
}

@Test
Expand Down
9 changes: 9 additions & 0 deletions deploy/dev-gcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,11 @@ spec:
- name: KABAL_SCOPE
value: api://dev-gcp.klage.kabal-api/.default

- name: INNTEKTSKOMPONENTEN_URL
value: http://ikomp.team-inntekt/rest/v2/abonnement
- name: INNTEKTSKOMPONENTEN_SCOPE
value: api://dev-gcp.team-inntekt.ikomp/.default

# Saf
- name: SAF_BASE_URL
value: https://saf-q2.dev-fss-pub.nais.io
Expand Down Expand Up @@ -239,6 +244,8 @@ spec:
value: "true"
- name: OPPFRISK_KONTROLLBEHANDLING_ENABLED
value: "true"
- name: OPPFRISK_VED_INNKOMMENDE_INNTEKTSHENDELSE_ENABLED
value: "false"
- name: KLAGE_ENABLED
value: "true"
- name: INTEGRASJON_KABAL
Expand All @@ -263,6 +270,8 @@ spec:
value: "P1D"
- name: OVERSTYR_REGISTERDATA_DURATION
value: "PT30M"
- name: HENT_INNTEKT_HENDElSER_INTERVALL
value: "PT1M"

# Audit logging
- name: AUDITLOGGER_ENABLED
Expand Down
2 changes: 2 additions & 0 deletions deploy/prod-gcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,8 @@ spec:
value: "15"
- name: VENTEFRIST_UTTALELSE
value: "P14D"
- name: HENT_INNTEKT_HENDElSER_INTERVALL
value: "PT1M"

# Audit logging
- name: AUDITLOGGER_ENABLED
Expand Down
Loading
Loading