mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-24 10:22:18 +00:00
Stundengrenze für Fixe und Externe Lektoren wird jetzt ueber den OE-Baum verwaltet.
Es können unterschiedliche Grenzen für Abteilungen festgelegt werden. Die Lehrauftragsliste kann jetzt getrennt für einzelen Organisationseinheiten-Bäume erstellt werden
This commit is contained in:
@@ -136,26 +136,27 @@ function LehrauftragAufFirma($mitarbeiter_uid)
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return string
|
||||
*/
|
||||
function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz)
|
||||
function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz, $oe_arr)
|
||||
{
|
||||
global $db;
|
||||
|
||||
$ret="Der Lektor ist in folgenden Organisationseinheiten zugeteilt:\n";
|
||||
|
||||
//Liste mit den Stunden in den jeweiligen Instituten anzeigen
|
||||
$qry = "SELECT sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe, tbl_organisationseinheit.bezeichnung
|
||||
$qry = "SELECT sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe, tbl_studiengang.bezeichnung
|
||||
FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung as lehrfach ON(lehrfach_id=lehrfach.lehrveranstaltung_id)
|
||||
JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE
|
||||
mitarbeiter_uid=".$db->db_add_param($mitarbeiter_uid)." AND
|
||||
studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND
|
||||
faktor>0 AND
|
||||
stundensatz>0 AND
|
||||
bismelden
|
||||
GROUP BY tbl_organisationseinheit.bezeichnung";
|
||||
bismelden AND
|
||||
tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")
|
||||
GROUP BY tbl_studiengang.bezeichnung";
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
@@ -180,17 +181,19 @@ if(!$error)
|
||||
FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehrveranstaltung as lehrfach
|
||||
WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND
|
||||
tbl_lehreinheit.lehrfach_id=lehrfach.lehrveranstaltung_id AND lehreinheit_id=".$db->db_add_param($_POST['lehreinheit_id'], FHC_INTEGER);
|
||||
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$lva = new lehrveranstaltung($row->lehrveranstaltung_id);
|
||||
|
||||
if(!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('lv-plan', $lva->getAllOe(), 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('assistenz', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz) &&
|
||||
!$rechte->isBerechtigtMultipleOe('admin', $lva->getAllOe(), 'suid', $row->fachbereich_kurzbz))
|
||||
$oe_arr = $lva->getAllOe();
|
||||
|
||||
if(!$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('lv-plan', $oe_arr, 'suid') &&
|
||||
!$rechte->isBerechtigtMultipleOe('assistenz', $oe_arr, 'suid', $row->fachbereich_kurzbz) &&
|
||||
!$rechte->isBerechtigtMultipleOe('admin', $oe_arr, 'suid', $row->fachbereich_kurzbz))
|
||||
{
|
||||
$error = true;
|
||||
$return = false;
|
||||
@@ -280,14 +283,18 @@ if(!$error)
|
||||
$ma = new mitarbeiter();
|
||||
$ma->load($lem->mitarbeiter_uid);
|
||||
$fixangestellt=$ma->fixangestellt;
|
||||
|
||||
|
||||
$oe_obj = new organisationseinheit();
|
||||
$stunden_oe_kurzbz=null;
|
||||
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->load($lva->studiengang_kz);
|
||||
|
||||
//Maximale Stundenanzahl ermitteln
|
||||
if($fixangestellt)
|
||||
$max_stunden = WARN_SEMESTERSTD_FIX;
|
||||
list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true);
|
||||
else
|
||||
{
|
||||
$max_stunden = WARN_SEMESTERSTD_FREI;
|
||||
}
|
||||
list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false);
|
||||
|
||||
//Summe der Stunden ermitteln
|
||||
$le = new lehreinheit();
|
||||
@@ -306,23 +313,31 @@ if(!$error)
|
||||
//Stundenreduzierung immer moeglich
|
||||
if(($lem->semesterstunden>$semesterstunden_alt) || $neue_stunden_eingerechnet)
|
||||
{
|
||||
$oe_obj = new organisationseinheit();
|
||||
$oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz);
|
||||
$qry = "SELECT ";
|
||||
if($alte_stunden_eingerechnet && $neue_stunden_eingerechnet)
|
||||
$qry.=" (sum(semesterstunden)-($semesterstunden_alt)+($lem->semesterstunden)) as summe";
|
||||
$qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)+($lem->semesterstunden)) as summe";
|
||||
elseif($alte_stunden_eingerechnet && !$neue_stunden_eingerechnet)
|
||||
$qry.=" (sum(semesterstunden)-($semesterstunden_alt)) as summe";
|
||||
$qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)-($semesterstunden_alt)) as summe";
|
||||
elseif(!$alte_stunden_eingerechnet && $neue_stunden_eingerechnet)
|
||||
$qry.=" (sum(semesterstunden)+($lem->semesterstunden)) as summe";
|
||||
$qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)+($lem->semesterstunden)) as summe";
|
||||
elseif(!$alte_stunden_eingerechnet && !$neue_stunden_eingerechnet)
|
||||
$qry.=" (sum(semesterstunden)) as summe";
|
||||
$qry.=" (sum(tbl_lehreinheitmitarbeiter.semesterstunden)) as summe";
|
||||
$qry.=" FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE
|
||||
mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND
|
||||
studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND
|
||||
faktor>0 AND
|
||||
stundensatz>0 AND
|
||||
bismelden";
|
||||
|
||||
if(count($oe_arr)>0)
|
||||
$qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")";
|
||||
|
||||
if($db->db_query($qry))
|
||||
{
|
||||
@@ -337,7 +352,7 @@ if(!$error)
|
||||
//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";
|
||||
$errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n";
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -345,10 +360,10 @@ if(!$error)
|
||||
$return = true;
|
||||
$error = false;
|
||||
$warnung = true;
|
||||
$errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden wurde ueberschritten!\n Daten wurden gespeichert!\n\n";
|
||||
$errormsg = "Hinweis: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden gespeichert!\n\n";
|
||||
}
|
||||
|
||||
$errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz);
|
||||
$errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz, $oe_arr);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -480,46 +495,62 @@ if(!$error)
|
||||
}
|
||||
|
||||
$maxstunden=9999;
|
||||
|
||||
|
||||
$oe_obj = new organisationseinheit();
|
||||
$stunden_oe_kurzbz=null;
|
||||
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->load($lva->studiengang_kz);
|
||||
|
||||
//Maximale Stundenanzahl ermitteln
|
||||
if($fixangestellt)
|
||||
$max_stunden = WARN_SEMESTERSTD_FIX;
|
||||
list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true);
|
||||
else
|
||||
{
|
||||
$max_stunden = WARN_SEMESTERSTD_FREI;
|
||||
}
|
||||
list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false);
|
||||
|
||||
//Bei freien Lektoren muss geprueft werden ob die Stundengrenze erreicht wurde
|
||||
if(!$fixangestellt && !LehrauftragAufFirma($lem->mitarbeiter_uid))
|
||||
{
|
||||
//Summe der Stunden ermitteln
|
||||
$le = new lehreinheit();
|
||||
$le->load($lem->lehreinheit_id);
|
||||
|
||||
$oe_obj = new organisationseinheit();
|
||||
$oe_arr = $oe_obj->getChilds($stunden_oe_kurzbz);
|
||||
|
||||
$qry = "SELECT
|
||||
sum(semesterstunden) as summe
|
||||
sum(tbl_lehreinheitmitarbeiter.semesterstunden) as summe
|
||||
FROM
|
||||
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
lehre.tbl_lehreinheitmitarbeiter
|
||||
JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
JOIN public.tbl_studiengang USING(studiengang_kz)
|
||||
WHERE
|
||||
mitarbeiter_uid=".$db->db_add_param($lem->mitarbeiter_uid)." AND
|
||||
studiensemester_kurzbz=".$db->db_add_param($le->studiensemester_kurzbz)." AND
|
||||
faktor>0 AND
|
||||
stundensatz>0 AND
|
||||
bismelden";
|
||||
|
||||
if(count($oe_arr)>0)
|
||||
$qry.=" AND tbl_studiengang.oe_kurzbz in(".$db->db_implode4SQL($oe_arr).")";
|
||||
|
||||
if($result_std = $db->db_query($qry))
|
||||
{
|
||||
if($row_std = $db->db_fetch_object($result_std))
|
||||
{
|
||||
//Grenze ueberschritten
|
||||
if($row_std->summe>=WARN_SEMESTERSTD_FREI)
|
||||
if($row_std->summe>=$max_stunden)
|
||||
{
|
||||
$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);
|
||||
$errormsg = "ACHTUNG: Die maximal erlaubte Semesterstundenanzahl des Lektors von $max_stunden Stunden ($stunden_oe_kurzbz) wurde ueberschritten!\n Daten wurden NICHT gespeichert!\n\n";
|
||||
$errormsg.=getStundenproInstitut($lem->mitarbeiter_uid, $le->studiensemester_kurzbz,$oe_arr);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Stunden berechnen die noch maximal unterrichtet werden darf
|
||||
$maxstunden = WARN_SEMESTERSTD_FREI-$row_std->summe;
|
||||
$maxstunden = $max_stunden-$row_std->summe;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,25 @@ if(isset($_GET['stsem']))
|
||||
else
|
||||
$semester_aktuell = $stsem->getaktorNext();
|
||||
|
||||
//UID als Kommandozeilenparameter
|
||||
if(isset($_SERVER['argv']) && isset($_SERVER['argv'][1]) && !strstr($_SERVER['argv'][1],'='))
|
||||
{
|
||||
$oe_kurzbz = $_SERVER['argv'][1];
|
||||
}
|
||||
else
|
||||
{
|
||||
if(isset($_GET['oe_kurzbz']))
|
||||
$oe_kurzbz = $_GET['oe_kurzbz'];
|
||||
else
|
||||
{
|
||||
$stg = new studiengang();
|
||||
$stg->load('0');
|
||||
$oe_kurzbz = $stg->oe_kurzbz;
|
||||
}
|
||||
}
|
||||
|
||||
$file = 'lehrauftragsliste.xls';
|
||||
$file = tempnam('/tmp','lehrauftragsliste_').'.xls';
|
||||
|
||||
// Creating a workbook
|
||||
echo 'Lehrauftragslisten werden erstellt. Bitte warten!<BR>';
|
||||
@@ -51,6 +69,17 @@ flush();
|
||||
$workbook = new Spreadsheet_Excel_Writer($file);
|
||||
$workbook->setVersion(8);
|
||||
$db = new basis_db();
|
||||
|
||||
$stg = new studiengang();
|
||||
$stg->getStudiengaengeFromOe($oe_kurzbz);
|
||||
$stg_arr=array();
|
||||
if(count($stg->result)>0)
|
||||
{
|
||||
foreach($stg->result as $row)
|
||||
{
|
||||
$stg_arr[] = $row->studiengang_kz;
|
||||
}
|
||||
}
|
||||
//Studiengaenge ermitteln bei denen sich die lektorzuordnung innerhalb der letzten 31 Tage geaendert haben
|
||||
$qry_stg = "SELECT distinct studiengang_kz
|
||||
FROM (
|
||||
@@ -77,13 +106,37 @@ $qry_stg = "SELECT distinct studiengang_kz
|
||||
tbl_lehreinheit.lehrveranstaltung_id = tbl_lehrveranstaltung.lehrveranstaltung_id
|
||||
) as foo
|
||||
";
|
||||
if(count($stg_arr)>0)
|
||||
$qry_stg.=" WHERE studiengang_kz in (".$db->db_implode4SQL($stg_arr).")";
|
||||
|
||||
$liste_gesamt = array();
|
||||
|
||||
$gesamt =& $workbook->addWorksheet('Gesamt');
|
||||
$gesamt->setInputEncoding('utf-8');
|
||||
$gesamtsheet_row=1;
|
||||
|
||||
//Formate Definieren
|
||||
$format_bold =& $workbook->addFormat();
|
||||
$format_bold->setBold();
|
||||
|
||||
$workbook->setCustomColor(10, 255, 186, 179);
|
||||
$format_colored =& $workbook->addFormat();
|
||||
$format_colored->setFgColor(10);
|
||||
|
||||
$format_number_colored =& $workbook->addFormat();
|
||||
$format_number_colored->setNumFormat('0,0.00');
|
||||
//$format_number_colored->setNumFormat('0.00');
|
||||
$format_number_colored->setFgColor(10);
|
||||
|
||||
$format_number =& $workbook->addFormat();
|
||||
$format_number->setNumFormat('0,0.00');
|
||||
|
||||
$format_number_bold =& $workbook->addFormat();
|
||||
$format_number_bold->setNumFormat('0,0.00');
|
||||
//$format_number_bold->setNumFormat('0.00');
|
||||
$format_number_bold->setBold();
|
||||
|
||||
$format_normal = & $workbook->addFormat();
|
||||
if($result_stg = $db->db_query($qry_stg))
|
||||
{
|
||||
while($row_stg = $db->db_fetch_object($result_stg))
|
||||
@@ -96,28 +149,6 @@ if($result_stg = $db->db_query($qry_stg))
|
||||
$worksheet =& $workbook->addWorksheet($studiengang->kuerzel);
|
||||
$worksheet->setInputEncoding('utf-8');
|
||||
//echo "Writing $studiengang->kuerzel ...".microtime()."<br>";
|
||||
//Formate Definieren
|
||||
$format_bold =& $workbook->addFormat();
|
||||
$format_bold->setBold();
|
||||
|
||||
$workbook->setCustomColor(10, 255, 186, 179);
|
||||
$format_colored =& $workbook->addFormat();
|
||||
$format_colored->setFgColor(10);
|
||||
|
||||
$format_number_colored =& $workbook->addFormat();
|
||||
$format_number_colored->setNumFormat('0,0.00');
|
||||
//$format_number_colored->setNumFormat('0.00');
|
||||
$format_number_colored->setFgColor(10);
|
||||
|
||||
$format_number =& $workbook->addFormat();
|
||||
$format_number->setNumFormat('0,0.00');
|
||||
|
||||
$format_number_bold =& $workbook->addFormat();
|
||||
$format_number_bold->setNumFormat('0,0.00');
|
||||
//$format_number_bold->setNumFormat('0.00');
|
||||
$format_number_bold->setBold();
|
||||
|
||||
$format_normal = & $workbook->addFormat();
|
||||
|
||||
$i=0;
|
||||
$gesamtsheet_row++;
|
||||
@@ -449,9 +480,15 @@ if($result_stg = $db->db_query($qry_stg))
|
||||
public.tbl_person JOIN lehre.tbl_projektbetreuer USING (person_id)
|
||||
JOIN lehre.tbl_projektarbeit USING (projektarbeit_id)
|
||||
JOIN lehre.tbl_lehreinheit USING (lehreinheit_id)
|
||||
JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
|
||||
WHERE
|
||||
studiensemester_kurzbz=".$db->db_add_param($semester_aktuell)." AND
|
||||
stunden>0
|
||||
stunden>0";
|
||||
|
||||
if(count($stg_arr)>0)
|
||||
$qry.=" AND tbl_lehrveranstaltung.studiengang_kz IN(".$db->db_implode4SQL($stg_arr).")";
|
||||
|
||||
$qry.="
|
||||
GROUP BY
|
||||
studiensemester_kurzbz,person_id,nachname,vorname, titelpre
|
||||
ORDER BY
|
||||
@@ -469,6 +506,8 @@ if($result_stg = $db->db_query($qry_stg))
|
||||
$worksheet->write(2,++$i,"Stunden", $format_bold);
|
||||
$worksheet->write(2,++$i,"Kosten", $format_bold);
|
||||
|
||||
$format = $format_normal;
|
||||
$formatnb = $format_number;
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$zeile=3;
|
||||
@@ -503,11 +542,15 @@ if($result_stg = $db->db_query($qry_stg))
|
||||
$fileatttype = "application/xls";
|
||||
$fileattname = "lehrauftragsliste_".date('Y_m_d').".xls";
|
||||
|
||||
$mail = new mail(MAIL_GST, 'noreply@'.DOMAIN, $subject, $message);
|
||||
$empfaenger = MAIL_GST;
|
||||
if($oe_kurzbz=='lehrgang')
|
||||
$empfaenger = MAIL_LG;
|
||||
|
||||
$mail = new mail($empfaenger, 'noreply@'.DOMAIN, $subject, $message);
|
||||
$mail->addAttachmentBinary($file, $fileatttype, $fileattname);
|
||||
|
||||
if($mail->send())
|
||||
echo 'Email mit Lehrauftragslisten wurde an '.MAIL_GST.' versandt!';
|
||||
echo 'Email mit Lehrauftragslisten wurde an '.$empfaenger.' versandt!';
|
||||
else
|
||||
echo "Fehler beim Versenden der Lehrauftragsliste";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user