2021-05-21 08:49:41 +02:00
< ? php
2022-05-30 16:02:15 +02:00
/*
**** 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 ****
2021-05-21 08:49:41 +02:00
*/
?>
2022-05-30 16:02:15 +02:00
< ? 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 ;
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $tmp ) ? count ( $tmp ) : 0 ); $i ++ )
2022-05-30 16:02:15 +02:00
{
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' ] . " ' " );
2022-07-01 18:43:49 +02:00
$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 " );
}
2022-05-30 16:02:15 +02:00
$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' );
}
}