- Sperre für Freie Lektoren gilt nun nicht mehr, wenn der Lehrauftrag auf eine Firma ausgestellt wird

- Bugfix beim Editieren der Kontaktdaten
This commit is contained in:
Andreas Österreicher
2009-12-02 14:53:26 +00:00
parent a724cc32dc
commit 9d1f5d529d
3 changed files with 186 additions and 87 deletions
+163 -64
View File
@@ -91,6 +91,78 @@ function kollision($lehreinheit_id, $mitarbeiter_uid, $mitarbeiter_uid_old)
return false;
}
/**
* Prueft ob die Person den Lehrauftrag auf eine Firma ausgestellt bekommt
*
* @param $mitarbeiter_uid
* @return boolean
*/
function LehrauftragAufFirma($mitarbeiter_uid)
{
global $db;
$qry_firma = "
SELECT * FROM campus.vw_mitarbeiter LEFT JOIN public.tbl_adresse USING(person_id)
WHERE uid='".addslashes($mitarbeiter_uid)."'
ORDER BY zustelladresse DESC, firma_id LIMIT 1";
if($result_firma = $db->db_query($qry_firma))
{
if($row_firma = $db->db_fetch_object($result_firma))
{
if($row_firma->firma_id=='')
return false;
else
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/**
* Liefert eine Liste mit den Gesamtstunden eines Lektors in den einzelnen Instituten
*
* @param $mitarbeiter_uid
* @param $studiensemester_kurzbz
* @return string
*/
function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz)
{
global $db;
$ret="Der Lektor ist in folgenden Instituten zugeteilt:\n";
//Liste mit den Stunden in den jeweiligen Instituten anzeigen
$qry = "SELECT sum(semesterstunden) as summe, tbl_fachbereich.bezeichnung
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_lehrfach USING(lehrfach_id)
JOIN public.tbl_fachbereich USING(fachbereich_kurzbz)
WHERE
mitarbeiter_uid='$mitarbeiter_uid' AND
studiensemester_kurzbz='$studiensemester_kurzbz' AND
faktor>0 AND
stundensatz>0 AND
bismelden
GROUP BY tbl_fachbereich.bezeichnung";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$ret .=$row->summe.' Stunden im Institut '.$row->bezeichnung."\n";
}
}
return $ret;
}
if(!$error)
{
@@ -228,10 +300,13 @@ if(!$error)
{
if(!$fixangestellt)
{
//Warnung wenn die Stundenzahl ueberschritten wurde
$return = false;
$error = true;
$errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n";
if(!LehrauftragAufFirma($lem->mitarbeiter_uid))
{
//Warnung wenn die Stundenzahl ueberschritten wurde
$return = false;
$error = true;
$errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n";
}
}
else
{
@@ -241,29 +316,7 @@ if(!$error)
$errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden wurde ueberschritten!\n Daten wurden gespeichert!\n\n";
}
$errormsg.="Der Lektor ist in folgenden Instituten zugeteilt:\n";
//Liste mit den Stunden in den jeweiligen Instituten anzeigen
$qry = "SELECT sum(semesterstunden) as summe, tbl_fachbereich.bezeichnung
FROM
lehre.tbl_lehreinheitmitarbeiter
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_lehrfach USING(lehrfach_id)
JOIN public.tbl_fachbereich USING(fachbereich_kurzbz)
WHERE
mitarbeiter_uid='$lem->mitarbeiter_uid' AND
studiensemester_kurzbz='$le->studiensemester_kurzbz' AND
faktor>0 AND
stundensatz>0 AND
bismelden
GROUP BY tbl_fachbereich.bezeichnung";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$errormsg .=$row->summe.' Stunden im Institut '.$row->bezeichnung."\n";
}
}
$errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz);
}
}
else
@@ -363,8 +416,9 @@ if(!$error)
$lem->insertvon = $user;
$lem->new=true;
$fixangestellt=false;
//Stundensatz aus tbl_mitarbeiter holen
$qry = "SELECT stundensatz FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($_POST['mitarbeiter_uid'])."'";
$qry = "SELECT stundensatz, fixangestellt FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid='".addslashes($_POST['mitarbeiter_uid'])."'";
if($db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
@@ -373,6 +427,7 @@ if(!$error)
$lem->stundensatz = $row->stundensatz;
else
$lem->stundensatz = '0';
$fixangestellt = ($row->fixangestellt=='t'?true:false);
}
else
{
@@ -387,55 +442,99 @@ if(!$error)
$return=false;
$errormsg='Fehler bei einer Datenbankabfrage:'.$db->db_last_error();
}
//Faktor und Semesterstunden aus tbl_lehrveranstaltung holen
$qry = "SELECT planfaktor, semesterstunden FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id='".addslashes($_POST['lehreinheit_id'])."';";
if($db->db_query($qry))
$maxstunden=9999;
//Bei freien Lektoren muss geprueft werden ob die Stundengrenze erreicht wurde
if(!$fixangestellt && !LehrauftragAufFirma($lem->mitarbeiter_uid))
{
if($row = $db->db_fetch_object())
//Summe der Stunden ermitteln
$le = new lehreinheit();
$le->load($lem->lehreinheit_id);
$qry = "SELECT
sum(semesterstunden) as summe
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE
mitarbeiter_uid='$lem->mitarbeiter_uid' AND
studiensemester_kurzbz='$le->studiensemester_kurzbz' AND
faktor>0 AND
stundensatz>0 AND
bismelden";
if($result_std = $db->db_query($qry))
{
if($row->planfaktor!='')
$lem->faktor = $row->planfaktor;
else
$lem->faktor = '1.0';
if($row->semesterstunden!='')
if($row_std = $db->db_fetch_object($result_std))
{
$lem->semesterstunden = $row->semesterstunden;
$lem->planstunden = $row->semesterstunden;
}
else
{
$lem->planstunden = '0';
$lem->semesterstunden = '0';
//Grenze ueberschritten
if($row_std->summe>=WARN_SEMESTERSTD_FREI)
{
$return = false;
$error = true;
$errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n";
$errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz);
}
else
{
//Stunden berechnen die noch maximal unterrichtet werden darf
$maxstunden = WARN_SEMESTERSTD_FREI-$row_std->summe;
}
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehrveranstaltung wurde nicht gefunden';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Fehler in einer Datenbankabfrage:'.$db->db_last_error();
}
if(!$error)
{
if($lem->save())
//Faktor und Semesterstunden aus tbl_lehrveranstaltung holen
$qry = "SELECT planfaktor, semesterstunden FROM lehre.tbl_lehrveranstaltung JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) WHERE lehreinheit_id='".addslashes($_POST['lehreinheit_id'])."';";
if($db->db_query($qry))
{
$return = true;
$error = false;
if($row = $db->db_fetch_object())
{
if($row->planfaktor!='')
$lem->faktor = $row->planfaktor;
else
$lem->faktor = '1.0';
if($row->semesterstunden!='')
{
//wenn es sich um einen freien Lektor handelt, und dieser nicht mehr die volle Stundenanzahl unterrichten
//darf, dann werden nur die restlichen zur Verfuegung stehenden Stunden zugeteilt.
$lem->semesterstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden);
$lem->planstunden = ($row->semesterstunden>$maxstunden?$maxstunden:$row->semesterstunden);
}
else
{
$lem->planstunden = '0';
$lem->semesterstunden = '0';
}
}
else
{
$error = true;
$return = false;
$errormsg = 'Lehrveranstaltung wurde nicht gefunden';
}
}
else
{
$return = false;
$errormsg = $lem->errormsg;
$error = true;
$return = false;
$errormsg = 'Fehler in einer Datenbankabfrage:'.$db->db_last_error();
}
if(!$error)
{
if($lem->save())
{
$return = true;
$error = false;
}
else
{
$return = false;
$errormsg = $lem->errormsg;
$error = true;
}
}
}
}
+10 -10
View File
@@ -21,16 +21,15 @@
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
*/
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/person.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/adresse.class.php');
require_once('../../include/nation.class.php');
require_once('../../include/firma.class.php');
require_once('../../include/kontakt.class.php');
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/person.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/adresse.class.php');
require_once('../../include/nation.class.php');
require_once('../../include/firma.class.php');
require_once('../../include/kontakt.class.php');
$user=get_uid();
@@ -83,6 +82,7 @@ $firma_id = (isset($_POST['firma'])?$_POST['firma']:'');
$zustellung = (isset($_POST['zustellung'])?true:false);
$anmerkung = (isset($_POST['anmerkung'])?$_POST['anmerkung']:false);
$kontakt = (isset($_POST['kontakt'])?$_POST['kontakt']:false);
$kontakttyp = (isset($_POST['kontakttyp'])?$_POST['kontakttyp']:false);
if($person_id=='')
die('Person_id muss uebergeben werden');
+13 -13
View File
@@ -20,20 +20,16 @@
* 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/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/person.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/kontakt.class.php');
require_once('../../include/adresse.class.php');
require_once('../../config/vilesci.config.inc.php');
require_once('../../include/basis_db.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
require_once('../../include/functions.inc.php');
require_once('../../include/benutzerberechtigung.class.php');
require_once('../../include/person.class.php');
require_once('../../include/datum.class.php');
require_once('../../include/kontakt.class.php');
require_once('../../include/adresse.class.php');
if (!$db = new basis_db())
die('Es konnte keine Verbindung zum Server aufgebaut werden.');
$user=get_uid();
$datum_obj = new datum();
@@ -53,6 +49,7 @@ function disablefields(obj)
else
val=true;
document.getElementById('anrede').disabled=val;
document.getElementById('titel').disabled=val;
document.getElementById('titelpost').disabled=val;
document.getElementById('nachname').disabled=val;
@@ -115,6 +112,7 @@ $where = '';
$error = false;
//Parameter
$titel = (isset($_POST['titel'])?$_POST['titel']:'');
$anrede = (isset($_POST['anrede'])?$_POST['anrede']:'');
$titelpost = (isset($_POST['titelpost'])?$_POST['titelpost']:'');
$nachname = (isset($_POST['nachname'])?$_POST['nachname']:'');
$vorname = (isset($_POST['vorname'])?$_POST['vorname']:'');
@@ -147,6 +145,7 @@ if(isset($_POST['save']))
if($person_id=='0')
{
$person->new = true;
$person->anrede = $anrede;
$person->titelpre = $titel;
$person->nachname = $nachname;
$person->vorname = $vorname;
@@ -339,6 +338,7 @@ if($geburtsdatum!='')
<!--Formularfelder-->
<table>
<?php
echo '<tr><td>Anrede</td><td><input type="text" id="anrede" name="anrede" maxlength="16" value="'.$anrede.'" /></td></tr>';
echo '<tr><td>Titel(Pre) *</td><td><input type="text" id="titel" name="titel" maxlength="64" value="'.$titel.'" /></td></tr>';
echo '<tr><td>Vorname</td><td><input type="text" id="vorname" maxlength="32" name="vorname" value="'.$vorname.'" /></td></tr>';
echo '<tr><td>Nachname *</td><td><input type="text" maxlength="64" id="nachname" name="nachname" value="'.$nachname.'" /></td></tr>';