diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php index 1591b6464..e6e509a80 100644 --- a/vilesci/bis/personalmeldung.php +++ b/vilesci/bis/personalmeldung.php @@ -36,7 +36,7 @@ $uid = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); -if(!$rechte->isBerechtigt('mitarbeiter/stammdaten',null,'suid')) +if(!$rechte->isBerechtigt('mitarbeiter/stammdaten', null, 'suid')) die('Sie haben keine Berechtigung für diese Seite'); if (!$db = new basis_db()) @@ -138,14 +138,17 @@ foreach($verwendungcodex->result as $row) // Prüfe Zeitraum zur Erstellung einer BIS-Meldung $studiensemester = new studiensemester(); + $stsem = (isset($_GET['stsem'])) ? $_GET['stsem'] : $studiensemester->getaktorNext(); // aktuelles Studiensemester + + $datum_obj = new datum(); -if(mb_strstr($stsem,'SS')) +if(mb_strstr($stsem, 'SS')) { $studiensemester->load($stsem); $jahr = $datum_obj->formatDatum($studiensemester->start, 'Y'); - $stichtag = date("Y-m-d", mktime(0, 0, 0, 12, 31, $jahr - 1)); // 31.12. des vorangehenden Kalenderjahres zur BIS Meldung TODO: oder Abfragetag mitgeben? + $stichtag = date("Y-m-d", mktime(0, 0, 0, 12, 31, $jahr - 1)); // 31.12. des vorangehenden Kalenderjahres zur BIS Meldung TODO: oder Abfragetag mitgeben? } else { @@ -217,7 +220,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) * - nebenberuflich Lehrender: Hauptberufscode der letzten BIS-Verwendung */ $person_obj->hauptberufcode = ($is_hauptberuflich == true) - ? NULL + ? null : $bisverwendung_arr[count($bisverwendung_arr) - 1]->hauptberufcode; @@ -256,7 +259,6 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // Loop innerhalb Verwendungen mit selben Beschaeftigungsverhaeltnissen und Verwendung_codes foreach ($verwendung_tmp_arr as $verwendung_tmp) { - // Jahresvollzeitaequivalenz JVZAE ermitteln // ----------------------------------------------------------------------------------------------------- /** @@ -297,7 +299,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) } // Neue Verwendung im finalen Verwendungcontainer speichern - $verwendung_arr [] = $verwendung_obj; + $verwendung_arr[] = $verwendung_obj; } } @@ -314,7 +316,8 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // Alle Benutzerfunktionen im BIS Meldungsjahr holen $benutzerfunktion = new Benutzerfunktion(); $benutzerfunktion->getBenutzerFunktionByUid( - $person_obj->uid, null, + $person_obj->uid, + null, $beginn_imJahr->format('Y-m-d'), $ende_imJahr->format('Y-m-d') ); @@ -366,7 +369,7 @@ foreach ($mitarbeiter_arr as $mitarbeiter) // Container Person dem Gesamt-Container anhaengen // ----------------------------------------------------------------------------------------------------------------- - $person_arr []= $person_obj; + $person_arr[]= $person_obj; } // ********************************************************************************************************************* @@ -378,7 +381,7 @@ _outputHTML($person_arr); $xml = _generateXML($person_arr); $xml_datei = 'bisdaten/bismeldung_mitarbeiter.xml'; -$dateiausgabe = fopen($xml_datei,'w'); +$dateiausgabe = fopen($xml_datei, 'w'); fwrite($dateiausgabe, $xml); fclose($dateiausgabe); @@ -447,7 +450,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) // Echter Dienstvertrag - d.h. Vertragsstunden sind vorhanden // Bsp. angestellte Lektoren, angestellte MA in Verwaltung/Management/Wartung // ------------------------------------------------------------------------------------------------------------- - else if ($has_vertragsstunden) + elseif ($has_vertragsstunden) { // Vertragsstunden koennen max. VZ Aequivalenz-Basiswert haben if ($bisverwendung->vertragsstunden > BIS_VOLLZEIT_ARBEITSSTUNDEN) @@ -521,7 +524,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) * (durch Abzug der eben erstellten anteiligen JVZAE fuer Lehrtaetigkeiten) */ $bisverwendung->jvzae_anteilig -= $verwendung_lehre_obj->jvzae_anteilig; - $bisverwendung_arr [] = $verwendung_lehre_obj; + $bisverwendung_arr[] = $verwendung_lehre_obj; } } } @@ -530,7 +533,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) // Sonstige Beschaeftigungsverhaeltnisse ohne Vertragsstunden // Freie Dienstvertraege auf Stundenbasis // ------------------------------------------------------------------------------------------------------------- - else if (!$has_vertragsstunden && $has_lehrtaetigkeit) + elseif (!$has_vertragsstunden && $has_lehrtaetigkeit) { /** * Verwendungen ergänzen, wenn die BIS-Verwendung als externer Mitarbeiter in Sommer- / Wintersemester @@ -563,7 +566,7 @@ function _add_relativesBA_und_anteiligeJVZAE($uid, $bisverwendung_arr) $verwendung_lehre_obj->beschaeftigungsausmass_relativ = round($lehre_sws / BIS_VOLLZEIT_SWS_EINZELSTUNDENBASIS, 2); // VZ-Basis nach BIS-Vorgabe fuer Stundenbasis $verwendung_lehre_obj->gewichtung = BIS_HALBJAHRES_GEWICHTUNG_SWS; $verwendung_lehre_obj->jvzae_anteilig = round($verwendung_lehre_obj->beschaeftigungsausmass_relativ * $verwendung_lehre_obj->gewichtung, 2); - $bisverwendung_arr []= $verwendung_lehre_obj; + $bisverwendung_arr[]= $verwendung_lehre_obj; } } } @@ -721,13 +724,13 @@ function _addVerwendung_fuerLehre_Stundenbasis($bisverwendung) * @param array $bisfunktion_arr * @return array */ -function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) +function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) { $funktion_arr = array(); foreach ($bisfunktion_arr as $bisfunktion) { - $funktion_code = NULL; + $funktion_code = null; $has_oe_lehrgang = false; // default $studiengang = new Studiengang(); @@ -782,15 +785,15 @@ function _getFunktionscontainer_Funktionscode123456($bisfunktion_arr) { $funktion_obj = new StdClass(); $funktion_obj->funktionscode = $funktion_code; - $funktion_obj->besondereQualifikationCode = NULL; + $funktion_obj->besondereQualifikationCode = null; $funktion_obj->studiengang = ($funktion_code == 5) ? array(setLeadingZero(intval($studiengang->studiengang_kz), 4)) // STG bei Funktionscode 5 melden - : NULL; + : null; // Funktionsobjekt dem Funktionscontainer anhaengen - $funktion_arr []= $funktion_obj; + $funktion_arr[]= $funktion_obj; } - else if ($funktion_code == 5) // Funktionscontainer vorhanden und Funktionscode 5 + elseif ($funktion_code == 5)// Funktionscontainer vorhanden und Funktionscode 5 { $funktion_obj_arr = array_filter($funktion_arr, function (&$obj) { return $obj->funktionscode == 5; @@ -822,9 +825,9 @@ function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr) $entwicklungsteam_arr = array_filter($entwicklungsteam_arr, function ($obj) { return - !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && - $obj->studiengang_kz > 0 && - $obj->studiengang_kz < 10000; + !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && + $obj->studiengang_kz > 0 && + $obj->studiengang_kz < 10000; }); } @@ -837,23 +840,24 @@ function _addFunktionscontainer_Funktionscode7($uid, $funktion_arr) $besondere_qualifikation_code = max($besondere_qualifikation_code_arr); - // Studiengaenge, wo Person Teil des Entwicklungsteams gewesen ist + // alle Studiengaenge mit Person als Teil des Entwicklungsteams um Start- und Ende-Datum ergaenzen $studiengang_kz_arr = array(); foreach($entwicklungsteam_arr as $row_entw) - $studiengang_kz_arr[] = $row_entw->studiengang_kz; - - sort($studiengang_kz_arr); // sortieren - foreach($studiengang_kz_arr as &$studiengang_kz) // fuehrende Nullen fuer STG { - $studiengang_kz = setLeadingZero(intval($studiengang_kz), 4); + $stgkz = $row_entw->studiengang_kz; + $studiengang_kz_arr[$row_entw->entwicklungsteam_id]["studieng_kz"] = setLeadingZero(intval($stgkz), 4); + $studiengang_kz_arr[$row_entw->entwicklungsteam_id]["start"] = $row_entw->beginn; + $studiengang_kz_arr[$row_entw->entwicklungsteam_id]["ende"]= $row_entw->ende; } + sort($studiengang_kz_arr); // sortieren + // Funktionsobjekt generieren und dem Funktionscontainer anhaengen $funktion_obj = new StdClass(); $funktion_obj->funktionscode = 7; $funktion_obj->besondereQualifikationCode = $besondere_qualifikation_code; $funktion_obj->studiengang = $studiengang_kz_arr; - $funktion_arr []= $funktion_obj; + $funktion_arr[]= $funktion_obj; } return $funktion_arr; @@ -872,12 +876,12 @@ function _getLehrecontainer($sws_proStg_arr) { // Lehrgaenge und STG, die nicht BIS gemeldet werden, extrahieren $sws_proStg_arr = array_filter($sws_proStg_arr, function ($obj) - { - return - !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && - $obj->studiengang_kz > 0 && - $obj->studiengang_kz < 10000; - }); + { + return + !in_array($obj->studiengang_kz, BIS_EXCLUDE_STG) && + $obj->studiengang_kz > 0 && + $obj->studiengang_kz < 10000; + }); } if (!empty($sws_proStg_arr)) @@ -897,7 +901,7 @@ function _getLehrecontainer($sws_proStg_arr) $lehre_obj->WintersemesterSWS = $is_wintersemester ? $sws_proStg->sws : 0.00; // Lehreobjekt dem Lehrecontainer anhaengen - $lehre_arr []= $lehre_obj; + $lehre_arr[]= $lehre_obj; } else // Lehrecontainer mit STG schon vorhanden { @@ -910,7 +914,7 @@ function _getLehrecontainer($sws_proStg_arr) { current($lehre_obj_arr)->SommersemesterSWS = $sws_proStg->sws; } - else if ($is_wintersemester) + elseif ($is_wintersemester) { current($lehre_obj_arr)->WintersemesterSWS = $sws_proStg->sws; } @@ -932,7 +936,7 @@ function _generateXML($person_arr) if(isset($erhalter->result[0])) { - $erhalter = sprintf("%03s",trim($erhalter->result[0]->erhalter_kz)); + $erhalter = sprintf("%03s", trim($erhalter->result[0]->erhalter_kz)); } else $erhalter = ''; @@ -964,8 +968,8 @@ function _generateXML($person_arr) $xml .= 'verwendung_code. ']]>'; $xml .= 'ba1code. ']]>'; $xml .= 'ba2code. ']]>'; - $xml .= 'vzae,2,'.',''). ']]>'; - $xml .= 'jvzae,2,'.',''). ']]>'; + $xml .= 'vzae, 2, '.', ''). ']]>'; + $xml .= 'jvzae, 2, '.', ''). ']]>'; $xml .= ''; } @@ -977,7 +981,7 @@ function _generateXML($person_arr) ? 'besondereQualifikationCode. ']]>' : ''; - if ($funktion->funktionscode == 5 || $funktion->funktionscode == 7) + if ($funktion->funktionscode == 5) { if (is_array($funktion->studiengang)) { @@ -988,7 +992,7 @@ function _generateXML($person_arr) $xml .= ''; } } - else if (!is_null($funktion->studiengang)) + elseif (!is_null($funktion->studiengang)) { $xml .= ''; $xml .= 'studiengang. ']]>'; @@ -996,6 +1000,44 @@ function _generateXML($person_arr) } } + if ($funktion->funktionscode == 7) + { + if (is_array($funktion->studiengang)) + { + foreach ($funktion->studiengang as $studiengang) + { + $xml .= ''; + $xml .= ''; + $xml .= ''; + } + } + elseif (!is_null($funktion->studiengang)) + { + $xml .= ''; + $xml .= 'studiengang. ']]>'; + $xml .= ''; + } + } + + // if ($funktion->funktionscode == 7 || $funktion->funktionscode == 5) + // { + // if (is_array($funktion->studiengang)) + // { + // foreach ($funktion->studiengang as $studiengang) + // { + // $xml .= ''; + // $xml .= ''; + // $xml .= ''; + // } + // } + // else if (!is_null($funktion->studiengang)) + // { + // $xml .= ''; + // $xml .= 'studiengang. ']]>'; + // $xml .= ''; + // } + // } + $xml .= ''; } @@ -1152,7 +1194,7 @@ function _outputHTML($person_arr) '. $funktion->besondereQualifikationCode. ' '; - if ($funktion->funktionscode == 5 || $funktion->funktionscode == 7) + if ($funktion->funktionscode == 5) { if (is_array($funktion->studiengang)) { @@ -1161,11 +1203,35 @@ function _outputHTML($person_arr) echo $studiengang.' '; } } - else if (!is_null($funktion->studiengang)) + elseif (!is_null($funktion->studiengang)) { echo $funktion->studiengang.' '; } } + if ($funktion->funktionscode == 7) + { + if (is_array($funktion->studiengang)) + { + foreach ($funktion->studiengang as $studiengang) + { + echo $studiengang["studieng_kz"].' '; + + if ($studiengang["start"] != "") + { + $beginn = new DateTime($studiengang["start"]); + $ende = new DateTime($studiengang["ende"]); + echo "(". $beginn->format('d.m.Y'). " bis " . $ende->format('d.m.Y') . ")
"; + } + else + echo "
"; + } + } + elseif (!is_null($funktion->studiengang)) + { + echo $funktion->studiengang.' '; + } + } + echo ' '; } @@ -1304,7 +1370,7 @@ function outputPlausibilitaetschecks($person_arr) if (count($msg) > 0) { - echo "Fehler bei ".$row->vorname.' '.$row->nachname.' : '.implode($msg,', '); + echo "Fehler bei ".$row->vorname.' '.$row->nachname.' : '.implode($msg, ', '); echo "\n
"; } }