Skip to content

Commit ea96c38

Browse files
authoredFeb 24, 2022
Oppretter tabeller og mapper til anviste andeler fra vedtatt ytelse (#1757)
1 parent a46f978 commit ea96c38

16 files changed

+495
-55
lines changed
 

‎.deploy/dev-fss-teamforeldrepenger.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,6 @@ spec:
106106
value: api://dev-fss.tbd.spokelse/.default
107107
- name: SPOKELSE_GRUNNLAG_URL
108108
value: http://spokelse.tbd/grunnlag
109+
110+
- name: SKAL_INNENTE_YTELSE_ANVIST_ANDELER
111+
value: true

‎.deploy/prod-fss-teamforeldrepenger.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,6 @@ spec:
105105
value: api://prod-fss.tbd.spokelse/.default
106106
- name: SPOKELSE_GRUNNLAG_URL
107107
value: http://spokelse.tbd/grunnlag
108+
109+
- name: SKAL_INNENTE_YTELSE_ANVIST_ANDELER
110+
value: false

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/domene/iay/YtelseAnvist.java

+17
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package no.nav.foreldrepenger.abakus.domene.iay;
22

33
import java.time.LocalDate;
4+
import java.util.LinkedHashSet;
45
import java.util.Objects;
56
import java.util.Optional;
7+
import java.util.Set;
68

79
import javax.persistence.AttributeOverride;
810
import javax.persistence.AttributeOverrides;
@@ -14,6 +16,7 @@
1416
import javax.persistence.Id;
1517
import javax.persistence.JoinColumn;
1618
import javax.persistence.ManyToOne;
19+
import javax.persistence.OneToMany;
1720
import javax.persistence.Table;
1821
import javax.persistence.Version;
1922

@@ -37,6 +40,10 @@ public class YtelseAnvist extends BaseEntitet implements IndexKey {
3740
@JoinColumn(name = "ytelse_id", nullable = false, updatable = false, unique = true)
3841
private Ytelse ytelse;
3942

43+
@OneToMany(mappedBy = "ytelseAnvist")
44+
@ChangeTracked
45+
private Set<YtelseAnvistAndel> ytelseAnvistAndeler = new LinkedHashSet<>();
46+
4047
@Embedded
4148
@ChangeTracked
4249
private IntervallEntitet anvistPeriode;
@@ -117,6 +124,16 @@ public void setYtelse(Ytelse ytelse) {
117124
this.ytelse = ytelse;
118125
}
119126

127+
public Set<YtelseAnvistAndel> getYtelseAnvistAndeler() {
128+
return ytelseAnvistAndeler;
129+
}
130+
131+
void leggTilYtelseAnvistAndel(YtelseAnvistAndel ytelseAnvistAndel) {
132+
ytelseAnvistAndel.setYtelseAnvist(this);
133+
this.ytelseAnvistAndeler.add(ytelseAnvistAndel);
134+
135+
}
136+
120137
@Override
121138
public boolean equals(Object o) {
122139
if (this == o) return true;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
package no.nav.foreldrepenger.abakus.domene.iay;
2+
3+
import java.util.Objects;
4+
import java.util.Optional;
5+
6+
import javax.persistence.AttributeOverride;
7+
import javax.persistence.AttributeOverrides;
8+
import javax.persistence.Column;
9+
import javax.persistence.Convert;
10+
import javax.persistence.Embedded;
11+
import javax.persistence.Entity;
12+
import javax.persistence.GeneratedValue;
13+
import javax.persistence.GenerationType;
14+
import javax.persistence.Id;
15+
import javax.persistence.JoinColumn;
16+
import javax.persistence.ManyToOne;
17+
import javax.persistence.Table;
18+
import javax.persistence.Version;
19+
20+
import no.nav.abakus.iaygrunnlag.kodeverk.IndexKey;
21+
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
22+
import no.nav.foreldrepenger.abakus.felles.diff.ChangeTracked;
23+
import no.nav.foreldrepenger.abakus.felles.diff.IndexKeyComposer;
24+
import no.nav.foreldrepenger.abakus.felles.jpa.BaseEntitet;
25+
import no.nav.foreldrepenger.abakus.typer.Beløp;
26+
import no.nav.foreldrepenger.abakus.typer.InternArbeidsforholdRef;
27+
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;
28+
import no.nav.foreldrepenger.abakus.vedtak.domene.InntektskategoriKodeverdiConverter;
29+
30+
31+
@Entity(name = "YtelseAnvistAndel")
32+
@Table(name = "IAY_YTELSE_ANVIST_ANDEL")
33+
public class YtelseAnvistAndel extends BaseEntitet implements IndexKey {
34+
35+
@Id
36+
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_IAY_YTELSE_ANVIST_ANDEL")
37+
private Long id;
38+
39+
@ManyToOne(optional = false)
40+
@JoinColumn(name = "ytelse_anvist_id", nullable = false, updatable = false, unique = true)
41+
private YtelseAnvist ytelseAnvist;
42+
43+
@Embedded
44+
@ChangeTracked
45+
private Arbeidsgiver arbeidsgiver;
46+
47+
@Embedded
48+
private InternArbeidsforholdRef arbeidsforholdRef;
49+
50+
@Embedded
51+
@AttributeOverrides(@AttributeOverride(name = "verdi", column = @Column(name = "dagsats", nullable = false)))
52+
@ChangeTracked
53+
private Beløp dagsats;
54+
55+
@Embedded
56+
@AttributeOverrides(@AttributeOverride(name = "verdi", column = @Column(name = "utbetalingsgrad_prosent")))
57+
@ChangeTracked
58+
private Stillingsprosent utbetalingsgradProsent;
59+
60+
@Embedded
61+
@AttributeOverrides(@AttributeOverride(name = "verdi", column = @Column(name = "refusjonsgrad_prosent")))
62+
@ChangeTracked
63+
private Stillingsprosent refusjonsgradProsent;
64+
65+
@Convert(converter = InntektskategoriKodeverdiConverter.class)
66+
@Column(name = "inntektskategori", nullable = false, updatable = false)
67+
private Inntektskategori inntektskategori = Inntektskategori.UDEFINERT;
68+
69+
70+
@Version
71+
@Column(name = "versjon", nullable = false)
72+
private long versjon;
73+
74+
public YtelseAnvistAndel() {
75+
// hibernate
76+
}
77+
78+
public YtelseAnvistAndel(YtelseAnvistAndel ytelseAnvistAndel) {
79+
ytelseAnvistAndel.getArbeidsgiver().ifPresent(this::setArbeidsgiver);
80+
this.dagsats = ytelseAnvistAndel.getDagsats();
81+
this.inntektskategori = ytelseAnvistAndel.getInntektskategori();
82+
this.refusjonsgradProsent = ytelseAnvistAndel.getRefusjonsgradProsent();
83+
this.utbetalingsgradProsent = ytelseAnvistAndel.getUtbetalingsgradProsent();
84+
this.arbeidsforholdRef = ytelseAnvistAndel.getArbeidsforholdRef();
85+
}
86+
87+
public Optional<Arbeidsgiver> getArbeidsgiver() {
88+
return Optional.ofNullable(arbeidsgiver);
89+
}
90+
91+
void setArbeidsgiver(Arbeidsgiver arbeidsgiver) {
92+
this.arbeidsgiver = arbeidsgiver;
93+
}
94+
95+
96+
public InternArbeidsforholdRef getArbeidsforholdRef() {
97+
return arbeidsforholdRef;
98+
}
99+
100+
void setArbeidsforholdRef(InternArbeidsforholdRef arbeidsforholdRef) {
101+
this.arbeidsforholdRef = arbeidsforholdRef;
102+
}
103+
104+
public Beløp getDagsats() {
105+
return dagsats;
106+
}
107+
108+
void setDagsats(Beløp dagsats) {
109+
this.dagsats = dagsats;
110+
}
111+
112+
public Stillingsprosent getUtbetalingsgradProsent() {
113+
return utbetalingsgradProsent;
114+
}
115+
116+
void setUtbetalingsgradProsent(Stillingsprosent utbetalingsgradProsent) {
117+
this.utbetalingsgradProsent = utbetalingsgradProsent;
118+
}
119+
120+
public Stillingsprosent getRefusjonsgradProsent() {
121+
return refusjonsgradProsent;
122+
}
123+
124+
void setRefusjonsgradProsent(Stillingsprosent refusjonsgradProsent) {
125+
this.refusjonsgradProsent = refusjonsgradProsent;
126+
}
127+
128+
void setYtelseAnvist(YtelseAnvist ytelseAnvist) {
129+
this.ytelseAnvist = ytelseAnvist;
130+
}
131+
132+
public Inntektskategori getInntektskategori() {
133+
return inntektskategori;
134+
}
135+
136+
void setInntektskategori(Inntektskategori inntektskategori) {
137+
this.inntektskategori = inntektskategori;
138+
}
139+
140+
@Override
141+
public boolean equals(Object o) {
142+
if (this == o) return true;
143+
if (o == null || getClass() != o.getClass()) return false;
144+
YtelseAnvistAndel that = (YtelseAnvistAndel) o;
145+
return ytelseAnvist.equals(that.ytelseAnvist) && Objects.equals(arbeidsgiver, that.arbeidsgiver) &&
146+
dagsats.equals(that.dagsats) &&
147+
inntektskategori == that.inntektskategori &&
148+
utbetalingsgradProsent.equals(that.utbetalingsgradProsent) &&
149+
refusjonsgradProsent.equals(that.refusjonsgradProsent);
150+
}
151+
152+
@Override
153+
public int hashCode() {
154+
return Objects.hash(ytelseAnvist, arbeidsgiver, dagsats, inntektskategori, utbetalingsgradProsent, refusjonsgradProsent);
155+
}
156+
157+
@Override
158+
public String toString() {
159+
return "YtelseAnvistAndel{" +
160+
"id=" + id +
161+
", ytelseAnvist=" + ytelseAnvist +
162+
", arbeidsgiver=" + arbeidsgiver +
163+
", arbeidsforholdRef=" + arbeidsforholdRef +
164+
", dagsats=" + dagsats +
165+
", utbetalingsgradProsent=" + utbetalingsgradProsent +
166+
", refusjonsgradProsent=" + refusjonsgradProsent +
167+
", inntektskategori=" + inntektskategori +
168+
", versjon=" + versjon +
169+
'}';
170+
}
171+
172+
@Override
173+
public String getIndexKey() {
174+
Object[] keyParts = { arbeidsgiver, dagsats, inntektskategori, utbetalingsgradProsent, refusjonsgradProsent };
175+
return IndexKeyComposer.createKey(keyParts);
176+
}
177+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package no.nav.foreldrepenger.abakus.domene.iay;
2+
3+
import java.math.BigDecimal;
4+
5+
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
6+
import no.nav.foreldrepenger.abakus.typer.Beløp;
7+
import no.nav.foreldrepenger.abakus.typer.InternArbeidsforholdRef;
8+
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;
9+
10+
public class YtelseAnvistAndelBuilder {
11+
private final YtelseAnvistAndel ytelseAnvistAndel;
12+
13+
YtelseAnvistAndelBuilder(YtelseAnvistAndel ytelseAnvistAndel) {
14+
this.ytelseAnvistAndel = ytelseAnvistAndel;
15+
}
16+
17+
public static YtelseAnvistAndelBuilder ny() {
18+
return new YtelseAnvistAndelBuilder(new YtelseAnvistAndel());
19+
}
20+
21+
public YtelseAnvistAndelBuilder medDagsats(BigDecimal dagsats) {
22+
if (dagsats != null) {
23+
this.ytelseAnvistAndel.setDagsats(new Beløp(dagsats));
24+
}
25+
return this;
26+
}
27+
28+
public YtelseAnvistAndelBuilder medUtbetalingsgrad(BigDecimal verdi) {
29+
if (verdi != null) {
30+
this.ytelseAnvistAndel.setUtbetalingsgradProsent(new Stillingsprosent(verdi));
31+
}
32+
return this;
33+
}
34+
35+
public YtelseAnvistAndelBuilder medRefusjonsgrad(BigDecimal verdi) {
36+
if (verdi != null) {
37+
this.ytelseAnvistAndel.setRefusjonsgradProsent(new Stillingsprosent(verdi));
38+
}
39+
return this;
40+
}
41+
42+
public YtelseAnvistAndelBuilder medArbeidsgiver(Arbeidsgiver arbeidsgiver) {
43+
if (arbeidsgiver != null) {
44+
this.ytelseAnvistAndel.setArbeidsgiver(arbeidsgiver);
45+
}
46+
return this;
47+
}
48+
49+
public YtelseAnvistAndelBuilder medArbeidsforholdRef(InternArbeidsforholdRef arbeidsforholdRef) {
50+
this.ytelseAnvistAndel.setArbeidsforholdRef(arbeidsforholdRef);
51+
return this;
52+
}
53+
54+
55+
public YtelseAnvistAndelBuilder medInntektskategori(Inntektskategori inntektskategori) {
56+
if (inntektskategori != null) {
57+
this.ytelseAnvistAndel.setInntektskategori(inntektskategori);
58+
}
59+
return this;
60+
}
61+
62+
public YtelseAnvistAndel build() {
63+
return ytelseAnvistAndel;
64+
}
65+
66+
}

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/domene/iay/YtelseAnvistBuilder.java

+6
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ public YtelseAnvistBuilder medUtbetalingsgradProsent(BigDecimal utbetalingsgradP
4343
return this;
4444
}
4545

46+
public YtelseAnvistBuilder leggTilYtelseAnvistAndel(YtelseAnvistAndel ytelseAnvistAndel) {
47+
this.ytelseAnvist.leggTilYtelseAnvistAndel(ytelseAnvistAndel);
48+
return this;
49+
}
50+
51+
4652
public YtelseAnvist build() {
4753
return ytelseAnvist;
4854
}

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/registerdata/DefaultIAYRegisterInnhentingTjenesteImpl.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ public DefaultIAYRegisterInnhentingTjenesteImpl(InntektArbeidYtelseTjeneste innt
3131
VirksomhetTjeneste virksomhetTjeneste,
3232
InnhentingSamletTjeneste innhentingSamletTjeneste,
3333
AktørTjeneste aktørConsumer,
34-
SigrunTjeneste sigrunTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
34+
SigrunTjeneste sigrunTjeneste, VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste) {
3535
super(inntektArbeidYtelseTjeneste,
3636
virksomhetTjeneste,
3737
innhentingSamletTjeneste,
3838
aktørConsumer,
39-
sigrunTjeneste, vedtakYtelseRepository);
39+
sigrunTjeneste, vedtattYtelseInnhentingTjeneste);
4040
}
4141

4242
@Override

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/registerdata/IAYRegisterInnhentingFellesTjenesteImpl.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,14 @@ protected IAYRegisterInnhentingFellesTjenesteImpl(InntektArbeidYtelseTjeneste in
7878
VirksomhetTjeneste virksomhetTjeneste,
7979
InnhentingSamletTjeneste innhentingSamletTjeneste,
8080
AktørTjeneste aktørConsumer,
81-
SigrunTjeneste sigrunTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
81+
SigrunTjeneste sigrunTjeneste,
82+
VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste) {
8283
this.inntektArbeidYtelseTjeneste = inntektArbeidYtelseTjeneste;
8384
this.virksomhetTjeneste = virksomhetTjeneste;
8485
this.innhentingSamletTjeneste = innhentingSamletTjeneste;
8586
this.aktørConsumer = aktørConsumer;
8687
this.sigrunTjeneste = sigrunTjeneste;
87-
this.ytelseRegisterInnhenting = new YtelseRegisterInnhenting(innhentingSamletTjeneste, vedtakYtelseRepository);
88+
this.ytelseRegisterInnhenting = new YtelseRegisterInnhenting(innhentingSamletTjeneste, vedtattYtelseInnhentingTjeneste);
8889
this.byggYrkesaktiviteterTjeneste = new ByggYrkesaktiviteterTjeneste();
8990
}
9091

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package no.nav.foreldrepenger.abakus.registerdata;
2+
3+
import java.time.LocalDate;
4+
import java.util.List;
5+
6+
import javax.enterprise.context.ApplicationScoped;
7+
import javax.inject.Inject;
8+
9+
import no.nav.foreldrepenger.abakus.domene.iay.Arbeidsgiver;
10+
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseAggregatBuilder;
11+
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseGrunnlagBuilder;
12+
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseRepository;
13+
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvistAndel;
14+
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvistAndelBuilder;
15+
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvistBuilder;
16+
import no.nav.foreldrepenger.abakus.domene.iay.YtelseBuilder;
17+
import no.nav.foreldrepenger.abakus.domene.iay.arbeidsforhold.ArbeidsforholdInformasjonBuilder;
18+
import no.nav.foreldrepenger.abakus.felles.jpa.IntervallEntitet;
19+
import no.nav.foreldrepenger.abakus.kobling.Kobling;
20+
import no.nav.foreldrepenger.abakus.typer.AktørId;
21+
import no.nav.foreldrepenger.abakus.typer.Beløp;
22+
import no.nav.foreldrepenger.abakus.typer.EksternArbeidsforholdRef;
23+
import no.nav.foreldrepenger.abakus.typer.InternArbeidsforholdRef;
24+
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;
25+
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelse;
26+
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseAndel;
27+
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
28+
import no.nav.foreldrepenger.konfig.KonfigVerdi;
29+
30+
@ApplicationScoped
31+
public class VedtattYtelseInnhentingTjeneste {
32+
33+
private VedtakYtelseRepository vedtakYtelseRepository;
34+
private boolean skalInnhenteAnvisteAndeler;
35+
private InntektArbeidYtelseRepository inntektArbeidYtelseRepository;
36+
37+
protected VedtattYtelseInnhentingTjeneste() {
38+
}
39+
40+
@Inject
41+
public VedtattYtelseInnhentingTjeneste(VedtakYtelseRepository vedtakYtelseRepository,
42+
@KonfigVerdi(value = "SKAL_INNENTE_YTELSE_ANVIST_ANDELER", defaultVerdi = "false") boolean skalInnhenteAnvisteAndeler,
43+
InntektArbeidYtelseRepository inntektArbeidYtelseRepository) {
44+
this.vedtakYtelseRepository = vedtakYtelseRepository;
45+
this.skalInnhenteAnvisteAndeler = skalInnhenteAnvisteAndeler;
46+
this.inntektArbeidYtelseRepository = inntektArbeidYtelseRepository;
47+
}
48+
49+
void innhentFraYtelsesRegister(AktørId aktørId, Kobling kobling, InntektArbeidYtelseAggregatBuilder.AktørYtelseBuilder builder) {
50+
IntervallEntitet opplysningsperiode = kobling.getOpplysningsperiode();
51+
List<VedtakYtelse> vedtatteYtelser = vedtakYtelseRepository.hentYtelserForIPeriode(aktørId, opplysningsperiode.getFomDato(), opplysningsperiode.getTomDato());
52+
53+
var arbeidsforholdInformasjon = inntektArbeidYtelseRepository.hentArbeidsforholdInformasjonForBehandling(kobling.getKoblingReferanse());
54+
var arbeidsforholdInformasjonBuilder = ArbeidsforholdInformasjonBuilder.builder(arbeidsforholdInformasjon);
55+
for (var vedtattYtelse : vedtatteYtelser) {
56+
YtelseBuilder ytelseBuilder = builder.getYtelselseBuilderForType(vedtattYtelse.getKilde(), vedtattYtelse.getYtelseType(), vedtattYtelse.getSaksnummer());
57+
ytelseBuilder.medPeriode(vedtattYtelse.getPeriode())
58+
.medStatus(vedtattYtelse.getStatus())
59+
.medVedtattTidspunkt(vedtattYtelse.getVedtattTidspunkt());
60+
61+
mapAnvisninger(vedtattYtelse, ytelseBuilder, arbeidsforholdInformasjonBuilder);
62+
builder.leggTilYtelse(ytelseBuilder);
63+
}
64+
var inntektArbeidYtelseGrunnlag = inntektArbeidYtelseRepository.hentInntektArbeidYtelseGrunnlagForBehandling(kobling.getKoblingReferanse());
65+
var nyttGrunnlagBuilder = InntektArbeidYtelseGrunnlagBuilder.oppdatere(inntektArbeidYtelseGrunnlag);
66+
nyttGrunnlagBuilder.medInformasjon(arbeidsforholdInformasjonBuilder.build());
67+
inntektArbeidYtelseRepository.lagre(kobling.getKoblingReferanse(), nyttGrunnlagBuilder);
68+
}
69+
70+
71+
private void mapAnvisninger(VedtakYtelse vedtattYtelse, YtelseBuilder ytelseBuilder, ArbeidsforholdInformasjonBuilder arbeidsforholdInformasjonBuilder) {
72+
vedtattYtelse.getYtelseAnvist().forEach(anvisning -> {
73+
YtelseAnvistBuilder anvistBuilder = ytelseBuilder.getAnvistBuilder();
74+
IntervallEntitet periode = utledPeriodeNårTomMuligFørFom(anvisning.getAnvistFom(), anvisning.getAnvistTom());
75+
anvistBuilder.medAnvistPeriode(periode)
76+
.medBeløp(anvisning.getBeløp().map(Beløp::getVerdi).orElse(null))
77+
.medDagsats(anvisning.getDagsats().map(Beløp::getVerdi).orElse(null))
78+
.medUtbetalingsgradProsent(anvisning.getUtbetalingsgradProsent().map(Stillingsprosent::getVerdi).orElse(null));
79+
if (skalInnhenteAnvisteAndeler) {
80+
if (anvisning.getAndeler() != null) {
81+
anvisning.getAndeler()
82+
.forEach(andel -> anvistBuilder.leggTilYtelseAnvistAndel(mapAndel(arbeidsforholdInformasjonBuilder, andel)));
83+
}
84+
}
85+
ytelseBuilder.leggtilYtelseAnvist(anvistBuilder.build());
86+
});
87+
}
88+
89+
private YtelseAnvistAndel mapAndel(ArbeidsforholdInformasjonBuilder arbeidsforholdInformasjonBuilder, VedtakYtelseAndel andel) {
90+
var arbeidsgiver = mapArbeidsgiver(andel);
91+
return YtelseAnvistAndelBuilder.ny()
92+
.medArbeidsgiver(arbeidsgiver)
93+
.medArbeidsforholdRef(mapInternArbeidsforholdRef(arbeidsforholdInformasjonBuilder, andel, arbeidsgiver))
94+
.medInntektskategori(andel.getInntektskategori())
95+
.medRefusjonsgrad(andel.getRefusjonsgradProsent().getVerdi())
96+
.medUtbetalingsgrad(andel.getUtbetalingsgradProsent().getVerdi())
97+
.medDagsats(andel.getDagsats().getVerdi())
98+
.build();
99+
}
100+
101+
private InternArbeidsforholdRef mapInternArbeidsforholdRef(ArbeidsforholdInformasjonBuilder arbeidsforholdInformasjonBuilder, VedtakYtelseAndel andel, Arbeidsgiver arbeidsgiver) {
102+
if (andel.getArbeidsforholdId() != null) {
103+
return arbeidsforholdInformasjonBuilder.finnEllerOpprett(arbeidsgiver, EksternArbeidsforholdRef.ref(andel.getArbeidsforholdId()));
104+
}
105+
return null;
106+
}
107+
108+
private Arbeidsgiver mapArbeidsgiver(VedtakYtelseAndel andel) {
109+
return andel.getArbeidsgiver().map(a -> a.getOrgnr() != null ? Arbeidsgiver.virksomhet(a.getOrgnr()) : Arbeidsgiver.person(a.getAktørId())).orElse(null);
110+
}
111+
112+
private IntervallEntitet utledPeriodeNårTomMuligFørFom(LocalDate fom, LocalDate tom) {
113+
if (tom == null) {
114+
return IntervallEntitet.fraOgMed(fom);
115+
}
116+
if (tom.isBefore(fom)) {
117+
return IntervallEntitet.fraOgMedTilOgMed(fom, fom);
118+
}
119+
return IntervallEntitet.fraOgMedTilOgMed(fom, tom);
120+
}
121+
122+
123+
124+
}

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/registerdata/YtelseRegisterInnhenting.java

+6-35
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import no.nav.abakus.iaygrunnlag.kodeverk.Fagsystem;
99
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseAggregatBuilder;
10-
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvistBuilder;
1110
import no.nav.foreldrepenger.abakus.domene.iay.YtelseBuilder;
1211
import no.nav.foreldrepenger.abakus.domene.iay.YtelseGrunnlag;
1312
import no.nav.foreldrepenger.abakus.domene.iay.YtelseGrunnlagBuilder;
@@ -19,22 +18,20 @@
1918
import no.nav.foreldrepenger.abakus.registerdata.ytelse.infotrygd.dto.InfotrygdYtelseAnvist;
2019
import no.nav.foreldrepenger.abakus.registerdata.ytelse.infotrygd.dto.InfotrygdYtelseGrunnlag;
2120
import no.nav.foreldrepenger.abakus.typer.AktørId;
22-
import no.nav.foreldrepenger.abakus.typer.Beløp;
2321
import no.nav.foreldrepenger.abakus.typer.OrgNummer;
2422
import no.nav.foreldrepenger.abakus.typer.OrganisasjonsNummerValidator;
2523
import no.nav.foreldrepenger.abakus.typer.PersonIdent;
2624
import no.nav.foreldrepenger.abakus.typer.Saksnummer;
27-
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;
28-
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelse;
2925
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
3026

3127
public class YtelseRegisterInnhenting {
3228
private final InnhentingSamletTjeneste innhentingSamletTjeneste;
33-
private final VedtakYtelseRepository vedtakYtelseRepository;
29+
private final VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste;
3430

35-
YtelseRegisterInnhenting(InnhentingSamletTjeneste innhentingSamletTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
31+
YtelseRegisterInnhenting(InnhentingSamletTjeneste innhentingSamletTjeneste,
32+
VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste) {
3633
this.innhentingSamletTjeneste = innhentingSamletTjeneste;
37-
this.vedtakYtelseRepository = vedtakYtelseRepository;
34+
this.vedtattYtelseInnhentingTjeneste = vedtattYtelseInnhentingTjeneste;
3835
}
3936

4037
void byggYtelser(Kobling behandling, AktørId aktørId, PersonIdent ident, IntervallEntitet opplysningsPeriode,
@@ -43,7 +40,7 @@ void byggYtelser(Kobling behandling, AktørId aktørId, PersonIdent ident, Inter
4340
InntektArbeidYtelseAggregatBuilder.AktørYtelseBuilder aktørYtelseBuilder = inntektArbeidYtelseAggregatBuilder.getAktørYtelseBuilder(aktørId);
4441
aktørYtelseBuilder.tilbakestillYtelser();
4542

46-
innhentFraYtelsesRegister(aktørId, behandling, aktørYtelseBuilder);
43+
vedtattYtelseInnhentingTjeneste.innhentFraYtelsesRegister(aktørId, behandling, aktørYtelseBuilder);
4744

4845
if (!medGrunnlag) {
4946
// Ikke lenger relevant å hente eksternt for 2part eller engangsstønad
@@ -65,38 +62,12 @@ void byggYtelser(Kobling behandling, AktørId aktørId, PersonIdent ident, Inter
6562
inntektArbeidYtelseAggregatBuilder.leggTilAktørYtelse(aktørYtelseBuilder);
6663
}
6764

68-
void innhentFraYtelsesRegister(AktørId aktørId, Kobling kobling, InntektArbeidYtelseAggregatBuilder.AktørYtelseBuilder builder) {
69-
IntervallEntitet opplysningsperiode = kobling.getOpplysningsperiode();
70-
List<VedtakYtelse> vedtatteYtelser = vedtakYtelseRepository.hentYtelserForIPeriode(aktørId, opplysningsperiode.getFomDato(), opplysningsperiode.getTomDato());
71-
72-
for (var vedtattYtelse : vedtatteYtelser) {
73-
YtelseBuilder ytelseBuilder = builder.getYtelselseBuilderForType(vedtattYtelse.getKilde(), vedtattYtelse.getYtelseType(), vedtattYtelse.getSaksnummer());
74-
ytelseBuilder.medPeriode(vedtattYtelse.getPeriode())
75-
.medStatus(vedtattYtelse.getStatus())
76-
.medVedtattTidspunkt(vedtattYtelse.getVedtattTidspunkt());
77-
78-
mapAnvisninger(vedtattYtelse, ytelseBuilder);
79-
builder.leggTilYtelse(ytelseBuilder);
80-
}
81-
}
82-
83-
private void mapAnvisninger(VedtakYtelse vedtattYtelse, YtelseBuilder ytelseBuilder) {
84-
vedtattYtelse.getYtelseAnvist().forEach(anvisning -> {
85-
YtelseAnvistBuilder anvistBuilder = ytelseBuilder.getAnvistBuilder();
86-
IntervallEntitet periode = utledPeriodeNårTomMuligFørFom(anvisning.getAnvistFom(), anvisning.getAnvistTom());
87-
anvistBuilder.medAnvistPeriode(periode)
88-
.medBeløp(anvisning.getBeløp().map(Beløp::getVerdi).orElse(null))
89-
.medDagsats(anvisning.getDagsats().map(Beløp::getVerdi).orElse(null))
90-
.medUtbetalingsgradProsent(anvisning.getUtbetalingsgradProsent().map(Stillingsprosent::getVerdi).orElse(null));
91-
ytelseBuilder.leggtilYtelseAnvist(anvistBuilder.build());
92-
});
93-
}
9465

9566
private void oversettInfotrygdYtelseGrunnlagTilYtelse(InntektArbeidYtelseAggregatBuilder.AktørYtelseBuilder aktørYtelseBuilder, InfotrygdYtelseGrunnlag grunnlag) {
9667
IntervallEntitet periode = utledPeriodeNårTomMuligFørFom(grunnlag.getVedtaksPeriodeFom(), grunnlag.getVedtaksPeriodeTom());
9768
var tidligsteAnvist = grunnlag.getUtbetaltePerioder().stream().map(InfotrygdYtelseAnvist::getUtbetaltFom).min(Comparator.naturalOrder());
9869
YtelseBuilder ytelseBuilder = aktørYtelseBuilder.getYtelselseBuilderForType(Fagsystem.INFOTRYGD, grunnlag.getYtelseType(),
99-
grunnlag.getTemaUnderkategori(), periode, tidligsteAnvist)
70+
grunnlag.getTemaUnderkategori(), periode, tidligsteAnvist)
10071
.medBehandlingsTema(grunnlag.getTemaUnderkategori())
10172
.medVedtattTidspunkt(grunnlag.getVedtattTidspunkt())
10273
.medStatus(grunnlag.getYtelseStatus());

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/registerdata/fagsakytelser/es/IAYRegisterInnhentingESTjenesteImpl.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import no.nav.foreldrepenger.abakus.kobling.kontroll.YtelseTypeRef;
1010
import no.nav.foreldrepenger.abakus.registerdata.IAYRegisterInnhentingFellesTjenesteImpl;
1111
import no.nav.foreldrepenger.abakus.registerdata.InnhentingSamletTjeneste;
12+
import no.nav.foreldrepenger.abakus.registerdata.VedtattYtelseInnhentingTjeneste;
1213
import no.nav.foreldrepenger.abakus.registerdata.arbeidsgiver.virksomhet.VirksomhetTjeneste;
1314
import no.nav.foreldrepenger.abakus.registerdata.inntekt.sigrun.SigrunTjeneste;
1415
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
@@ -26,12 +27,12 @@ public IAYRegisterInnhentingESTjenesteImpl(InntektArbeidYtelseTjeneste inntektAr
2627
VirksomhetTjeneste virksomhetTjeneste,
2728
InnhentingSamletTjeneste innhentingSamletTjeneste,
2829
AktørTjeneste aktørConsumer,
29-
SigrunTjeneste sigrunTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
30+
SigrunTjeneste sigrunTjeneste, VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste) {
3031
super(inntektArbeidYtelseTjeneste,
3132
virksomhetTjeneste,
3233
innhentingSamletTjeneste,
3334
aktørConsumer,
34-
sigrunTjeneste, vedtakYtelseRepository);
35+
sigrunTjeneste, vedtattYtelseInnhentingTjeneste);
3536
}
3637

3738
@Override

‎domenetjenester/iay/src/main/java/no/nav/foreldrepenger/abakus/registerdata/fagsakytelser/k9/IAYRegisterInnhentingK9TjenesteImpl.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import no.nav.foreldrepenger.abakus.kobling.kontroll.YtelseTypeRef;
1010
import no.nav.foreldrepenger.abakus.registerdata.IAYRegisterInnhentingFellesTjenesteImpl;
1111
import no.nav.foreldrepenger.abakus.registerdata.InnhentingSamletTjeneste;
12+
import no.nav.foreldrepenger.abakus.registerdata.VedtattYtelseInnhentingTjeneste;
1213
import no.nav.foreldrepenger.abakus.registerdata.arbeidsgiver.virksomhet.VirksomhetTjeneste;
1314
import no.nav.foreldrepenger.abakus.registerdata.inntekt.sigrun.SigrunTjeneste;
1415
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
@@ -27,12 +28,12 @@ public IAYRegisterInnhentingK9TjenesteImpl(InntektArbeidYtelseTjeneste inntektAr
2728
VirksomhetTjeneste virksomhetTjeneste,
2829
InnhentingSamletTjeneste innhentingSamletTjeneste,
2930
AktørTjeneste aktørConsumer,
30-
SigrunTjeneste sigrunTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
31+
SigrunTjeneste sigrunTjeneste, VedtattYtelseInnhentingTjeneste VedtattYtelseInnhentingTjeneste) {
3132
super(inntektArbeidYtelseTjeneste,
3233
virksomhetTjeneste,
3334
innhentingSamletTjeneste,
3435
aktørConsumer,
35-
sigrunTjeneste, vedtakYtelseRepository);
36+
sigrunTjeneste, VedtattYtelseInnhentingTjeneste);
3637
}
3738

3839
// Skal alltid innhente næringsinntekter om det ligger i informasjonselementer, dette for å støtte 8-47.

‎domenetjenester/iay/src/main/resources/META-INF/pu-default.inntektarbeidytelse.orm.xml

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<sequence-generator name="SEQ_AKTOER_YTELSE" allocation-size="50" sequence-name="SEQ_AKTOER_YTELSE" />
1717
<sequence-generator name="SEQ_YTELSE" allocation-size="50" sequence-name="SEQ_YTELSE" />
1818
<sequence-generator name="SEQ_YTELSE_ANVIST" allocation-size="50" sequence-name="SEQ_YTELSE_ANVIST" />
19+
<sequence-generator name="SEQ_YTELSE_ANVIST_ANDEL" allocation-size="50" sequence-name="SEQ_YTELSE_ANVIST_ANDEL" />
1920
<sequence-generator name="SEQ_YTELSE_GRUNNLAG" allocation-size="50" sequence-name="SEQ_YTELSE_GRUNNLAG" />
2021
<sequence-generator name="SEQ_YTELSE_STOERRELSE" allocation-size="50" sequence-name="SEQ_YTELSE_STOERRELSE" />
2122

@@ -53,6 +54,7 @@
5354
<entity class="no.nav.foreldrepenger.abakus.domene.iay.Inntekt" />
5455
<entity class="no.nav.foreldrepenger.abakus.domene.iay.Ytelse" />
5556
<entity class="no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvist" />
57+
<entity class="no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvistAndel" />
5658
<entity class="no.nav.foreldrepenger.abakus.domene.iay.YtelseGrunnlag" />
5759
<entity class="no.nav.foreldrepenger.abakus.domene.iay.YtelseStørrelse" />
5860
<entity class="no.nav.foreldrepenger.abakus.domene.iay.Yrkesaktivitet" />

‎domenetjenester/iay/src/test/java/no/nav/foreldrepenger/abakus/registerdata/YtelseRegisterinnhentingTest.java ‎domenetjenester/iay/src/test/java/no/nav/foreldrepenger/abakus/registerdata/VedtattYtelseInnhentingTjenesteTest.java

+31-11
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,50 @@
55
import static org.mockito.Mockito.mock;
66
import static org.mockito.Mockito.when;
77

8+
import java.math.BigDecimal;
89
import java.time.LocalDate;
910
import java.util.Collection;
10-
import java.util.Collections;
1111
import java.util.List;
1212
import java.util.Optional;
1313

1414
import org.junit.jupiter.api.BeforeEach;
1515
import org.junit.jupiter.api.Test;
1616

1717
import no.nav.abakus.iaygrunnlag.kodeverk.Fagsystem;
18+
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
1819
import no.nav.abakus.iaygrunnlag.kodeverk.TemaUnderkategori;
1920
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseStatus;
2021
import no.nav.abakus.iaygrunnlag.kodeverk.YtelseType;
2122
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseAggregatBuilder;
23+
import no.nav.foreldrepenger.abakus.domene.iay.InntektArbeidYtelseRepository;
2224
import no.nav.foreldrepenger.abakus.domene.iay.Ytelse;
25+
import no.nav.foreldrepenger.abakus.domene.iay.YtelseAnvist;
2326
import no.nav.foreldrepenger.abakus.felles.jpa.IntervallEntitet;
2427
import no.nav.foreldrepenger.abakus.kobling.Kobling;
2528
import no.nav.foreldrepenger.abakus.typer.AktørId;
2629
import no.nav.foreldrepenger.abakus.typer.Saksnummer;
30+
import no.nav.foreldrepenger.abakus.vedtak.domene.Arbeidsgiver;
2731
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelse;
32+
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseAndelBuilder;
2833
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseBuilder;
2934
import no.nav.foreldrepenger.abakus.vedtak.domene.VedtakYtelseRepository;
3035
import no.nav.foreldrepenger.abakus.vedtak.domene.YtelseAnvistBuilder;
3136

32-
public class YtelseRegisterinnhentingTest {
33-
34-
private InnhentingSamletTjeneste samletTjeneste = mock(InnhentingSamletTjeneste.class);
37+
public class VedtattYtelseInnhentingTjenesteTest {
3538

3639
private VedtakYtelseRepository vedtakYtelseRepository = mock(VedtakYtelseRepository.class);
3740

38-
private YtelseRegisterInnhenting ytelseRegisterInnhenting;
41+
private VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste;
42+
43+
private InntektArbeidYtelseRepository inntektArbeidYtelseRepository = mock(InntektArbeidYtelseRepository.class);
3944

4045
@BeforeEach
4146
public void before() {
42-
ytelseRegisterInnhenting = new YtelseRegisterInnhenting(samletTjeneste, vedtakYtelseRepository);
47+
vedtattYtelseInnhentingTjeneste = new VedtattYtelseInnhentingTjeneste(vedtakYtelseRepository, true, inntektArbeidYtelseRepository);
4348
}
4449

4550
@Test
46-
public void skal_gjenskape_feil() throws Exception {
51+
public void skal_mappe_vedtatt_ytelse() throws Exception {
4752
// Arrange
4853
VedtakYtelse vy = VedtakYtelseBuilder.oppdatere(Optional.empty())
4954
.medPeriode(IntervallEntitet.fraOgMedTilOgMed(LocalDate.now().minusMonths(4), LocalDate.now().minusMonths(2)))
@@ -53,18 +58,33 @@ public void skal_gjenskape_feil() throws Exception {
5358
.medKilde(Fagsystem.FPSAK)
5459
.medYtelseType(YtelseType.ENGANGSTØNAD)
5560
.medBehandlingsTema(TemaUnderkategori.ENGANGSSTONAD_FODSEL)
56-
.leggTil(YtelseAnvistBuilder.ny().medAnvistPeriode(IntervallEntitet.fraOgMedTilOgMed(LocalDate.now().minusMonths(4), LocalDate.now().minusMonths(2))))
61+
.leggTil(getYtelseAnvist())
5762
.build();
5863
Kobling k = new Kobling();
5964
k.setOpplysningsperiode(IntervallEntitet.fraOgMed(LocalDate.now().minusMonths(17)));
60-
when(samletTjeneste.hentDagpengerAAP(any(), any())).thenReturn(Collections.emptyList());
61-
when(samletTjeneste.innhentInfotrygdGrunnlag(any(), any())).thenReturn(Collections.emptyList());
6265
when(vedtakYtelseRepository.hentYtelserForIPeriode(any(), any(), any())).thenReturn(List.of(vy));
66+
when(inntektArbeidYtelseRepository.hentInntektArbeidYtelseGrunnlagForBehandling(any())).thenReturn(Optional.empty());
6367
InntektArbeidYtelseAggregatBuilder.AktørYtelseBuilder builder = InntektArbeidYtelseAggregatBuilder.AktørYtelseBuilder.oppdatere(Optional.empty());
6468
// Act
65-
ytelseRegisterInnhenting.innhentFraYtelsesRegister(AktørId.dummy(), k, builder);
69+
vedtattYtelseInnhentingTjeneste.innhentFraYtelsesRegister(AktørId.dummy(), k, builder);
6670
assertThat(builder.build().getAlleYtelser()).isNotEmpty();
6771
assertThat(builder.build().getAlleYtelser().stream().map(Ytelse::getYtelseAnvist).flatMap(Collection::stream).count()).isEqualTo(1);
72+
assertThat(builder.build().getAlleYtelser().stream().map(Ytelse::getYtelseAnvist)
73+
.flatMap(Collection::stream)
74+
.map(YtelseAnvist::getYtelseAnvistAndeler).count()).isEqualTo(1);
75+
6876
}
6977

78+
private YtelseAnvistBuilder getYtelseAnvist() {
79+
return YtelseAnvistBuilder.ny()
80+
.medAnvistPeriode(IntervallEntitet.fraOgMedTilOgMed(LocalDate.now().minusMonths(4), LocalDate.now().minusMonths(2)))
81+
.leggTilFordeling(VedtakYtelseAndelBuilder.ny().medArbeidsforholdId("aiowjd332423")
82+
.medArbeidsgiver(Arbeidsgiver.virksomhet("910909088"))
83+
.medDagsats(BigDecimal.TEN)
84+
.medInntektskategori(Inntektskategori.ARBEIDSTAKER)
85+
.medRefusjonsgrad(BigDecimal.ZERO)
86+
.medUtbetalingsgrad(BigDecimal.TEN));
87+
}
88+
89+
7090
}

‎domenetjenester/vedtak/src/main/java/no/nav/foreldrepenger/abakus/vedtak/domene/InntektskategoriKodeverdiConverter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
77

88
@Converter(autoApply = true)
9-
class InntektskategoriKodeverdiConverter implements AttributeConverter<Inntektskategori, String> {
9+
public class InntektskategoriKodeverdiConverter implements AttributeConverter<Inntektskategori, String> {
1010
@Override
1111
public String convertToDatabaseColumn(Inntektskategori attribute) {
1212
return attribute == null ? null : attribute.getKode();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
create sequence if not exists SEQ_YTELSE_ANVIST_ANDEL
2+
increment by 50
3+
START WITH 1000000 NO CYCLE;
4+
5+
create table if not exists IAY_YTELSE_ANVIST_ANDEL
6+
(
7+
ID bigint not null
8+
constraint PK_IAY_YTELSE_ANVIST_ANDEL
9+
primary key,
10+
YTELSE_ANVIST_ID bigint not null
11+
constraint FK_IAY_YTELSE_ANVIST_ANDEL_1
12+
references IAY_YTELSE_ANVIST,
13+
DAGSATS NUMERIC(19, 2),
14+
UTBETALINGSGRAD_PROSENT NUMERIC(5, 2),
15+
REFUSJONSGRAD_PROSENT NUMERIC(5, 2),
16+
ARBEIDSGIVER_AKTOR_ID VARCHAR(100),
17+
ARBEIDSGIVER_ORGNR VARCHAR(100),
18+
ARBEIDSFORHOLD_INTERN_ID VARCHAR(100),
19+
INNTEKTSKATEGORI VARCHAR(100),
20+
VERSJON bigint default 0 not null,
21+
OPPRETTET_AV VARCHAR(20) default 'VL' not null,
22+
OPPRETTET_TID TIMESTAMP(3) default localtimestamp not null,
23+
ENDRET_AV VARCHAR(20),
24+
ENDRET_TID TIMESTAMP(3)
25+
);
26+
comment
27+
on table IAY_YTELSE_ANVIST_ANDEL is 'En tabell med informasjon om fordeling for en ytelseperiode';
28+
comment
29+
on column IAY_YTELSE_ANVIST_ANDEL.ID is 'PK';
30+
comment
31+
on column IAY_YTELSE_ANVIST_ANDEL.YTELSE_ANVIST_ID is 'FK:YTELSE_ANVIST Fremmednøkkel til ytelseperioden';
32+
comment
33+
on column IAY_YTELSE_ANVIST_ANDEL.DAGSATS is 'Dagsats ifm utbetaling.';
34+
comment
35+
on column IAY_YTELSE_ANVIST_ANDEL.UTBETALINGSGRAD_PROSENT is 'Utbetalingsgrad for dagsats.';
36+
comment
37+
on column IAY_YTELSE_ANVIST_ANDEL.REFUSJONSGRAD_PROSENT is 'Andel av dagsats som betales til arbeidsgiver i refusjon';
38+
comment
39+
on column IAY_YTELSE_ANVIST_ANDEL.ARBEIDSGIVER_AKTOR_ID is 'Arbeidsgiver aktør-id.';
40+
comment
41+
on column IAY_YTELSE_ANVIST_ANDEL.ARBEIDSGIVER_ORGNR is 'Arbeidsgiver orgnr';
42+
comment
43+
on column IAY_YTELSE_ANVIST_ANDEL.ARBEIDSFORHOLD_INTERN_ID is 'Arbeidsforhold intern id';
44+
comment
45+
on column IAY_YTELSE_ANVIST_ANDEL.INNTEKTSKATEGORI is 'Inntektskategori for utbetalingen';
46+
47+
create index IDX_IAY_YTELSE_ANVIST_ANDEL_1
48+
on IAY_YTELSE_ANVIST_ANDEL (YTELSE_ANVIST_ID);

0 commit comments

Comments
 (0)
Please sign in to comment.