mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a12873516 | |||
| b3af9b5f1d | |||
| 597480fe0c | |||
| 77dc95a1e7 | |||
| 8df36b676b | |||
| cf3d27c9fd |
@@ -66,13 +66,6 @@ $data = '';
|
||||
$error = false;
|
||||
$warnung = false;
|
||||
|
||||
//Default BA1Codes für echte Dienstverträge aus Config Laden
|
||||
$arrEchterDV = [103];
|
||||
if (defined('DEFAULT_ECHTER_DIENSTVERTRAG') && DEFAULT_ECHTER_DIENSTVERTRAG != '')
|
||||
{
|
||||
$arrEchterDV = DEFAULT_ECHTER_DIENSTVERTRAG;
|
||||
}
|
||||
|
||||
loadVariables($user);
|
||||
|
||||
//Berechtigungen laden
|
||||
@@ -188,6 +181,29 @@ function getStundenproInstitut($mitarbeiter_uid, $studiensemester_kurzbz, $oe_ar
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert zurück, ob Mitarbeiter ein echtes Dienstverhältnis hat.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return int|null
|
||||
*/
|
||||
function hasEchtesDienstverhaeltnis($mitarbeiter_uid, $studiensemester_kurzbz)
|
||||
{
|
||||
if(defined('DIENSTVERHAELTNIS_SUPPORT') && DIENSTVERHAELTNIS_SUPPORT)
|
||||
{
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
|
||||
// Echte Dienstverhältisse ermitteln
|
||||
$mitarbeiter->getDienstverhaeltnisse($studiensemester_kurzbz, 'echterdv', $mitarbeiter_uid);
|
||||
|
||||
return count($mitarbeiter->result) > 0;
|
||||
}
|
||||
|
||||
// kein DV support
|
||||
return null;
|
||||
}
|
||||
|
||||
if(!$error)
|
||||
{
|
||||
if(!empty($_POST['lehrveranstaltung']))
|
||||
@@ -302,7 +318,6 @@ if(!$error)
|
||||
//Wenn ja dann ein Warning zurueckliefern
|
||||
$ma = new mitarbeiter();
|
||||
$ma->load($lem->mitarbeiter_uid);
|
||||
$fixangestellt=$ma->fixangestellt;
|
||||
|
||||
$oe_obj = new organisationseinheit();
|
||||
$stunden_oe_kurzbz=null;
|
||||
@@ -310,16 +325,19 @@ if(!$error)
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->load($lva->studiengang_kz);
|
||||
|
||||
//Summe der Stunden ermitteln
|
||||
$le = new lehreinheit();
|
||||
$le->load($lem->lehreinheit_id);
|
||||
|
||||
$hasEchtesDv = hasEchtesDienstverhaeltnis($lem->mitarbeiter_uid, $le->studiensemester_kurzbz);
|
||||
$fixangestellt = is_bool($hasEchtesDv) ? $hasEchtesDv : $ma->fixangestellt;
|
||||
|
||||
//Maximale Stundenanzahl ermitteln
|
||||
if($fixangestellt)
|
||||
list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, true);
|
||||
else
|
||||
list($stunden_oe_kurzbz, $max_stunden) = $oe_obj->getStundengrenze($stg_obj->oe_kurzbz, false);
|
||||
|
||||
//Summe der Stunden ermitteln
|
||||
$le = new lehreinheit();
|
||||
$le->load($lem->lehreinheit_id);
|
||||
|
||||
if($lem->bismelden==false)
|
||||
$neue_stunden_eingerechnet=false;
|
||||
else
|
||||
@@ -546,7 +564,7 @@ if(!$error)
|
||||
|
||||
$fixangestellt=false;
|
||||
//"lehre" Stundensatz aus hr.tbl_stundensatz holen
|
||||
|
||||
|
||||
$studiensemester = new studiensemester();
|
||||
if (!$studiensemester->load($_POST['studiensemester_kurzbz']))
|
||||
{
|
||||
@@ -560,38 +578,18 @@ if(!$error)
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
if ($mitarbeiter->load($_POST['mitarbeiter_uid']))
|
||||
{
|
||||
$fixangestellt = $mitarbeiter->fixangestellt;
|
||||
|
||||
$hasEchtesDv = hasEchtesDienstverhaeltnis($mitarbeiter->uid, $studiensemester->studiensemester_kurzbz);
|
||||
$fixangestellt = is_bool($hasEchtesDv) ? $hasEchtesDv > 0 : $mitarbeiter->fixangestellt;
|
||||
|
||||
$stundensatz = new stundensatz();
|
||||
$stundensatz->getStundensatzDatum($mitarbeiter->uid, $studiensemester->start, $studiensemester->ende, 'lehre');
|
||||
$lem->stundensatz = $stundensatz->stundensatz;
|
||||
|
||||
if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
|
||||
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
|
||||
{
|
||||
$stsem = new studiensemester();
|
||||
$stsem->load($semester_aktuell);
|
||||
$bisverwendung = new bisverwendung();
|
||||
|
||||
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 ((in_array($row_verwendung->ba1code, $arrEchterDV)) && $row_verwendung->inkludierte_lehre == -1)
|
||||
{
|
||||
$fixangestellt = true;
|
||||
$lem->stundensatz = '';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$lem->stundensatz =
|
||||
defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
|
||||
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ
|
||||
&& is_bool($hasEchtesDv)
|
||||
&& $hasEchtesDv
|
||||
? ''
|
||||
: $stundensatz->stundensatz;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1578,7 +1576,7 @@ if(!$error)
|
||||
$error = true;
|
||||
$errormsg = 'Fehler beim Laden des Studiensemesters';
|
||||
}
|
||||
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
@@ -1586,32 +1584,18 @@ if(!$error)
|
||||
{
|
||||
$stundensatz = new stundensatz();
|
||||
$stundensatz->getStundensatzDatum($mitarbeiter->uid, $studiensemester->start, $studiensemester->ende, 'lehre');
|
||||
$data = $stundensatz->stundensatz;
|
||||
|
||||
if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
|
||||
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
|
||||
{
|
||||
$stsem = new studiensemester();
|
||||
$stsem->load($semester_aktuell);
|
||||
$bisverwendung = new bisverwendung();
|
||||
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 ((in_array($row_verwendung->ba1code, $arrEchterDV)) && $row_verwendung->inkludierte_lehre == -1)
|
||||
{
|
||||
$data = '';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$hasEchtesDv = hasEchtesDienstverhaeltnis($mitarbeiter->uid, $studiensemester->studiensemester_kurzbz);
|
||||
|
||||
// Bei echten Dienstvertraegen wird kein Stundensatz
|
||||
// geliefert da dies im Vertrag inkludiert ist.
|
||||
$data =
|
||||
defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
|
||||
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ
|
||||
&& is_bool($hasEchtesDv)
|
||||
&& $hasEchtesDv
|
||||
? ''
|
||||
: $stundensatz->stundensatz;
|
||||
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1995,5 +1995,75 @@ class mitarbeiter extends benutzer
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle Dienstverhaeltnisse des Mitarbeiters, optional für ein Studiensemester und/oder einen Vertragstyp.
|
||||
*/
|
||||
public function getDienstverhaeltnisse($studiensemester_kurzbz = null, $vertragsart_kurzbz = null, $uid = null)
|
||||
{
|
||||
if (is_null($uid))
|
||||
$uid=$this->uid;
|
||||
|
||||
$qry = "";
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= "
|
||||
WITH semester_datum AS (
|
||||
SELECT
|
||||
start, ende
|
||||
FROM
|
||||
public.tbl_studiensemester
|
||||
WHERE
|
||||
studiensemester_kurzbz = ". $this->db_add_param($studiensemester_kurzbz)."
|
||||
)
|
||||
";
|
||||
}
|
||||
|
||||
$qry .= "
|
||||
SELECT
|
||||
dienstverhaeltnis_id, mitarbeiter_uid, vertragsart_kurzbz, oe_kurzbz, von, bis
|
||||
FROM
|
||||
semester_datum CROSS JOIN
|
||||
hr.tbl_dienstverhaeltnis dv
|
||||
WHERE
|
||||
dv.mitarbeiter_uid = ". $this->db_add_param($uid);
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= "
|
||||
AND (bis >= semester_datum.start OR bis IS NULL)
|
||||
AND (von <= semester_datum.ende)";
|
||||
}
|
||||
|
||||
if (isset($vertragsart_kurzbz))
|
||||
{
|
||||
if (!is_array($vertragsart_kurzbz)) $vertragsart_kurzbz = array($vertragsart_kurzbz);
|
||||
|
||||
$qry .= "
|
||||
AND vertragsart_kurzbz IN (".$this->db_implode4SQL($vertragsart_kurzbz).")";
|
||||
}
|
||||
|
||||
$qry .= "
|
||||
ORDER BY
|
||||
von, dienstverhaeltnis_id";
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new StdClass();
|
||||
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
|
||||
$obj->vertragsart_kurzbz = $row->vertragsart_kurzbz;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
|
||||
$this->result []= $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user