diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php index 3c57636a9..4a81868cd 100755 --- a/cis/private/tools/zeitaufzeichnung.php +++ b/cis/private/tools/zeitaufzeichnung.php @@ -50,12 +50,13 @@ if (!$db = new basis_db()) $user = get_uid(); +$rechte = new benutzerberechtigung(); +$rechte->getBerechtigungen($user); + //Wenn User Administrator ist und UID uebergeben wurde, dann die Zeitaufzeichnung //des uebergebenen Users anzeigen if(isset($_GET['uid'])) { - $rechte = new benutzerberechtigung(); - $rechte->getBerechtigungen($user); if($rechte->isBerechtigt('admin') || $rechte->isBerechtigt('mitarbeiter/urlaube', null, 'suid')) { $user = $_GET['uid']; @@ -65,9 +66,7 @@ if(isset($_GET['uid'])) die($p->t('global/FuerDieseAktionBenoetigenSieAdministrationsrechte')); } } -$rechteexport = new benutzerberechtigung(); -$rechteexport->getBerechtigungen($user); -if($rechteexport->isBerechtigt('addon/casetimeGenerateXLS')) +if($rechte->isBerechtigt('addon/casetimeGenerateXLS')) $export_xls = 'true'; else { $export_xls = 'false'; @@ -75,7 +74,15 @@ else { $datum = new datum(); -if (check_infrastruktur($user)) +$fieldheadings = array( + 'id' => $p->t("zeitaufzeichnung/id"), 'user' => $p->t("zeitaufzeichnung/user"), 'projekt' => $p->t("zeitaufzeichnung/projekt"), + 'oe1' => $p->t("zeitaufzeichnung/oe").'1', 'oe2' => $p->t("zeitaufzeichnung/oe").'2', 'aktivitaet' => $p->t("zeitaufzeichnung/aktivitaet"), + 'service' => $p->t("zeitaufzeichnung/service"), 'start' => $p->t("zeitaufzeichnung/start"), 'ende' => $p->t("zeitaufzeichnung/ende"), + 'dauer' => $p->t("zeitaufzeichnung/dauer"), 'kunde' => $p->t("zeitaufzeichnung/kunde"), 'beschreibung' => $p->t("global/beschreibung"), 'aktion' => $p->t("global/aktion"), + 'datum' => $p->t("global/datum") +); + +if ($rechte->isBerechtigt('basis/servicezeitaufzeichnung')) { $za_simple = 0; $activities = array('Design', 'Operativ', 'Betrieb', 'Pause', 'LehreIntern', 'LehreExtern', 'Arztbesuch', 'Dienstreise', 'Behoerde'); @@ -132,7 +139,7 @@ if(isset($_POST['export'])) $datevon = $datum->formatDatum($_POST['exp_von_datum'], 'Y-m-d'); $datebis = $datum->formatDatum($_POST['exp_bis_datum'], 'Y-m-d'); $ztauf = getZeitaufzeichnung( $user, $datevon, $datebis); - exportAsCSV($ztauf->result, ',', $za_simple, $user); + exportAsCSV($ztauf->result, ',', $fieldheadings, $za_simple, $user); } } @@ -1028,28 +1035,15 @@ if($projekt->getProjekteMitarbeiter($user, true)) { //Uebersichtstabelle $woche=date('W'); + $colspan=($za_simple)?10:13; echo ' - - - - - - - - - - - - - - - - + + '; + printTableHeadings($fieldheadings, $za_simple); - '; $tag=null; $woche=date('W'); @@ -1120,7 +1114,8 @@ if($projekt->getProjekteMitarbeiter($user, true)) $tagessaldo = $tagessaldo-$pausesumme; $tagessaldo = date('H:i', ($tagessaldo)); - echo ' - + @@ -1177,30 +1172,15 @@ if($projekt->getProjekteMitarbeiter($user, true)) '; + $colspan=($za_simple)?10:13; echo ' - + - - - - - - - - - - - - - - - - - - '; - + + '; + printTableHeadings($fieldheadings, $za_simple); $woche=$datumwoche; $wochensumme='00:00'; @@ -1233,12 +1213,18 @@ if($projekt->getProjekteMitarbeiter($user, true)) echo ' - - - - - - + '; + if(!$za_simple) + { + echo ' + '; + } + echo ''; + if(!$za_simple) + { + echo ''; + } + echo ' @@ -1266,11 +1252,10 @@ if($projekt->getProjekteMitarbeiter($user, true)) { echo ' - + '; } - //echo '
'.$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("eventkalender/kw").' '.$woche.'
'; + $colspan = ($za_simple)?4:7; + echo '
'; // Zusaetzlicher span fuer Addon Informationen @@ -1168,7 +1163,7 @@ if($projekt->getProjekteMitarbeiter($user, true))
'.$p->t("zeitaufzeichnung/wochensummeArbeitszeit").': '.$wochensaldo.'
 
 
'.$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("eventkalender/kw").' '.$datumwoche.'
'.$db->convert_html_chars($row->zeitaufzeichnung_id).' '.$db->convert_html_chars($row->uid).''.$db->convert_html_chars($row->projekt_kurzbz).''.$db->convert_html_chars($row->oe_kurzbz_1).''.$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('H:i', $datum->mktime_fromtimestamp($row->start)).''.$db->convert_html_chars($row->projekt_kurzbz).' '.$db->convert_html_chars($row->oe_kurzbz_1).' '.$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('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,'...').'
'.$p->t('zeitaufzeichnung/endeXTageAnsicht', array($angezeigte_tage)).''.$p->t('zeitaufzeichnung/endeXTageAnsicht', array($angezeigte_tage)).'
'; //echo $p->t("zeitaufzeichnung/gesamtdauer").": ".$db->convert_html_chars($summe); Aukommentiert. Irrelevant } @@ -1295,17 +1280,48 @@ echo ' '; +/** + * Gibt Tabellenüberschriften für Übersichtstabelle aus + * @param $fieldheadings Namen der Tabellenüberschriften + * @param bool $za_simple Zeitaufzeichnung lang (für Infrastrukturmitarbeiter) oder kurz (simple) + */ +function printTableHeadings($fieldheadings, $za_simple = false){ + echo ' + '.$fieldheadings['id'].' + '.$fieldheadings['user'].' + '.$fieldheadings['projekt'].''; + if (!$za_simple) + { + echo ''.$fieldheadings['oe1'].' + '.$fieldheadings['oe2'].''; + } + echo ''.$fieldheadings['aktivitaet'].''; + if (!$za_simple) + { + echo ' + '.$fieldheadings['service'].''; + } + echo ''.$fieldheadings['start'].' + '.$fieldheadings['ende'].' + '.$fieldheadings['dauer'].' + '.$fieldheadings['beschreibung'].' + '.$fieldheadings['aktion'].' + '; +} + /** * Exportiert Zeitaufzeichnungsdaten als CSV * @param $data Zeitaufzeichnungsdaten * @param string $delimiter CSV-Trennzeichen + * @param $fieldheadings Namen der Spaltenüberschriften * @param bool $za_simple Zeitaufzeichnung lang (für Infrastrukturmitarbeiter) oder kurz (simple) + * @param $uid Id des Users für CSV-Filenamen "zeitaufzeichnung_uid" */ -function exportAsCSV($data, $delimiter = ',', $za_simple = false, $uid) +function exportAsCSV($data, $delimiter = ',', $fieldheadings, $za_simple = false, $uid) { $filename = "zeitaufzeichnung_".$uid.".csv"; $file = fopen('php://output', 'w'); - $towrite = getDataForCSV($data, $za_simple); + $towrite = getDataForCSV($data, $fieldheadings, $za_simple); foreach ($towrite as $row) { fputcsv($file, $row, $delimiter); @@ -1320,17 +1336,19 @@ function exportAsCSV($data, $delimiter = ',', $za_simple = false, $uid) /** * Liefert Daten für CSV-Export basierend auf erhaltenen Zeitaufzeichnungsdaten * @param $rawdata zu exportierenden Rohdaten aus der Datenbank + * @param $fieldheadings Namen der Spaltenüberschriften * @param bool $za_simple Zeitaufzeichnung lang (für Infrastrukturmitarbeiter) oder kurz (simple). Wenn true, werden Spalten wie Service, OE ausgelassen * @return array Daten wie sie als CSV exportiert werden können */ -function getDataForCSV($rawdata, $za_simple = false) +function getDataForCSV($rawdata, $fieldheadings, $za_simple = false) { if(!$za_simple) $service = new service(); $datum = new datum(); $csvData = array(); //headers schreiben - $csvData[] = ($za_simple) ? array("User", "Datum", "Start", "Ende", "Projekt", "Aktivität", "Beschreibung") : array("User", "Datum", "Start", "Ende", "Projekt", "OE 1", "OE 2", "Aktivität", "Service", "Beschreibung"); + $csvData[] = ($za_simple) ? array($fieldheadings['user'], $fieldheadings['datum'], $fieldheadings['start'], $fieldheadings['ende'], $fieldheadings['projekt'], $fieldheadings['aktivitaet'], $fieldheadings['beschreibung']) + : array($fieldheadings['user'], $fieldheadings['datum'], $fieldheadings['start'], $fieldheadings['ende'], $fieldheadings['projekt'], $fieldheadings['oe1'], $fieldheadings['oe2'], $fieldheadings['aktivitaet'], $fieldheadings['service'], $fieldheadings['kunde'], $fieldheadings['beschreibung']); foreach ($rawdata as $zeitauf) { //Newline characters bei Beschreibung ersetzen @@ -1349,7 +1367,7 @@ function getDataForCSV($rawdata, $za_simple = false) { $servicebez = ($service->load($zeitauf->service_id))?$service->bezeichnung:""; $csvData[] = array($zeitauf->uid, $hauptdatum, $datum->formatDatum($zeitauf->start, 'H:i'), $bisdatum, - $zeitauf->projekt_kurzbz, $zeitauf->oe_kurzbz_1, $zeitauf->oe_kurzbz_2, $zeitauf->aktivitaet_kurzbz, $servicebez, $beschreibung); + $zeitauf->projekt_kurzbz, $zeitauf->oe_kurzbz_1, $zeitauf->oe_kurzbz_2, $zeitauf->aktivitaet_kurzbz, $servicebez, $zeitauf->kunde_uid, $beschreibung); } } return $csvData; diff --git a/include/projekt.class.php b/include/projekt.class.php index beb2db736..a724f5418 100755 --- a/include/projekt.class.php +++ b/include/projekt.class.php @@ -374,7 +374,7 @@ class projekt extends basis_db JOIN fue.tbl_projekt_ressource USING(ressource_id) JOIN fue.tbl_projekt USING(projekt_kurzbz) WHERE (beginn<=now() or beginn is null) - AND (ende + interval '1' day >=now() OR ende is null) + AND (ende + interval '1 month 1 day' >=now() OR ende is null) AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid); if ($projektphasen == true) @@ -391,10 +391,10 @@ class projekt extends basis_db ( ( (tbl_projekt.beginn<=now() or tbl_projekt.beginn is null) - AND (tbl_projekt.ende + interval '1' day >=now() OR tbl_projekt.ende is null) + AND (tbl_projekt.ende + interval '1 month 1 day' >=now() OR tbl_projekt.ende is null) ) OR ( (tbl_projektphase.start<=now() or tbl_projektphase.start is null) - AND (tbl_projektphase.ende + interval '1' day >=now() OR tbl_projektphase.ende is null) + AND (tbl_projektphase.ende + interval '1 month 1 day' >=now() OR tbl_projektphase.ende is null) ) ) AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid); diff --git a/system/checksystem.php b/system/checksystem.php index 255a09a0b..c486d1b0b 100644 --- a/system/checksystem.php +++ b/system/checksystem.php @@ -103,6 +103,7 @@ $berechtigungen = array( array('basis/testtool','Administrationseite, Gebiete löschen/zurücksetzen'), array('basis/variable','Variablenverwaltung'), array('basis/vilesci','Grundrecht, um in VileSci irgendwelche Menüpunkte zu sehen'), + array('basis/servicezeitaufzeichnung','Erlaubt Erfassung von servicebezogenen (Service, OE, Kunde) Daten in der Zeitaufzeichnung'), array('buchung/typen','Verwaltung von Buchungstypen'), array('buchung/mitarbeiter','Verwaltung von Buchungen fuer Mitarbeiter'), array('inout/incoming','Incomingverwaltung'),