diff --git a/application/views/system/infocenter/infocenterAbgewiesenData.php b/application/views/system/infocenter/infocenterAbgewiesenData.php
index 3bf60a9ef..dbe0540be 100644
--- a/application/views/system/infocenter/infocenterAbgewiesenData.php
+++ b/application/views/system/infocenter/infocenterAbgewiesenData.php
@@ -14,6 +14,7 @@ $query = '
ps.prestudent_id AS "PreStudentID",
p.vorname AS "Vorname",
p.nachname AS "Nachname",
+ sg.kurzbzlang as "Studiengang",
pss.insertamum AS "AbgewiesenAm",
(
SELECT l.zeitpunkt
@@ -62,6 +63,7 @@ $query = '
'PreStudentID',
'Vorname',
'Nachname',
+ 'Studiengang',
'Abgewiesen am',
'Nachricht'
),
diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php
index 3ee4db220..d867c8613 100644
--- a/application/views/system/infocenter/infocenterData.php
+++ b/application/views/system/infocenter/infocenterData.php
@@ -55,8 +55,10 @@
a.dokument_kurzbz in ('.$AKTE_TYP.')
) AS "AnzahlAkte",
(
- SELECT l.insertvon
+ SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END
FROM system.tbl_log l
+ LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid
+ LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id
WHERE l.taetigkeit_kurzbz IN ('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
@@ -271,8 +273,10 @@
LEFT JOIN (
SELECT tpl.person_id,
tpl.zeitpunkt,
- tpl.uid AS lockuser
+ sp.nachname AS lockuser
FROM system.tbl_person_lock tpl
+ JOIN public.tbl_benutzer sb USING (uid)
+ JOIN public.tbl_person sp ON sb.person_id = sp.person_id
WHERE tpl.app = '.$APP.'
) pl USING(person_id)
LEFT JOIN (
diff --git a/application/views/system/infocenter/infocenterFreigegebenData.php b/application/views/system/infocenter/infocenterFreigegebenData.php
index e649fe54a..39b1e3cca 100644
--- a/application/views/system/infocenter/infocenterFreigegebenData.php
+++ b/application/views/system/infocenter/infocenterFreigegebenData.php
@@ -41,8 +41,10 @@ $query = '
LIMIT 1
) AS "LastActionType",
(
- SELECT l.insertvon
+ SELECT CASE WHEN sp.nachname IS NULL THEN l.insertvon ELSE sp.nachname END
FROM system.tbl_log l
+ LEFT JOIN public.tbl_benutzer on l.insertvon = tbl_benutzer.uid
+ LEFT JOIN public.tbl_person sp on tbl_benutzer.person_id = sp.person_id
WHERE l.taetigkeit_kurzbz IN('.$TAETIGKEIT_KURZBZ.')
AND l.logdata->>\'name\' NOT IN ('.$LOGDATA_NAME.')
AND l.person_id = p.person_id
@@ -248,8 +250,10 @@ $query = '
LEFT JOIN (
SELECT tpl.person_id,
tpl.zeitpunkt,
- tpl.uid AS lockuser
+ sp.nachname AS lockuser
FROM system.tbl_person_lock tpl
+ JOIN public.tbl_benutzer sb USING (uid)
+ JOIN public.tbl_person sp ON sb.person_id = sp.person_id
WHERE tpl.app = '.$APP.'
) pl USING(person_id)
WHERE
diff --git a/include/person.class.php b/include/person.class.php
index a50417db0..e10862ea1 100644
--- a/include/person.class.php
+++ b/include/person.class.php
@@ -24,6 +24,7 @@
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/datum.class.php');
+require_once(dirname(__FILE__).'/udf.class.php');
class person extends basis_db
{
@@ -64,6 +65,7 @@ class person extends basis_db
public $foto_sperre = false; // boolean
public $matr_nr; //varchar(32)
public $bpk; //varchar(255)
+ public $udf_values; //json
/**
* Konstruktor - Uebergibt die Connection und laedt optional eine Person
@@ -84,6 +86,8 @@ class person extends basis_db
**/
public function load($personId)
{
+ $udf = new UDF();
+
//person_id auf gueltigkeit pruefen
if (is_numeric($personId) && $personId != '')
{
@@ -91,8 +95,11 @@ class person extends basis_db
gebdatum, gebort, gebzeit, foto, anmerkung, homepage, svnr, ersatzkennzeichen,
familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id,
geschlecht, staatsbuergerschaft, geburtsnation, kurzbeschreibung, zugangscode, foto_sperre,
- matr_nr, bpk
- FROM public.tbl_person
+ matr_nr, bpk";
+ if ($hasUDF = $udf->personHasUDF())
+ $qry .= ", udf_values ";
+
+ $qry .= "FROM public.tbl_person
WHERE person_id = " . $this->db_add_param($personId, FHC_INTEGER);
if (!$this->db_query($qry))
@@ -135,6 +142,10 @@ class person extends basis_db
$this->foto_sperre = $this->db_parse_bool($row->foto_sperre);
$this->matr_nr = $row->matr_nr;
$this->bpk = $row->bpk;
+ if ($hasUDF)
+ {
+ $this->udf_values = $row->udf_values;
+ }
}
else
{
diff --git a/include/prestudent.class.php b/include/prestudent.class.php
index ab1e329dd..1d493beb0 100644
--- a/include/prestudent.class.php
+++ b/include/prestudent.class.php
@@ -26,6 +26,7 @@ require_once(dirname(__FILE__).'/log.class.php');
require_once(dirname(__FILE__).'/phrasen.class.php');
require_once(dirname(__FILE__).'/globals.inc.php');
require_once(dirname(__FILE__).'/sprache.class.php');
+require_once(dirname(__FILE__).'/udf.class.php');
$sprache = getSprache();
$lang = new sprache();
@@ -73,6 +74,7 @@ class prestudent extends person
public $priorisierung = null;
public $foerderrelevant = null;
public $standort_code = null;
+ public $udf_values = null;
public $status_kurzbz;
public $studiensemester_kurzbz;
@@ -1413,6 +1415,9 @@ class prestudent extends person
person_id=".$this->db_add_param($person_id, FHC_INTEGER)."
ORDER BY prestudent_id";
+ $udf = new UDF();
+ $hasUDF = $udf->prestudentHasUDF();
+
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
@@ -1455,6 +1460,10 @@ class prestudent extends person
$obj->gsstudientyp_kurzbz = $row->gsstudientyp_kurzbz;
$obj->aufnahmegruppe_kurzbz = $row->aufnahmegruppe_kurzbz;
$obj->priorisierung = $row->priorisierung;
+ if ($hasUDF)
+ {
+ $obj->udf_values = $row->udf_values;
+ }
$this->result[] = $obj;
}
diff --git a/system/filtersupdate.php b/system/filtersupdate.php
index cf7ac4685..1a1717339 100644
--- a/system/filtersupdate.php
+++ b/system/filtersupdate.php
@@ -347,7 +347,8 @@ $filters = array(
{"name": "vorname"},
{"name": "nachname"},
{"name": "svnr"},
- {"name": "ersatzkennzeichen"}
+ {"name": "ersatzkennzeichen"},
+ {"name": "mitarbeiter"}
],
"filters": []
}
@@ -486,6 +487,7 @@ $filters = array(
{"name": "PreStudentID"},
{"name": "Vorname"},
{"name": "Nachname"},
+ {"name": "Studiengang"},
{"name": "AbgewiesenAm"},
{"name": "Nachricht"}
],
diff --git a/vilesci/bis/lehrgangsmeldung.php b/vilesci/bis/lehrgangsmeldung.php
index 8649c2a5b..158d7d164 100644
--- a/vilesci/bis/lehrgangsmeldung.php
+++ b/vilesci/bis/lehrgangsmeldung.php
@@ -311,7 +311,7 @@ if($result = $db->db_query($qry))
//Vergleich der letzten 6 Stellen der SVNR mit Geburtsdatum - ausser bei 01.01. und 01.07.
if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107')
{
- $error_log_hinweis.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$row->gebdatum.") nicht";
+ $error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$row->gebdatum.") nicht";
}
//Vergleich der letzten 6 Stellen des Ersatzkennzeichen mit Geburtsdatum
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
@@ -390,7 +390,7 @@ if($result = $db->db_query($qry))
}
if($row->bpk == '' || $row->bpk == null)
{
- $error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt";
+ $error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
}
if($row->bpk != '' && $row->bpk != null)
@@ -606,7 +606,7 @@ if($result = $db->db_query($qry))
{
if($error_log_hinweis != '')
{
- $v.="Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($laststatus->status_kurzbz): \n";
+ $v.="Bei Student (UID, Vorname, Nachname) '".$row->student_uid."', '".$row->nachname."', '".$row->vorname."' ($row->status_kurzbz): \n";
$v.=" ".$error_log_hinweis." (Nicht BIS-Relevant)\n";
$error_log_hinweis = '';
}
@@ -649,10 +649,13 @@ if($result = $db->db_query($qry))
$datei.="
".$row->ersatzkennzeichen."";
}
-
- $datei.="
- ".$row->bpk."
- ";
+
+ if($row->bpk != '' && $row->bpk != null)
+ {
+ $datei.="
+ ".$row->bpk."
+ ";
+ }
$datei.="
".$row->staatsbuergerschaft."
diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php
index 7b35f28dc..3842f7074 100644
--- a/vilesci/bis/studentenmeldung.php
+++ b/vilesci/bis/studentenmeldung.php
@@ -54,7 +54,6 @@ $error_log_hinweis='';
$error_log1='';
$error_log_all="";
$error_log_io = ''; // error log fuer plausichecks von incomings/outgoings
-$stgart='';
$fehler='';
$maxsemester=0;
$v='';
@@ -106,6 +105,8 @@ $student_data=array();
$datum_obj = new datum();
//Beginn- und Endedatum des aktuellen Semesters
+// Update 07.12.2021 kindlm: scheint nicht verwendet zu werden
+/*
$qry="SELECT * FROM public.tbl_studiensemester WHERE studiensemester_kurzbz=".$db->db_add_param($ssem).";";
if($result = $db->db_query($qry))
{
@@ -114,7 +115,8 @@ if($result = $db->db_query($qry))
$beginn=$row->start;
$ende=$row->ende;
}
-}
+}*/
+
//Ermittlung aktuelles und letztes BIS-Meldedatum
if(mb_strstr($ssem,"WS"))
{
@@ -130,6 +132,13 @@ else
{
die('Ungültiges Studiensemester!');
}
+
+//Wenn bisdatum als GET-Parameter übergeben wird, dieses Datum nehmen
+if (isset($_GET['bisdatum']))
+{
+ $bisdatum = $_GET['bisdatum'];
+}
+
//ausgewaehlter Studiengang
if(isset($_GET['stg_kz']))
{
@@ -178,75 +187,46 @@ $kodex_studstatuscode_array['Unterbrecher']=2;
$kodex_studstatuscode_array['Absolvent'] =3;
$kodex_studstatuscode_array['Abbrecher'] =4;
-//Studiengangsdaten auslesen
-$stg_obj = new studiengang();
-if($stg_obj->load($stg_kz))
-{
- $maxsemester=$stg_obj->max_semester;
- if($maxsemester==0)
- {
- echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!";
- exit;
- }
-
- $erhalter = sprintf('%03s',$stg_obj->erhalter_kz);
-
- switch($stg_obj->typ)
- {
- case 'b': $stgart=1; break;
- case 'm': $stgart=2; break;
- case 'd': $stgart=3; break;
- case 'e': $stgart=4; break;
- default: die('
Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein
'); break;
- }
-
- // DoubleDegree Studierende werden per Default aus BB gemeldet.
- // Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden.
- if($stg_obj->orgform_kurzbz=='VZ')
- $orgform_code_array['DDP']=$orgform_code_array['VZ'];
-
- $orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz];
- $orgform_kurzbz=$stg_obj->orgform_kurzbz;
-}
-else
- die('Fehler:'.$stg_obj->errormsg);
-
-
//Ausgabe aktiver Studenten, die nicht gemeldet werden
-$qry_akt="
- SELECT
- DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
- FROM
- public.tbl_student
- JOIN public.tbl_benutzer ON(student_uid=uid)
- JOIN public.tbl_person USING (person_id)
- JOIN public.tbl_prestudent USING (prestudent_id)
- JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
- WHERE
- bismelden=FALSE
- AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
- AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing'))
- AND tbl_prestudent.prestudent_id NOT IN
- (
- SELECT prestudent_id
- FROM public.tbl_prestudentstatus
- WHERE
- tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)."
- AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent')
- )
- ORDER BY student_uid, nachname, vorname
- ";
-if($result_akt = $db->db_query($qry_akt))
+if ($stg_kz != 'alleBaMa')
{
- while($row_akt = $db->db_fetch_object($result_akt))
+ $qry_akt = "
+ SELECT
+ DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
+ FROM
+ public.tbl_student
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_prestudent USING (prestudent_id)
+ JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
+ WHERE
+ bismelden=FALSE
+ AND tbl_student.studiengang_kz=".$db->db_add_param($stg_kz)."
+ AND (tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)." AND status_kurzbz IN ('Student','Diplomand','Unterbrecher','Praktikant','Outgoing'))
+ AND tbl_prestudent.prestudent_id NOT IN
+ (
+ SELECT prestudent_id
+ FROM public.tbl_prestudentstatus
+ WHERE
+ tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem)."
+ AND (status_kurzbz='Abbrecher' OR status_kurzbz='Absolvent')
+ )
+ ORDER BY student_uid, nachname, vorname
+ ";
+ if ($result_akt = $db->db_query($qry_akt))
{
- $v.="Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."' hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!!
\n";
- $anzahl_fehler++;
+ while ($row_akt = $db->db_fetch_object($result_akt))
+ {
+ $v .= "Person (UID, Vorname, Nachname) '".$row_akt->student_uid."', '".$row_akt->nachname."', '".$row_akt->vorname."' hat Status $row_akt->status_kurzbz, wird aber nicht BIS gemeldet!!!
\n";
+ $anzahl_fehler++;
+ }
}
}
+if ($stg_kz != 'alleBaMa')
+{
//Incoming ohne I/O Datensatz anzeigen
-$qry_in="
+ $qry_in = "
SELECT
DISTINCT ON(student_uid, nachname, vorname) *, public.tbl_person.person_id AS pers_id
FROM
@@ -261,16 +241,16 @@ $qry_in="
AND (status_kurzbz='Incoming' AND NOT EXISTS (SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid))
ORDER BY student_uid, nachname, vorname
";
-if($result_in = $db->db_query($qry_in))
-{
- while($row_in = $db->db_fetch_object($result_in))
+ if ($result_in = $db->db_query($qry_in))
{
- $v.="Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): \n";
- $v.=" Es fehlt der I/O-Datensatz\n\n";
- $anzahl_fehler++;
+ while ($row_in = $db->db_fetch_object($result_in))
+ {
+ $v .= "Bei Student (UID, Vorname, Nachname) '".$row_in->student_uid."', '".$row_in->nachname."', '".$row_in->vorname."' ($row_in->status_kurzbz): \n";
+ $v .= " Es fehlt der I/O-Datensatz\n\n";
+ $anzahl_fehler++;
+ }
}
}
-
//Hauptselect
// An der FHTW können nur die Incomings ausgelesen werden, wenn die stg_kz 10006 übergeben wird
if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
@@ -292,6 +272,34 @@ if (CAMPUS_NAME == 'FH Technikum Wien' && $stg_kz==10006)
ORDER BY student_uid, nachname, vorname
";
}
+// Wenn "alleBaMa" als $stg_kz übergeben wird, wird ein großes XML mit allen Studiengängen geladen
+elseif ($stg_kz == 'alleBaMa')
+{
+ $qry="
+ SELECT
+ DISTINCT ON(tbl_student.studiengang_kz, matrikelnr, nachname, vorname) *, public.tbl_person.person_id AS pers_id, to_char(gebdatum, 'ddmmyy') AS vdat
+ FROM
+ public.tbl_student
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person USING (person_id)
+ JOIN public.tbl_prestudent USING (prestudent_id)
+ JOIN public.tbl_prestudentstatus ON(tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id)
+ JOIN public.tbl_studiengang ON (tbl_studiengang.studiengang_kz=tbl_student.studiengang_kz)
+ WHERE
+ bismelden=TRUE
+ AND tbl_studiengang.typ IN ('b','m')
+ AND (((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($ssem).") AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
+ AND (status_kurzbz='Student' OR status_kurzbz='Outgoing'
+ OR status_kurzbz='Praktikant' OR status_kurzbz='Diplomand' OR status_kurzbz='Absolvent'
+ OR status_kurzbz='Abbrecher' OR status_kurzbz='Unterbrecher'))
+ OR ((tbl_prestudentstatus.studiensemester_kurzbz=".$db->db_add_param($psem).") AND (status_kurzbz='Absolvent'
+ OR status_kurzbz='Abbrecher') AND tbl_prestudentstatus.datum>".$db->db_add_param($bisprevious).")
+ OR (status_kurzbz='Incoming' AND student_uid IN (SELECT student_uid FROM bis.tbl_bisio WHERE (tbl_bisio.bis>=".$db->db_add_param($bisprevious).")
+ OR (tbl_bisio.von<=".$db->db_add_param($bisdatum)." AND (tbl_bisio.bis>=".$db->db_add_param($bisdatum)." OR tbl_bisio.bis IS NULL))
+ )))
+ ORDER BY tbl_student.studiengang_kz, matrikelnr, nachname, vorname
+ ";
+}
else
{
$qry="
@@ -321,25 +329,72 @@ else
if($result = $db->db_query($qry))
{
- $header ="
-
- ".$erhalter."
- ".date("dmY", $datumobj->mktime_fromdate($bisdatum))."
-
-
- ".$stg_kz."";
-
-
- $datei .= $header;
- $dateiNurBewerber .= $header;
+ $stg_kz_index = '';
while($row = $db->db_fetch_object($result))
{
- $datei.= GenerateXMLStudentBlock($row);
+ if ($row->studiengang_kz != $stg_kz_index)
+ {
+ //Studiengangsdaten auslesen
+ $stg_obj = new studiengang();
+ if($stg_obj->load($row->studiengang_kz))
+ {
+ $maxsemester = $stg_obj->max_semester;
+ if($maxsemester == 0)
+ {
+ echo "Die maximale Semesteranzahl des Studienganges ist nicht angegeben!";
+ exit;
+ }
+
+ $erhalter = sprintf('%03s',$stg_obj->erhalter_kz);
+
+ switch($stg_obj->typ)
+ {
+ case 'b': $stgart = 1; break;
+ case 'm': $stgart = 2; break;
+ case 'd': $stgart = 3; break;
+ case 'e': $stgart = 4; break;
+ default: die('Dieser Studiengangstyp kann nicht gemeldet werden. Typ muss (b, m, d oder e) sein
'); break;
+ }
+
+ // DoubleDegree Studierende werden per Default aus BB gemeldet.
+ // Wenn es ein reiner VZ Studiengang ist, dann sollen diese aber als VZ gemeldet werden.
+ if($stg_obj->orgform_kurzbz == 'VZ')
+ $orgform_code_array['DDP'] = $orgform_code_array['VZ'];
+
+ $orgform_code = $orgform_code_array[$stg_obj->orgform_kurzbz];
+ $orgform_kurzbz = $stg_obj->orgform_kurzbz;
+ }
+ else
+ die('Fehler:'.$stg_obj->errormsg);
+
+ // Header am Beginn rausschreiben
+ if ($stg_kz_index == '')
+ {
+ $header = "
+
+ ".$erhalter."
+ ".date("dmY", $datumobj->mktime_fromdate($bisdatum))."
+ ";
+
+ $datei .= $header;
+ $dateiNurBewerber .= $header;
+ }
+ if ($stg_kz_index != '' && $row->studiengang_kz != $stg_kz_index)
+ {
+ $datei .= "
+ ";
+ }
+ $stg_kz_index = $row->studiengang_kz;
+ $datei .= "
+
+ ".$row->studiengang_kz."";
+ }
+ $datei .= GenerateXMLStudentBlock($row);
}
//Bewerberblock bei Ausserordentlichen nicht anzeigen
- if($stg_kz!=('9'.$erhalter))
+ /*if($stg_kz!=('9'.$erhalter))
{
$stg_obj = new studiengang();
@@ -360,7 +415,7 @@ if($result = $db->db_query($qry))
$datei.=$bewerberBlock;
$dateiNurBewerber.=$bewerberBlock;
}
- }
+ }*/
}
$footer="
@@ -393,26 +448,26 @@ echo '
{
$("#t1").tablesorter(
{
- sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]],
+ sortList: [[6,1],[5,1],[4,1],[2,0],[3,0]],
widgets: ["zebra", "filter", "stickyHeaders"],
- widgetOptions : { filter_functions:
- {
- // Add select menu to this column
+ widgetOptions : { filter_functions:
+ {
+ // Add select menu to this column
4 : {
- "Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); },
+ "Abbrecher" : function(e, n, f, i, $r, c, data) { return /Abbrecher/.test(e); },
"Absolvent" : function(e, n, f, i, $r, c, data) { return /Absolvent/.test(e); },
"Diplomand" : function(e, n, f, i, $r, c, data) { return /Diplomand/.test(e); },
"Incoming" : function(e, n, f, i, $r, c, data) { return /Incoming/.test(e); },
"Student" : function(e, n, f, i, $r, c, data) { return /Student/.test(e); },
- "Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); },
+ "Unterbrecher" : function(e, n, f, i, $r, c, data) { return /Unterbrecher/.test(e); },
}
- }
- }
+ }
+ }
});
$("#t2").tablesorter(
{
- sortList: [[0,0],[1,0]],
- widgets: ["zebra", "filter", "stickyHeaders"]
+ sortList: [[0,0],[1,0]],
+ widgets: ["zebra", "filter", "stickyHeaders"]
});
});
@@ -421,6 +476,7 @@ if ($rechte->isBerechtigt('admin'))
{
echo '';
}
-$studiengang = new studiengang($stg_kz);
-$typ = new studiengang($stg_kz);
-$typ->getStudiengangTyp($studiengang->typ);
-echo "BIS - Studentendaten werden überprüft! Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."
\n";
+if ($stg_kz != 'alleBaMa')
+{
+ $studiengang = new studiengang($stg_kz);
+ $typ = new studiengang($stg_kz);
+ $typ->getStudiengangTyp($studiengang->typ);
+ echo "BIS - Studentendaten werden überprüft. Studiengang: ".$db->convert_html_chars($stg_kz)." - ".$typ->bezeichnung." ".$studiengang->bezeichnung."
\n";
+}
+else
+{
+ echo "BIS - Studentendaten aller Bachelor- und Master-Studiengänge werden überprüft.
\n";
+}
echo "Nicht plausible BIS-Daten (für Meldung ".$db->convert_html_chars($ssem)."):
";
echo nl2br($v."\n\n");
@@ -821,7 +884,7 @@ function GenerateXMLStudentBlock($row)
}
if($row->svnr!='' && $row->svnr!=null && substr($row->svnr,4,6)!=$row->vdat && substr($row->vdat,0,4)!='0101' && substr($row->vdat,0,4)!='0107')
{
- $error_log_hinweis.=(!empty($error_log)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
+ $error_log_hinweis.=(!empty($error_log_hinweis)?', ':'')."SVNR ('".$row->svnr."') enthält Geburtsdatum (".$datum_obj->formatDatum($row->gebdatum,'d.m.Y').") nicht";
}
if($row->ersatzkennzeichen!='' && $row->ersatzkennzeichen!=null && substr($row->ersatzkennzeichen,4,6)!=$row->vdat)
{
@@ -853,7 +916,7 @@ function GenerateXMLStudentBlock($row)
}
if($row->bpk == '' || $row->bpk == null)
{
- $error_log .= (!empty($error_log) ? ', ' : '') . "bPK fehlt";
+ $error_log_hinweis .= (!empty($error_log_hinweis) ? ', ' : '') . "bPK fehlt";
}
if($row->bpk != '' && $row->bpk != null)
{
@@ -996,8 +1059,7 @@ function GenerateXMLStudentBlock($row)
{
if ($db->db_num_rows($resultAbbrecher) == 0)
{
- $error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen";
-
+ //$error_log .= (!empty($error_log) ? ', ' : '')."Der Student ist Abbrecher vor der ersten BIS-Meldung. Bitte im FAS das Hakerl bei \"Bismelden\" im Reiter \"Prestudent\" entfernen";
}
}
}
@@ -1322,9 +1384,11 @@ function GenerateXMLStudentBlock($row)
" . $row->ersatzkennzeichen . "";
}
- $datei .= "
- " . $row->bpk . "
- ";
+ if($row->bpk != '' && $row->bpk != null)
+ {
+ $datei.="
+ ".$row->bpk."";
+ }
$datei .= "
" . $row->staatsbuergerschaft . "
@@ -1333,14 +1397,11 @@ function GenerateXMLStudentBlock($row)
" . $nation . "";
- if (!$ausserordentlich && !$incoming)
- {
- $datei .= "
+ $datei .= "
" . $zustell_plz . "
" . $zustell_gemeinde . "
" . $zustell_strasse . "
" . $zustell_nation . "";
- }
if ($co_name != '')
{
diff --git a/vilesci/stammdaten/personen_wartung.php b/vilesci/stammdaten/personen_wartung.php
index 2c4c4f0fa..6e9f1cc21 100644
--- a/vilesci/stammdaten/personen_wartung.php
+++ b/vilesci/stammdaten/personen_wartung.php
@@ -42,6 +42,7 @@ require_once ('../../include/kontakt.class.php');
require_once ('../../include/dokument.class.php');
require_once ('../../include/reihungstest.class.php');
require_once ('../../include/pruefling.class.php');
+require_once ('../../include/udf.class.php');
if (! $db = new basis_db())
@@ -54,6 +55,7 @@ $rechte->getBerechtigungen($uid);
if (! $rechte->isBerechtigt('basis/person', null, 'suid'))
die($rechte->errormsg);
+$udf = new UDF();
$msg_info = array();
$msg_error = array();
$msg_warning = array();
@@ -283,6 +285,40 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
if ($doppelteReihungstestzuordnung === false)
$sql_query_upd1 .= "UPDATE public.tbl_rt_person SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
+
+ $personUDF = $udf->personHasUDF();
+
+ if ($personUDF)
+ {
+ $udfToKeep = json_decode($personToKeep_obj->udf_values, true);
+ $udfToDelete = json_decode($personToDelete_obj->udf_values, true);
+
+ $udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
+ $udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete;
+
+ if ($udfToKeep != $udfToDelete)
+ {
+ foreach ($udfToDelete as $key => $udfValue)
+ {
+ if (!array_key_exists($key, $udfToKeep))
+ {
+ $udfToKeep[$key] = $udfValue;
+ }
+ elseif ($udfToKeep[$key] !== $udfValue && !is_null($udfValue))
+ {
+ if (is_null($udfToKeep[$key]))
+ $udfToKeep[$key] = $udfValue;
+ else
+ {
+ $msg_error[] = 'Beide Personen haben unterschiedliche Werte in den UDFs und können nicht zusammengelegt werden.
+ Sie müssen die Datensätze manuell bereinigen, bevor Sie die Personen zusammenlegen können.';
+ $error = true;
+ break;
+ }
+ }
+ }
+ }
+ }
if ($error == false)
{
// Wenn bei einer der Personen das Foto gesperrt ist, dann die Sperre uebernehmen
@@ -437,6 +473,7 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
$sql_query_upd1 .= "UPDATE system.tbl_filters SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE system.tbl_log SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE system.tbl_person_lock SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
+ $sql_query_upd1 .= "UPDATE system.tbl_issue SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE wawi.tbl_betriebsmittelperson SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= "UPDATE wawi.tbl_konto SET person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . " WHERE person_id=" . $db->db_add_param($personToDelete, FHC_INTEGER) . ";";
$sql_query_upd1 .= $alma_query_upd;
@@ -456,6 +493,9 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
// BPK erst setzen, wenn nur mehr eine Person vorhanden ist
$sql_query_upd1 .= "UPDATE public.tbl_person SET bpk=" . $db->db_add_param($bpk, FHC_STRING) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";";
+ if ($personUDF)
+ $sql_query_upd1 .= "UPDATE public.tbl_person SET udf_values=" . $db->db_add_param(json_encode($udfToKeep)) . " WHERE person_id=" . $db->db_add_param($personToKeep, FHC_INTEGER) . ";";
+
if ($db->db_query($sql_query_upd1))
{
$msg_info[] = "Update Query:";
@@ -730,9 +770,10 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
usort($prestudenten->result, "sortPrestudents");
+ $prestudentUDF = $udf->prestudentHasUDF();
$prestudentenArray = array();
$kontaktLoeschArray = array();
- foreach ($prestudenten->result AS $row)
+ foreach ($prestudenten->result AS $key => $row)
{
$prestudentenArray[] = array(
'prestudent_id' => $row->prestudent_id,
@@ -753,6 +794,8 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
'zgvmanation' => $row->zgvmanation,
'studiengang_typ' => $row->studiengang_typ
);
+ if ($prestudentUDF)
+ $prestudentenArray[$key] = array_merge($prestudentenArray[$key], array('udf_values' => $row->udf_values));
}
/*
@@ -793,6 +836,48 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
$i++;
continue;
}
+
+ //Wenn die UDF values nicht zusammengeführt werden können, wird mit dem nächsten weitergemacht und eine Warnung ausgegeben
+ if ($prestudentUDF)
+ {
+ $udfError = false;
+
+ $udfToKeep = json_decode($prestudentenArray[$previousKey]['udf_values'], true);;
+ $udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
+
+ $udfToDelete = json_decode($value['udf_values'], true);
+ $udfToDelete = is_null($udfToDelete) ? array() : $udfToDelete;
+
+ if ($udfToKeep != $udfToDelete)
+ {
+ foreach ($udfToDelete as $udfKey => $udfValue)
+ {
+ if (!array_key_exists($udfKey, $udfToKeep))
+ {
+ $udfToKeep[$udfKey] = $udfValue;
+ }
+ elseif ($udfToKeep[$udfKey] !== $udfValue && !is_null($udfValue))
+ {
+ if (is_null($udfToKeep[$udfKey]))
+ $udfToKeep[$udfKey] = $udfValue;
+ else
+ {
+
+ $warningList['udfUnklar'][$i][1] = $prestudentId;
+ $warningList['udfUnklar'][$i][2] = $value['prestudent_id'];
+ $i++;
+ $udfError = true;
+ break;
+ }
+ }
+ }
+ }
+
+ $prestudentenArray[$previousKey]['udf_values'] = json_encode($udfToKeep);
+ if ($udfError)
+ continue;
+
+ }
// Wenn der Status gleich ist, wird auf bestätigt-datum geprüft
if ($status_kurzbz == $value['status_kurzbz'])
{
@@ -894,6 +979,11 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
$zgvmadatum = $value['zgvmadatum'];
$zgvmanation = $value['zgvmanation'];
$previousKey = $key;
+ if ($prestudentUDF)
+ {
+ $udfToKeep = json_decode($value['udf_values'], true);
+ $udfToKeep = is_null($udfToKeep) ? array() : $udfToKeep;
+ }
}
// Messages in $msg_warning schreiben
@@ -934,6 +1024,22 @@ if (isset($personToDelete) && isset($personToKeep) && $personToDelete >= 0 && $p
}
}
+ $msg_warning[] = $messageOutput;
+ $messageOutput = '';
+ if(isset($warningList['udfUnklar']))
+ {
+ foreach ($warningList['udfUnklar'] as $key => $value) {
+
+ $messageOutput .= 'Bei folgenden PreStudenten sind die UDFs widersprüchlich oder unklar:
';
+
+ foreach ($value as $presstudentid)
+ {
+ $messageOutput .= ' '.$presstudentid.'
';
+ }
+ $messageOutput .= '
';
+ }
+ }
+
$msg_warning[] = $messageOutput;
//Wenn Prüfling auf zu löschenden Prestudenten zeigt und ggf auf bleibenden umhängen.
diff --git a/vilesci/stammdaten/raum_details.php b/vilesci/stammdaten/raum_details.php
index 92f71886a..09ff298a5 100644
--- a/vilesci/stammdaten/raum_details.php
+++ b/vilesci/stammdaten/raum_details.php
@@ -115,9 +115,15 @@
$sg_update->gebteil = $gebteil;
$sg_update->oe_kurzbz = $oe_kurzbz;
$sg_update->arbeitsplaetze = $arbeitsplaetze;
+ $sg_update->updateamum = date('Y-m-d H:i:s');
+ $sg_update->updatevon = $user;
if ($_POST["neu"] == "true")
+ {
+ $sg_update->insertamum = date('Y-m-d H:i:s');
+ $sg_update->insertvon = $user;
$sg_update->new = 1;
+ }
if(!$sg_update->save())
{