mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-26 22:50:29 +01:00
1969 lines
96 KiB
PHP
1969 lines
96 KiB
PHP
<?php
|
|
/*
|
|
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*
|
|
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
|
|
*
|
|
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
|
|
*
|
|
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
|
|
* to obtain the text of the corresponding license version.
|
|
*
|
|
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
|
|
*/
|
|
?>
|
|
<?php
|
|
//include ("_gen/zeiterfassung.php");
|
|
class Zeiterfassung { //extends GenZeiterfassung {
|
|
/** @var Application $app */
|
|
var $app;
|
|
|
|
/**
|
|
* @param Application $app
|
|
* @param string $name
|
|
* @param array $erlaubtevars
|
|
*
|
|
* @return array
|
|
*/
|
|
public function TableSearch($app, $name, $erlaubtevars)
|
|
{
|
|
switch($name) {
|
|
case 'zeiterfassunguser':
|
|
$allowed['zeiterfassung'] = array('listuser');
|
|
|
|
// START EXTRA checkboxen
|
|
$this->app->Tpl->Add('JQUERYREADY', "$('#offen').click( function() { fnFilterColumn1( 0 ); } );");
|
|
|
|
//$this->app->Tpl->Add('JQUERYREADY',"$('#abrechnung').click( function() { fnFilterColumn2( 0 ); } );");
|
|
for ($r = 1;$r < 2;$r++) {
|
|
$this->app->Tpl->Add('JAVASCRIPT', '
|
|
function fnFilterColumn' . $r . ' ( i )
|
|
{
|
|
if(oMoreData' . $r . $name . '==1)
|
|
oMoreData' . $r . $name . ' = 0;
|
|
else
|
|
oMoreData' . $r . $name . ' = 1;
|
|
|
|
$(\'#' . $name . '\').dataTable().fnFilter(
|
|
\'\',
|
|
i,
|
|
0,0
|
|
);
|
|
}
|
|
');
|
|
}
|
|
|
|
// ENDE EXTRA checkboxen
|
|
|
|
// headings
|
|
|
|
|
|
//$heading = array('','A','Datum','Von','Bis','Dauer','Mitarbeiter','Art','Tätigkeit','Projekt','Menü');
|
|
|
|
$heading = array('', 'Datum', 'Von', 'Bis', 'Dauer', 'Mitarbeiter','Art', 'Tätigkeit', 'Abr.','Projekt', 'Menü');
|
|
|
|
//$width = array('1%','1%','1%','1%','1%','5%','20%','40%','10%','1%');
|
|
$width = array('1%', '1%', '1%', '1%', '5%', '20%','5%', '40%', '5%','5%', '1%');
|
|
|
|
//$findcols = array('open','Auswahl','z.von','von','bis','Dauer','Mitarbeiter','id');
|
|
$findcols = array('open', 'z.von', 'von', 'bis', 'Dauer', 'Mitarbeiter','z.art','z.aufgabe','z.abrechnen','p.abkuerzung','id');
|
|
$searchsql = array('z.id', 'z.bis', 'z.aufgabe', 'a.name','z.art', "if(z.adresse_abrechnung!=0,CONCAT('<i>Kunde: ',b.name,' (',b.kundennummer,')</i><br>',z.aufgabe),z.aufgabe)", "p.abkuerzung");
|
|
$defaultorder = 2;
|
|
$defaultorderdesc = 1;
|
|
$menu = '<table cellpadding=0 cellspacing=0><tr><td nowrap>'.
|
|
"<a href=\"index.php?module=zeiterfassung&action=create&id=%value%&back=zeiterfassunguser\"><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> " .
|
|
"<a href=\"index.php?module=zeiterfassung&action=create©id=%value%&back=zeiterfassunguser\"><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\"></a>" .
|
|
" <a href=\"#\" onclick=DeleteDialog(\"index.php?module=zeiterfassung&action=listuser&do=stornieren&lid=%value%&back=zeiterfassunguser\");><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" .
|
|
'</td></tr></table>';
|
|
|
|
//CONCAT('<input type=\"checkbox\">') as auswahl,
|
|
|
|
//$menucol=9;
|
|
|
|
$menucol = 10;
|
|
$alignright = array(5);
|
|
$sumcol = 5;
|
|
|
|
//CONCAT(LPAD(HOUR(TIMEDIFF(z.bis, z.von)),2,'0'),':',LPAD(MINUTE(TIMEDIFF(z.bis, z.von)),2,'0')) AS Dauer,
|
|
// SQL statement
|
|
$sql = "SELECT SQL_CALC_FOUND_ROWS z.id,
|
|
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,
|
|
DATE_FORMAT(z.bis, GET_FORMAT(DATE,'EUR')) AS Datum,
|
|
DATE_FORMAT(z.von,'%H:%i') as von, DATE_FORMAT(z.bis,'%H:%i') as bis,
|
|
format((HOUR(TIMEDIFF(z.bis, z.von))) + MINUTE(TIMEDIFF(z.bis, z.von))/60,2) AS Dauer,
|
|
a.name as Mitarbeiter,z.art,
|
|
if(z.art='Pause','<font color=green>Pause</font>',if(z.adresse_abrechnung!=0,CONCAT('<i style=color:#999>Kunde: ',b.name,' (',b.kundennummer,')</i><br>',z.aufgabe),z.aufgabe)) as Taetigkeit,
|
|
if(z.abrechnen > 0,'(A)',''),
|
|
p.abkuerzung,
|
|
z.id
|
|
FROM zeiterfassung z
|
|
LEFT JOIN adresse a ON a.id=z.adresse
|
|
LEFT JOIN adresse b ON b.id=z.adresse_abrechnung
|
|
LEFT JOIN projekt p ON p.id=z.projekt
|
|
LEFT JOIN arbeitspaket ap ON z.arbeitspaket=ap.id";
|
|
|
|
// Fester filter
|
|
|
|
// START EXTRA more
|
|
|
|
$more_data1 = $this->app->Secure->GetGET('more_data1');
|
|
|
|
if ($more_data1 == 1) {
|
|
$subwhere[] = " z.abrechnen='1' AND z.abgerechnet!='1' ";
|
|
}
|
|
|
|
// $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'";
|
|
|
|
$von = $this->app->User->GetParameter('zeiterfassung_listuser_von');
|
|
if($von!='') {
|
|
$subwhere[] = " DATE_FORMAT(z.von,'%Y-%m-%d') >= '".$this->app->String->Convert($von,'%3.%2.%1','%1-%2-%3')."'";
|
|
}
|
|
|
|
$bis = $this->app->User->GetParameter('zeiterfassung_listuser_bis');
|
|
if($bis!='') {
|
|
$subwhere[] = " DATE_FORMAT(z.bis,'%Y-%m-%d') <= '".$this->app->String->Convert($bis,'%3.%2.%1','%1-%2-%3')."'";
|
|
}
|
|
|
|
$tmp = '';
|
|
$csubwhere = !empty($subwhere)?count($subwhere):0;
|
|
for ($j = 0;$j < $csubwhere;$j++) {
|
|
$tmp.= ' AND ' . $subwhere[$j];
|
|
}
|
|
|
|
$where = " z.id!='' AND z.adresse='" . $this->app->User->GetAdresse() . "' $tmp";
|
|
$count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse
|
|
LEFT JOIN adresse b ON b.id=z.adresse_abrechnung
|
|
LEFT JOIN projekt p ON p.id=z.projekt
|
|
LEFT JOIN arbeitspaket ap ON z.arbeitspaket=ap.id WHERE $where ";
|
|
$moreinfo = true;
|
|
break;
|
|
case 'zeiterfassung':
|
|
$allowed['zeiterfassung'] = array('list');
|
|
|
|
|
|
// START EXTRA checkboxen
|
|
$this->app->Tpl->Add('JQUERYREADY', "$('#offen').click( function() { fnFilterColumn10( 0 ); } );");
|
|
for ($r = 10;$r < 12;$r++) {
|
|
$this->app->Tpl->Add('JAVASCRIPT', '
|
|
function fnFilterColumn' . $r . ' ( i )
|
|
{
|
|
if(oMoreData' . $r . $name . '==1)
|
|
oMoreData' . $r . $name . ' = 0;
|
|
else
|
|
oMoreData' . $r . $name . ' = 1;
|
|
|
|
$(\'#' . $name . '\').dataTable().fnFilter(
|
|
\'\',
|
|
i,
|
|
0,0
|
|
);
|
|
}
|
|
');
|
|
}
|
|
|
|
// ENDE EXTRA checkboxen
|
|
|
|
// headings
|
|
|
|
|
|
//$heading = array('','A','Datum','Von','Bis','Dauer','Mitarbeiter','Art','Aufabe','Projekt','Menü');
|
|
|
|
$heading = array('', 'Datum', 'Von', 'Bis', 'Dauer', 'Mitarbeiter','Art', 'Aufgabe', 'Abr.','Projekt', 'Menü');
|
|
|
|
//$width = array('1%','1%','1%','1%','1%','5%','20%','40%','10%','1%');
|
|
$width = array('1%', '1%', '1%', '1%', '5%', '20%','5%', '40%','5%','5%', '1%');
|
|
|
|
//$findcols = array('open','Auswahl','z.von','von','bis','Dauer','Mitarbeiter','id');
|
|
$findcols = array('open', "z.von", 'z.von', 'z.bis', '(HOUR(TIMEDIFF(z.bis, z.von))) + MINUTE(TIMEDIFF(z.bis, z.von))/60', 'a.name','z.art',"if(z.adresse_abrechnung!=0,CONCAT('<i style=color:#999>Kunde: ',b.name,' (',b.kundennummer,')</i><br>',z.aufgabe),z.aufgabe)", "if(z.abrechnen > 0,'(A)','')",'p.abkuerzung', 'z.id');
|
|
$searchsql = array('z.id', 'z.von', 'z.bis', $this->app->erp->FormatPreis('(HOUR(TIMEDIFF(z.bis, z.von))) + MINUTE(TIMEDIFF(z.bis, z.von))/60',2), 'a.name','z.art', 'a.name', 'z.art', "if(z.adresse_abrechnung!=0,CONCAT('<i style=color:#999>Kunde: ',b.name,' (',b.kundennummer,')</i><br>',z.aufgabe),z.aufgabe)", "if(z.abrechnen > 0,'(A)','')", 'p.abkuerzung', "DATE_FORMAT(z.bis, GET_FORMAT(DATE,'EUR'))",'b.name','b.kundennummer', );
|
|
$defaultorder = 2;
|
|
$defaultorderdesc = 1;
|
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap><a href=\"index.php?module=zeiterfassung&action=create&id=%value%&back=zeiterfassung\"><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>" . " <a href=\"#\" onclick=DeleteDialog(\"index.php?module=zeiterfassung&action=list&do=stornieren&lid=%value%&back=zeiterfassung\");><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . " </td></tr></table>";
|
|
|
|
//CONCAT('<input type=\"checkbox\">') as auswahl,
|
|
|
|
$datecols = array(1);
|
|
$numbercols = array(4);
|
|
|
|
//$menucol=9;
|
|
$sumcol = 5;
|
|
$alignright = array(5);
|
|
$menucol = 10;
|
|
//CONCAT(LPAD(HOUR(TIMEDIFF(z.bis, z.von)),2,'0'),':',LPAD(MINUTE(TIMEDIFF(z.bis, z.von)),2,'0')) AS Dauer,
|
|
// SQL statement
|
|
$sql = "SELECT SQL_CALC_FOUND_ROWS z.id,
|
|
'<img src=./themes/{$this->app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,
|
|
|
|
CONCAT('<!--',DATE_FORMAT(z.von,'%Y%m%d'),'-->',DATE_FORMAT(z.bis, GET_FORMAT(DATE,'EUR'))) AS Datum,
|
|
DATE_FORMAT(z.von,'%H:%i') as von, DATE_FORMAT(z.bis,'%H:%i') as bis,
|
|
round(HOUR(TIMEDIFF(z.bis, z.von)) + MINUTE(TIMEDIFF(z.bis, z.von))/60,2) AS Dauer,
|
|
|
|
a.name as Mitarbeiter,z.art,
|
|
if(z.adresse_abrechnung!=0,CONCAT('<i style=color:#999>Kunde: ',b.name,' (',b.kundennummer,')</i><br>',z.aufgabe),z.aufgabe) as Taetigkeit,
|
|
if(z.abrechnen > 0,'(A)',''),
|
|
p.abkuerzung,
|
|
z.id
|
|
|
|
FROM zeiterfassung z
|
|
LEFT JOIN adresse a ON a.id=z.adresse
|
|
LEFT JOIN adresse b ON b.id=z.adresse_abrechnung
|
|
LEFT JOIN projekt p ON p.id=z.projekt
|
|
LEFT JOIN arbeitspaket ap ON z.arbeitspaket=ap.id";
|
|
|
|
// Fester filter
|
|
|
|
// START EXTRA more
|
|
|
|
$fvon = $this->app->YUI->TableSearchFilter($name, 2, 'von', $this->app->User->GetParameter('zeiterfassung_von'));
|
|
$fbis = $this->app->YUI->TableSearchFilter($name, 3, 'bis', $this->app->User->GetParameter('zeiterfassung_bis'));
|
|
$fprojekt = reset(explode(' ',trim($this->app->YUI->TableSearchFilter($name, 4, 'projekt', $this->app->User->GetParameter('zeiterfassung_projekt')))));
|
|
$fmitarbeiter = reset(explode(' ',trim($this->app->YUI->TableSearchFilter($name, 5, 'mitarbeiter', $this->app->User->GetParameter('zeiterfassung_projekt')))));
|
|
if($fvon)
|
|
{
|
|
if(strpos($fvon, '.') !== false){
|
|
$fvon = $this->app->String->Convert($fvon, '%1.%2.%3', '%3-%2-%1');
|
|
}
|
|
}
|
|
if($fbis)
|
|
{
|
|
if(strpos($fbis, '.') !== false){
|
|
$fbis = $this->app->String->Convert($fbis, '%1.%2.%3', '%3-%2-%1');
|
|
}
|
|
}
|
|
if($fprojekt){
|
|
$fprojekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung = '$fprojekt' AND geloescht != 1 LIMIT 1");
|
|
}
|
|
if($fmitarbeiter){
|
|
$fmitarbeiter = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer = '$fmitarbeiter' AND geloescht != 1 LIMIT 1");
|
|
}
|
|
|
|
$more_data1 = $this->app->Secure->GetGET('more_data10');
|
|
|
|
if ($more_data1 == 1) {
|
|
$subwhere[] = " z.abrechnen='1' AND z.abgerechnet!='1' ";
|
|
}
|
|
if ($fprojekt){
|
|
$subwhere[] = " z.projekt = '$fprojekt' ";
|
|
}
|
|
if ($fmitarbeiter){
|
|
$subwhere[] = " z.adresse = '$fmitarbeiter' ";
|
|
}
|
|
if ($fvon){
|
|
$subwhere[] = " DATE_FORMAT(z.bis,'%Y-%m-%d') >= '$fvon' ";
|
|
}
|
|
if ($fbis){
|
|
$subwhere[] = " DATE_FORMAT(z.von,'%Y-%m-%d') <= '$fbis' ";
|
|
}
|
|
$tmp = '';
|
|
$csubwhere = !empty($subwhere)?count($subwhere):0;
|
|
for ($j = 0;$j < $csubwhere;$j++) {
|
|
$tmp.= ' AND ' . $subwhere[$j];
|
|
}
|
|
$where = " z.id!='' $tmp";
|
|
|
|
// gesamt anzahl
|
|
$count = 'SELECT COUNT(z.id) FROM zeiterfassung z';
|
|
$moreinfo = true;
|
|
|
|
break;
|
|
case 'zeiterfassungkundenoffen':
|
|
$allowed['zeiterfassung'] = array('list');
|
|
|
|
|
|
$this->app->Tpl->Add('JQUERYREADY',"$('#kunden').click( function() { fnFilterColumn1( 0 ); } );");
|
|
|
|
|
|
|
|
for($r=1;$r<2;$r++)
|
|
{
|
|
$this->app->Tpl->Add('JAVASCRIPT','
|
|
function fnFilterColumn'.$r.' ( i )
|
|
{
|
|
if(oMoreData'.$r.$name.'==1)
|
|
oMoreData'.$r.$name.' = 0;
|
|
else
|
|
oMoreData'.$r.$name.' = 1;
|
|
|
|
$(\'#'.$name.'\').dataTable().fnFilter(
|
|
\'\',
|
|
i,
|
|
0,0
|
|
);
|
|
}
|
|
');
|
|
}
|
|
|
|
|
|
$heading = array('Kunde', 'Kundennr', 'Offen Abr.', 'Offen ohne Abr.','Menü');
|
|
$alignright = array(3,4);
|
|
|
|
$width = array('10%', '5%', '15%', '15%','1%');
|
|
|
|
$findcols = array('a.name', 'a.kundennummer', '(SELECT SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von))) FROM zeiterfassung z2 WHERE z2.adresse_abrechnung=a.id AND z2.abrechnen=1 AND z2.abgerechnet!=1)','(SELECT SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von))) FROM zeiterfassung z2 WHERE z2.adresse_abrechnung=a.id AND z2.abrechnen!=1 AND z2.abgerechnet!=1)', 'z.id');
|
|
$searchsql = array('a.name','a.kundennummer');
|
|
$defaultorder = 4;
|
|
$defaultorderdesc = 1;
|
|
$menu = "<table cellpadding=0 cellspacing=0><tr><td nowrap><a href=\"index.php?module=adresse&action=abrechnungzeit&id=%value%\"><img src=\"themes/{$this->app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a>" . ' </td></tr></table>';
|
|
|
|
$numbercols = array(3,4);
|
|
|
|
if($this->app->Secure->GetGET('more_data1')=='1')
|
|
{
|
|
$subwhere = ' AND z.aufgabe_id <=0 AND z.auftrag <=0 AND z.produktion <=0 AND z.arbeitsanweisung <=0 AND z.projekt <=0 ';
|
|
$subwhere2 = ' AND z2.aufgabe_id <=0 AND z2.auftrag <=0 AND z2.produktion <=0 AND z2.arbeitsanweisung <=0 AND z2.projekt <=0 ';
|
|
}else{
|
|
$subwhere = '';
|
|
$subwhere2 = '';
|
|
}
|
|
|
|
|
|
$sql = "SELECT SQL_CALC_FOUND_ROWS z.id,
|
|
a.name,a.kundennummer,
|
|
(SELECT ".$this->app->erp->FormatMenge("SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von)))/3600")." FROM zeiterfassung z2 LEFT JOIN projekt p2 ON z2.projekt = p2.id WHERE (z2.adresse_abrechnung = a.id OR p2.kunde = a.id) AND z2.abrechnen=1 AND z2.abgerechnet!=1 $subwhere2) as offen,
|
|
(SELECT ".$this->app->erp->FormatMenge("SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von)))/3600")." FROM zeiterfassung z2 LEFT JOIN projekt p2 ON z2.projekt = p2.id WHERE (z2.adresse_abrechnung = a.id OR p2.kunde = a.id) AND z2.abrechnen!=1 AND z2.abgerechnet!=1 $subwhere2) as offen2,
|
|
a.id
|
|
FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse_abrechnung ";
|
|
$where = ' z.abgerechnet!=1 AND a.id > 0 '.$subwhere;
|
|
$groupby = ' GROUP by z.adresse_abrechnung ';
|
|
|
|
// gesamt anzahl
|
|
$count = 'SELECT COUNT(distinct z.adresse_abrechnung) FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse_abrechnung WHERE z.abgerechnet!=1 AND a.id > 0 '.$subwhere;
|
|
break;
|
|
}
|
|
$erg = [];
|
|
foreach($erlaubtevars as $k => $v)
|
|
{
|
|
if(isset($$v))
|
|
{
|
|
$erg[$v] = $$v;
|
|
}
|
|
}
|
|
return $erg;
|
|
}
|
|
|
|
/**
|
|
* Zeiterfassung constructor.
|
|
*
|
|
* @param Application $app
|
|
* @param bool $intern
|
|
*/
|
|
public function __construct($app, $intern = false) {
|
|
$this->app=$app;
|
|
if($intern){
|
|
return;
|
|
}
|
|
$this->app->ActionHandlerInit($this);
|
|
|
|
$this->app->ActionHandler("create","ZeiterfassungCreate");
|
|
$this->app->ActionHandler("edit","ZeiterfassungEdit");
|
|
$this->app->ActionHandler("list","ZeiterfassungList");
|
|
$this->app->ActionHandler("listuser","ZeiterfassungListUser");
|
|
$this->app->ActionHandler("delete","ZeiterfassungDelete");
|
|
$this->app->ActionHandler("arbeitspaket","ArbeitspaketDetails");
|
|
$this->app->ActionHandler("details","ZeiterfassungDetails");
|
|
$this->app->ActionHandler("minidetail","ZeiterfassungMinidetail");
|
|
$this->app->ActionHandler("abrechnenpdf","ZeiterfassungAbrechnenpdf");
|
|
$this->app->ActionHandler("dokuarbeitszeitpdf","ZeiterfassungDokuArbeitszeit");
|
|
$this->app->ActionHandler("bearbeitenerlauben","ZeiterfassungBearbeitenerlauben");
|
|
|
|
$this->app->erp->Headlines('Zeiterfassung');
|
|
|
|
$this->app->ActionHandlerListen($app);
|
|
|
|
}
|
|
|
|
public function ZeiterfassungBearbeitenerlauben()
|
|
{
|
|
//Rechte
|
|
}
|
|
|
|
public function ZeiterfassungMinidetail()
|
|
{
|
|
$id = $this->app->Secure->GetGET('id');
|
|
|
|
$tmp = $this->app->DB->SelectRow("SELECT * FROM zeiterfassung WHERE id='$id'");
|
|
$teilprojekt = $this->app->DB->Select("SELECT aufgabe FROM arbeitspaket WHERE id='".$tmp['arbeitspaket']."'");
|
|
|
|
echo '<table width="710">';
|
|
echo '<tr><td width="200"><b>Ort:</b></td><td>'.$tmp['ort'].'</td></tr>';
|
|
echo '<tr><td><b>Tätigkeit:</b></td><td>'.$tmp['aufgabe'].'</td></tr>';
|
|
echo "<tr valign=\"top\"><td><b>Beschreibung:</b></td><td>".nl2br($tmp['beschreibung']).'</td></tr>';
|
|
echo '<tr><td><b>Teilprojekt:</b></td><td>'.$teilprojekt."</td></tr>";
|
|
echo '<tr><td><b>Kostenstelle:</b></td><td>'.$tmp['kostenstelle'].'</td></tr>';
|
|
echo '<tr><td><b>Verrechnungsart:</b></td><td>'.$tmp['verrechnungsart'].'</td></tr>';
|
|
if($tmp['gps']!='') {
|
|
$tmpgps = explode(';',$tmp['gps']);
|
|
$link = '<a href="http://maps.google.com/maps?q='.$tmpgps[0].",".$tmpgps[1].'" target="_blank">Google Maps</a>';
|
|
}
|
|
echo '<tr><td><b>GPS Koordinaten:</b></td><td>'.$tmp['gps']." $link</td></tr>";
|
|
echo '</table>';
|
|
$this->app->ExitXentral();
|
|
}
|
|
|
|
public function ZeiterfassungAbrechnenpdf()
|
|
{
|
|
//Create a new PDF file
|
|
$pdf=new FPDF();
|
|
$pdf->AddPage();
|
|
|
|
$pdf->SetFontClassic('Arial','B',11);
|
|
|
|
//Create lines (boxes) for each ROW (Product)
|
|
//If you don't use the following code, you don't create the lines separating each row
|
|
$tmp = $this->app->DB->SelectArr("SELECT a.kundennummer as kundennummer, a.name as name, z.aufgabe, SUM((UNIX_TIMESTAMP(z.bis)-UNIX_TIMESTAMP(z.von))/3600.0) as stunden
|
|
FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse_abrechnung WHERE z.abrechnen='1' AND (z.ist_abgerechnet IS NULL OR z.ist_abgerechnet='0') AND z.adresse_abrechnung > 0 GROUP BY 1");
|
|
// Colors, line width and bold font
|
|
$pdf->SetFillColor(255,255,255);
|
|
$pdf->SetTextColor(0);
|
|
$pdf->SetDrawColor(0,0,0);
|
|
$pdf->SetLineWidth(.3);
|
|
//$pdf->SetFontClassic('','B');
|
|
// Header
|
|
|
|
$header = array('Kundennr.','Name','Stunden','OK');
|
|
$w = array(30,130,20,10);
|
|
$pdf->Cell($w[0],7,$header[0],1,0,'L',true);
|
|
$pdf->Cell($w[1],7,$header[1],1,0,'L',true);
|
|
$pdf->Cell($w[2],7,$header[2],1,0,'C',true);
|
|
$pdf->Cell($w[3],7,$header[3],1,0,'C',true);
|
|
$pdf->Ln();
|
|
$pdf->SetFontClassic('Arial','',11);
|
|
// Color and font restoration
|
|
|
|
// Data
|
|
$fill = false;
|
|
for($i=0;$i<(!empty($tmp)?count($tmp):0);$i++)
|
|
{
|
|
if($tmp[$i]["prio"]==0) $prio="";
|
|
else if($tmp[$i]["prio"]==1) $prio="Ja";
|
|
$pdf->Cell($w[0],6,$tmp[$i]["kundennummer"],'LRTB',0,'L',$fill);
|
|
$pdf->Cell($w[1],6,$this->app->erp->ReadyForPDF($tmp[$i]["name"]),'LRTB',0,'L',$fill);
|
|
$pdf->Cell($w[2],6,round($tmp[$i]["stunden"],2),'LRTB',0,'C',$fill);
|
|
$pdf->Cell($w[3],6,"",'LRTB',0,'C',$fill);
|
|
$pdf->Ln();
|
|
$fill = !$fill;
|
|
}
|
|
$pdf->Ln();
|
|
$pdf->SetFontClassic('Arial','',8);
|
|
$name=preg_replace('/[^a-zA-Z0-9_]/' , '' , $this->app->User->GetName());
|
|
$name = strtoupper($name);
|
|
|
|
$pdf->Cell(array_sum($w),0,date('Ymd').'_'.$name.'_ABRECHNEN.pdf','',0,'R');
|
|
|
|
$pdf->Output(date('Ymd').'_'.$name.'_ABRECHNEN.pdf','D');
|
|
$this->app->ExitXentral();
|
|
}
|
|
|
|
public function ZeiterfassungCreate()
|
|
{
|
|
$cmd=$this->app->Secure->GetGET('cmd');
|
|
$back=$this->app->Secure->GetGET('back');
|
|
$msg=$this->app->Secure->GetGET('msg');
|
|
|
|
|
|
if($cmd=='data' || $cmd=='getzeiterfassung' || $cmd=='updatezeiterfassung' || $cmd=='savezeiterfassung' || $cmd=='kalenderansicht' || $cmd=='formularansicht' || $cmd=='delzeiterfassung' || $cmd=='mitarbeiteransichtdata' || $cmd=='copyzeiterfassung')
|
|
{
|
|
$start_string = $this->app->Secure->GetGET('start');
|
|
if ($start_string != "") {
|
|
$start_datum = date('Y-m-d', $this->app->Secure->GetGET('start'));
|
|
}
|
|
|
|
$end_string = $this->app->Secure->GetGET('end');
|
|
if ($end_string != "") {
|
|
$end_datum = date('Y-m-d', $this->app->Secure->GetGET('end'));
|
|
}
|
|
|
|
switch($cmd)
|
|
{
|
|
case 'formularansicht':
|
|
$this->app->User->SetParameter('zeiterfassung_buchen_formularansicht',1);
|
|
header('Location: index.php?module=zeiterfassung&action=create');
|
|
exit;
|
|
break;
|
|
case 'kalenderansicht':
|
|
$this->app->User->SetParameter('zeiterfassung_buchen_formularansicht',0);
|
|
header('Location: index.php?module=zeiterfassung&action=create');
|
|
exit;
|
|
break;
|
|
case 'mitarbeiteransichtdata':
|
|
case 'data':
|
|
if($this->app->User->GetParameter('zeiterfassung_buchen_termine')=='1' && $cmd!='mitarbeiteransichtdata') {
|
|
if($nurmeine > 0)
|
|
{
|
|
$data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, ort,beschreibung, bezeichnung AS title, von AS start, bis AS end, allDay, color, public,erinnerung,adresse,adresseintern,projekt
|
|
FROM kalender_event AS ke
|
|
LEFT JOIN kalender_user AS ku ON ke.id=ku.event
|
|
WHERE (ku.userid='$user') AND (ke.von < '$end' AND (ke.bis >= '$start' OR ke.bis='0000-00-00 00:00:00') ) GROUP by ke.id ORDER by start");
|
|
} else {
|
|
$data = $this->app->DB->SelectArr("SELECT DISTINCT ke.id, ort,beschreibung, ke.bezeichnung AS title, von AS start, bis AS end, allDay, color, public,erinnerung,adresse,adresseintern,projekt,kg.farbe
|
|
FROM kalender_event AS ke
|
|
LEFT JOIN kalender_user ku ON ke.id=ku.event
|
|
LEFT JOIN kalender_gruppen kg ON kg.id=ku.gruppe
|
|
WHERE (ke.von < '$end_datum' AND (ke.bis >= '$start_datum' OR (ke.bis='0000-00-00 00:00:00' AND ke.von!='0000-00-00 00:00:00') AND NOT (ke.von < '$start_datum' AND ke.bis='0000-00-00 00:00:00')) ) $subwhere GROUP by ke.id ORDER by start");
|
|
}
|
|
$cdata = !empty($data)?count($data):0;
|
|
for($i=0;$i<$cdata;$i++)
|
|
{
|
|
$data[$i]['allDay'] = (($data[$i]['allDay']=='1')?true:false);
|
|
$data[$i]['public'] = (($data[$i]['public']=='1')?true:false);
|
|
$data[$i]['erinnerung'] = (($data[$i]['erinnerung']=='1')?true:false);
|
|
$data[$i]['title'] = $this->app->erp->ReadyForPDF($data[$i]['title']);
|
|
$data[$i]['ort'] = $this->app->erp->ReadyForPDF($data[$i]['ort']);
|
|
$data[$i]['adresse'] = $this->app->erp->ReadyForPDF($data[$i]['adresse']);
|
|
$data[$i]['adresseintern'] = $this->app->erp->ReadyForPDF($data[$i]['adresseintern']);
|
|
$data[$i]['projekt'] = $this->app->erp->ReadyForPDF($data[$i]['adresseintern']);
|
|
$data[$i]['beschreibung'] = $this->app->erp->ReadyForPDF($data[$i]['projekt']);
|
|
//if($data[$i]['farbe']!="")
|
|
$data[$i]['color'] = '#999';//$data[$i]['farbe'];
|
|
$data[$i]['task'] = 0;//$data[$i]['farbe'];
|
|
$data[$i]['id'] = 'kalender_'.$data[$i]['id'];
|
|
}
|
|
}
|
|
|
|
if($cmd=='mitarbeiteransichtdata')
|
|
{
|
|
$tmpadresse = $this->app->User->GetParameter('zeiterfassung_list_mitarbeiterkalenderansicht');
|
|
}
|
|
else {
|
|
$tmpadresse = $this->app->User->GetAdresse();
|
|
}
|
|
|
|
$result = $this->app->DB->SelectArr("SELECT * FROM zeiterfassung WHERE adresse='".$tmpadresse."'
|
|
AND DATE_FORMAT(von,'%Y-%m-%d') BETWEEN '$start_datum' AND '$end_datum' ");
|
|
$cresult = !empty($result)?count($result):0;
|
|
for($i=0;$i<$cresult;$i++)
|
|
{
|
|
|
|
if($result[$i]['art']=='Arbeit') {
|
|
$color='var(--sidebar-background)';
|
|
} else {
|
|
$color='#333';
|
|
}
|
|
$data[] = array('id' => $result[$i]['id'],
|
|
'title'=>$result[$i]['aufgabe'],
|
|
'start'=> $result[$i]['von'],
|
|
'end'=> $result[$i]['bis'],
|
|
'allDay'=>false,
|
|
'color'=>$color,
|
|
'public'=>'',
|
|
'task'=>1);
|
|
}
|
|
//background
|
|
if($this->app->User->GetParameter('zeiterfassung_buchen_stechuhr')=='1') {
|
|
|
|
$stechuhr = $this->app->DB->SelectArr("SELECT *, datum as start,
|
|
DATE_ADD(datum, INTERVAL 30 MINUTE) as end FROM stechuhr WHERE adresse='".$tmpadresse."'
|
|
AND DATE_FORMAT(datum,'%Y-%m-%d') between '$start_datum' AND '$end_datum'");
|
|
$cstechuhr = !empty($stechuhr)?count($stechuhr):0;
|
|
for($si=0; $si<$cstechuhr;$si++)
|
|
{
|
|
$data[] = array(
|
|
'title'=> $stechuhr[$si]['status'],
|
|
'start'=> $stechuhr[$si]['start'],
|
|
'end'=> $stechuhr[$si]['end'],
|
|
'color'=>'#f90000',
|
|
'allDay'=>false);
|
|
// 'rendering'=>'background');
|
|
}
|
|
}
|
|
|
|
break;
|
|
case 'getzeiterfassung':
|
|
$id=$this->app->Secure->GetGET('id');
|
|
$result = $this->app->DB->SelectArr("SELECT *,DATE_FORMAT(von,'%d.%m.%Y') as datum,
|
|
DATE_FORMAT(von,'%H:%i') as vonzeit, DATE_FORMAT(bis,'%H:%i') as biszeit
|
|
FROM zeiterfassung WHERE adresse='".$this->app->User->GetAdresse()."' AND id='$id' LIMIT 1");
|
|
$result = reset($result);
|
|
|
|
$data['id']=$result['id'];
|
|
$data['aufgabe']=$result['aufgabe'];
|
|
$data['beschreibung']=$result['beschreibung'];
|
|
$data['datum']=$result['datum'];
|
|
$data['vonzeit']=$result['vonzeit'];
|
|
$data['biszeit']=$result['biszeit'];
|
|
$data['ort']=$result['ort'];
|
|
$data['art']=$result['art'];
|
|
$data['internerkommentar']=$result['internerkommentar'];
|
|
$data['projekt_manuell']=$this->app->DB->Select("SELECT CONCAT(abkuerzung,' ',name) FROM projekt WHERE id='".$result['projekt']."' LIMIT 1");
|
|
// $data['serviceauftrag'] = $this->app->DB->Select("SELECT belegnr FROM serviceauftrag WHERE id='".$result["serviceauftrag"]."' LIMIT 1");
|
|
$data['adresse_abrechnung'] = $this->app->DB->Select("SELECT CONCAT(kundennummer,' ',name) FROM adresse WHERE id='".$result["adresse_abrechnung"]."'");
|
|
$data['auftragpositionid']=$this->app->DB->Select("SELECT CONCAT(a.belegnr,'-',ap.sort,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y'),' ',ap.bezeichnung) FROM auftrag_position ap LEFT JOIN auftrag a ON ap.auftrag=a.id WHERE ap.id='".$result["auftragpositionid"]."'");
|
|
$data['produktion']=$this->app->DB->Select("SELECT CONCAT(belegnr,' ',name,' ', DATE_FORMAT(datum,'%d.%m.%Y')) FROM produktion WHERE id='".$result["produktion"]."'");
|
|
|
|
$data['auftrag'] = $this->app->DB->Select("SELECT CONCAT(belegnr,' ',name,' ', DATE_FORMAT(datum,'%d.%m.%Y')) FROM auftrag WHERE id='".$result["auftrag"]."'");
|
|
$data['arbeitspaket'] = $this->app->DB->Select("SELECT CONCAT(ap.id,' ',p.abkuerzung,' ',ap.aufgabe) as name2 FROM arbeitspaket ap LEFT JOIN projekt p ON p.id=ap.projekt WHERE ap.id='".$result["arbeitspaket"]."' LIMIT 1");
|
|
$data['abrechnen'] = $result['abrechnen'];
|
|
/*
|
|
$adresse_abrechnung_komplett = $this->app->DB->Select("SELECT CONCAT(kundennummer,' ',name) FROM adresse WHERE id='".$tmp[0]["adresse_abrechnung"]."'");
|
|
if($tmp[0]["adresse_abrechnung"]<=0) $adresse_abrechnung_komplett="";
|
|
|
|
$mitarbeiter_komplett = $this->app->DB->Select("SELECT CONCAT(mitarbeiternummer,' ',name) FROM adresse WHERE id='".$tmp[0]["adresse"]."'");
|
|
$kostenstelle_komplett = $this->app->DB->Select("SELECT CONCAT(nummer,' ',beschreibung) FROM kostenstellen WHERE nummer='".$tmp[0]["kostenstelle"]."'");
|
|
$verrechnungsart_komplett = $this->app->DB->Select("SELECT CONCAT(nummer,' ',beschreibung) FROM verrechnungsart WHERE nummer='".$tmp[0]["verrechnungsart"]."'");
|
|
$auftragpositionid_komplett = $this->app->DB->Select("SELECT CONCAT(a.belegnr,'-',ap.sort,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y'),' ',ap.bezeichnung) FROM auftrag_position ap LEFT JOIN auftrag a ON ap.auftrag=a.id WHERE ap.id='".$tmp[0]["auftragpositionid"]."'");
|
|
$produktion_komplett = $this->app->DB->Select("SELECT CONCAT(belegnr,' ',name,' ', DATE_FORMAT(datum,'%d.%m.%Y')) FROM produktion WHERE id='".$tmp[0]["produktion"]."'");
|
|
|
|
*/
|
|
|
|
|
|
$data['write']=1; // nur schreiben erlaubt wenn nicht zu alt bzw. gibt es eine Einstelloption in den Firmendaten TODO
|
|
break;
|
|
|
|
case 'copyzeiterfassung':
|
|
$id = $this->app->Secure->GetPOST('id');
|
|
$zeiterfassungData = $this->app->DB->SelectRow("SELECT * FROM zeiterfassung WHERE id = '$id' LIMIT 1");
|
|
$datum = explode(' ', $zeiterfassungData['von']);
|
|
$datum = $datum[0];
|
|
$checkzeit = $this->app->erp->ZeiterfassungAllowEdit($datum);
|
|
|
|
if($id > 0 && $checkzeit){
|
|
$this->app->erp->AddArbeitszeit($this->app->User->GetAdresse(), $zeiterfassungData['von'], $zeiterfassungData['bis'],
|
|
$zeiterfassungData['aufgabe'], $zeiterfassungData['beschreibung'],$zeiterfassungData['ort'], $zeiterfassungData['projekt'],
|
|
$zeiterfassungData['arbeitspaket'],$zeiterfassungData['art'],$zeiterfassungData['adresse_abrechnung'],$zeiterfassungData['abrechnen'],'',
|
|
'',0,'',0,$zeiterfassungData['internerkommentar'],$zeiterfassungData['auftrag'],$zeiterfassungData['produktion'],0,
|
|
$zeiterfassungData['auftragpositionid'],$zeiterfassungData['serviceauftrag']);
|
|
|
|
$status['status']=1;
|
|
$status['statusText']='';
|
|
}else{
|
|
$status['status']=0;
|
|
$status['statusText'] = 'Die Zeiterfassung konnte nicht kopiert werden, da das Datum im Zeitbereich liegt der bereits geschlossen ist.';
|
|
}
|
|
|
|
echo json_encode($status);
|
|
$this->app->ExitXentral();
|
|
break;
|
|
|
|
case 'delzeiterfassung':
|
|
$id=$this->app->Secure->GetPOST('id');
|
|
$check = $this->app->DB->Select("SELECT id FROM zeiterfassung WHERE adresse='".$this->app->User->GetAdresse()."' AND id='$id' AND id>0 LIMIT 1");
|
|
$checkdatum = $this->app->DB->Select("SELECT DATE_FORMAT(von,'%Y-%m-%d') FROM zeiterfassung WHERE adresse='".$this->app->User->GetAdresse()."' AND id='$id' AND id>0 LIMIT 1");
|
|
|
|
$checkzeit = $this->app->erp->ZeiterfassungAllowEdit($checkdatum);
|
|
|
|
if($check == $id && $check > 0 && $checkzeit)
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='$check' LIMIT 1");
|
|
$status['status']=1;
|
|
$status['statusText']='';
|
|
|
|
} else if ($checkzeit==false)
|
|
{
|
|
$status['status']=0;
|
|
$status['statusText']='Die Zeit ist zu alt und darf daher nicht mehr bearbeitet werden!';
|
|
}
|
|
else {
|
|
$status['status']=0;
|
|
$status['statusText']='Diese Zeiterfassung konnte nicht gelöscht werden (fehlende Rechte)';
|
|
}
|
|
echo json_encode($status);
|
|
exit;
|
|
break;
|
|
|
|
case 'savezeiterfassung':
|
|
$id=$this->app->Secure->GetPOST('id');
|
|
$start=$this->app->Secure->GetPOST('start');
|
|
$end=$this->app->Secure->GetPOST('end');
|
|
$datum=$this->app->Secure->GetPOST('datum');
|
|
$aufgabe=$this->app->Secure->GetPOST('aufgabe');
|
|
$beschreibung=$this->app->Secure->GetPOST('beschreibung');
|
|
$internerkommentar=$this->app->Secure->GetPOST('internerkommentar');
|
|
$ort=$this->app->Secure->GetPOST('ort');
|
|
$art=$this->app->Secure->GetPOST('art');
|
|
|
|
$checkvon = (int)str_replace(':','',$this->app->Secure->GetPOST('start'));
|
|
$checkbis = (int)str_replace(':','',$this->app->Secure->GetPOST('end'));
|
|
if ($checkbis <= $checkvon) {
|
|
$status['status']=0;
|
|
$status['statusText']='Fehler! Zeit bis ist kleiner bzw gleich als Zeit von!';
|
|
header('Content-Type: application/json');
|
|
echo json_encode($status);
|
|
$this->app->ExitXentral();
|
|
}
|
|
|
|
$projekt_manuell=$this->app->Secure->GetPOST('projekt_manuell');
|
|
$arbeitspaket=$this->app->Secure->GetPOST('arbeitspaket');
|
|
$adresse_abrechnung=$this->app->Secure->GetPOST('adresse_abrechnung');
|
|
$auftragpositionid=$this->app->Secure->GetPOST('auftragpositionid');
|
|
$auftrag=$this->app->Secure->GetPOST('auftrag');
|
|
$produktion=$this->app->Secure->GetPOST('produktion');
|
|
$serviceauftrag=$this->app->Secure->GetPOST('serviceauftrag');
|
|
$abrechnen=$this->app->Secure->GetPOST('abrechnen');
|
|
|
|
$datum = $this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1');
|
|
|
|
$adresse_abrechnung = trim ($adresse_abrechnung);
|
|
$adresse_abrechnung = substr ($adresse_abrechnung , 0 , (strpos ($adresse_abrechnung , ' ')));
|
|
$adresse_abrechnung = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='$adresse_abrechnung' AND kundennummer!='' LIMIT 1");
|
|
|
|
$auftrag = trim ($auftrag);
|
|
$auftrag = substr ($auftrag , 0 , (strpos ($auftrag , ' ')));
|
|
$auftrag = $this->app->DB->Select("SELECT id FROM auftrag WHERE belegnr='$auftrag' AND belegnr!='' LIMIT 1");
|
|
|
|
$string = $auftragpositionid;
|
|
$string = trim ($string);
|
|
$string = substr ($string , 0 , (strpos ($string , ' ')));
|
|
$tmpauftrag = substr ($string , 0 , (strrpos ($string , '-')));
|
|
$tmpauftrag = $this->app->DB->Select("SELECT id FROM auftrag WHERE belegnr='$tmpauftrag' AND belegnr!='' LIMIT 1");
|
|
$auftragpositionsort = substr ($string , (strrpos ($string , '-')+1),strlen($string));
|
|
$auftragpositionid = $this->app->DB->Select("SELECT id FROM auftrag_position WHERE auftrag='$tmpauftrag' AND sort='$auftragpositionsort' LIMIT 1");
|
|
|
|
$string = $produktion;
|
|
$string = trim ($string);
|
|
$produktion = substr ($string , 0 , (strpos ($string , ' ')));
|
|
$produktion = $this->app->DB->Select("SELECT id FROM produktion WHERE belegnr='$produktion' AND belegnr!='' LIMIT 1");
|
|
|
|
$arbeitspaket = strstr($arbeitspaket, ' ', true);
|
|
$arbeitspaket = $this->app->DB->Select("SELECT id FROM arbeitspaket WHERE id='".$arbeitspaket."' LIMIT 1");
|
|
|
|
/* $serviceauftrag = reset(explode(' ',$serviceauftrag));
|
|
$serviceauftrag = $this->app->DB->Select("SELECT id FROM serviceauftrag WHERE belegnr='".$serviceauftrag."' LIMIT 1");*/
|
|
|
|
// Projekt grabben und notfalls wieder anzeigen
|
|
$projekt_kennung = reset(explode(' ',$projekt_manuell));
|
|
$projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='".$projekt_kennung."' LIMIT 1");
|
|
|
|
$checkzeit = $this->app->erp->ZeiterfassungAllowEdit($datum);
|
|
|
|
if($checkzeit)
|
|
{
|
|
if($id > 0)
|
|
{
|
|
$this->app->DB->Update("UPDATE zeiterfassung SET aufgabe='$aufgabe',beschreibung='$beschreibung',ort='$ort',internerkommentar='$internerkommentar',art='$art',adresse_abrechnung='$adresse_abrechnung',von='".$datum." ".$start."',bis='".$datum." ".$end."',
|
|
abrechnen='$abrechnen',arbeitspaket='$arbeitspaket',auftrag='$auftrag',produktion='$produktion',auftragpositionid='$auftragpositionid',projekt='$projekt',serviceauftrag='$serviceauftrag' WHERE id='$id' LIMIT 1");
|
|
}
|
|
else {
|
|
$this->app->erp->AddArbeitszeit($this->app->User->GetAdresse(), $datum.' '.$start, $datum.' '.$end, $aufgabe, $beschreibung,$ort, $projekt, $arbeitspaket,$art,$adresse_abrechnung,$abrechnen,'',
|
|
'',0,'',0,$internerkommentar,$auftrag,$produktion,0,$auftragpositionid,$serviceauftrag);
|
|
//$this->app->erp->AddArbeitszeit($adr_id, $start, $end, $aufgabe, $beschreibung,$ort, $projekt, $paketauswahl,$art,$kunde="",$abrechnen="",$verrechnungsart="",$kostenstelle="",$abgerechnet="0",$gps="",$aufgabeid=0,$internerkommentar="",$auftrag=0,$produktion=0, $preis = 0,$auftragpositionid="");
|
|
}
|
|
$status['status']=1;
|
|
$status['statusText']='';
|
|
} else {
|
|
$status['status']=0;
|
|
$status['statusText']='Die Zeiterfassung konnte nicht angelegt werden da das Datum im Zeitbereich liegt der bereits geschlossen ist.';
|
|
}
|
|
echo json_encode($status);
|
|
exit;
|
|
break;
|
|
case 'updatezeiterfassung':
|
|
$eid=$this->app->Secure->GetGET('eid');
|
|
$start=$this->app->Secure->GetGET('start');
|
|
$end=$this->app->Secure->GetGET('end');
|
|
|
|
$datum = strstr($start, ' ', true);
|
|
$checkzeit = $this->app->erp->ZeiterfassungAllowEdit($datum);
|
|
if($eid > 0 && $checkzeit)
|
|
{
|
|
$this->app->DB->Update("UPDATE zeiterfassung SET von='$start', bis='$end' WHERE id='$eid' LIMIT 1");
|
|
}
|
|
else if(!$checkzeit)
|
|
{
|
|
$status['status']=0;
|
|
$status['statusText']='Die Zeiterfassung konnte nicht angelegt werden da das Datum im Zeitbereich liegt der bereits geschlossen ist.';
|
|
echo json_encode($status);
|
|
exit;
|
|
}
|
|
break;
|
|
|
|
}
|
|
|
|
header('Content-type: application/json');
|
|
echo json_encode($data);
|
|
exit;
|
|
}
|
|
|
|
|
|
$id=$this->app->Secure->GetGET('id');
|
|
if($msg=='' && $id <=0){
|
|
$this->app->User->SetParameter('zeiterfassung_create_datumzeiterfassung', '');
|
|
}
|
|
|
|
|
|
// $this->app->erp->MenuEintrag("index.php?module=zeiterfassung&action=list","Übersicht");
|
|
// $this->app->erp->MenuEintrag("index.php?module=zeiterfassung&action=create","Neue Zeiterfassung");
|
|
|
|
if($back=='zeiterfassung' || $cmd=='extern'){
|
|
$this->ZeiterfassungMenu();
|
|
}
|
|
else {
|
|
$this->app->erp->StartseiteMenu();
|
|
// $this->app->Tpl->Add(KURZUEBERSCHRIFT,"Zeiterfassung");
|
|
}
|
|
|
|
$id = $this->app->User->GetId();
|
|
if(is_numeric($id)){
|
|
$adr_id = $this->app->DB->Select("SELECT adresse FROM user WHERE id='$id'");
|
|
}
|
|
|
|
|
|
if($this->app->erp->Firmendaten('zeiterfassung_abrechnenvorausgewaehlt')=='1' && $this->app->Secure->GetGET('id') <=0)
|
|
{
|
|
$this->app->Tpl->Set('ABRECHNEN','checked');
|
|
}
|
|
|
|
|
|
$this->ZeiterfassungManuell($adr_id);
|
|
//$this->app->Tpl->Parse(PAGE,"zeiterfassung_create.tpl");
|
|
}
|
|
|
|
public function ZeiterfassungListUser()
|
|
{
|
|
//$this->app->Tpl->Add(KURZUEBERSCHRIFT,"Zeiterfassung");
|
|
$this->app->Tpl->Set('UEBERSCHRIFT','Zeiterfassung');
|
|
$this->app->erp->StartseiteMenu();
|
|
|
|
if($this->app->Secure->GetGET('do')=='stornieren'){
|
|
$lid = $this->app->Secure->GetGET('lid');
|
|
$back = $this->app->Secure->GetGET('back');
|
|
if($lid!='')
|
|
{
|
|
if($back=='zeiterfassung') {
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='".$lid."'");
|
|
header('Location: index.php?module=zeiterfassung&action=list');
|
|
}
|
|
else if($back=='zeiterfassungmitarbeiter') {
|
|
$id = $this->app->Secure->GetGET('id');
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='".$lid."'");
|
|
header("Location: index.php?module=adresse&action=zeiterfassung&id=$id");
|
|
}
|
|
else if($back=='service') {
|
|
$id = $this->app->Secure->GetGET('id');
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='".$lid."'");
|
|
header("Location: index.php?module=service&action=list");
|
|
}
|
|
else if($back=='aufgabe') {
|
|
$id = $this->app->Secure->GetGET('id');
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='".$lid."'");
|
|
header("Location: index.php?module=aufgaben&action=list");
|
|
}
|
|
|
|
else if($back=='zeiterfassunguser')
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id='".$lid."' AND gebucht_von_user='".$this->app->User->GetID()."'");
|
|
header('Location: index.php?module=zeiterfassung&action=listuser');
|
|
}
|
|
else if ($back=='projekt')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
$back_sid = $this->app->Secure->GetGET('back_sid');
|
|
header("Location: index.php?module=projekt&action=zeit&id=$back_id&sid=$back_sid");
|
|
}
|
|
else if ($back=='lohnabrechnung')
|
|
{
|
|
header('Location: index.php?module=lohnabrechnung&action=list');
|
|
}
|
|
else if ($back=='adresse')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
header("Location: index.php?module=adresse&action=abrechnungzeit&id=$back_id");
|
|
}
|
|
else{
|
|
header('Location: index.php?module=zeiterfassung&action=create#tabs-1');
|
|
}
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$this->ZeiteerfassungEigeneUebersicht();
|
|
$this->app->YUI->TableSearch('TAB1','zeiterfassunguser', 'show','','',basename(__FILE__), __CLASS__);
|
|
|
|
//TODO wenn man das Recht hat
|
|
/*if(0)
|
|
{
|
|
$this->app->Tpl->Add('TAB1',
|
|
"<table width=\"100%\"><tr><td align=\"center\"><input type=\"submit\" value=\"in Arbeitsnachweis übernehmen\"> ".
|
|
"<input type=\"submit\" value=\"in Auftrag übernehmen\"> ".
|
|
"<input type=\"submit\" value=\"in Lieferschein übernehmen\"> <input type=\"submit\" value=\"als abgeschlossen markieren\"></td></tr></table>");
|
|
}*/
|
|
|
|
$von = $this->app->User->GetParameter('zeiterfassung_listuser_von');
|
|
if($von!='') {
|
|
$this->app->Tpl->Set('VON',$von);
|
|
}
|
|
|
|
$bis = $this->app->User->GetParameter('zeiterfassung_listuser_bis');
|
|
if($bis!='') {
|
|
$this->app->Tpl->Set('BIS',$bis);
|
|
}
|
|
|
|
|
|
|
|
$this->app->YUI->DatePicker('von');
|
|
$this->app->YUI->DatePicker('bis');
|
|
|
|
$this->app->YUI->AutoSaveUserParameter('von','zeiterfassung_listuser_von',"var oTable = $('#zeiterfassunguser').DataTable( );oTable.ajax.reload();");
|
|
$this->app->YUI->AutoSaveUserParameter('bis','zeiterfassung_listuser_bis',"var oTable = $('#zeiterfassunguser').DataTable( );oTable.ajax.reload();");
|
|
|
|
$this->app->Tpl->Parse('PAGE','zeiterfassunguseruebersicht.tpl');
|
|
}
|
|
|
|
function ZeiteerfassungEigeneUebersicht()
|
|
{
|
|
$datumzeiterfassung = $this->app->User->GetParameter('zeiterfassung_create_datumzeiterfassung');
|
|
if($this->app->erp->CheckDateValidate($datumzeiterfassung)){
|
|
$datum = $this->app->User->GetParameter('zeiterfassung_create_datumzeiterfassung');
|
|
}
|
|
else{
|
|
$datum = date('Y-m-d', time());
|
|
}
|
|
|
|
/*if(0){
|
|
$heute = (int)$this->app->erp->ZeitGesamtArbeit($this->app->User->GetAdresse(),$datum).":".round(fmod($this->app->erp->ZeitGesamtArbeit($this->app->User->GetAdresse(),$datum),1)*60);//Alternative Zeitangabe
|
|
$pause =(int)$this->app->erp->ZeitGesamtPause($this->app->User->GetAdresse(),$datum).":".round(fmod($this->app->erp->ZeitGesamtPause($this->app->User->GetAdresse(),"","",$datum),1)*60);
|
|
$wocheist = (int)$this->app->erp->ZeitGesamtWocheIst($this->app->User->GetAdresse(),"","",$datum).":".round(fmod($this->app->erp->ZeitGesamtWocheIst($this->app->User->GetAdresse(),"","",$datum),1)*60);
|
|
$monatist = (int)$this->app->erp->ZeitGesamtMonatIst($this->app->User->GetAdresse(),"","",$datum).":".round(fmod($this->app->erp->ZeitGesamtMonatIst($this->app->User->GetAdresse(),"","",$datum),1)*60);
|
|
$monatsoll = (int)$this->app->erp->ZeitGesamtMonatSoll($this->app->User->GetAdresse(),"","",$datum).":".round(fmod($this->app->erp->ZeitGesamtMonatSoll($this->app->User->GetAdresse(),"","",$datum),1)*60);
|
|
}else{*/
|
|
$heute = number_format($this->app->erp->ZeitGesamtArbeit($this->app->User->GetAdresse(),$datum),2,",","");
|
|
$pause = number_format($this->app->erp->ZeitGesamtPause($this->app->User->GetAdresse(),$datum),2,",","");
|
|
$wocheist = number_format($this->app->erp->ZeitGesamtWocheIst($this->app->User->GetAdresse(),"","",$datum),2,",","");
|
|
$monatist = number_format($this->app->erp->ZeitGesamtMonatIst($this->app->User->GetAdresse(),"","",$datum),2,",","");
|
|
$monatsoll = number_format($this->app->erp->ZeitGesamtMonatSoll($this->app->User->GetAdresse(),"","",$datum),2,",","");
|
|
//}
|
|
$this->app->Tpl->Set('HEUTE',$heute);
|
|
$this->app->Tpl->Set('PAUSE',$pause);
|
|
$this->app->Tpl->Set('WOCHEIST',$wocheist);
|
|
$this->app->Tpl->Set('MONATIST',$monatist);
|
|
$this->app->Tpl->Set('MONATSOLL',$monatsoll);
|
|
|
|
$offen = $this->app->erp->ZeitGesamtWocheOffen($this->app->User->GetAdresse());
|
|
if($offen > 0)
|
|
{
|
|
$this->app->Tpl->Set('WOCHESOLL',number_format($this->app->erp->ZeitGesamtWocheSoll($this->app->User->GetAdresse(),"","",$datum),2,",",""));
|
|
$this->app->Tpl->Set('OFFEN',"<font color=blue>".number_format($offen,2,",","")."</font>");
|
|
} else if ($offen < 0)
|
|
{
|
|
$this->app->Tpl->Set('WOCHESOLL','-');
|
|
$this->app->Tpl->Set('OFFEN','-');
|
|
}
|
|
else {
|
|
$this->app->Tpl->Set('WOCHESOLL',number_format($this->app->erp->ZeitGesamtWocheSoll($this->app->User->GetAdresse(),"","",$datum),2,",",""));
|
|
$this->app->Tpl->Set('OFFEN',number_format($offen,2,",",""));
|
|
}
|
|
|
|
$this->app->Tpl->Set('URLAUBOFFEN',number_format($this->app->erp->ZeitUrlaubOffen($this->app->User->GetAdresse(), $datum),2,",",""));
|
|
$this->app->Tpl->Set('URLAUBGENOMMEN',number_format($this->app->erp->ZeitUrlaubGenommen($this->app->User->GetAdresse(), $datum),2,",",""));
|
|
|
|
}
|
|
|
|
|
|
|
|
function ZeiterfassungList()
|
|
{
|
|
// $this->app->Tpl->Set(UEBERSCHRIFT,"Zeiterfassung");
|
|
$this->ZeiterfassungMenu();
|
|
|
|
if($this->app->Secure->GetGET('do')=='stornieren'){
|
|
$lid = $this->app->Secure->GetGET('lid');
|
|
$back = $this->app->Secure->GetGET('back');
|
|
if($lid!='')
|
|
{
|
|
$this->app->DB->Delete("DELETE FROM zeiterfassung WHERE id=$lid");
|
|
|
|
if($back=='zeiterfassung')
|
|
header('Location: index.php?module=zeiterfassung&action=list');
|
|
else if($back=='zeiterfassunguser')
|
|
header('Location: index.php?module=zeiterfassung&action=listuser');
|
|
else if($back=='service')
|
|
header('Location: index.php?module=service&action=list');
|
|
else if($back=='aufgabe')
|
|
header('Location: index.php?module=aufgaben&action=list');
|
|
else if($back=='zeiterfassungmitarbeiter')
|
|
{
|
|
$sid = $this->app->Secure->GetGET('sid');
|
|
header('Location: index.php?module=adresse&action=zeiterfassung&id=$sid');
|
|
}
|
|
else if ($back=='projekt')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
$back_sid = $this->app->Secure->GetGET('back_sid');
|
|
header("Location: index.php?module=projekt&action=zeit&id=$back_id&sid=$back_sid");
|
|
}
|
|
else if ($back=='lohnabrechnung')
|
|
{
|
|
header('Location: index.php?module=lohnabrechnung&action=list');
|
|
}
|
|
else if ($back=='adresse')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
header("Location: index.php?module=adresse&action=abrechnungzeit&id=$back_id");
|
|
}
|
|
else
|
|
header('Location: index.php?module=zeiterfassung&action=create#tabs-1');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
$this->app->YUI->DatePicker('von');
|
|
$this->app->YUI->DatePicker('bis');
|
|
$this->app->YUI->AutoComplete('projekt','projektname');
|
|
$this->app->YUI->AutoComplete('mitarbeiter','mitarbeiter');
|
|
$this->app->YUI->AutoComplete('mitarbeiterkalenderansicht','mitarbeiter');
|
|
|
|
$this->app->YUI->TableSearch('TAB1','zeiterfassung', 'show','','',basename(__FILE__), __CLASS__);
|
|
$this->app->YUI->TableSearch('TAB2','zeiterfassungkundenoffen', 'show','','',basename(__FILE__), __CLASS__);
|
|
//$this->app->YUI->TableSearch('TAB3',"zeiterfassungprojektoffen");
|
|
|
|
$mitarbeiterkalenderansicht = $this->app->Secure->GetPOST('mitarbeiterkalenderansicht');
|
|
if($mitarbeiterkalenderansicht!='')
|
|
{
|
|
$tmpmitarbeiter = strtok($mitarbeiterkalenderansicht, ' ');
|
|
$mitarbeiterid = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer='$tmpmitarbeiter' AND mitarbeiternummer!='' LIMIT 1");
|
|
$this->app->User->SetParameter('zeiterfassung_list_mitarbeiterkalenderansicht',$mitarbeiterid);
|
|
}
|
|
|
|
$mitarbeiterid = $this->app->User->GetParameter('zeiterfassung_list_mitarbeiterkalenderansicht');
|
|
$mitarbeiterkalenderansicht = $this->app->DB->Select("SELECT concat(mitarbeiternummer,' ',name) FROM adresse WHERE id='".$mitarbeiterid."'");
|
|
$this->app->Tpl->Set('MITARBEITERKALENDERANSICHT',$mitarbeiterkalenderansicht);
|
|
|
|
//TODO wenn man das Recht hat
|
|
/*if(0)
|
|
{
|
|
$this->app->Tpl->Add('TAB1',
|
|
"<table width=\"100%\"><tr><td align=\"center\"><input type=\"submit\" value=\"in Arbeitsnachweis übernehmen\"> ".
|
|
"<input type=\"submit\" value=\"in Auftrag übernehmen\"> ".
|
|
"<input type=\"submit\" value=\"in Lieferschein übernehmen\"> <input type=\"submit\" value=\"als abgeschlossen markieren\"></td></tr></table>");
|
|
}*/
|
|
|
|
|
|
$this->app->Tpl->Parse('PAGE','zeiterfassunguebersicht.tpl');
|
|
}
|
|
|
|
|
|
function ZeiterfassungMenu()
|
|
{
|
|
$this->app->erp->Headlines('Zeiterfassung');
|
|
$this->app->erp->MenuEintrag('index.php?module=zeiterfassung&action=list','Übersicht');
|
|
$this->app->erp->MenuEintrag('index.php?module=zeiterfassung&action=create&cmd=extern','Neue Zeiterfassung');
|
|
}
|
|
|
|
|
|
public function ZeiterfassungEdit()
|
|
{
|
|
$back = $this->app->Secure->GetGET('back');
|
|
if($back=='zeiterfassung'){
|
|
$this->ZeiterfassungMenu();
|
|
}
|
|
else{
|
|
$this->app->erp->StartseiteMenu();
|
|
}
|
|
|
|
$this->ZeiterfassungManuell($adr_id,true);
|
|
|
|
//parent::ZeiterfassungEdit();
|
|
}
|
|
|
|
function ArbeitspaketReadDetails($index,&$ref)
|
|
{
|
|
$pakete = $ref->app->DB->SelectArr("SELECT * FROM arbeitspakete WHERE id='$index'");
|
|
$myArr = $pakete[0];
|
|
|
|
$ref->app->Tpl->Set('AUFGABE', $myArr['aufgabe']);
|
|
$ref->app->Tpl->Set('PROJEKT', $myArr['projekt']);
|
|
$this->app->Tpl->Set('BESCHREIBUNG', $myArr['beschreibung']);
|
|
$this->app->Tpl->Set('ZEITGEPLANT', $myArr['zeit_geplant']);
|
|
$this->app->Tpl->Set('KOSTENSTELLE', $myArr['kostenstelle']);
|
|
$this->app->Tpl->Set('STATUS', $myArr['status']);
|
|
}
|
|
|
|
public function ArbeitspaketDetails()
|
|
{
|
|
$this->app->Tpl->Set('HEADING','Details zum Arbeitspaket');
|
|
|
|
$this->app->Tpl->Set('SUBSUBHEADING', 'Details');
|
|
$this->app->Tpl->Set('DATUM', date('d.m.Y', time()));
|
|
|
|
$this->app->Tpl->Add('TABS',
|
|
'<li><h2>Zeiterfassung</h2></li>');
|
|
|
|
$this->app->Tpl->Add('TABS',
|
|
"<li><a href=\"index.php?module=zeiterfassung&action=list\">Zurück zur Übersicht</a></li>");
|
|
|
|
// Adress-ID mit USER-ID abfragen
|
|
$id = $this->app->User->GetId();
|
|
if($id!=''){
|
|
$adr_id = $this->app->DB->Select("SELECT adresse FROM user WHERE id=$id");
|
|
}
|
|
|
|
$ap_id = $this->app->Secure->GetGET('lid');
|
|
|
|
$pakete = $this->app->DB->SelectArr('SELECT * FROM arbeitspaket WHERE id='.$ap_id.' AND adresse='.$adr_id);
|
|
$myArr = $pakete[0];
|
|
|
|
$this->app->Tpl->Set('AUFGABE', $myArr['aufgabe']);
|
|
$this->app->Tpl->Set('PROJEKT', $myArr['projekt']);
|
|
$this->app->Tpl->Set('BESCHREIBUNG', $myArr['beschreibung']);
|
|
$this->app->Tpl->Set('ZEITGEPLANT', $myArr['zeit_geplant']);
|
|
$this->app->Tpl->Set('KOSTENSTELLE', $myArr['kostenstelle']);
|
|
$this->app->Tpl->Set('STATUS', $myArr['status']);
|
|
|
|
if($myArr['abgabe'] == 'abgegeben'){
|
|
$this->app->Tpl->Set('ABGABE', 'fertig');
|
|
}
|
|
else{
|
|
$this->app->Tpl->Set('ABGABE', '<input type="checkbox" name="abgabefeld" value="nicht abgegeben">');
|
|
}
|
|
|
|
if($this->app->Secure->GetPOST("abgabefeld") == 'nicht abgegeben'){
|
|
$this->app->DB->Update('UPDATE arbeitspakete SET abgabe="abgegeben", abgabedatum="'.date('Y-m-d').'" WHERE id='.$myArr['id']);
|
|
$myArr['abgabe'] = 'abgegeben';
|
|
}
|
|
$this->app->Tpl->Parse('INHALT', 'arbeitspaket_details.tpl');
|
|
$this->app->Tpl->Parse('PAGE','rahmen_submit_extend.tpl');
|
|
}
|
|
|
|
|
|
function ZeiterfassungManuell($adr_id)
|
|
{
|
|
$this->app->Tpl->Set('HEADING','Zeiterfassung (Übersicht)');
|
|
|
|
$this->app->Tpl->Set('SUBSUBHEADING', 'Zeit erfassen');
|
|
|
|
$datumzeiterfassung = $this->app->Secure->GetPOST('datumzeiterfassung');
|
|
$datumzeiterfassung = $this->app->String->Convert($datumzeiterfassung ,'%1.%2.%3','%3-%2-%1');
|
|
|
|
if($this->app->erp->CheckDateValidate($datumzeiterfassung)) {
|
|
$this->app->User->SetParameter('zeiterfassung_create_datumzeiterfassung',$datumzeiterfassung);
|
|
}
|
|
|
|
$datumzeiterfassung = $this->app->User->GetParameter('zeiterfassung_create_datumzeiterfassung');
|
|
|
|
if(!$this->app->erp->CheckDateValidate($datumzeiterfassung)) {
|
|
$datumzeiterfassung = date('Y-m-d');
|
|
}
|
|
|
|
$this->app->Tpl->Set('ZURUECKDATUM',$this->app->DB->Select("SELECT DATE_FORMAT(DATE_SUB('$datumzeiterfassung',INTERVAL 1 DAY),'%d.%m.%Y')"));
|
|
$this->app->Tpl->Set('VORWAERTSDATUM',$this->app->DB->Select("SELECT DATE_FORMAT(DATE_ADD('$datumzeiterfassung',INTERVAL 1 DAY),'%d.%m.%Y')"));
|
|
|
|
|
|
$this->app->Tpl->Set('DATUMZEITERFASSUNG',$this->app->String->Convert($datumzeiterfassung,'%3-%2-%1','%1.%2.%3'));
|
|
if($datumzeiterfassung!=date('Y-m-d')){
|
|
$this->app->Tpl->Set('ANZEIGEDATUMZEITERFASSUNG', $this->app->String->Convert($datumzeiterfassung, '%3-%2-%1', '%1.%2.%3'));
|
|
}
|
|
else{
|
|
$this->app->Tpl->Set('ANZEIGEDATUMZEITERFASSUNG', 'heute');
|
|
}
|
|
|
|
|
|
if($this->app->erp->ModulVorhanden('fahrtenbuch'))
|
|
{
|
|
$spalte = "if((SELECT f.id FROM fahrtenbuch_fahrten f WHERE f.zeiterfassung=z.id) > 0,'ja','-') as Fahrt,";
|
|
} else {
|
|
$spalte='';
|
|
}
|
|
|
|
//DATE_FORMAT(z.bis, '%d.%m.') AS Datum,
|
|
$table = new EasyTable($this->app);
|
|
$table->Query("SELECT
|
|
if(z.adresse_abrechnung > 0, CONCAT('<i style=color:#999>Kunde: ', a.name, ' (', a.kundennummer,')</i><br />', z.aufgabe), z.aufgabe) as Taetigkeit,
|
|
DATE_FORMAT(z.von,'%H:%i') AS Von,
|
|
CONCAT(TIME_FORMAT(TIMEDIFF(z.bis, z.von),'%H:%i'),IF(z.abrechnen=1,' (A)','')) AS Dauer,
|
|
p.abkuerzung as Projekt,
|
|
$spalte
|
|
|
|
CONCAT('<a href=\"#\" onclick=\"if(!confirm(\'Wirklich stornieren?\')) return false; else window.location.href=\'index.php?module=zeiterfassung&action=list&do=stornieren&lid=', z.id, '\'\"><img src=\"./themes/new/images/delete.svg\"></a> <a href=\"index.php?module=zeiterfassung&action=create&id=', z.id, '#tabs-1\"><img src=\"./themes/new/images/edit.svg\"></a> <a href=\"index.php?module=zeiterfassung&action=create©id=',z.id,'%&back=zeiterfassunguser\"><img src=\"./themes/new/images/copy.svg\"</a>')
|
|
FROM zeiterfassung z LEFT JOIN adresse a ON z.adresse_abrechnung = a.id LEFT JOIN projekt p ON p.id=z.projekt LEFT JOIN arbeitspaket ap ON z.arbeitspaket=ap.id
|
|
WHERE z.gebucht_von_user=".$this->app->User->GetID()." AND DATE_FORMAT(z.von, '%Y-%m-%d') = '$datumzeiterfassung'
|
|
ORDER BY z.von
|
|
");
|
|
$table->DisplayNew('BUCHUNGEN','Aktion','noAction','false',0,0,false);
|
|
$this->app->YUI->DatePicker('datumzeiterfassung');
|
|
|
|
|
|
//wenn id und kein post einmalig aus db holen
|
|
$id = $this->app->Secure->GetGET('id');
|
|
$id_old = $id;
|
|
$copyid = $this->app->Secure->GetGET('copyid');
|
|
if(empty($id) && !empty($copyid))
|
|
{
|
|
$id = $copyid;
|
|
}
|
|
$projektabgeschlossen = false;
|
|
if($id!='' && $this->app->Secure->GetPOST('art')=='')
|
|
{
|
|
$tmp = $this->app->DB->SelectArr("SELECT *,DATE_FORMAT(von,'%H:%i') as von, if(bis!='0000-00-00 00:00:00',DATE_FORMAT(bis,'%H:%i'),'') as bis, DATE_FORMAT(von,'%d.%m.%Y') as datum FROM zeiterfassung WHERE id='$id' LIMIT 1");
|
|
$aufgabe = $tmp[0]['aufgabe'];
|
|
$art = $tmp[0]['art'];
|
|
$ort = $tmp[0]['ort'];
|
|
$gps = $tmp[0]['gps'];
|
|
$beschreibung = $tmp[0]['beschreibung'];
|
|
$internerkommentar = $tmp[0]['internerkommentar'];
|
|
$paketauswahl = $tmp[0]['arbeitspaket'];
|
|
$abrechnen = $tmp[0]['abrechnen'];
|
|
$abgerechnet = $tmp[0]['abgerechnet'];
|
|
|
|
|
|
$this->app->User->SetParameter('teilprojekt_filter',$tmp[0]['projekt']);
|
|
|
|
// if($paketauswahl > 0){
|
|
// $this->app->Tpl->Set(PROJEKTROW,"none");
|
|
// }
|
|
|
|
if($tmp[0]['adresse']!=$this->app->User->GetAdresse())
|
|
{
|
|
$this->app->Tpl->Set('ANDERERMITARBEITER','checked');
|
|
$this->app->Tpl->Set('DISPLAYANDERERMITARBEITER','');
|
|
} else {
|
|
$this->app->Tpl->Set('DISPLAYANDERERMITARBEITER','none');
|
|
}
|
|
|
|
$mitarbeiter = $this->app->DB->Select("SELECT CONCAT(mitarbeiternummer,' ',name) FROM adresse WHERE id='".$tmp[0]['adresse']."'");
|
|
$adresse_abrechnung = $tmp[0]['adresse_abrechnung'];
|
|
$projektabgeschlossen = $this->app->DB->Select("SELECT id FROM projekt WHERE id = '".$tmp[0]['projekt']."' AND status = 'abgeschlossen' LIMIT 1");
|
|
$projekt_komplett = $this->app->DB->Select("SELECT CONCAT(abkuerzung,' ',name) FROM projekt WHERE id='".$tmp[0]['projekt']."'");
|
|
|
|
$check = $this->app->DB->Select("SHOW TABLES LIKE 'SERVICEAUFTRAG'");
|
|
|
|
if (!empty($check)) {
|
|
$serviceauftrag_anzeige = $this->app->DB->Select("SELECT belegnr FROM serviceauftrag WHERE id='".$tmp[0]['serviceauftrag']."' LIMIT 1");
|
|
}
|
|
|
|
$adresse_abrechnung_komplett = $this->app->DB->Select("SELECT CONCAT(kundennummer,' ',name) FROM adresse WHERE id='".$tmp[0]['adresse_abrechnung']."'");
|
|
|
|
if($tmp[0]['adresse_abrechnung']<=0){
|
|
$adresse_abrechnung_komplett = '';
|
|
}
|
|
|
|
$mitarbeiter_komplett = $this->app->DB->Select("SELECT CONCAT(mitarbeiternummer,' ',name) FROM adresse WHERE id='".$tmp[0]['adresse']."'");
|
|
$kostenstelle_komplett = $this->app->DB->Select("SELECT CONCAT(nummer,' ',beschreibung) FROM kostenstellen WHERE nummer='".$tmp[0]['kostenstelle']."'");
|
|
$verrechnungsart_komplett = $this->app->DB->Select("SELECT CONCAT(nummer,' ',beschreibung) FROM verrechnungsart WHERE nummer='".$tmp[0]['verrechnungsart']."'");
|
|
$auftrag_komplett = $this->app->DB->Select("SELECT CONCAT(belegnr,' ',name,' ', DATE_FORMAT(datum,'%d.%m.%Y')) FROM auftrag WHERE id='".$tmp[0]['auftrag']."'");
|
|
$auftragpositionid_komplett = $this->app->DB->Select("SELECT CONCAT(a.belegnr,'-',ap.sort,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y'),' ',ap.bezeichnung) FROM auftrag_position ap LEFT JOIN auftrag a ON ap.auftrag=a.id WHERE ap.id='".$tmp[0]['auftragpositionid']."'");
|
|
$produktion_komplett = $this->app->DB->Select("SELECT CONCAT(belegnr,' ',name,' ', DATE_FORMAT(datum,'%d.%m.%Y')) FROM produktion WHERE id='".$tmp[0]['produktion']."'");
|
|
|
|
$vonZeit = $tmp[0]['von'];
|
|
$bisZeit = $tmp[0]['bis'];
|
|
$datum = $tmp[0]['datum'];
|
|
} else {
|
|
if($this->app->Secure->GetPOST('datum')=='') {
|
|
$datumzeiterfassung = $this->app->User->GetParameter('zeiterfassung_create_datumzeiterfassung');
|
|
if($this->app->erp->CheckDateValidate($datumzeiterfassung)){
|
|
$datum = $this->app->String->Convert($this->app->User->GetParameter('zeiterfassung_create_datumzeiterfassung'), '%3-%2-%1', '%1.%2.%3');
|
|
}
|
|
else{
|
|
$datum = date('d.m.Y', time());
|
|
}
|
|
}
|
|
else {
|
|
$datum = $this->app->Secure->GetPOST('datum');
|
|
$this->app->User->SetParameter('zeiterfassung_create_datumzeiterfassung',$this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1'));
|
|
}
|
|
|
|
$aufgabe = $this->app->Secure->GetPOST('aufgabe');
|
|
|
|
|
|
|
|
$art= $this->app->Secure->GetPOST('art');
|
|
|
|
$vonZeit = $this->app->Secure->GetPOST('vonZeit');
|
|
$bisZeit = $this->app->Secure->GetPOST('bisZeit');
|
|
|
|
$beschreibung = $this->app->Secure->GetPOST('beschreibung');
|
|
$internerkommentar = $this->app->Secure->GetPOST('internerkommentar');
|
|
$projekt = $this->app->Secure->GetPOST('projekt_manuell');
|
|
$serviceauftrag = $this->app->Secure->GetPOST('serviceauftrag');
|
|
$paketauswahl = $this->app->Secure->GetPOST('arbeitspaket');
|
|
$abrechnen = $this->app->Secure->GetPOST('abrechnen');
|
|
$abgerechnet = $this->app->Secure->GetPOST('abgerechnet');
|
|
|
|
$auftrag = $this->app->Secure->GetPOST('auftrag');
|
|
$produktion = $this->app->Secure->GetPOST('produktion');
|
|
$auftragpositionid = $this->app->Secure->GetPOST('auftragpositionid');
|
|
|
|
$mitarbeiter = $this->app->Secure->GetPOST('mitarbeiter');
|
|
$kostenstelle = $this->app->Secure->GetPOST('kostenstelle');
|
|
$verrechnungsart = $this->app->Secure->GetPOST('verrechnungsart');
|
|
|
|
|
|
$ort = $this->app->Secure->GetPOST('ort');
|
|
$gps = $this->app->Secure->GetPOST('gps');
|
|
$adresse_abrechnung = $this->app->Secure->GetPOST('adresse_abrechnung');
|
|
|
|
$mitarbeiter_komplett = $mitarbeiter;
|
|
$kostenstelle_komplett = $kostenstellen;
|
|
$verrechnungsart_komplett = $verrechnungsart;
|
|
$auftrag_komplett = $verrechnungsart;
|
|
$produktion_komplett = $verrechnungsart;
|
|
|
|
$projekt_komplett = $projekt;
|
|
$serviceauftrag_anzeige = $this->app->Secure->GetPOST('serviceauftrag');
|
|
$adresse_abrechnung_komplett = $adresse_abrechnung;
|
|
|
|
// Projekt grabben und notfalls wieder anzeigen
|
|
$paketauswahl = strstr($paketauswahl, ' ', true);
|
|
$paketauswahl = $this->app->DB->Select("SELECT id FROM arbeitspaket WHERE id='".$paketauswahl."' LIMIT 1");
|
|
|
|
|
|
// if($paketauswahl > 0)
|
|
// $this->app->Tpl->Set(PROJEKTROW,'none');
|
|
|
|
if($mitarbeiter!=''){
|
|
$this->app->Tpl->Set('ANDERERMITARBEITER','checked');
|
|
}
|
|
else {
|
|
$this->app->Tpl->Set('DISPLAYANDERERMITARBEITER','none');
|
|
}
|
|
}
|
|
$id = $id_old;
|
|
$datum_db = $this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1');
|
|
$zeiteedit = $this->app->erp->ZeiterfassungAllowEdit($datum_db);
|
|
|
|
$string = $mitarbeiter;
|
|
$string = trim ($string);
|
|
$mitarbeiter = substr ($string , 0 , strpos ($string , ' '));
|
|
|
|
$string = $kostenstelle;
|
|
$string = trim ($string);
|
|
$kostenstelle = substr ($string , 0 , strpos ($string , ' '));
|
|
|
|
$string = $verrechnungsart;
|
|
$string = trim ($string);
|
|
$verrechnungsart = substr ($string , 0 , strpos ($string , ' '));
|
|
|
|
$string = $auftrag;
|
|
$string = trim ($string);
|
|
$auftrag = substr ($string , 0 , strpos ($string , ' '));
|
|
$auftrag = $this->app->DB->Select("SELECT id FROM auftrag WHERE belegnr='$auftrag' AND belegnr!='' LIMIT 1");
|
|
|
|
$string = $auftragpositionid;
|
|
$string = trim ($string);
|
|
$string = substr ($string , 0 , strpos ($string , ' '));
|
|
$tmpauftrag = substr ($string , 0 , (strrpos ($string , '-')));
|
|
$tmpauftrag = $this->app->DB->Select("SELECT id FROM auftrag WHERE belegnr='$tmpauftrag' AND belegnr!='' LIMIT 1");
|
|
$auftragpositionsort = substr ($string , strrpos ($string , '-')+1,strlen($string));
|
|
$auftragpositionid = $this->app->DB->Select("SELECT id FROM auftrag_position WHERE auftrag='$tmpauftrag' AND sort='$auftragpositionsort' LIMIT 1");
|
|
|
|
$string = $produktion;
|
|
$string = trim ($string);
|
|
$produktion = substr ($string , 0 , (strpos ($string , ' ')));
|
|
$produktion = $this->app->DB->Select("SELECT id FROM produktion WHERE belegnr='$produktion' AND belegnr!='' LIMIT 1");
|
|
|
|
|
|
|
|
if($mitarbeiter!=''){
|
|
$adr_id = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer='$mitarbeiter' LIMIT 1");
|
|
}
|
|
|
|
$this->app->YUI->AutoSaveUserParameter('projekt_manuell','teilprojekt_filter');
|
|
$this->app->YUI->AutoSaveUserParameter('projekt_manuell2','teilprojekt_filter');
|
|
$this->app->YUI->AutoComplete('arbeitspaket','arbeitspaket');
|
|
$this->app->YUI->AutoComplete('arbeitspaket2', 'arbeitspaket');
|
|
$this->app->YUI->AutoComplete('schnell_teilprojekt','arbeitspaket');
|
|
$this->app->YUI->AutoComplete('adresse_abrechnung','kunde');
|
|
$this->app->YUI->AutoComplete('adresse_abrechnung2', 'kunde');
|
|
$this->app->YUI->AutoComplete('schnell_kunde','kunde');
|
|
|
|
$checkvorlage = $this->app->DB->Select("SELECT COUNT(id) FROM zeiterfassungvorlage WHERE ausblenden!=1");
|
|
|
|
if($checkvorlage >= 1)
|
|
{
|
|
// $this->app->YUI->AutoComplete('aufgabe','zeiterfassungvorlage');
|
|
// $this->app->YUI->AutoComplete('aufgabe2','zeiterfassungvorlage');
|
|
$this->app->YUI->AutoComplete('schnell_beschreibung','zeiterfassungvorlage');
|
|
$this->app->YUI->AutoComplete('schnell_kundebeschreibung','zeiterfassungvorlage');
|
|
}
|
|
|
|
$this->app->YUI->AutoComplete('mitarbeiter','mitarbeiter');
|
|
|
|
$this->app->YUI->AutoComplete('kostenstelle','kostenstelle');
|
|
$this->app->YUI->AutoComplete('verrechnungsart','verrechnungsart');
|
|
|
|
$this->app->YUI->AutoComplete('auftrag','auftrag');
|
|
$this->app->YUI->AutoComplete('auftragpositionid','alle_auftrag_positionen');
|
|
$this->app->YUI->AutoComplete('produktion','produktion');
|
|
|
|
if($id=='' && $this->app->Secure->GetPOST('vonZeit')=='')
|
|
{
|
|
if($datumzeiterfassung=='') {
|
|
$datumzeiterfassung = date('Y-m-d');
|
|
}
|
|
$vonZeit = $this->app->DB->Select("SELECT DATE_FORMAT(MAX(bis),'%H:%i') FROM zeiterfassung
|
|
WHERE adresse='$adr_id' AND DATE_FORMAT(bis,'%Y-%m-%d')=DATE_FORMAT('$datumzeiterfassung','%Y-%m-%d')");
|
|
|
|
if($this->app->erp->ModulVorhanden('mitarbeiterzeiterfassung'))
|
|
{
|
|
if(!$vonZeit){
|
|
$vonZeit = $this->app->DB->Select("SELECT date_format(standardstartzeit,'%H:%i') FROM mitarbeiterzeiterfassung_einstellungen WHERE adresse = '".$this->app->User->GetAdresse()."' ORDER by id DESC LIMIT 1");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$this->app->Tpl->Set('VONZEIT',!empty($vonZeit)?$vonZeit:'09:00');
|
|
|
|
if($vonZeit==$bisZeit) {
|
|
$bisZeit='';
|
|
}
|
|
$this->app->Tpl->Set('BISZEIT',$bisZeit?$bisZeit:'');
|
|
|
|
/*
|
|
$serviceauftrag = $this->app->Secure->GetPOST('serviceauftrag');
|
|
$serviceauftrag = reset(explode(' ',$serviceauftrag));
|
|
$serviceauftrag = $this->app->DB->Select("SELECT id FROM serviceauftrag WHERE belegnr='".$serviceauftrag."' LIMIT 1");
|
|
*/
|
|
|
|
// Projekt grabben und notfalls wieder anzeigen
|
|
$projekt_kennung = reset(explode(' ',$projekt));
|
|
$projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='".$projekt_kennung."' LIMIT 1");
|
|
|
|
// Kunde
|
|
$adresse_abrechnung = strstr($adresse_abrechnung, ' ', true);
|
|
if($adresse_abrechnung!=''){
|
|
$adresse_kunde = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer='".$adresse_abrechnung."' LIMIT 1");
|
|
}
|
|
else{
|
|
$adresse_kunde = 'NULL';
|
|
}
|
|
|
|
|
|
|
|
if($abrechnen=='1'){
|
|
$this->app->Tpl->Set('ABRECHNEN', 'checked');
|
|
}
|
|
|
|
if($abgerechnet=='1'){
|
|
$this->app->Tpl->Set('ABGERECHNET', 'checked');
|
|
}
|
|
|
|
$this->app->Tpl->Set('DATUM', $datum);
|
|
$this->app->Tpl->Set('PROJEKT_MANUELL',$projekt_komplett);
|
|
$this->app->Tpl->Set('SERVICEAUFTRAG',$serviceauftrag_anzeige);
|
|
|
|
$this->app->Tpl->Set('ADRESSE_ABRECHNUNG',$adresse_abrechnung_komplett);
|
|
$this->app->Tpl->Set('KOSTENSTELLE',$kostenstelle_komplett);
|
|
$this->app->Tpl->Set('VERRECHNUNGSART',$verrechnungsart_komplett);
|
|
|
|
$this->app->Tpl->Set('AUFTRAG',$auftrag_komplett);
|
|
$this->app->Tpl->Set('AUFTRAGPOSITIONID',$auftragpositionid_komplett);
|
|
$this->app->Tpl->Set('PRODUKTION',$produktion_komplett);
|
|
|
|
$this->app->Tpl->Set('AUFGABE',str_replace('"', '"', $aufgabe));
|
|
$this->app->Tpl->Set('MITARBEITER',$mitarbeiter_komplett);
|
|
$this->app->Tpl->Set('ORT',$ort);
|
|
$this->app->Tpl->Set('GPS',$gps);
|
|
$this->app->Tpl->Set('BESCHREIBUNG',str_replace('\r\n',"\r\n",$beschreibung));
|
|
$this->app->Tpl->Set('INTERNERKOMMENTAR',str_replace('\r\n',"\r\n",$internerkommentar));
|
|
|
|
if($gps!='')
|
|
{
|
|
$tmpgps = explode(';',$gps);
|
|
$this->app->Tpl->Set('GPSIMAGE',"<img width='180' height='180' src='http://maps.google.com/maps/api/staticmap?center=".$tmpgps[0].",".$tmpgps[1].
|
|
'&markers=size:small|color:blue|'.$tmpgps[0].",".$tmpgps[1]."&zoom=14&size=180x180&sensor=false' />");
|
|
} else {
|
|
$this->app->Tpl->Set('GPSBUTTON','<input type="button" value="GPS Daten laden" onclick="Standpunkt();">');
|
|
}
|
|
$this->app->Tpl->Set('ART', $this->app->erp->GetSelect($this->app->erp->GetZeiterfassungArt(),$art));
|
|
|
|
$pakete = $this->app->DB->SelectArr('SELECT id, aufgabe,art,projekt FROM arbeitspaket WHERE (adresse = '.$adr_id.' or (art="teilprojekt" '.$this->app->erp->ProjektRechte("projekt").')) AND abgenommen!=1 AND geloescht!=1 AND status!=\'abgeschlossen\' order by projekt');
|
|
/*
|
|
$select = '<option value="0">-- kein --</option>';
|
|
for($i =0; $i<sizeof($pakete); $i++){
|
|
$myArr = $pakete[$i];
|
|
if($myArr["art"]=="") $myArr["art"]="arbeitspaket";
|
|
$projekt_ap = $this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id='".$myArr["projekt"]."' LIMIT 1");
|
|
if($paketauswahl==$myArr["id"])$checked=" selected"; else $checked ="";
|
|
$select = $select.'<option value="'.$myArr["id"].'" '.$checked.'>Projekt: '.$projekt_ap.'->'.ucfirst($myArr["art"]).': '.$myArr["aufgabe"].'</option>';
|
|
}
|
|
*/
|
|
if($paketauswahl > 0) {
|
|
$tmp = $this->app->DB->Select("SELECT CONCAT(ap.id,' ',p.abkuerzung,' ',ap.aufgabe) as name2 FROM arbeitspaket ap LEFT JOIN projekt p ON p.id=ap.projekt WHERE ap.id='$paketauswahl' LIMIT 1");
|
|
$this->app->Tpl->Set('PAKETAUSWAHL', $tmp);
|
|
}
|
|
|
|
$checkvon = str_replace(':','',$this->app->Secure->GetPOST('vonZeit'));
|
|
$checkbis = str_replace(':','',$this->app->Secure->GetPOST('bisZeit'));
|
|
$fehlerangezeigt = false;
|
|
|
|
if($this->app->Secure->GetPOST('ok')){
|
|
$vonZeit = $this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1').' '.$this->app->Secure->GetPOST('vonZeit').':00';
|
|
$bisZeit = $this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1').' '.$this->app->Secure->GetPOST('bisZeit').':00';
|
|
|
|
|
|
|
|
if($paketauswahl == 0){
|
|
if(($aufgabe!='') && ($this->app->Secure->GetPOST('vonZeit')!='') && ($this->app->Secure->GetPOST('bisZeit')!='') && ($datum!='') && ($checkbis > $checkvon) && $zeiteedit && !$this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1")){
|
|
{
|
|
// Hier fehlt abrechnen und adresse_abrechnung
|
|
$zeitid = $this->app->erp->AddArbeitszeit($adr_id, $vonZeit, $bisZeit, $aufgabe, $beschreibung, $ort,
|
|
$projekt, 0,$art,$adresse_kunde,$abrechnen,$verrechnungsart,$kostenstelle,$abgrechnet,$gps,0,$internerkommentar,$auftrag,$produktion,"",$auftragpositionid);
|
|
$this->app->erp->RunHook('zeiterfassung_create_guihook1',1,$zeitid);
|
|
|
|
if($serviceauftrag){
|
|
$this->app->DB->Update("UPDATE zeiterfassung SET serviceauftrag = '$serviceauftrag' WHERE id = '$zeitid' LIMIT 1");
|
|
}
|
|
$this->app->Tpl->Set('MESSAGE',"<div class=\"success\">Zeit erfolgreich gebucht!</div>");
|
|
$msg = $this->app->erp->base64_url_encode("<div class=\"success\">Zeit erfolgreich gebucht!</div> ");
|
|
header("Location: index.php?module=zeiterfassung&action=create&msg=$msg#tabs-1");
|
|
exit;
|
|
}
|
|
}else{
|
|
if($this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1"))
|
|
{
|
|
$msg = $this->app->erp->base64_url_encode('<div class="error">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
$this->app->Tpl->Set('MESSAGE','<div class="error">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
}
|
|
elseif(!$zeiteedit)
|
|
{
|
|
$fehlerangezeigt = true;
|
|
$this->app->Tpl->Set('MESSAGE','<div class="error">Fehler! Das Anlegen/Editieren von Zeiten älter als '.$this->app->erp->Firmendaten('zeiterfassung_schliessentage').' Tagen ist nicht erlaubt!</div>');
|
|
}elseif($checkbis <= $checkvon){
|
|
$this->app->Tpl->Set('MESSAGE', '<div class="error">Fehler! Zeit bis ist kleiner bzw gleich als Zeit von!</div>');
|
|
}
|
|
else{
|
|
$this->app->Tpl->Set('MESSAGE', '<div class="error">Fehler! Die Felder "Kurze Beschreibung", am, von, bis müssen korrekt ausgefüllt sein!</div>');
|
|
}
|
|
// $this->app->Tpl->Add('JQUERYREADY', '$("#accordion").accordion({ active: 2, event: "click" });');
|
|
}
|
|
}else{
|
|
if(($this->app->Secure->GetPOST('vonZeit')!='') && ($this->app->Secure->GetPOST('bisZeit')!='') && ($datum!='') && $aufgabe!='' && ($checkbis > $checkvon) && $zeiteedit && !$this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1")){
|
|
//Paketauswahl buchen ...
|
|
$projekt = $this->app->DB->Select("SELECT projekt FROM arbeitspaket WHERE id='$paketauswahl' LIMIT 1");
|
|
if($this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1"))
|
|
{
|
|
$this->app->Tpl->Set('MESSAGE','<div class="error">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
}else{
|
|
$kunde = $this->app->DB->Select("SELECT kunde FROM projekt WHERE id='$projekt' LIMIT 1");
|
|
if($adresse_kunde=='') {
|
|
$adresse_kunde=$kunde;
|
|
}
|
|
|
|
|
|
$zeitid = $this->app->erp->AddArbeitszeit($adr_id, $vonZeit, $bisZeit, $aufgabe, $beschreibung, $ort,
|
|
$projekt, $paketauswahl,$art,$adresse_kunde,$abrechnen,$verrechnungsart,$kostenstelle,$abgerechnet,$gps,0,$internerkommentar,$auftrag,$produktion);
|
|
|
|
$this->app->erp->RunHook('zeiterfassung_create_guihook1',1,$zeitid);
|
|
|
|
if($serviceauftrag){
|
|
$this->app->DB->Update("UPDATE zeiterfassung SET serviceauftrag = '$serviceauftrag' WHERE id = '$zeitid' LIMIT 1");
|
|
}
|
|
$msg = $this->app->erp->base64_url_encode('<div class="success">Zeit erfolgreich gebucht!</div> ');
|
|
header("Location: index.php?module=zeiterfassung&action=create&msg=$msg#tabs-1");
|
|
exit;
|
|
}
|
|
}else{
|
|
if($this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1"))
|
|
{
|
|
$msg = $this->app->erp->base64_url_encode('<div class="error">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
$this->app->Tpl->Add('MESSAGE','<div class="error">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
}elseif(!$zeiteedit)
|
|
{
|
|
$fehlerangezeigt = true;
|
|
$this->app->Tpl->Set('MESSAGE','<div class="error">Fehler! Das Anlegen/Editieren von Zeiten kleiner '.$this->app->erp->Firmendaten('zeiterfassung_schliessentage').' Tagen ist nicht erlaubt!</div>');
|
|
}elseif($checkbis <= $checkvon){
|
|
$this->app->Tpl->Set('MESSAGE', '<div class="error">Fehler! Zeit bis ist kleiner bzw gleich als Zeit von!</div>');
|
|
}
|
|
else{
|
|
$this->app->Tpl->Set('MESSAGE', '<div class="error">Fehler! Die Felder "Kurze Beschreibung", am, von, bis müssen korrekt ausgefüllt sein!</div>');
|
|
}
|
|
// $this->app->Tpl->Add('JQUERYREADY', '$("#accordion").accordion({ active: 2, event: "click" });');
|
|
}
|
|
}
|
|
|
|
if($id==''){
|
|
$vonZeit = $this->app->DB->Select("SELECT DATE_FORMAT(MAX(bis),'%H:%i') FROM zeiterfassung WHERE adresse='$adr_id' AND DATE_FORMAT(bis,'%Y-%m-%d')=DATE_FORMAT(NOW(),'%Y-%m-%d')");
|
|
}
|
|
|
|
} else {
|
|
if($this->app->Secure->GetPOST('update')){
|
|
if(($aufgabe!='') && ($this->app->Secure->GetPOST('vonZeit')!='') && ($this->app->Secure->GetPOST('bisZeit')!='') && ($datum!='') && ($checkbis > $checkvon) && $zeiteedit && !$this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1")){
|
|
// echo "update";
|
|
//echo $datum;
|
|
$vonZeit = $this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1').' '.$this->app->Secure->GetPOST('vonZeit').':00';
|
|
$bisZeit = $this->app->String->Convert($datum,'%1.%2.%3','%3-%2-%1').' '.$this->app->Secure->GetPOST('bisZeit').':00';
|
|
|
|
if($paketauswahl == 0)
|
|
{
|
|
$this->app->erp->UpdateArbeitszeit($id,$adr_id, $vonZeit, $bisZeit, $aufgabe, $beschreibung, $ort,
|
|
$projekt, $paketauswahl,$art,$adresse_kunde,$abrechnen,$verrechnungsart,$kostenstelle,$abgerechnet,$gps,$internerkommentar,$auftrag,$produktion,"",$auftragpositionid);
|
|
|
|
if($serviceauftrag){
|
|
$this->app->DB->Update("UPDATE zeiterfassung SET serviceauftrag = '$serviceauftrag' WHERE id = '$id' LIMIT 1");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$this->app->erp->UpdateArbeitszeit($id,$adr_id, $vonZeit, $bisZeit, $aufgabe, $beschreibung, $ort,
|
|
$projekt, $paketauswahl,$art,'',$abrechnen,$verrechnungsart,$kostenstelle,$gps,$internerkommentar,$auftrag,$produktion,'',$auftragpositionid);
|
|
|
|
if($serviceauftrag){
|
|
$this->app->DB->Update("UPDATE zeiterfassung SET serviceauftrag = '$serviceauftrag' WHERE id = '$id' LIMIT 1");
|
|
}
|
|
}
|
|
$this->app->erp->RunHook('zeiterfassung_create_guihook1');
|
|
|
|
|
|
$back = $this->app->Secure->GetGET('back');
|
|
if($back=='zeiterfassung'){
|
|
header('Location: index.php?module=zeiterfassung&action=list');
|
|
}
|
|
else if($back=='zeiterfassunguser'){
|
|
header('Location: index.php?module=zeiterfassung&action=listuser');
|
|
}
|
|
else if($back=='service'){
|
|
header('Location: index.php?module=service&action=list');
|
|
}
|
|
else if($back=='aufgabe'){
|
|
header('Location: index.php?module=aufgaben&action=list');
|
|
}
|
|
else if($back=='zeiterfassungmitarbeiter')
|
|
{
|
|
$sid = $this->app->Secure->GetGET('sid');
|
|
header("Location: index.php?module=adresse&action=zeiterfassung&id=$sid");
|
|
}
|
|
|
|
|
|
else if ($back=='projekt')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
$back_sid = $this->app->Secure->GetGET('back_sid');
|
|
header("Location: index.php?module=projekt&action=zeit&id=$back_id&sid=$back_sid");
|
|
}
|
|
else if ($back=='lohnabrechnung')
|
|
{
|
|
header('Location: index.php?module=lohnabrechnung&action=list');
|
|
}
|
|
else if ($back=='adresse')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
header("Location: index.php?module=adresse&action=abrechnungzeit&id=$back_id");
|
|
}
|
|
else{
|
|
header('Location: index.php?module=zeiterfassung&action=create#tabs-1');
|
|
}
|
|
exit;
|
|
|
|
} else {
|
|
if(!$this->app->DB->Select("SELECT id FROM projekt WHERE id = '$projekt' AND status = 'abgeschlossen' LIMIT 1"))
|
|
{
|
|
$this->app->Tpl->Add('MESSAGE','<div class="error">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
}elseif(!$zeiteedit)
|
|
{
|
|
$fehlerangezeigt = true;
|
|
$this->app->Tpl->Set('MESSAGE','<div class="error">Fehler! Das Anlegen/Editieren von Zeiten kleiner '.$this->app->erp->Firmendaten('zeiterfassung_schliessentage').' Tagen ist nicht erlaubt!</div>');
|
|
}elseif($checkbis <= $checkvon){
|
|
$this->app->Tpl->Set('MESSAGE', '<div class="error">Fehler! Zeit bis ist kleiner bzw gleich als Zeit von!</div>');
|
|
}
|
|
else{
|
|
$this->app->Tpl->Set('MESSAGE', '<div class="error">Fehler! Die Felder "Kurze Beschreibung", am, von, bis müssen ausgefüllt sein!</div>');
|
|
}
|
|
// $this->app->Tpl->Add('JQUERYREADY', '$("#accordion").accordion({ active: 2, event: "click" });');
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//tabelle mit gebuchten tätigkeiten heute
|
|
if($id=='')
|
|
{
|
|
$table = new EasyTable($this->app);
|
|
|
|
$table->Query("SELECT DATE_FORMAT(z.bis, GET_FORMAT(DATE,'EUR')) AS Datum,
|
|
z.aufgabe as Taetigkeit,
|
|
|
|
(SELECT name FROM adresse adr WHERE adr.id=z.adresse) as mitarbeiter,
|
|
DATE_FORMAT(z.von,'%H:%i') as von, DATE_FORMAT(z.bis,'%H:%i') as bis,
|
|
TIMEDIFF(z.bis, z.von) AS Dauer,
|
|
|
|
p.abkuerzung as Projekt,
|
|
ap.aufgabe as 'Unterprojekt/Arbeitspaket',
|
|
|
|
|
|
IF(DATEDIFF(CURDATE(), z.bis)<= 5,
|
|
CONCAT('<a href=\"#\" onclick=\"if(!confirm(\'Wirklich stornieren?\')) return false; else window.location.href=\'index.php?module=zeiterfassung&action=list&do=stornieren&lid=', z.id, '\'\">Stornieren</a> | <a href=\"index.php?module=zeiterfassung&action=create&id=', z.id, '#tabs-1\">Edit</a>'), '')
|
|
FROM zeiterfassung z LEFT JOIN projekt p ON p.id=z.projekt LEFT JOIN arbeitspaket ap ON z.arbeitspaket=ap.id
|
|
WHERE z.gebucht_von_user=".$this->app->User->GetID()." AND DATE_FORMAT(z.bis,'%Y-%m-%d')= DATE_FORMAT(NOW(),'%Y-%m-%d')
|
|
ORDER BY 1 DESC,2 DESC, 3 DESC
|
|
");
|
|
$table->DisplayNew('TABELLE','Aktion','noAction');
|
|
$this->app->Tpl->Set('BUTTON',"<input type=\"submit\" value=\"Buchen\" name=\"ok\">");
|
|
} else {
|
|
|
|
$back = $this->app->Secure->GetGET('back');
|
|
|
|
if($back=='zeiterfassung'){
|
|
$link = 'index.php?module=zeiterfassung&action=list';
|
|
}
|
|
else if($back=='service'){
|
|
$link = 'index.php?module=service&action=list';
|
|
}
|
|
else if($back=='aufgabe'){
|
|
$link = 'index.php?module=aufgaben&action=list';
|
|
}
|
|
else if ($back=='projekt')
|
|
{
|
|
$back_id = $this->app->Secure->GetGET('back_id');
|
|
$back_sid = $this->app->Secure->GetGET('back_sid');
|
|
$link = "index.php?module=projekt&action=zeit&id=$back_id&sid=$back_sid";
|
|
}
|
|
else if ($back=="adresse")
|
|
{
|
|
$back_id = $this->app->Secure->GetGET("back_id");
|
|
$link = "index.php?module=adresse&action=abrechnungzeit&id=$back_id";
|
|
}
|
|
else{
|
|
$link = 'index.php?module=zeiterfassung&action=create#tabs-1';
|
|
}
|
|
// $this->app->Tpl->Add('JQUERYREADY', '$("#accordion").accordion({ active: 2, event: "click" });');
|
|
if($zeiteedit && !$projektabgeschlossen)
|
|
{
|
|
$this->app->Tpl->Set('BUTTON',"
|
|
<input type=\"submit\" value=\"Zeiterfassung jetzt ändern\" name=\"update\">
|
|
<input type=\"button\" value=\"Abbrechen\" onclick=\"window.location.href='".$link."'\">
|
|
");
|
|
}else{
|
|
if($projektabgeschlossen)
|
|
{
|
|
$this->app->Tpl->Add('MESSAGE','<div class="warning">Das Projekt '.$this->app->DB->Select("SELECT abkuerzung FROM projekt WHERE id = '$projekt' LIMIT 1").' ist bereits abgeschlossen.</div>');
|
|
}else{
|
|
if(!$fehlerangezeigt)$this->app->Tpl->Add('MESSAGE',"<div class=\"warning\">Das Anlegen/Editieren von Zeiten kleiner ".$this->app->erp->Firmendaten('zeiterfassung_schliessentage')." Tagen ist nicht erlaubt!</div>");
|
|
}
|
|
$this->app->Tpl->Set('BUTTON',
|
|
'<script>$(document).ready(function() {$(\'#accordion input\').prop(\'disabled\', true);});</script>'."<input type=\"button\" value=\"Abbrechen\" onclick=\"window.location.href='".$link."'\"> ");
|
|
}
|
|
}
|
|
|
|
|
|
$this->app->YUI->DatePicker('datum');
|
|
//$this->app->YUI->DatePicker('teilprojekt_datum');
|
|
//$this->app->YUI->DatePicker('kunde_datum');
|
|
$this->app->YUI->TimePicker('vonZeit');
|
|
$this->app->YUI->TimePicker('bisZeit');
|
|
|
|
|
|
|
|
if($this->app->erp->Firmendaten('zeiterfassung_anderemitarbeiter')!=1)
|
|
{
|
|
$this->app->Tpl->Set('STARTANDEREERLAUBEN','<!--');
|
|
$this->app->Tpl->Set('ENDEANDEREERLAUBEN','-->');
|
|
}
|
|
|
|
if($this->app->erp->Firmendaten('zeiterfassung_erweitert')!=1)
|
|
{
|
|
$this->app->Tpl->Set('STARTERWEITERT','<!--');
|
|
$this->app->Tpl->Set('ENDEERWEITERT','-->');
|
|
}
|
|
|
|
if($this->app->erp->Firmendaten('zeiterfassung_kommentar')!=1)
|
|
{
|
|
$this->app->Tpl->Set('STARTKOMMENTAR','<!--');
|
|
$this->app->Tpl->Set('ENDEKOMMENTAR','-->');
|
|
}
|
|
|
|
if($this->app->erp->Firmendaten('zeiterfassung_ort')!=1)
|
|
{
|
|
$this->app->Tpl->Set('STARTORT','<!--');
|
|
$this->app->Tpl->Set('ENDEORT','-->');
|
|
}
|
|
|
|
$this->app->YUI->AutoSaveUserParameter('projekt_manuell','teilprojekt_filter');
|
|
|
|
if($this->app->erp->ModulVorhanden('serviceauftrag'))
|
|
{
|
|
$this->app->YUI->AutoComplete('serviceauftrag','serviceauftrag');
|
|
}else{
|
|
$this->app->Tpl->Set('VORSERVICEAUFTRAG','<!--');
|
|
$this->app->Tpl->Set('NACHSERVICEAUFTRAG','-->');
|
|
}
|
|
|
|
$this->ZeiteerfassungEigeneUebersicht();
|
|
|
|
$this->app->erp->RunHook('zeiterfassung_create_guihook1');
|
|
|
|
$this->app->YUI->AutoSaveUserParameter('zeiterfassung_buchen_termine','zeiterfassung_buchen_termine',"$('#calendar').fullCalendar('refetchEvents');");
|
|
$this->app->YUI->AutoSaveUserParameter('zeiterfassung_buchen_stechuhr','zeiterfassung_buchen_stechuhr',"$('#calendar').fullCalendar('refetchEvents');");
|
|
if($this->app->User->GetParameter('zeiterfassung_buchen_termine')=='1') {
|
|
$checked='checked';
|
|
} else {
|
|
$checked='';
|
|
}
|
|
$this->app->Tpl->Set('CHECKEDZEITERFASSUNGBUCHENTERMINE',$checked);
|
|
|
|
|
|
if($this->app->User->GetParameter('zeiterfassung_buchen_stechuhr')=='1') {
|
|
$checked='checked';
|
|
} else {
|
|
$checked='';
|
|
}
|
|
$this->app->Tpl->Set('CHECKEDZEITERFASSUNGBUCHENSTECHUHR',$checked);
|
|
|
|
|
|
if($this->app->User->GetParameter('zeiterfassung_buchen_formularansicht')=='1')
|
|
{
|
|
$this->app->Tpl->Set('FORMULARANSICHT','<input type="button" class="btnBlueNew" value="{|Kalender-Ansicht als Standard|}" onclick="window.location.href=\'index.php?module=zeiterfassung&action=create&cmd=kalenderansicht\'">');
|
|
$this->app->Tpl->Set('ZEITERFASSUNGTABS','<li><a href="#tabs-1">{|Formular|}</a></li><li id="list"><a href="#tabs-2">{|Kalenderansicht|}</a></li>');
|
|
} else {
|
|
$this->app->Tpl->Set('FORMULARANSICHT','<input type="button" class="btnBlueNew" value="{|Formular-Ansicht als Standard|}" onclick="window.location.href=\'index.php?module=zeiterfassung&action=create&cmd=formularansicht\'">');
|
|
$this->app->Tpl->Set('ZEITERFASSUNGTABS','<li id="list"><a href="#tabs-2">{|Kalenderansicht|}</a></li><li><a href="#tabs-1">{|Formular|}</a></li>');
|
|
}
|
|
|
|
//$this->app->Tpl->Set(TABTEXT,'Zeiterfassung');
|
|
$this->app->Tpl->Parse('TAB1', 'zeiterfassung_manuell.tpl');
|
|
$this->app->Tpl->Parse('PAGE', 'zeiterfassung_buchen.tpl');
|
|
}
|
|
|
|
|
|
|
|
function ZeiterfassungOffen($adr_id)
|
|
{
|
|
$this->app->Tpl->Set('SUBSUBHEADING', 'offene Arbeitspakete');
|
|
$this->app->Tpl->Set('INHALT','');
|
|
|
|
$table = new EasyTable($this->app);
|
|
$table->Query("SELECT DISTINCT a.aufgabe, a.zeit_geplant as vorgabe,
|
|
(SELECT FORMAT(SUM(TIMEDIFF(bis,von)/10000),2) FROM zeiterfassung WHERE arbeitspaket=a.id) as Gebucht,
|
|
DATE_FORMAT(a.abgabedatum,'%d.%m.%y') as bis, a.id
|
|
FROM arbeitspaket a LEFT JOIN zeiterfassung z ON z.arbeitspaket=a.id
|
|
WHERE a.adresse='$adr_id' AND (a.status = 'gestartet' OR a.status = 'besprochen')");
|
|
|
|
$table->DisplayNew('INHALT','[DETAILS%value%]');
|
|
$this->app->YUI->Dialog($table,'DETAILS','Arbeitspaket','aufgabe','arbeitspaket_details.tpl',$this,'ArbeitspaketReadDetails');
|
|
|
|
$this->app->Tpl->Parse('ARBEITSPAKETE','rahmen70.tpl');
|
|
|
|
}
|
|
|
|
function ZeiterfassungAbgeschlossen($adr_id)
|
|
{
|
|
|
|
$monat = $this->app->DB->Select("SELECT DATE_FORMAT(NOW(),'%M')");
|
|
$this->app->Tpl->Set('SUBSUBHEADING', "Zeiterfassung ($monat)");
|
|
$this->app->Tpl->Set('INHALT','');
|
|
$table = new EasyTable($this->app);
|
|
|
|
// SELECT SUM(hour(z.bis) - hour(z.von)) AS dauer, a.aufgabe, a.zeit_geplant FROM zeiterfassung AS z, arbeitspakete AS a WHERE z.adresse = 2 AND z.adresse = a.adresse AND z.arbeitspaket = a.id AND a.id = 2 AND (status = "gestartet" OR status = "besprochen") GROUP BY aufgabe
|
|
|
|
$table->Query("SELECT DATE_FORMAT(bis, GET_FORMAT(DATE,'EUR')) AS Datum, DATE_FORMAT(von,'%H:%i') as von, DATE_FORMAT(bis,'%H:%i') as bis,
|
|
TIMEDIFF(bis, von) AS Dauer,
|
|
aufgabe as Taetigkeit,
|
|
IF(DATEDIFF(CURDATE(), bis)<= 5,
|
|
CONCAT('<a href=\"#\" onclick=\"if(!confirm(\'Wirklich stornieren?\')) return false; else window.location.href=\'index.php?module=zeiterfassung&action=list&do=stornieren&lid=', id, '\'\">Stornieren</a> | <a href=\"\">Edit</a>'), '')
|
|
FROM zeiterfassung
|
|
WHERE adresse=$adr_id
|
|
AND (
|
|
MONTH(bis) = MONTH(NOW()) OR DATEDIFF(CURDATE(), bis)<= 5
|
|
)
|
|
ORDER BY 1 DESC,2 DESC
|
|
");
|
|
|
|
$table->DisplayNew('INHALT','Aktion','noAction');
|
|
|
|
|
|
// $this->app->Tpl->Set(INHALT,"Abgschlossen");
|
|
$this->app->Tpl->Parse('ZEITERFASSUNGEN','rahmen70.tpl');
|
|
}
|
|
|
|
function AufgabenOffen($adr_id){
|
|
$this->app->Tpl->Set('SUBHEADING', 'offene Aufgaben');
|
|
$this->app->Tpl->Set('INHALT','');
|
|
|
|
// selektierte Aufgabe Updaten
|
|
if($this->app->Secure->GetPOST('ok') != ''){
|
|
$aufg_id = $this->app->Secure->GetPOST('aufg_id');
|
|
foreach($aufg_id as $myId){
|
|
$this->app->DB->Update("UPDATE aufgabe SET abgeschlossen_am = CURDATE(), abgeschlossen='1' WHERE id=$myId LIMIT 1");
|
|
// Kopie nach aufgabe_erledigt
|
|
$this->app->DB->Insert("INSERT INTO aufgabe_erledigt (adresse, aufgabe, abgeschlossen_am)
|
|
VALUES ($adr_id, $myId, CURDATE())");
|
|
}
|
|
}
|
|
|
|
$table = new EasyTable($this->app);
|
|
// Hole einmalige und wiederholende Aufgaben
|
|
// bei wiederholenden Aufgaben werden nur die vom heutigen Tag und nach Schema startdatum + (intervall*n) geholt
|
|
$table->Query("SELECT
|
|
CONCAT(\"<input type='checkbox' name='aufg_id[]' value='\", id, \"'>\") AS Ok,
|
|
IF(intervall_tage=0, DATE_FORMAT(startdatum, '%d.%m.%Y'),
|
|
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL MOD(DATEDIFF(CURDATE(),DATE_FORMAT(startdatum, '%Y:%m:%d')),intervall_tage) day),'%d.%m.%Y')) AS Datum,
|
|
IF(intervall_tage=0, DATEDIFF(CURDATE(), startdatum) ,MOD(DATEDIFF(CURDATE(), startdatum),intervall_tage)) AS Verzug,
|
|
IF(intervall_tage=0, 'einmalig', intervall_tage) AS Intervall,
|
|
aufgabe, beschreibung
|
|
FROM aufgabe
|
|
WHERE
|
|
(abgeschlossen=0 AND (adresse=$adr_id OR adresse=0))
|
|
OR
|
|
(DATE_SUB(CURDATE(), INTERVAL MOD(DATEDIFF(CURDATE(),DATE_FORMAT(startdatum, '%Y:%m:%d')),intervall_tage) day)=CURDATE()
|
|
AND DATE_SUB(CURDATE(), INTERVAL MOD(DATEDIFF(CURDATE(),DATE_FORMAT(startdatum, '%Y:%m:%d')),intervall_tage) day) != abgeschlossen_am
|
|
AND intervall_tage>0 AND (adresse=$adr_id OR adresse=0))
|
|
ORDER BY Datum");
|
|
|
|
$table->DisplayNew('INHALT','Beschreibung','noAction');
|
|
|
|
$this->app->Tpl->Parse('AUFGABEN','rahmen_submit_100.tpl');
|
|
}
|
|
|
|
function ZeiterfassungArchiv($adr_id)
|
|
{
|
|
$this->app->Tpl->Set('SUBHEADING', 'Archiv');
|
|
$this->app->Tpl->Set('INHALT','');
|
|
|
|
$table = new EasyTable($this->app);
|
|
$table->Query("SELECT
|
|
MONTHNAME(bis) AS Monat,
|
|
YEAR(bis) Jahr,
|
|
CONCAT(ROUND(SUM(TIME_TO_SEC(TIMEDIFF(bis,von)))/3600,1),' Stunden') AS Arbeitszeit,
|
|
CONCAT('<a href=\"index.php?module=zeiterfassung&action=details&month=', MONTH(bis),'&year=', YEAR(bis),'\" class=\"popup\" title=\"Details\">Details</a>')
|
|
FROM `zeiterfassung`
|
|
WHERE adresse=$adr_id
|
|
GROUP BY MONTHNAME(bis)
|
|
ORDER BY bis DESC");
|
|
|
|
$table->DisplayNew('INHALT','Aktion', 'noAction');
|
|
|
|
$this->app->Tpl->Parse('ARCHIV','rahmen100.tpl');
|
|
}
|
|
|
|
public function ZeiterfassungDetails()
|
|
{
|
|
$monat = $this->app->Secure->GetGET('month');
|
|
$jahr = $this->app->Secure->GetGET('year');
|
|
$frame = $this->app->Secure->GetGET('frame');
|
|
|
|
if($frame=='false')
|
|
{
|
|
// hier nur fenster größe anpassen
|
|
$this->app->YUI->IframeDialog(650,730);
|
|
} else {
|
|
|
|
$id = $this->app->User->GetId();
|
|
if($id!=''){
|
|
$adr_id = $this->app->DB->Select("SELECT adresse FROM user WHERE id=$id");
|
|
}
|
|
|
|
$monatsname = $this->app->DB->Select("SELECT MONTHNAME('$jahr-$monat-01')");
|
|
|
|
$this->app->Tpl->Set('SUBHEADING', "Arbeitszeiten für $monatsname");
|
|
$this->app->Tpl->Set('INHALT','');
|
|
|
|
|
|
// $this->app->Tpl->Add(KURZUEBERSCHRIFT,"Zeiterfassung");
|
|
|
|
//$this->app->Tpl->Add(TABS,
|
|
// "<li><a href=\"index.php?module=zeiterfassung&action=list\">Zurück zur Übersicht</a></li>");
|
|
|
|
$table = new EasyTable($this->app);
|
|
$table->Query("SELECT
|
|
DATE_FORMAT(bis,'%d.%m.%y') as Datum,
|
|
ROUND((TIME_TO_SEC(TIMEDIFF(bis,von))/3600)) AS Dauer,
|
|
buchungsart,
|
|
aufgabe
|
|
FROM zeiterfassung
|
|
WHERE adresse=$adr_id
|
|
AND MONTH(bis)=$monat
|
|
AND YEAR(bis)=$jahr");
|
|
|
|
$table->DisplayNew('INHALT','Tätigkeit', 'noAction');
|
|
//$this->app->Tpl->Set(AKTIV_TAB5,'selected');
|
|
$this->app->Tpl->Parse('PAGE','rahmen.tpl');
|
|
$this->app->BuildNavigation=false;
|
|
}
|
|
}
|
|
|
|
public function ZeiterfassungDokuArbeitszeit()
|
|
{
|
|
$pdf = new DokuArbeitszeit();
|
|
$filename = $tmp.date('Ymd').'_'.$kundennummer.'_'.$name.'_DOKUARBEITSZEIT.pdf';
|
|
$pdf->Output($filename,'D');
|
|
}
|
|
}
|