diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php old mode 100644 new mode 100755 index 97b88a4ea..5d66657c8 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -28,6 +28,7 @@ require_once('../../../include/benutzer.class.php'); require_once('../../../include/studiengang.class.php'); require_once('../../../include/fachbereich.class.php'); require_once('../../../include/zeitaufzeichnung.class.php'); +require_once('../../../include/zeitsperre.class.php'); require_once('../../../include/datum.class.php'); require_once('../../../include/projekt.class.php'); require_once('../../../include/phrasen.class.php'); @@ -35,6 +36,7 @@ require_once('../../../include/organisationseinheit.class.php'); require_once('../../../include/service.class.php'); require_once('../../../include/mitarbeiter.class.php'); require_once('../../../include/betriebsmittelperson.class.php'); +require_once('../../../include/globals.inc.php'); $sprache = getSprache(); $p=new phrasen($sprache); @@ -64,6 +66,10 @@ $filter = (isset($_GET['filter'])?$_GET['filter']:'foo'); $alle = (isset($_POST['alle'])?(isset($_POST['normal'])?false:true):false); $angezeigte_tage = '50'; +$zs = new zeitsperre(); +$zs->getZeitsperrenForZeitaufzeichnung('raab',$angezeigte_tage); +$zeitsperren = $zs->result; + echo ' @@ -660,9 +666,9 @@ if($projekt->getProjekteMitarbeiter($user)) else { if ($alle==true) - $za->getListeUser($user, ''); + $za->getListeUserFull($user, ''); else - $za->getListeUser($user, $angezeigte_tage); + $za->getListeUserFull($user, $angezeigte_tage); } $summe=0; @@ -672,24 +678,24 @@ if($projekt->getProjekteMitarbeiter($user)) //Uebersichtstabelle $woche=date('W'); echo ' - +
- - - - - - - - - - - - + + + + + + + + + + + + '; @@ -704,52 +710,79 @@ if($projekt->getProjekteMitarbeiter($user)) $tagesende = ''; $wochensaldo = '00:00'; $pflichtpause = false; - + foreach($za->result as $row) { - $datumtag = $datum_obj->formatDatum($row->start, 'Y-m-d'); + $datumtag = $datum_obj->formatDatum($row->datum, 'Y-m-d'); + + //echo ''; // Nach jedem Tag eine Summenzeile einfuegen if(is_null($tag)) $tag = $datumtag; if($tag!=$datumtag) { - $style = ''; - $style = 'style="background-color:#DCE4EF; font-size: 8pt;"'; - list($h1, $m1) = explode(':', $pausesumme); - $pausesumme = $h1*3600+$m1*60; - $tagessaldo = $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s'))-$datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s'))-3600; - if ($tagessaldo>18000 && $pflichtpause==false) - { - $pausesumme = $pausesumme+1800; - } - - $tagessaldo = $tagessaldo-$pausesumme; - $tagessaldo = date('H:i', ($tagessaldo)); - echo ' - - - - '; - - $tag=$datumtag; - $tagessumme='00:00'; - $pausesumme='00:00'; - $tagesbeginn = ''; - $tagesende = ''; - $pflichtpause = false; - $wochensaldo = $datum_obj->sumZeit($wochensaldo,$tagessaldo ); + //if ($row->uid) + //{ + if ($datum->formatDatum($tag,'N') == '6' || $datum->formatDatum($tag,'N') == '7') + $style = 'style="background-color:#eeeeee; font-size: 8pt;"'; + else + $style = 'style="background-color:#DCE4EF; font-size: 8pt;"'; + + // zeitsperren anzeigen + if (array_key_exists($datum->formatDatum($tag,'Y-m-d'), $zeitsperren)) + { + $zeitsperre_text = " -- ".$zeitsperren[$datum->formatDatum($tag,'Y-m-d')]." -- "; + $style = 'style="background-color:#cccccc; font-size: 8pt;"'; + } + else + $zeitsperre_text = ''; + //var_dump($zs->result); + + list($h1, $m1) = explode(':', $pausesumme); + $pausesumme = $h1*3600+$m1*60; + $tagessaldo = $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s'))-$datum->mktime_fromtimestamp($datum->formatDatum($tagesbeginn, $format='Y-m-d H:i:s'))-3600; + if ($tagessaldo>18000 && $pflichtpause==false) + { + $pausesumme = $pausesumme+1800; + } + + $tagessaldo = $tagessaldo-$pausesumme; + $tagessaldo = date('H:i', ($tagessaldo)); + echo ' + + + '; + + $tag=$datumtag; + $tagessumme='00:00'; + $pausesumme='00:00'; + $tagesbeginn = ''; + $tagesende = ''; + $pflichtpause = false; + $wochensaldo = $datum_obj->sumZeit($wochensaldo,$tagessaldo ); + //} + //else + //{ + // echo ''; + //} } // Nach jeder Woche eine Summenzeile einfuegen und eine neue Tabelle beginnen - $datumwoche = $datum_obj->formatDatum($row->start, 'W'); + $datumwoche = $datum_obj->formatDatum($row->datum, 'W'); if(is_null($woche)) $woche = $datumwoche; if($woche!=$datumwoche) @@ -758,33 +791,35 @@ if($projekt->getProjekteMitarbeiter($user)) - - - - + + + + + -
'.$p->t("eventkalender/kw").' '.$woche.'
'.$p->t("zeitaufzeichnung/id").''.$p->t("zeitaufzeichnung/user").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/oe").' 1'.$p->t("zeitaufzeichnung/oe").' 2'.$p->t("zeitaufzeichnung/aktivitaet").''.$p->t("zeitaufzeichnung/service").''.$p->t("zeitaufzeichnung/start").''.$p->t("zeitaufzeichnung/ende").''.$p->t("zeitaufzeichnung/dauer").''.$p->t("global/beschreibung").''.$p->t("global/aktion").''.$p->t("zeitaufzeichnung/id").''.$p->t("zeitaufzeichnung/user").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/oe").' 1'.$p->t("zeitaufzeichnung/oe").' 2'.$p->t("zeitaufzeichnung/aktivitaet").''.$p->t("zeitaufzeichnung/service").''.$p->t("zeitaufzeichnung/start").''.$p->t("zeitaufzeichnung/ende").''.$p->t("zeitaufzeichnung/dauer").''.$p->t("global/beschreibung").''.$p->t("global/aktion").'
foo
'; - - // Zusaetzlicher span fuer Addon Informationen - echo ''; - - echo ' - '.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'
- '.$p->t("zeitaufzeichnung/pause").' '.($pflichtpause==false?$p->t("zeitaufzeichnung/inklusivePflichtpause"):'').': -
'.$tagessaldo.'
'.date('H:i', ($pausesumme-3600)).'
'; + + // Zusaetzlicher span fuer Addon Informationen + + $lang = getSprache(); + if ($lang == 'German') + $langindex = 1; + else + $langindex = 2; + echo ''.$tagbez[$langindex][$datum->formatDatum($tag,'N')].' '.$datum->formatDatum($tag,'d.m.Y').' '.$zeitsperre_text.''; + + echo ' + '.$p->t("zeitaufzeichnung/arbeitszeit").': '.$datum->formatDatum($tagesbeginn, $format='H:i').'-'.$datum->formatDatum($tagesende, $format='H:i').' '.$p->t("eventkalender/uhr").'
+ '.$p->t("zeitaufzeichnung/pause").' '.($pflichtpause==false?$p->t("zeitaufzeichnung/inklusivePflichtpause"):'').': +
'.$tagessaldo.'
'.date('H:i', ($pausesumme-3600)).'
'.$datum->formatDatum($row->datum,'D d.m.Y').'
'.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").':'.$wochensaldo.''.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").':'.$wochensaldo.'
'; + '; echo ' - + + - - - - - - - - - - - - + + + + + + + + + + + + '; @@ -796,7 +831,8 @@ if($projekt->getProjekteMitarbeiter($user)) $pausesumme='00:00'; $wochensaldo = '00:00'; } - + if ($row->uid) + { $wochensumme = $datum_obj->sumZeit($wochensumme, $row->diff); if ($row->aktivitaet_kurzbz=='Pause') { @@ -825,8 +861,8 @@ if($projekt->getProjekteMitarbeiter($user)) - - + + '; if ($alle===false) + { echo ''; - echo '
 
'.$p->t("eventkalender/kw").' '.$datumwoche.'
'.$p->t("zeitaufzeichnung/id").''.$p->t("zeitaufzeichnung/user").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/oe").' 1'.$p->t("zeitaufzeichnung/oe").' 2'.$p->t("zeitaufzeichnung/aktivitaet").''.$p->t("zeitaufzeichnung/service").''.$p->t("zeitaufzeichnung/start").''.$p->t("zeitaufzeichnung/ende").''.$p->t("zeitaufzeichnung/dauer").''.$p->t("global/beschreibung").''.$p->t("global/aktion").''.$p->t("zeitaufzeichnung/id").''.$p->t("zeitaufzeichnung/user").''.$p->t("zeitaufzeichnung/projekt").''.$p->t("zeitaufzeichnung/oe").' 1'.$p->t("zeitaufzeichnung/oe").' 2'.$p->t("zeitaufzeichnung/aktivitaet").''.$p->t("zeitaufzeichnung/service").''.$p->t("zeitaufzeichnung/start").''.$p->t("zeitaufzeichnung/ende").''.$p->t("zeitaufzeichnung/dauer").''.$p->t("global/beschreibung").''.$p->t("global/aktion").'
'.$db->convert_html_chars($row->oe_kurzbz_2).' '.$db->convert_html_chars($row->aktivitaet_kurzbz).' '.StringCut($db->convert_html_chars($service->bezeichnung),20,null,'...').''.date('d.m.Y H:i', $datum->mktime_fromtimestamp($row->start)).''.date('d.m.Y H:i', $datum->mktime_fromtimestamp($row->ende)).''.date('H:i', $datum->mktime_fromtimestamp($row->start)).''.date('H:i', $datum->mktime_fromtimestamp($row->ende)).' '.$db->convert_html_chars($row->diff).' beschreibung)).'">'.StringCut($db->convert_html_chars($row->beschreibung),20,null,'...').' '; @@ -844,18 +880,22 @@ if($projekt->getProjekteMitarbeiter($user)) if ($tagesende=='' || $datum->mktime_fromtimestamp($datum->formatDatum($tagesende, $format='Y-m-d H:i:s')) < $datum->mktime_fromtimestamp($datum->formatDatum($row->ende, $format='Y-m-d H:i:s'))) $tagesende = $row->ende; + } } echo '
'.$p->t('zeitaufzeichnung/endeXTageAnsicht', array($angezeigte_tage)).'
'; + } + //echo ''; //echo $p->t("zeitaufzeichnung/gesamtdauer").": ".$db->convert_html_chars($summe); Aukommentiert. Irrelevant } + echo ''; /* } else @@ -869,6 +909,8 @@ else echo $p->t("zeitaufzeichnung/fehlerBeimErmittelnDerProjekte"); } + + echo ' diff --git a/include/zeitaufzeichnung.class.php b/include/zeitaufzeichnung.class.php old mode 100644 new mode 100755 index d2206acd9..563eab3e8 --- a/include/zeitaufzeichnung.class.php +++ b/include/zeitaufzeichnung.class.php @@ -309,9 +309,9 @@ class zeitaufzeichnung extends basis_db { $where = "uid=".$this->db_add_param($user); if ($days!='') - $where.= " AND ende>(now() - INTERVAL '".$days." days')"; + $where.= " AND ende>(now() - INTERVAL '".$days." days')"; - $qry = "SELECT + $qry = "SELECT *, to_char ((ende-start),'HH24:MI') as diff, (SELECT (to_char(sum(ende-start),'DD')::integer)*24+to_char(sum(ende-start),'HH24')::integer || ':' || to_char(sum(ende-start),'MI') FROM campus.tbl_zeitaufzeichnung @@ -342,7 +342,72 @@ class zeitaufzeichnung extends basis_db $obj->service_id = $row->service_id; $obj->kunde_uid = $row->kunde_uid; $obj->summe = $row->summe; - $obj->diff = $row->diff; + $obj->diff = $row->diff; + $obj->datum = $row->start; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * 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 getListeUserFull($user, $days='40') + { + $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); + if ($days!='') + $where_join.= " AND z.ende>(now() - INTERVAL '".$days." days')"; + if ($days=='') + $max_anz = 180; + else + $max_anz = $days; + $qry = "SELECT + d.dates, z.*, to_char ((z.ende-z.start),'HH24:MI') as diff, + (SELECT (to_char(sum(ende-start),'DD')::integer)*24+to_char(sum(ende-start),'HH24')::integer || ':' || to_char(sum(ende-start),'MI') + FROM campus.tbl_zeitaufzeichnung + WHERE $where ) as summe + FROM campus.tbl_zeitaufzeichnung z + right join (select current_date - s.a as dates from generate_series(0,$max_anz,1) as s(a)) d on date(z.ende) = d.dates $where_join order by d.dates desc + "; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new zeitaufzeichnung(); + + $obj->zeitaufzeichnung_id = $row->zeitaufzeichnung_id; + $obj->uid = $row->uid; + $obj->aktivitaet_kurzbz = $row->aktivitaet_kurzbz; + $obj->start = $row->start; + $obj->ende = $row->ende; + $obj->beschreibung = $row->beschreibung; + $obj->oe_kurzbz_1 = $row->oe_kurzbz_1; + $obj->oe_kurzbz_2 = $row->oe_kurzbz_2; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->projekt_kurzbz = $row->projekt_kurzbz; + $obj->ext_id = $row->ext_id; + $obj->service_id = $row->service_id; + $obj->kunde_uid = $row->kunde_uid; + $obj->summe = $row->summe; + $obj->diff = $row->diff; + $obj->datum = $row->dates; $this->result[] = $obj; } diff --git a/include/zeitsperre.class.php b/include/zeitsperre.class.php old mode 100644 new mode 100755 index 16eb265ca..01516a590 --- a/include/zeitsperre.class.php +++ b/include/zeitsperre.class.php @@ -467,5 +467,49 @@ class zeitsperre extends basis_db return false; } } + + /** + * Liefert die Zeitsperren eines Users für die Zeitaufzeichnung + * + * @param $uid + * @param $anz_tage + * @return array 'datum'->'zeitsperre_kurzbz' + */ + public function getZeitsperrenForZeitaufzeichnung($uid, $anz_tage=50) + { + unset($this->result); + $this->result=array(); + + $qry = "select datum::date, freigabevon, zeitsperretyp_kurzbz + from (SELECT generate_series(vondatum::timestamp, bisdatum::timestamp, '1 day') as datum, freigabevon, mitarbeiter_uid, zeitsperretyp_kurzbz FROM campus.tbl_zeitsperre ) a + where a.mitarbeiter_uid = ".$this->db_add_param($uid)." and datum>(now() - interval '50 Days') and zeitsperretyp_kurzbz in ('Krank','Urlaub')"; + + + + + if($this->db_query($qry)) + { + + while($row = $this->db_fetch_object()) + { + + if ($row->zeitsperretyp_kurzbz == 'Urlaub' && $row->freigabevon == NULL) + $result[$row->datum] = "Urlaubsantrag (Freigabe fehlt)"; + else + $result[$row->datum] = $row->zeitsperretyp_kurzbz; + + $this->result = $result; + + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Zeitsperren'; + return false; + } + } + + } ?> \ No newline at end of file