Skip to content

Oppretter tabeller og mapper til anviste andeler fra vedtatt ytelse #1757

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions .deploy/dev-fss-teamforeldrepenger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,6 @@ spec:
value: api://dev-fss.tbd.spokelse/.default
- name: SPOKELSE_GRUNNLAG_URL
value: http://spokelse.tbd/grunnlag

- name: SKAL_INNENTE_YTELSE_ANVIST_ANDELER
value: true
3 changes: 3 additions & 0 deletions .deploy/prod-fss-teamforeldrepenger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,6 @@ spec:
value: api://prod-fss.tbd.spokelse/.default
- name: SPOKELSE_GRUNNLAG_URL
value: http://spokelse.tbd/grunnlag

- name: SKAL_INNENTE_YTELSE_ANVIST_ANDELER
value: false
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package no.nav.foreldrepenger.abakus.domene.iay;

import java.time.LocalDate;
import java.util.LinkedHashSet;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
Expand All @@ -14,6 +16,7 @@
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;

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

@OneToMany(mappedBy = "ytelseAnvist")
@ChangeTracked
private Set<YtelseAnvistAndel> ytelseAnvistAndeler = new LinkedHashSet<>();

@Embedded
@ChangeTracked
private IntervallEntitet anvistPeriode;
Expand Down Expand Up @@ -117,6 +124,16 @@ public void setYtelse(Ytelse ytelse) {
this.ytelse = ytelse;
}

public Set<YtelseAnvistAndel> getYtelseAnvistAndeler() {
return ytelseAnvistAndeler;
}

void leggTilYtelseAnvistAndel(YtelseAnvistAndel ytelseAnvistAndel) {
ytelseAnvistAndel.setYtelseAnvist(this);
this.ytelseAnvistAndeler.add(ytelseAnvistAndel);

}

@Override
public boolean equals(Object o) {
if (this == o) return true;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
package no.nav.foreldrepenger.abakus.domene.iay;

import java.util.Objects;
import java.util.Optional;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Version;

import no.nav.abakus.iaygrunnlag.kodeverk.IndexKey;
import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
import no.nav.foreldrepenger.abakus.felles.diff.ChangeTracked;
import no.nav.foreldrepenger.abakus.felles.diff.IndexKeyComposer;
import no.nav.foreldrepenger.abakus.felles.jpa.BaseEntitet;
import no.nav.foreldrepenger.abakus.typer.Beløp;
import no.nav.foreldrepenger.abakus.typer.InternArbeidsforholdRef;
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;
import no.nav.foreldrepenger.abakus.vedtak.domene.InntektskategoriKodeverdiConverter;


@Entity(name = "YtelseAnvistAndel")
@Table(name = "IAY_YTELSE_ANVIST_ANDEL")
public class YtelseAnvistAndel extends BaseEntitet implements IndexKey {

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

@ManyToOne(optional = false)
@JoinColumn(name = "ytelse_anvist_id", nullable = false, updatable = false, unique = true)
private YtelseAnvist ytelseAnvist;

@Embedded
@ChangeTracked
private Arbeidsgiver arbeidsgiver;

@Embedded
private InternArbeidsforholdRef arbeidsforholdRef;

@Embedded
@AttributeOverrides(@AttributeOverride(name = "verdi", column = @Column(name = "dagsats", nullable = false)))
@ChangeTracked
private Beløp dagsats;

@Embedded
@AttributeOverrides(@AttributeOverride(name = "verdi", column = @Column(name = "utbetalingsgrad_prosent")))
@ChangeTracked
private Stillingsprosent utbetalingsgradProsent;

@Embedded
@AttributeOverrides(@AttributeOverride(name = "verdi", column = @Column(name = "refusjonsgrad_prosent")))
@ChangeTracked
private Stillingsprosent refusjonsgradProsent;

@Convert(converter = InntektskategoriKodeverdiConverter.class)
@Column(name = "inntektskategori", nullable = false, updatable = false)
private Inntektskategori inntektskategori = Inntektskategori.UDEFINERT;


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

public YtelseAnvistAndel() {
// hibernate
}

public YtelseAnvistAndel(YtelseAnvistAndel ytelseAnvistAndel) {
ytelseAnvistAndel.getArbeidsgiver().ifPresent(this::setArbeidsgiver);
this.dagsats = ytelseAnvistAndel.getDagsats();
this.inntektskategori = ytelseAnvistAndel.getInntektskategori();
this.refusjonsgradProsent = ytelseAnvistAndel.getRefusjonsgradProsent();
this.utbetalingsgradProsent = ytelseAnvistAndel.getUtbetalingsgradProsent();
this.arbeidsforholdRef = ytelseAnvistAndel.getArbeidsforholdRef();
}

public Optional<Arbeidsgiver> getArbeidsgiver() {
return Optional.ofNullable(arbeidsgiver);
}

void setArbeidsgiver(Arbeidsgiver arbeidsgiver) {
this.arbeidsgiver = arbeidsgiver;
}


public InternArbeidsforholdRef getArbeidsforholdRef() {
return arbeidsforholdRef;
}

void setArbeidsforholdRef(InternArbeidsforholdRef arbeidsforholdRef) {
this.arbeidsforholdRef = arbeidsforholdRef;
}

public Beløp getDagsats() {
return dagsats;
}

void setDagsats(Beløp dagsats) {
this.dagsats = dagsats;
}

public Stillingsprosent getUtbetalingsgradProsent() {
return utbetalingsgradProsent;
}

void setUtbetalingsgradProsent(Stillingsprosent utbetalingsgradProsent) {
this.utbetalingsgradProsent = utbetalingsgradProsent;
}

public Stillingsprosent getRefusjonsgradProsent() {
return refusjonsgradProsent;
}

void setRefusjonsgradProsent(Stillingsprosent refusjonsgradProsent) {
this.refusjonsgradProsent = refusjonsgradProsent;
}

void setYtelseAnvist(YtelseAnvist ytelseAnvist) {
this.ytelseAnvist = ytelseAnvist;
}

public Inntektskategori getInntektskategori() {
return inntektskategori;
}

void setInntektskategori(Inntektskategori inntektskategori) {
this.inntektskategori = inntektskategori;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
YtelseAnvistAndel that = (YtelseAnvistAndel) o;
return ytelseAnvist.equals(that.ytelseAnvist) && Objects.equals(arbeidsgiver, that.arbeidsgiver) &&
dagsats.equals(that.dagsats) &&
inntektskategori == that.inntektskategori &&
utbetalingsgradProsent.equals(that.utbetalingsgradProsent) &&
refusjonsgradProsent.equals(that.refusjonsgradProsent);
}

@Override
public int hashCode() {
return Objects.hash(ytelseAnvist, arbeidsgiver, dagsats, inntektskategori, utbetalingsgradProsent, refusjonsgradProsent);
}

@Override
public String toString() {
return "YtelseAnvistAndel{" +
"id=" + id +
", ytelseAnvist=" + ytelseAnvist +
", arbeidsgiver=" + arbeidsgiver +
", arbeidsforholdRef=" + arbeidsforholdRef +
", dagsats=" + dagsats +
", utbetalingsgradProsent=" + utbetalingsgradProsent +
", refusjonsgradProsent=" + refusjonsgradProsent +
", inntektskategori=" + inntektskategori +
", versjon=" + versjon +
'}';
}

@Override
public String getIndexKey() {
Object[] keyParts = { arbeidsgiver, dagsats, inntektskategori, utbetalingsgradProsent, refusjonsgradProsent };
return IndexKeyComposer.createKey(keyParts);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package no.nav.foreldrepenger.abakus.domene.iay;

import java.math.BigDecimal;

import no.nav.abakus.iaygrunnlag.kodeverk.Inntektskategori;
import no.nav.foreldrepenger.abakus.typer.Beløp;
import no.nav.foreldrepenger.abakus.typer.InternArbeidsforholdRef;
import no.nav.foreldrepenger.abakus.typer.Stillingsprosent;

public class YtelseAnvistAndelBuilder {
private final YtelseAnvistAndel ytelseAnvistAndel;

YtelseAnvistAndelBuilder(YtelseAnvistAndel ytelseAnvistAndel) {
this.ytelseAnvistAndel = ytelseAnvistAndel;
}

public static YtelseAnvistAndelBuilder ny() {
return new YtelseAnvistAndelBuilder(new YtelseAnvistAndel());
}

public YtelseAnvistAndelBuilder medDagsats(BigDecimal dagsats) {
if (dagsats != null) {
this.ytelseAnvistAndel.setDagsats(new Beløp(dagsats));
}
return this;
}

public YtelseAnvistAndelBuilder medUtbetalingsgrad(BigDecimal verdi) {
if (verdi != null) {
this.ytelseAnvistAndel.setUtbetalingsgradProsent(new Stillingsprosent(verdi));
}
return this;
}

public YtelseAnvistAndelBuilder medRefusjonsgrad(BigDecimal verdi) {
if (verdi != null) {
this.ytelseAnvistAndel.setRefusjonsgradProsent(new Stillingsprosent(verdi));
}
return this;
}

public YtelseAnvistAndelBuilder medArbeidsgiver(Arbeidsgiver arbeidsgiver) {
if (arbeidsgiver != null) {
this.ytelseAnvistAndel.setArbeidsgiver(arbeidsgiver);
}
return this;
}

public YtelseAnvistAndelBuilder medArbeidsforholdRef(InternArbeidsforholdRef arbeidsforholdRef) {
this.ytelseAnvistAndel.setArbeidsforholdRef(arbeidsforholdRef);
return this;
}


public YtelseAnvistAndelBuilder medInntektskategori(Inntektskategori inntektskategori) {
if (inntektskategori != null) {
this.ytelseAnvistAndel.setInntektskategori(inntektskategori);
}
return this;
}

public YtelseAnvistAndel build() {
return ytelseAnvistAndel;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@ public YtelseAnvistBuilder medUtbetalingsgradProsent(BigDecimal utbetalingsgradP
return this;
}

public YtelseAnvistBuilder leggTilYtelseAnvistAndel(YtelseAnvistAndel ytelseAnvistAndel) {
this.ytelseAnvist.leggTilYtelseAnvistAndel(ytelseAnvistAndel);
return this;
}


public YtelseAnvist build() {
return ytelseAnvist;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ public DefaultIAYRegisterInnhentingTjenesteImpl(InntektArbeidYtelseTjeneste innt
VirksomhetTjeneste virksomhetTjeneste,
InnhentingSamletTjeneste innhentingSamletTjeneste,
AktørTjeneste aktørConsumer,
SigrunTjeneste sigrunTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
SigrunTjeneste sigrunTjeneste, VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste) {
super(inntektArbeidYtelseTjeneste,
virksomhetTjeneste,
innhentingSamletTjeneste,
aktørConsumer,
sigrunTjeneste, vedtakYtelseRepository);
sigrunTjeneste, vedtattYtelseInnhentingTjeneste);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,14 @@ protected IAYRegisterInnhentingFellesTjenesteImpl(InntektArbeidYtelseTjeneste in
VirksomhetTjeneste virksomhetTjeneste,
InnhentingSamletTjeneste innhentingSamletTjeneste,
AktørTjeneste aktørConsumer,
SigrunTjeneste sigrunTjeneste, VedtakYtelseRepository vedtakYtelseRepository) {
SigrunTjeneste sigrunTjeneste,
VedtattYtelseInnhentingTjeneste vedtattYtelseInnhentingTjeneste) {
this.inntektArbeidYtelseTjeneste = inntektArbeidYtelseTjeneste;
this.virksomhetTjeneste = virksomhetTjeneste;
this.innhentingSamletTjeneste = innhentingSamletTjeneste;
this.aktørConsumer = aktørConsumer;
this.sigrunTjeneste = sigrunTjeneste;
this.ytelseRegisterInnhenting = new YtelseRegisterInnhenting(innhentingSamletTjeneste, vedtakYtelseRepository);
this.ytelseRegisterInnhenting = new YtelseRegisterInnhenting(innhentingSamletTjeneste, vedtattYtelseInnhentingTjeneste);
this.byggYrkesaktiviteterTjeneste = new ByggYrkesaktiviteterTjeneste();
}

Expand Down
Loading