mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-16 22:42:16 +00:00
Merge branch 'feature-28269/Zeiterfassung-an-neue-Vertragsstruktur-anpassen' into feature-25562/PV21_Datenbankstruktur_fuer_Vertraege_und_Gehaelter
This commit is contained in:
@@ -46,6 +46,7 @@ require_once('../../../include/studiensemester.class.php');
|
||||
require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/zeitaufzeichnung_import_csv.class.php');
|
||||
require_once('../../../include/zeitaufzeichnung_import_post.class.php');
|
||||
require_once('../../../include/vertragsbestandteil.class.php');
|
||||
|
||||
$sprache = getSprache();
|
||||
$p=new phrasen($sprache);
|
||||
@@ -303,7 +304,7 @@ echo '
|
||||
Monat=Datum.substring(3,5);
|
||||
Jahr=Datum.substring(6,10);
|
||||
var day = Jahr + "-" + Monat + "-" + Tag;
|
||||
checkBisverwendung(day,uid);
|
||||
checkZeitaufzeichnung(day,uid);
|
||||
checkZeitsperre(day,uid);
|
||||
}
|
||||
)
|
||||
@@ -762,14 +763,15 @@ echo '
|
||||
Monat=Datum.substring(3,5);
|
||||
Jahr=Datum.substring(6,10);
|
||||
var checkedDay = Jahr + "-" + Monat + "-" + Tag;
|
||||
checkBisverwendung(checkedDay, uid);
|
||||
checkZeitaufzeichnung(checkedDay, uid);
|
||||
checkZeitsperre(checkedDay, uid);
|
||||
}
|
||||
|
||||
function checkBisverwendung(day, uid)
|
||||
function checkZeitaufzeichnung(day, uid)
|
||||
{
|
||||
/* Checkt nicht mehr Bisverwendung, sondern Vertragsbestandteil Zeitaufzeichnung */
|
||||
$.ajax({
|
||||
url: "zeitaufzeichnung_bisverwendung.php",
|
||||
url: "zeitaufzeichnung_bisverwendung.php",
|
||||
data: {
|
||||
day: day,
|
||||
uid: uid
|
||||
@@ -1395,23 +1397,15 @@ if ($projekt->getProjekteMitarbeiter($user, true))
|
||||
echo '</table>';
|
||||
echo '</td><td valign="top"><span id="zeitsaldo"></span><br>';
|
||||
|
||||
if (defined('DEFAULT_ALLIN_DIENSTVERTRAG') && DEFAULT_ALLIN_DIENSTVERTRAG != '')
|
||||
$vbt = new vertragsbestandteil();
|
||||
$isAllin = $vbt->isAllin($user);
|
||||
|
||||
if ($isAllin)
|
||||
{
|
||||
$bisver = new bisverwendung();
|
||||
$bisver->getLastVerwendung($user);
|
||||
// $ba1code = $bisver->ba1code;
|
||||
$ba1code = null;
|
||||
|
||||
if (in_array($bisver->ba1code, DEFAULT_ALLIN_DIENSTVERTRAG))
|
||||
{
|
||||
echo '<span id="saldoAllin"></span><br><br>';
|
||||
}
|
||||
else
|
||||
echo '<br>';
|
||||
echo '<span id="saldoAllin"></span><br>';
|
||||
}
|
||||
else
|
||||
echo '<br>';
|
||||
|
||||
echo '<br>';
|
||||
|
||||
|
||||
|
||||
@@ -1578,21 +1572,21 @@ if ($projekt->getProjekteMitarbeiter($user, true))
|
||||
$linkInformation = APP_ROOT. 'skin/images/information.png';
|
||||
|
||||
$za = new zeitaufzeichnung();
|
||||
$verwendung = new bisverwendung();
|
||||
|
||||
if ($za->checkPausenErrors($user, $tag))
|
||||
{
|
||||
$verwendung->getVerwendungDatum($user, $tag);
|
||||
foreach ($verwendung->result as $v)
|
||||
$vbt = new vertragsbestandteil();
|
||||
$isAzgrelevant = $vbt->isAzgRelevant($user, $tag);
|
||||
|
||||
if ($isAzgrelevant)
|
||||
{
|
||||
if ($v->azgrelevant)
|
||||
{
|
||||
$pausefehlt_str = '<span style="color:red; font-weight:bold;"> <img src= '. $linkExclamation. '> -- Pause fehlt oder zu kurz -- </span>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$pausefehlt_str = '<span style="color:steelblue; font-weight:bold;"> <img src= '. $linkInformation. '> -- Pause fehlt --</span>';
|
||||
}
|
||||
$pausefehlt_str = '<span style="color:red; font-weight:bold;"> <img src= '. $linkExclamation. '> -- Pause fehlt oder zu kurz -- </span>';
|
||||
}
|
||||
else
|
||||
{
|
||||
$pausefehlt_str = '<span style="color:steelblue; font-weight:bold;"> <img src= '. $linkInformation. '> -- Pause fehlt --</span>';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$tagessaldo = date('H:i', ($tagessaldo));
|
||||
|
||||
@@ -31,7 +31,7 @@ require_once('../../../include/benutzerberechtigung.class.php');
|
||||
require_once('../../../include/mitarbeiter.class.php');
|
||||
require_once('../../../include/zeitaufzeichnung.class.php');
|
||||
require_once('../../../include/projekt.class.php');
|
||||
require_once('../../../include/bisverwendung.class.php');
|
||||
require_once('../../../include/vertragsbestandteil.class.php');
|
||||
|
||||
if ((isset($_GET['uid'])) && (isset($_GET['day'])))
|
||||
{
|
||||
@@ -57,18 +57,8 @@ if ((isset($_GET['uid'])) && (isset($_GET['day'])))
|
||||
|
||||
$day = $_GET['day'];
|
||||
|
||||
$verwendung = new bisverwendung();
|
||||
|
||||
$verwendung->getVerwendungDatum($uid, $day);
|
||||
$homeoffice = false;
|
||||
|
||||
foreach ($verwendung->result as $v)
|
||||
{
|
||||
if ($v->homeoffice)
|
||||
{
|
||||
$homeoffice = true;
|
||||
}
|
||||
}
|
||||
$vbt = new vertragsbestandteil();
|
||||
$homeoffice = $vbt->hasHomeoffice($uid, $day);
|
||||
|
||||
echo json_encode($homeoffice);
|
||||
|
||||
|
||||
@@ -0,0 +1,451 @@
|
||||
<?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 im Monat 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
|
||||
-- ...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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Prueft ob MitarbeiterIn im Monat 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 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
|
||||
-- ...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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user