@@ -11,10 +11,8 @@ import no.nav.tiltakspenger.libs.common.Saksbehandler
11
11
import no.nav.tiltakspenger.libs.common.nå
12
12
import no.nav.tiltakspenger.libs.periodisering.Periode
13
13
import no.nav.tiltakspenger.libs.periodisering.Periodisering
14
- import no.nav.tiltakspenger.libs.periodisering.overlappendePerioder
15
14
import no.nav.tiltakspenger.libs.tiltak.TiltakstypeSomGirRett
16
15
import no.nav.tiltakspenger.saksbehandling.felles.Navkontor
17
- import no.nav.tiltakspenger.saksbehandling.felles.singleOrNullOrThrow
18
16
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.MeldekortBehandlingStatus.GODKJENT
19
17
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.MeldekortBehandlingStatus.IKKE_BEHANDLET
20
18
import no.nav.tiltakspenger.saksbehandling.meldekort.domene.MeldekortBehandlingStatus.IKKE_RETT_TIL_TILTAKSPENGER
@@ -335,30 +333,39 @@ fun Sak.opprettMeldekortBehandling(
335
333
saksbehandler : Saksbehandler ,
336
334
clock : Clock ,
337
335
): MeldekortBehandling .MeldekortUnderBehandling {
338
- require (this .vedtaksliste.innvilgelsesperioder.isNotEmpty() ) {
339
- " Må ha minst én periode som gir rett til tiltakspenger for å opprette meldekortbehandling "
336
+ if (this .meldekortBehandlinger.finnesÅpenMeldekortBehandling ) {
337
+ throw IllegalStateException ( " Kan ikke opprette ny meldekortbehandling før forrige er avsluttet for sak $id og kjedeId $kjedeId " )
340
338
}
341
-
342
- val forrigeMeldekortBehandling = hentSisteMeldekortBehandlingForKjede(kjedeId)?.also {
343
- require(it.status == GODKJENT ) {
344
- " Forrige meldekortbehandling i kjeden må være godkjent for å opprette en ny behandling/korrigering (kjede $kjedeId på sak ${this .id} )"
339
+ val meldeperiodekjede: MeldeperiodeKjede = this .meldeperiodeKjeder.hentMeldeperiodekjedeForKjedeId(kjedeId)
340
+ ? : throw IllegalStateException (" Kan ikke opprette meldekortbehandling for kjedeId $kjedeId som ikke finnes" )
341
+ val meldeperiode: Meldeperiode = meldeperiodekjede.hentSisteMeldeperiode()
342
+ val behandlingerKnyttetTilKjede = this .meldekortBehandlinger.hentMeldekortBehandlingerForKjede(kjedeId)
343
+
344
+ if (this .meldekortBehandlinger.isEmpty()) {
345
+ require(meldeperiode == this .meldeperiodeKjeder.first().hentSisteMeldeperiode()) {
346
+ " Dette er første meldekortbehandling på saken og må da behandle den første meldeperiode kjeden. sakId: ${this .id} , meldeperiodekjedeId: ${meldeperiodekjede.kjedeId} "
347
+ }
348
+ }
349
+ val foregåendeMeldeperiodekjede = this .meldeperiodeKjeder.hentForegåendeMeldeperiodekjede(kjedeId)
350
+ foregåendeMeldeperiodekjede?.also { foregåendeMeldeperiodekjede ->
351
+ this .meldekortBehandlinger.hentMeldekortBehandlingerForKjede(foregåendeMeldeperiodekjede.kjedeId).also {
352
+ if (it.none { it.status == GODKJENT }) {
353
+ throw IllegalStateException (" Kan ikke opprette ny meldekortbehandling før forrige kjede er godkjent" )
354
+ }
345
355
}
346
356
}
347
- val meldekortId = MeldekortId .random()
348
- val meldeperiode = hentSisteMeldeperiodeForKjede(kjedeId)
349
-
350
- val overlappendePeriode = this .vedtaksliste.innvilgelsesperioder.overlappendePerioder(
351
- listOf (meldeperiode.periode),
352
- ).singleOrNullOrThrow()
353
357
354
- requireNotNull(overlappendePeriode) { " Meldeperioden må overlappe med innvilgelsesperioden(e)" }
358
+ if (meldeperiode.ingenDagerGirRett) {
359
+ throw IllegalStateException (" Kan ikke starte behandling på meldeperiode uten dager som gir rett til tiltakspenger" )
360
+ }
355
361
356
362
// TODO abn: må støtte flere brukers meldekort på samme kjede før vi åpner for korrigering fra bruker
357
363
val brukersMeldekort = this .brukersMeldekort.find { it.kjedeId == kjedeId }
358
364
359
365
val type =
360
- if (forrigeMeldekortBehandling == null ) MeldekortBehandlingType .F ØRSTE_BEHANDLING else MeldekortBehandlingType .KORRIGERING
366
+ if (behandlingerKnyttetTilKjede.isEmpty() ) MeldekortBehandlingType .F ØRSTE_BEHANDLING else MeldekortBehandlingType .KORRIGERING
361
367
368
+ val meldekortId = MeldekortId .random()
362
369
return MeldekortBehandling .MeldekortUnderBehandling (
363
370
id = meldekortId,
364
371
sakId = this .id,
0 commit comments