diff --git a/.gitignore b/.gitignore
index cf35d4eea..3eda1161d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,15 @@ documents/
.project
.buildpath
application/config/development/
+application/extensions/
+application/controllers/extensions/
+application/config/extensions/
+application/helpers/extensions/
+application/hooks/extensions/
+application/libraries/extensions/
+application/models/extensions/
+application/views/extensions/
+application/widgets/extensions/
tests/codeception/_output/*
!/tests/codeception/_output/.placeholder
tests/codeception/codeception.yml
diff --git a/application/controllers/Redirect.php b/application/controllers/Redirect.php
index ffe135003..660709b6f 100644
--- a/application/controllers/Redirect.php
+++ b/application/controllers/Redirect.php
@@ -53,22 +53,15 @@ class Redirect extends FHC_Controller
if ($oe_kurzbz != null && $oe_kurzbz != '')
{
$organisationRoot = null;
+
$getOERoot = $this->MessageTokenModel->getOERoot($oe_kurzbz);
- if ($getOERoot) // If no errors occurred
+ if (isSuccess($getOERoot)) // If no errors occurred
{
- // If data are present
- if (is_array($getOERoot->result()) && count($getOERoot->result()) > 0)
- {
- $organisationseinheit = $getOERoot->result()[0];
- if ($organisationseinheit->oe_kurzbz == null)
- {
- show_error('No organisation unit present in the message');
- }
- else
- {
- $organisationRoot = $organisationseinheit->oe_kurzbz;
- }
- }
+ $organisationRoot = $getOERoot->retval;
+ }
+ else
+ {
+ show_error('No organisation unit present in the message');
}
$addonAufnahmeUrls = $this->config->item('addons_aufnahme_url');
diff --git a/application/models/person/Person_model.php b/application/models/person/Person_model.php
index 2ea9d4d25..770be0e14 100644
--- a/application/models/person/Person_model.php
+++ b/application/models/person/Person_model.php
@@ -18,7 +18,7 @@ class Person_model extends DB_Model
public function getPersonKontaktByZugangscode($zugangscode, $email)
{
$this->addJoin('public.tbl_kontakt', 'person_id');
-
+
return $this->loadWhere(array('zugangscode' => $zugangscode, 'kontakt' => $email));
}
@@ -135,4 +135,21 @@ class Person_model extends DB_Model
return $result;
}
+
+ /**
+ * Searches a Person
+ * @param $filter Term to search for.
+ * @return DB-result
+ */
+ public function searchPerson($filter)
+ {
+ $this->addSelect('vorname, nachname, gebdatum, person_id');
+ $result = $this->loadWhere(
+ 'lower(nachname) like '.$this->db->escape('%'.$filter.'%')."
+ OR lower(vorname) like ".$this->db->escape('%'.$filter.'%')."
+ OR lower(nachname || ' ' || vorname) like ".$this->db->escape('%'.$filter.'%')."
+ OR lower(vorname || ' ' || nachname) like ".$this->db->escape('%'.$filter.'%'));
+
+ return $result;
+ }
}
diff --git a/application/models/system/MessageToken_model.php b/application/models/system/MessageToken_model.php
index 8c31a0807..24b9f05ca 100644
--- a/application/models/system/MessageToken_model.php
+++ b/application/models/system/MessageToken_model.php
@@ -215,23 +215,43 @@ class MessageToken_model extends CI_Model
*/
public function getOERoot($oe_kurzbz)
{
- $sql = 'SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz = ?';
+ $sql = '
+ WITH RECURSIVE organizations(rid, oe_kurzbz, oe_parent_kurzbz) AS
+ (
+ SELECT 1 AS rid, o.oe_kurzbz, o.oe_parent_kurzbz
+ FROM public.tbl_organisationseinheit o
+ WHERE o.oe_kurzbz = ?
+ UNION ALL
+ SELECT rid + 1 AS rid, oe.oe_kurzbz, oe.oe_parent_kurzbz
+ FROM organizations org, public.tbl_organisationseinheit oe
+ WHERE oe.oe_kurzbz = org.oe_parent_kurzbz
+ AND oe.aktiv = TRUE
+ )
+ SELECT oe_kurzbz
+ FROM organizations orgs
+ ORDER BY rid DESC
+ LIMIT 1
+ ';
$result = $this->db->query($sql, array($oe_kurzbz));
if ($result) // If no errors occurred
{
// If data are present
- if (is_array($result->result()) && count($result->result()) > 0)
+ if (is_array($result->result())
+ && count($result->result()) > 0
+ && is_object($result->result()[0])
+ && isset($result->result()[0]->oe_kurzbz))
{
- $organisationseinheit = $result->result()[0];
-
- // If this organisationseinheit has a parent
- if ($organisationseinheit->oe_parent_kurzbz != null)
- {
- // looks for the parent
- $result = $this->getOERoot($organisationseinheit->oe_parent_kurzbz);
- }
+ return success($result->result()[0]->oe_kurzbz);
}
+ else
+ {
+ return error();
+ }
+ }
+ else
+ {
+ return error($this->db->error());
}
return $result;
diff --git a/config/cis.config-default.inc.php b/config/cis.config-default.inc.php
index e3c4931db..49af7cdd6 100644
--- a/config/cis.config-default.inc.php
+++ b/config/cis.config-default.inc.php
@@ -104,6 +104,10 @@ define('LDAP2_USER_SEARCH_FILTER','sAMAccountName');
// LDAP MASTER SERVER fuer Passwort Aenderungen
define('LDAP_SERVER_MASTER',LDAP_SERVER);
+// Default Password fuer neue Accounts
+// Hier sollte ein langes geheimes Passwort gesetzt werden!
+define('ACCOUNT_ACTIVATION_PASSWORD','');
+
// Attribut fuer Zutrittskartennummer im LDAP
define("LDAP_CARD_NUMBER","twHitagCardNumber");
// Attribut fuer Zutrittskartennummer2 im LDAP
diff --git a/config/vilesci.config-default.inc.php b/config/vilesci.config-default.inc.php
index e0f2147e6..8078d4fca 100644
--- a/config/vilesci.config-default.inc.php
+++ b/config/vilesci.config-default.inc.php
@@ -94,6 +94,11 @@ define('LDAP2_USER_SEARCH_FILTER','sAMAccountName');
// LDAP MASTER SERVER fuer Passwort Aenderungen
define('LDAP_SERVER_MASTER',LDAP_SERVER);
+// Default Password fuer neue Accounts
+// Hier sollte ein langes geheimes Passwort gesetzt werden!
+define('ACCOUNT_ACTIVATION_PASSWORD','');
+
+
// Attribut fuer Zutrittskartennummer im LDAP
define("LDAP_CARD_NUMBER","twHitagCardNumber");
// Attribut fuer Zutrittskartennummer2 im LDAP
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 96a191bc7..fe9d1515a 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -521,7 +521,7 @@ if(!@$db->db_query("SELECT campus.get_highest_content_version(0)"))
WHERE content_id=i_content_id
ORDER BY version desc
LIMIT 1;
-
+
RETURN rec.version;
END;
$_$;
@@ -585,13 +585,6 @@ if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_extensi
else
echo ' Created sequence: system.tbl_extensions_id_seq';
- // ALTER SEQUENCE system.tbl_extensions_id_seq
- $qry = 'ALTER SEQUENCE system.tbl_extensions_id_seq OWNED BY system.tbl_extensions.extension_id;';
- if (!$db->db_query($qry))
- echo 'system.tbl_extensions_id_seq '.$db->db_last_error().' ';
- else
- echo ' Altered sequence system.tbl_extensions_id_seq';
-
// GRANT SELECT, UPDATE ON SEQUENCE system.tbl_extensions_id_seq TO vilesci;
$qry = 'GRANT SELECT, UPDATE ON SEQUENCE system.tbl_extensions_id_seq TO vilesci;';
if (!$db->db_query($qry))
@@ -613,7 +606,7 @@ if(!@$db->db_query("SELECT 0 FROM system.tbl_extensions WHERE 0 = 1"))
{
$qry = '
CREATE TABLE system.tbl_extensions (
- extension_id integer NOT NULL DEFAULT nextval(\'tbl_extensions_id_seq\'::regclass),
+ extension_id integer NOT NULL DEFAULT NEXTVAL(\'system.tbl_extensions_id_seq\'),
name character varying(128) NOT NULL,
version integer NOT NULL,
description text,
@@ -669,6 +662,13 @@ if(!@$db->db_query("SELECT 0 FROM system.tbl_extensions WHERE 0 = 1"))
echo 'Adding comment to system.tbl_extensions.dependencies: '.$db->db_last_error().' ';
else
echo ' Added comment to system.tbl_extensions.dependencies';
+
+ // ALTER SEQUENCE system.tbl_extensions_id_seq
+ $qry = 'ALTER SEQUENCE system.tbl_extensions_id_seq OWNED BY system.tbl_extensions.extension_id;';
+ if (!$db->db_query($qry))
+ echo 'system.tbl_extensions_id_seq '.$db->db_last_error().' ';
+ else
+ echo ' Altered sequence system.tbl_extensions_id_seq';
}
// UNIQUE INDEX uidx_extensions_name_version
@@ -949,6 +949,7 @@ $tabellen=array(
"system.tbl_cronjob" => array("cronjob_id","server_kurzbz","titel","beschreibung","file","last_execute","aktiv","running","jahr","monat","tag","wochentag","stunde","minute","standalone","reihenfolge","updateamum", "updatevon","insertamum","insertvon","variablen"),
"system.tbl_benutzerrolle" => array("benutzerberechtigung_id","rolle_kurzbz","berechtigung_kurzbz","uid","funktion_kurzbz","oe_kurzbz","art","studiensemester_kurzbz","start","ende","negativ","updateamum", "updatevon","insertamum","insertvon","kostenstelle_id","anmerkung"),
"system.tbl_berechtigung" => array("berechtigung_kurzbz","beschreibung"),
+ "system.tbl_extensions" => array("extension_id","name","version","description","license","url","core_version","dependencies","enabled"),
"system.tbl_phrase" => array("phrase_id","app","phrase","insertamum","insertvon"),
"system.tbl_phrasentext" => array("phrasentext_id","phrase_id","sprache","orgeinheit_kurzbz","orgform_kurzbz","text","description","insertamum","insertvon"),
"system.tbl_rolle" => array("rolle_kurzbz","beschreibung"),
diff --git a/vilesci/bis/checkfunktion.php b/vilesci/bis/checkfunktion.php
index 7c75f7f0c..9c04e353a 100644
--- a/vilesci/bis/checkfunktion.php
+++ b/vilesci/bis/checkfunktion.php
@@ -115,6 +115,7 @@ if(isset($_POST['action']) && $_POST['action'] == 'run')
(ende>now() OR ende is null OR ende>".$db->db_add_param($lastbismeldung).")
AND (beginn<".$db->db_add_param($aktbismeldung)." OR beginn is null)
AND mitarbeiter_uid=".$db->db_add_param($row->mitarbeiter_uid)."
+ AND tbl_bisverwendung.beschausmasscode!=5
ORDER BY beginn DESC";
if($result_verw = $db->db_query($qry_verw))
{
diff --git a/vilesci/bis/checkverwendung.php b/vilesci/bis/checkverwendung.php
index 9bf358c82..a843d41c6 100644
--- a/vilesci/bis/checkverwendung.php
+++ b/vilesci/bis/checkverwendung.php
@@ -54,17 +54,36 @@ $update=false;
$bismeldedatum=date("Y-m-d", mktime(0, 0, 0, 9, 1, date("Y")));
$bismeldedatumvorjahr=date("Y-m-d", mktime(0, 0, 0, 9, 1, date("Y")-1));
-function myaddslashes($var)
-{
- return ($var!=''?"'".addslashes($var)."'":'null');
-}
+$ba1_arr = array();
+$qry = "SELECT * FROM bis.tbl_beschaeftigungsart1";
+if($result = $db->db_query($qry))
+ while($row = $db->db_fetch_object($result))
+ $ba1_arr[$row->ba1code]=$row->ba1kurzbz;
+
+$ba2_arr = array();
+$qry = "SELECT * FROM bis.tbl_beschaeftigungsart2";
+if($result = $db->db_query($qry))
+ while($row = $db->db_fetch_object($result))
+ $ba2_arr[$row->ba2code]=$row->ba2bez;
+
+$verwendung_arr = array();
+$qry = "SELECT * FROM bis.tbl_verwendung";
+if($result = $db->db_query($qry))
+ while($row = $db->db_fetch_object($result))
+ $verwendung_arr[$row->verwendung_code]=$row->verwendungbez;
+
+$ausmass_arr = array();
+$qry = "SELECT * FROM bis.tbl_beschaeftigungsausmass";
+if($result = $db->db_query($qry))
+ while($row = $db->db_fetch_object($result))
+ $ausmass_arr[$row->beschausmasscode]=$row->beschausmassbez;
?>
-
+
BIS-Meldung - Überprüfung von Verwendungen
-
+
@@ -85,23 +104,43 @@ $lastss = $stsem_obj->getPrevious();
$lastws = $stsem_obj->getBeforePrevious();
//1 - aktive mitarbeiter und bismelden mit keiner verwendung oder mehr als einer aktuellen verwendung
-$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id)
- FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE aktiv AND bismelden AND (ende>now() OR ende IS NULL)
- GROUP BY uid,nachname,vorname HAVING count(bisverwendung_id)!=1 ORDER by nachname,vorname;';
+$qryall='
+ SELECT
+ uid, nachname, vorname, count(bisverwendung_id)
+ FROM
+ campus.vw_mitarbeiter
+ LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE
+ aktiv
+ AND bismelden
+ AND (ende>now() OR ende IS NULL)
+ GROUP BY
+ uid, nachname, vorname
+ HAVING count(bisverwendung_id)!=1
+ ORDER by nachname, vorname;';
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
echo "
Bei $num_rows_all aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel
";
+ echo "Es ist keine oder es sind mehrere aktive Verwendungen vorhanden. ";
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
- $qry="SELECT * FROM bis.tbl_bisverwendung
- JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)
- JOIN public.tbl_person USING(person_id)
- JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid)
- WHERE tbl_benutzer.aktiv=TRUE AND bismelden=TRUE
- AND (ende>now() OR ende IS NULL) AND mitarbeiter_uid='".$rowall->uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)
+ JOIN public.tbl_person USING(person_id)
+ JOIN public.tbl_mitarbeiter USING(mitarbeiter_uid)
+ WHERE
+ tbl_benutzer.aktiv=TRUE
+ AND bismelden=TRUE
+ AND (ende>now() OR ende IS NULL)
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)."
+ ORDER BY beginn";
+
if($result = $db->db_query($qry))
{
$num_rows=$db->db_num_rows($result);
@@ -111,23 +150,44 @@ if($resultall = $db->db_query($qryall))
{
if($i==0)
{
- echo " Aktive(r) Mitarbeiter(in) ".$row->nachname." ".$row->vorname." hat ".$num_rows." aktuelle Verwendungen (möglicherweise korrekt): ";
+ echo "
+
+ Aktive(r) Mitarbeiter(in) ".$row->nachname." ".$row->vorname."".
+ " hat ".$num_rows." aktuelle Verwendungen (möglicherweise korrekt):
+
+ ";
$i++;
}
- echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende." ";
+ echo $verwendung_arr[$row->verwendung_code].", ".
+ $ba1_arr[$row->ba1code].", ".
+ $ba2_arr[$row->ba2code].", ".
+ $ausmass_arr[$row->beschausmasscode].", ".
+ $row->beginn." - ".$row->ende." ";
}
}
elseif($num_rows==0)
- echo " Aktive(r) Mitarbeiter(in): ".$rowall->nachname." ".$rowall->vorname." hat ".$num_rows." aktuelle Verwendungen: ";
+ echo " Aktive(r) Mitarbeiter(in): ".$rowall->nachname." ".$rowall->vorname."
+ hat ".$num_rows." aktuelle Verwendungen: ";
}
}
}
//2 - aktive fixe mitarbeiter mit keiner aktuellen verwendung
-$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id)
- FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE aktiv AND fixangestellt AND NOT ende>now() AND NOT ende IS NULL
- AND uid NOT IN (SELECT uid FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE aktiv AND fixangestellt AND (ende>now() OR ende IS NULL)) GROUP BY uid,nachname,vorname ORDER by nachname,vorname;';
+$qryall = '
+ SELECT
+ uid, nachname, vorname, count(bisverwendung_id)
+ FROM
+ campus.vw_mitarbeiter
+ LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE
+ aktiv
+ AND fixangestellt
+ AND NOT ende>now() AND NOT ende IS NULL
+ AND uid NOT IN (
+ SELECT uid FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE aktiv AND fixangestellt AND (ende>now() OR ende IS NULL)
+ )
+ GROUP BY uid, nachname, vorname
+ ORDER by nachname, vorname;';
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
@@ -135,8 +195,18 @@ if($resultall = $db->db_query($qryall))
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
- $qry="SELECT * FROM bis.tbl_bisverwendung JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid) JOIN public.tbl_person USING(person_id)
- WHERE tbl_benutzer.aktiv=TRUE AND mitarbeiter_uid='".$rowall->uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ tbl_benutzer.aktiv=TRUE
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)."
+ ORDER by beginn";
+
if($result = $db->db_query($qry))
{
$num_rows=$db->db_num_rows($result);
@@ -144,31 +214,54 @@ if($resultall = $db->db_query($qryall))
{
if($i==0)
{
- echo " Aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname." hat keine aktuellen Verwendungen: ";
+ echo "
+
+ Aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname."
+ hat keine aktuellen Verwendungen:
+
+ ";
$i++;
}
- echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende." ";
+ echo $verwendung_arr[$row->verwendung_code].", ".
+ $ba1_arr[$row->ba1code].", ".
+ $ba2_arr[$row->ba2code].", ".
+ $ausmass_arr[$row->beschausmasscode].", ".
+ $row->beginn." - ".$row->ende." ";
}
}
}
}
//3 - nicht aktive mitarbeiter mitarbeiter mit aktueller verwendung
-$qryall='SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter
- JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE aktiv=false AND (ende>now() OR ende IS NULL)
- GROUP BY uid,nachname,vorname
- ORDER by nachname,vorname;';
+$qryall='
+ SELECT
+ uid, nachname, vorname
+ FROM
+ campus.vw_mitarbeiter
+ JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE
+ aktiv=false
+ AND (ende>now() OR ende IS NULL)
+ GROUP BY uid, nachname, vorname
+ ORDER by nachname, vorname;';
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
- echo "
Bei $num_rows_all nicht aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel
";
+ echo "
Bei $num_rows_all nicht aktiven Mitarbeitern sind die aktuellen Verwendungen nicht plausibel (inaktiv aber aktuelle Verwendung)
";
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
- $qry="SELECT * FROM bis.tbl_bisverwendung
- WHERE (ende>now() OR ende IS NULL) AND mitarbeiter_uid='".$rowall->uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ WHERE
+ (ende>now() OR ende IS NULL)
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)."
+ ORDER BY beginn";
+
if($result = $db->db_query($qry))
{
$num_rows=$db->db_num_rows($result);
@@ -176,29 +269,57 @@ if($resultall = $db->db_query($qryall))
{
if($i==0)
{
- echo " Nicht aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname." hat ".$num_rows." aktuelle Verwendungen: ";
+ echo "
+
+ Nicht aktive(r) Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname."
+ hat ".$num_rows." aktuelle Verwendungen:
+
+ ";
$i++;
}
- echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende." ";
+ echo $verwendung_arr[$row->verwendung_code].", ".
+ $ba1_arr[$row->ba1code].", ".
+ $ba2_arr[$row->ba2code].", ".
+ $ausmass_arr[$row->beschausmasscode].", ".
+ $row->beginn." - ".$row->ende." ";
}
}
}
}
//4 - wenn hauptberuf=j dann sollte verwendung=1,5,6 sein - check
-$qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter
- JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE verwendung_code NOT IN ('1','5','6') AND hauptberuflich=true
- GROUP BY uid,nachname,vorname
- ORDER by nachname,vorname,uid;";
+$qryall="
+ SELECT
+ uid, nachname, vorname
+ FROM
+ campus.vw_mitarbeiter
+ JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE
+ verwendung_code NOT IN ('1','5','6')
+ AND hauptberuflich=true
+ GROUP BY uid, nachname, vorname
+ ORDER by nachname, vorname, uid;";
+
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
- echo "
Bei $num_rows_all Mitarbeitern sind die Eintragungen 'hauptberuflich' nicht plausibel (hauptberuflich ja, aber Verwendung nicht 1,5,6)
";
+ echo "
Bei $num_rows_all Mitarbeitern sind die Eintragungen 'hauptberuflich' nicht plausibel
";
+ echo "hauptberuflich=ja, aber Verwendung nicht ".
+ $verwendung_arr[1].", ".$verwendung_arr[5]." oder ".$verwendung_arr[6];
+
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
- $qry="SELECT * FROM bis.tbl_bisverwendung
- WHERE verwendung_code NOT IN ('1','5','6') AND hauptberuflich=true AND mitarbeiter_uid='".$rowall->uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ WHERE
+ verwendung_code NOT IN ('1','5','6')
+ AND hauptberuflich=true
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)."
+ ORDER BY beginn";
+
if($result = $db->db_query($qry))
{
$num_rows=$db->db_num_rows($result);
@@ -206,42 +327,61 @@ if($resultall = $db->db_query($qryall))
{
if($i==0)
{
- echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
+ echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
$i++;
}
- echo "Verwendung Code ".$row->verwendung_code.", hauptberuflich ".($row->hauptberuflich=='t'?'ja':'nein').", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende." ";
+ echo $verwendung_arr[$row->verwendung_code].",
+ hauptberuflich ".($row->hauptberuflich=='t'?'ja':'nein').", ".
+ $ba1_arr[$row->ba1code].", ".
+ $ba2_arr[$row->ba2code].", ".
+ $ausmass_arr[$row->beschausmasscode].", ".
+ $row->beginn." - ".$row->ende." ";
}
}
}
}
//5 - stimmt beschausmasscode mit vertragsstunden überein?
-$qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter
- JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE (beschausmasscode='1' AND vertragsstunden<='35')
- OR (beschausmasscode='2' AND vertragsstunden>'15')
- OR (beschausmasscode='3' AND vertragsstunden<'16')
- OR (beschausmasscode='3' AND vertragsstunden>'25')
- OR (beschausmasscode='4' AND vertragsstunden<'26')
- OR (beschausmasscode='4' AND vertragsstunden>'35')
- OR (beschausmasscode='5' AND vertragsstunden>'0')
- GROUP BY uid,nachname,vorname
- ORDER by nachname,vorname,uid;";
+$qryall="
+ SELECT
+ uid, nachname, vorname
+ FROM
+ campus.vw_mitarbeiter
+ JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE
+ (beschausmasscode='1' AND vertragsstunden<='35')
+ OR (beschausmasscode='2' AND vertragsstunden>'15')
+ OR (beschausmasscode='3' AND vertragsstunden<'16')
+ OR (beschausmasscode='3' AND vertragsstunden>'25')
+ OR (beschausmasscode='4' AND vertragsstunden<'26')
+ OR (beschausmasscode='4' AND vertragsstunden>'35')
+ OR (beschausmasscode='5' AND vertragsstunden>'0')
+ GROUP BY uid, nachname, vorname
+ ORDER by nachname, vorname, uid;";
+
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
echo "
Bei $num_rows_all Mitarbeitern ist das Beschäftigungsausmaß nicht plausibel
";
+ echo "Vertragsstunden passen nicht mit Beschäftigungsausmass überein
";
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
- $qry="SELECT * FROM bis.tbl_bisverwendung
- WHERE ((beschausmasscode='1' AND vertragsstunden<'38.5')
- OR (beschausmasscode='2' AND vertragsstunden>'15')
- OR (beschausmasscode='3' AND vertragsstunden<'16')
- OR (beschausmasscode='3' AND vertragsstunden>'25')
- OR (beschausmasscode='4' AND vertragsstunden<'26')
- OR (beschausmasscode='4' AND vertragsstunden>'35')
- OR (beschausmasscode='5' AND vertragsstunden>'0'))
- AND mitarbeiter_uid='".$rowall->uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ WHERE
+ ((beschausmasscode='1' AND vertragsstunden<'38.5')
+ OR (beschausmasscode='2' AND vertragsstunden>'15')
+ OR (beschausmasscode='3' AND vertragsstunden<'16')
+ OR (beschausmasscode='3' AND vertragsstunden>'25')
+ OR (beschausmasscode='4' AND vertragsstunden<'26')
+ OR (beschausmasscode='4' AND vertragsstunden>'35')
+ OR (beschausmasscode='5' AND vertragsstunden>'0'))
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)."
+ ORDER BY beginn";
+
if($result = $db->db_query($qry))
{
$num_rows=$db->db_num_rows($result);
@@ -252,28 +392,50 @@ if($resultall = $db->db_query($qryall))
echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
$i++;
}
- echo "Beschäftigungsausmaß ".$row->beschausmasscode.", Vertragsstunden ".$row->vertragsstunden.", Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", mit Ausmaß ".$row->beschausmasscode.", ".$row->beginn." - ".$row->ende." ";
+ echo $ausmass_arr[$row->beschausmasscode].
+ ", Vertragsstunden ".$row->vertragsstunden.
+ ", ".$verwendung_arr[$row->verwendung_code].
+ ", ".$ba1_arr[$row->ba1code].
+ ", ".$ba2_arr[$row->ba2code].
+ ", ".$row->beginn." - ".$row->ende." ";
}
}
}
}
//6 - aktive, freie lektoren auf verwendung 1 oder 2 prüfen
-$qryall="SELECT uid,nachname,vorname FROM campus.vw_mitarbeiter
- JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
- WHERE aktiv AND lektor AND fixangestellt=false
- AND verwendung_code NOT IN ('1','2') AND (ende>now() OR ende IS NULL)
- GROUP BY uid,nachname,vorname
- ORDER by nachname,vorname,uid;";
+$qryall="
+ SELECT
+ uid, nachname, vorname
+ FROM
+ campus.vw_mitarbeiter
+ JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+ WHERE
+ aktiv
+ AND lektor
+ AND fixangestellt=false
+ AND verwendung_code NOT IN ('1','2')
+ AND (ende>now() OR ende IS NULL)
+ GROUP BY uid, nachname, vorname
+ ORDER by nachname, vorname, uid;";
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
echo "
Bei $num_rows_all aktiven, freien Lektoren ist die Verwendung nicht plausibel
";
+ echo "Verwendung darf nur '".$verwendung_arr[1]."' oder '".$verwendung_arr[2]."' sein.
";
+
while($rowall=$db->db_fetch_object($resultall))
{
$i=0;
- $qry="SELECT * FROM bis.tbl_bisverwendung
- WHERE verwendung_code NOT IN ('1','2')
- AND mitarbeiter_uid='".$rowall->uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ WHERE
+ verwendung_code NOT IN ('1','2')
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->uid)."
+ ORDER BY beginn";
+
if($result = $db->db_query($qry))
{
$num_rows=$db->db_num_rows($result);
@@ -284,105 +446,129 @@ if($resultall = $db->db_query($qryall))
echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
$i++;
}
- echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", ".$row->beginn." - ".$row->ende." ";
+ echo $verwendung_arr[$row->verwendung_code].", ".
+ $ba1_arr[$row->ba1code].", ".
+ $ba2_arr[$row->ba2code].", ".
+ $row->beginn." - ".$row->ende." ";
}
}
}
}
//7 - Lehrauftrag aber keine aktuelle Verwendung
$i=0;
-$qryall="SELECT DISTINCT lehre.tbl_lehreinheitmitarbeiter.mitarbeiter_uid, nachname, vorname
- FROM lehre.tbl_lehreinheitmitarbeiter join lehre.tbl_lehreinheit USING (lehreinheit_id)
- JOIN
- lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
- JOIN campus.vw_mitarbeiter ON (tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid)
+$qryall="
+ SELECT
+ DISTINCT lehre.tbl_lehreinheitmitarbeiter.mitarbeiter_uid, nachname, vorname
+ FROM
+ lehre.tbl_lehreinheitmitarbeiter
+ JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN campus.vw_mitarbeiter ON (tbl_lehreinheitmitarbeiter.mitarbeiter_uid=uid)
WHERE
- (lehre.tbl_lehreinheit.studiensemester_kurzbz='$lastss' OR lehre.tbl_lehreinheit.studiensemester_kurzbz='$lastws')
- AND tbl_lehreinheitmitarbeiter.stundensatz!=0 AND tbl_lehreinheitmitarbeiter.semesterstunden!=0
- AND NOT EXISTS (SELECT * FROM bis.tbl_bisverwendung
- WHERE ((beginn<'".$ende[$lastss]."') AND (ende>'".$beginn[$lastws]."') OR ende is null) AND mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid)
- ORDER BY nachname,vorname;";
+ (
+ lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($lastss)."
+ OR lehre.tbl_lehreinheit.studiensemester_kurzbz=".$db->db_add_param($lastws)."
+ )
+ AND tbl_lehreinheitmitarbeiter.stundensatz!=0
+ AND tbl_lehreinheitmitarbeiter.semesterstunden!=0
+ AND NOT EXISTS (
+ SELECT * FROM bis.tbl_bisverwendung
+ WHERE
+ (
+ beginn<".$db->db_add_param($ende[$lastss])."
+ AND (ende>".$db->db_add_param($beginn[$lastws])." OR ende is null)
+ )
+ AND mitarbeiter_uid=tbl_lehreinheitmitarbeiter.mitarbeiter_uid
+ )
+ ORDER BY nachname,vorname;";
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
- echo "
Bei $num_rows_all Lektoren mit Lehrauftrag sind die Verwendungen nicht plausibel
";
+ echo "
Bei $num_rows_all Lektoren mit Lehrauftrag sind die Verwendungen nicht plausibel (Lehrauftrag aber keine aktuelle Verwendung)
";
while($rowall=$db->db_fetch_object($resultall))
{
$i++;
echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
- $qry="SELECT * FROM bis.tbl_bisverwendung WHERE mitarbeiter_uid='".$rowall->mitarbeiter_uid."';";
+ $qry="
+ SELECT
+ *
+ FROM
+ bis.tbl_bisverwendung
+ WHERE
+ mitarbeiter_uid=".$db->db_add_param($rowall->mitarbeiter_uid)."
+ ORDER BY beginn;";
if($result = $db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
{
- echo "Verwendung Code ".$row->verwendung_code.", Beschäftigungscode ".$row->ba1code.", ".$row->ba2code.", ".$row->beginn." - ".$row->ende." ";
+ echo $verwendung_arr[$row->verwendung_code].", ".
+ $ba1_arr[$row->ba1code].", ".
+ $ba2_arr[$row->ba2code].", ".
+ $row->beginn." - ".$row->ende." ";
}
}
}
}
//8 - Verwendung Habil. und Entwicklungsteam Habil.=1
$i=0;
-$qryall="SELECT DISTINCT mitarbeiter_uid, nachname, vorname
- FROM bis.tbl_entwicklungsteam join bis.tbl_bisverwendung USING (mitarbeiter_uid)
- JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid)
- WHERE ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false))
- ORDER BY mitarbeiter_uid;";
+$qryall="
+ SELECT
+ DISTINCT mitarbeiter_uid, nachname, vorname
+ FROM
+ bis.tbl_entwicklungsteam
+ JOIN bis.tbl_bisverwendung USING (mitarbeiter_uid)
+ JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid)
+ WHERE
+ ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false))
+ ORDER BY mitarbeiter_uid;";
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
echo "
Bei $num_rows_all Lektoren sind die Angaben über Habilitationen nicht plausibel
";
+ echo "Wenn Besondere Qualifikation beim Entwicklungsteam gleich Habilitation ist dann muss bei der Verwendung auch
+ eine Habilitation eingetragen sein.";
+
while($rowall=$db->db_fetch_object($resultall))
{
$i++;
echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
- $qry="SELECT mitarbeiter_uid, nachname, vorname, besqualbez, habilitation, studiengang_kz, verwendung_code, tbl_bisverwendung.beginn as anfang, tbl_bisverwendung.ende as zuende
- FROM bis.tbl_entwicklungsteam join bis.tbl_bisverwendung USING (mitarbeiter_uid)
- JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid)
- JOIN bis.tbl_besqual USING(besqualcode)
- WHERE ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false))
- AND mitarbeiter_uid='".$rowall->mitarbeiter_uid."';";
+ $qry="
+ SELECT
+ mitarbeiter_uid, nachname, vorname, besqualbez,
+ habilitation, studiengang_kz, verwendung_code,
+ tbl_bisverwendung.beginn as anfang, tbl_bisverwendung.ende as zuende
+ FROM
+ bis.tbl_entwicklungsteam join bis.tbl_bisverwendung USING (mitarbeiter_uid)
+ JOIN campus.vw_mitarbeiter ON (tbl_entwicklungsteam.mitarbeiter_uid=uid)
+ JOIN bis.tbl_besqual USING(besqualcode)
+ WHERE
+ ((besqualcode!=1 AND habilitation) OR (besqualcode=1 AND habilitation=false))
+ AND mitarbeiter_uid=".$db->db_add_param($rowall->mitarbeiter_uid)."
+ ORDER BY tbl_bisverwendung.beginn";
if($result = $db->db_query($qry))
{
while($row=$db->db_fetch_object($result))
{
- echo "Verwendung Code ".$row->verwendung_code.", ".$row->anfang." - ".$row->zuende.", Habilitation ".($row->habilitation=='t'?'ja':'nein')." <-> Entwicklungsteam-bes.Qualifikation:(Stg. ".$row->studiengang_kz.") '".$row->besqualbez."'. ";
+ echo $verwendung_arr[$row->verwendung_code].", ".
+ $row->anfang." - ".$row->zuende.", Habilitation ".($row->habilitation=='t'?'ja':'nein').
+ " <-> Entwicklungsteam-bes.Qualifikation:(Stg. ".$row->studiengang_kz.") '".$row->besqualbez."'. ";
}
}
}
}
-//9 - 2 gleiche aktive Verwendungen
-$qryall="
- SELECT distinct vorname, nachname, personalnummer, ba1code, ba2code FROM campus.vw_mitarbeiter JOIN (
- SELECT a.mitarbeiter_uid, a.ba1code, a.ba2code FROM bis.tbl_bisverwendung a, bis.tbl_bisverwendung b WHERE
- a.bisverwendung_id<>b.bisverwendung_id AND
- a.ba1code=b.ba1code AND
- a.ba2code=b.ba2code AND
- a.mitarbeiter_uid=b.mitarbeiter_uid AND
- (a.ende is null OR a.ende>'$bismeldedatumvorjahr') AND
- (b.ende is null OR b.ende>'$bismeldedatumvorjahr') AND
- a.beschausmasscode=b.beschausmasscode AND
- a.verwendung_code=b.verwendung_code
- ) c ON(mitarbeiter_uid=uid)";
-
-if($resultall = $db->db_query($qryall))
-{
- $num_rows_all=$db->db_num_rows($resultall);
- echo "
Bei $num_rows_all Lektoren sind mehrere gleiche aktive Verwendungen vorhanden
";
- while($rowall=$db->db_fetch_object($resultall))
- {
- $i++;
- echo " Mitarbeiter(in) ".$rowall->nachname." ".$rowall->vorname.": ";
- echo "(ba1code: $rowall->ba1code, ba2code: $rowall->ba2code)";
- }
-}
-echo ' ';
//9 - inaktive mitarbeiter und bismelden ohne verwendung
-$qryall='SELECT uid,nachname,vorname, count(bisverwendung_id)
- FROM campus.vw_mitarbeiter LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
+$qryall='
+ SELECT
+ uid, nachname, vorname, count(bisverwendung_id)
+ FROM
+ campus.vw_mitarbeiter
+ LEFT OUTER JOIN bis.tbl_bisverwendung ON (uid=mitarbeiter_uid)
WHERE bismelden
- GROUP BY uid,nachname,vorname HAVING count(bisverwendung_id)=0 ORDER by nachname,vorname;';
+ GROUP BY uid, nachname, vorname
+ HAVING count(bisverwendung_id)=0
+ ORDER by nachname, vorname;';
if($resultall = $db->db_query($qryall))
{
$num_rows_all=$db->db_num_rows($resultall);
diff --git a/vilesci/bis/personalmeldung.php b/vilesci/bis/personalmeldung.php
index 1ed40dc97..ae1a65741 100644
--- a/vilesci/bis/personalmeldung.php
+++ b/vilesci/bis/personalmeldung.php
@@ -61,7 +61,7 @@ $mitarbeiterzahl=0;
$echt=0;
$frei=0;
-$nichtmelden = array(11,91,92,94,999,203,145,204, 308, 182, 222);
+$nichtmelden = array(11,91,92,94,999,203,145,204,308,182,222);
$datumobj=new datum();
@@ -328,7 +328,7 @@ if($result = $db->db_query($qry))
".$row_verwendung['beschausmasscode']."".$row_verwendung['verwendung_code']."";
- if(isset($row_verwendung['stgltg']))
+ if(isset($row_verwendung['stgltg']) && isset($row_verwendung['verwendung_code']) && $row_verwendung['verwendung_code']==5)
{
foreach($row_verwendung['stgltg'] as $row_stgl)
{
@@ -345,7 +345,7 @@ if($result = $db->db_query($qry))
$person_content.="
".sprintf("%04s",$row_fkt['stgkz'])."
- ".$row_fkt['sws']."";
+ ".number_format($row_fkt['sws'])."";
if($row_fkt['hauptberuflich']=='t')
{
$person_content.="
diff --git a/vilesci/bis/studentenmeldung.php b/vilesci/bis/studentenmeldung.php
index 0d249c141..b7fbbc671 100644
--- a/vilesci/bis/studentenmeldung.php
+++ b/vilesci/bis/studentenmeldung.php
@@ -670,6 +670,7 @@ function GenerateXMLStudentBlock($row)
$qrystatus="SELECT * FROM public.tbl_prestudentstatus
WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." AND studiensemester_kurzbz=".$db->db_add_param($ssem)." AND (tbl_prestudentstatus.datum<=".$db->db_add_param($bisdatum).")
ORDER BY datum desc, insertamum desc, ext_id desc;";
+
if($resultstatus = $db->db_query($qrystatus))
{
if($db->db_num_rows($resultstatus)>0)
@@ -779,6 +780,26 @@ function GenerateXMLStudentBlock($row)
$storgform=$rowstatus->orgform_kurzbz;
$aktstatus_stsem = $rowstatus->studiensemester_kurzbz;
}
+ else
+ {
+ $aktstatus='';
+ $storgform='';
+ $aktstatus_datum='';
+ $aktstatus_stsem='';
+ $sem='';
+ $error_log.= "kein gueltiger Status vorhanden";
+
+ }
+ }
+ else
+ {
+ $aktstatus='';
+ $storgform='';
+ $aktstatus_datum='';
+ $aktstatus_stsem='';
+ $sem='';
+ $error_log.= "kein gueltiger Status vorhanden";
+
}
}
}