diff --git a/application/libraries/issues/PlausicheckLib.php b/application/libraries/issues/PlausicheckLib.php index d55e7dd39..951e77c7f 100644 --- a/application/libraries/issues/PlausicheckLib.php +++ b/application/libraries/issues/PlausicheckLib.php @@ -1162,6 +1162,71 @@ class PlausicheckLib return $this->_db->execReadOnlyQuery($qry, $params); } + /** + * Incoming or gemeinsame Studien students should not receive funding (not be förderrelevant). + * @param studiensemester_kurzbz string check is to be executed for certain Studiensemester + * @param studiengang_kz int if check is to be executed for certain Studiengang + * @param prestudent_id int if check is to be executed only for one prestudent + * @return object success or error + */ + public function getIncomingUndGsFoerderrelevant($studiensemester_kurzbz, $studiengang_kz = null, $prestudent_id = null) + { + $params = array($studiensemester_kurzbz, $studiensemester_kurzbz); + + $qry = " + SELECT + DISTINCT ON(prestudent_id) + pers.person_id, + ps.prestudent_id, + stg.oe_kurzbz AS prestudent_stg_oe_kurzbz + FROM + public.tbl_student stud + JOIN public.tbl_benutzer ON(student_uid=uid) + JOIN public.tbl_person pers USING(person_id) + JOIN public.tbl_prestudent ps USING(prestudent_id) + JOIN public.tbl_studiengang stg ON(stg.studiengang_kz=stud.studiengang_kz) + WHERE + ( + EXISTS + ( + SELECT 1 + FROM + public.tbl_prestudentstatus + WHERE + prestudent_id = ps.prestudent_id + AND status_kurzbz = 'Incoming' + AND studiensemester_kurzbz = ? + ) + OR EXISTS ( + SELECT 1 + FROM + bis.tbl_mobilitaet + JOIN public.tbl_prestudent USING(prestudent_id) + WHERE + prestudent_id = ps.prestudent_id + AND gsstudientyp_kurzbz = 'Extern' + AND studiensemester_kurzbz = ? + ) + ) + AND (ps.foerderrelevant <> FALSE OR ps.foerderrelevant IS NULL) + AND bismelden=TRUE + AND stg.melderelevant"; + + if (isset($studiengang_kz)) + { + $qry .= " AND stg.studiengang_kz = ?"; + $params[] = $studiengang_kz; + } + + if (isset($prestudent_id)) + { + $qry .= " AND ps.prestudent_id = ?"; + $params[] = $prestudent_id; + } + + return $this->_db->execReadOnlyQuery($qry, $params); + } + //------------------------------------------------------------------------------------------------------------------ // Private methods diff --git a/application/libraries/issues/PlausicheckProducerLib.php b/application/libraries/issues/PlausicheckProducerLib.php index 74adb21dd..fb85cf98f 100644 --- a/application/libraries/issues/PlausicheckProducerLib.php +++ b/application/libraries/issues/PlausicheckProducerLib.php @@ -30,6 +30,7 @@ class PlausicheckProducerLib 'InaktiverStudentAktiverStatus' => 'InaktiverStudentAktiverStatus', 'IncomingHeimatNationOesterreich' => 'IncomingHeimatNationOesterreich', 'IncomingOhneIoDatensatz' => 'IncomingOhneIoDatensatz', + 'IncomingUndGsFoerderrelevant' => 'IncomingUndGsFoerderrelevant', 'InskriptionVorLetzerBismeldung' => 'InskriptionVorLetzerBismeldung', 'NationNichtOesterreichAberGemeinde' => 'NationNichtOesterreichAberGemeinde', 'OrgformStgUngleichOrgformPrestudent' => 'OrgformStgUngleichOrgformPrestudent', diff --git a/application/libraries/issues/plausichecks/IncomingUndGsFoerderrelevant.php b/application/libraries/issues/plausichecks/IncomingUndGsFoerderrelevant.php new file mode 100644 index 000000000..919fb8415 --- /dev/null +++ b/application/libraries/issues/plausichecks/IncomingUndGsFoerderrelevant.php @@ -0,0 +1,44 @@ +_ci->plausichecklib->getIncomingUndGsFoerderrelevant($studiensemester_kurzbz, $studiengang_kz); + + if (isError($prestudentRes)) return $prestudentRes; + + if (hasData($prestudentRes)) + { + $prestudents = getData($prestudentRes); + + // populate results with data necessary for writing issues + foreach ($prestudents as $prestudent) + { + $results[] = array( + 'person_id' => $prestudent->person_id, + 'oe_kurzbz' => $prestudent->prestudent_stg_oe_kurzbz, + 'fehlertext_params' => array('prestudent_id' => $prestudent->prestudent_id), + 'resolution_params' => array('prestudent_id' => $prestudent->prestudent_id) + ); + } + } + + // return the results + return success($results); + } +} diff --git a/system/fehlerupdate.php b/system/fehlerupdate.php index da4ebe12d..9cfa5a0c4 100644 --- a/system/fehlerupdate.php +++ b/system/fehlerupdate.php @@ -125,6 +125,14 @@ $fehlerArr = array( 'fehlertyp_kurzbz' => 'error', 'app' => 'core' ), + array( + 'fehlercode' => 'CORE_INOUT_0009', + 'fehler_kurzbz' => 'IncomingUndGsFoerderrelevant', + 'fehlercode_extern' => null, + 'fehlertext' => 'Incoming oder gemeinsames Studium ist nicht als nicht förderrelevant markiert. (prestudent_id %s)', + 'fehlertyp_kurzbz' => 'error', + 'app' => 'core' + ), array( 'fehlercode' => 'CORE_STG_0001', 'fehler_kurzbz' => 'StgPrestudentUngleichStgStudent',