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..709b3f2c8 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
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/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 = '';