diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index d6d722a9d..19d4888ab 100644 --- a/content/lvplanung/lehrveranstaltungDBDML.php +++ b/content/lvplanung/lehrveranstaltungDBDML.php @@ -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; + } } } } diff --git a/vilesci/personen/kontaktdaten_edit.php b/vilesci/personen/kontaktdaten_edit.php index 30437899a..011c9d5e3 100644 --- a/vilesci/personen/kontaktdaten_edit.php +++ b/vilesci/personen/kontaktdaten_edit.php @@ -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'); diff --git a/vilesci/personen/personen_anlegen.php b/vilesci/personen/personen_anlegen.php index c68da1e49..6a19e9436 100644 --- a/vilesci/personen/personen_anlegen.php +++ b/vilesci/personen/personen_anlegen.php @@ -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!='')
| Anrede | '; echo ' |
| Titel(Pre) * | |
| Vorname | |
| Nachname * |