From a86111a8032d1d4c3ae70ccb43afb9c5ff508989 Mon Sep 17 00:00:00 2001 From: Gerald Raab Date: Mon, 2 Jul 2018 15:21:52 +0200 Subject: [PATCH] Timesheet: Ersatzruhe, LehreExtern, Dienstreise --- cis/private/tools/zeitaufzeichnung.php | 64 +++++++++++++++++++++++--- include/zeitaufzeichnung.class.php | 60 +++++++++++++++++++++++- locale/de-AT/zeitaufzeichnung.php | 2 +- locale/en-US/zeitaufzeichnung.php | 2 +- 4 files changed, 118 insertions(+), 10 deletions(-) mode change 100644 => 100755 locale/de-AT/zeitaufzeichnung.php mode change 100644 => 100755 locale/en-US/zeitaufzeichnung.php diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 9507b0f89..46842aab8 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -91,12 +91,12 @@ $fieldheadings = array( if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung')) { $za_simple = 0; - $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde', 'Ersatzruhe'); + $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); } else { $za_simple = 1; - $activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde', 'Ersatzruhe'); + $activities = array('Arbeit', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'DienstreiseMT', 'Behoerde', 'Ersatzruhe'); } $activities_str = "'".implode("','", $activities)."'"; @@ -415,9 +415,13 @@ echo ' bisDatum=Jahr+\'\'+Monat+\'\'+Tag+\'\'+Stunde+\'\'+Minute; diff=bisDatum-vonDatum; + a = document.getElementById("aktivitaet"); + akt = a.options[a.selectedIndex].value; + //alert(akt); + if (bisDatum>vonDatum) { - if (diff>9999) + if (diff>9999 && akt != "DienstreiseMT") { Check = confirm("'.$p->t("zeitaufzeichnung/zeitraumAuffallendHoch").'"); document.getElementById("bis_datum").focus(); @@ -741,7 +745,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) // An der FHTW wird ins Moodle verlinkt if (CAMPUS_NAME == 'FH Technikum Wien') echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; - else + else echo '

'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'

'; } if ($p->t("dms_link/fiktiveNormalarbeitszeit")!='') @@ -904,7 +908,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) // $qry = "SELECT * FROM fue.tbl_aktivitaet where sort != 5 or sort is null ORDER by sort,beschreibung"; if($result = $db->db_query($qry)) { - echo ''; if ($za_simple == 0) echo ''; //else @@ -1077,6 +1081,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) } $summe=0; + $dr = new zeitaufzeichnung(); + $dr->getDienstreisenUser($user); + $dr_arr = $dr->result; + + //var_dump($dr->result); if(count($za->result)>0) { @@ -1108,6 +1117,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) $wochensaldo = '00:00'; $pflichtpause = false; + foreach($za->result as $row) { $datumtag = $datum_obj->formatDatum($row->datum, 'Y-m-d'); @@ -1119,6 +1129,7 @@ if($projekt->getProjekteMitarbeiter($user, true)) $tag = $datumtag; if($tag!=$datumtag) { + //if ($row->uid) //{ if ($datum->formatDatum($tag,'N') == '6' || $datum->formatDatum($tag,'N') == '7') @@ -1188,9 +1199,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) '.$tagessaldo.$erstr.'
'.date('H:i', ($pausesumme-3600)).' '; if ($tag > $sperrdatum) - echo '<-'; + echo '<-'; + + echo ''; + - echo ''; $tag=$datumtag; $tagessumme='00:00'; @@ -1207,6 +1220,9 @@ if($projekt->getProjekteMitarbeiter($user, true)) //{ // echo ''.$datum->formatDatum($row->datum,'D d.m.Y').' '; //} + + + } // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen $datumwoche = $datum_obj->formatDatum($row->datum, 'W'); @@ -1251,6 +1267,37 @@ if($projekt->getProjekteMitarbeiter($user, true)) $ersumme = '00:00'; $ersumme_woche = '00:00'; } + + // Diestreisen NEU + if (array_key_exists($datumtag, $dr_arr)) + { + $colspan=($za_simple)?4:7; + echo ''.$p->t('zeitaufzeichnung/dienstreise'); + if (array_key_exists('start', $dr_arr[$datumtag]) && !array_key_exists('ende', $dr_arr[$datumtag])) + echo ' '.$p->t('global/beginn'); + if (array_key_exists('ende', $dr_arr[$datumtag]) && !array_key_exists('start', $dr_arr[$datumtag])) + echo ' '.$p->t('global/ende'); + echo ''; + echo ''; + if (array_key_exists('start', $dr_arr[$datumtag])) + echo $dr_arr[$datumtag]['start']; + echo ''; + if (array_key_exists('ende', $dr_arr[$datumtag])) + echo $dr_arr[$datumtag]['ende']; + echo ''; + echo ''; + echo ''; + if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) + echo ''.$p->t("global/bearbeiten").''; + echo "\n"; + echo ""; + if(!isset($_GET['filter']) && ($datumtag > $sperrdatum)) + echo ''.$p->t("global/loeschen").''; + echo "\n"; + echo ''; + unset($dr_arr[$datumtag]); + } + if ($row->uid) { $wochensumme = $datum_obj->sumZeit($wochensumme, $row->diff); @@ -1314,8 +1361,11 @@ if($projekt->getProjekteMitarbeiter($user, true)) if ($row->aktivitaet_kurzbz == 'LehreExtern') $extlehrearr[] = array("start"=>$row->start, "ende"=>$row->ende, "diff"=>$row->diff); } + } echo ''; + + if ($alle===false) { echo ' diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php index 07c87cf50..fdd0bcdc1 100755 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -487,7 +487,7 @@ class zeitaufzeichnung extends basis_db $where = "uid=".$this->db_add_param($user); if ($days!='') $where.= " AND ende>(now() - INTERVAL '".$days." days')"; - $where_join = "and z.uid=".$this->db_add_param($user); + $where_join = "and z.aktivitaet_kurzbz != 'DienstreiseMT' and z.uid=".$this->db_add_param($user); if ($days!='') $where_join.= " AND z.ende>(now() - INTERVAL '".$days." days')"; if ($days=='') @@ -540,6 +540,64 @@ class zeitaufzeichnung extends basis_db } } + /** + * Laedt die Zeitaufzeichnungen eines Users aufgefüllt mit lehren Tagen. + * Default: Die letzten 40 Tage + * @param string $user + * @param integer $days deafult: 40 Tage + */ + public function getDienstreisenUser($user, $days='40') + { + $where = "uid=".$this->db_add_param($user); + if ($days!='') + $where.= " AND ende>(now() - INTERVAL '".$days." days')"; + $where .= " AND aktivitaet_kurzbz = 'DienstreiseMT'"; + $qry = "SELECT + zeitaufzeichnung_id, start::date as starttag, TO_CHAR(start, 'HH24:MI') as startzeit, ende::date as endtag, TO_CHAR(ende, 'HH24:MI') as endzeit + FROM campus.tbl_zeitaufzeichnung + where $where + ORDER BY ende DESC + "; + + if($result = $this->db_query($qry)) + { + $dr_arr = array(); + while($row = $this->db_fetch_object($result)) + { + if (array_key_exists($row->starttag, $dr_arr)) + { + $dr_arr[$row->starttag]['start'] = $row->startzeit; + $dr_arr[$row->starttag]['id'] = $row->zeitaufzeichnung_id; + } + else + { + $dr_arr[$row->starttag] = array(); + $dr_arr[$row->starttag]['start'] = $row->startzeit; + $dr_arr[$row->starttag]['id'] = $row->zeitaufzeichnung_id; + } + if (array_key_exists($row->endtag, $dr_arr)) + { + $dr_arr[$row->endtag]['ende'] = $row->endzeit; + $dr_arr[$row->endtag]['id'] = $row->zeitaufzeichnung_id; + } + else + { + $dr_arr[$row->endtag] = array(); + $dr_arr[$row->endtag]['ende'] = $row->endzeit; + $dr_arr[$row->endtag]['id'] = $row->zeitaufzeichnung_id; + } + + $this->result = $dr_arr; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + /** * Löscht sämtliche Einträge eines Users für einen Tag * @param string $user diff --git a/locale/de-AT/zeitaufzeichnung.php b/locale/de-AT/zeitaufzeichnung.php old mode 100644 new mode 100755 index 9a475bc1d..e3a156469 --- a/locale/de-AT/zeitaufzeichnung.php +++ b/locale/de-AT/zeitaufzeichnung.php @@ -57,4 +57,4 @@ $this->phrasen['zeitaufzeichnung/stunden']='Stunden'; $this->phrasen['zeitaufzeichnung/taetigkeit']='Tätigkeit'; $this->phrasen['zeitaufzeichnung/keineprojekte']='keine Projekte vorhanden'; $this->phrasen['zeitaufzeichnung/summe']='Summe:'; -?> +$this->phrasen['zeitaufzeichnung/dienstreise']='Dienstreise'; diff --git a/locale/en-US/zeitaufzeichnung.php b/locale/en-US/zeitaufzeichnung.php old mode 100644 new mode 100755 index e7e92fa11..692e4f5b1 --- a/locale/en-US/zeitaufzeichnung.php +++ b/locale/en-US/zeitaufzeichnung.php @@ -57,4 +57,4 @@ $this->phrasen['zeitaufzeichnung/stunden']='Hours'; $this->phrasen['zeitaufzeichnung/taetigkeit']='Activity'; $this->phrasen['zeitaufzeichnung/keineprojekte']='no projects exist'; $this->phrasen['zeitaufzeichnung/summe']='Sum:'; -?> \ No newline at end of file +$this->phrasen['zeitaufzeichnung/dienstreise']='Business Trip';