Merge branch 'master' into ReportingFilterParameter

This commit is contained in:
Manfred
2024-03-26 17:24:07 +01:00
126 changed files with 13232 additions and 1533 deletions
+1 -1
View File
@@ -181,7 +181,7 @@ abstract class db extends basis
if (!include(dirname(__FILE__).'/../application/config/'.CI_ENVIRONMENT.'/db_crypt.php')) return null;
// Array that will contains all the DB decryption password
$decryptionPasswordsArray = array();
$decryptionPasswordArray = array();
// Array that will contains all the DB decryption password names
$decryptionPasswordNamesArray = array();
+109
View File
@@ -0,0 +1,109 @@
<?php
/* Copyright (C) 2013 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: Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once(dirname(__FILE__). '/basis_db.class.php');
require_once(dirname(__FILE__). '/sprache.class.php');
require_once(dirname(__FILE__). '/functions.inc.php');
class besqualcode extends basis_db
{
//Objekt besqualcode
public $result = array();
//Tabellenspalten
public $besqualcode;
public $besqualbez;
/**
* Konstruktor - Laedt optional einen besqualcode
* @param char $besqualcode Besqualcode der geladen werden soll.
*/
public function __construct($besqualcode = null)
{
parent::__construct();
if($besqualcode != null)
$this->load($besqualcode);
}
/**
* Liefert alle Lehrmodi aus der table tbl_besqualcode
* @return true wenn ok, false im Fehlerfall
*/
public function getAll()
{
$qry = "SELECT * FROM bis.tbl_besqual";
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$besqualcode = new besqualcode();
$besqualcode->besqualcode = $row->besqualcode;
$besqualcode->besqualbez = $row->besqualbez;
$this->result[] = $besqualcode;
}
return true;
}
else
{
$this->errormsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Laedt einen besqualcode
* @param char $besqualcode ID des Datensatzes der zu laden ist.
* @return true wenn ok, false im Fehlerfall
*/
public function load($besqualcode)
{
$qry = "SELECT
*
FROM
bis.tbl_besqual
WHERE
besqualcode=".$this->db_add_param($besqualcode).";";
if (!$this->db_query($qry))
{
$this->errormsg = 'Fehler beim Lesen vom besqualcode';
return false;
}
if ($row = $this->db_fetch_object())
{
$this->besqualcode = $row->besqualcode;
$this->besqualbez = $row->besqualbez;
}
else
{
$this->errormsg = 'Es ist kein besqualcode mit dieser ID vorhanden';
return false;
}
return true;
}
}
?>
+144 -27
View File
@@ -16,8 +16,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>
* Manuela Thamer <manuela.thamer@technikum-wien.at>
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
@@ -27,7 +28,10 @@ class entwicklungsteam extends basis_db
public $result = array();
//Tabellenspalten
public $entwicklungsteam_id;
public $mitarbeiter_uid;
public $nachname;
public $vorname;
public $studiengang_kz;
public $besqualcode;
public $beginn;
@@ -43,38 +47,40 @@ class entwicklungsteam extends basis_db
/**
* Konstruktor
* @param mitarbeiter_uid ID des zu ladenden Datensatzes
* @param entwicklungsteam_id ID des zu ladenden Datensatzes
* studiengang_kz
*/
public function __construct($mitarbeiter_uid=null, $studiengang_kz=null)
public function __construct($entwicklungsteam_id = null)
{
parent::__construct();
if(!is_null($mitarbeiter_uid) && !is_null($studiengang_kz))
$this->load($mitarbeiter_uid, $studiengang_kz);
if(!is_null($entwicklungsteam_id))
$this->load($entwicklungsteam_id);
}
/**
* Laedt einen Datensatz
* @param mitarbeiter_uid ID des zu ladenden Datensatzes
* studiengang_kz
* @param entwicklungsteam_id ID des zu ladenden Datensatzes
*/
public function load($mitarbeiter_uid, $studiengang_kz)
public function load($entwicklungsteam_id)
{
if(!is_numeric($studiengang_kz) || $studiengang_kz == '')
if(!is_numeric($entwicklungsteam_id))
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
$this->errormsg = 'entwicklungsteam_id muss eine gueltige Zahl sein';
return false;
}
//laden des Datensatzes
$qry = "SELECT * FROM bis.tbl_entwicklungsteam JOIN bis.tbl_besqual USING(besqualcode)
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
WHERE entwicklungsteam_id=".$this->db_add_param($entwicklungsteam_id);
$qry.=";";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->entwicklungsteam_id = $row->entwicklungsteam_id;
$this->mitarbeiter_uid = $row->mitarbeiter_uid;
$this->studiengang_kz = $row->studiengang_kz;
$this->besqualcode = $row->besqualcode;
@@ -103,19 +109,19 @@ class entwicklungsteam extends basis_db
/**
* Loescht einen Datensatz
* @param bisverwendung_id ID des zu loeschenden Datensatzes
* @param entwicklungsteam_id ID des zu loeschenden Datensatzes
* @return true wenn ok, false im Fehlerfall
*/
public function delete($mitarbeiter_uid, $studiengang_kz)
public function delete($entwicklungsteam_id)
{
if(!is_numeric($studiengang_kz) || $studiengang_kz == '')
if(!is_numeric($entwicklungsteam_id))
{
$this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein';
$this->errormsg = 'entwicklungsteam_id muss eine gueltige Zahl sein';
return false;
}
$qry = "DELETE FROM bis.tbl_entwicklungsteam
WHERE mitarbeiter_uid = ".$this->db_add_param($mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
WHERE entwicklungsteam_id = ".$this->db_add_param($entwicklungsteam_id).";";
if($this->db_query($qry))
{
@@ -148,7 +154,12 @@ class entwicklungsteam extends basis_db
}
if($this->besqualcode=='')
{
$this->errormsg = 'BesondereQualifikation muss eingetragen werden';
$this->errormsg = 'Besondere Qualifikation muss eingetragen werden';
return false;
}
if($this->ende != '' && $this->beginn > $this->ende)
{
$this->errormsg = 'Endedatum darf nicht vor Anfangsdatum liegen';
return false;
}
return true;
@@ -160,7 +171,7 @@ class entwicklungsteam extends basis_db
* andernfalls wird der Datensatz mit der ID in $akte_id aktualisiert
* @return true wenn ok, false im Fehlerfall
*/
public function save($new=null)
public function save($new = null)
{
if(!$this->validate())
return false;
@@ -181,7 +192,6 @@ class entwicklungsteam extends basis_db
$this->db_add_param($this->updatevon).', '.
$this->db_add_param($this->insertamum).', '.
$this->db_add_param($this->insertvon).');';
}
else
{
@@ -196,7 +206,7 @@ class entwicklungsteam extends basis_db
" ende=".$this->db_add_param($this->ende).",".
" updateamum=".$this->db_add_param($this->updateamum).",".
" updatevon=".$this->db_add_param($this->updatevon).
" WHERE mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($this->studiengang_kz_old, FHC_INTEGER).";";
" WHERE entwicklungsteam_id=".$this->db_add_param($this->entwicklungsteam_id).";";
}
if($this->db_query($qry))
@@ -215,7 +225,7 @@ class entwicklungsteam extends basis_db
* @param $uid UID des Mitarbeiters
* @return true wenn ok, false wenn Fehler
*/
public function getEntwicklungsteam($mitarbeiter_uid, $studiengang_kz=null)
public function getEntwicklungsteam($mitarbeiter_uid, $studiengang_kz = null)
{
//laden des Datensatzes
$qry = "SELECT * FROM bis.tbl_entwicklungsteam JOIN bis.tbl_besqual USING(besqualcode)
@@ -232,6 +242,7 @@ class entwicklungsteam extends basis_db
{
$obj = new entwicklungsteam();
$obj->entwicklungsteam_id = $row->entwicklungsteam_id;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->besqualcode = $row->besqualcode;
@@ -256,16 +267,15 @@ class entwicklungsteam extends basis_db
}
/**
* Preuft ob der Eintrag schon existiert
* Prueft ob der Eintrag schon existiert
*
* @param $mitarbeiter_uid
* @param $studiengang_kz
* @param entwicklungsteam_id
* @return true wenn vorhanden, false wenn nicht
*/
public function exists($mitarbeiter_uid,$studiengang_kz)
public function exists($entwicklungsteam_id)
{
$qry = "SELECT count(*) as anzahl FROM bis.tbl_entwicklungsteam
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER).";";
WHERE entwicklungsteam_id=".$this->db_add_param($entwicklungsteam_id).";";
if($this->db_query($qry))
{
@@ -288,5 +298,112 @@ class entwicklungsteam extends basis_db
return false;
}
}
/**
* Liefert alle Entwicklungsteameinträge
* @param int $studiengang_kz Studiengangkennzeichen.
* @param char $sort Parameter, nach dem sortiert werden soll.
* @return alle Entwicklungsteameinträge
*/
public function getAll($studiengang_kz = null, $sort = null)
{
$qry = "SELECT e.*, p.nachname, p.vorname FROM bis.tbl_entwicklungsteam e
JOIN public.tbl_benutzer b ON e.mitarbeiter_uid = b.uid
JOIN public.tbl_person p ON b.person_id = p.person_id
";
if ($studiengang_kz != null)
$qry .= " WHERE e.studiengang_kz = ".$this->db_add_param($studiengang_kz);
if ($sort != null)
{
$qry .= " ORDER BY ".$sort;
}
$qry .= ";";
if ($this->db_query($qry))
{
while ($row = $this->db_fetch_object())
{
$obj = new entwicklungsteam();
$obj->entwicklungsteam_id = $row->entwicklungsteam_id;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->nachname = $row->nachname;
$obj->vorname = $row->vorname;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->besqualcode = $row->besqualcode;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Entwicklungsteameinträge.';
return false;
}
}
/*
* Laedt alle Entwicklungsteameintraege eines Mitarbeiters für eine bestimmte Bisperiode
* @param $uid UID des Mitarbeiters
* @param $stichtag Stichtag im Format 'Y-m-d'
* @return true wenn ok, false wenn Fehler
*/
public function getEntwicklungsteamBis($mitarbeiter_uid, $stichtag, $studiengang_kz = null)
{
$datetime = new DateTime($stichtag);
$bismeldung_jahr = $datetime->format('Y');
//laden des Datensatzes
$qry = "SELECT *
FROM bis.tbl_entwicklungsteam
JOIN bis.tbl_besqual USING(besqualcode)
WHERE mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid)."
AND (beginn is NULL OR beginn <= make_date(". $this->db_add_param($bismeldung_jahr). "::INTEGER, 12, 31))
AND (ende is NULL OR ende >= make_date(". $this->db_add_param($bismeldung_jahr). "::INTEGER, 1, 1))";
if($studiengang_kz!=null)
$qry.=" AND studiengang_kz=".$this->db_add_param($studiengang_kz);
$qry.=";";
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$obj = new entwicklungsteam();
$obj->entwicklungsteam_id = $row->entwicklungsteam_id;
$obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$obj->studiengang_kz = $row->studiengang_kz;
$obj->besqualcode = $row->besqualcode;
$obj->beginn = $row->beginn;
$obj->ende = $row->ende;
$obj->updateamum = $row->updateamum;
$obj->updatevon = $row->updatevon;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->ext_id = $row->ext_id;
$obj->besqual = $row->besqualbez;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler bei der Datenbankabfrage';
return false;
}
}
}
?>
+3
View File
@@ -267,6 +267,9 @@ class filter extends basis_db
$html .= '$("#' . $filter->kurzbz . '").datepicker({ dateFormat: \'yy-mm-dd\' });';
$html .= '</script>';
break;
case 'text':
$html .= '<input type="text" id="'.$filter->kurzbz.'" class="form-control" name="'.$filter->kurzbz.'" '.$filter->htmlattr.'>';
break;
}
return $html;
}
+222 -13
View File
@@ -1086,12 +1086,33 @@ class mitarbeiter extends benutzer
funktion_kurzbz='Leitung' AND
(datum_von is null OR datum_von<=now()) AND
(datum_bis is null OR datum_bis>=now()) AND
oe_kurzbz in (SELECT oe_kurzbz
FROM public.tbl_benutzerfunktion
WHERE
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<=now()) AND
(datum_bis is null OR datum_bis>=now())
ORDER BY
(
SELECT
1
FROM
hr.tbl_vertragsbestandteil_funktion
JOIN hr.tbl_vertragsbestandteil vbsfkt USING(vertragsbestandteil_id)
JOIN hr.tbl_vertragsbestandteil vbskarenz USING(dienstverhaeltnis_id)
WHERE
tbl_vertragsbestandteil_funktion.benutzerfunktion_id=tbl_benutzerfunktion.benutzerfunktion_id
AND vbskarenz.vertragsbestandteiltyp_kurzbz='karenz'
AND
(
now()::date BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
OR
now()::date BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
)
) NULLS FIRST LIMIT 1
)
ORDER BY datum_von DESC ";
@@ -1120,6 +1141,138 @@ class mitarbeiter extends benutzer
return $return;
}
/**
* Prueft ob eine Person im angegebenen Zeitraum Vorgesetzter von einem Mitarbeiter ist
* @param $leiter UID der zu pruefenden Leitungsposition
* @param $mitarbeiter UID der zu pruefenden Leitungsposition
* @param $datumvon Von Datum des zu pruefenden Zeitraums
* @param $datumbis BIS Datum des zu pruefenden Zeitraums
*/
public function isVorgesetzterByDate($leiter, $mitarbeiter, $datumvon, $datumbis)
{
// Alle OEs der zu pruefenden Leitungsposition holen (oes_leitung)
// Alle OEs des zu pruefenden Mitarbeiters holen (oes_mitarbeiter)
// OE-Ueberschneidungen pruefen
$qry = "
WITH RECURSIVE
oes_leitung (oe_kurzbz, oe_parent_kurzbz, level) AS
(
SELECT
oe_kurzbz,
oe_parent_kurzbz,
1 as level
FROM
public.tbl_organisationseinheit
WHERE
oe_kurzbz IN (
-- Leitung im Zeitraum X
SELECT oe_kurzbz FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='Leitung'
AND uid=".$this->db_add_param($leiter)."
AND
(
".$this->db_add_param($datumvon)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
OR
".$this->db_add_param($datumbis)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
)
)
UNION ALL
SELECT
o.oe_kurzbz,
o.oe_parent_kurzbz,
oes_leitung.level + 1 as level
FROM
public.tbl_organisationseinheit o, oes_leitung
WHERE
o.oe_parent_kurzbz = oes_leitung.oe_kurzbz
),
oes_mitarbeiter (oe_kurzbz, oe_parent_kurzbz, level) AS
(
SELECT
oe_kurzbz,
oe_parent_kurzbz,
1 as level
FROM
public.tbl_organisationseinheit
WHERE
oe_kurzbz IN (
-- OEZuordnung im Zeitraum X - bevorzugt nicht karenziert
SELECT oe_kurzbz FROM public.tbl_benutzerfunktion
WHERE
funktion_kurzbz='oezuordnung'
AND uid=".$this->db_add_param($mitarbeiter)."
AND (
".$this->db_add_param($datumvon)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
OR
".$this->db_add_param($datumbis)." BETWEEN COALESCE(tbl_benutzerfunktion.datum_von, '1970-01-01') AND COALESCE(tbl_benutzerfunktion.datum_bis, '2170-12-31')
)
ORDER BY
(
SELECT
1
FROM
hr.tbl_vertragsbestandteil_funktion
JOIN hr.tbl_vertragsbestandteil vbsfkt USING(vertragsbestandteil_id)
JOIN hr.tbl_vertragsbestandteil vbskarenz USING(dienstverhaeltnis_id)
WHERE
tbl_vertragsbestandteil_funktion.benutzerfunktion_id=tbl_benutzerfunktion.benutzerfunktion_id
AND vbskarenz.vertragsbestandteiltyp_kurzbz='karenz'
AND
(
".$this->db_add_param($datumvon)." BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
OR
".$this->db_add_param($datumbis)." BETWEEN COALESCE(vbskarenz.von, '1970-01-01') AND COALESCE(vbskarenz.bis, '2170-12-31')
)
) NULLS FIRST LIMIT 1
)
UNION ALL
SELECT
o.oe_kurzbz,
o.oe_parent_kurzbz,
oes_mitarbeiter.level + 1 as level
FROM
public.tbl_organisationseinheit o, oes_mitarbeiter
WHERE
o.oe_kurzbz = oes_mitarbeiter.oe_parent_kurzbz
)
SELECT
oe_kurzbz, level
FROM
oes_leitung
WHERE
oe_kurzbz in (SELECT oe_kurzbz FROM oes_mitarbeiter)
ORDER BY
oe_kurzbz, level
";
if($result = $this->db_query($qry))
{
if($this->db_num_rows($result) > 0)
{
return true;
}
else
{
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Gibt ein Array mit den UIDs der Vorgesetzten zum Zeitpunkt des korrespondierenden Timesheets zurück
* @param $uid
@@ -1139,13 +1292,30 @@ class mitarbeiter extends benutzer
funktion_kurzbz='Leitung' 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($date).")) AND
(datum_bis is null OR (datum_bis>=".$this->db_add_param($date)."))
)
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($date).")) AND
(datum_bis is null OR (datum_bis>=".$this->db_add_param($date)."))
ORDER BY
(
SELECT
1
FROM
hr.tbl_vertragsbestandteil_funktion
JOIN hr.tbl_vertragsbestandteil vbsfkt USING(vertragsbestandteil_id)
JOIN hr.tbl_vertragsbestandteil vbskarenz USING(dienstverhaeltnis_id)
WHERE
tbl_vertragsbestandteil_funktion.benutzerfunktion_id=tbl_benutzerfunktion.benutzerfunktion_id
AND vbskarenz.vertragsbestandteiltyp_kurzbz='karenz'
AND (vbskarenz.von <= ".$this->db_add_param($date)." OR vbskarenz.von is null)
AND (vbskarenz.bis >= ".$this->db_add_param($date)." OR vbskarenz.bis is null)
) NULLS FIRST LIMIT 1
)
ORDER BY datum_von DESC ";
if (is_numeric($limit))
@@ -1719,6 +1889,46 @@ class mitarbeiter extends benutzer
}
/**
* Liefert alle Mitarbeiter*innen
*
* @param $filter
* @return boolean
*/
public function getAll()
{
$qry = '
SELECT
ma.mitarbeiter_uid, p.nachname, p.vorname, b.alias
FROM
public.tbl_mitarbeiter ma
JOIN public.tbl_benutzer b ON (mitarbeiter_uid=uid)
JOIN public.tbl_person p USING(person_id)
ORDER BY p.nachname
';
if($this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$ma_obj = new mitarbeiter();
$ma_obj->nachname = $row->nachname;
$ma_obj->vorname = $row->vorname;
$ma_obj->mitarbeiter_uid = $row->mitarbeiter_uid;
$ma_obj->alias = $row->alias;
$this->maData[] = $ma_obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Generiert nächste freie Personalnummer anhand der sequence tbl_mitarbeiter_personalnummer_seq
* @return string $personalnummer
@@ -1754,7 +1964,7 @@ class mitarbeiter extends benutzer
{
if (is_null($uid))
$uid = $this->uid;
$qry = "
SELECT o.oe_kurzbz AS standardkostenstelle, o.bezeichnung
FROM public.tbl_benutzerfunktion bf
@@ -1771,12 +1981,11 @@ class mitarbeiter extends benutzer
$obj = new StdClass();
$obj->oekurzbz = $row->standardkostenstelle;
$obj->bezeichnung = $row->bezeichnung;
$this->result []= $obj;
}
return true;
}
}
}
?>
+35 -35
View File
@@ -98,7 +98,7 @@ class vertragsbestandteil extends basis_db
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
$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
@@ -108,8 +108,8 @@ class vertragsbestandteil extends basis_db
-- 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 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
@@ -174,7 +174,7 @@ class vertragsbestandteil extends basis_db
return false;
}
$qry = 'SELECT
$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
@@ -184,10 +184,10 @@ class vertragsbestandteil extends basis_db
-- 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 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
(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;
@@ -251,7 +251,7 @@ class vertragsbestandteil extends basis_db
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
$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
@@ -261,11 +261,11 @@ class vertragsbestandteil extends basis_db
-- 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 azgrelevant = TRUE
-- ...am aktuellen Tag (default) oder am Tag des übergebenen $datums
AND (
(' . $timestamp . '::date BETWEEN vbt.von AND vbt.bis)
OR
OR
(vbt.bis IS NULL AND ' . $timestamp . '::date > vbt.von)
)
ORDER BY vbt.von DESC --zur Sicherheit: aktuellster
@@ -324,7 +324,7 @@ class vertragsbestandteil extends basis_db
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
$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
@@ -334,12 +334,12 @@ class vertragsbestandteil extends basis_db
-- 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 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)
OR
(vbt.bis IS NULL AND ' . $timestamp . '::date >= vbt.von)
)
ORDER BY vbt.von DESC -- Zur Sicherheit: aktuellster
LIMIT 1';
@@ -396,7 +396,7 @@ class vertragsbestandteil extends basis_db
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
$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
@@ -467,19 +467,19 @@ class vertragsbestandteil extends basis_db
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = '
SELECT
SELECT
1
FROM
hr.tbl_vertragsbestandteil vbt
JOIN
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
AND
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
AND
vbt.von::date <= '. $timestamp. '::date
AND
AND
vbt.bis::date >= '. $timestamp. '::date
';
@@ -515,7 +515,7 @@ class vertragsbestandteil extends basis_db
{
$timestamp = is_null($datum) ? 'NOW()' : '(date('. $this->db_add_param($datum).'))';
$qry = 'SELECT
$qry = 'SELECT
vbtstd.vertragsbestandteil_id,
vbtstd.wochenstunden,
vbtstd.teilzeittyp_kurzbz
@@ -528,17 +528,17 @@ class vertragsbestandteil extends basis_db
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
SELECT
COUNT(*) AS karenzen
FROM
hr.tbl_vertragsbestandteil vbt
WHERE
vbt.dienstverhaeltnis_id = dv.dienstverhaeltnis_id
AND
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
AND
AND
vbt.vertragsbestandteiltyp_kurzbz = \'karenz\'
AND
vbt.von::date <= '. $timestamp. '::date
AND
AND
vbt.bis::date >= '. $timestamp. '::date
) = 0
ORDER BY vbt.von DESC -- aktuellster
+163 -144
View File
@@ -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';
}
else
{
$this->erromsg = "Fehler bei der Abfrage aufgetreten";
return false;
}
}
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();
$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;
}
}
}
?>