Timesheet: Ersatzruhe, LehreExtern, Dienstreise

This commit is contained in:
Gerald Raab
2018-07-02 15:21:52 +02:00
parent a61e350705
commit a86111a803
4 changed files with 118 additions and 10 deletions
+57 -7
View File
@@ -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><a href="https://moodle.technikum-wien.at/course/view.php?id=6251" target="_blank">'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'</a></p>';
else
else
echo '<p><a href="../../../cms/dms.php?id='.$p->t("dms_link/handbuchZeitaufzeichnung").'" target="_blank">'.$p->t("zeitaufzeichnung/handbuchZeitaufzeichnung").'</a></p>';
}
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 '<SELECT name="aktivitaet">';
echo '<SELECT name="aktivitaet" id="aktivitaet">';
if ($za_simple == 0)
echo '<OPTION value="">-- '.$p->t('zeitaufzeichnung/keineAuswahl').' --</OPTION>';
//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))
<td '.$style.' align="right"><b>'.$tagessaldo.$erstr.'</b><br>'.date('H:i', ($pausesumme-3600)).'</td>
<td '.$style.' colspan="3" align="right">';
if ($tag > $sperrdatum)
echo '<a href="?von_datum='.$datum->formatDatum($tag,'d.m.Y').'&bis_datum='.$datum->formatDatum($tag,'d.m.Y').'" class="item">&lt;-</a>';
echo '<a href="?von_datum='.$datum->formatDatum($tag,'d.m.Y').'&bis_datum='.$datum->formatDatum($tag,'d.m.Y').'" class="item">&lt;-</a>';
echo '</td></tr>';
echo '</td>';
$tag=$datumtag;
$tagessumme='00:00';
@@ -1207,6 +1220,9 @@ if($projekt->getProjekteMitarbeiter($user, true))
//{
// echo '<tr><td style="background-color:#DCE4EF; font-size: 8pt;" colspan="13"><b>'.$datum->formatDatum($row->datum,'D d.m.Y').'</b></b> <span id="tag_'.$datum->formatDatum($row->datum,'d_m_Y').'"></span></td></tr>';
//}
}
// 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 '<tr style="background-color: #aabb99"><td colspan="'.$colspan.'">'.$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 '</td>';
echo '<td>';
if (array_key_exists('start', $dr_arr[$datumtag]))
echo $dr_arr[$datumtag]['start'];
echo '</td><td>';
if (array_key_exists('ende', $dr_arr[$datumtag]))
echo $dr_arr[$datumtag]['ende'];
echo '</td>';
echo '<td colspan="2"></td>';
echo '<td>';
if(!isset($_GET['filter']) && ($datumtag > $sperrdatum))
echo '<a href="'.$_SERVER['PHP_SELF'].'?type=edit&zeitaufzeichnung_id='.$dr_arr[$datumtag]['id'].'" class="Item">'.$p->t("global/bearbeiten").'</a>';
echo "</td>\n";
echo "<td>";
if(!isset($_GET['filter']) && ($datumtag > $sperrdatum))
echo '<a href="'.$_SERVER['PHP_SELF'].'?type=delete&zeitaufzeichnung_id='.$dr_arr[$datumtag]['id'].'" class="Item" onclick="return confdel()">'.$p->t("global/loeschen").'</a>';
echo "</td>\n";
echo '</tr>';
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 '
+59 -1
View File
@@ -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
+1 -1
View File
@@ -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';
+1 -1
View File
@@ -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:';
?>
$this->phrasen['zeitaufzeichnung/dienstreise']='Business Trip';