From f863c6d7281d2cda03b34647f24e7638ea80dfe9 Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Mon, 20 Apr 2026 18:24:30 +0200 Subject: [PATCH] personalmeldung legacy system: melderelevant is checked for lehre, bugfix: lehre is correctly added if studiengang already has sws --- include/entwicklungsteam.class.php | 4 +++- include/lehreinheitmitarbeiter.class.php | 6 ++++-- vilesci/bis/personalmeldung.php | 15 ++++++++------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/include/entwicklungsteam.class.php b/include/entwicklungsteam.class.php index 70b30d325..b88c3971e 100644 --- a/include/entwicklungsteam.class.php +++ b/include/entwicklungsteam.class.php @@ -364,9 +364,10 @@ class entwicklungsteam extends basis_db $bismeldung_jahr = $datetime->format('Y'); //laden des Datensatzes - $qry = "SELECT * + $qry = "SELECT tbl_entwicklungsteam.*, tbl_besqual.*, tbl_studiengang.studiengang_kz, tbl_studiengang.melderelevant FROM bis.tbl_entwicklungsteam JOIN bis.tbl_besqual USING(besqualcode) + JOIN public.tbl_studiengang USING(studiengang_kz) WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND (beginn is NULL OR beginn <= make_date(". $this->db_add_param($bismeldung_jahr). "::INTEGER, 12, 31)) AND (ende is NULL OR ende >= make_date(". $this->db_add_param($bismeldung_jahr). "::INTEGER, 1, 1))"; @@ -394,6 +395,7 @@ class entwicklungsteam extends basis_db $obj->insertvon = $row->insertvon; $obj->ext_id = $row->ext_id; $obj->besqual = $row->besqualbez; + $obj->melderelevant = $this->db_parse_bool($row->melderelevant); $this->result[] = $obj; } diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php index b892863e8..38000a2a5 100644 --- a/include/lehreinheitmitarbeiter.class.php +++ b/include/lehreinheitmitarbeiter.class.php @@ -584,8 +584,9 @@ class lehreinheitmitarbeiter extends basis_db $qry = ' WITH semester_sws_tbl AS ( - SELECT DISTINCT lehreinheit_id, studiensemester_kurzbz, lema.semesterstunden, - stg.studiengang_kz, stg.melde_studiengang_kz, stg.lgartcode + SELECT + DISTINCT lehreinheit_id, studiensemester_kurzbz, lema.semesterstunden, + stg.studiengang_kz, stg.melde_studiengang_kz, stg.lgartcode, stg.melderelevant FROM lehre.tbl_lehreinheitmitarbeiter lema JOIN lehre.tbl_lehreinheit USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) @@ -598,6 +599,7 @@ class lehreinheitmitarbeiter extends basis_db AND ss.studiensemester_kurzbz IN ('.$this->implode4SQL($studiensemester_kurzbz_arr).') -- nur lehre, die bisgemeldet wird AND lema.bismelden + AND stg.melderelevant -- keine lehreinheiten ohne semesterstunden AND lema.semesterstunden != 0 ) diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index 1def6774d..49d8a09c2 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -742,7 +742,7 @@ function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) $has_oe_lehrgang = !($studiengang->studiengang_kz > 0 && $studiengang->studiengang_kz < 10000); // STG, die nicht BIS-bemeldet werden, ueberspringen - if (in_array($studiengang->studiengang_kz, BIS_EXCLUDE_STG)) + if (in_array($studiengang->studiengang_kz, BIS_EXCLUDE_STG) || !$studiengang->melderelevant) { continue; } @@ -825,6 +825,7 @@ function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr, $stichtag) $entwicklungsteam_arr = array_filter($entwicklungsteam_arr, function ($obj) { return !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && + $obj->melderelevant && $obj->studiengang_kz > 0 && $obj->studiengang_kz < 10000; }); @@ -889,7 +890,7 @@ function _getLehrecontainer($sws_proStg_arr) $kennzeichen_name = $is_lehrgang ? 'LehrgangNr' : 'StgKz'; // Lehreobjekt generieren - if (empty($lehre_arr) || !lehre_stg_exists($sws_proStg->studiengang_kz, $lehre_arr)) + if (empty($lehre_arr) || !lehre_stg_exists($sws_proStg->melde_studiengang_kz, $lehre_arr)) { $lehre_obj = new StdClass(); @@ -904,8 +905,8 @@ function _getLehrecontainer($sws_proStg_arr) } else // Lehrecontainer mit STG schon vorhanden { - $lehre_obj_arr = array_filter($lehre_arr, function (&$obj) use ($sws_proStg) { - return $obj->StgKz == $sws_proStg->studiengang_kz; + $lehre_obj_arr = array_filter($lehre_arr, function (&$obj) use ($sws_proStg, $kennzeichen_name) { + return isset($obj->{$kennzeichen_name}) && $obj->{$kennzeichen_name} == $sws_proStg->melde_studiengang_kz; }); // SWS ergaenzen @@ -1359,15 +1360,15 @@ function verwendung_exists($bisverwendung, $verwendung_arr) /** * Prueft ob ein Studiengang bereits im Lehre Container vorhanden ist - * @param $studiengang_kz Studiengangskennzahl + * @param $melde_studiengang_kz Studiengangskennzahl * @param $lehre_arr Array mit Lehre Objekten * @return true wenn der Studiengang bereits existiert */ -function lehre_stg_exists($studiengang_kz, $lehre_arr) +function lehre_stg_exists($melde_studiengang_kz, $lehre_arr) { foreach($lehre_arr as $row) { - $kennzeichenName = $row->LehrgangNr ?? $row->StgKz; + $kennzeichenName = isset($row->LehrgangNr) ? 'LehrgangNr' : 'StgKz'; if(isset($row->{$kennzeichenName}) && $row->{$kennzeichenName} == $melde_studiengang_kz) return true; }