* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/studiensemester.class.php');
require_once('../../include/datum.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$error_log='';
$error_log1='';
$error_log_all="";
$stgart='';
$fehler='';
$v='';
$erhalter='';
$zaehl=0;
$eteam=array();
$studiensemester=new studiensemester();
if(isset($_GET['stsem']))
$stsem = $_GET['stsem'];
else
$stsem=$studiensemester->getaktorNext(1); //aktuelles Semester
$datei='';
$mitarbeiterzahl=0;
$echt=0;
$frei=0;
$nichtmelden = array(11,91,92,94,999,203,145,204, 308, 182, 222);
$datumobj=new datum();
if(mb_strstr($stsem,"WS"))
{
$studiensemester->load($stsem);
$jahr = $datumobj->formatDatum($studiensemester->start, 'Y');
$bisdatum=date("Y-m-d", mktime(0, 0, 0, 11, 15, $jahr));
$bisprevious=date("Y-m-d", mktime(0, 0, 0, 11, 15, $jahr-1));
}
else
{
echo "Fehler: Studiensemester muss ein Wintersemester sein";
exit;
}
$qry="SELECT * FROM public.tbl_erhalter";
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
$erhalter = sprintf("%03s",trim($row->erhalter_kz));
}
}
$qry="
SELECT DISTINCT ON (UID) *
FROM
public.tbl_mitarbeiter
JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)
JOIN public.tbl_person USING(person_id)
JOIN bis.tbl_bisverwendung USING(mitarbeiter_uid)
WHERE
bismelden
AND personalnummer>0
AND (tbl_bisverwendung.ende is NULL OR tbl_bisverwendung.ende>'$bisprevious')
ORDER BY uid, nachname,vorname
";
if($result = $db->db_query($qry))
{
$datei.="
".$erhalter."
".date("dmY", $datumobj->mktime_fromdate($bisdatum))."
";
while($row = $db->db_fetch_object($result))
{
$error_person = false;
$person_content='';
$qryet="SELECT * FROM bis.tbl_entwicklungsteam WHERE mitarbeiter_uid='".$row->mitarbeiter_uid."';";
if($resultet=$db->db_query($qryet))
{
while($rowet=$db->db_fetch_object($resultet))
{
$eteam[$rowet->studiengang_kz]=$rowet->besqualcode;
}
}
$error_log='';
if($row->gebdatum=='' || $row->gebdatum==NULL)
{
$error_log.=($error_log!=''?', ':'')."Geburtsdatum ('".$row->gebdatum."')";
}
if($row->geschlecht=='' || $row->geschlecht==NULL)
{
$error_log.=($error_log!=''?', ':'')."Geschlecht ('".$row->geschlecht."')";
}
if($row->ausbildungcode=='' || $row->ausbildungcode==NULL)
{
$error_log.=($error_log!=''?', ':'')."HoechsteAbgeschlosseneAusbildung ('".$row->ausbildungcode."')";
}
$person_content.="
".sprintf("%015s",$row->personalnummer)."
".date("dmY", $datumobj->mktime_fromdate($row->gebdatum))."
".strtoupper($row->geschlecht)."
".$row->ausbildungcode."";
$qryvw="SELECT * FROM bis.tbl_bisverwendung WHERE mitarbeiter_uid='".addslashes($row->mitarbeiter_uid)."' AND habilitation=true;";
if($resultvw=$db->db_query($qryvw))
{
if($db->db_num_rows($resultvw)>0)
{
$person_content.="
J";
}
else
{
$person_content.="
N";
}
}
$qryvw="SELECT * FROM bis.tbl_bisverwendung WHERE mitarbeiter_uid='".addslashes($row->mitarbeiter_uid)."' AND (ende is null OR ende>'$bisprevious') AND (beginn<'$bisdatum' OR beginn is null);";
if($resultvw=$db->db_query($qryvw))
{
if($db->db_num_rows($resultvw)>0)
{
while($rowvw=$db->db_fetch_object($resultvw))
{
if($rowvw->ba1code=='' || $rowvw->ba1code==NULL)
{
$error_log.=($error_log!=''?', ':'')."Beschaeftigungsart1 ('".$rowvw->ba1code."')";
}
if($rowvw->ba2code=='' || $rowvw->ba2code==NULL)
{
$error_log.=($error_log!=''?', ':'')."Beschaeftigungsart2 ('".$rowvw->ba2code."')";
}
if($rowvw->beschausmasscode=='' || $rowvw->beschausmasscode==NULL)
{
$error_log.=($error_log!=''?', ':'')."BeschaeftigungsAusmass ('".$rowvw->beschausmasscode."')";
}
if($rowvw->verwendung_code=='' || $rowvw->verwendung_code==NULL)
{
$error_log.=($error_log!=''?', ':'')."VerwendungsCode ('".$rowvw->verwendung_code."')";
}
if(!$rowvw->hauptberuflich && ($rowvw->hauptberufcode=='' || $rowvw->hauptberufcode==NULL))
{
$error_log.=($error_log!=''?', ':'')."Hauptberuf ('".$rowvw->hauptberufcode."')";
}
if($rowvw->ba1code==3)
{
$echt++;
}
if($rowvw->ba1code==4)
{
$frei++;
}
$person_content.="
".$rowvw->ba1code."
".$rowvw->ba2code."
".$rowvw->beschausmasscode."
".$rowvw->verwendung_code."";
//Studiengangsleiter
$qryslt="SELECT
tbl_benutzerfunktion.*, tbl_studiengang.studiengang_kz
FROM public.tbl_benutzerfunktion JOIN public.tbl_studiengang USING(oe_kurzbz)
WHERE
uid='".addslashes($row->mitarbeiter_uid)."'
AND funktion_kurzbz='Leitung'
AND (datum_von<'$bisdatum' OR datum_von is null)
AND (datum_bis>'$bisprevious' OR datum_bis is NULL)
AND studiengang_kz<10000;";
if($resultslt=$db->db_query($qryslt))
{
while($rowslt=$db->db_fetch_object($resultslt))
{
if($rowslt->studiengang_kz=='' || $rowslt->studiengang_kz==NULL)
{
$error_log=($error_log!=''?', ':'')."StgKz(Leitung) ('".$rowslt->studiengang_kz."')";
}
if(!in_array($rowslt->studiengang_kz, $nichtmelden))
{
$person_content.="
".sprintf("%04s",$rowslt->studiengang_kz)."
";
}
}
}
//Funktionen
$qryfkt="SELECT * FROM bis.tbl_bisfunktion WHERE bisverwendung_id='".$rowvw->bisverwendung_id."' AND studiengang_kz>0 AND studiengang_kz<10000;";
if($resultfkt=$db->db_query($qryfkt))
{
while($rowfkt=$db->db_fetch_object($resultfkt))
{
if($rowfkt->studiengang_kz=='' || $rowfkt->studiengang_kz==NULL)
{
$error_log.=($error_log!=''?', ':'')."StgKz(Funktion) ('".$rowfkt->studiengang_kz."')";
}
if($rowfkt->sws=='' || $rowfkt->sws==NULL)
{
$error_log.=($error_log!=''?', ':'')."SWS ('".$rowfkt->sws."')";
}
if($rowvw->hauptberuflich=='' || $rowvw->hauptberuflich==NULL)
{
$error_log.=($error_log!=''?', ':'')."Hauptberuflich ('".$rowvw->hauptberuflich."')";
}
if(($rowvw->hauptberufcode=='' || $rowvw->hauptberufcode==NULL) && $rowvw->hauptberuflich=='f')
{
$error_log.=($error_log!=''?', ':'')."HauptberufCode ('".$rowvw->hauptberufcode."')";
}
if (isset($eteam[$rowfkt->studiengang_kz]))
{
if(($eteam[$rowfkt->studiengang_kz]=='' || $eteam[$rowfkt->studiengang_kz]==NULL))
{
$error_log.=($error_log!=''?', ':'')."BesondereQualifikationCode ('".$eteam[$rowfkt->studiengang_kz]."')";
}
}
$person_content.="
".sprintf("%04s",$rowfkt->studiengang_kz)."
".$rowfkt->sws."";
if($rowvw->hauptberuflich=='t')
{
$person_content.="
J";
}
else
{
$person_content.="
N
".$rowvw->hauptberufcode."";
}
if(isset($eteam[$rowfkt->studiengang_kz]))
{
$person_content.="
J
".$eteam[$rowfkt->studiengang_kz]."";
}
else
{
$person_content.="
N";
}
$person_content.="
";
}
}
$person_content.="
";
}
}
else
{
//Keine Verwendung
$v.="
$row->mitarbeiter_uid hat keine Verwendung und wird ausgelassen
";
$error_person = true;
}
}
$mitarbeiterzahl++;
$person_content.="
";
if($error_log!='' || $error_log1!='')
{
$v.="Bei Mitarbeiter (PersNr, UID, Vorname, Nachname) '".$row->personalnummer."','".$row->mitarbeiter_uid."', '".$row->nachname."', '".$row->vorname."': \n";
if($error_log!='')
{
$v.=" Es fehlt: ".$error_log."\n";
}
$zaehl++;
$v.="\n";
$error_log='';
}
else
{
if(!$error_person)
$datei.=$person_content;
}
}
$datei.="
";
}
echo '
BIS - Meldung Mitarbeiter
';
echo "BIS - Mitarbeiterdaten werden überprüft (für Meldung ".$stsem." / $bisprevious - $bisdatum)
";
echo "Anzahl Mitarbeiter: Gesamt: ".$mitarbeiterzahl." / echter Dienstvertrag: ".$echt." / freier Dienstvertrag: ".$frei."
";
echo "Nicht plausible BIS-Daten
";
echo nl2br($v."
");
//Tabelle mit Ergebnissen ausgeben
$ddd='bisdaten/bismeldung_mitarbeiter.xml';
$dateiausgabe=fopen($ddd,'w');
fwrite($dateiausgabe,$datei);
fclose($dateiausgabe);
echo "XML-Datei für Mitarbeiter-BIS-Meldung
";
?>