Skip to content

Commit e194140

Browse files
authored
Tsff 1204 håndtering av inntektbekreftelser og uttalelse (#253)
* Felles håndtering av bekreftelser * Støtte for uttalelse og svar journalpost * oppdaterer ikke abakus hvis bruker er uenig flytter historikkinnslag til parent da det er felles * kan ikke ha immutable da status skal endre seg
1 parent 1293460 commit e194140

File tree

17 files changed

+634
-71
lines changed

17 files changed

+634
-71
lines changed

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/etterlysning/Etterlysning.java

+46-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
package no.nav.ung.sak.behandlingslager.etterlysning;
22

3-
import jakarta.persistence.*;
3+
import java.time.LocalDateTime;
4+
import java.util.UUID;
5+
6+
import jakarta.persistence.AttributeOverride;
7+
import jakarta.persistence.AttributeOverrides;
8+
import jakarta.persistence.Column;
9+
import jakarta.persistence.Embedded;
10+
import jakarta.persistence.Entity;
11+
import jakarta.persistence.GeneratedValue;
12+
import jakarta.persistence.GenerationType;
13+
import jakarta.persistence.Id;
14+
import jakarta.persistence.JoinColumn;
15+
import jakarta.persistence.OneToOne;
16+
import jakarta.persistence.Table;
417
import no.nav.ung.kodeverk.etterlysning.EtterlysningStatus;
518
import no.nav.ung.kodeverk.etterlysning.EtterlysningType;
619
import no.nav.ung.sak.behandlingslager.BaseEntitet;
720
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
8-
import org.hibernate.annotations.Immutable;
9-
10-
import java.time.LocalDateTime;
11-
import java.util.UUID;
21+
import no.nav.ung.sak.typer.JournalpostId;
1222

1323
@Entity(name = "Etterlysning")
1424
@Table(name = "ETTERLYSNING")
15-
@Immutable
1625
public class Etterlysning extends BaseEntitet {
1726

1827
@Id
@@ -25,6 +34,9 @@ public class Etterlysning extends BaseEntitet {
2534
@Column(name = "grunnlag_ref", nullable = false)
2635
private UUID grunnlagsreferanse;
2736

37+
/**
38+
* Referanse mot deltager-app oppgave styrt av ung-sak
39+
*/
2840
@Column(name = "ekstern_ref", nullable = false)
2941
private UUID eksternReferanse;
3042

@@ -40,6 +52,14 @@ public class Etterlysning extends BaseEntitet {
4052
@Column(name = "frist")
4153
private LocalDateTime frist;
4254

55+
@Embedded
56+
@AttributeOverrides(@AttributeOverride(name = "journalpostId", column = @Column(name = "svar_journalpost_id")))
57+
private JournalpostId svarJournalpostId;
58+
59+
@OneToOne
60+
@JoinColumn(name = "id", referencedColumnName = "etterlysning_id")
61+
private UttalelseEntitet uttalelse;
62+
4363
private Etterlysning() {
4464
// Hibernate
4565
}
@@ -136,4 +156,24 @@ public void skalAvbrytes() {
136156
}
137157

138158

159+
public void mottattSvar(JournalpostId svarJournalpostId) {
160+
if (status != EtterlysningStatus.VENTER) {
161+
throw new IllegalStateException("Kan ikke motta svar på etterlysning som ikke er satt til VENTER. Status er " + status);
162+
}
163+
this.svarJournalpostId = svarJournalpostId;
164+
this.status = EtterlysningStatus.MOTTATT_SVAR;
165+
}
166+
167+
public void mottattUttalelse(String uttalelse, JournalpostId svarJournalpostId) {
168+
mottattSvar(svarJournalpostId);
169+
this.uttalelse = new UttalelseEntitet(uttalelse, this.id);
170+
}
171+
172+
public JournalpostId getSvarJournalpostId() {
173+
return svarJournalpostId;
174+
}
175+
176+
public UttalelseEntitet getUttalelse() {
177+
return uttalelse;
178+
}
139179
}

behandlingslager/domene/src/main/java/no/nav/ung/sak/behandlingslager/etterlysning/EtterlysningRepository.java

+27-5
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import jakarta.enterprise.context.ApplicationScoped;
44
import jakarta.inject.Inject;
55
import jakarta.persistence.EntityManager;
6+
import no.nav.k9.felles.jpa.HibernateVerktøy;
67
import no.nav.ung.kodeverk.etterlysning.EtterlysningStatus;
78
import no.nav.ung.kodeverk.etterlysning.EtterlysningType;
89

910
import java.time.LocalDateTime;
1011
import java.util.List;
12+
import java.util.UUID;
1113

1214
@ApplicationScoped
1315
public class EtterlysningRepository {
@@ -24,26 +26,29 @@ public EtterlysningRepository(EntityManager entityManager) {
2426
}
2527

2628
public Etterlysning lagre(Etterlysning etterlysning) {
29+
if (etterlysning.getUttalelse() != null) {
30+
entityManager.persist(etterlysning.getUttalelse());
31+
}
2732
entityManager.persist(etterlysning);
2833
return etterlysning;
2934
}
3035

3136
public List<Etterlysning> lagre(List<Etterlysning> etterlysninger) {
32-
etterlysninger.forEach(entityManager::persist);
37+
etterlysninger.forEach(this::lagre);
3338
return etterlysninger;
3439
}
3540

3641
public List<Etterlysning> hentEtterlysninger(Long behandlingId) {
3742
final var etterlysninger = entityManager.createQuery("select e from Etterlysning e " +
38-
"where e.behandlingId = :behandlingId", Etterlysning.class)
43+
"where e.behandlingId = :behandlingId", Etterlysning.class)
3944
.setParameter("behandlingId", behandlingId)
4045
.getResultList();
4146
return etterlysninger;
4247
}
4348

4449
public List<Etterlysning> hentEtterlysninger(Long behandlingId, EtterlysningType type) {
4550
final var etterlysninger = entityManager.createQuery("select e from Etterlysning e " +
46-
"where e.behandlingId = :behandlingId and e.type = :type", Etterlysning.class)
51+
"where e.behandlingId = :behandlingId and e.type = :type", Etterlysning.class)
4752
.setParameter("behandlingId", behandlingId)
4853
.setParameter("type", type)
4954
.getResultList();
@@ -53,7 +58,7 @@ public List<Etterlysning> hentEtterlysninger(Long behandlingId, EtterlysningType
5358

5459
public List<Etterlysning> hentOpprettetEtterlysninger(Long behandlingId, EtterlysningType type) {
5560
final var etterlysninger = entityManager.createQuery("select e from Etterlysning e " +
56-
"where e.behandlingId = :behandlingId and e.type = :type and status = :status", Etterlysning.class)
61+
"where e.behandlingId = :behandlingId and e.type = :type and status = :status", Etterlysning.class)
5762
.setParameter("behandlingId", behandlingId)
5863
.setParameter("type", type)
5964
.setParameter("status", EtterlysningStatus.OPPRETTET)
@@ -63,7 +68,7 @@ public List<Etterlysning> hentOpprettetEtterlysninger(Long behandlingId, Etterly
6368

6469
public List<Etterlysning> hentEtterlysningerSomSkalAvbrytes(Long behandlingId) {
6570
final var etterlysninger = entityManager.createQuery("select e from Etterlysning e " +
66-
"where e.behandlingId = :behandlingId and e.type = :type and status = :status", Etterlysning.class)
71+
"where e.behandlingId = :behandlingId and e.type = :type and status = :status", Etterlysning.class)
6772
.setParameter("behandlingId", behandlingId)
6873
.setParameter("status", EtterlysningStatus.SKAL_AVBRYTES)
6974
.getResultList();
@@ -82,4 +87,21 @@ public List<Etterlysning> hentEtterlysningerSomSkalAvbrytes(Long behandlingId) {
8287
}
8388

8489

90+
public Etterlysning hentEtterlysningForEksternReferanse(UUID eksternReferanse) {
91+
return HibernateVerktøy.hentEksaktResultat(
92+
entityManager.createQuery(
93+
"select e from Etterlysning e " +
94+
"where e.eksternReferanse = :eksternReferanse", Etterlysning.class)
95+
.setParameter("eksternReferanse", eksternReferanse)
96+
);
97+
}
98+
99+
public Etterlysning hentEtterlysning(Long id) {
100+
return HibernateVerktøy.hentEksaktResultat(
101+
entityManager.createQuery(
102+
"select e from Etterlysning e " +
103+
"where e.id = :id", Etterlysning.class)
104+
.setParameter("id", id)
105+
);
106+
}
85107
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package no.nav.ung.sak.behandlingslager.etterlysning;
2+
3+
import org.hibernate.annotations.Immutable;
4+
5+
import jakarta.persistence.Column;
6+
import jakarta.persistence.Entity;
7+
import jakarta.persistence.GeneratedValue;
8+
import jakarta.persistence.GenerationType;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.Table;
11+
import no.nav.ung.sak.behandlingslager.BaseEntitet;
12+
13+
@Entity(name = "Uttalelse")
14+
@Table(name = "UTTALELSE")
15+
@Immutable
16+
public class UttalelseEntitet extends BaseEntitet {
17+
18+
@Id
19+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_UTTALELSE")
20+
private Long id;
21+
22+
@Column(name = "uttalelse", updatable = false, nullable = false)
23+
private String uttalelseTekst;
24+
25+
@Column(name = "etterlysning_id", updatable = false, nullable = false)
26+
private long etterlysningId;
27+
28+
29+
private UttalelseEntitet() {
30+
// Hibernate
31+
}
32+
33+
public UttalelseEntitet(String uttalelseTekst, long etterlysningId) {
34+
this.uttalelseTekst = uttalelseTekst;
35+
this.etterlysningId = etterlysningId;
36+
}
37+
38+
39+
public String getUttalelseTekst() {
40+
return uttalelseTekst;
41+
}
42+
43+
}

behandlingslager/domene/src/main/resources/META-INF/pu-default.etterlysning.orm.xml

+2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
version="3.0">
66

77
<sequence-generator name="SEQ_ETTERLYSNING" allocation-size="50" sequence-name="SEQ_ETTERLYSNING"/>
8+
<sequence-generator name="SEQ_UTTALELSE" allocation-size="50" sequence-name="SEQ_UTTALELSE"/>
89

910
<entity class="no.nav.ung.sak.behandlingslager.etterlysning.Etterlysning"/>
11+
<entity class="no.nav.ung.sak.behandlingslager.etterlysning.UttalelseEntitet"/>
1012

1113
</entity-mappings>

behandlingsprosess/src/main/java/no/nav/ung/sak/domene/behandling/steg/registerinntektkontroll/KontrollerInntektSteg.java

+16-10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
package no.nav.ung.sak.domene.behandling.steg.registerinntektkontroll;
22

3+
import static no.nav.ung.kodeverk.behandling.BehandlingStegType.KONTROLLER_REGISTER_INNTEKT;
4+
import static no.nav.ung.kodeverk.behandling.FagsakYtelseType.UNGDOMSYTELSE;
5+
6+
import java.time.LocalDateTime;
7+
import java.util.ArrayList;
8+
import java.util.List;
9+
import java.util.Set;
10+
import java.util.UUID;
11+
312
import jakarta.enterprise.context.ApplicationScoped;
413
import jakarta.inject.Inject;
514
import no.nav.fpsak.tidsserie.LocalDateSegment;
@@ -11,7 +20,13 @@
1120
import no.nav.ung.kodeverk.behandling.aksjonspunkt.Venteårsak;
1221
import no.nav.ung.kodeverk.etterlysning.EtterlysningStatus;
1322
import no.nav.ung.kodeverk.etterlysning.EtterlysningType;
14-
import no.nav.ung.sak.behandlingskontroll.*;
23+
import no.nav.ung.sak.behandlingskontroll.AksjonspunktResultat;
24+
import no.nav.ung.sak.behandlingskontroll.BehandleStegResultat;
25+
import no.nav.ung.sak.behandlingskontroll.BehandlingSteg;
26+
import no.nav.ung.sak.behandlingskontroll.BehandlingStegRef;
27+
import no.nav.ung.sak.behandlingskontroll.BehandlingTypeRef;
28+
import no.nav.ung.sak.behandlingskontroll.BehandlingskontrollKontekst;
29+
import no.nav.ung.sak.behandlingskontroll.FagsakYtelseTypeRef;
1530
import no.nav.ung.sak.behandlingslager.behandling.aksjonspunkt.Aksjonspunkt;
1631
import no.nav.ung.sak.behandlingslager.behandling.repository.BehandlingRepository;
1732
import no.nav.ung.sak.behandlingslager.etterlysning.Etterlysning;
@@ -26,15 +41,6 @@
2641
import no.nav.ung.sak.ytelse.RapportertInntektMapper;
2742
import no.nav.ung.sak.ytelse.RapporterteInntekter;
2843

29-
import java.time.LocalDateTime;
30-
import java.util.ArrayList;
31-
import java.util.List;
32-
import java.util.Set;
33-
import java.util.UUID;
34-
35-
import static no.nav.ung.kodeverk.behandling.BehandlingStegType.KONTROLLER_REGISTER_INNTEKT;
36-
import static no.nav.ung.kodeverk.behandling.FagsakYtelseType.UNGDOMSYTELSE;
37-
3844
@ApplicationScoped
3945
@BehandlingStegRef(value = KONTROLLER_REGISTER_INNTEKT)
4046
@BehandlingTypeRef

domenetjenester/mottak/src/main/java/no/nav/ung/sak/mottak/dokumentmottak/OppgittOpptjeningMapper.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@
1313
import no.nav.abakus.iaygrunnlag.kodeverk.VirksomhetType;
1414
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseType;
1515
import no.nav.abakus.iaygrunnlag.request.OppgittOpptjeningMottattRequest;
16+
import no.nav.k9.søknad.felles.opptjening.AnnenAktivitet;
17+
import no.nav.k9.søknad.felles.opptjening.Frilanser;
18+
import no.nav.k9.søknad.felles.opptjening.OpptjeningAktivitet;
19+
import no.nav.k9.søknad.felles.opptjening.SelvstendigNæringsdrivende;
20+
import no.nav.k9.søknad.felles.opptjening.UtenlandskArbeidsforhold;
21+
import no.nav.k9.søknad.felles.type.Organisasjonsnummer;
22+
import no.nav.k9.søknad.felles.type.Periode;
1623
import no.nav.ung.kodeverk.arbeidsforhold.ArbeidType;
1724
import no.nav.ung.kodeverk.geografisk.Landkoder;
1825
import no.nav.ung.sak.behandlingslager.behandling.Behandling;
@@ -25,15 +32,9 @@
2532
import no.nav.ung.sak.domene.iay.modell.OppgittUtenlandskVirksomhet;
2633
import no.nav.ung.sak.domene.typer.tid.DatoIntervallEntitet;
2734
import no.nav.ung.sak.typer.OrgNummer;
28-
import no.nav.k9.søknad.felles.opptjening.AnnenAktivitet;
29-
import no.nav.k9.søknad.felles.opptjening.Frilanser;
30-
import no.nav.k9.søknad.felles.opptjening.OpptjeningAktivitet;
31-
import no.nav.k9.søknad.felles.opptjening.SelvstendigNæringsdrivende;
32-
import no.nav.k9.søknad.felles.opptjening.UtenlandskArbeidsforhold;
33-
import no.nav.k9.søknad.felles.type.Organisasjonsnummer;
34-
import no.nav.k9.søknad.felles.type.Periode;
3535

3636
@Dependent
37+
//TODO trengs denne?
3738
public class OppgittOpptjeningMapper {
3839

3940
@Inject

domenetjenester/mottak/src/main/java/no/nav/ung/sak/mottak/dokumentmottak/inntektrapportering/OppgittOpptjeningMapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import no.nav.abakus.iaygrunnlag.AktørIdPersonident;
88
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseType;
99
import no.nav.abakus.iaygrunnlag.request.OppgittOpptjeningMottattRequest;
10-
import no.nav.k9.søknad.ytelse.ung.v1.OppgittInntekt;
10+
import no.nav.k9.søknad.ytelse.ung.v1.inntekt.OppgittInntekt;
1111
import no.nav.ung.kodeverk.arbeidsforhold.ArbeidType;
1212
import no.nav.ung.sak.behandling.BehandlingReferanse;
1313
import no.nav.ung.sak.behandlingslager.behandling.motattdokument.MottattDokument;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package no.nav.ung.sak.mottak.dokumentmottak.oppgavebekreftelse;
2+
3+
public interface BekreftelseHåndterer {
4+
5+
void håndter(OppgaveBekreftelseInnhold bekreftelse);
6+
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package no.nav.ung.sak.mottak.dokumentmottak.oppgavebekreftelse;
2+
3+
import jakarta.enterprise.context.Dependent;
4+
import jakarta.inject.Inject;
5+
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
6+
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.DatoEndring;
7+
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.EndretFomDatoBekreftelse;
8+
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.EndretTomDatoBekreftelse;
9+
import no.nav.ung.kodeverk.ungdomsytelse.periodeendring.UngdomsprogramPeriodeEndringType;
10+
import no.nav.ung.sak.behandlingslager.behandling.startdato.UngdomsprogramBekreftetPeriodeEndring;
11+
import no.nav.ung.sak.behandlingslager.behandling.startdato.UngdomsytelseStartdatoRepository;
12+
13+
@Dependent
14+
@OppgaveTypeRef(Bekreftelse.Type.UNG_ENDRET_FOM_DATO)
15+
@OppgaveTypeRef(Bekreftelse.Type.UNG_ENDRET_TOM_DATO)
16+
public class DatoEndringBekreftelseHåndterer implements BekreftelseHåndterer {
17+
18+
19+
private final UngdomsytelseStartdatoRepository ungdomsytelseStartdatoRepository;
20+
21+
@Inject
22+
public DatoEndringBekreftelseHåndterer(
23+
UngdomsytelseStartdatoRepository ungdomsytelseStartdatoRepository) {
24+
this.ungdomsytelseStartdatoRepository = ungdomsytelseStartdatoRepository;
25+
}
26+
27+
@Override
28+
public void håndter(OppgaveBekreftelseInnhold oppgaveBekreftelse) {
29+
DatoEndring bekreftelse = oppgaveBekreftelse.oppgaveBekreftelse().getBekreftelse();
30+
31+
final var bekreftetPeriodeEndring = new UngdomsprogramBekreftetPeriodeEndring(
32+
bekreftelse.getNyDato(),
33+
oppgaveBekreftelse.journalpostId(),
34+
finnBekreftetPeriodeEndring(bekreftelse));
35+
36+
var behandling = oppgaveBekreftelse.behandling();
37+
ungdomsytelseStartdatoRepository.lagre(behandling.getId(), bekreftetPeriodeEndring);
38+
}
39+
40+
private static UngdomsprogramPeriodeEndringType finnBekreftetPeriodeEndring(DatoEndring bekreftelse) {
41+
if (bekreftelse instanceof EndretTomDatoBekreftelse) {
42+
return UngdomsprogramPeriodeEndringType.ENDRET_OPPHØRSDATO;
43+
} else if (bekreftelse instanceof EndretFomDatoBekreftelse) {
44+
return UngdomsprogramPeriodeEndringType.ENDRET_STARTDATO;
45+
}
46+
throw new IllegalArgumentException("Kunne ikke håndtere bekreftelse av type " + bekreftelse.getType());
47+
}
48+
49+
}

0 commit comments

Comments
 (0)