Plausicheck OrgformBewerberUngleichorgform: only studienplan orgform is checked

This commit is contained in:
Alexei Karpenko
2024-06-10 15:04:45 +02:00
parent 6369202f99
commit 2e0a4ef7a0
3 changed files with 13 additions and 19 deletions
@@ -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))
{
+8 -12
View File
@@ -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']
+1 -1
View File
@@ -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'
),