Skip to content

Commit

Permalink
Merge pull request #3223 from Opetushallitus/tor-2240-amis-siirtynyt-…
Browse files Browse the repository at this point in the history
…tutkinnon-uusiin-perusteisiin-kentta

TOR-2240: Siirtynyt tutkinnon uusiin perusteisiin -kenttä
  • Loading branch information
ilkkahanninen authored Dec 11, 2024
2 parents cc8e798 + d7c31a2 commit cc639af
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 2 deletions.
4 changes: 3 additions & 1 deletion src/main/resources/localization/koski-default-texts.json
Original file line number Diff line number Diff line change
Expand Up @@ -2759,5 +2759,7 @@
"MuksRaportti-example": "Jos haluat tulostaa raportin tietylle päivälle, syötä sekä aikajakson alku- että loppupäivämääräkenttään sama päivämäärä.",
"raportti-excel-muks-title": "Muu kuin säännelty koulutus",
"raportti-excel-must-tiedoston-etuliite": "muks_suoritustiedot",
"raportti-excel-kolumni-yhteislaajuusKaikkiTuntia": "Yhteislaajuus (tuntia)"
"raportti-excel-kolumni-yhteislaajuusKaikkiTuntia": "Yhteislaajuus (tuntia)",
"Siirtynyt tutkinnon uusiin perusteisiin" : "Siirtynyt tutkinnon uusiin perusteisiin",
"description:Onko opiskeluoikeuden päättymisen syy siirtyminen..." : "Onko opiskeluoikeuden päättymisen syy siirtyminen tutkinnon uusiin perusteisiin."
}
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,33 @@ object AmmatillinenOpiskeluoikeusTestData {
)
}

def katsotaanEronneeksiOpiskeluoikeus(oppilaitosId: String, koulutusKoodi: Int = 351301, diaariNumero: String = "39/011/2014", alkamispäivä: LocalDate = date(2019, 5, 30), päättymispäivä: LocalDate = date(2020, 5, 30)): AmmatillinenOpiskeluoikeus = {
val oppilaitos: Oppilaitos = Oppilaitos(oppilaitosId, None, None)
val koulutusKoodiViite = Koodistokoodiviite(koulutusKoodi.toString, None, "koulutus", None)

AmmatillinenOpiskeluoikeus(
oppilaitos = Some(oppilaitos),
suoritukset = List(AmmatillisenTutkinnonSuoritus(
koulutusmoduuli = AmmatillinenTutkintoKoulutus(koulutusKoodiViite, Some(diaariNumero)),
toimipiste = oppilaitos,
suorituskieli = suomenKieli,
suoritustapa = AmmatillinenExampleData.suoritustapaOps,
keskiarvo = Some(4.0),
osasuoritukset = Some(List(pakollinenTutkinnonOsanSuoritus("101050", "Yritystoiminnan suunnittelu", ammatillisetTutkinnonOsat, k3, 40, alkamispäivä)))
)),
tila = AmmatillinenOpiskeluoikeudenTila(List(
AmmatillinenOpiskeluoikeusjakso(alkamispäivä, ExampleData.opiskeluoikeusLäsnä, Some(ExampleData.valtionosuusRahoitteinen)),
AmmatillinenOpiskeluoikeusjakso(päättymispäivä, ExampleData.opiskeluoikeusKatsotaanEronneeksi, Some(ExampleData.valtionosuusRahoitteinen))
)),
lisätiedot = Some(AmmatillisenOpiskeluoikeudenLisätiedot(
hojks = None,
erityinenTuki = Some(List(Aikajakso(alkamispäivä, None))),
vaikeastiVammainen = Some(List(Aikajakso(alkamispäivä, None))),
vankilaopetuksessa = Some(List(Aikajakso(alkamispäivä, None)))
)),
)
}

lazy val lähdejärjestelmällinenOpiskeluoikeus: AmmatillinenOpiskeluoikeus =
opiskeluoikeus(MockOrganisaatiot.stadinAmmattiopisto, versio = Some(11)).copy(lähdejärjestelmänId = Some(AmmatillinenExampleData.winnovaLähdejärjestelmäId("l-050504")))

Expand Down
1 change: 1 addition & 0 deletions src/main/scala/fi/oph/koski/http/KoskiErrorCategory.scala
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ object KoskiErrorCategory {
val oppiaineitaEiSallita = subcategory("oppiaineitaEiSallita", "9.vuosiluokan suoritukseen ei voi syöttää oppiaineita, kun sillä on vahvistus, eikä oppilas jää luokalle")
val tilaMuuttunutLopullisenTilanJälkeen = subcategory("tilaMuuttunutLopullisenTilanJälkeen", "Opiskeluoikeuden tilojen valmistunut, eronnut jälkeen ei voi esiintyä muita tiloja")
val montaPäättävääTilaa = subcategory("montaPäättävääTilaa", "Opiskeluoikeudella voi olla vain yksi opiskeluoikeuden päättävä tila")
val eiPäättävääTilaa = subcategory("eiPäättävääTilaa", "Opiskeluoikeudella pitää olla päättävä tila")
val alkamispäiväPuuttuu = subcategory("alkamispäiväPuuttuu", "Suoritukselle ei ole merkitty alkamispäivää")
val valmiiksiMerkityltäPuuttuuOsasuorituksia = subcategory("valmiiksiMerkityltäPuuttuuOsasuorituksia", "Valmiiksi merkityllä päätason suorituksella ei voi olla tyhjä osasuorituslista tai opiskeluoikeuden pitää olla linkitetty")
val tilaltaPuuttuuRahoitusmuoto = subcategory("tilaltaPuuttuuRahoitusmuoto", "Opiskeluoikeuden tilalta vaaditaan rahoitusmuoto")
Expand Down
4 changes: 3 additions & 1 deletion src/main/scala/fi/oph/koski/schema/Ammatillinen.scala
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ case class AmmatillisenOpiskeluoikeudenLisätiedot(
vaativanErityisenTuenErityinenTehtävä: Option[List[Aikajakso]] = None,
ulkomaanjaksot: Option[List[Ulkomaanjakso]] = None,
@SensitiveData(Set(Rooli.LUOTTAMUKSELLINEN_KAIKKI_TIEDOT))
hojks: Option[Hojks],
hojks: Option[Hojks] = None,
@Description("Osallistuuko oppija vaikeasti vammaisille järjestettyyn opetukseen. Lista alku-loppu päivämääräpareja. Rahoituksen laskennassa käytettävä tieto.")
@Tooltip("Tieto siitä, osallistuuko oppija vaikeasti vammaisille järjestettyyn opetukseen (alku- ja loppupäivä). Voi olla useita erillisiä jaksoja. Rahoituksen laskennassa käytettävä tieto.")
@SensitiveData(Set(Rooli.LUOTTAMUKSELLINEN_KAIKKI_TIEDOT))
Expand Down Expand Up @@ -115,6 +115,8 @@ case class AmmatillisenOpiskeluoikeudenLisätiedot(
maksuttomuus: Option[List[Maksuttomuus]] = None,
oikeuttaMaksuttomuuteenPidennetty: Option[List[OikeuttaMaksuttomuuteenPidennetty]] = None,
jotpaAsianumero: Option[Koodistokoodiviite] = None,
@Description("Onko opiskeluoikeuden päättymisen syy siirtyminen tutkinnon uusiin perusteisiin.")
siirtynytTutkinnonUusiinPerusteisiin: Option[Boolean] = None,
) extends OpiskeluoikeudenLisätiedot
with Ulkomaanjaksollinen
with SisäoppilaitosmainenMajoitus
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ object AmmatillinenValidation {
validateAmmatillisenKorotus(ammatillinen),
validateKorotuksenAlkuperäinenOpiskeluoikeus(ammatillinen, henkilö, koskiOpiskeluoikeudet),
validateOpiskeluoikeudenArvionnit(ammatillinen),
validateTutkinnonUusiinPerusteisiinSiirtyminen(ammatillinen),
)
case _ => HttpStatus.ok
}
Expand Down Expand Up @@ -398,4 +399,13 @@ object AmmatillinenValidation {
KoskiErrorCategory.badRequest.validation.arviointi.epäsopivaArvosana(s"""Suorituksen "$suorituksenNimi" arvosana ei voi olla hylätty""")
}
})

private def validateTutkinnonUusiinPerusteisiinSiirtyminen(oo: AmmatillinenOpiskeluoikeus): HttpStatus = {
val siirtynytTutkinnonUusiinPerusteisiin = oo.lisätiedot.exists(_.siirtynytTutkinnonUusiinPerusteisiin.contains(true))
val katsotaanEronneeksi = oo.tila.opiskeluoikeusjaksot.exists(_.tila.koodiarvo == "katsotaaneronneeksi")

HttpStatus.validate(!siirtynytTutkinnonUusiinPerusteisiin || katsotaanEronneeksi) {
KoskiErrorCategory.badRequest.validation.tila.eiPäättävääTilaa("Opiskeluoikeudella, jonka lisätiedoissa on merkintä 'siirtynyt tutkinnon uusiin perusteisiin', pitää päättyä tilaan 'katsotaan eronneeksi'.")
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1487,6 +1487,31 @@ class OppijaValidationAmmatillinenSpec extends TutkinnonPerusteetTest[Ammatillin
}
}
}

"Siirtyminen uudempiin perusteisiin" - {
"Tietoa ei voi siirtää, jos opiskeluoikeus ei ole terminaalitilassa" in {
val lisätiedot = AmmatillisenOpiskeluoikeudenLisätiedot(siirtynytTutkinnonUusiinPerusteisiin = Some(true))
val opiskeluoikeus = defaultOpiskeluoikeus.copy(
lisätiedot = Some(lisätiedot),
tila = AmmatillinenOpiskeluoikeudenTila(List(
AmmatillinenOpiskeluoikeusjakso(LocalDate.of(2000, 1, 2), ExampleData.opiskeluoikeusLäsnä, Some(ExampleData.valtionosuusRahoitteinen)),
)),
)
setupOppijaWithOpiskeluoikeus(opiskeluoikeus) {
verifyResponseStatus(400, KoskiErrorCategory.badRequest.validation.tila.eiPäättävääTilaa("Opiskeluoikeudella, jonka lisätiedoissa on merkintä 'siirtynyt tutkinnon uusiin perusteisiin', pitää päättyä tilaan 'katsotaan eronneeksi'."))
}
}

"Tiedon voi siirtää, jos opiskeluoikeus on päättynyt 'katsotaan eronneeksi' -tilaan" in {
val lisätiedot = AmmatillisenOpiskeluoikeudenLisätiedot(siirtynytTutkinnonUusiinPerusteisiin = Some(true))
val opiskeluoikeus = AmmatillinenOpiskeluoikeusTestData.katsotaanEronneeksiOpiskeluoikeus(
oppilaitosId = MockOrganisaatiot.stadinAmmattiopisto,
)
setupOppijaWithOpiskeluoikeus(opiskeluoikeus) {
verifyResponseStatusOk()
}
}
}
}

def vahvistus(date: LocalDate) = {
Expand Down
4 changes: 4 additions & 0 deletions tiedonsiirtoprotokollan_muutoshistoria.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

- Lisätty kaikille opiskeluoikeuksille uusi kenttä `lähdejärjestelmäkytkentäPurettu`, joka ilmaisee että opiskeluoikeudelta on poistettu lähdejärjestelmätunniste, jotta sitä voidaan muokata KOSKI-käyttöliittymällä.

## 26.11.2024

- Lisätty ammatillisen opiskeluoikeuden lisätietoihin uusi kenttä `siirtynytTutkinnonUusiinPerusteisiin`, joka ilmaisee opiskeluoikeuden päättymisen syyksi siirtymisen uudempiin perusteisiin.

## 6.11.2024

- Uskonnon oppimäärä (\*.osasuoritukset[].koulutusmoduuli.uskonnonOppimäärä) on deprekoitu kaikilta lukion ja perusopetuksen opiskeluoikeuksilta,
Expand Down
4 changes: 4 additions & 0 deletions validaation_muutoshistoria.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
- Estetään uuden kaikille opikeluoikeuksille lisätyn kentän `lähdejärjestelmäkytkentäPurettu` lisääminen tai sen sisällön muokkaaminen tiedonsiirron kautta.
- Estetään opiskeluoikeuden päivitys tiedonsiirron kautta, jos sen lähdejärjestelmäkytkentä on purettu.

## 26.11.2024

- Estetään siirtynytTutkinnonUusiinPerusteisiin -kentän siirto ammatillisen opiskeluoikeuden lisätietoihin, jos opiskeluoikeus ei ole päättyvässä tilassa.

## 14.11.2024

- Salli ammatillisen koulutuksen korotukset toisessa oppilaitoksessa suoritettuun tutkintoon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export type AmmatillisenOpiskeluoikeudenLisätiedot = {
vankilaopetuksessa?: Array<Aikajakso>
henkilöstökoulutus: boolean
erityinenTuki?: Array<Aikajakso>
siirtynytTutkinnonUusiinPerusteisiin?: boolean
koulutusvienti: boolean
opiskeluvalmiuksiaTukevatOpinnot?: Array<OpiskeluvalmiuksiaTukevienOpintojenJakso>
jotpaAsianumero?: Koodistokoodiviite<'jotpaasianumero', string>
Expand All @@ -50,6 +51,7 @@ export const AmmatillisenOpiskeluoikeudenLisätiedot = (
vankilaopetuksessa?: Array<Aikajakso>
henkilöstökoulutus?: boolean
erityinenTuki?: Array<Aikajakso>
siirtynytTutkinnonUusiinPerusteisiin?: boolean
koulutusvienti?: boolean
opiskeluvalmiuksiaTukevatOpinnot?: Array<OpiskeluvalmiuksiaTukevienOpintojenJakso>
jotpaAsianumero?: Koodistokoodiviite<'jotpaasianumero', string>
Expand Down

0 comments on commit cc639af

Please sign in to comment.