diff --git a/application/libraries/issues/plausichecks/OrgformBewerberUngleichOrgformStudent.php b/application/libraries/issues/plausichecks/OrgformBewerberUngleichOrgformStudent.php index 2064fa252..05e90b29f 100644 --- a/application/libraries/issues/plausichecks/OrgformBewerberUngleichOrgformStudent.php +++ b/application/libraries/issues/plausichecks/OrgformBewerberUngleichOrgformStudent.php @@ -79,12 +79,13 @@ class OrgformBewerberUngleichorgformStudent extends PlausiChecker bewerber_status.studiensemester_kurzbz AS bewerber_studiensemester_kurzbz, stg.oe_kurzbz AS prestudent_stg_oe_kurzbz FROM public.tbl_prestudent prestudent - JOIN public.tbl_prestudentstatus bewerber_status ON prestudent.prestudent_id = bewerber_status.prestudent_id AND bewerber_status.status_kurzbz = 'Bewerber' + JOIN public.tbl_prestudentstatus bewerber_status + ON prestudent.prestudent_id = bewerber_status.prestudent_id AND bewerber_status.status_kurzbz = 'Bewerber' JOIN lehre.tbl_studienplan bewerber_studienplan ON bewerber_status.studienplan_id = bewerber_studienplan.studienplan_id JOIN ( SELECT DISTINCT ON (prestudent_id) prestudent_id, st.studiensemester_kurzbz, - st.orgform_kurzbz, pl.orgform_kurzbz AS studienplan_orgform_kurzbz + pl.orgform_kurzbz AS studienplan_orgform_kurzbz FROM public.tbl_prestudentstatus st JOIN lehre.tbl_studienplan pl USING (studienplan_id) @@ -97,10 +98,7 @@ class OrgformBewerberUngleichorgformStudent extends PlausiChecker WHERE prestudent.bismelden AND stg.melderelevant - AND ( - bewerber_status.orgform_kurzbz <> students.orgform_kurzbz - OR bewerber_studienplan.orgform_kurzbz <> students.studienplan_orgform_kurzbz - )"; + AND bewerber_studienplan.orgform_kurzbz <> students.studienplan_orgform_kurzbz"; if (isset($studiensemester_kurzbz)) { diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index 83d50d83a..cc49aa32f 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -391,7 +391,7 @@ function isBuchungAllowedToChange($buchung_obj) */ function checkStatusaenderung( $prestudent_id, $status_kurzbz, - $new_status_studiensemester, $new_status_datum, $new_status_ausbildungssemester, $new_status_orgform_kurzbz, $new_studienplan_id, + $new_status_studiensemester, $new_status_datum, $new_status_ausbildungssemester, $new_studienplan_id, $old_status_studiensemester = '', $old_status_ausbildungssemester = '' ) { @@ -432,7 +432,7 @@ function checkStatusaenderung( // Alle prestudentstatus nach Datum sortiert $qry = "SELECT status_kurzbz, studiensemester_kurzbz, ausbildungssemester, datum, sem.start AS studiensemester_start, - pss.orgform_kurzbz, pl.orgform_kurzbz AS studienplan_orgform_kurzbz, stud.matrikelnr + pl.orgform_kurzbz AS studienplan_orgform_kurzbz, stud.matrikelnr FROM public.tbl_prestudentstatus pss JOIN public.tbl_studiensemester sem USING (studiensemester_kurzbz) @@ -475,7 +475,6 @@ function checkStatusaenderung( $new_status->studiensemester_kurzbz = $new_status_studiensemester; $new_status->datum = $new_status_datum; $new_status->ausbildungssemester = $new_status_ausbildungssemester; - $new_status->orgform_kurzbz = $new_status_orgform_kurzbz; $new_status->studienplan_orgform_kurzbz = $new_studienplan_orgform_kurzbz; $new_status->matrikelnr = $row->matrikelnr; $statusArr[] = $new_status; @@ -556,14 +555,14 @@ function checkStatusaenderung( ); } - // Vor Studentstatus müssen bestimmte Status vorhanden sein if (isset($next_status) && $next_status->status_kurzbz == 'Student') { $restliche_status_obj = array_slice($statusArr, $i); $restliche_status = array_unique(array_column($restliche_status_obj, 'status_kurzbz')); $status_intersected = array_intersect($restliche_status, $statusAbfolge); - if ($curr_status_kurzbz == 'Diplomand') + // Vor Studentstatus darf kein Diplomand Status vorhanden sein + if (in_array('Diplomand', $restliche_status)) { return array( 'error' => true, @@ -571,6 +570,7 @@ function checkStatusaenderung( ); } + // Vor Studentstatus müssen bestimmte Status vorhanden sein if (array_values($status_intersected) != array_values(array_reverse($statusAbfolge))) { return array( @@ -578,7 +578,6 @@ function checkStatusaenderung( 'errormsg' => 'Vor dem Studentenstatus müssen folgende Status eingetragen werden: '.implode(', ', $statusAbfolge) ); } - } } @@ -605,8 +604,7 @@ function checkStatusaenderung( return $s->status_kurzbz == 'Bewerber' && ( - $s->orgform_kurzbz != $ersterStudent->orgform_kurzbz - || $s->studienplan_orgform_kurzbz != $ersterStudent->studienplan_orgform_kurzbz + $s->studienplan_orgform_kurzbz != $ersterStudent->studienplan_orgform_kurzbz ); } ) @@ -614,7 +612,7 @@ function checkStatusaenderung( ) { return array( 'error' => true, - 'errormsg' => 'Erster Studentstatus muss gleiche Organisationsform haben wie Bewerberstatus (Status oder Studienplan Orgform)' + 'errormsg' => 'Erster Studentstatus muss gleiche Organisationsform haben wie Bewerberstatus (Studienplan Orgform)' ); } } @@ -1095,8 +1093,7 @@ if(!$error) $studiensemester, $new_status_datum, $sem, - $_POST['orgform_kurzbz'], - $_POST['studienplan_id'] + $_POST['studienplan_id'] ?? '' ); if (isset($check_statusaenderung_result['error']) && $check_statusaenderung_result['error'] === true) @@ -1633,7 +1630,6 @@ if(!$error) $_POST['studiensemester_kurzbz'], $_POST['datum'], $_POST['ausbildungssemester'], - $_POST['orgform_kurzbz'], $_POST['studienplan_id'], $_POST['studiensemester_old'], $_POST['ausbildungssemester_old'] diff --git a/system/fehlerupdate.php b/system/fehlerupdate.php index 43a39673d..091181284 100644 --- a/system/fehlerupdate.php +++ b/system/fehlerupdate.php @@ -313,7 +313,7 @@ $fehlerArr = array( 'fehlercode' => 'CORE_STUDENTSTATUS_0019', 'fehler_kurzbz' => 'OrgformBewerberUngleichOrgformStudent', 'fehlercode_extern' => null, - 'fehlertext' => 'Orgform des Bewerbers stimmt nicht mit Orgform des Studenten überein (Status oder Studienplan) (prestudent_id %s, Student Studiensemester %s, Bewerber Studiensemester %s)', + 'fehlertext' => 'Orgform des Bewerbers (Studienplan) stimmt nicht mit Orgform des ersten Studenten überein (prestudent_id %s, Student Studiensemester %s, Bewerber Studiensemester %s)', 'fehlertyp_kurzbz' => 'error', 'app' => 'core' ),