mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
- pv21 stundensaetze hinzugefuegt
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class MigrateHourlyRate extends CLI_Controller
|
||||
{
|
||||
|
||||
CONST DEFAULT_OE = 'gst';
|
||||
CONST DEFAULT_DATE = '1970-01-01';
|
||||
CONST STUNDENSTAZTYP_LEHRE = 'lehre';
|
||||
CONST STUNDENSTAZTYP_KALKULATORISCH = 'kalkulatorisch';
|
||||
|
||||
private $_ci;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->_ci = & get_instance();
|
||||
|
||||
$this->load->model('codex/Bisverwendung_model', 'BisVerwendungModel');
|
||||
$this->load->model('person/Benutzerfunktion_model', 'BenutzerfunktionModel');
|
||||
$this->load->model('ressource/Stundensatz_model', 'StundensatzModel');
|
||||
}
|
||||
|
||||
public function index($user = null)
|
||||
{
|
||||
$mitarbeiterResult = $this->_getMitarbeiterStunden($user);
|
||||
if (isError($mitarbeiterResult)) return $mitarbeiterResult;
|
||||
if (!hasData($mitarbeiterResult)) return error('Keine Mitarbeiterstunden gefunden');
|
||||
|
||||
$mitarbeiterArray = getData($mitarbeiterResult);
|
||||
|
||||
foreach ($mitarbeiterArray as $mitarbeiter)
|
||||
{
|
||||
$this->_getUnternehmen($mitarbeiter);
|
||||
$insertResult = $this->_addStundensatz($mitarbeiter, self::STUNDENSTAZTYP_LEHRE, self::DEFAULT_DATE);
|
||||
if (isError($insertResult)) return $insertResult;
|
||||
}
|
||||
|
||||
$sapResult = $this->_getSapStunden($user);
|
||||
if (isError($sapResult)) return $sapResult;
|
||||
if (!hasData($sapResult)) return error('Keinen kalkulatorischen Stundensaetze gefunden');
|
||||
|
||||
$mitarbeiterArray = getData($sapResult);
|
||||
|
||||
foreach ($mitarbeiterArray as $mitarbeiter)
|
||||
{
|
||||
$this->_getUnternehmen($mitarbeiter);
|
||||
$insertResult = $this->_addStundensatz($mitarbeiter, self::STUNDENSTAZTYP_KALKULATORISCH, date_format(date_create($mitarbeiter->beginn), 'Y-m-d'));
|
||||
if (isError($insertResult)) return $insertResult;
|
||||
}
|
||||
}
|
||||
|
||||
private function _getSapStunden($user = null)
|
||||
{
|
||||
$dbModel = new DB_Model();
|
||||
$params = array();
|
||||
|
||||
$qry = "SELECT ss.mitarbeiter_uid as uid,
|
||||
ss.sap_kalkulatorischer_stundensatz as stundensatz,
|
||||
ss.insertamum as beginn
|
||||
FROM sync.tbl_sap_stundensatz ss
|
||||
WHERE ss.sap_kalkulatorischer_stundensatz IS NOT NULL";
|
||||
|
||||
if (!is_null($user))
|
||||
{
|
||||
$qry .= " AND ss.mitarbeiter_uid = ? ";
|
||||
$params[] = $user;
|
||||
}
|
||||
$qry .= " ORDER BY ss.mitarbeiter_uid";
|
||||
|
||||
return $dbModel->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
|
||||
private function _getMitarbeiterStunden($user = null)
|
||||
{
|
||||
$dbModel = new DB_Model();
|
||||
$params = array();
|
||||
|
||||
$qry = "SELECT mitarbeiter.mitarbeiter_uid as uid,
|
||||
stundensatz
|
||||
FROM public.tbl_mitarbeiter mitarbeiter
|
||||
WHERE mitarbeiter.stundensatz != 0.00
|
||||
AND mitarbeiter.stundensatz IS NOT NULL";
|
||||
|
||||
if (!is_null($user))
|
||||
{
|
||||
$qry .= " AND mitarbeiter.mitarbeiter_uid = ?";
|
||||
$params[] = $user;
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY mitarbeiter.mitarbeiter_uid";
|
||||
|
||||
return $dbModel->execReadOnlyQuery($qry, $params);
|
||||
}
|
||||
|
||||
private function _addStundensatz($mitarbeiter, $stundensatztyp, $gueltig_von)
|
||||
{
|
||||
return $this->_ci->StundensatzModel->insert(
|
||||
array(
|
||||
'uid' => $mitarbeiter->uid,
|
||||
'stundensatztyp' => $stundensatztyp,
|
||||
'stundensatz' => $mitarbeiter->stundensatz,
|
||||
'oe_kurzbz' => $mitarbeiter->unternehmen,
|
||||
'gueltig_von' => $gueltig_von,
|
||||
'insertamum' => date('Y-m-d H:i:s'),
|
||||
'insertvon' => 'MigrateHours'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private function _getUnternehmen(&$mitarbeiter)
|
||||
{
|
||||
$bvResult = $this->_ci->BisVerwendungModel->getLast($mitarbeiter->uid);
|
||||
|
||||
$beginn = null;
|
||||
if (hasData($bvResult))
|
||||
{
|
||||
$beginn = getData($bvResult)[0]->beginn;
|
||||
}
|
||||
|
||||
$unternehmenResult = $this->_findUnternehmen($mitarbeiter->uid, "'kstzuordnung', 'oezuordnung'", $beginn);
|
||||
|
||||
if(!hasData($unternehmenResult)) //&& hasData($bvResult)
|
||||
{
|
||||
$unternehmenResult = $this->_findUnternehmen($mitarbeiter->uid, "'kstzuordnung', 'oezuordnung'");
|
||||
}
|
||||
|
||||
$unternehmen = self::DEFAULT_OE;
|
||||
|
||||
if (hasData($unternehmenResult))
|
||||
$unternehmen = getData($unternehmenResult)[0]->oe_kurzbz;
|
||||
|
||||
$mitarbeiter->unternehmen = $unternehmen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detailsuche fuer die Ermittlung des Unternehmenszuordnung einer Person
|
||||
*/
|
||||
private function _findUnternehmen($uid, $fkt=null, $datum=null)
|
||||
{
|
||||
$dbModel = new DB_Model();
|
||||
|
||||
$qry = "
|
||||
WITH RECURSIVE meine_oes(oe_kurzbz, oe_parent_kurzbz, organisationseinheittyp_kurzbz) as
|
||||
(
|
||||
SELECT
|
||||
oe_kurzbz, oe_parent_kurzbz, organisationseinheittyp_kurzbz
|
||||
FROM
|
||||
public.tbl_organisationseinheit
|
||||
WHERE
|
||||
oe_kurzbz=(SELECT
|
||||
oe_kurzbz
|
||||
FROM
|
||||
public.tbl_benutzerfunktion
|
||||
WHERE
|
||||
uid=".$dbModel->escape($uid);
|
||||
|
||||
if(!is_null($datum))
|
||||
$qry.=" AND ".$dbModel->escape($datum)." BETWEEN datum_von AND COALESCE(datum_bis, '2999-12-31')";
|
||||
|
||||
if(!is_null($fkt))
|
||||
$qry.=" AND funktion_kurzbz in ($fkt)";
|
||||
|
||||
$qry.="
|
||||
ORDER BY funktion_kurzbz, datum_von LIMIT 1)
|
||||
UNION ALL
|
||||
SELECT
|
||||
o.oe_kurzbz, o.oe_parent_kurzbz, o.organisationseinheittyp_kurzbz
|
||||
FROM
|
||||
public.tbl_organisationseinheit o, meine_oes
|
||||
WHERE
|
||||
o.oe_kurzbz=meine_oes.oe_parent_kurzbz
|
||||
)
|
||||
SELECT
|
||||
oe_kurzbz
|
||||
FROM
|
||||
meine_oes
|
||||
WHERE
|
||||
oe_parent_kurzbz is null
|
||||
LIMIT 1
|
||||
";
|
||||
|
||||
return $dbModel->execReadOnlyQuery($qry);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
class Stundensatz_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'hr.tbl_stundensatz';
|
||||
$this->pk = 'stundensatz_id';
|
||||
$this->hasSequence = true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
class Stundensatztyp_model extends DB_Model
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->dbTable = 'hr.tbl_stundensatztyp';
|
||||
$this->pk = 'stundensatztyp';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -385,6 +385,7 @@ var LeLektorDDObserver=
|
||||
|
||||
req.add('lehreinheit_id', lehreinheit_id);
|
||||
req.add('mitarbeiter_uid', uid);
|
||||
req.add('studiensemester_kurzbz', getStudiensemester());
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ require_once('../../include/datum.class.php');
|
||||
require_once('../../include/vertrag.class.php');
|
||||
require_once('../../include/benutzergruppe.class.php');
|
||||
require_once('../../include/bisverwendung.class.php');
|
||||
require_once('../../include/stundensatz.class.php');
|
||||
|
||||
$user = get_uid();
|
||||
$db = new basis_db();
|
||||
@@ -543,51 +544,61 @@ if(!$error)
|
||||
$lem->new=true;
|
||||
|
||||
$fixangestellt=false;
|
||||
//Stundensatz aus tbl_mitarbeiter holen
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
if ($mitarbeiter->load($_POST['mitarbeiter_uid']))
|
||||
//"lehre" Stundensatz aus hr.tbl_stundensatz holen
|
||||
|
||||
$studiensemester = new studiensemester();
|
||||
if (!$studiensemester->load($_POST['studiensemester_kurzbz']))
|
||||
{
|
||||
$fixangestellt = $mitarbeiter->fixangestellt;
|
||||
$lem->stundensatz = $mitarbeiter->stundensatz;
|
||||
$return = false;
|
||||
$error = true;
|
||||
$errormsg = 'Fehler beim Laden des Studiensemesters';
|
||||
}
|
||||
|
||||
if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
|
||||
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
|
||||
if (!$error)
|
||||
{
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
if ($mitarbeiter->load($_POST['mitarbeiter_uid']))
|
||||
{
|
||||
$stsem = new studiensemester();
|
||||
$stsem->load($semester_aktuell);
|
||||
$bisverwendung = new bisverwendung();
|
||||
$data = $mitarbeiter->stundensatz;
|
||||
if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende))
|
||||
$fixangestellt = $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)
|
||||
{
|
||||
$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)
|
||||
$stsem = new studiensemester();
|
||||
$stsem->load($semester_aktuell);
|
||||
$bisverwendung = new bisverwendung();
|
||||
|
||||
if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende))
|
||||
{
|
||||
$fixangestellt = true;
|
||||
$lem->stundensatz = '';
|
||||
|
||||
break;
|
||||
$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$lem->stundensatz = $mitarbeiter->stundensatz;
|
||||
$error=true;
|
||||
$return=false;
|
||||
$errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$error=true;
|
||||
$return=false;
|
||||
$errormsg='Mitarbeiter '.$db->convert_html_chars($_POST['mitarbeiter_uid']).' wurde nicht gefunden';
|
||||
}
|
||||
|
||||
$maxstunden=9999;
|
||||
|
||||
@@ -1556,49 +1567,61 @@ if(!$error)
|
||||
}
|
||||
elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz')
|
||||
{
|
||||
if(isset($_POST['mitarbeiter_uid']))
|
||||
if(isset($_POST['mitarbeiter_uid']) && isset($_POST['studiensemester_kurzbz']))
|
||||
{
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
if($mitarbeiter->load($_POST['mitarbeiter_uid']))
|
||||
$studiensemester = new studiensemester();
|
||||
if (!$studiensemester->load($_POST['studiensemester_kurzbz']))
|
||||
{
|
||||
if (defined('FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ')
|
||||
&& !FAS_LV_LEKTORINNENZUTEILUNG_FIXANGESTELLT_STUNDENSATZ)
|
||||
$return = false;
|
||||
$error = true;
|
||||
$errormsg = 'Fehler beim Laden des Studiensemesters';
|
||||
}
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
$mitarbeiter = new mitarbeiter();
|
||||
if($mitarbeiter->load($_POST['mitarbeiter_uid']))
|
||||
{
|
||||
$stsem = new studiensemester();
|
||||
$stsem->load($semester_aktuell);
|
||||
$bisverwendung = new bisverwendung();
|
||||
$data = $mitarbeiter->stundensatz;
|
||||
if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende))
|
||||
$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)
|
||||
{
|
||||
$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)
|
||||
$stsem = new studiensemester();
|
||||
$stsem->load($semester_aktuell);
|
||||
$bisverwendung = new bisverwendung();
|
||||
if(!$bisverwendung->getVerwendungRange($mitarbeiter->uid, $stsem->start, $stsem->ende))
|
||||
{
|
||||
$data = '';
|
||||
break;
|
||||
$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;
|
||||
}
|
||||
}
|
||||
}
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
$data = $mitarbeiter->stundensatz;
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'Fehler beim Laden des Mitarbeitenden';
|
||||
$return = false;
|
||||
{
|
||||
$errormsg = 'Fehler beim Laden des Mitarbeitenden';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg = 'MitarbeitendeUID muss uebergeben werden';
|
||||
$errormsg = 'MitarbeitendeUID und Studiensemester muessen uebergeben werden';
|
||||
$return = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1228,6 +1228,7 @@ function LeMitarbeiterLektorChange()
|
||||
|
||||
req.add('type', 'getstundensatz');
|
||||
req.add('mitarbeiter_uid', mitarbeiter_uid);
|
||||
req.add('studiensemester_kurzbz', getStudiensemester());
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
@@ -1340,6 +1341,7 @@ function LeMitarbeiterAuswahl()
|
||||
|
||||
req_stundensatz.add('type', 'getstundensatz');
|
||||
req_stundensatz.add('mitarbeiter_uid', mitarbeiter_uid);
|
||||
req_stundensatz.add('studiensemester_kurzbz', getStudiensemester());
|
||||
|
||||
var response_stundensatz = req_stundensatz.executePOST();
|
||||
|
||||
|
||||
@@ -4614,27 +4614,44 @@ if(!$error)
|
||||
}
|
||||
elseif(isset($_POST['type']) && $_POST['type']=='getstundensatz')
|
||||
{
|
||||
if(isset($_POST['person_id']))
|
||||
if(isset($_POST['person_id']) && isset($_POST['studiensemester_kurzbz']))
|
||||
{
|
||||
$qry = "SELECT stundensatz FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
|
||||
WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER);
|
||||
if($result = $db->db_query($qry))
|
||||
$studiensemester = new studiensemester();
|
||||
if ($studiensemester->load($_POST['studiensemester_kurzbz']))
|
||||
{
|
||||
if($row = $db->db_fetch_object($result))
|
||||
$qry = "SELECT ss.stundensatz
|
||||
FROM hr.tbl_stundensatz ss
|
||||
JOIN public.tbl_mitarbeiter ON ss.uid = tbl_mitarbeiter.mitarbeiter_uid
|
||||
JOIN public.tbl_benutzer ON(tbl_benutzer.uid=tbl_mitarbeiter.mitarbeiter_uid)
|
||||
WHERE person_id=".$db->db_add_param($_POST['person_id'], FHC_INTEGER) ."
|
||||
AND stundensatztyp = ". $db->db_add_param('lehre') ."
|
||||
AND gueltig_von <= ". $db->db_add_param($studiensemester->ende) ."
|
||||
AND (gueltig_bis => ". $db->db_add_param($studiensemester->start) ." OR gueltig_bis IS NULL)
|
||||
ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1
|
||||
";
|
||||
if($result = $db->db_query($qry))
|
||||
{
|
||||
$data = $row->stundensatz;
|
||||
$return = true;
|
||||
if($row = $db->db_fetch_object($result))
|
||||
{
|
||||
$data = $row->stundensatz;
|
||||
$return = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = '80.00';
|
||||
$return = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = '80.00';
|
||||
$return = true;
|
||||
$return = false;
|
||||
$errormsg = 'Unbekannter Fehler';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$return = false;
|
||||
$errormsg = 'Unbekannter Fehler';
|
||||
$errormsg = 'Fehler beim Laden des Studiensemesters';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1367,6 +1367,7 @@ function StudentProjektbetreuerLoadMitarbeiterDaten()
|
||||
|
||||
req.add('type', 'getstundensatz');
|
||||
req.add('person_id', person_id);
|
||||
req.add('studiensemester_kurzbz', getStudiensemester())
|
||||
|
||||
var response = req.executePOST();
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class stundensatz extends basis_db
|
||||
{
|
||||
public $new;
|
||||
public $result = array();
|
||||
|
||||
//Tabellenspalten
|
||||
public $stundensatz_id; // serial
|
||||
public $uid; // varchar(32)
|
||||
public $stundensatztyp; // varchar(32)
|
||||
public $stundensatz; // numeric
|
||||
public $oe_kurzbz; // varchar(32)
|
||||
public $gueltig_von; // date
|
||||
public $gueltig_bis; // date
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // varchar(16)
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // varchar(16)
|
||||
|
||||
|
||||
|
||||
public function __construct($stundensatz_id = null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if (!is_null($stundensatz_id))
|
||||
$this->load($stundensatz_id);
|
||||
}
|
||||
|
||||
public function getStundensatzDatum($uid, $beginn, $ende = null, $typ = null)
|
||||
{
|
||||
|
||||
$qry = "SELECT
|
||||
*
|
||||
FROM
|
||||
hr.tbl_stundensatz
|
||||
WHERE
|
||||
uid = ". $this->db_add_param($uid) ."
|
||||
AND (gueltig_bis >= ". $this->db_add_param($beginn) ." OR gueltig_bis is null)";
|
||||
|
||||
if (!is_null($ende))
|
||||
{
|
||||
$qry .= " AND (gueltig_von <= ". $this->db_add_param($ende) .")";
|
||||
}
|
||||
|
||||
if (!is_null($typ))
|
||||
{
|
||||
$qry .= " AND stundensatztyp = ". $this->db_add_param($typ);
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY gueltig_bis DESC NULLS FIRST, gueltig_von DESC NULLS LAST LIMIT 1;";
|
||||
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->stundensatz_id = $row->stundensatz_id;
|
||||
$this->uid = $row->uid;
|
||||
$this->stundensatztyp = $row->stundensatztyp;
|
||||
$this->stundensatz = $row->stundensatz;
|
||||
$this->oe_kurzbz = $row->oe_kurzbz;
|
||||
$this->gueltig_von = $row->gueltig_von;
|
||||
$this->gueltig_bis = $row->gueltig_bis;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -40,6 +40,7 @@ require_once('dbupdate_3.4/24913_tabelle_raumtyp_neues_attribut_aktiv.php');
|
||||
require_once('dbupdate_3.4/28089_plausichecks_in_extension_hinzufuegen.php');
|
||||
require_once('dbupdate_3.4/29133_einzelne_studiengaenge_aus_issuechecks_ausnehmen.php');
|
||||
require_once('dbupdate_3.4/30537_anmerkung_in_tbl_rolleberechtigung.php');
|
||||
require_once('dbupdate_3.4/29094_stundensaetze.php');
|
||||
|
||||
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
|
||||
echo '<H2>Pruefe Tabellen und Attribute!</H2>';
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
if (! defined('DB_NAME')) exit('No direct script access allowed');
|
||||
|
||||
// Add index to system.tbl_log
|
||||
if (!$result = @$db->db_query("SELECT 1 FROM hr.tbl_stundensatz LIMIT 1"))
|
||||
{
|
||||
$qry = "
|
||||
CREATE TABLE hr.tbl_stundensatztyp
|
||||
(
|
||||
stundensatztyp varchar(32) NOT NULL,
|
||||
bezeichnung varchar(256),
|
||||
aktiv boolean NOT NULL DEFAULT true,
|
||||
insertamum timestamp DEFAULT now(),
|
||||
insertvon varchar(32),
|
||||
updateamum timestamp,
|
||||
updatevon varchar(32),
|
||||
CONSTRAINT tbl_stundensatztyp_pk PRIMARY KEY (stundensatztyp)
|
||||
);
|
||||
|
||||
CREATE TABLE hr.tbl_stundensatz
|
||||
(
|
||||
stundensatz_id integer NOT NULL,
|
||||
uid character varying(32),
|
||||
stundensatztyp varchar(32),
|
||||
stundensatz numeric(6, 2),
|
||||
oe_kurzbz character varying(32),
|
||||
gueltig_von date,
|
||||
gueltig_bis date,
|
||||
insertamum timestamp,
|
||||
insertvon varchar(32),
|
||||
updateamum timestamp,
|
||||
updatevon varchar(32),
|
||||
CONSTRAINT tbl_stundensatz_pkey PRIMARY KEY (stundensatz_id)
|
||||
);
|
||||
|
||||
CREATE SEQUENCE hr.tbl_stundensatz_stundensatz_id_seq
|
||||
START WITH 1
|
||||
INCREMENT BY 1
|
||||
NO MAXVALUE
|
||||
NO MINVALUE
|
||||
CACHE 1;
|
||||
|
||||
ALTER TABLE hr.tbl_stundensatz ALTER COLUMN stundensatz_id SET DEFAULT nextval('hr.tbl_stundensatz_stundensatz_id_seq');
|
||||
|
||||
ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_stundensatztyp_fk FOREIGN KEY (stundensatztyp) REFERENCES hr.tbl_stundensatztyp (stundensatztyp) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_uid_fk FOREIGN KEY (uid) REFERENCES public.tbl_mitarbeiter ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
ALTER TABLE hr.tbl_stundensatz ADD CONSTRAINT tbl_stundensatz_oe_kurzbz_fk FOREIGN KEY (oe_kurzbz) REFERENCES public.tbl_organisationseinheit (oe_kurzbz) ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatztyp TO vilesci;
|
||||
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatz TO vilesci;
|
||||
GRANT SELECT, UPDATE, INSERT, DELETE ON hr.tbl_stundensatz_stundensatz_id_seq TO vilesci;
|
||||
|
||||
GRANT SELECT ON hr.tbl_stundensatztyp TO web;
|
||||
GRANT SELECT ON hr.tbl_stundensatz TO web;
|
||||
|
||||
INSERT INTO hr.tbl_stundensatztyp(stundensatztyp, bezeichnung, insertvon) VALUES('lehre','Lehre', 'checksystem');
|
||||
INSERT INTO hr.tbl_stundensatztyp(stundensatztyp, bezeichnung, insertvon) VALUES('kalkulatorisch','kalkulatorische Stundensaetze', 'checksystem');
|
||||
|
||||
CREATE INDEX idx_tbl_stundensatz_uid ON hr.tbl_stundensatz USING btree (uid);
|
||||
CREATE INDEX idx_tbl_stundensatz_stundensatz_id ON hr.tbl_stundensatz USING btree (stundensatz_id);
|
||||
";
|
||||
|
||||
if (!$db->db_query($qry))
|
||||
echo '<strong>Stundensaetze Tabelle: ' . $db->db_last_error() . '</strong><br>';
|
||||
else
|
||||
echo 'Stundensaetze Tabelle erstellt';
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user