diff --git a/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Korreksjon.kt b/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Korreksjon.kt index 73c7cf47..7adf14d9 100644 --- a/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Korreksjon.kt +++ b/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Korreksjon.kt @@ -81,7 +81,13 @@ class Korreksjon( var besluttetTidspunkt: Instant? = null @JsonProperty - fun harTattStillingTilAlleInntektslinjer(): Boolean = if (refusjonsgrunnlag.tilskuddsgrunnlag.tiltakstype == Tiltakstype.VTAO) true else (refusjonsgrunnlag.inntektsgrunnlag?.inntekter?.filter { it.erMedIInntektsgrunnlag() }?.find { inntekt -> inntekt.erOpptjentIPeriode === null } === null) + fun harTattStillingTilAlleInntektslinjer(): Boolean = + refusjonsgrunnlag.inntektsgrunnlag?.inntekter?.filter { it.erMedIInntektsgrunnlag() } + ?.find { inntekt -> inntekt.erOpptjentIPeriode == null } == null + + @JsonProperty + fun måTaStillingTilInntekter(): Boolean = + refusjonsgrunnlag.tilskuddsgrunnlag.tiltakstype != Tiltakstype.VTAO override fun getFnrOgBedrift(): FnrOgBedrift = FnrOgBedrift(deltakerFnr, bedriftNr) @@ -130,7 +136,7 @@ class Korreksjon( if (kostnadssted.isBlank()) { throw FeilkodeException(Feilkode.KOSTNADSSTED_MANGLER) } - if (!this.harTattStillingTilAlleInntektslinjer()) { + if (this.måTaStillingTilInntekter() && !this.harTattStillingTilAlleInntektslinjer()) { throw FeilkodeException(Feilkode.IKKE_TATT_STILLING_TIL_ALLE_INNTEKTSLINJER) } @@ -150,7 +156,7 @@ class Korreksjon( if (refusjonsbeløp == null || refusjonsbeløp != 0) { throw FeilkodeException(Feilkode.KORREKSJONSBELOP_IKKE_NULL) } - if (!this.harTattStillingTilAlleInntektslinjer()) { + if (this.måTaStillingTilInntekter() && !this.harTattStillingTilAlleInntektslinjer()) { throw FeilkodeException(Feilkode.IKKE_TATT_STILLING_TIL_ALLE_INNTEKTSLINJER) } this.godkjentTidspunkt = Now.instant() @@ -166,7 +172,7 @@ class Korreksjon( if (refusjonsbeløp == null || refusjonsbeløp >= 0) { throw FeilkodeException(Feilkode.KORREKSJONSBELOP_POSITIVT) } - if (!this.harTattStillingTilAlleInntektslinjer()) { + if (this.måTaStillingTilInntekter() && !this.harTattStillingTilAlleInntektslinjer()) { throw FeilkodeException(Feilkode.IKKE_TATT_STILLING_TIL_ALLE_INNTEKTSLINJER) } this.godkjentTidspunkt = Now.instant() diff --git a/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Refusjon.kt b/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Refusjon.kt index 11dcec74..839b1a87 100644 --- a/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Refusjon.kt +++ b/src/main/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/refusjon/Refusjon.kt @@ -82,7 +82,13 @@ class Refusjon( } @JsonProperty - fun harTattStillingTilAlleInntektslinjer(): Boolean = if (refusjonsgrunnlag.tilskuddsgrunnlag.tiltakstype == Tiltakstype.VTAO) true else (refusjonsgrunnlag.inntektsgrunnlag?.inntekter?.filter { it.erMedIInntektsgrunnlag() }?.find { inntekt -> inntekt.erOpptjentIPeriode === null } === null) + fun harTattStillingTilAlleInntektslinjer(): Boolean = + refusjonsgrunnlag.inntektsgrunnlag?.inntekter?.filter { it.erMedIInntektsgrunnlag() } + ?.find { inntekt -> inntekt.erOpptjentIPeriode == null } == null + + @JsonProperty + fun måTaStillingTilInntekter(): Boolean = + refusjonsgrunnlag.tilskuddsgrunnlag.tiltakstype != Tiltakstype.VTAO private fun krevStatus(vararg gyldigeStatuser: RefusjonStatus) { if (status !in gyldigeStatuser) throw FeilkodeException(Feilkode.UGYLDIG_STATUS) @@ -159,7 +165,7 @@ class Refusjon( if (refusjonsgrunnlag.bedriftKontonummer == null) { throw FeilkodeException(Feilkode.INGEN_BEDRIFTKONTONUMMER) } - if (!this.harTattStillingTilAlleInntektslinjer()) { + if (this.måTaStillingTilInntekter() && !this.harTattStillingTilAlleInntektslinjer()) { throw FeilkodeException(Feilkode.IKKE_TATT_STILLING_TIL_ALLE_INNTEKTSLINJER) } if (refusjonsgrunnlag.beregning == null) { diff --git a/src/test/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/TestData.kt b/src/test/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/TestData.kt index d3d116a0..e5c391b9 100644 --- a/src/test/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/TestData.kt +++ b/src/test/kotlin/no/nav/arbeidsgiver/tiltakrefusjon/TestData.kt @@ -1,15 +1,23 @@ package no.nav.arbeidsgiver.tiltakrefusjon import no.nav.arbeidsgiver.tiltakrefusjon.autorisering.InnloggetBruker -import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.* +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.BrukerRolle +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.Inntektsgrunnlag +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.Inntektslinje +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.Refusjon +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.RefusjonStatus +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.Tilskuddsgrunnlag +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.Tiltakstype +import no.nav.arbeidsgiver.tiltakrefusjon.refusjon.beregnRefusjonsbeløp import no.nav.arbeidsgiver.tiltakrefusjon.utils.Now import no.nav.arbeidsgiver.tiltakrefusjon.utils.ulid import no.nav.arbeidsgiver.tiltakrefusjon.varsling.VarselType import no.nav.arbeidsgiver.tiltakrefusjon.varsling.Varsling import java.time.YearMonth import java.time.ZoneId +import java.time.temporal.TemporalAdjusters.firstDayOfMonth import java.time.temporal.TemporalAdjusters.lastDayOfMonth -import java.util.UUID +import java.util.* val innloggetTestbruker = innloggetBruker("testsystem", BrukerRolle.SYSTEM) @@ -816,7 +824,10 @@ fun `Vidar SendKrav`(): Refusjon { refusjon.let { it.medBedriftKontonummer() it.status = RefusjonStatus.SENDT_KRAV - it.godkjentAvArbeidsgiver = Now.localDate().minusMonths(1).with(lastDayOfMonth()).plusDays(1).atStartOfDay(ZoneId.of("Europe/Oslo")).toInstant() + it.godkjentAvArbeidsgiver = Now.localDate() + .with(firstDayOfMonth()) + .atStartOfDay(ZoneId.of("Europe/Oslo")) + .toInstant() } return refusjon @@ -842,8 +853,15 @@ fun `Vidar Utbetalt`(): Refusjon { refusjon.let { it.medBedriftKontonummer() it.status = RefusjonStatus.UTBETALT - it.godkjentAvArbeidsgiver = Now.localDate().minusMonths(1).with(lastDayOfMonth()).plusDays(1).atStartOfDay(ZoneId.of("Europe/Oslo")).toInstant() - it.utbetaltTidspunkt = Now.localDate().minusMonths(1).with(lastDayOfMonth()).plusDays(3).atStartOfDay(ZoneId.of("Europe/Oslo")).toInstant() + it.godkjentAvArbeidsgiver = Now.localDate() + .with(firstDayOfMonth()) + .atStartOfDay(ZoneId.of("Europe/Oslo")) + .toInstant() + it.utbetaltTidspunkt = Now.localDate() + .with(firstDayOfMonth()) + .plusDays(2) + .atStartOfDay(ZoneId.of("Europe/Oslo")) + .toInstant() } return refusjon