diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 82dcbda10..bb619586d 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -128,6 +128,9 @@ define('FAS_REIHUNGSTEST_AUFNAHMEGRUPPEN',false); // Legt fest, ob Vertragsdetails zum Lehrauftrag im Reiter LektorInnenzuteilung angezeigt werden define('FAS_LV_LEKTORINNENZUTEILUNG_VERTRAGSDETAILS_ANZEIGEN', false); +// Legt fest ob bei Fixangestellten Lektoren der Stundensatz vorgeschlagen wird +define('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ', true); + // Legt fest, ob Vertragsdetails zum Projektauftrag im Reiter Projektarbeit angezeigt werden define('FAS_STUDIERENDE_PROJEKTARBEIT_VERTRAGSDETAILS_ANZEIGEN', false); diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index 5e4a3ba61..5972c4b4f 100644 --- a/content/lvplanung/lehrveranstaltungDBDML.php +++ b/content/lvplanung/lehrveranstaltungDBDML.php @@ -36,6 +36,7 @@ // **************************************** require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/global.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/lehreinheit.class.php'); require_once('../../include/lehreinheitmitarbeiter.class.php'); @@ -52,6 +53,7 @@ require_once('../../include/lehrveranstaltung.class.php'); require_once('../../include/datum.class.php'); require_once('../../include/vertrag.class.php'); require_once('../../include/benutzergruppe.class.php'); +require_once('../../include/bisverwendung.class.php'); $user = get_uid(); $db = new basis_db(); @@ -440,11 +442,18 @@ if(!$error) elseif(isset($_POST['type']) && $_POST['type']=='lehreinheit_mitarbeiter_add') { //neue Lehreinheitmitarbeiterzuteilung anlegen - $qry = "SELECT tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, - (SELECT fachbereich_kurzbz FROM public.tbl_fachbereich WHERE oe_kurzbz=lehrfach.oe_kurzbz) as fachbereich_kurzbz - 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); + $qry = "SELECT + tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.lehrveranstaltung_id, + lehrfach.oe_kurzbz as lehrfach_oe_kurzbz + 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($db->db_query($qry)) { if($row = $db->db_fetch_object()) @@ -454,8 +463,8 @@ if(!$error) 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)) + !$rechte->isBerechtigtMultipleOe('assistenz', $row->lehrfach_oe_kurzbz, 'suid') && + !$rechte->isBerechtigtMultipleOe('admin', $row->lehrfach_oe_kurzbz, 'suid')) { $error = true; $return = false; @@ -496,29 +505,47 @@ if(!$error) $fixangestellt=false; //Stundensatz aus tbl_mitarbeiter holen - $qry = "SELECT stundensatz, fixangestellt FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=".$db->db_add_param($_POST['mitarbeiter_uid']); - if($result = $db->db_query($qry)) + $mitarbeiter = new mitarbeiter(); + if ($mitarbeiter->load($_POST['mitarbeiter_uid'])) { - if($row = $db->db_fetch_object($result)) + $fixangestellt = $mitarbeiter->fixangestellt; + $lem->stundensatz = $mitarbeiter->stundensatz; + + if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ') + && !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ) { - if($row->stundensatz!='') - $lem->stundensatz = $row->stundensatz; - else - $lem->stundensatz = '0'; - $fixangestellt = ($row->fixangestellt=='t'?true:false); + $stsem = new studiensemester(); + $stsem->load($semester_aktuell); + $bisverwendung = new bisverwendung(); + $data = $mitarbeiter->stundensatz; + if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende)) + { + $bisverwendung->getLastAktVerwendung($mitarbeiter->uid); + $bisverwendung->result[] = $bisverwendung; + } + + foreach($bisverwendung->result as $row_verwendung) + { + // Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz + // geliefert da dies im Vertrag inkludiert ist. + if ($row_verwendung->ba1code == 3 && $row_verwendung->inkludierte_lehre == -1) + { + $fixangestellt = true; + $lem->stundensatz = ''; + break; + } + } } else { - $error=true; - $return=false; - $errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden'; + $lem->stundensatz = $mitarbeiter->stundensatz; } } else { $error=true; $return=false; - $errormsg='Fehler bei einer Datenbankabfrage:'.$db->db_last_error(); + $errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden'; } $maxstunden=9999; @@ -1381,7 +1408,32 @@ if(!$error) $mitarbeiter = new mitarbeiter(); if($mitarbeiter->load($_POST['mitarbeiter_uid'])) { - $data = $mitarbeiter->stundensatz; + if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ') + && !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ) + { + $stsem = new studiensemester(); + $stsem->load($semester_aktuell); + $bisverwendung = new bisverwendung(); + $data = $mitarbeiter->stundensatz; + if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende)) + { + $bisverwendung->getLastAktVerwendung($mitarbeiter->uid); + $bisverwendung->result[] = $bisverwendung; + } + + foreach($bisverwendung->result as $row_verwendung) + { + // Bei echten Dienstvertraegen mit voller inkludierter Lehre wird kein Stundensatz + // geliefert da dies im Vertrag inkludiert ist. + if ($row_verwendung->ba1code == 3 && $row_verwendung->inkludierte_lehre == -1) + { + $data = ''; + break; + } + } + } + else + $data = $mitarbeiter->stundensatz; $return = true; } else diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 0e4e4fc06..6417e9a86 100644 --- a/include/bisverwendung.class.php +++ b/include/bisverwendung.class.php @@ -404,8 +404,8 @@ class bisverwendung extends basis_db $obj->verwendung_code = $row->verwendung_code; $obj->mitarbeiter_uid = $row->mitarbeiter_uid; $obj->hauptberufcode = $row->hauptberufcode; - $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $obj->habilitation = $this->db_parse_bool($row->habilitation); + $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $obj->habilitation = $this->db_parse_bool($row->habilitation); $obj->beginn = $row->beginn; $obj->ende = $row->ende; $obj->updatevon = $row->updatevon; @@ -513,8 +513,8 @@ class bisverwendung extends basis_db $this->verwendung_code = $row->verwendung_code; $this->mitarbeiter_uid = $row->mitarbeiter_uid; $this->hauptberufcode = $row->hauptberufcode; - $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $this->habilitation = $this->db_parse_bool($row->habilitation); + $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $this->habilitation = $this->db_parse_bool($row->habilitation); $this->beginn = $row->beginn; $this->ende = $row->ende; $this->updatevon = $row->updatevon; @@ -566,8 +566,8 @@ class bisverwendung extends basis_db $this->verwendung_code = $row->verwendung_code; $this->mitarbeiter_uid = $row->mitarbeiter_uid; $this->hauptberufcode = $row->hauptberufcode; - $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); - $this->habilitation = $this->db_parse_bool($row->habilitation); + $this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $this->habilitation = $this->db_parse_bool($row->habilitation); $this->beginn = $row->beginn; $this->ende = $row->ende; $this->updatevon = $row->updatevon; @@ -587,5 +587,68 @@ class bisverwendung extends basis_db return false; } } + + /** + * Laedt alle Verwendungen eines Mitarbeiters die in einen Datumsbereich fallen + * @param $uid UID des Mitarbeiters + * @param $von + * @param $bis + * @return true wenn ok, false wenn Fehler + */ + public function getVerwendungRange($uid, $von, $bis) + { + $datum_obj = new datum(); + //laden des Datensatzes + $qry = " + SELECT + * + FROM + bis.tbl_bisverwendung + WHERE + mitarbeiter_uid=".$this->db_add_param($uid)." + AND + ( + ".$this->db_add_param($datum_obj->formatDatum($von,'Y-m-d'))." BETWEEN COALESCE(beginn,'1970-01-01') AND COALESCE(ende,'2999-12-31') + OR + ".$this->db_add_param($datum_obj->formatDatum($bis,'Y-m-d'))." BETWEEN COALESCE(beginn,'1970-01-01') AND COALESCE(ende,'2999-12-31') + ) + ORDER BY ende desc;"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new bisverwendung(); + + $obj->bisverwendung_id = $row->bisverwendung_id; + $obj->ba1code = $row->ba1code; + $obj->ba2code = $row->ba2code; + $obj->beschausmasscode = $row->beschausmasscode; + $obj->verwendung_code = $row->verwendung_code; + $obj->mitarbeiter_uid = $row->mitarbeiter_uid; + $obj->hauptberufcode = $row->hauptberufcode; + $obj->hauptberuflich = $this->db_parse_bool($row->hauptberuflich); + $obj->habilitation = $this->db_parse_bool($row->habilitation); + $obj->beginn = $row->beginn; + $obj->ende = $row->ende; + $obj->updatevon = $row->updatevon; + $obj->updateamum = $row->updateamum; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->vertragsstunden = $row->vertragsstunden; + $obj->dv_art = $row->dv_art; + $obj->inkludierte_lehre = $row->inkludierte_lehre; + $obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig); + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } } ?>