mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-19 16:02:15 +00:00
Merge branch 'master' into feature-18571/EntwicklungsteamBisMeldung
This commit is contained in:
@@ -163,6 +163,44 @@ abstract class db extends basis
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace the password names with the related passwords in a SQL string, to decrypt data from the DB
|
||||
*/
|
||||
protected function replaceSQLDecryptionPassword($sql)
|
||||
{
|
||||
$newSQL = null;
|
||||
|
||||
// If the global constant CI_ENVIRONMENT is not defined then return a failure
|
||||
if (!defined('CI_ENVIRONMENT')) return null;
|
||||
|
||||
if(!defined('BASEPATH'))
|
||||
define('BASEPATH', 'LEGACY_WORKAROUND'); // little trick to load a CI config file
|
||||
|
||||
// Tries to include the CI config file that contains password for the database encryption
|
||||
// If the include fails then return a failure
|
||||
if (!include(dirname(__FILE__).'/../application/config/'.CI_ENVIRONMENT.'/db_crypt.php')) return null;
|
||||
|
||||
// Array that will contains all the DB decryption password
|
||||
$decryptionPasswordsArray = array();
|
||||
// Array that will contains all the DB decryption password names
|
||||
$decryptionPasswordNamesArray = array();
|
||||
|
||||
// For each password found in the config array
|
||||
foreach ($config['encryption_passwords'] as $name => $password)
|
||||
{
|
||||
// Copy the password name using this template: '{$'<password name>'}'
|
||||
$decryptionPasswordArray[] = $password;
|
||||
$decryptionPasswordNamesArray[] = '${'.$name.'}';
|
||||
}
|
||||
|
||||
// Replace the password names with the password values
|
||||
$newSQL = str_replace($decryptionPasswordNamesArray, $decryptionPasswordArray, $sql);
|
||||
|
||||
// In case the replacement is a failure
|
||||
if ($newSQL == '' || $newSQL == null) return null;
|
||||
|
||||
return $newSQL; // OK
|
||||
}
|
||||
}
|
||||
require_once(dirname(__FILE__).'/'.DB_SYSTEM.'.class.php');
|
||||
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
<?php
|
||||
/* Copyright (C) 2007 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Alexei Karpenko <karpenko@technikum-wien.at>,
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
require_once(dirname(__FILE__).'/studiensemester.class.php');
|
||||
|
||||
class bismeldestichtag extends basis_db
|
||||
{
|
||||
//Tabellenspalten
|
||||
public $meldestichtag_id; // integer
|
||||
public $meldestichtag; // date
|
||||
public $studiensemester_kurzbz; // varchar(16)
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // varchar(32)
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // varchar(32)
|
||||
|
||||
// ErgebnisArray
|
||||
public $result=array();
|
||||
|
||||
/**
|
||||
* Konstruktor - Uebergibt die Connection und laedt optional einen Meldestichtag
|
||||
* @param $meldestichtag_id Stichtag der geladen werden soll (default=null)
|
||||
*/
|
||||
public function __construct($meldestichtag_id=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if(!is_null($meldestichtag_id))
|
||||
$this->load($meldestichtag_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt Meldestichtag mit der uebergebenen ID
|
||||
* @param $meldestichtag_id ID des Stichtags der geladen werden soll
|
||||
*/
|
||||
public function load($meldestichtag_id)
|
||||
{
|
||||
$qry = "SELECT * FROM bis.tbl_bismeldestichtag WHERE meldestichtag_id=".$this->db_add_param($meldestichtag_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->meldestichtag_id = $row->meldestichtag_id;
|
||||
$this->meldestichtag = $row->meldestichtag;
|
||||
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Kein Eintrag gefunden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler beim Laden des Stichtags";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft die Variablen vor dem Speichern
|
||||
* auf Gueltigkeit.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
protected function validate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Liefert zuletzt erreichten Meldestichtag
|
||||
*
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return boolean
|
||||
*/
|
||||
public function getLastReachedMeldestichtag($studiensemester_kurzbz = null)
|
||||
{
|
||||
$qry = "SELECT
|
||||
meldestichtag_id, meldestichtag, studiensemester_kurzbz, insertamum, insertvon, updateamum, updatevon
|
||||
FROM
|
||||
bis.tbl_bismeldestichtag
|
||||
WHERE
|
||||
meldestichtag < NOW()";
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
$qry .= "
|
||||
AND
|
||||
studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
|
||||
}
|
||||
|
||||
$qry .= "
|
||||
ORDER BY
|
||||
meldestichtag DESC
|
||||
LIMIT 1;";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new bismeldestichtag();
|
||||
|
||||
$obj->meldestichtag_id = $row->meldestichtag_id;
|
||||
$obj->meldestichtag = $row->meldestichtag;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Meldestichtag konnte nicht geladen werden';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft, ob Meldestichtag für ein bestimmtes Statusdatum und Studiensemester erreicht ist.
|
||||
*
|
||||
* @param $status_datum
|
||||
* @param $studiensemester_kurzbz
|
||||
* @return boolean true wenn erreicht, oder false
|
||||
*/
|
||||
public function checkMeldestichtagErreicht($status_datum, $studiensemester_kurzbz = null)
|
||||
{
|
||||
$erreicht = false;
|
||||
|
||||
if (isset($studiensemester_kurzbz))
|
||||
{
|
||||
// Studiensemester ende holen
|
||||
$studiensemester = new studiensemester();
|
||||
if ($studiensemester->load($studiensemester_kurzbz))
|
||||
$studiensemester_ende = new DateTime($studiensemester->ende);
|
||||
}
|
||||
|
||||
// letztes erreichtes Bismeldedatum holen
|
||||
if ($this->getLastReachedMeldestichtag() && isset($this->result[0]))
|
||||
$lastReachedMeldestichtag = new DateTime($this->result[0]->meldestichtag);
|
||||
|
||||
$statusDatum = new DateTime($status_datum);
|
||||
|
||||
// Prüfen, ob Studentstatusdatum oder Studiensemester vor dem Stichtagsdatum liegen
|
||||
if (isset($statusDatum))
|
||||
{
|
||||
if (isset($lastReachedMeldestichtag))
|
||||
$erreicht = $statusDatum < $lastReachedMeldestichtag;
|
||||
|
||||
if (isset($studiensemester_ende))
|
||||
$erreicht = $erreicht || $studiensemester_ende < $lastReachedMeldestichtag;
|
||||
|
||||
}
|
||||
|
||||
return $erreicht;
|
||||
}
|
||||
}
|
||||
?>
|
||||
+372
-350
File diff suppressed because it is too large
Load Diff
@@ -200,6 +200,10 @@ class dokument_export
|
||||
chdir($this->temp_folder);
|
||||
file_put_contents($this->temp_folder . '/content.xml', $contentbuffer);
|
||||
|
||||
if ($this->xml_data->firstChild->tagName == 'error') {
|
||||
$this->errormsg = $this->xml_data->firstChild->textContent;
|
||||
return false;
|
||||
}
|
||||
// styles.xml erstellen
|
||||
if(!is_null($this->styles_xsl))
|
||||
{
|
||||
|
||||
@@ -39,9 +39,9 @@ class dvb extends basis_db
|
||||
const DVB_URL_WEBSERVICE_NACHNAME = DVB_PORTAL.'/rws/0.2/simpleStudentByNachname.xml';
|
||||
const DVB_URL_WEBSERVICE_NAME = DVB_PORTAL.'/rws/0.2/simpleStudentByName.xml';
|
||||
const DVB_URL_WEBSERVICE_MATRIKELNUMMER = DVB_PORTAL.'/rws/0.2/simpleStudentByMatrikelnummer.xml';
|
||||
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.5/matrikelreservierung.xml';
|
||||
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.5/matrikelmeldung.xml';
|
||||
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.5/pruefebpk.xml';
|
||||
const DVB_URL_WEBSERVICE_RESERVIERUNG = DVB_PORTAL.'/rws/0.6/matrikelreservierung.xml';
|
||||
const DVB_URL_WEBSERVICE_MELDUNG = DVB_PORTAL.'/rws/0.6/matrikelmeldung.xml';
|
||||
const DVB_URL_WEBSERVICE_BPK = DVB_PORTAL.'/rws/0.6/pruefebpk.xml';
|
||||
|
||||
public $authentication;
|
||||
private $username;
|
||||
@@ -829,7 +829,8 @@ class dvb extends basis_db
|
||||
if (ErrorHandler::isError($result))
|
||||
return ErrorHandler::error();
|
||||
}
|
||||
$gebdat = str_replace("-", "", $person->geburtsdatum);
|
||||
//$gebdat = str_replace("-", "", $person->geburtsdatum);
|
||||
$gebdat = $person->geburtsdatum;
|
||||
|
||||
$data = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<matrikelnummernmeldung xmlns="http://www.brz.gv.at/datenverbund-unis">
|
||||
@@ -1038,7 +1039,7 @@ class dvb extends basis_db
|
||||
<ausstellland>'.$reisepass->ausstellland.'</ausstellland>
|
||||
<dokumentnr>'.$reisepass->dokumentnr.'</dokumentnr>
|
||||
<dokumenttyp>'.$reisepass->dokumenttyp.'</dokumenttyp>
|
||||
</ernpmeldung>
|
||||
</ernpmeldung>
|
||||
';
|
||||
$data .= '</matrikelnummernmeldung>';
|
||||
|
||||
|
||||
@@ -230,9 +230,11 @@ class filter extends basis_db
|
||||
*/
|
||||
public function loadValues($sql, $valuename, $showvalue)
|
||||
{
|
||||
|
||||
$this->values = array();
|
||||
|
||||
// In case a decryption function is used then perform password substitution
|
||||
$sql = $this->replaceSQLDecryptionPassword($sql);
|
||||
|
||||
if($this->db_query($sql))
|
||||
{
|
||||
while($row = $this->db_fetch_row())
|
||||
|
||||
@@ -1197,6 +1197,26 @@ function anzahlTage($date1, $date2)
|
||||
return round($diff / 86400);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the provided SQL string contains PostgreSQL functions to decrypt data, returns a boolean
|
||||
*/
|
||||
function hasSQLDecryption($sql)
|
||||
{
|
||||
return stripos($sql, 'PGP_SYM_DECRYPT') !== false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the provided SQL string contains PostgreSQL functions to decrypt data,
|
||||
* and if it is used a variable instead of a readable password. Returns a boolean
|
||||
*/
|
||||
function isSQLDecryptionValid($sql)
|
||||
{
|
||||
// If the SQL string contains decryption functions and there are _no_ password variables
|
||||
if (hasSQLDecryption($sql) && strpos($sql, '${') === false) return false; // then return false
|
||||
|
||||
return true; // in any other case return true
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt zurück, ob ein String ausschließlich erlaubte Zeichen enthält
|
||||
* erlaubt: Buchstaben a-z, A-Z, 0-9, -, _
|
||||
@@ -1205,10 +1225,10 @@ function anzahlTage($date1, $date2)
|
||||
*/
|
||||
function hasOnlyAllowedChars($stringToCheck)
|
||||
{
|
||||
if (!preg_match("#^[a-zA-Z0-9_-]+$#", $stringToCheck))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
if (!preg_match("#^[a-zA-Z0-9_-]+$#", $stringToCheck))
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -965,17 +965,16 @@ class konto extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
public function checkDoppelteBuchung($person_ids, $stsem, $typ)
|
||||
public function checkDoppelteBuchung($person_ids, $stsem, $typen)
|
||||
{
|
||||
$qry = "SELECT person.vorname, person.nachname
|
||||
FROM public.tbl_konto konto
|
||||
JOIN public.tbl_person person USING(person_id)
|
||||
WHERE konto.person_id IN (".$this->implode4SQL(array_filter($person_ids)).")
|
||||
AND studiensemester_kurzbz = ".$this->db_add_param($stsem)."
|
||||
AND buchungstyp_kurzbz = ".$this->db_add_param($typ)."
|
||||
AND buchungstyp_kurzbz IN (".$this->implode4SQL($typen) .")
|
||||
GROUP BY person.vorname, person.nachname
|
||||
ORDER BY person.nachname, person.vorname";
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
$persons = array();
|
||||
|
||||
@@ -1067,10 +1067,12 @@ class mitarbeiter extends benutzer
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt ein Array mit den UIDs der Vorgesetzten zurück
|
||||
* Gibt ein Array mit den UIDs der aktuellen Vorgesetzten zurück
|
||||
* @param null $uid
|
||||
* @param null $limit LIMIT = 1 liefert bei mehreren Vorgesetzten den letzten (aktuellsten) zurück.
|
||||
* @return uid
|
||||
*/
|
||||
public function getVorgesetzte($uid=null)
|
||||
public function getVorgesetzte($uid=null, $limit = null)
|
||||
{
|
||||
$return=false;
|
||||
if (is_null($uid))
|
||||
@@ -1090,8 +1092,13 @@ class mitarbeiter extends benutzer
|
||||
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)." AND
|
||||
(datum_von is null OR datum_von<=now()) AND
|
||||
(datum_bis is null OR datum_bis>=now())
|
||||
);";
|
||||
)
|
||||
ORDER BY datum_von DESC ";
|
||||
|
||||
if (is_numeric($limit))
|
||||
{
|
||||
$qry .= 'LIMIT '. $this->db_add_param($limit, FHC_INTEGER);
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -1115,9 +1122,12 @@ class mitarbeiter extends benutzer
|
||||
|
||||
/**
|
||||
* Gibt ein Array mit den UIDs der Vorgesetzten zum Zeitpunkt des korrespondierenden Timesheets zurück
|
||||
* @param $uid
|
||||
* @param $date
|
||||
* @param null $limit LIMIT = 1 liefert bei mehreren Vorgesetzten den letzten (aktuellsten) zurück.
|
||||
* @return uid
|
||||
*/
|
||||
public function getVorgesetzteMonatTimesheet($uid, $timesheetDate)
|
||||
public function getVorgesetzteByDate($uid, $date, $limit = null)
|
||||
{
|
||||
$return=false;
|
||||
|
||||
@@ -1127,15 +1137,21 @@ class mitarbeiter extends benutzer
|
||||
public.tbl_benutzerfunktion
|
||||
WHERE
|
||||
funktion_kurzbz='Leitung' AND
|
||||
(datum_von is null OR datum_von<=".$this->db_add_param($timesheetDate).") AND
|
||||
(datum_bis is null OR datum_bis>=".$this->db_add_param($timesheetDate).") AND
|
||||
(datum_von is null OR datum_von<=".$this->db_add_param($date).") AND
|
||||
(datum_bis is null OR datum_bis>=".$this->db_add_param($date).") AND
|
||||
oe_kurzbz in (SELECT oe_kurzbz
|
||||
FROM public.tbl_benutzerfunktion
|
||||
WHERE
|
||||
funktion_kurzbz='oezuordnung' AND uid=".$this->db_add_param($uid)." AND
|
||||
(datum_von is null OR (datum_von<= ".$this->db_add_param($timesheetDate).")) AND
|
||||
(datum_bis is null OR (datum_bis>=".$this->db_add_param($timesheetDate)."))
|
||||
);";
|
||||
(datum_von is null OR (datum_von<= ".$this->db_add_param($date).")) AND
|
||||
(datum_bis is null OR (datum_bis>=".$this->db_add_param($date)."))
|
||||
)
|
||||
ORDER BY datum_von DESC ";
|
||||
|
||||
if (is_numeric($limit))
|
||||
{
|
||||
$qry .= 'LIMIT '. $this->db_add_param($limit);
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
@@ -1204,16 +1220,16 @@ class mitarbeiter extends benutzer
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Gibt ein Array mit den UIDs der aktiv beschäftigten Untergebenen zurueck
|
||||
* @param string $uid UID.
|
||||
* @param boolean $include_OE_childs Wenn true, dann werden auch alle aktiv
|
||||
* beschäftigten Untergebenen der Kind-OEs des Leiters zurückgegeben.
|
||||
* @param bool $fixangestellte_only
|
||||
* @param bool $include_ImLetztenMonatBeendete Inkludiert Mitarbeiter, deren Benutzerfunktion im letzten Monat bereits endete
|
||||
* @return boolean
|
||||
*/
|
||||
public function getUntergebene($uid=null, $include_OE_childs = false, $fixangestellte_only = true)
|
||||
public function getUntergebene($uid=null, $include_OE_childs = false, $fixangestellte_only = true, $include_ImLetztenMonatBeendete = false)
|
||||
{
|
||||
if (is_null($uid))
|
||||
$uid=$this->uid;
|
||||
@@ -1320,11 +1336,18 @@ class mitarbeiter extends benutzer
|
||||
|
||||
$qry.= ")
|
||||
AND
|
||||
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
|
||||
AND
|
||||
(tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
|
||||
AND
|
||||
tbl_benutzer.aktiv = 'true'";
|
||||
(tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())";
|
||||
if ($include_ImLetztenMonatBeendete)
|
||||
{
|
||||
// hier kein check auf aktiv = 'true', da hier auch DV abgefragt werden, die im letzten Monat beendet wurden
|
||||
$qry .= " AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis >= (DATE_TRUNC('MONTH', NOW()) - INTERVAL '1 month'))";
|
||||
}
|
||||
else {
|
||||
|
||||
$qry .= " AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis >= now())";
|
||||
$qry .= " AND tbl_benutzer.aktiv = 'true'";
|
||||
}
|
||||
|
||||
if ($fixangestellte_only)
|
||||
$qry .= " AND tbl_mitarbeiter.fixangestellt";
|
||||
$qry .= ";";
|
||||
@@ -1617,28 +1640,6 @@ class mitarbeiter extends benutzer
|
||||
}
|
||||
}
|
||||
|
||||
/** Check if uid is a supervisor
|
||||
*
|
||||
* @param string $uid
|
||||
* @param string $employee_uid
|
||||
* @return boolean True if $uid is direct leader of $employee_uid.
|
||||
*/
|
||||
function check_isVorgesetzter($uid, $employee_uid)
|
||||
{
|
||||
$this->getUntergebene($uid);
|
||||
$untergebenen_arr = $this->untergebene;
|
||||
|
||||
// Check, if uid is an employee of supervisor
|
||||
if (!empty($untergebenen_arr) &&
|
||||
in_array($employee_uid, $untergebenen_arr))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/** Check if uid is a supervisor on higher oe level
|
||||
*
|
||||
* @param string $uid
|
||||
|
||||
@@ -977,6 +977,36 @@ class organisationseinheit extends basis_db
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function getRoots()
|
||||
{
|
||||
$qry = "SELECT *
|
||||
FROM public.tbl_organisationseinheit
|
||||
WHERE oe_parent_kurzbz IS NULL AND aktiv
|
||||
ORDER BY organisationseinheittyp_kurzbz, bezeichnung";
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new organisationseinheit();
|
||||
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->oe_parent_kurzbz = $row->oe_parent_kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->organisationseinheittyp_kurzbz = $row->organisationseinheittyp_kurzbz;
|
||||
$obj->aktiv = $this->db_parse_bool($row->aktiv);
|
||||
$obj->mailverteiler = $this->db_parse_bool($row->mailverteiler);
|
||||
$obj->lehre = $this->db_parse_bool($row->lehre);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Organisationseinheiten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -906,6 +906,45 @@ class prestudent extends person
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
)";
|
||||
break;
|
||||
case "bewerberrtangemeldetteilgenommen":
|
||||
$qry.=" AND a.rolle='Bewerber'
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
public.tbl_rt_person
|
||||
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
|
||||
WHERE
|
||||
person_id=a.person_id
|
||||
AND studienplan_id IN (
|
||||
SELECT studienplan_id FROM lehre.tbl_studienplan
|
||||
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
|
||||
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
|
||||
)
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
)
|
||||
AND reihungstestangetreten = true";
|
||||
break;
|
||||
case "bewerberrtangemeldetnichtteilgenommen":
|
||||
$qry.=" AND a.rolle='Bewerber'
|
||||
AND EXISTS (
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
public.tbl_rt_person
|
||||
JOIN public.tbl_reihungstest ON (rt_id = reihungstest_id)
|
||||
WHERE
|
||||
person_id=a.person_id
|
||||
AND studienplan_id IN (
|
||||
SELECT studienplan_id FROM lehre.tbl_studienplan
|
||||
JOIN lehre.tbl_studienordnung USING(studienordnung_id)
|
||||
WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz
|
||||
)
|
||||
AND tbl_reihungstest.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
|
||||
)
|
||||
AND reihungstestangetreten = false
|
||||
";
|
||||
break;
|
||||
case "zgv":
|
||||
$stg_obj = new studiengang();
|
||||
$stg_obj->load($studiengang_kz);
|
||||
|
||||
@@ -514,6 +514,9 @@ class statistik extends basis_db
|
||||
$this->countRows=0;
|
||||
set_time_limit(120);
|
||||
|
||||
// In case a decryption function is used then perform password substitution
|
||||
$this->sql = $this->replaceSQLDecryptionPassword($this->sql);
|
||||
|
||||
if($this->sql!='')
|
||||
{
|
||||
$sql = $this->sql;
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
/* Copyright (C) 2011 fhcomplete.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Christopher Gerbrich <christopher.gerbrich@technikum-wien.at> and Manuela Thamer <manuela.thamer@technikum-wien.at
|
||||
*/
|
||||
/**
|
||||
* Klasse Studierendenantrag
|
||||
*
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class studierendenantrag extends basis_db
|
||||
{
|
||||
public $new;
|
||||
public $result = array();
|
||||
|
||||
//Tabellenspalten
|
||||
public $studierendenantrag_id; // bigint
|
||||
public $prestudent_id; // bigint
|
||||
public $studiensemester_kurzbz; // varchar(32)
|
||||
public $datum; // timestamp
|
||||
public $typ; // varchar(32)
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // varchar(32)
|
||||
public $datum_wiedereinstieg; // timestamp
|
||||
public $grund; // text
|
||||
public $dms_id; // bigint
|
||||
|
||||
/**
|
||||
* Konstruktor - Laedt optional eine Ampel
|
||||
* @param $amepl_id
|
||||
*/
|
||||
public function __construct($studierendenantrag_id=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if(!is_null($studierendenantrag_id))
|
||||
$this->load($studierendenantrag_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt einen Antrag mit der uebergebenen ID
|
||||
*
|
||||
* @param $studierendenantrag_id
|
||||
* @return boolean
|
||||
*/
|
||||
public function load($studierendenantrag_id)
|
||||
{
|
||||
if(!is_numeric($studierendenantrag_id))
|
||||
{
|
||||
$this->errormsg = 'Studierendenantrag ID ist ungueltig';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = "SELECT * FROM campus.tbl_studierendenantrag WHERE studierendenantrag_id=" . $this->db_add_param($studierendenantrag_id, FHC_INTEGER);
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->studierendenantrag_id = $row->studierendenantrag_id;
|
||||
$this->prestudent_id = $row->prestudent_id;
|
||||
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$this->datum = $row->datum;
|
||||
$this->typ = $row->typ;
|
||||
$this->insertamum = $row->insertamum;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->datum_wiedereinstieg = $row->datum_wiedereinstieg;
|
||||
$this->grund = $row->grund;
|
||||
$this->dms_id = $row->dms_id;
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Studierendenantrag mit dieser ID exisitert nicht';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Studierendenantrag';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt alle aktuellen Anträge eines Users
|
||||
*
|
||||
* @param integer $prestudent_id
|
||||
* @param string $stsem
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function loadUserAntrag($prestudent_id, $stsem = null)
|
||||
{
|
||||
$qry = "SELECT * FROM campus.tbl_studierendenantrag WHERE typ IN ('Abmeldung','AbmeldungStgl','Unterbrechung') AND campus.get_status_studierendenantrag(studierendenantrag_id)='Genehmigt' AND prestudent_id=" . $this->db_add_param($prestudent_id, FHC_INTEGER);
|
||||
|
||||
if ($stsem)
|
||||
{
|
||||
$qry .= " AND studiensemester_kurzbz=" . $this->db_add_param($stsem, FHC_STRING);
|
||||
}
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new studierendenantrag();
|
||||
|
||||
$obj->studierendenantrag_id = $row->studierendenantrag_id;
|
||||
$obj->prestudent_id = $row->prestudent_id;
|
||||
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
|
||||
$obj->datum = $row->datum;
|
||||
$obj->typ = $row->typ;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->datum_wiedereinstieg = $row->datum_wiedereinstieg;
|
||||
$obj->grund = $row->grund;
|
||||
$obj->dms_id = $row->dms_id;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,289 @@
|
||||
<?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 $oe_bezeichnung;
|
||||
public $stundensatztyp_bezeichnung;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAllStundensaetze($uid)
|
||||
{
|
||||
$qry = "SELECT
|
||||
tbl_stundensatz.*,
|
||||
tbl_organisationseinheit.bezeichnung AS oe_bezeichnung,
|
||||
hr.tbl_stundensatztyp.bezeichnung AS stundensatztyp_bezeichnung,
|
||||
tbl_organisationseinheit.oe_kurzbz
|
||||
FROM
|
||||
hr.tbl_stundensatz
|
||||
LEFT JOIN
|
||||
public.tbl_organisationseinheit ON tbl_stundensatz.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz
|
||||
JOIN hr.tbl_stundensatztyp USING(stundensatztyp)
|
||||
WHERE
|
||||
uid = ". $this->db_add_param($uid);
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
while ($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$obj = new stundensatz();
|
||||
$obj->stundensatz_id = $row->stundensatz_id;
|
||||
$obj->uid = $row->uid;
|
||||
$obj->stundensatztyp = $row->stundensatztyp;
|
||||
$obj->stundensatz = $row->stundensatz;
|
||||
$obj->oe_kurzbz = $row->oe_kurzbz;
|
||||
$obj->gueltig_von = $row->gueltig_von;
|
||||
$obj->gueltig_bis = $row->gueltig_bis;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->oe_bezeichnung = $row->oe_bezeichnung;
|
||||
$obj->stundensatztyp_bezeichnung = $row->stundensatztyp_bezeichnung;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function load($stundensatz_id)
|
||||
{
|
||||
$qry = "SELECT
|
||||
tbl_stundensatz.*,
|
||||
tbl_organisationseinheit.bezeichnung AS oe_bezeichnung,
|
||||
hr.tbl_stundensatztyp.bezeichnung AS stundensatztyp_bezeichnung,
|
||||
tbl_organisationseinheit.oe_kurzbz
|
||||
FROM
|
||||
hr.tbl_stundensatz
|
||||
LEFT JOIN public.tbl_organisationseinheit ON tbl_stundensatz.oe_kurzbz = tbl_organisationseinheit.oe_kurzbz
|
||||
JOIN hr.tbl_stundensatztyp USING(stundensatztyp)
|
||||
WHERE
|
||||
stundensatz_id = ".$this->db_add_param($stundensatz_id).";";
|
||||
|
||||
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;
|
||||
$this->oe_bezeichnung = $row->oe_bezeichnung;
|
||||
$this->stundensatztyp_bezeichnung = $row->stundensatztyp_bezeichnung;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden des Datensatzes';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function save($new = null)
|
||||
{
|
||||
if (!$this->validate())
|
||||
return false;
|
||||
|
||||
if(is_null($new))
|
||||
$new = $this->new;
|
||||
|
||||
if ($new)
|
||||
{
|
||||
|
||||
$qry = "BEGIN;INSERT INTO hr.tbl_stundensatz
|
||||
(
|
||||
uid,
|
||||
stundensatz,
|
||||
gueltig_von,
|
||||
gueltig_bis,
|
||||
oe_kurzbz,
|
||||
stundensatztyp,
|
||||
insertamum,
|
||||
insertvon
|
||||
)
|
||||
VALUES
|
||||
(" .
|
||||
$this->db_add_param($this->uid) . "," .
|
||||
$this->db_add_param($this->stundensatz, FHC_INTEGER) . "," .
|
||||
$this->db_add_param($this->gueltig_von) . "," .
|
||||
$this->db_add_param($this->gueltig_bis) . "," .
|
||||
$this->db_add_param($this->oe_kurzbz) . "," .
|
||||
$this->db_add_param($this->stundensatztyp) . "," .
|
||||
$this->db_add_param($this->insertamum) . "," .
|
||||
$this->db_add_param($this->insertvon) .
|
||||
");";
|
||||
}
|
||||
else
|
||||
{
|
||||
$qry = "UPDATE hr.tbl_stundensatz SET " .
|
||||
"stundensatz = " . $this->db_add_param($this->stundensatz, FHC_INTEGER) .",".
|
||||
"oe_kurzbz = " . $this->db_add_param($this->oe_kurzbz) .",".
|
||||
"stundensatztyp = " . $this->db_add_param($this->stundensatztyp) .",".
|
||||
"gueltig_von = " . $this->db_add_param($this->gueltig_von) .",".
|
||||
"gueltig_bis = " . $this->db_add_param($this->gueltig_bis) .",".
|
||||
"updatevon = " . $this->db_add_param($this->updatevon) .",".
|
||||
"updateamum = " . $this->db_add_param($this->updateamum).
|
||||
" WHERE stundensatz_id = " . $this->db_add_param($this->stundensatz_id, FHC_INTEGER).';';
|
||||
}
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if ($new)
|
||||
{
|
||||
$qry = "SELECT currval('hr.tbl_stundensatz_stundensatz_id_seq') as id;";
|
||||
if ($this->db_query($qry))
|
||||
{
|
||||
if ($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->stundensatz_id = $row->id;
|
||||
$this->db_query('COMMIT');
|
||||
return true;
|
||||
} else
|
||||
{
|
||||
$this->db_query('ROLLBACK');
|
||||
$this->errormsg = "Fehler beim Auslesen der Sequence";
|
||||
return false;
|
||||
}
|
||||
} else
|
||||
{
|
||||
$this->db_query('ROLLBACK');
|
||||
$this->errormsg = 'Fehler beim Auslesen der Sequence';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Zuteilen des Eintrages';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function delete($stundensatz_id)
|
||||
{
|
||||
$qry = "DELETE FROM hr.tbl_stundensatz WHERE stundensatz_id = ".$this->db_add_param($stundensatz_id, FHC_INTEGER);
|
||||
|
||||
if($this->db_query($qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Löschen des Stundensatzes';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function validate()
|
||||
{
|
||||
if (!is_numeric($this->stundensatz))
|
||||
{
|
||||
$this->errormsg = "Stundensatz ungueltig";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_null($this->oe_kurzbz))
|
||||
{
|
||||
$this->errormsg = "Unternehmen ungueltig";
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($this->insertamum === '')
|
||||
{
|
||||
$this->errormsg = "Datum ungueltig";
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class stundensatzzyp extends basis_db
|
||||
{
|
||||
public $result = array();
|
||||
|
||||
public $stundensatztyp;
|
||||
public $bezeichnung;
|
||||
public $aktiv;
|
||||
|
||||
public function __construct($stundensatztyp=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($stundensatztyp!=null)
|
||||
$this->load($stundensatztyp);
|
||||
}
|
||||
|
||||
public function load($stundensatzzyp)
|
||||
{
|
||||
$qry = "SELECT *
|
||||
FROM hr.tbl_stundensatztyp
|
||||
WHERE stundensatztyp=". $this->db_add_param($stundensatzzyp);
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->stundensatztyp = $row->stundensatztyp;
|
||||
$this->bezeichnung = $row->bezeichnung;
|
||||
$this->aktiv = $this->db_parse_bool($row->aktiv);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg ="Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getAll($onlyAktiv = true, $order = 'aktiv DESC, bezeichnung')
|
||||
{
|
||||
$qry = "SELECT *
|
||||
FROM hr.tbl_stundensatztyp";
|
||||
|
||||
if ($onlyAktiv)
|
||||
{
|
||||
$qry .= " WHERE aktiv";
|
||||
}
|
||||
|
||||
if($order !== '')
|
||||
$qry .= " ORDER BY ".$order;
|
||||
|
||||
if($this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stundensatzzyp();
|
||||
|
||||
$obj->stundensatztyp = $row->stundensatztyp;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->aktiv = $this->db_parse_bool($row->aktiv);
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,577 @@
|
||||
<?php
|
||||
/* Copyright (C) 2006 Technikum-Wien
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Cristina Hainberger <cristina.hainberger@technikum-wien.at>,
|
||||
*/
|
||||
/**
|
||||
* Klasse Vertragsbestandteil
|
||||
* @create 29.03.2023
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/basis_db.class.php');
|
||||
|
||||
class vertragsbestandteil extends basis_db
|
||||
{
|
||||
public $new; // boolean
|
||||
public $result = array();
|
||||
|
||||
//Tabellenspalten
|
||||
public $vertragsbestandteil_id; // serial
|
||||
public $dienstverhaeltnis_id; // integer
|
||||
public $vertragsbestandteiltyp_kurzbz; // varchar(32)
|
||||
public $von; // date
|
||||
public $bis; // date
|
||||
public $insertamum; // timestamp
|
||||
public $insertvon; // varchar(32)
|
||||
public $updateamum; // timestamp
|
||||
public $updatevon; // varchar(32)
|
||||
|
||||
/**
|
||||
* Konstruktor
|
||||
* @param $vertragsbestandteil_id ID des Vertragsbestandteils, der geladen werden soll (Default=null)
|
||||
*/
|
||||
public function __construct($vertragsbestandteil_id = null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
if($vertragsbestandteil_id != null)
|
||||
$this->load($vertragsbestandteil_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Laedt den Vertragsbestandteil mit der uebergebenen ID.
|
||||
* @return true wenn ok, false im Fehlerfall
|
||||
*/
|
||||
public function load($vertragsbestandteil_id)
|
||||
{
|
||||
$qry = "SELECT * FROM hr.tbl_vertragsbestandteil WHERE vertragsbestandteil_id = ". $this->db_add_param($vertragsbestandteil_id, FHC_INTEGER);
|
||||
|
||||
if (!$this->db_query($qry))
|
||||
{
|
||||
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
|
||||
return false;
|
||||
}
|
||||
|
||||
if($row = $this->db_fetch_object())
|
||||
{
|
||||
$this->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$this->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$this->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
|
||||
$this->von = $row->von;
|
||||
$this->bis = $row->bis;
|
||||
$this->insertvon = $row->insertvon;
|
||||
$this->updateamum = $row->updateamum;
|
||||
$this->updatevon = $row->updatevon;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden';
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob MitarbeiterIn im Monat des uebergebenen $datums zeitaufzeichnungspflichtig ist.
|
||||
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param string $timestamp DD-MM-YYYY
|
||||
* @return bool
|
||||
*/
|
||||
public function isZaPflichtig($mitarbeiter_uid, $datum = null)
|
||||
{
|
||||
|
||||
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
|
||||
|
||||
$qry = 'SELECT
|
||||
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
|
||||
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
|
||||
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
|
||||
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
|
||||
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
|
||||
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
-- Dienstverhältnis(se) des Mitarbeiters
|
||||
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
-- Zeitaufzeichnungspflichtig...
|
||||
AND zeitaufzeichnung = TRUE
|
||||
-- ...im aktuellen Monat (default) oder im Monat des übergebenen $datums
|
||||
AND ((date_trunc(\'month\', '. $timestamp. ')::date < vbt.bis AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von) OR (vbt.bis IS NULL AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von))
|
||||
-- Vorerst nur check, ob zumindest eine aufrechte Zeitaufzeichnungspflicht. Später Unterscheidung nach Dienstverhältnis.
|
||||
ORDER BY vbt.von DESC --aktuellster
|
||||
LIMIT 1';
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
|
||||
$obj->azgrelevant = $row->azgrelevant;
|
||||
$obj->homeoffice = $row->homeoffice;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle Vertragsbestandteile, die eine Zeitaufzeichnungspflicht haben.
|
||||
*
|
||||
* Set order DESC limit 1 to retrieve only most recent Vertragsbestandteil.
|
||||
* Set order ASC limit 1 to retrieve only first Vertragsbestandteil.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param string $order
|
||||
* @param null $limit
|
||||
* @return bool
|
||||
*/
|
||||
public function getZaPflichtig($mitarbeiter_uid, $order = 'DESC', $limit = null)
|
||||
{
|
||||
if ($order !== 'ASC' && $order !== 'DESC')
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Laden der Daten';
|
||||
return false;
|
||||
}
|
||||
|
||||
$qry = 'SELECT
|
||||
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
|
||||
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
|
||||
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
|
||||
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
|
||||
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
|
||||
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
-- Dienstverhältnis(se) des Mitarbeiters
|
||||
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
-- Zeitaufzeichnungspflichtig
|
||||
AND zeitaufzeichnung = TRUE
|
||||
-- Vertragsbestandteile sind aktuell, liegen nach dem GoLive und starten vor dem aktuellen Monatsletzten
|
||||
AND(
|
||||
(COALESCE(vbt.bis, NOW()::date) > '. $this->db_add_param(CASETIME_TIMESHEET_GOLIVE). '::date) AND
|
||||
(vbt.von < (date_trunc(\'month\', NOW()) + interval \'1 month - 1 day\')::date)
|
||||
)
|
||||
ORDER BY vbt.von ' . $order;
|
||||
|
||||
|
||||
if (!is_null($limit))
|
||||
{
|
||||
$qry .= ' LIMIT ' . $this->db_add_param($limit, FHC_INTEGER);
|
||||
}
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
|
||||
$obj->azgrelevant = $row->azgrelevant;
|
||||
$obj->homeoffice = $row->homeoffice;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob MitarbeiterIn am Tag des uebergebenen $datums AZG-relevant ist.
|
||||
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param string $timestamp DD-MM-YYYY
|
||||
* @return bool
|
||||
*/
|
||||
public function isAzgRelevant($mitarbeiter_uid, $datum = null)
|
||||
{
|
||||
|
||||
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
|
||||
|
||||
$qry = 'SELECT
|
||||
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
|
||||
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
|
||||
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
|
||||
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
|
||||
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
|
||||
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
-- Dienstverhältnis(se) des Mitarbeiters
|
||||
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
-- AZG-relevant...
|
||||
AND azgrelevant = TRUE
|
||||
-- ...am aktuellen Tag (default) oder am Tag des übergebenen $datums
|
||||
AND (
|
||||
(' . $timestamp . '::date BETWEEN vbt.von AND vbt.bis)
|
||||
OR
|
||||
(vbt.bis IS NULL AND ' . $timestamp . '::date > vbt.von)
|
||||
)
|
||||
ORDER BY vbt.von DESC --zur Sicherheit: aktuellster
|
||||
LIMIT 1';
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
|
||||
$obj->azgrelevant = $row->azgrelevant;
|
||||
$obj->homeoffice = $row->homeoffice;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob MitarbeiterIn am Tag des uebergebenen $datums Homeoffice aktiv gesetzt hat.
|
||||
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param string $timestamp DD-MM-YYYY
|
||||
* @return bool
|
||||
*/
|
||||
public function hasHomeoffice($mitarbeiter_uid, $datum = null)
|
||||
{
|
||||
|
||||
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
|
||||
|
||||
$qry = 'SELECT
|
||||
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
|
||||
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
|
||||
vbtza.zeitaufzeichnung, vbtza.azgrelevant, vbtza.homeoffice
|
||||
FROM hr.tbl_vertragsbestandteil_zeitaufzeichnung vbtza
|
||||
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
|
||||
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
-- Dienstverhältnis(se) des Mitarbeiters
|
||||
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
-- Homeoffice...
|
||||
AND homeoffice = TRUE
|
||||
-- ...am aktuellen Tag (default) oder am Tag des übergebenen $datums
|
||||
AND (
|
||||
(' . $timestamp . '::date BETWEEN vbt.von AND vbt.bis)
|
||||
OR
|
||||
(vbt.bis IS NULL AND ' . $timestamp . '::date >= vbt.von)
|
||||
)
|
||||
ORDER BY vbt.von DESC -- Zur Sicherheit: aktuellster
|
||||
LIMIT 1';
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->zeitaufzeichnung = $row->zeitaufzeichnung;
|
||||
$obj->azgrelevant = $row->azgrelevant;
|
||||
$obj->homeoffice = $row->homeoffice;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob MitarbeiterIn im Monat des uebergebenen $datums einen Allin Vertragsbestandteil hat.
|
||||
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param string $datum
|
||||
* @return bool
|
||||
*/
|
||||
public function isAllin($mitarbeiter_uid, $datum = null)
|
||||
{
|
||||
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
|
||||
|
||||
$qry = 'SELECT
|
||||
vbt.vertragsbestandteil_id, vbt.dienstverhaeltnis_id, vbt.vertragsbestandteiltyp_kurzbz,
|
||||
vbt.von, vbt.bis, vbt.insertamum, vbt.insertvon, vbt.updateamum, vbt.updatevon,
|
||||
vbtft.freitexttyp_kurzbz, vbtftt.bezeichnung, vbtft.titel, vbtft.anmerkung
|
||||
FROM hr.tbl_vertragsbestandteil_freitext vbtft
|
||||
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
|
||||
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
JOIN hr.tbl_vertragsbestandteil_freitexttyp vbtftt USING (freitexttyp_kurzbz)
|
||||
-- Dienstverhältnis(se) des Mitarbeiters
|
||||
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
-- All-In
|
||||
AND freitexttyp_kurzbz = \'allin\'
|
||||
-- Vertragsbestandteil Freitext ist im Monat des übergebenen $datums
|
||||
AND ((date_trunc(\'month\', '. $timestamp. ')::date < vbt.bis AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von) OR (vbt.bis IS NULL AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von))
|
||||
-- Vorerst nur check, ob zumindest ein aufrechter Allin Vertragsbestandteil. Später Unterscheidung nach Dienstverhältnis.
|
||||
--ORDER BY vbt.von DESC -- aktuellster
|
||||
LIMIT 1';
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$obj->dienstverhaeltnis_id = $row->dienstverhaeltnis_id;
|
||||
$obj->vertragsbestandteiltyp_kurzbz = $row->vertragsbestandteiltyp_kurzbz;
|
||||
$obj->von = $row->von;
|
||||
$obj->bis = $row->bis;
|
||||
$obj->insertamum = $row->insertamum;
|
||||
$obj->insertvon = $row->insertvon;
|
||||
$obj->updateamum = $row->updateamum;
|
||||
$obj->updatevon = $row->updatevon;
|
||||
$obj->freitexttyp_kurzbz = $row->freitexttyp_kurzbz;
|
||||
$obj->bezeichnung = $row->bezeichnung;
|
||||
$obj->titel = $row->titel;
|
||||
$obj->anmerkung = $row->anmerkung;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft, ob MitarbeiterIn zum Abfragedatum karenziert ist.
|
||||
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param null $datum
|
||||
* @return bool
|
||||
*/
|
||||
public function isKarenziert($mitarbeiter_uid, $datum = null)
|
||||
{
|
||||
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
|
||||
|
||||
$qry = '
|
||||
SELECT
|
||||
1
|
||||
FROM
|
||||
hr.tbl_vertragsbestandteil vbt
|
||||
JOIN
|
||||
hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
WHERE
|
||||
dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
AND
|
||||
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
|
||||
AND
|
||||
vbt.von::date <= '. $timestamp. '::date
|
||||
AND
|
||||
vbt.bis::date >= '. $timestamp. '::date
|
||||
';
|
||||
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Arbeits-Wochenstunden eines/r MitarbeiterIn im Monat des uebergebenen $datums. Karenzierte Dienstverhältnisse
|
||||
* werden nicht zurückgegeben. Dafür aber ein eventuelles 2.DV mit geringfügiger Beschäftigung neben der Karenz.
|
||||
* Wenn kein Datum übergeben wird, wird das heutige Datum gesetzt.
|
||||
*
|
||||
* @param $mitarbeiter_uid
|
||||
* @param null $datum
|
||||
* @return bool
|
||||
*/
|
||||
public function getWochenstunden($mitarbeiter_uid, $datum = null)
|
||||
{
|
||||
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
|
||||
|
||||
$qry = 'SELECT
|
||||
vbtstd.vertragsbestandteil_id,
|
||||
vbtstd.wochenstunden,
|
||||
vbtstd.teilzeittyp_kurzbz
|
||||
FROM hr.tbl_vertragsbestandteil_stunden vbtstd
|
||||
JOIN hr.tbl_vertragsbestandteil vbt USING (vertragsbestandteil_id)
|
||||
JOIN hr.tbl_dienstverhaeltnis dv USING (dienstverhaeltnis_id)
|
||||
-- Dienstverhältnis(se) des Mitarbeiters
|
||||
WHERE dv.mitarbeiter_uid = '. $this->db_add_param($mitarbeiter_uid). '
|
||||
-- Vertragsbestandteil ist im Monat des übergebenen $datums
|
||||
AND ((date_trunc(\'month\', '. $timestamp. ')::date < vbt.bis AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von) OR (vbt.bis IS NULL AND (date_trunc(\'month\', '. $timestamp. ') + interval \'1 month - 1 day\')::date > vbt.von))
|
||||
-- DV mit Vertragsbestandteile Karenz herausnehmen, weil die Wochenstunden dieser DV dann ruhen
|
||||
AND (
|
||||
SELECT
|
||||
COUNT(*) AS karenzen
|
||||
FROM
|
||||
hr.tbl_vertragsbestandteil vbt
|
||||
WHERE
|
||||
vbt.dienstverhaeltnis_id = dv.dienstverhaeltnis_id
|
||||
AND
|
||||
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
|
||||
AND
|
||||
vbt.von::date <= '. $timestamp. '::date
|
||||
AND
|
||||
vbt.bis::date >= '. $timestamp. '::date
|
||||
) = 0
|
||||
ORDER BY vbt.von DESC -- aktuellster
|
||||
LIMIT 1';
|
||||
|
||||
if ($result = $this->db_query($qry))
|
||||
{
|
||||
if ($this->db_num_rows($result) > 0)
|
||||
{
|
||||
$this->result = array();
|
||||
|
||||
while ($row = $this->db_fetch_object())
|
||||
{
|
||||
$obj = new stdClass();
|
||||
|
||||
$obj->vertragsbestandteil_id = $row->vertragsbestandteil_id;
|
||||
$obj->wochenstunden = $row->wochenstunden;
|
||||
$obj->teilzeittyp_kurzbz = $row->teilzeittyp_kurzbz;
|
||||
|
||||
$this->result[] = $obj;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
require_once('zeitaufzeichnung_import.class.php');
|
||||
require_once('../../../include/organisationseinheit.class.php');
|
||||
require_once('../../../include/vertragsbestandteil.class.php');
|
||||
|
||||
/**
|
||||
* Description of zeitaufzeichnung_csv_import
|
||||
@@ -348,17 +349,16 @@ class zeitaufzeichnung_import_csv extends zeitaufzeichnung_import {
|
||||
if (strtolower($data[self::HOMEOFFICE]) == 'true') {
|
||||
// check, ob homeoffice gemäß Bisverwendung
|
||||
$vonCSV = $this->datum->formatDatum($data[self::STARTDT], 'Y-m-d');
|
||||
$verwendung = new bisverwendung();
|
||||
$verwendung->getVerwendungDatum($data[self::USER], $vonCSV);
|
||||
|
||||
foreach ($verwendung->result as $v) {
|
||||
if ($v->homeoffice) {
|
||||
$this->zeit->homeoffice = true;
|
||||
} else {
|
||||
$this->addWarning($this->p->t("zeitaufzeichnung/homeofficeNichtErlaubt", [$vonCSV]));
|
||||
$this->zeit->homeoffice = false;
|
||||
}
|
||||
}
|
||||
$vbt = new vertragsbestandteil();
|
||||
$homeoffice = $vbt->hasHomeoffice($data[self::USER], $vonCSV);
|
||||
|
||||
if ($homeoffice) {
|
||||
$this->zeit->homeoffice = true;
|
||||
} else {
|
||||
$this->addWarning($this->p->t("zeitaufzeichnung/homeofficeNichtErlaubt", [$vonCSV]));
|
||||
$this->zeit->homeoffice = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+163
-144
@@ -25,23 +25,23 @@ require_once(dirname(__FILE__).'/sprache.class.php');
|
||||
class zgv extends basis_db
|
||||
{
|
||||
|
||||
public $zgv_code;
|
||||
public $zgv_bez;
|
||||
public $zgv_kurzbz;
|
||||
public $zgv_code;
|
||||
public $zgv_bez;
|
||||
public $zgv_kurzbz;
|
||||
|
||||
public $zgvmas_code;
|
||||
public $zgvmas_bez;
|
||||
public $zgvmas_kurzbz;
|
||||
public $zgvmas_code;
|
||||
public $zgvmas_bez;
|
||||
public $zgvmas_kurzbz;
|
||||
|
||||
public $zgvdoktor_code;
|
||||
public $zgvdoktor_bez;
|
||||
public $zgvdoktor_kurzbz;
|
||||
public $zgvdoktor_code;
|
||||
public $zgvdoktor_bez;
|
||||
public $zgvdoktor_kurzbz;
|
||||
|
||||
public $bezeichnung;
|
||||
public $bezeichnung;
|
||||
|
||||
public $result = array();
|
||||
public $result = array();
|
||||
|
||||
public function __construct($zgv_code=null)
|
||||
public function __construct($zgv_code=null)
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
@@ -49,155 +49,174 @@ class zgv extends basis_db
|
||||
$this->load($zgv_code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lädt eine zgv von tbl_zgv
|
||||
* @param $zgv_code
|
||||
* @return boolean
|
||||
*/
|
||||
public function load($zgv_code)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv WHERE zgv_code = '.$this->db_add_param($zgv_code, FHC_INTEGER).';';
|
||||
/**
|
||||
* Lädt eine zgv von tbl_zgv
|
||||
* @param $zgv_code
|
||||
* @return boolean
|
||||
*/
|
||||
public function load($zgv_code)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv WHERE zgv_code = '.$this->db_add_param($zgv_code, FHC_INTEGER).';';
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->zgv_code = $row->zgv_code;
|
||||
$this->zgv_bez = $row->zgv_bez;
|
||||
$this->zgv_kurzbz = $row->zgv_kurzbz;
|
||||
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->zgv_code = $row->zgv_code;
|
||||
$this->zgv_bez = $row->zgv_bez;
|
||||
$this->zgv_kurzbz = $row->zgv_kurzbz;
|
||||
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lädt eine Master-ZGV von tbl_zgvmaster
|
||||
* @param $zgvmas_code
|
||||
* @return boolean
|
||||
*/
|
||||
public function load_mas($zgvmas_code)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster WHERE zgvmas_code = '.$this->db_add_param($zgvmas_code, FHC_INTEGER).';';
|
||||
* Lädt eine Master-ZGV von tbl_zgvmaster
|
||||
* @param $zgvmas_code
|
||||
* @return boolean
|
||||
*/
|
||||
public function load_mas($zgvmas_code)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster WHERE zgvmas_code = '.$this->db_add_param($zgvmas_code, FHC_INTEGER).';';
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->zgvmas_code = $row->zgvmas_code;
|
||||
$this->zgvmas_bez = $row->zgvmas_bez;
|
||||
$this->zgvmas_kurzbz = $row->zgvmas_kurzbz;
|
||||
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
if($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$this->zgvmas_code = $row->zgvmas_code;
|
||||
$this->zgvmas_bez = $row->zgvmas_bez;
|
||||
$this->zgvmas_kurzbz = $row->zgvmas_kurzbz;
|
||||
$this->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* lädt alle ZGVs von tbl_zgv
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAll($onlyAktiv = false)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry ='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv';
|
||||
|
||||
/**
|
||||
* lädt alle ZGVs von tbl_zgv
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAll()
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry ='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgv;';
|
||||
if ($onlyAktiv === true)
|
||||
{
|
||||
$qry .= " WHERE aktiv";
|
||||
}
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$zgv = new zgv();
|
||||
$zgv->zgv_code = $row->zgv_code;
|
||||
$zgv->zgv_bez = $row->zgv_bez;
|
||||
$zgv->zgv_kurzbz = $row->zgv_kurzbz;
|
||||
$zgv->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
$qry .= " ORDER BY zgv_bez";
|
||||
|
||||
$this->result[] = $zgv;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$zgv = new zgv();
|
||||
$zgv->zgv_code = $row->zgv_code;
|
||||
$zgv->zgv_bez = $row->zgv_bez;
|
||||
$zgv->zgv_kurzbz = $row->zgv_kurzbz;
|
||||
$zgv->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
|
||||
/**
|
||||
* Lädt alle Master ZGVs von tbl_zgvmaster
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAllMaster()
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster;';
|
||||
$this->result[] = $zgv;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$zgv_master = new zgv();
|
||||
/**
|
||||
* Lädt alle Master ZGVs von tbl_zgvmaster
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAllMaster($onlyAktiv = false)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry = 'SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvmaster';
|
||||
|
||||
$zgv_master->zgvmas_code = $row->zgvmas_code;
|
||||
$zgv_master->zgvmas_bez = $row->zgvmas_bez;
|
||||
$zgv_master->zgvmas_kurzbz = $row->zgvmas_kurzbz;
|
||||
$zgv_master->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
if ($onlyAktiv === true)
|
||||
{
|
||||
$qry .= " WHERE aktiv";
|
||||
}
|
||||
|
||||
$this->result[] = $zgv_master;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$qry .= " ORDER BY zgvmas_bez";
|
||||
|
||||
/**
|
||||
* Lädt alle Doktor ZGVs von tbl_zgvdoktor
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAllDoktor()
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvdoktor;';
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row = $this->db_fetch_object($result))
|
||||
{
|
||||
$zgv_master = new zgv();
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row= $this->db_fetch_object($result))
|
||||
{
|
||||
$zgv_doktor = new zgv();
|
||||
$zgv_master->zgvmas_code = $row->zgvmas_code;
|
||||
$zgv_master->zgvmas_bez = $row->zgvmas_bez;
|
||||
$zgv_master->zgvmas_kurzbz = $row->zgvmas_kurzbz;
|
||||
$zgv_master->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
|
||||
$zgv_doktor->zgvdoktor_code = $row->zgvdoktor_code;
|
||||
$zgv_doktor->zgvdoktor_bez = $row->zgvdoktor_bez;
|
||||
$zgv_doktor->zgvdoktor_kurzbz = $row->zgvdoktor_kurzbz;
|
||||
$zgv_doktor->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
$this->result[] = $zgv_master;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler bei der Abfrage aufgetreten';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$this->result[] = $zgv_doktor;
|
||||
}
|
||||
/**
|
||||
* Lädt alle Doktor ZGVs von tbl_zgvdoktor
|
||||
* @return boolean
|
||||
*/
|
||||
public function getAllDoktor($onlyAktiv = false)
|
||||
{
|
||||
$sprache = new sprache();
|
||||
$qry='SELECT *,'.$sprache->getSprachQuery('bezeichnung').' FROM bis.tbl_zgvdoktor;';
|
||||
|
||||
if ($onlyAktiv === true)
|
||||
{
|
||||
$qry .= " WHERE aktiv";
|
||||
}
|
||||
|
||||
$qry .= " ORDER BY zgvdoktor_bez";
|
||||
|
||||
|
||||
if($result = $this->db_query($qry))
|
||||
{
|
||||
while($row= $this->db_fetch_object($result))
|
||||
{
|
||||
$zgv_doktor = new zgv();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->erromsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$zgv_doktor->zgvdoktor_code = $row->zgvdoktor_code;
|
||||
$zgv_doktor->zgvdoktor_bez = $row->zgvdoktor_bez;
|
||||
$zgv_doktor->zgvdoktor_kurzbz = $row->zgvdoktor_kurzbz;
|
||||
$zgv_doktor->bezeichnung=$sprache->parseSprachResult('bezeichnung',$row);
|
||||
|
||||
$this->result[] = $zgv_doktor;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->erromsg = "Fehler bei der Abfrage aufgetreten";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user