14774 Zeiterfassung: Homeoffice im CSV Import

This commit is contained in:
ma0068
2021-09-02 11:24:38 +02:00
parent 62cfa27473
commit f0c5c3acb4
3 changed files with 103 additions and 10 deletions
+99 -10
View File
@@ -47,6 +47,7 @@ class bisverwendung extends basis_db
public $dv_art;
public $inkludierte_lehre;
public $zeitaufzeichnungspflichtig;
public $azgrelevant;
public $homeoffice;
public $ba1bez;
@@ -123,6 +124,7 @@ class bisverwendung extends basis_db
$this->dv_art = $row->dv_art;
$this->inkludierte_lehre = $row->inkludierte_lehre;
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
return true;
}
@@ -179,6 +181,24 @@ class bisverwendung extends basis_db
}
}
/**
* Prueft das Datum
* @param $date = string
* @return true wenn ok, sonst false
*/
static public function verifyDate($date, $strict = true)
{
$dateTime = DateTime::createFromFormat('Y-m-d', $date);
if ($strict) {
$errors = DateTime::getLastErrors();
if (!empty($errors['warning_count'])) {
return false;
}
}
return $dateTime !== false;
}
/**
* Prueft die Daten vor dem Speichern
*
@@ -191,6 +211,17 @@ class bisverwendung extends basis_db
$this->errormsg = 'Vertragsstunden sind ungueltig';
return false;
}
elseif(!$this->verifyDate($this->beginn) && !empty($this->beginn))
{
$this->errormsg = 'Start Datum ist kein Valides Datum: '.$this->beginn;
return false;
}
elseif(!$this->verifyDate($this->ende) && !empty($this->ende))
{
$this->errormsg = 'End Datum ist kein Valides Datum: '.$this->ende;
return false;
}
return true;
}
@@ -220,13 +251,29 @@ class bisverwendung extends basis_db
{
$zeitaufzeichnungspflichtig = 'null';
}
if(is_bool($this->azgrelevant))
{
$azgrelevant = $this->db_add_param($this->azgrelevant, FHC_BOOLEAN);
}
else
{
$azgrelevant = 'null';
}
if(is_bool($this->homeoffice))
{
$homeoffice = $this->db_add_param($this->homeoffice, FHC_BOOLEAN);
}
else
{
$homeoffice = 'null';
}
if($new)
{
//Neuen Datensatz anlegen
$qry = "BEGIN;INSERT INTO bis.tbl_bisverwendung (ba1code, ba2code, beschausmasscode,
verwendung_code, mitarbeiter_uid, hauptberufcode, hauptberuflich, habilitation, beginn, ende, vertragsstunden,
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig) VALUES (".
updateamum, updatevon, insertamum, insertvon, dv_art, inkludierte_lehre, zeitaufzeichnungspflichtig, azgrelevant) VALUES (".
$this->db_add_param($this->ba1code, FHC_INTEGER).', '.
$this->db_add_param($this->ba2code, FHC_INTEGER).', '.
$this->db_add_param($this->beschausmasscode, FHC_INTEGER).', '.
@@ -244,7 +291,9 @@ class bisverwendung extends basis_db
$this->db_add_param($this->insertvon).', '.
$this->db_add_param($this->dv_art).','.
$this->db_add_param($this->inkludierte_lehre).','.
$zeitaufzeichnungspflichtig. ');';
$zeitaufzeichnungspflichtig.','.
$azgrelevant.','.
$homeoffice. ');';
}
else
@@ -268,7 +317,9 @@ class bisverwendung extends basis_db
" insertvon=".$this->db_add_param($this->insertvon).",".
" dv_art=".$this->db_add_param($this->dv_art).",".
" inkludierte_lehre=".$this->db_add_param($this->inkludierte_lehre).",".
" zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.
" zeitaufzeichnungspflichtig=". $zeitaufzeichnungspflichtig.",".
" azgrelevant =". $azgrelevant.",".
" homeoffice =". $homeoffice.
" WHERE bisverwendung_id=".$this->db_add_param($this->bisverwendung_id, FHC_INTEGER);
}
@@ -361,8 +412,8 @@ class bisverwendung extends basis_db
$obj->dv_art = $row->dv_art;
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
return true;
@@ -419,6 +470,7 @@ class bisverwendung extends basis_db
$obj->dv_art = $row->dv_art;
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
@@ -478,9 +530,9 @@ class bisverwendung extends basis_db
$obj->dv_art = $row->dv_art;
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
return true;
@@ -499,14 +551,15 @@ class bisverwendung extends basis_db
*/
public function getLastVerwendung($uid)
{
//laden des Datensatzes18.08.2021
//laden des Datensatzes
$qry = "SELECT
*
*, tbl_hauptberuf.bezeichnung as hauptberuf
FROM
bis.tbl_bisverwendung
LEFT JOIN bis.tbl_hauptberuf USING(hauptberufcode)
WHERE
mitarbeiter_uid=".$this->db_add_param($uid)."
ORDER BY ende DESC NULLS LAST,beginn DESC NULLS LAST LIMIT 1;";
ORDER BY ende DESC NULLS FIRST,beginn DESC NULLS LAST LIMIT 1;";
if($this->db_query($qry))
{
@@ -520,6 +573,7 @@ class bisverwendung extends basis_db
$this->mitarbeiter_uid = $row->mitarbeiter_uid;
$this->hauptberufcode = $row->hauptberufcode;
$this->hauptberuflich = $this->db_parse_bool($row->hauptberuflich);
$this->hauptberuf = $row->hauptberuf;
$this->habilitation = $this->db_parse_bool($row->habilitation);
$this->beginn = $row->beginn;
$this->ende = $row->ende;
@@ -531,6 +585,8 @@ class bisverwendung extends basis_db
$this->dv_art = $row->dv_art;
$this->inkludierte_lehre = $row->inkludierte_lehre;
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
}
return true;
}
@@ -559,7 +615,7 @@ class bisverwendung extends basis_db
(beginn<=now() OR beginn IS NULL)
AND
(ende>=now() OR ende IS NULL)
ORDER BY ende DESC NULLS LAST,beginn DESC NULLS LAST LIMIT 1;";
ORDER BY ende DESC NULLS FIRST,beginn DESC NULLS LAST LIMIT 1;";
if($this->db_query($qry))
{
@@ -583,8 +639,9 @@ class bisverwendung extends basis_db
$this->vertragsstunden = $row->vertragsstunden;
$this->dv_art = $row->dv_art;
$this->inkludierte_lehre = $row->inkludierte_lehre;
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$this->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$this->homeoffice = $this->db_parse_bool($row->homeoffice);
}
return true;
}
@@ -647,6 +704,8 @@ class bisverwendung extends basis_db
$obj->dv_art = $row->dv_art;
$obj->inkludierte_lehre = $row->inkludierte_lehre;
$obj->zeitaufzeichnungspflichtig = $this->db_parse_bool($row->zeitaufzeichnungspflichtig);
$obj->azgrelevant = $this->db_parse_bool($row->azgrelevant);
$obj->homeoffice = $this->db_parse_bool($row->homeoffice);
$this->result[] = $obj;
}
@@ -775,5 +834,35 @@ class bisverwendung extends basis_db
return false;
}
}
public function inZeitaufzeichnungspflichtigPeriod($PeriodStartDate, $PeriodEndDate)
{
$PeriodStartDateISO = date('Y-m-d', strtotime($PeriodStartDate));
$PeriodEndDateISO = date('Y-m-d', strtotime($PeriodEndDate));
$beginn = date('Y-m-d', strtotime($this->beginn));
$end = date('Y-m-d', strtotime($this->ende));
$zp = $this->zeitaufzeichnungspflichtig;
if ($zp)
{
if (
(($PeriodStartDateISO >= $beginn) && (($PeriodStartDateISO <= $end) || is_null($this->ende)))
||
(($PeriodEndDateISO >= $beginn) && (($PeriodEndDateISO <= $end) || is_null($this->ende)))
)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
?>
+2
View File
@@ -7,6 +7,7 @@ $this->phrasen['zeitaufzeichnung/projekt']='Projekt';
$this->phrasen['zeitaufzeichnung/projektphase']='Projektphase';
$this->phrasen['zeitaufzeichnung/keineAuswahl']='keine Auswahl';
$this->phrasen['zeitaufzeichnung/aktivitaet']='Aktivität';
$this->phrasen['zeitaufzeichnung/homeoffice']='Homeoffice';
$this->phrasen['zeitaufzeichnung/id']='ID';
$this->phrasen['zeitaufzeichnung/user']='User';
$this->phrasen['zeitaufzeichnung/start']='Start';
@@ -63,3 +64,4 @@ $this->phrasen['zeitaufzeichnung/projektphase']='AP';
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='Pause automatisch einfügen';
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Zeitraum zu kurz für automatische Pause';
$this->phrasen['zeitaufzeichnung/supportAnfragen']='<p><hr>Supportanfragen unter<br><a href="mailto:zeiterfassung@technikum-wien.at">zeiterfassung@technikum-wien.at</a></p>';
$this->phrasen['zeitaufzeichnung/homeofficeNichtErlaubt']='Homeoffice für den Tag %s nicht erlaubt';
+2
View File
@@ -7,6 +7,7 @@ $this->phrasen['zeitaufzeichnung/projekt']='Project';
$this->phrasen['zeitaufzeichnung/projektphase']='Projectphase';
$this->phrasen['zeitaufzeichnung/keineAuswahl']='no selection';
$this->phrasen['zeitaufzeichnung/aktivitaet']='Activity';
$this->phrasen['zeitaufzeichnung/homeoffice']='Homeoffice';
$this->phrasen['zeitaufzeichnung/id']='ID';
$this->phrasen['zeitaufzeichnung/user']='User';
$this->phrasen['zeitaufzeichnung/start']='Start';
@@ -63,3 +64,4 @@ $this->phrasen['zeitaufzeichnung/projektphase']='WP';
$this->phrasen['zeitaufzeichnung/pauseEinfuegen']='insert break automatically';
$this->phrasen['zeitaufzeichnung/zeitraumZuKurz']='Timeslot too short for automatic break.';
$this->phrasen['zeitaufzeichnung/supportAnfragen']='<p><hr>Contact for support<br><a href="mailto:zeiterfassung@technikum-wien.at">zeiterfassung@technikum-wien.at</a></p>';
$this->phrasen['zeitaufzeichnung/homeofficeNichtErlaubt']='Homeoffice for day %s not allowed';