diff --git a/application/config/message.php b/application/config/message.php index 35d34124b..8232cdfb7 100644 --- a/application/config/message.php +++ b/application/config/message.php @@ -18,6 +18,8 @@ $config['ou_receivers'] = array('ass'); $config['ou_receivers_no_notice'] = array('infocenter'); // Organization units that will not send the notice email to the internal account, but to the private one $config['ou_receivers_private'] = array('eac', 'ewu', 'scs'); +// +$config['ou_function_whitelist'] = array('ass', 'Leitung', 'fachzuordnung', 'oezuordnung'); $config['message_redirect_url'] = array(); $config['message_redirect_url']['fallback'] = site_url('system/messages/ViewMessage/writeReply'); diff --git a/application/libraries/MessageLib.php b/application/libraries/MessageLib.php index b97ef4bae..fd2051f48 100644 --- a/application/libraries/MessageLib.php +++ b/application/libraries/MessageLib.php @@ -15,6 +15,7 @@ class MessageLib const CFG_OU_RECEIVERS = 'ou_receivers'; const CFG_OU_RECEIVERS_NO_NOTICE = 'ou_receivers_no_notice'; const CFG_OU_RECEIVERS_PRIVATE = 'ou_receivers_private'; + const CFG_OU_FUNCTION_WHITELIST = 'ou_function_whitelist'; const CFG_REDIRECT_VIEW_MESSAGE_URL = 'redirect_view_message_url'; // Templates names @@ -229,7 +230,14 @@ class MessageLib $ouArray = array(); // Copies organisation units in $ouArray array - foreach (getData($benutzer) as $val) $ouArray[] = $val->oe_kurzbz; + foreach (getData($benutzer) as $val) + { + // If the function is in the white list then get the organisation unit + if (in_array($val->funktion_kurzbz, $this->_ci->config->item(self::CFG_OU_FUNCTION_WHITELIST))) + { + $ouArray[] = $val->oe_kurzbz; + } + } return success($ouArray); } diff --git a/application/models/organisation/Organisationseinheit_model.php b/application/models/organisation/Organisationseinheit_model.php index 3efc8472a..6439bc8d6 100644 --- a/application/models/organisation/Organisationseinheit_model.php +++ b/application/models/organisation/Organisationseinheit_model.php @@ -125,12 +125,12 @@ class Organisationseinheit_model extends DB_Model public function getChilds($oe_kurzbz, $includeinactive = false) { $query = " - WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as + WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as ( - SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit + SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz=? %s UNION ALL - SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes + SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes WHERE o.oe_parent_kurzbz=oes.oe_kurzbz %s ) SELECT oe_kurzbz @@ -150,12 +150,12 @@ class Organisationseinheit_model extends DB_Model public function getParents($oe_kurzbz, $includeinactive = false) { $query= - "WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as + "WITH RECURSIVE oes(oe_kurzbz, oe_parent_kurzbz) as ( - SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit + SELECT oe_kurzbz, oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz=? %s UNION ALL - SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes + SELECT o.oe_kurzbz, o.oe_parent_kurzbz FROM public.tbl_organisationseinheit o, oes WHERE o.oe_kurzbz=oes.oe_parent_kurzbz %s ) SELECT oe_kurzbz @@ -177,7 +177,7 @@ class Organisationseinheit_model extends DB_Model { $condition = ' oe_kurzbz = ( - SELECT + SELECT oe_parent_kurzbz FROM public.tbl_organisationseinheit diff --git a/application/widgets/Vorlage_widget.php b/application/widgets/Vorlage_widget.php index 9ec13250f..f1898eb09 100644 --- a/application/widgets/Vorlage_widget.php +++ b/application/widgets/Vorlage_widget.php @@ -11,9 +11,9 @@ class Vorlage_widget extends DropdownWidget $vorlage = null; // If the user is an admin - if ($idAdmin === true) + if ($idAdmin) { - // Get all the vorlage with mimetype = text/html + // Get all the vorlage with mimetype = text/html $vorlage = $this->_getAllHTMLVorlage(); } else @@ -39,7 +39,7 @@ class Vorlage_widget extends DropdownWidget private function _getAllHTMLVorlage() { $this->load->model('system/Vorlage_model', 'VorlageModel'); - $this->VorlageModel->addOrder('vorlage_kurzbz'); + $this->VorlageModel->addOrder('bezeichnung'); $this->addSelectToModel($this->VorlageModel, 'vorlage_kurzbz', 'bezeichnung'); @@ -59,15 +59,31 @@ class Vorlage_widget extends DropdownWidget $vorlage = success(array()); // Default value $table = '( - SELECT v.vorlage_kurzbz, v.bezeichnung, vs.version, vs.oe_kurzbz, vs.aktiv, vs.subject, vs.text, v.mimetype - FROM tbl_vorlagestudiengang vs INNER JOIN tbl_vorlage v USING(vorlage_kurzbz) + SELECT v.vorlage_kurzbz, + v.bezeichnung, + vs.version, + vs.oe_kurzbz, + vs.aktiv, + vs.subject, + vs.text, + v.mimetype + FROM tbl_vorlagestudiengang vs + JOIN tbl_vorlage v USING(vorlage_kurzbz) ) templates'; + $alias = 'templates'; - $fields = array("templates.vorlage_kurzbz AS id", "templates.bezeichnung AS description"); + + $fields = array( + 'templates.vorlage_kurzbz AS id', + 'templates.bezeichnung || \' (\' || UPPER(templates.oe_kurzbz) || \')\' AS description' + ); + $where = 'templates.aktiv = TRUE - AND templates.subject IS NOT NULL - AND templates.text IS NOT NULL - AND templates.mimetype = \'text/html\''; + AND templates.subject IS NOT NULL + AND templates.text IS NOT NULL + AND templates.mimetype = \'text/html\' + GROUP BY 1, 2, 3'; + $order_by = 'description ASC'; if (!is_array($oe_kurzbz)) @@ -99,30 +115,41 @@ class Vorlage_widget extends DropdownWidget if (hasData($tmpVorlage)) { // If it's the first vorlage copy it - if (count($vorlage->retval) == 0) + if (!hasData($vorlage)) { - for ($j = 0; $j < count($tmpVorlage->retval); $j++) + for ($j = 0; $j < count(getData($tmpVorlage)); $j++) { - if ($tmpVorlage->retval[$j]->id != '') + if (getData($tmpVorlage)[$j]->id != '') { - array_push($vorlage->retval, $tmpVorlage->retval[$j]); + array_push($vorlage->retval, getData($tmpVorlage)[$j]); } } } - else // checks for duplicates, if it's not already present push it into the array $vorlage->retval + else // checks for duplicates, if it's not already present push it into the array getData($vorlage) { - for ($i = 0; $i < count($vorlage->retval); $i++) + for ($j = 0; $j < count(getData($tmpVorlage)); $j++) { - for ($j = 0; $j < count($tmpVorlage->retval); $j++) + $found = false; + $currentTmpVorlageData = null; + + for ($i = 0; $i < count(getData($vorlage)); $i++) { - if ($tmpVorlage->retval[$j]->id != '' - && $vorlage->retval[$i]->_pk != $tmpVorlage->retval[$j]->_pk - && $vorlage->retval[$i]->_ppk != $tmpVorlage->retval[$j]->_ppk - && $vorlage->retval[$i]->_jtpk != $tmpVorlage->retval[$j]->_jtpk) + $currentTmpVorlageData = getData($tmpVorlage)[$j]; + + if (getData($vorlage)[$i]->id == getData($tmpVorlage)[$j]->id + && getData($vorlage)[$i]->_pk == getData($tmpVorlage)[$j]->_pk + && getData($vorlage)[$i]->_ppk == getData($tmpVorlage)[$j]->_ppk + && getData($vorlage)[$i]->_jtpk == getData($tmpVorlage)[$j]->_jtpk) { - array_push($vorlage->retval, $tmpVorlage->retval[$j]); + $found = true; + break; } } + + if (!$found && $currentTmpVorlageData->id != '') + { + array_push($vorlage->retval, $currentTmpVorlageData); + } } } } diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php index 17593ec15..3117aec55 100644 --- a/cis/private/profile/index.php +++ b/cis/private/profile/index.php @@ -427,6 +427,7 @@ if (!$ansicht) usort($kontakt->result, "sortKontakt"); echo ''; + $has_notfallkontakt = false; foreach($kontakt->result as $k) { if ($k->kontakttyp != 'firmenhandy' && $k->kontakttyp != 'hidden') @@ -441,6 +442,8 @@ if (!$ansicht) echo ''; echo ''; echo ''; + if ($k->kontakttyp == 'notfallkontakt') + $has_notfallkontakt = true; } /* if ($k->zustellung === TRUE) @@ -462,6 +465,9 @@ if (!$ansicht) } */ } + if (!$has_notfallkontakt) + echo ''; + echo '
'.$k->anmerkung.''.$zustellung.'
'.$p->t('profil/notfallkontakt').''.$p->t('profil/notfallkontaktBekanntgeben').'
'; } diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index a3d06f8ec..768a79452 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -135,6 +135,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); + // Gibt an, ob/ab welchen Studiensemester eine zusätzliche Vertragspruefung der Lektoren erfolgt. // Ab diesem Semester wird die Lektorenzuordnung nur angezeigt wenn ein erteilter Vertrag vorhanden ist define('CIS_LV_LEKTORINNENZUTEILUNG_VERTRAGSPRUEFUNG_VON', ''); @@ -259,6 +262,10 @@ define('FAS_KONTO_SHOW_CREDIT_POINTS','false'); // Bei "default" wird der Standard-Stundensatz des Lektors (aus tbl_mitarbeiter) ermittelt, und dieser eingetragen. // Wenn numerisch, wird dieser Wert bei allen LektorInnen eingetragen. // Wenn nicht definiert, wird der Stundensatz des Vorjahres übernommen. +// Bei "nachbeschaeftigungsart" wird +// bei echten Dienstvertraegen mit voller inkludierter Lehre (-1) der Stundensatz auf null gesetzt +// bei echten Dienstvertraegen mit teilweise oder nicht inkludierter Lehre der Default Stundensatz gesetzt +// bei sonstigen Dienstvertraegen der Default Stundensatz gesetzt define('VILESCI_STUNDENSATZ_VORRUECKUNG', ''); // Wenn true, werden die Content-Aufrufe des CIS in der tbl_webservicelog mitgeloggt. Zuvor manuell einen neuen Webservicetyp "content" anlegen! diff --git a/content/lvplanung/lehrveranstaltungDBDML.php b/content/lvplanung/lehrveranstaltungDBDML.php index 5e4a3ba61..a890a230c 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 == 103 && $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 == 103 && $row_verwendung->inkludierte_lehre == -1) + { + $data = ''; + break; + } + } + } + else + $data = $mitarbeiter->stundensatz; $return = true; } else @@ -1814,7 +1866,7 @@ if(!$error) } else { - $errormsg = 'VertragsID und MitarbeiterUID müssen uebergeben werden'; + $errormsg = 'Sie haben keine Berechtigung für diese Aktion.'; $return = false; } } diff --git a/include/bisverwendung.class.php b/include/bisverwendung.class.php index 44c70eb21..db17896a9 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; @@ -589,6 +589,70 @@ class bisverwendung extends basis_db } /** + * 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; + } + } + + /* * Prueft, ob Mitarbeiter habilitiert ist * @param $uid UID des Mitarbeiters * @return bool @@ -596,13 +660,13 @@ class bisverwendung extends basis_db public function isHabilitiert($uid) { $qry = ' - SELECT + SELECT * - FROM + FROM bis.tbl_bisverwendung - WHERE + WHERE mitarbeiter_uid = '. $this->db_add_param($uid). ' - AND + AND habilitation = true; '; @@ -625,10 +689,10 @@ class bisverwendung extends basis_db $bismeldung_jahr = $datetime->format('Y'); $qry = ' - SELECT + SELECT *, CASE - WHEN (beginn is null OR beginn < make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1)) + WHEN (beginn is null OR beginn < make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1)) THEN make_date('. $this->db_add_param($bismeldung_jahr). '::INTEGER, 1, 1) ELSE beginn END as beginn_imBISMeldungsJahr, @@ -667,8 +731,6 @@ class bisverwendung extends basis_db $obj->beginn_imBISMeldungsJahr = $row->beginn_imbismeldungsjahr; $obj->ende_imBISMeldungsJahr = $row->ende_imbismeldungsjahr; - - $this->result[] = $obj; } return true; diff --git a/locale/de-AT/profil.php b/locale/de-AT/profil.php index 074379601..b8dcadcdd 100644 --- a/locale/de-AT/profil.php +++ b/locale/de-AT/profil.php @@ -84,4 +84,6 @@ $this->phrasen['profil/gueltigbis']='Gültig bis'; $this->phrasen['profil/wochenstunden']='Wochenstunden'; $this->phrasen['profil/vertragsstunden']='Vertragsstunden'; $this->phrasen['profil/zukuenftigeFunktionen']='Zukünftige Funktionen'; +$this->phrasen['profil/notfallkontakt']='Notfallkontakt'; +$this->phrasen['profil/notfallkontaktBekanntgeben']='Bitte geben Sie einen Notfallkontakt bekannt!'; ?> diff --git a/locale/en-US/profil.php b/locale/en-US/profil.php index 660936381..e94f180cd 100644 --- a/locale/en-US/profil.php +++ b/locale/en-US/profil.php @@ -82,4 +82,6 @@ $this->phrasen['profil/gueltigbis']='Valid to'; $this->phrasen['profil/wochenstunden']='week hours'; $this->phrasen['profil/vertragsstunden']='contract hours'; $this->phrasen['profil/zukuenftigeFunktionen']='Future functions'; +$this->phrasen['profil/notfallkontakt']='Emergency contact'; +$this->phrasen['profil/notfallkontaktBekanntgeben']='Please provide an emergency contact!'; ?> diff --git a/rdf/studienerfolg.rdf.php b/rdf/studienerfolg.rdf.php index 700611c36..9d686cf51 100644 --- a/rdf/studienerfolg.rdf.php +++ b/rdf/studienerfolg.rdf.php @@ -48,12 +48,16 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz) tbl_person.vorname, tbl_person.nachname,tbl_person.gebdatum, tbl_studiensemester.bezeichnung as sembezeichnung, tbl_studiengang.english as bezeichnung_englisch, - tbl_studiengang.typ, tbl_studiengang.orgform_kurzbz, tbl_person.matr_nr + tbl_studiengang.typ, tbl_studiengang.orgform_kurzbz, + tbl_studiengangstyp.bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache='German')] as studiengangstypbezeichnung, + tbl_studiengangstyp.bezeichnung_mehrsprachig[(SELECT index FROM public.tbl_sprache WHERE sprache='English')] as studiengangstypbezeichnung_englisch, + tbl_person.matr_nr FROM - public.tbl_person, public.tbl_student, public.tbl_studiengang, public.tbl_benutzer, + public.tbl_person, public.tbl_student, public.tbl_studiengang, public.tbl_studiengangstyp, public.tbl_benutzer, public.tbl_studentlehrverband, public.tbl_studiensemester WHERE tbl_student.studiengang_kz = tbl_studiengang.studiengang_kz + and tbl_studiengang.typ = tbl_studiengangstyp.typ and tbl_student.student_uid = tbl_benutzer.uid and tbl_benutzer.person_id = tbl_person.person_id and tbl_student.student_uid = ".$db->db_add_param($uid)." @@ -69,27 +73,6 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz) else return false; - switch($row->typ) - { - case 'b': - $studTyp = 'Bachelor'; - break; - case 'm': - $studTyp = 'Master'; - break; - case 'd': - $studTyp = 'Diplom'; - break; - case 'l': - $studTyp = 'Lehrgang'; - break; - case 'k': - $studTyp = 'Kurzstudium'; - break; - default: - $studTyp =''; - } - $studiensemester = new studiensemester(); $studiensemester_aktuell = $studiensemester->getNearest(); $student = new student(); @@ -180,7 +163,8 @@ function draw_studienerfolg($uid, $studiensemester_kurzbz) $xml .= " bezeichnung_englisch."]]>"; $xml .= " "; $xml .= " "; - $xml .= " ".$studTyp.""; + $xml .= " ".$row->studiengangstypbezeichnung.""; + $xml .= " ".$row->studiengangstypbezeichnung_englisch.""; $xml .= " ".$studiengang_kz.""; $xml .= " titelpre."]]>"; $xml .= " titelpost."]]>"; diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php index 6f205eb94..1c27b2d91 100644 --- a/system/dbupdate_3.3.php +++ b/system/dbupdate_3.3.php @@ -3842,6 +3842,33 @@ if ($result = $db->db_query("SELECT 1 FROM pg_class WHERE relname = 'unq_idx_abl } } +// Spalte bezeichnung_mehrsprachig in public.tbl_studiengangstyp +if(!$result = @$db->db_query("SELECT bezeichnung_mehrsprachig FROM public.tbl_studiengangstyp LIMIT 1")) +{ + $qry = "ALTER TABLE public.tbl_studiengangstyp ADD COLUMN bezeichnung_mehrsprachig varchar(255)[];"; + + if(!$db->db_query($qry)) + echo 'public.tbl_studiengangstyp '.$db->db_last_error().'
'; + else + echo 'public.tbl_studiengangstyp: Spalte bezeichnung_mehrsprachig hinzugefuegt!
'; + + // Bezeichnung_mehrsprachig aus existierender Bezeichnung vorausfuellen. Ein Eintrag fuer jede Sprache mit Content aktiv. + $qry_help = "SELECT index FROM public.tbl_sprache WHERE content=TRUE;"; + if(!$result = $db->db_query($qry_help)) + echo 'tbl_studiengangstyp bezeichnung_mehrsprachig: Fehler beim ermitteln der Sprachen: '.$db->db_last_error().''; + else + { + $qry=''; + while($row = $db->db_fetch_object($result)) + $qry.= "UPDATE public.tbl_studiengangstyp set bezeichnung_mehrsprachig[".$row->index."] = bezeichnung;"; + + if(!$db->db_query($qry)) + echo 'Setzen der bezeichnung_mehrsprachig fehlgeschlagen: '.$db->db_last_error().'
'; + else + echo 'bis.tbl_studiengangstyp: bezeichnung_mehrprachig automatisch aus existierender Bezeichnung uebernommen
'; + } +} + /** * Anpassungen fuer BIS Personalmeldung 6.8 */ @@ -4172,7 +4199,7 @@ $tabellen=array( "public.tbl_student" => array("student_uid","matrikelnr","prestudent_id","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"), "public.tbl_studentlehrverband" => array("student_uid","studiensemester_kurzbz","studiengang_kz","semester","verband","gruppe","updateamum","updatevon","insertamum","insertvon","ext_id"), "public.tbl_studiengang" => array("studiengang_kz","kurzbz","kurzbzlang","typ","bezeichnung","english","farbe","email","telefon","max_semester","max_verband","max_gruppe","erhalter_kz","bescheid","bescheidbgbl1","bescheidbgbl2","bescheidgz","bescheidvom","orgform_kurzbz","titelbescheidvom","aktiv","ext_id","zusatzinfo_html","moodle","sprache","testtool_sprachwahl","studienplaetze","oe_kurzbz","lgartcode","mischform","projektarbeit_note_anzeige", "onlinebewerbung"), - "public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung"), + "public.tbl_studiengangstyp" => array("typ","bezeichnung","beschreibung","bezeichnung_mehrsprachig"), "public.tbl_studienjahr" => array("studienjahr_kurzbz","bezeichnung"), "public.tbl_studiensemester" => array("studiensemester_kurzbz","bezeichnung","start","ende","studienjahr_kurzbz","ext_id","beschreibung","onlinebewerbung"), "public.tbl_tag" => array("tag"), diff --git a/vilesci/lehre/lehreinheiten_vorrueckung.php b/vilesci/lehre/lehreinheiten_vorrueckung.php index af12376ae..7d48c4778 100644 --- a/vilesci/lehre/lehreinheiten_vorrueckung.php +++ b/vilesci/lehre/lehreinheiten_vorrueckung.php @@ -32,6 +32,7 @@ require_once('../../include/lehreinheitgruppe.class.php'); require_once('../../include/benutzerberechtigung.class.php'); require_once('../../include/mitarbeiter.class.php'); require_once('../../include/gruppe.class.php'); +require_once('../../include/bisverwendung.class.php'); if (!$db = new basis_db()) die('Es konnte keine Verbindung zum Server aufgebaut werden.'); @@ -162,6 +163,14 @@ elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') Alle Lehraufträge werden mit dem aktuell hinterlegten Standard-Stundensatz der/des Lehrenden vorgerückt '; } +elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') + && VILESCI_STUNDENSATZ_VORRUECKUNG != '' + && VILESCI_STUNDENSATZ_VORRUECKUNG == 'nachbeschaeftigungsart') +{ + echo '
+ Stundensätze werden abhängig von der Beschaeftigungsart aktualisiert. + '; +} else { echo '
@@ -219,6 +228,9 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '') } } + $stsem_nach_obj = new studiensemester(); + $stsem_nach_obj->load($stsem_nach); + if ($result = $db->db_query($qry)) { while($row = $db->db_fetch_object($result)) @@ -314,6 +326,38 @@ if ($studiengang_kz != '' && $stsem_von != '' && $stsem_nach != '') $stundensatz = new mitarbeiter($row_lem->mitarbeiter_uid); $lem_obj->stundensatz = $stundensatz->stundensatz; } + // Wenn VILESCI_STUNDENSATZ_VORRUECKUNG nachbeschaeftigungsart ist, wird + // bei echten Dienstvertraegen mit voller inkludierter Lehre (-1) der Stundensatz auf null gesetzt + // bei echten Dienstvertraegen mit teilweise oder nicht inkludierter Lehre der Default Stundensatz gesetzt + // bei sonstigen Dienstvertraegen der Default Stundensatz gesetzt + elseif (defined('VILESCI_STUNDENSATZ_VORRUECKUNG') + && VILESCI_STUNDENSATZ_VORRUECKUNG != '' + && VILESCI_STUNDENSATZ_VORRUECKUNG == 'nachbeschaeftigungsart') + { + if ($lem_obj->stundensatz != '0') + { + $stundensatz = new mitarbeiter($row_lem->mitarbeiter_uid); + $lem_obj->stundensatz = $stundensatz->stundensatz; + + $bisverwendung = new bisverwendung(); + if(!$bisverwendung->getVerwendungRange($row_lem->mitarbeiter_uid, $stsem_nach_obj->start, $stsem_nach_obj->ende)) + { + $bisverwendung->getLastAktVerwendung($row_lem->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 == 103 && $row_verwendung->inkludierte_lehre == -1) + { + $lem_obj->stundensatz = ''; + break; + } + } + } + } $lem_obj->insertamum = date('Y-m-d H:i:s'); $lem_obj->insertvon = 'Vorrueckung_'.$user; $lem_obj->ext_id = '';