2021-05-21 08:49:41 +02:00
< ? php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral ( c ) Xentral ERP Sorftware GmbH , Fuggerstrasse 11 , D - 86150 Augsburg , * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License * Version 3.1 .
*
* You should have received a copy of this license from your vendor and / or * along with this file ; If not , please visit www . wawision . de / Lizenzhinweis
* to obtain the text of the corresponding license version .
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
< ? php
use Xentral\Components\Http\JsonResponse ;
include '_gen/aufgabe.php' ;
class Aufgaben extends GenAufgabe {
/** @var Application $app */
var $app ;
/** @var string MODULE_NAME */
const MODULE_NAME = 'Task' ;
/**
* @ param Application $app
* @ param string $name
* @ param array $erlaubtevars
*
* @ return array
*/
public function TableSearch ( $app , $name , $erlaubtevars )
{
switch ( $name )
{
case " aufgaben_meine " :
// START EXTRA checkboxen
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenmeineprio').on('click', function() { fnFilterColumn1( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenmeineueberfaellige').on('click', function() { fnFilterColumn2( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenmeineintervall').on('click', function() { fnFilterColumn3( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenabgeschlossene').on('click', function() { fnFilterColumn4( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenmeine').on('click', function() { fnFilterColumn5( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenmeinevergebene').on('click', function() { fnFilterColumn6( 0 ); } ); " );
for ( $r = 1 ; $r < 7 ; $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
$sid = ( int ) $this -> app -> User -> GetParameter ( 'aufgabe_benutzer_simulieren' );
if ( $sid > 0 && $this -> app -> User -> GetType () === 'admin' )
{
$adresse = $sid ;
}
else
{
$adresse = $this -> app -> User -> GetAdresse ();
$sid = " " ;
}
$heading = [
'' , 'Aufgabe' , 'Mitarbeiter' , 'Kunde' , 'Dauer' ,
'Teilprojekt' , 'Projekt' , 'Prio' , 'Abgabe' , 'Status' , 'Menü' ];
$width = [
'1%' , '25%' , '25%' , '25%' , '1%' ,
'5%' , '1%' , '1%' , '1%'
];
$findcols = [
'open' , 'a.aufgabe' ,
" if(adr.id=' " . $adresse . " ' OR adr.id IS NULL,(if(a.initiator!=' $adresse ' AND a.initiator!=a.adresse,CONCAT('Initiator: ',initi.name),adr.name)),adr.name) " , " CONCAT(kdr.kundennummer,' ',kdr.name) " ,
'stunden' , 'ap.aufgabe' ,
'p.abkuerzung' ,
" if(a.prio=1,'<b><font color=red>hoch</font></b>',if(a.prio=-1,'niedrig','mittel')) " ,
'a.abgabe_bis' , " if(a.status = 'inbearbeitung', 'in Bearbeitung', a.status) " , 'a.id'
];
$searchsql = [
'a.aufgabe' ,
" CONCAT(kdr.kundennummer,' ',kdr.name) " ,
'adr.name' ,
$this -> app -> erp -> FormatPreis ( 'a.stunden' , 2 ), 'ap.aufgabe' ,
'p.abkuerzung' , " if(a.prio=1,'<b><font color=red>hoch</font></b>',if(a.prio=-1,'niedrig','mittel')) " ,
" if(a.status = 'inbearbeitung', 'in Bearbeitung', a.status) " , " DATE_FORMAT(a.abgabe_bis, '%d.%m.%Y') " ,
'a.id'
];
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE verwendenals='bondrucker' LIMIT 1 " );
if ( $seriennummer != '' ){
$menu_bon = " <a href= \" # \" onclick=AjaxCall( \" index.php?module=aufgaben&action=bondrucker&id=%value% \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/bon_druck.png \" border= \" 0 \" ></a> " ;
}
else {
$menu_bon = " <a href= \" # \" onclick=InfoBox( \" aufgabe_bondrucker \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/bon_druck.png \" border= \" 0 \" ></a> " ;
}
$menu = " <table cellpadding=0 cellspacing=0> " ;
$menu .= " <tr> " ;
$menu .= " <td nowrap> " ;
$menu .= '<a href="javascript:;" onclick="AufgabenEdit(%value%);">' ;
$menu .= " <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" > " ;
$menu .= " </a> " . " " ;
$menu .= " <a href= \" # \" onclick=FinalDialog( \" index.php?module=aufgaben&action=abschluss&id=%value% \" );> " ;
$menu .= " <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/haken.png \" border= \" 0 \" > " ;
$menu .= " </a> " . " " ;
$menu .= " <a href= \" # \" onclick=DeleteDialog( \" index.php?module=aufgaben&action=delete&id=%value% \" );> " ;
$menu .= " <img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" > " ;
$menu .= " </a> " . $menu_bon . " " ;
$menu .= " </td> " ;
$menu .= " <td> " ;
$menu .= " <a href= \" # \" class= \" label-manager \" data-label-column-number= \" 2 \" data-label-reference-id= \" %value% \" data-label-reference-table= \" aufgabe \" > " ;
$menu .= " <span class= \" label-manager-icon \" ></span> " ;
$menu .= " </a> " ;
$menu .= " </td> " ;
$menu .= " </tr> " ;
$menu .= " </table> " ;
// $menucol=9;
$datecols = array ( 8 );
$numbercols = array ( 4 );
// SQL statement
$alignright = array ( 5 );
$sumcol = 5 ;
$defaultorder = 11 ;
$moreinfo = true ;
$menucol = 10 ;
// START EXTRA more
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, '<img src=./themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/details_open.png class=details>' as open,
CONCAT ( if ( a . prio = 1 OR ( a . abgabe_bis <= NOW () AND a . abgabe_bis != '0000-00-00' AND a . status != 'abgeschlossen' ), CONCAT ( '<b><font color=' , if ( DATE_FORMAT ( a . abgabe_bis , '%Y-%m-%d' ) = DATE_FORMAT ( NOW (), '%Y-%m-%d' ), 'blue' , 'red' ), '>' , a . aufgabe , '</font></b>' , if ( a . abgabe_bis <= NOW () AND a . abgabe_bis != '0000-00-00' AND a . status != 'abgeschlossen' , if ( DATE_FORMAT ( a . abgabe_bis , '%Y-%m-%d' ) = DATE_FORMAT ( NOW (), '%Y-%m-%d' ), ' <b>Abgabe Heute!</b>' , ' <b>*** Abgabe überfällig! ***</b>' ), '' )), a . aufgabe ), if ( a . intervall_tage > 0 , ' (' , '' ), if ( a . intervall_tage = 2 , 'wöchentlich' , if ( a . intervall_tage = 3 , 'monatlich' , if ( a . intervall_tage = 4 , 'jährlich' , if ( a . intervall_tage = 1 , 'täglich' , '' )))), if ( a . intervall_tage > 0 , ')' , '' )) as aufgabe ,
if ( adr . id = '".$adresse."' OR adr . id IS NULL ,( if ( a . initiator != '$adresse' AND a . initiator != a . adresse , CONCAT ( 'Initiator: ' , initi . name ), adr . name )), adr . name ) as mitarbeiter ,
CONCAT ( kdr . kundennummer , ' ' , kdr . name ) as kunde ,
if ( a . stunden > 0 , " . $this->app ->erp->FormatPreis('a.stunden',2). " , '' ) as stunden ,
ap . aufgabe , p . abkuerzung as projekt ,
if ( a . prio = 1 , '<b><font color=red>hoch</font></b>' , if ( a . prio = '-1' , 'niedrig' , 'mittel' )) as prio ,
if ( a . abgabe_bis , DATE_FORMAT ( abgabe_bis , '%d.%m.%Y' ), '' ) as abgabe ,
if ( a . status = 'inbearbeitung' , 'in Bearbeitung' , a . status ) as status , a . id
FROM `aufgabe` AS `a`
LEFT JOIN `projekt` AS `p` ON p . id = a . projekt
LEFT JOIN `arbeitspaket` AS `ap` ON a . teilprojekt = ap . id
LEFT JOIN `adresse` AS `adr` ON a . adresse = adr . id
LEFT JOIN `adresse` AS `initi` ON a . initiator = initi . id
LEFT JOIN `adresse` AS `kdr` ON a . kunde = kdr . id
" ;
// Fester filter
$more_data1 = $this -> app -> Secure -> GetGET ( " more_data1 " );
if ( $more_data1 == 1 ) $subwhere [] = " (a.prio=1 OR a.prio=2 OR a.prio=3) " ;
$more_data2 = $this -> app -> Secure -> GetGET ( " more_data2 " );
if ( $more_data2 == 1 ) $subwhere [] = " (a.abgabe_bis <= NOW() AND a.abgabe_bis!='0000-00-00') " ;
$more_data3 = $this -> app -> Secure -> GetGET ( " more_data3 " );
if ( $more_data3 == 1 ) { $subwhere [] = " a.intervall_tage > 0 " ; }
else {
if ( $sid == " 0 " )
$where_wdh = " (a.intervall_tage > 0 AND a.abgabe_bis <=NOW() AND a.status!='abgeschlossen' { TMP}) OR " ;
else
$where_wdh = " (a.intervall_tage > 0 AND a.abgabe_bis <=NOW() AND a.status!='abgeschlossen' { TMP} AND a.adresse=' $adresse ') OR " ;
$where_wdh_else = " a.intervall_tage = 0 AND " ;
}
$more_data4 = $this -> app -> Secure -> GetGET ( " more_data4 " );
if ( $more_data4 == 1 ) $subwhere [] = " a.status='abgeschlossen' " ;
else $subwhere [] = " a.status!='abgeschlossen' " ;
$more_data5 = $this -> app -> Secure -> GetGET ( " more_data5 " );
if ( $more_data5 == 1 ) $subwhere [] = " a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' " ;
$more_data6 = $this -> app -> Secure -> GetGET ( " more_data6 " );
if ( $more_data6 == 1 ) $subwhere [] = " (a.initiator=' $adresse ' AND a.initiator!=a.adresse) " ;
$tmp = '' ;
$csubwhere = ! empty ( $subwhere ) ? count ( $subwhere ) : 0 ;
for ( $j = 0 ; $j < $csubwhere ; $j ++ ) $tmp .= " AND " . $subwhere [ $j ];
$where_wdh = str_replace ( '{TMP}' , $tmp , $where_wdh );
if ( $sid <= 0 ){
$where = " $where_wdh ( $where_wdh_else 1 $tmp ) " ;
}
else {
$where = " $where_wdh ( $where_wdh_else (a.adresse=' " . $adresse . " ' OR a.initiator=' " . $adresse . " ') $tmp ) " ;
}
if ( $sid <= 0 ){
$count = " SELECT COUNT(a.id) FROM aufgabe a WHERE $where_wdh ( $where_wdh_else 1 $tmp ) " ;
}
else {
$count = " SELECT COUNT(a.id) FROM aufgabe a WHERE $where_wdh ( $where_wdh_else (a.adresse=' " . $adresse . " ' OR a.initiator=' " . $adresse . " ') $tmp ) " ;
}
break ;
case " aufgaben_archiv " :
// START EXTRA checkboxen
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenoffeneigenearchiv').on('click', function() { fnFilterColumn11( 0 ); } ); " );
for ( $r = 11 ; $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 ( 'Aufgabe' , 'Mitarbeiter' , 'Projekt' , 'Prio' , 'Abgabe-Termin' , 'Startseite' , 'Status' , 'Menü' );
$width = array ( '35%' , '20%' , '1%' , '1%' , '1%' , '1%' , '1%' );
$findcols = array ( 'aufgabe' , 'mitarbeiter' , 'projekt' , 'prio' , 'abgabe' , 'status' , 'id' );
$searchsql = array ( 'a.aufgabe' , 'p.abkuerzung' , 'adr.name' , 'a.status' , 'a.abgabe_bis' , 'a.id' );
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap><a href= \" index.php?module=aufgaben&action=edit&id=%value%#tabs-3 \" ><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=FinalDialog( \" index.php?module=aufgaben&action=abschluss&id=%value% \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/haken.png \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=DeleteDialog( \" index.php?module=aufgaben&action=delete&id=%value% \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " . " </td></tr></table> " ;
// $menucol=9;
// SQL statement
$sql = " SELECT a.id,
if ( a . prio , CONCAT ( '<b><font color=red>' , a . aufgabe , '</font></b>' ), a . aufgabe ) as aufgabe ,
adr . name as mitarbeiter ,
p . abkuerzung as projekt ,
if ( a . prio , '<b><font color=red>Prio</font></b>' , 'Normal' ) as prio ,
if ( a . abgabe_bis , DATE_FORMAT ( abgabe_bis , '%d.%m.%Y' ), '' ) as abgabe ,
if ( a . startseite , 'Ja' , 'Nein' ) as startseite , if (( angelegt_am AND a . status = 'offen' ), CONCAT ( a . status , ' (' , DATE_FORMAT ( angelegt_am , '%d.%m.%Y' ), ')' ), a . status ) as status , a . id
FROM aufgabe a LEFT JOIN projekt p ON p . id = a . projekt LEFT JOIN adresse adr ON a . adresse = adr . id " ;
// Fester filter
// START EXTRA more
$subwhere [] = " a.status='abgeschlossen' " ;
$count = " SELECT COUNT(a.id) FROM aufgabe a WHERE (a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' OR a.initiator=' " . $this -> app -> User -> GetAdresse () . " ') AND a.startdatum='0000-00-00' AND a.status='abgeschlossen' " ;
$more_data1 = $this -> app -> Secure -> GetGET ( " more_data1 " );
if ( $more_data1 == 1 ) $subwhere [] = " a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' " ;
$tmp = '' ;
$csubwhere = ! empty ( $subwhere ) ? count ( $subwhere ) : 0 ;
for ( $j = 0 ; $j < $csubwhere ; $j ++ ) $tmp .= " AND " . $subwhere [ $j ];
$where = " (a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' OR a.initiator=' " . $this -> app -> User -> GetAdresse () . " ' OR a.oeffentlich='1') AND a.startdatum='0000-00-00' AND a.id!='' $tmp " ;
break ;
case " aufgaben " :
// START EXTRA checkboxen
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenprio').on('click', function() { fnFilterColumn6( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenoffeneigene').on('click', function() { fnFilterColumn7( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#aufgabenintervall').on('click', function() { fnFilterColumn8( 0 ); } ); " );
for ( $r = 6 ; $r < 9 ; $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 ( 'Aufgabe' , 'Kunde' , 'Dauer (h)' , 'Mitarbeiter' , 'Projekt' , 'Prio' , 'Abgabe' , 'Menü' );
$width = array ( '200px' , '20%' , '1%' , '20%' , '1%' , '1%' , '1%' );
$findcols = array ( 'aufgabe' , 'kunde' , 'stunden' , 'mitarbeiter' , 'projekt' , 'prio' , 'abgabe' , 'id' );
$searchsql = array ( 'a.aufgabe' , 'kdr.name' , 'a.stunden' , 'p.abkuerzung' , 'adr.name' , 'a.abgabe_bis' , 'a.id' );
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE verwendenals='bondrucker' LIMIT 1 " );
if ( $seriennummer != " " )
$menu_bon = " <a href= \" # \" onclick=AjaxCall( \" index.php?module=aufgaben&action=bondrucker&id=%value% \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/bon_druck.png \" border= \" 0 \" ></a> " ;
else
$menu_bon = " <a href= \" # \" onclick=InfoBox( \" aufgabe_bondrucker \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/bon_druck.png \" border= \" 0 \" ></a> " ;
$menu = " <table cellpadding=0 cellspacing=0><tr><td nowrap><a href= \" index.php?module=aufgaben&action=edit&id=%value%&back=alle#tabs-3 \" ><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=FinalDialog( \" index.php?module=aufgaben&action=abschluss&id=%value% \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/haken.png \" border= \" 0 \" ></a> " . " <a href= \" # \" onclick=DeleteDialog( \" index.php?module=aufgaben&action=delete&id=%value% \" );><img src= \" themes/ { $this -> app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" ></a> " . $menu_bon . " </td></tr></table> " ;
// $menucol=9;
// SQL statement
$alignright = array ( 3 );
$sumcol = 3 ;
$defaultorder = 8 ;
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id,
CONCAT ( if ( a . prio = 1 OR ( a . abgabe_bis <= NOW () AND a . abgabe_bis != '0000-00-00' ), CONCAT ( '<b><font color=' , if ( DATE_FORMAT ( a . abgabe_bis , '%Y-%m-%d' ) = DATE_FORMAT ( NOW (), '%Y-%m-%d' ), 'blue' , 'red' ), '>' , a . aufgabe , '</font></b>' , if ( a . abgabe_bis <= NOW () AND a . abgabe_bis != '0000-00-00' AND a . status != 'abgeschlossen' , if ( DATE_FORMAT ( a . abgabe_bis , '%Y-%m-%d' ) = DATE_FORMAT ( NOW (), '%Y-%m-%d' ), ' <b>Abgabe Heute!</b>' , ' <b>*** Abgabe überfällig! ***</b>' ), '' )), a . aufgabe ), if ( a . intervall_tage > 0 , ' (' , '' ), if ( a . intervall_tage = 2 , 'wöchentlich' , if ( a . intervall_tage = 3 , 'monatlich' , if ( a . intervall_tage = 4 , 'jährlich' , if ( a . intervall_tage = 1 , 'täglich' , '' )))), if ( a . intervall_tage > 0 , ')' , '' )) as aufgabe ,
kdr . name as kunde ,
if ( a . stunden > 0 , a . stunden , '' ) as stunden ,
adr . name as mitarbeiter ,
p . abkuerzung as projekt ,
if ( a . prio = 1 , '<b><font color=red>Prio</font></b>' , if ( a . prio =- 1 , 'Keine Prio' , 'Normal' )) as prio ,
if ( a . abgabe_bis , DATE_FORMAT ( abgabe_bis , '%d.%m.%Y' ), '' ) as abgabe ,
a . id
FROM aufgabe a LEFT JOIN projekt p ON p . id = a . projekt LEFT JOIN adresse adr ON a . adresse = adr . id LEFT JOIN adresse kdr ON a . adresse = kdr . id " ;
// Fester filter
// START EXTRA more
$count = " SELECT COUNT(a.id) FROM aufgabe a WHERE (a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' OR a.initiator=' " . $this -> app -> User -> GetAdresse () . " ') " ;
$more_data6 = $this -> app -> Secure -> GetGET ( " more_data6 " );
if ( $more_data6 == 1 ) $subwhere [] = " a.prio=1 " ;
$more_data7 = $this -> app -> Secure -> GetGET ( " more_data7 " );
if ( $more_data7 == 1 ) $subwhere [] = " (a.abgabe_bis <= NOW() AND a.abgabe_bis!='0000-00-00') " ;
$more_data8 = $this -> app -> Secure -> GetGET ( " more_data8 " );
if ( $more_data8 == 1 ) { $subwhere [] = " a.intervall_tage > 0 " ; }
else {
$where_wdh = " (a.intervall_tage > 0 AND a.abgabe_bis <=NOW() AND a.status!='abgeschlossen' { TMP} AND (a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' OR a.initiator=' " . $this -> app -> User -> GetAdresse () . " ')) OR " ;
$where_wdh_else = " a.intervall_tage = 0 AND " ;
}
$tmp = '' ;
$csubwhere = ! empty ( $subwhere ) ? count ( $subwhere ) : 0 ;
for ( $j = 0 ; $j < $csubwhere ; $j ++ ) $tmp .= " AND " . $subwhere [ $j ];
$where_wdh = str_replace ( '{TMP}' , $tmp , $where_wdh );
$where = " $where_wdh ( $where_wdh_else (a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' OR a.initiator=' " . $this -> app -> User -> GetAdresse () . " ') AND a.status!='abgeschlossen' $tmp ) " ;
$count = " SELECT COUNT(a.id) FROM aufgabe a WHERE $where_wdh ((a.adresse=' " . $this -> app -> User -> GetAdresse () . " ' OR a.initiator=' " . $this -> app -> User -> GetAdresse () . " ') AND a.status!='abgeschlossen') " ;
break ;
case 'task_project_create_employee' :
$allowed [ 'aufgabe' ] = [ 'list' ];
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$smodule = $this -> app -> Secure -> GetGET ( 'smodule' );
if ( $smodule === 'aufgabenliste' ) {
$id = ( int ) $this -> app -> User -> GetParameter ( 'task_project_id' );
}
// headings
$heading = [ '' , 'Mitarbeiter-Nr.' , 'Name' , '' ];
$width = [ '1%' , '10%' , '25%' , '1%' ];
$findcols = [ 'a.id' , 'a.mitarbeiternummer' , 'a.name' , 'a.id' ];
$defaultorder = 1 ; //Optional wenn andere Reihenfolge gewuenscht
$defaultorderdesc = 0 ;
$searchsql = [ 'a.mitarbeiternummer' , 'a.name' ];
$menu = '' ;
$sql = sprintf (
" SELECT SQL_CALC_FOUND_ROWS a.id,
CONCAT ( '<input type=\"checkbox\" data-id=\"' , a . id ,
'\" class=\"projectcreateemployee\" ' ,( IF ( uk . value = '1' , ' checked ' , '' )), ' />' ),
a . mitarbeiternummer , a . name , a . id
FROM `adresse` AS `a`
LEFT JOIN `userkonfiguration` AS `uk`
ON CONCAT ( 'task_project_create_employee_' , a . id ) = uk . name AND uk . user = % d " ,
$this -> app -> User -> GetID ()
)
;
$where = " a.mitarbeiternummer <> '' AND a.geloescht <> 1 " ;
$count = " SELECT count(a.id) FROM `adresse` AS `a` WHERE $where " ;
break ;
case 'task_subproject_create_employee' :
$allowed [ 'aufgabe' ] = [ 'list' ];
$projectId = ( int ) $this -> app -> User -> GetParameter ( 'task_project_id' );
$heading = array ( 'Mitarbeiternummer' , 'Mitarbeiter' , 'Bezeichnung' , 'Stunden' , 'Stundenlohn' , '' );
$width = array ( '20%' , '25%' , '20%' , '15%' , '14%' , '1%' );
$findcols = array ( 'a.mitarbeiternummer' , 'a.name' , 'uktitle.value' , 'ukhours.value' , 'ukhourlyrate.value' , 'a.id' );
$searchsql = array ( 'a.mitarbeiternummer' , 'a.name' , 'uktitle.value' , 'ukhours.value' , 'ukhourlyrate.value' , 'a.id' );
$defaultorder = 1 ; //Optional wenn andere Reihenfolge gewuenscht
$defaultorderdesc = 1 ;
$sql = " SELECT SQL_CALC_FOUND_ROWS a.id, a.mitarbeiternummer, a.name AS `name`,
concat ( '<input data-id=' , a . id , ' class=\"subprojectemployee title\" type=\"text\" value=\"' ,
ifnull ( uktitle . value , ifnull (
( SELECT zk . beschreibung FROM zeiterfassung_kosten zk WHERE zk . adresse = a . id
AND ( zk . gueltig_ab = '0000-00-00' OR zk . gueltig_ab <= curdate ()) ORDER by zk . gueltig_ab DESC LIMIT 1 ),
'' ))
, '\" name=\"stundensatzname_' , a . id , '\" id=\"stundensatzname_' , a . id , '\" />'
) ,
concat ( '<input data-id=' , a . id , ' class=\"subprojectemployee hours\" type=\"text\" value=\"' ,
ifnull ( ukhours . value , 0 ), '\" name=\"stunden_' , a . id , '\" id=\"stunden_' , a . id , '\" />' ) ,
concat ( '<input data-id=' , a . id , ' class=\"subprojectemployee hourlyrate\" type=\"text\" value=\"' ,
ifnull ( ukhourlyrate . value , ifnull (( SELECT zk . stundensatz FROM zeiterfassung_kosten zk WHERE zk . adresse = a . id
AND ( zk . gueltig_ab = '0000-00-00' OR zk . gueltig_ab <= curdate ()) ORDER by zk . gueltig_ab DESC LIMIT 1 ), 0 ))
, '\" name=\"stundensatz_' , a . id , '\" id=\"stundensatz_' , a . id , '\" />' )
, a . id as menu
FROM `adresse` AS `a`
INNER JOIN `adresse_rolle` AS `a2` ON a2 . adresse = a . id
INNER JOIN `projekt` AS `p` ON p . id = a2 . projekt OR p . id = a . projekt AND p . id = '".$projectId."'
LEFT JOIN `userkonfiguration` AS `uktitle`
ON CONCAT ( 'task_subproject_create_employee_title_' , a . id ) = uktitle . name AND uktitle . user = '".$this->app->User->GetID()."'
LEFT JOIN `userkonfiguration` AS `ukhours`
ON CONCAT ( 'task_subproject_create_employee_hours_' , a . id ) = ukhours . name AND ukhours . user = '".$this->app->User->GetID()."'
LEFT JOIN `userkonfiguration` AS `ukhourlyrate`
ON CONCAT ( 'task_subproject_create_employee_hourlyrate_' , a . id ) = ukhourlyrate . name AND ukhours . user = '".$this->app->User->GetID()."'
" ;
$groupby = ' GROUP BY a.id ' ;
$where = " (a2.projekt=' $projectId '
AND ( a2 . bis = '0000-00-00' OR a2 . bis >= CURDATE ())
AND a2 . objekt like 'Projekt' AND a . geloescht != 1 AND mitarbeiternummer != ''
) " ;
$count = " SELECT COUNT(DISTINCT a.id)
FROM `adresse` AS `a`
INNER JOIN `adresse_rolle` AS `a2` ON a2 . adresse = a . id
INNER JOIN `projekt` AS `p` ON p . id = a2 . projekt OR p . id = a . projekt AND p . id = '".$projectId."'
WHERE $where " ;
break ;
}
$erg = [];
//$erlaubtevars = array('heading','width','sql','count','findcols','searchsql','defaultorder','defaultorderdesc','menu','menucol','where','groupby','allowed');
foreach ( $erlaubtevars as $k => $v )
{
if ( isset ( $$v ))
{
$erg [ $v ] = $$v ;
}
}
return $erg ;
}
/**
* Aufgaben 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 ( " edit " , " AufgabenEdit " );
$this -> app -> ActionHandler ( " bondrucker " , " AufgabenBondrucker " );
$this -> app -> ActionHandler ( " editwdh " , " AufgabenEditWdh " );
$this -> app -> ActionHandler ( " abschluss " , " AufgabenAbschluss " );
$this -> app -> ActionHandler ( " pdf " , " AufgabenPDF " );
$this -> app -> ActionHandler ( " pdfextern " , " AufgabenPDFExtern " );
$this -> app -> ActionHandler ( " delete " , " AufgabenDelete " );
$this -> app -> ActionHandler ( " list " , " AufgabenList " );
$this -> app -> ActionHandler ( " create " , " AufgabenCreate " );
$this -> app -> ActionHandler ( " kalender " , " AufgabenKalender " );
$this -> app -> ActionHandler ( " dragdropaufgabe " , " AufgabenDragDrop " );
$this -> app -> ActionHandler ( " sortaufgabe " , " AufgabenSort " );
$this -> app -> ActionHandler ( " dateien " , " AufgabenDateien " );
$this -> app -> ActionHandler ( " data " , " AufgabenData " );
$this -> app -> ActionHandler ( " minidetail " , " AufgabenMiniDetail " );
$this -> app -> ActionHandler ( " mail " , " AufgabenMail " );
$this -> app -> ActionHandler ( " alle " , " AufgabenAlle " );
$this -> app -> ActionHandler ( " bon " , " AufgabenBon " );
$this -> app -> Tpl -> Set ( 'UEBERSCHRIFT' , " Aufgaben " );
$this -> app -> ActionHandlerListen ( $app );
}
public function Install () : void
{
$this -> app -> erp -> CheckTable ( " task_timeline " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " task_timeline " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " task_id " , " int(11) " , " task_timeline " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " address_id " , " int(11) " , " task_timeline " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " time " , " timestamp " , " task_timeline " , " DEFAULT CURRENT_TIMESTAMP " );
$this -> app -> erp -> CheckColumn ( " content " , " TEXT " , " task_timeline " , " NOT NULL " );
$this -> app -> erp -> CheckIndex ( 'task_timeline' , 'task_id' );
$this -> app -> erp -> CheckTable ( 'task_subscription' );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " task_subscription " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " task_id " , " int(11) " , " task_subscription " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " address_id " , " int(11) " , " task_subscription " , " NOT NULL " );
$this -> app -> erp -> CheckIndex ( 'task_subscription' , 'task_id' );
}
function AufgabenMenu ()
{
$this -> app -> Tpl -> Set ( 'BEFORETABS' , '$( "#accordion" ).accordion();' );
$this -> app -> erp -> StartseiteMenu ();
}
function AufgabenAlle ()
{
return ;
}
function AufgabenMail ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
if ( $id <= 0 ){
$msg = " Bitte zuerst die Aufgabe speichern " ;
echo json_encode ( array ( 'status' => 0 , 'statusText' => $msg ));
$this -> app -> erp -> ExitWawi ();
}
$mail = $this -> app -> DB -> Select ( " SELECT adr.email FROM aufgabe a LEFT JOIN adresse adr ON a.adresse=adr.id WHERE a.id=' $id ' LIMIT 1 " );
$result = $this -> app -> erp -> AufgabenMail ( $id );
if ( $result ){
$msg = " Die Aufgabe wurde per Mail an $mail gesendet! " ;
echo json_encode ( array ( 'status' => 1 , 'statusText' => $msg ));
$this -> app -> erp -> ExitWawi ();
} else {
if ( $mail == " " ){
$empfaenger = $this -> app -> DB -> Select ( " SELECT a.name FROM adresse a LEFT JOIN aufgabe auf ON a.id = auf.adresse WHERE auf.id = ' $id ' LIMIT 1 " );
$mail = " $empfaenger (Mailadresse von Mitarbeiter fehlt) " ;
}
$msg = " Fehler beim Senden der Aufgabe an: $mail ! " ;
echo json_encode ( array ( 'status' => 0 , 'statusText' => $msg ));
$this -> app -> erp -> ExitWawi ();
}
}
function AufgabenBon (){
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE verwendenals='bondrucker' LIMIT 1 " );
if ( $seriennummer != " " ){
echo json_encode ( array ( 'status' => 1 ));
$this -> app -> erp -> ExitWawi ();
} else {
echo json_encode ( array ( 'status' => 0 ));
$this -> app -> erp -> ExitWawi ();
}
}
function AufgabenMiniDetail ( $parsetarget = '' )
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$tmp = $this -> app -> DB -> SelectArr ( " SELECT a.aufgabe,a.beschreibung,a.sonstiges,p.abkuerzung,ap.aufgabe as teilprojekt,a.status,
if ( abgabe_bis != '0000-00-00' , DATE_FORMAT ( abgabe_bis , '%d.%m.%Y' ), '' ) as abgabebis , a . stunden as dauer , if ( a . zeiterfassung_abrechnung , 'Ja' , '' ) as abrechnung ,
CONCAT ( '<a href=index.php?module=adresse&action=edit&id=' , a . kunde , ' target=_blank>' , ku . kundennummer , ' ' , ku . name , '</a>' ) as kunde ,
CONCAT ( '<a href=index.php?module=adresse&action=edit&id=' , a . adresse , ' target=_blank>' , mi . mitarbeiternummer , ' ' , mi . name , '</a>' ) as mitarbeiter
FROM aufgabe a LEFT JOIN adresse ku ON ku . id = a . kunde LEFT JOIN adresse mi ON mi . id = a . adresse LEFT JOIN projekt p ON p . id = a . projekt
LEFT JOIN arbeitspaket ap ON ap . id = a . teilprojekt
WHERE a . id = '$id' LIMIT 1 " );
$this -> app -> Tpl -> Set ( " AUFGABE " , $tmp [ 0 ][ 'aufgabe' ]);
$this -> app -> Tpl -> Set ( " BESCHREIBUNG " , nl2br ( $tmp [ 0 ][ 'beschreibung' ]));
$this -> app -> Tpl -> Set ( " NOTIZEN " , nl2br ( $tmp [ 0 ][ 'sonstiges' ]));
$this -> app -> Tpl -> Set ( " KUNDE " , nl2br ( $tmp [ 0 ][ 'kunde' ]));
$this -> app -> Tpl -> Set ( " MITARBEITER " , nl2br ( $tmp [ 0 ][ 'mitarbeiter' ]));
$this -> app -> Tpl -> Set ( " PROJEKT " , $tmp [ 0 ][ 'abkuerzung' ]);
$this -> app -> Tpl -> Set ( " TEILPROJEKT " , $tmp [ 0 ][ 'teilprojekt' ]);
$this -> app -> Tpl -> Set ( " ABGABEBIS " , $tmp [ 0 ][ 'abgabebis' ]);
$this -> app -> Tpl -> Set ( " DAUER " , $tmp [ 0 ][ 'dauer' ]);
$this -> app -> Tpl -> Set ( " ABRECHNUNG " , $tmp [ 0 ][ 'abrechnung' ]);
$this -> app -> Tpl -> Set ( " STATUS " , $tmp [ 0 ][ 'status' ]);
//echo "HUHU $id";
if ( $parsetarget == " " )
{
$this -> app -> Tpl -> Output ( " aufgaben_minidetail.tpl " );
$this -> app -> erp -> ExitWawi ();
} else {
$this -> app -> Tpl -> Parse ( $parsetarget , " aufgaben_minidetail.tpl " );
}
}
function AufgabenBondrucker ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
//$projekt = $this->app->DB->Select("SELECT projekt FROM rechnung WHERE id='$id' LIMIT 1");
$bondrucker = $this -> app -> erp -> Firmendaten ( " aufgaben_bondrucker " );
if ( $bondrucker > 0 )
{
$seriennummer = $this -> app -> DB -> Select ( " SELECT seriennummer FROM adapterbox WHERE id=' $bondrucker ' LIMIT 1 " );
}
$this -> app -> erp -> AufgabeBonDrucker ( $id , $seriennummer );
$this -> app -> ExitXentral ();
}
function AufgabenDateien ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=aufgaben&action=edit&id= $id " , " Details " );
$anzahldateien = $this -> app -> erp -> AnzahlDateien ( " Aufgaben " , $id );
if ( $anzahldateien > 0 ) $anzahldateien = " ( " . $anzahldateien . " ) " ; else $anzahldateien = " " ;
$this -> app -> erp -> MenuEintrag ( " index.php?module=aufgaben&action=dateien&id= $id " , " Dateien " . $anzahldateien );
$this -> app -> Tpl -> Add ( 'UEBERSCHRIFT' , " (Dateien) " );
$this -> app -> YUI -> DateiUpload ( 'PAGE' , " Aufgaben " , $id );
}
function AufgabenPDFExtern ()
{
//Create a new PDF file
$pdf = new SuperFPDF ( 'P' , 'mm' , 'A4' , $this -> app );
$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.aufgabe, if(a.stunden > 0,CONCAT(a.stunden,' h'),'') as dauer, adr.name as name,
if ( a . abgabe_bis , DATE_FORMAT ( a . abgabe_bis , '%d.%m.%Y' ), '' ) as datum , a . prio , a . beschreibung FROM aufgabe a
LEFT JOIN adresse adr ON adr . id = a . adresse WHERE a . status != 'abgeschlossen' ORDER by a . prio DESC , a . abgabe_bis , adr . name " );
// 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 ( 'Aufgabe' , 'Dauer' , 'Mitarbeiter' , 'Termin' , 'Prio' );
$w = array ( 85 , 15 , 40 , 30 , 20 );
$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 , 'L' , true );
$pdf -> Cell ( $w [ 3 ], 7 , $header [ 3 ], 1 , 0 , 'C' , true );
$pdf -> Cell ( $w [ 4 ], 7 , $header [ 4 ], 1 , 0 , 'C' , true );
$pdf -> Ln ();
$pdf -> SetFontClassic ( 'Arial' , '' , 10 );
// Color and font restoration
// Data
$fill = false ;
$ctmp = ! empty ( $tmp ) ? count ( $tmp ) : 0 ;
for ( $i = 0 ; $i < $ctmp ; $i ++ )
{
if ( $tmp [ $i ][ " prio " ] == 0 ) $prio = " Nein " ;
else if ( $tmp [ $i ][ " prio " ] == 1 ) $prio = " Hoch " ;
else if ( $tmp [ $i ][ " prio " ] == 2 ) $prio = " Mittel " ;
else if ( $tmp [ $i ][ " prio " ] == 3 ) $prio = " Niedrig " ;
else if ( $tmp [ $i ][ " prio " ] ==- 1 ) $prio = " Nein " ;
$pdf -> Cell ( $w [ 0 ], 6 , $tmp [ $i ][ " aufgabe " ], 'LRT' , 0 , 'L' , $fill );
$pdf -> Cell ( $w [ 1 ], 6 , $tmp [ $i ][ " dauer " ], 'LRTB' , 0 , 'L' , $fill );
$pdf -> Cell ( $w [ 2 ], 6 , $tmp [ $i ][ " name " ], 'LRTB' , 0 , 'L' , $fill );
$pdf -> Cell ( $w [ 3 ], 6 , $tmp [ $i ][ " datum " ], 'LRTB' , 0 , 'C' , $fill );
$pdf -> Cell ( $w [ 4 ], 6 , $prio , 'LRTB' , 1 , 'C' , $fill );
$pdf -> MultiCell ( 0 , 6 , $tmp [ $i ][ 'beschreibung' ], 'LRB' , 'L' , $fill );
$pdf -> Ln ( 2 );
$fill = ! $fill ;
}
$pdf -> Ln ();
$pdf -> SetFontClassic ( 'Arial' , '' , 8 );
$name = " ALL " ;
$pdf -> Cell ( array_sum ( $w ), 0 , date ( 'Ymd' ) . " _ " . $name . " _TODO.pdf " , '' , 0 , 'R' );
$pdf -> Output ( date ( 'Ymd' ) . " _ " . $name . " _TODO.pdf " , 'D' );
$this -> app -> ExitXentral ();
}
function AufgabenPDF ()
{
//Create a new PDF file
$pdf = new SuperFPDF ( 'P' , 'mm' , 'A4' , $this -> app );
$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 aufgabe, if(stunden > 0,CONCAT(stunden,' h'),'') as dauer,
if ( abgabe_bis , DATE_FORMAT ( abgabe_bis , '%d.%m.%Y' ), '' ) as datum , prio , beschreibung FROM aufgabe
WHERE adresse = '".$this->app->User->GetAdresse()."' AND status != 'abgeschlossen' ORDER by prio DESC , abgabe_bis " );
// 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 ( 'Aufgabe' , 'Dauer' , 'Termin' , 'Prio' , 'OK' );
$w = array ( 85 , 15 , 40 , 30 , 20 );
$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 -> Cell ( $w [ 4 ], 7 , $header [ 4 ], 1 , 0 , 'C' , true );
$pdf -> Ln ();
$pdf -> SetFontClassic ( 'Arial' , '' , 11 );
// Color and font restoration
// Data
$fill = false ;
$ctmp = ! empty ( $tmp ) ? count ( $tmp ) : 0 ;
for ( $i = 0 ; $i < $ctmp ; $i ++ )
{
if ( $tmp [ $i ][ " prio " ] == 0 ) $prio = " Nein " ;
else if ( $tmp [ $i ][ " prio " ] == 1 ) $prio = " Hoch " ;
else if ( $tmp [ $i ][ " prio " ] == 2 ) $prio = " Mittel " ;
else if ( $tmp [ $i ][ " prio " ] == 3 ) $prio = " Niedrig " ;
else if ( $tmp [ $i ][ " prio " ] ==- 1 ) $prio = " Nein " ;
$pdf -> Cell ( $w [ 0 ], 6 , $tmp [ $i ][ " aufgabe " ], 'LRT' , 0 , 'L' , $fill );
$pdf -> Cell ( $w [ 1 ], 6 , $tmp [ $i ][ " dauer " ], 'LRTB' , 0 , 'C' , $fill );
$pdf -> Cell ( $w [ 2 ], 6 , $tmp [ $i ][ " datum " ], 'LRTB' , 0 , 'C' , $fill );
$pdf -> Cell ( $w [ 3 ], 6 , $prio , 'LRTB' , 0 , 'C' , $fill );
$pdf -> Cell ( $w [ 4 ], 6 , " " , 'LRTB' , 1 , 'C' , $fill );
$pdf -> MultiCell ( 0 , 6 , $tmp [ $i ][ 'beschreibung' ], 'LRB' , 'L' , $fill );
$pdf -> Ln ( 2 );
$fill = ! $fill ;
}
$pdf -> Ln ();
$pdf -> SetFontClassic ( 'Arial' , '' , 8 );
$name = preg_replace ( " /[^a-zA-Z0-9_]/ " , " " , str_replace ( ' ' , '_' , $this -> app -> User -> GetName ()));
$name = strtoupper ( $name );
$pdf -> Cell ( array_sum ( $w ), 0 , date ( 'Ymd' ) . " _ " . $name . " _TODO.pdf " , '' , 0 , 'R' );
$pdf -> Output ( date ( 'Ymd' ) . " _ " . $name . " _TODO.pdf " , 'D' );
$this -> app -> ExitXentral ();
}
function AufgabenDelete ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$sid = $this -> app -> Secure -> GetGET ( " sid " );
$referrer = $this -> app -> Secure -> GetGET ( " referrer " );
$check = $this -> app -> DB -> Select ( " Select initiator FROM aufgabe WHERE id=' $id ' LIMIT 1 " );
if ( $check == $this -> app -> User -> GetAdresse () || $this -> app -> User -> GetType () == " admin " )
{
$this -> app -> DB -> Update ( " DELETE FROM aufgabe WHERE id=' $id ' LIMIT 1 " );
$msg = base64_encode ( " <div class= \" error2 \" >Die Aufgabe wurde gelöscht!</div> " );
} else {
$msg = base64_encode ( " <div class= \" error2 \" >Die Aufgabe darf nur vom Initiator gelöscht werden!</div> " );
}
if ( $referrer == " projekt " )
header ( " Location: index.php?module=projekt&action=dashboard&id= $sid &msg= $msg " );
else
header ( " Location: index.php?module=aufgaben&action=list&msg= $msg " );
exit ;
}
function AufgabenAbschluss ()
{
$id = $this -> app -> Secure -> GetGET ( " id " );
$back = $this -> app -> Secure -> GetGET ( " back " );
$referrer = $this -> app -> Secure -> GetGET ( " referrer " );
$sid = $this -> app -> Secure -> GetGET ( " sid " );
// einmalig immer weg
// aufgaben kopieren und dann wenn intervall_tage 2 = woechen 3 monatlich 4 jaehrlich
// alles kopieren 1:1 neue hat mit dem datum von turnus +1 tag + 7 Tage oder monatlich immer wieder dann rein
// ab taeglich kann man nur abschliessen abgabe_bis <= heute ist
$result = $this -> app -> erp -> AbschlussAufgabe ( $id );
//$this->app->DB->Update("UPDATE aufgabe SET status='abgeschlossen',abgeschlossen_am=NOW() WHERE id='$id' LIMIT 1");
if ( $result <= 0 )
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" error \" >Die Aufgabe ist eine wiederholende und liegt in der Zukunft und darf noch nicht abgeschlossen werden!</div> " );
else {
$msg = $this -> app -> erp -> base64_url_encode ( " <div class= \" info \" >Die Aufgabe wurde abgeschlossen!</div> " );
$data = $this -> app -> DB -> SelectArr ( " SELECT * FROM aufgabe WHERE id=' $id ' LIMIT 1 " );
if ( $data [ 0 ][ 'zeiterfassung_pflicht' ] == " 1 " )
{
$mitarbeiter = $this -> app -> User -> GetAdresse ();
$zeit = new DateTime (); //current date/time
$vonZeit = $zeit -> format ( 'Y-m-d ' . $data [ 0 ][ 'abgabe_bis_zeit' ]);
$bisZeit = $zeit -> format ( 'Y-m-d H:i:s' );
$newid = $this -> app -> erp -> AddArbeitszeit ( $mitarbeiter , $vonZeit , $bisZeit , $data [ 0 ][ 'aufgabe' ], $data [ 0 ][ 'beschreibung' ], " " ,
" " , " " , " arbeit " , $data [ 0 ][ 'kunde' ], $data [ 0 ][ 'zeiterfassung_abrechnung' ], " " , " " , " " , " " , $id );
$this -> app -> DB -> Update ( 'UPDATE zeiterfassung SET projekt=' . $data [ 0 ][ 'projekt' ] . ',arbeitspaket=' . $data [ 0 ][ 'teilprojekt' ] . ', art=\'Arbeit\' WHERE id=' . $newid );
if ( $back == " " ) $back = " aufgabe " ;
header ( " Location: index.php?module=zeiterfassung&action=create&id= $newid &back= $back " );
exit ;
}
}
if ( $referrer == " 1 " )
header ( " Location: index.php?msg= $msg " );
else if ( $referrer == " projekt " )
header ( " Location: index.php?module=projekt&action=dashboard&id= $sid &msg= $msg " );
else {
if ( $back == " wochenplan " )
header ( " Location: index.php?module=aufgaben&action=list&cmd=wochenplan&msg= $msg " );
else
header ( " Location: index.php?module=aufgaben&action=list&msg= $msg " );
}
exit ;
}
function AufgabenKalender ()
{
$this -> AufgabenMenu ();
$adr_id = $this -> app -> User -> GetAdresse ();
$this -> app -> erp -> Wochenplan ( $adr_id , 'TAB1' );
$this -> app -> Tpl -> Set ( 'AKTIV_TAB1' , " selected " );
$this -> app -> Tpl -> Set ( 'TABSADD' , '' );
$this -> app -> Tpl -> Parse ( 'PAGE' , " aufgabenkalender.tpl " );
}
function AufgabenCreate ()
{
//$this->app->erp->MenuEintrag("index.php?module=artikel&action=list","Zurück zur Übersicht");
$this -> app -> Tpl -> Set ( 'ABBRECHEN' , " <input type= \" button \" value= \" Abbrechen \" onclick= \" window.location.href='index.php?module=aufgaben&action=list'; \" > " );
parent :: AufgabeCreate ();
}
/**
* @ return JsonResponse
*/
public function HandleGetProjectShortCodeAjax () : JsonResponse
{
$shortCode = $this -> app -> Secure -> GetPOST ( 'projectshortcode' );
$index = 0 ;
while (
! empty (
$this -> app -> DB -> Select (
sprintf (
" SELECT `id` FROM `projekt` WHERE `abkuerzung` = '%s' LIMIT 1 " ,
$shortCode . ( $index === 0 ? '' : $index )
)
)
)
) {
$index ++ ;
}
return new JsonResponse ([ 'projectshortcode' => $shortCode . ( $index === 0 ? '' : $index )]);
}
/**
* @ param string $shortCode
*
* @ return int | null
*/
public function getProjectIdByShortCode ( string $shortCode ) : ? int
{
$shortCodeExploded = explode ( ' ' , $shortCode );
$shortCode = ( string ) reset ( $shortCodeExploded );
$projectId = $this -> app -> DB -> Select (
sprintf (
" SELECT `id` FROM `projekt` WHERE `abkuerzung` = '%s' AND `geloescht` = 0 " ,
$shortCode
)
);
if ( empty ( $projectId )) {
return null ;
}
return ( int ) $projectId ;
}
/**
* @ return JsonResponse
*/
public function HandleGetSubProjectsByProjectAjax () : JsonResponse
{
$optionHtml = '' ;
$shortCode = explode ( ' ' , $this -> app -> Secure -> GetPOST ( 'projectshortcode' ));
$shortCode = reset ( $shortCode );
if ( empty ( $shortCode )) {
$this -> app -> User -> SetParameter ( 'task_project_id' , 0 );
return new JsonResponse ([ 'html' => $optionHtml ]);
}
$projectId = $this -> getProjectIdByShortCode ( $shortCode );
if ( empty ( $projectId )) {
$this -> app -> User -> SetParameter ( 'task_project_id' , 0 );
return new JsonResponse ([ 'html' => $optionHtml ]);
}
$this -> app -> User -> SetParameter ( 'task_project_id' , $projectId );
$subProjects = $this -> app -> DB -> SelectPairs (
sprintf (
" SELECT `id`, `aufgabe` FROM `arbeitspaket` WHERE `projekt` = %d ORDER BY `sort`, `id` " ,
$projectId
)
);
if ( empty ( $subProjects )) {
return new JsonResponse ([ 'html' => $optionHtml ]);
}
foreach ( $subProjects as $subProjectId => $title ) {
$optionHtml .= sprintf ( '<option value="%s">%s</option>' , $subProjectId , htmlspecialchars ( $title ));
}
return new JsonResponse ([ 'html' => $optionHtml ]);
}
/**
* @ return JsonResponse
*/
public function HandleChangeProjectEmployeeAjax () : JsonResponse
{
$addressId = $this -> app -> Secure -> GetPOST ( 'address_id' );
$value = $this -> app -> Secure -> GetPOST ( 'value' );
if ( empty ( $addressId )) {
return new JsonResponse ([ 'status' => false , 'error' => 'no address_id' ]);
}
if ( empty ( $value )) {
$this -> app -> User -> deleteParameter ( 'task_project_create_employee_' . $addressId );
}
else {
$this -> app -> User -> SetParameter ( 'task_project_create_employee_' . $addressId , '1' );
}
return new JsonResponse ([ 'status' => true ]);
}
/**
* @ return array
*/
public function getUserMarkedProjectEmployeeIds () : array
{
return $this -> app -> DB -> SelectFirstCols (
sprintf (
" SELECT a.id
FROM `adresse` AS `a`
INNER JOIN `userkonfiguration` AS `uk`
ON CONCAT ( 'task_project_create_employee_' , a . id ) = uk . name AND uk . user = % d
WHERE a . mitarbeiternummer <> '' AND a . geloescht <> 1 " ,
$this -> app -> User -> GetID ()
)
);
}
/**
* @ param int $projectId
*
* @ return bool
*/
public function hasProjectSubProjects ( int $projectId ) : bool
{
if ( $projectId < 0 ) {
return false ;
}
return ( int ) $this -> app -> DB -> Select (
sprintf (
'SELECT COUNT(`id`) FROM `arbeitspaket` WHERE `projekt` = %d' ,
$projectId
)
) > 0 ;
}
public function HandleChangeSubProjectEmployeeAjax () : JsonResponse
{
$addressId = $this -> app -> Secure -> GetPOST ( 'address_id' );
$hours = ( string ) $this -> app -> Secure -> GetPOST ( 'hours' );
$hourlyRate = ( string ) $this -> app -> Secure -> GetPOST ( 'hourlyrate' );
$title = ( string ) $this -> app -> Secure -> GetPOST ( 'title' );
if ( $hours === '' ) {
$this -> app -> User -> deleteParameter ( 'task_subproject_create_employee_hours_' . $addressId );
}
else {
$this -> app -> User -> SetParameter ( 'task_subproject_create_employee_hours_' . $addressId , $hours );
}
if ( $hourlyRate === '' ) {
$this -> app -> User -> deleteParameter ( 'task_subproject_create_employee_hourlyrate_' . $addressId );
}
else {
$this -> app -> User -> SetParameter ( 'task_subproject_create_employee_hourlyrate_' . $addressId , $hourlyRate );
}
if ( $title === '' ) {
$this -> app -> User -> deleteParameter ( 'task_subproject_create_employee_title_' . $addressId );
}
else {
$this -> app -> User -> SetParameter ( 'task_subproject_create_employee_title_' . $addressId , $title );
}
return new JsonResponse ([]);
}
/**
* @ return JsonResponse
*/
public function HandleCreateSubProjectAjax () : JsonResponse
{
$projectId = $this -> getProjectIdByShortCode (( string ) $this -> app -> Secure -> GetPOST ( 'project' ));
$error = [];
if ( $projectId === null ) {
$error [] = 'Bitte ein Projekt eingeben' ;
}
$title = ( string ) $this -> app -> Secure -> GetPOST ( 'title' );
if ( empty ( $title )) {
$error [] = 'Bitte eine Bezeichnung angeben' ;
}
$description = ( string ) $this -> app -> Secure -> GetPOST ( 'description' );
$status = ( string ) $this -> app -> Secure -> GetPOST ( 'status' );
$parentId = ( int ) $this -> app -> Secure -> GetPOST ( 'parentid' );
if ( $parentId > 0 ) {
$parentId = $this -> app -> DB -> Select (
sprintf (
'SELECT `id` FROM `arbeitspaket` WHERE `id` = %d AND `projekt` = %d' ,
$parentId , $projectId
)
);
}
$positionType = ( string ) $this -> app -> Secure -> GetPOST ( 'positiontype' );
if ( ! in_array ( $positionType , [ 'postypnachbar' , 'postypkind' ], true )) {
if ( $this -> hasProjectSubProjects ( $parentId )){
$error [] = 'Bitte eine Bezeichnung angeben' ;
}
else {
$positionType = 'postypkind' ;
}
}
$startDate = ( string ) $this -> app -> Secure -> GetPOST ( 'startdate' );
if ( ! empty ( $startDate ) && strpos ( $startDate , '.' ) !== false ) {
$startDate = $this -> app -> String -> Convert ( $startDate , '%1.%2.%3' , '%3-%2-%1' );
}
if ( $startDate === '' || $startDate === '--' ) {
$startDate = '0000-00-00' ;
}
$endDate = ( string ) $this -> app -> Secure -> GetPOST ( 'enddate' );
if ( ! empty ( $endDate ) && strpos ( $endDate , '.' ) !== false ) {
$endDate = $this -> app -> String -> Convert ( $endDate , '%1.%2.%3' , '%3-%2-%1' );
}
if ( $endDate === '' || $endDate === '--' ) {
$endDate = '0000-00-00' ;
}
$color = ( string ) $this -> app -> Secure -> GetPOST ( 'color' );
$leader = explode ( ' ' , ( string ) $this -> app -> Secure -> GetPOST ( 'leader' ));
$leaderAddressId = ( int ) reset ( $leader );
if ( ! empty ( $error )) {
return new JsonResponse ([ 'error' => implode ( '<br />' , $error )]);
}
if ( $positionType === 'postypnachbar' )
{
$neigbourId = $parentId ;
if ( $neigbourId ) {
$parentId = ( int ) $this -> app -> DB -> Select (
" SELECT `vorgaenger` FROM `arbeitspaket` WHERE `projekt` = ' $projectId ' AND `id` = ' $neigbourId ' LIMIT 1 "
);
$sortNeighbour = ( int ) $this -> app -> DB -> Select (
" SELECT `sort` FROM `arbeitspaket` WHERE `projekt` = ' $projectId ' AND `id` = ' $neigbourId ' LIMIT 1 "
);
$this -> app -> DB -> Update (
" UPDATE `arbeitspaket` SET `sort` = `sort` + 1
WHERE `vorgaenger` = '$parentId' AND `sort` > $sortNeighbour AND `projekt` = '$projectId' "
);
$sort = $sortNeighbour + 1 ;
}
else {
$sort = 1 ;
$parentId = 0 ;
}
}
else {
if ( $parentId > 0 ){
$sort = 1 + ( int ) $this -> app -> DB -> Select (
" SELECT max(`sort`) FROM `arbeitspaket` WHERE `projekt` = ' $projectId ' AND `vorgaenger` = ' $parentId ' LIMIT 1 "
);
}
else {
$sort = 1 + ( int ) $this -> app -> DB -> Select (
" SELECT max(`sort`) FROM `arbeitspaket` WHERE `projekt` = ' $projectId ' LIMIT 1 "
);
}
}
$this -> app -> DB -> Insert (
sprintf (
" INSERT INTO `arbeitspaket`
( `adresse` , `aufgabe` , `beschreibung` , `projekt` , `startdatum` , `abgabedatum` , `sort` ,
`farbe` , `status` ,
`vorgaenger` , `art` , `geloescht` , `aktiv` )
VALUES
( % d , '%s' , '%s' , % d , '%s' , '%s' , % d , '%s' , '%s' , % d , 'teilprojekt' , 0 , 1 ) " ,
$leaderAddressId , $title , $description , $projectId , $startDate , $endDate , $sort , $color , $status , $parentId
)
);
$subProjectId = ( int ) $this -> app -> DB -> GetInsertID ();
$employeeDataSets = $this -> app -> DB -> SelectArr ( " SELECT a.id,uktitle.value AS `title`,
ukhours . value AS `hours` ,
ukhourlyrate . value AS `hourlyrate`
FROM `adresse` AS `a`
INNER JOIN `adresse_rolle` AS `a2` ON a2 . adresse = a . id
INNER JOIN `projekt` AS `p` ON p . id = a2 . projekt OR p . id = a . projekt
AND p . id = '".$projectId."'
LEFT JOIN `userkonfiguration` AS `uktitle`
ON CONCAT ( 'task_subproject_create_employee_title_' , a . id ) = uktitle . name
AND uktitle . user = '".$this->app->User->GetID()."'
LEFT JOIN `userkonfiguration` AS `ukhours`
ON CONCAT ( 'task_subproject_create_employee_hours_' , a . id ) = ukhours . name
AND ukhours . user = '".$this->app->User->GetID()."'
LEFT JOIN `userkonfiguration` AS `ukhourlyrate`
ON CONCAT ( 'task_subproject_create_employee_hourlyrate_' , a . id ) = ukhourlyrate . name
AND ukhours . user = '".$this->app->User->GetID()."' "
);
if ( ! empty ( $employeeDataSets )) {
foreach ( $employeeDataSets as $employeeDataSet ) {
if ( ! empty ( $employeeDataSet [ 'title' ])
|| ! empty ( $employeeDataSet [ 'hourlyrate' ])
|| ! empty ( $employeeDataSet [ 'hours' ])
) {
$this -> app -> DB -> Insert (
sprintf (
" INSERT INTO `teilprojekt_geplante_zeiten`
( `projekt` , `teilprojekt` , `adresse` , `bezeichnung` , `stundensatz` , `stunden` )
VALUES ( % d , % d , % d , '%s' , % f , % f ) " ,
$projectId , $subProjectId , $employeeDataSet [ 'id' ],
$employeeDataSet [ 'title' ],
$employeeDataSet [ 'hourlyrate' ],
$employeeDataSet [ 'hours' ]
)
);
$this -> app -> User -> deleteParameterPrefix ( 'task_subproject_create_employee_title_' . $employeeDataSet [ 'id' ]);
$this -> app -> User -> deleteParameterPrefix ( 'task_subproject_create_employee_hours_' . $employeeDataSet [ 'id' ]);
$this -> app -> User -> deleteParameterPrefix ( 'task_subproject_create_employee_hourlyrate_' . $employeeDataSet [ 'id' ]);
}
}
}
return new JsonResponse ([ 'id' => $subProjectId ]);
}
/**
* @ return JsonResponse
*/
public function HandleCreateProjectAjax () : JsonResponse
{
/** @var Projekt $projectObj */
$projectObj = $this -> app -> loadModule ( 'projekt' );
$error = $projectObj -> getProjectCreateErrorMessagesByForm ();
$employeeIds = $this -> getUserMarkedProjectEmployeeIds ();
if ( empty ( $employeeIds )) {
$error [] = 'Bitte markiere mindestens ein Mitarbeiter' ;
}
if ( $error ) {
return new JsonResponse ([ 'error' => implode ( '<br />' , $error )]);
}
$abkuerzung = $this -> app -> Secure -> GetPOST ( 'abkuerzung' );
$typ = $this -> app -> Secure -> GetPOST ( 'typ' );
$customerId = ( int ) $this -> app -> Secure -> GetPOST ( 'kunde' );
if ( $typ === 'kundennummer' ) {
$customerInfo = $projectObj -> getNextProjectShortCutByCustomer ( $customerId );
$abkuerzung = $customerInfo [ 'shortcode' ];
}
elseif ( $typ === 'fortlaufend' ) {
$abkuerzung = $this -> app -> erp -> GetNextNummer ( 'projektnummer' );
}
$projectId = $projectObj -> finishCreateProject ( $abkuerzung , 0 );
if ( $projectId <= 0 ) {
return new JsonResponse (
[ 'error' => 'Es gab einen Fehler. Das Projekt konnte nicht angelegt werden.' ]
);
}
if ( ! empty ( $employeeIds )) {
foreach ( $employeeIds as $employeeId ) {
$this -> app -> DB -> Insert (
sprintf (
" INSERT INTO `adresse_rolle`
( `adresse` , `subjekt` , `praedikat` , `objekt` , `parameter` , `von` , `projekt` )
VALUES ( % d , 'Mitglied' , 'von' , 'Projekt' , '%d' , NOW (), '%d' ) " ,
$employeeId , $projectId , $projectId
)
);
$this -> app -> User -> deleteParameterPrefix ( 'task_project_create_employee_' . $employeeId );
}
}
return new JsonResponse ([ 'id' => $projectId ]);
}
function AufgabenList ()
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
if ( $cmd === 'getprojectshortcode' ) {
return $this -> HandleGetProjectShortCodeAjax ();
}
if ( $cmd === 'changeemployee' ) {
return $this -> HandleChangeProjectEmployeeAjax ();
}
if ( $cmd === 'getsubprojectsbyproject' ) {
return $this -> HandleGetSubProjectsByProjectAjax ();
}
if ( $cmd === 'createproject' ) {
return $this -> HandleCreateProjectAjax ();
}
if ( $cmd === 'createsubproject' ) {
return $this -> HandleCreateSubProjectAjax ();
}
if ( $cmd === 'changesubprojectemployee' ) {
return $this -> HandleChangeSubProjectEmployeeAjax ();
}
$this -> app -> YUI -> DateiPopup ( 'DATEIENPOPUP' , 'aufgaben' , '#e_id' , array (
'openbuttontarget' => 'DATEIBUTTON'
, 'frompopup' => 'editAufgaben' , 'afteropen' => 'AFTERPOPUPOPEN'
));
$this -> AufgabenMenu ();
if ( $this -> app -> erp -> RechteVorhanden ( " aufgaben " , " pdfextern " ))
{
$this -> app -> Tpl -> Set ( 'EXTERNELISTE' , '<a href="index.php?module=aufgaben&action=pdfextern">{|Externe Aufgaben-Liste als PDF|}</a>' );
}
/* offene Aufgabens */
$adresse = $this -> app -> User -> GetAdresse ();
$options = '' ;
if ( $this -> app -> User -> GetType () == " admin " || $this -> app -> erp -> RechteVorhanden ( " aufgaben " , " alle " ))
{
$mitarbeiter_arr = $this -> app -> erp -> GetMitarbeiter ();
$sid = $this -> app -> Secure -> GetGET ( " sid " );
$cmd = $this -> app -> Secure -> GetGET ( " cmd " );
if ( $this -> app -> User -> GetType () == " admin " || $this -> app -> erp -> RechteVorhanden ( " aufgaben " , " alle " ))
$options .= " <option value= \" 0 \" >Alle</option> " ;
if ( $sid == " " ) $sid = $this -> app -> User -> GetParameter ( " aufgabe_benutzer_simulieren " );
if ( $sid != " " ) {
$adresse = $sid ;
$this -> app -> Tpl -> Set ( 'MITARBEITER' , $sid );
$this -> app -> User -> SetParameter ( " aufgabe_benutzer_simulieren " , $sid );
}
$cmitarbeiter_arr = ! empty ( $mitarbeiter_arr ) ? count ( $mitarbeiter_arr ) : 0 ;
for ( $mi = 0 ; $mi < $cmitarbeiter_arr ; $mi ++ )
{
if ( $adresse == $mitarbeiter_arr [ $mi ][ 'id' ]) {
$selected = " selected " ;
} else {
$selected = " " ;
}
$options .= " <option value= \" " . $mitarbeiter_arr [ $mi ][ 'id' ] . " \" $selected > " . $mitarbeiter_arr [ $mi ][ 'name' ] . " </option> " ;
}
if ( $this -> app -> User -> GetParameter ( " aufgabe_benutzer_simulieren " ) > 0 && $this -> app -> User -> GetParameter ( " aufgabe_benutzer_simulieren " ) != $this -> app -> User -> GetAdresse ())
{
$name = $this -> app -> DB -> Select ( " SELECT CONCAT(mitarbeiternummer,' ',name) FROM adresse WHERE id=' " . $this -> app -> User -> GetParameter ( " aufgabe_benutzer_simulieren " ) . " ' LIMIT 1 " );
$color = " #E5F5D2 " ;
$this -> app -> Tpl -> Set ( 'KURZUEBERSCHRIFT2' , $name );
} else {
$name = $this -> app -> DB -> Select ( " SELECT CONCAT(mitarbeiternummer,' ',name) FROM adresse WHERE id=' " . $this -> app -> User -> GetAdresse () . " ' LIMIT 1 " );
$this -> app -> Tpl -> Set ( 'KURZUEBERSCHRIFT2' , $name );
}
$this -> app -> Tpl -> Set ( 'RTABSELECT' , "
{ | Ansicht Mitarbeiter | } :& nbsp ; < select style = \ " background-color: $color ; \" name= \" mitarbeiter \" id= \" mitarbeiter \" onchange= \" window.location.href='index.php?module=aufgaben&action=list&cmd= $cmd &sid=' + this.value \" > " . $options . " </select> " );
}
switch ( $cmd ) {
case 'wochenplan' :
$this -> app -> Tpl -> Add ( 'ANZEIGE' , $this -> AufgabenWochenplan ( $adresse ));
if ( $this -> app -> User -> GetType () == " admin " || $this -> app -> erp -> RechteVorhanden ( " aufgaben " , " alle " ))
{
$this -> app -> Tpl -> Add ( 'ANZEIGE' , $this -> AufgabenWochenplan ( $adresse , 1 ));
$this -> app -> Tpl -> Add ( 'ANZEIGE' , $this -> AufgabenWochenplan ( $adresse , 2 ));
}
$this -> app -> Tpl -> Set ( 'AKTIVWOCHENPLAN' , " aktiv " );
break ;
case 'kalender' :
$this -> app -> Tpl -> Set ( 'AKTIVKALENDER' , " aktiv " );
$this -> app -> Tpl -> Set ( " AUFGABE_KALENDER_FILTER_KUNDE " , $this -> app -> User -> GetParameter ( " aufgabe_kalender_filter_kunde " ));
$this -> app -> Tpl -> Parse ( 'ANZEIGE' , " aufgaben_kalender.tpl " );
break ;
case 'projects' :
$this -> app -> Tpl -> Set ( 'ACTIVEPROJECTS' , 'aktiv' );
break ;
case 'eingang' :
$this -> app -> Tpl -> Set ( 'AKTIVEINGANG' , " aktiv " );
break ;
default :
$this -> app -> Tpl -> Set ( 'AKTIVAUFGABENLISTE' , " aktiv " );
$this -> app -> Tpl -> Parse ( 'ANZEIGE' , " aufgabenuebersicht_filtermeine.tpl " );
$this -> app -> YUI -> TableSearch ( 'ANZEIGE' , 'aufgaben_meine' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__ );
break ;
}
//$this->app->YUI->TableSearch('WIEDERHOLENDE',"aufgabenwdh");
//$this->app->YUI->TableSearch('AUFGABENARCHIV',"aufgaben_archiv");
$pinnwaende = $this -> app -> erp -> GetPinwandSelect ();
$pinnwand = " " ;
foreach ( $pinnwaende as $key => $value ){
$pinnwand .= " <option value=' $key '> " . $value . " </option> " ;
}
$this -> app -> Tpl -> Set ( " PINNWAND " , $pinnwand );
$this -> app -> YUI -> AutoSaveUserParameter ( " aufgabe_kalender_filter_kunde " , " aufgabe_kalender_filter_kunde " );
$this -> app -> YUI -> AutoComplete ( " aufgabe_kalender_filter_kunde " , " adresse " );
$this -> app -> YUI -> AutoComplete ( " e_mitarbeiter " , " mitarbeiteraktuell " );
$this -> app -> YUI -> AutoComplete ( " e_kunde " , " adresse " );
//$this->app->YUI->AutoComplete("e_projekt", "projektname");
//$this->app->YUI->AutoComplete("e_teilprojekt", "arbeitspaket");
$this -> app -> YUI -> CkEditor ( " e_notizen " , " belege " , array ( " width " => " 625 " ));
$this -> app -> YUI -> CkEditor ( " e_beschreibung " , " belege " , array ( " width " => " 420 " ));
$this -> app -> YUI -> DatePicker ( " e_datum " );
$this -> app -> YUI -> TimePicker ( " e_zeit " );
$this -> app -> Tpl -> Set ( 'TABSADD' , '' );
if ( ! $this -> app -> erp -> RechteVorhanden ( 'projekt' , 'dashboard' )) {
$this -> app -> Tpl -> Set ( 'BEFOREPROJECTDASHBOARD' , '<!--' );
$this -> app -> Tpl -> Set ( 'AFTERPROJECTDASHBOARD' , '-->' );
}
else {
$this -> app -> YUI -> AutoComplete ( 'subprojectleader' , 'adresse' );
$this -> app -> YUI -> AutoComplete ( 'subprojectproject' , 'projektname' );
$this -> app -> YUI -> ColorPicker ( 'subprojectcolor' );
$this -> app -> YUI -> CkEditor ( 'subprojectdescription' , 'belege' );
$this -> app -> YUI -> DatePicker ( 'subprojectstartdate' );
$this -> app -> YUI -> DatePicker ( 'subprojectenddate' );
$this -> app -> YUI -> TableSearch (
'SUBPROJECTEMPLOYETABLE' , 'task_subproject_create_employee' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__
);
}
if ( ! $this -> app -> erp -> RechteVorhanden ( 'projekt' , 'create' )) {
$this -> app -> Tpl -> Set ( 'BEFOREPROJECTCREATE' , '<!--' );
$this -> app -> Tpl -> Set ( 'AFTERPROJECTCREATE' , '-->' );
}
else {
/** @var Projekt $projectModule */
$projectModule = $this -> app -> loadModule ( 'projekt' );
$this -> app -> Tpl -> Add ( 'STATUSSEL' , $projectModule -> getProjectStatusSelect ());
$this -> app -> YUI -> AutoComplete ( 'projectcustomer' , 'adresse' );
$this -> app -> YUI -> AutoComplete ( 'projectleader' , 'adresse' );
$this -> app -> YUI -> ColorPicker ( 'projectcolor' );
$this -> app -> YUI -> CkEditor ( 'projectdescription' , 'belege' );
$this -> app -> YUI -> TableSearch (
'EMPLOYETABLE' , 'task_project_create_employee' , 'show' , '' , '' , basename ( __FILE__ ), __CLASS__
);
$this -> app -> Tpl -> Parse ( 'CREATEPROJECTFIELDSET' , 'aufgaben_create_project.tpl' );
}
$this -> app -> Tpl -> Parse ( 'AUFGABENPOPUP' , 'aufgaben_popup.tpl' );
$this -> app -> Tpl -> Parse ( 'PAGE' , " aufgabenuebersicht.tpl " );
}
function AufgabenWochenplan ( $adresse = 0 , $moveweek = 0 ) //,$jahr="",$woche="")
{
$jahr = '' ;
$woche = '' ;
if ( $jahr == " " ) $jahr = date ( 'Y' );
if ( $woche == " " ) $woche = date ( 'W' );
if ( $moveweek > 0 )
{
$jahr = date ( 'Y' , strtotime ( " + $moveweek week " ));
$woche = date ( 'W' , strtotime ( " + $moveweek week " ));
} else if ( $moveweek < 0 )
{
$jahr = date ( 'Y' , strtotime ( " - $moveweek week " ));
$woche = date ( 'W' , strtotime ( " - $moveweek week " ));
}
$tag [ 0 ] = " So " ;
$tag [ 1 ] = " Mo " ;
$tag [ 2 ] = " Di " ;
$tag [ 3 ] = " Mi " ;
$tag [ 4 ] = " Do " ;
$tag [ 5 ] = " Fr " ;
$tag [ 6 ] = " Sa " ;
$tpl = '
< center > Jahr '.$jahr.' KW '.$woche.' </ center >< table class = " mkTable " width = " 100% " > ' ;
$timestamp_montag = strtotime ( " { $jahr } -W { $woche } " );
$tpl1 = '' ;
$tpl2 = '' ;
$tpl3 = '' ;
for ( $i = 0 ; $i < 7 ; $i ++ )
{
$datum = date ( " Y-m-d " , $timestamp_montag ) ;
$timestamp_montag += 3600 * 24 ;
$erste_zeiterfassung = $this -> app -> DB -> Select ( " SELECT DATE_FORMAT(MIN(von),'%H:%i') FROM zeiterfassung WHERE adresse=' $adresse ' AND DATE_FORMAT(von,'%Y-%m-%d')=' $datum ' " );
$letzte_zeiterfassung = $this -> app -> DB -> Select ( " SELECT DATE_FORMAT(MAX(bis),'%H:%i') FROM zeiterfassung WHERE adresse=' $adresse ' AND DATE_FORMAT(von,'%Y-%m-%d')=' $datum ' " );
// alle aufgaben von dem Tag
if ( $adresse == 0 )
{
$tmp = $this -> app -> DB -> SelectArr ( " SELECT * FROM aufgabe WHERE DATE_FORMAT(abgabe_bis,'%Y-%m-%d')=' $datum ' ORDER by sort,abgabe_bis,id " );
}
else
{
$tmp = $this -> app -> DB -> SelectArr ( " SELECT * FROM aufgabe WHERE DATE_FORMAT(abgabe_bis,'%Y-%m-%d')=' $datum ' AND adresse=' " . $adresse . " ' ORDER by sort,abgabe_bis,id " );
$summe_dauer = $this -> app -> DB -> Select ( " SELECT SUM(stunden) FROM aufgabe WHERE DATE_FORMAT(abgabe_bis,'%Y-%m-%d')=' $datum ' AND adresse=' " . $adresse . " ' " );
$summe_dauer_abrechnen = $this -> app -> DB -> Select ( " SELECT SUM(stunden) FROM aufgabe WHERE DATE_FORMAT(abgabe_bis,'%Y-%m-%d')=' $datum '
AND adresse = '".$adresse."' AND zeiterfasung_abrechnung = 1 " );
if ( $summe_dauer <= 0 ) $summe_dauer = 0 ;
if ( $summe_dauer_abrechnen <= 0 ) $summe_dauer_abrechnen = 0 ;
}
$tmp_td = '' ;
$tmp_td .= '<ul style="min-height: 30px; padding: 0; margin: 0; list-style: none;" class="drag_drop_list">' ;
$ctmp = ! empty ( $tmp ) ? count ( $tmp ) : 0 ;
for ( $tmpi = 0 ; $tmpi < $ctmp ; $tmpi ++ )
{
$kunde = $this -> app -> DB -> Select ( " SELECT name FROM adresse WHERE id=' " . $tmp [ $tmpi ][ 'kunde' ] . " ' LIMIT 1 " );
if ( $kunde != " " ) {
$kunde = $kunde . " <br> " ;
}
if ( $tmp [ $tmpi ][ 'stunden' ] > 0 ) {
$dauer = " <i style= \" color:grey \" ><br> " . $kunde . " Geplant: " . $tmp [ $tmpi ][ 'stunden' ] . " (h)</i> " ;
} else {
$dauer = " " ;
}
$style = array ();
$style [] = 'font-size: 8pt;' ;
$style [] = 'border: 2px solid #E0E0E0;' ;
$style [] = 'cursor: pointer;' ;
$style [] = 'position: absolute;' ;
if ( $tmp [ $tmpi ][ 'status' ] == " abgeschlossen " ) {
// $background_aufgabe = "#f0f0f0";
// $color_aufgabe = "#aaa";
$gedauert = $this -> app -> erp -> ZeitGesamtAufgabe ( $tmp [ $tmpi ][ 'id' ]);
if ( $gedauert > 0 ) $gedauert = " <br><i>Gebucht: " . number_format ( $gedauert , 2 ) . " (h)</i> " ; else $gedauert = " " ;
$dauer .= $gedauert ;
$style [] = 'color: #AAA;' ;
$style [] = 'background: #F0F0F0;' ;
} else {
// $background_aufgabe = "#D5ECF2";
// $color_aufgabe = "black";
$style [] = 'color: #000;' ;
$style [] = 'background: #D5ECF2;' ;
}
$tmp_td .= '<li class="drag_drop_aufgabe drag_drop_relative" data-id="' . $tmp [ $tmpi ][ 'id' ] . '" style="' . implode ( ' ' , $style ) . '">' ;
$tmp_td .= '<table style="border:0;background:none; width:100%;">' ;
$tmp_td .= '<tr>' ;
$tmp_td .= '<td valign="top" style="border:0;background:none;">' ;
$tmp_td .= '<a style="" href="index.php?module=aufgaben&action=edit&id=' . $tmp [ $tmpi ][ 'id' ] . '&back=wochenplan#tabs-3"><img src="themes/new/images/edit.svg" height="20"></a>' ;
$tmp_td .= '</td>' ;
$tmp_td .= '<td valign="middle" style="border:0;background:none;">' ;
$tmp_td .= '<span style="display: inline-block;"> ' . $tmp [ $tmpi ][ 'aufgabe' ] . $dauer . '</span>' ;
$tmp_td .= '</td>' ;
$tmp_td .= '</tr>' ;
$tmp_td .= '</table>' ;
$tmp_td .= '<li>' ;
// $tmp_td .= "<li class=\"drag_drop_aufgabe\" data-id=\"" . $tmp[$tmpi]['id'] . "\" style=\"background-color:$background_aufgabe;border: 1px solid #E0E0E0;cursor:pointer;\" ><a onclick=\"window.location.href='index.php?module=aufgaben&action=edit&id=".$tmp[$tmpi]['id']."&back=wochenplan#tabs-3'\"><img src=\"themes/new/images/edit.svg\" height=20></a> ".$tmp[$tmpi]['aufgabe'].$dauer."</li>";
}
$tmp_td .= " </ul> " ;
if ( date ( 'Y-m-d' ) == $datum ) {
$background = " style= \" background-color:white; color:red; border: 1px solid #E0E0E0; \" " ;
} else {
$background = " " ;
}
$tpl1 .= " <th width= \" 14% \" $background > " . $tag [ date ( 'w' , strtotime ( $datum ))] . " . " . date ( 'd.m' , strtotime ( $datum )) . " </th> " ;
if ( $this -> app -> User -> GetType () == " admin " || $this -> app -> erp -> RechteVorhanden ( " aufgaben " , " alle " ))
{
if ( $erste_zeiterfassung != " " ) { $strich = " - " ; $arbeit = " A: " ;}
else { $strich = " " ; $arbeit = " " ;}
$tpl2 .= "
< td >
< table cellpadding = \ " 0 \" cellspacing= \" 0 \" style= \" padding:0px;font-size:8pt;width:100% \" >
< tr >< td style = \ " padding:0px \" >Geplant:</td><td style= \" padding:0px \" > " . $this -> app -> erp -> ZeitInStundenMinuten ( $summe_dauer ) . " </td></tr>
< tr >< td style = \ " padding:0px \" >Mitarbeiter Soll:</td><td style= \" padding:0px \" > " . $this -> app -> erp -> ZeitInStundenMinuten ( $this -> app -> erp -> ZeitSollDatumArbeit ( $adresse , $datum )) . " </td></tr>
< tr >< td style = \ " padding:0px \" >Abrechnen Soll:</td><td style= \" padding:0px \" > " . $this -> app -> erp -> ZeitInStundenMinuten ( $summe_dauer_abrechnen ) . " </td></tr>
< tr >< td style = \ " padding:0px \" >Mitarbeiter Ist:</td><td style= \" padding:0px \" > " . $this -> app -> erp -> ZeitInStundenMinuten ( $this -> app -> erp -> ZeitGesamtDatumArbeit ( $adresse , $datum )) . " </td></tr>
<!--< tr >< td style = \ " padding:0px \" >Mitarbeiter Pause:</td><td style= \" padding:0px \" > " . $this -> app -> erp -> ZeitInStundenMinuten ( $this -> app -> erp -> ZeitGesamtDatumPause ( $adresse , $datum )) . " </td></tr>-->
< tr >< td style = \ " padding:0px \" >Abrechnen Ist: </td><td style= \" padding:0px \" > " . $this -> app -> erp -> ZeitInStundenMinuten ( $this -> app -> erp -> ZeitGesamtDatumArbeitAbrechnen ( $adresse , $datum )) . " </td></tr>
</ table >
<!-- < i style = \ " padding:0px;font-size:8pt; \" > $arbeit $erste_zeiterfassung $strich $letzte_zeiterfassung </i>-->
</ td > " ;
} else {
$tpl2 .= " <td><table cellpadding= \" 0 \" cellspacing= \" 0 \" style= \" padding:0px;font-size:8pt;width:100% \" >
< tr style = \ " font-size:8pt; \" ><td style= \" padding:0px \" >Arbeitsstunden:</td><td style= \" padding:0px \" > " .
number_format ( $this -> app -> erp -> ZeitSollDatumArbeit ( $adresse , $datum ), 2 ) . " </td></tr>
< tr style = \ " font-size:8pt; \" ><td style= \" padding:0px \" >Zeiterfassung:</td><td style= \" padding:0px \" > " .
number_format ( $this -> app -> erp -> ZeitGesamtDatumArbeit ( $adresse , $datum ), 2 ) . " </td></tr></table></td> " ;
}
$tpl3 .= '<td style="min-height:60px" data-datum="' . $datum . '">' . $tmp_td . '</td>' ;
}
$tpl .= '<tr valign="top">' . $tpl1 . '</tr>' ;
$tpl .= '<tr valign="top">' . $tpl2 . '</tr>' ;
$tpl .= '<tr valign="top" class="drag_drop_datum">' . $tpl3 . '</tr>' ;
$tpl .= '</table><br><br>' ;
return $tpl ;
}
/**
* @ param int $taskId
*
* @ return array
*/
public function getTimeLineElementsForTaskId ( int $taskId ) : array
{
$timeLines = ( array ) $this -> app -> DB -> SelectArr (
sprintf (
" SELECT tt.*, a.name as `username`
FROM `task_timeline` AS `tt`
LEFT JOIN `adresse` AS `a` ON a . id = tt . address_id
WHERE tt . task_id = % d
ORDER BY tt . time DESC " ,
$taskId
)
);
return array_merge (
[[
'id' => 0 ,
'task_id' => $taskId ,
'address_id' => $this -> app -> User -> GetAdresse (),
'username' => $this -> app -> User -> GetName (),
'time' => date ( 'Y-m-d H:i:s' ),
'content' => '' ,
]],
$timeLines
);
}
/**
* @ return JsonResponse
*/
public function HandleTaskGetAction () : JsonResponse
{
$id = ( int ) $this -> app -> Secure -> GetPOST ( 'id' );
$data = $this -> app -> DB -> SelectRow (
sprintf (
" SELECT auf.id, auf.aufgabe, auf.adresse, auf.kunde, auf.ansprechpartner_id AS `ansprechpartner`,
auf . beschreibung , auf . projekt , auf . teilprojekt , auf . prio , auf . stunden , auf . abgabe_bis , auf . abgabe_bis_zeit ,
auf . intervall_tage , auf . zeiterfassung_pflicht , auf . zeiterfassung_abrechnung , auf . emailerinnerung ,
auf . emailerinnerung_tage , auf . vorankuendigung , auf . oeffentlich , auf . startseite , auf . pinwand ,
auf . note_color , auf . pinwand_id , auf . status , auf . sonstiges
FROM `aufgabe` AS `auf`
WHERE auf . id = % d
LIMIT 1 " ,
$id
)
);
if ( ! empty ( $data )){
$data [ 'timeline' ] = $this -> getTimeLineElementsForTaskId ( $id );
if ( $data [ 'prio' ] != '-1' && $data [ 'prio' ] != 1 ){
$data [ 'prio' ] = 0 ;
}
if ( $data [ 'adresse' ] != " " && $data [ 'adresse' ] > 0 ){
$employee = $this -> app -> DB -> SelectRow (
sprintf (
" SELECT `mitarbeiternummer`, `name` FROM `adresse` WHERE `id` = %d LIMIT 1 " ,
$data [ 'adresse' ]
)
);
$mitarbeiternummer = $employee [ 'mitarbeiternummer' ];
$mitarbeitername = $employee [ 'name' ];
if ( $mitarbeiternummer != '' && $mitarbeitername != '' ){
$data [ 'adresse' ] = $mitarbeiternummer . ' ' . $mitarbeitername ;
} else {
$data [ 'adresse' ] = '' ;
}
}
if ( $data [ 'kunde' ] != '' && $data [ 'kunde' ] > 0 ){
$customer = $this -> app -> DB -> SelectRow (
sprintf (
'SELECT `id`, `name`, `kundennummer`, `lieferantennummer` FROM `adresse` WHERE `id` = %d LIMIT 1' ,
$data [ 'kunde' ]
)
);
$kundenid = 0 ;
if ( ! empty ( $customer )){
$kundenid = $customer [ 'id' ];
$kundenname = $customer [ 'name' ];
if ( $kundenname != '' ){
$kundennr = $customer [ 'kundennummer' ];
$lieferantennr = $customer [ 'lieferantennummer' ];
$restadresse = '' ;
$restadresse .= '(Kdr: ' . $kundennr . ' ' ;
if ( $lieferantennr != '' ){
$restadresse .= 'Liefr: ' . $lieferantennr ;
}
$restadresse .= ')' ;
$data [ 'kunde' ] = $kundenid . ' ' . $kundenname . ' ' . $restadresse ;
if ( $this -> app -> erp -> RechteVorhanden ( 'adresse' , 'edit' )) {
$data [ 'kundenbutton' ] = 1 ;
$data [ 'kundenid' ] = $kundenid ;
}
else {
$data [ 'kundenbutton' ] = 0 ;
$data [ 'kundenid' ] = '' ;
}
}
}
} else {
$data [ 'kunde' ] = '' ;
}
if ( $data [ 'ansprechpartner' ] != '' && $data [ 'ansprechpartner' ] > 0 ){
$ansprechpartner = $this -> app -> DB -> SelectRow (
sprintf (
" SELECT `id`, `name` FROM `ansprechpartner` WHERE `id` = %d LIMIT 1 " ,
$data [ 'ansprechpartner' ]
)
);
if ( ! empty ( $ansprechpartner )){
$ansprechpartnerId = $ansprechpartner [ 'id' ];
$ansprechpartnerName = $ansprechpartner [ 'name' ];
$ansprechpartner = $ansprechpartnerId . ' ' . $ansprechpartnerName ;
$ansprechpartner .= ' (' . $kundenname . ', Kdr: ' . $kundennr . ' ' ;
if ( $lieferantennr != '' ){
$ansprechpartner .= 'Liefr: ' . $lieferantennr ;
}
$ansprechpartner .= ')' ;
if ( $this -> app -> erp -> RechteVorhanden ( 'adresse' , 'ansprechpartner' ) && $kundenid > 0 ) {
$data [ 'ansprechpartnerbutton' ] = 1 ;
$data [ 'ansprechpartnerid' ] = $ansprechpartnerId ;
} else {
$data [ 'ansprechpartnerbutton' ] = 0 ;
$data [ 'ansprechpartnerid' ] = '' ;
}
}
}
else {
$data [ 'ansprechpartner' ] = '' ;
}
if ( $data [ 'projekt' ] == 0 || $data [ 'projekt' ] == '' ) {
$data [ 'projekt' ] = '' ;
}
else {
if ( $data [ 'projekt' ] > 0 ){
$project = $this -> app -> DB -> SelectRow (
sprintf ( 'SELECT `abkuerzung`, `name` FROM `projekt` WHERE `id` = %d ' , $data [ 'projekt' ])
);
$abkuerzung = '' ;
$name = '' ;
if ( ! empty ( $project )) {
$abkuerzung = $project [ 'abkuerzung' ];
$name = $project [ 'name' ];
}
if ( $abkuerzung != '' && $name != '' ){
$projektid = $data [ 'projekt' ];
$this -> app -> User -> SetParameter ( 'teilprojekt_filter' , $projektid );
$data [ 'projekt' ] = $abkuerzung . ' ' . $name ;
if ( $this -> app -> erp -> RechteVorhanden ( 'projekt' , 'dashboard' )) {
$data [ 'projektbutton' ] = 1 ;
$data [ 'projektid' ] = $projektid ;
} else {
$data [ 'projektbutton' ] = 0 ;
$data [ 'projektid' ] = '' ;
}
}
}
}
if ( $data [ 'teilprojekt' ] == 0 || $data [ 'teilprojekt' ] == '' ){
$data [ 'teilprojekt' ] = '' ;
} else {
if ( $data [ 'teilprojekt' ] > 0 ){
$subProject = $this -> app -> DB -> SelectRow (
sprintf (
" SELECT p.abkuerzung, a.id, a.aufgabe
FROM `projekt` AS `p`
LEFT JOIN `arbeitspaket` AS `a` ON p . id = a . projekt
WHERE a . id = % d
LIMIT 1 " ,
$data [ 'teilprojekt' ]
)
);
$teilprojektid = 0 ;
$teilprojektprojekt = '' ;
$teilprojektaufgabe = '' ;
if ( ! empty ( $subProject )) {
$teilprojektid = $subProject [ 'id' ];
$teilprojektprojekt = $subProject [ 'abkuerzung' ];
$teilprojektaufgabe = $subProject [ 'aufgabe' ];
}
if ( $teilprojektid != " " && $teilprojektprojekt != " " && $teilprojektaufgabe != " " ){
$data [ 'teilprojekt' ] = $teilprojektid . " " . $teilprojektprojekt . " " . $teilprojektaufgabe ;
}
}
}
if ( $data [ 'stunden' ] == 0 || is_null ( $data [ 'stunden' ])){
$data [ 'stunden' ] = '' ;
} else {
$data [ 'stunden' ] = str_replace ( '.' , ',' , $data [ 'stunden' ]);
}
if ( $data [ 'abgabe_bis' ] == '0000-00-00' || $data [ 'abgabe_bis' ] == " " || is_null ( $data [ 'abgabe_bis' ])){
$data [ 'abgabe_bis' ] = '' ;
} else {
$data [ 'abgabe_bis' ] = date ( 'd.m.Y' , strtotime ( $data [ 'abgabe_bis' ]));
}
if ( $data [ 'abgabe_bis_zeit' ] === '00:00:00' || $data [ 'abgabe_bis_zeit' ] == '' || is_null ( $data [ 'abgabe_bis_zeit' ])){
$data [ 'abgabe_bis_zeit' ] = '' ;
} else {
$data [ 'abgabe_bis_zeit' ] = date ( 'H:i' , strtotime ( $data [ 'abgabe_bis_zeit' ]));
}
if ( $data [ 'vorankuendigung' ] == 0 || is_null ( $data [ 'vorankuendigung' ])){
$data [ 'vorankuendigung' ] = '' ;
}
if ( $data [ 'emailerinnerung_tage' ] == 0 || is_null ( $data [ 'emailerinnerung_tage' ])){
$data [ 'emailerinnerung_tage' ] = '' ;
}
$data [ 'abgeschlossentext' ] = $this -> app -> User -> GetParameter ( 'aufgaben_abgeschlossen_mail' );
$data [ 'ansprechpartner' ] = $ansprechpartner ;
return new JsonResponse ( $data );
}
$data = [];
$data [ 'id' ] = 0 ;
$data [ 'aufgabe' ] = '' ;
$data [ 'adresse' ] = '' ;
$data [ 'kunde' ] = '' ;
$data [ 'ansprechpartner' ] = '' ;
$data [ 'beschreibung' ] = '' ;
$data [ 'projekt' ] = '' ;
$data [ 'teilprojekt' ] = '' ;
$data [ 'prio' ] = 0 ;
$data [ 'stunden' ] = '' ;
$data [ 'abgabe_bis' ] = '' ;
$data [ 'abgabe_bis_zeit' ] = '' ;
$data [ 'intervall_tage' ] = 0 ;
$data [ 'zeiterfassung_pflicht' ] = '' ;
$data [ 'zeiterfassung_abrechnung' ] = '' ;
$data [ 'emailerinnerung' ] = '' ;
$data [ 'emailerinnerung_tage' ] = '' ;
$data [ 'vorankuendigung' ] = '' ;
$data [ 'oeffentlich' ] = '' ;
$data [ 'startseite' ] = '' ;
$data [ 'pinwand' ] = '' ;
$data [ 'note_color' ] = 'yellow' ;
$data [ 'pinwand_id' ] = 0 ;
$data [ 'status' ] = 'offen' ;
$data [ 'sonstiges' ] = '' ;
$data [ 'kundenbutton' ] = 0 ;
$data [ 'ansprechpartnerbutton' ] = 0 ;
$data [ 'projektbutton' ] = 0 ;
$data [ 'kundenid' ] = '' ;
$data [ 'projektid' ] = '' ;
$data [ 'abgeschlossentext' ] = '' ;
$data [ 'timeline' ] = $this -> getTimeLineElementsForTaskId ( $id );
return new JsonResponse ( $data );
}
/**
* @ return JsonResponse
*/
public function HandleTaskSaveAction () : JsonResponse
{
$sid = trim ( $this -> app -> Secure -> GetPOST ( " id " ));
$aufgabe = trim ( $this -> app -> Secure -> GetPOST ( " aufgabe " ));
$mitarbeiter = trim ( $this -> app -> Secure -> GetPOST ( " mitarbeiter " ));
$kunde = trim ( $this -> app -> Secure -> GetPOST ( " kunde " ));
$ansprechpartner = trim ( $this -> app -> Secure -> GetPOST ( " ansprechpartner " ));
$beschreibung = trim ( $this -> app -> Secure -> GetPOST ( " beschreibung " ));
$projekt = trim ( $this -> app -> Secure -> GetPOST ( " projekt " ));
$teilprojekt = trim ( $this -> app -> Secure -> GetPOST ( " teilprojekt " ));
$prio = trim ( $this -> app -> Secure -> GetPOST ( " prio " ));
$dauer = trim ( $this -> app -> Secure -> GetPOST ( " dauer " ));
$datum = trim ( $this -> app -> Secure -> GetPOST ( " datum " ));
$zeit = trim ( $this -> app -> Secure -> GetPOST ( " zeit " ));
$intervall_tage = trim ( $this -> app -> Secure -> getPOST ( " intervall " ));
$pflicht = trim ( $this -> app -> Secure -> GetPOST ( " pflicht " ));
$abgerechnet = trim ( $this -> app -> Secure -> GetPOST ( " abgerechnet " ));
$mailerinnerung = trim ( $this -> app -> Secure -> GetPOST ( " mailerinnerung " ));
$anzahltage = trim ( $this -> app -> Secure -> GetPOST ( " anzahltage " ));
$countdown = trim ( $this -> app -> Secure -> GetPOST ( " countdown " ));
$oeffentlich = trim ( $this -> app -> Secure -> GetPOST ( " oeffentlich " ));
$startseite = trim ( $this -> app -> Secure -> GetPOST ( " startseite " ));
$aufpinwand = trim ( $this -> app -> Secure -> GetPOST ( " aufpinwand " ));
$farbe = trim ( $this -> app -> Secure -> GetPOST ( " farbe " ));
$pinwand = trim ( $this -> app -> Secure -> GetPOST ( " pinwand " ));
$status = trim ( $this -> app -> Secure -> GetPOST ( " status " ));
$notizen = trim ( $this -> app -> Secure -> GetPOST ( " notizen " ));
$abgeschlossentext = trim ( $this -> app -> Secure -> GetPOST ( " abgeschlossentext " ));
$msg = '' ;
$error = " " ;
if ( $mitarbeiter != " " ){
$mitarbeiter = explode ( " " , $mitarbeiter );
$mitarbeiternummer = $mitarbeiter [ 0 ];
$mitarbeiterid = $this -> app -> DB -> Select ( " SELECT `id` FROM `adresse` WHERE `mitarbeiternummer` = ' $mitarbeiternummer ' AND `geloescht` = 0 LIMIT 1 " );
if ( $mitarbeiterid != " " && $mitarbeiterid > 0 ){
if ( $sid != " " && $sid > 0 ){
$altemitarbeiterid = $this -> app -> DB -> Select ( " SELECT `adresse` FROM `aufgabe` WHERE `id` = ' $sid ' LIMIT 1 " );
}
} else {
$error .= " Bitte gültigen Mitarbeiter ausfüllen " . " \n " ;
}
} else {
//pruefe ob mitarbeiter gesetzt ist wenn nicht sich selbst setzen //altes bisheriges verhalten
$mitarbeiterid = $this -> app -> User -> GetAdresse ();
}
if ( $kunde != " " ){
$kunde = explode ( " " , $kunde );
$kundenid = $kunde [ 0 ];
$kundenid = $this -> app -> DB -> Select ( " SELECT `id` FROM `adresse` WHERE `id` = ' $kundenid ' AND `geloescht` = 0 LIMIT 1 " );
if ( $kundenid != " " && $kundenid > 0 ){
} else {
$error .= " Bitte gültigen Kunden ausfüllen " . " \n " ;
}
}
if ( $ansprechpartner != " " ){
$ansprechpartner = explode ( " " , $ansprechpartner );
$ansprechpartnerId = $ansprechpartner [ 0 ];
$ansprechpartnerId = $this -> app -> DB -> Select ( " SELECT `id` FROM `ansprechpartner` WHERE `id` = ' $ansprechpartnerId ' LIMIT 1 " );
if ( $ansprechpartnerId === '' || $ansprechpartnerId <= 0 ){
$error .= " Bitte gültigen Ansprechpartner ausfüllen " . " \n " ;
}
} else {
$ansprechpartnerId = 0 ;
}
if ( $projekt != " " ){
$projekt = explode ( " " , $projekt );
$projekt = $projekt [ 0 ];
$projektid = $this -> app -> DB -> Select ( " SELECT `id` FROM `projekt` WHERE `abkuerzung` = ' $projekt ' LIMIT 1 " );
if ( $projektid != " " && $projektid > 0 ){
} else {
$error .= " Bitte gültiges Projekt ausfüllen " . " \n " ;
}
}
if ( $teilprojekt != " " ){
$teilprojekt = explode ( " " , $teilprojekt );
$teilprojekt = $teilprojekt [ 0 ];
$teilprojektid = $this -> app -> DB -> Select ( " SELECT `id` FROM `arbeitspaket` WHERE `id` = ' $teilprojekt ' LIMIT 1 " );
if ( $teilprojektid != " " && $teilprojektid > 0 ){
} else {
$error .= " Bitte gültiges Teilprojekt ausfüllen " . " \n " ;
}
}
if ( $datum != '' && $datum != '0000-00-00' && $datum !== '00.00.0000' ){
$datum = date ( 'Y-m-d' , strtotime ( $datum ));
} else {
$datum = " 0000-00-00 " ;
}
if ( $zeit != '' && $zeit !== '00:00' ){
$zeit = date ( 'H:i' , strtotime ( $zeit ));
} else {
$zeit = " 00:00 " ;
}
if ( $dauer != '' ){
$dauer = str_replace ( ',' , '.' , $dauer );
}
if ( $status === 'abgeschlossen' ){
$this -> app -> User -> SetParameter ( " aufgaben_abgeschlossen_mail " , $abgeschlossentext );
}
if ( ! empty ( $error )) {
return new JsonResponse ([ 'status' => 0 , 'statusText' => $error ]);
}
if ( $sid ){
$this -> app -> DB -> Update (
" UPDATE `aufgabe` SET `aufgabe` = ' $aufgabe ', `adresse` = ' $mitarbeiterid ', `kunde` = ' $kundenid ',
`ansprechpartner_id` = '$ansprechpartnerId' , `beschreibung` = '$beschreibung' ,
`projekt` = '$projektid' , `teilprojekt` = '$teilprojektid' , `prio` = '$prio' ,
`stunden` = '$dauer' , `abgabe_bis` = '$datum' , `abgabe_bis_zeit` = '$zeit' ,
`intervall_tage` = '$intervall_tage' , `zeiterfassung_pflicht` = '$pflicht' ,
`zeiterfassung_abrechnung` = '$abgerechnet' , `emailerinnerung` = '$mailerinnerung' ,
`emailerinnerung_tage` = '$anzahltage' , `vorankuendigung` = '$countdown' ,
`oeffentlich` = '$oeffentlich' , `startseite` = '$startseite' , `pinwand` = '$aufpinwand' ,
`note_color` = '$farbe' , `pinwand_id` = '$pinwand' , `status` = '$status' , `sonstiges` = '$notizen'
WHERE `id` = '$sid' "
);
if ( $status === " abgeschlossen " && $abgeschlossentext != " " ){
$to = $this -> app -> DB -> Select ( " SELECT `email` FROM `adresse` WHERE `id` = ' $mitarbeiterid ' AND `geloescht` != 1 LIMIT 1 " );
$to_name = $this -> app -> DB -> Select ( " SELECT `name` FROM `adresse` WHERE `id` = ' $mitarbeiterid ' AND `geloescht` != 1 LIMIT 1 " );
if ( $this -> app -> erp -> MailSend ( $this -> app -> erp -> GetFirmaMail (), $this -> app -> erp -> GetFirmaName (), $to , $to_name , " Aufgabe wurde als abgeschlossen markiert " , $abgeschlossentext )){
$msg .= " Die Aufgabe wurde als abgeschlossen markiert und wurde per Mail an $to gesendet! " . " \n " ;
} else {
if ( $to == " " ){
$empfaenger = $this -> app -> DB -> Select ( " SELECT a.name FROM `adresse` AS `a` LEFT JOIN `aufgabe` AS `auf` ON a.id = auf.adresse WHERE auf.id = ' $sid ' LIMIT 1 " );
$mail = " $empfaenger (Mailadresse von Mitarbeiter fehlt) " ;
} else {
$mail = $to ;
}
$msg .= " Die Aufgabe wurde als abgeschlossen markiert, aber es gab einen Fehler beim Senden der Aufgabe per Mail an: $mail ! " . " \n " ;
}
}
else if ( $status == " abgeschlossen " )
{
$msg = " Die Aufgabe wurde als abgeschlossen markiert. " ;
} else {
$msg = " Die Aufgabe wurde angelegt. " ;
}
return new JsonResponse ([ 'status' => 1 , 'statusText' => $msg ]);
}
$this -> app -> DB -> Insert (
" INSERT INTO `aufgabe`
( `aufgabe` , `adresse` , `kunde` , `ansprechpartner_id` , `beschreibung` , `projekt` , `teilprojekt` ,
`prio` , `stunden` , `abgabe_bis` , `abgabe_bis_zeit` , `intervall_tage` , `zeiterfassung_pflicht` , `zeiterfassung_abrechnung` ,
`emailerinnerung` , `emailerinnerung_tage` , `vorankuendigung` ,
`oeffentlich` , `startseite` , `pinwand` , `note_color` , `pinwand_id` , `status` , `sonstiges` , `angelegt_am` ,
`initiator` )
VALUES ( '$aufgabe' , '$mitarbeiterid' , '$kundenid' , '$ansprechpartnerId' , '$beschreibung' , '$projektid' ,
'$teilprojektid' , '$prio' , '$dauer' , '$datum' , '$zeit' , '$intervall_tage' , '$pflicht' , '$abgerechnet' ,
'$mailerinnerung' , '$anzahltage' , '$countdown' , '$oeffentlich' ,
'$startseite' , '$aufpinwand' , '$farbe' , '$pinwand' , '$status' , '$notizen' , CURDATE (), " . $this->app ->User->GetAdresse(). " ) " );
if ( $status === " abgeschlossen " && $abgeschlossentext != " " ){
$to = $this -> app -> DB -> Select ( " SELECT `email` FROM `adresse` WHERE `id` = ' $mitarbeiterid ' AND `geloescht` != 1 LIMIT 1 " );
$to_name = $this -> app -> DB -> Select ( " SELECT `name` FROM `adresse` WHERE `id` = ' $mitarbeiterid ' AND `geloescht` != 1 LIMIT 1 " );
if ( $this -> app -> erp -> MailSend (
$this -> app -> erp -> GetFirmaMail (), $this -> app -> erp -> GetFirmaName (), $to , $to_name ,
" Aufgabe wurde als abgeschlossen markiert " , $abgeschlossentext )
){
$msg .= " Die Aufgabe wurde als abgeschlossen markiert und wurde per Mail an $to gesendet! " . " \n " ;
} else {
if ( $to == " " ){
$empfaenger = $this -> app -> DB -> Select ( " SELECT a.name FROM `adresse` AS `a` LEFT JOIN `aufgabe` AS `auf` ON a.id = auf.adresse WHERE auf.id = ' $sid ' LIMIT 1 " );
$mail = " $empfaenger (Mailadresse von Mitarbeiter fehlt) " ;
} else {
$mail = $to ;
}
$msg .= " Die Aufgabe wurde als abgeschlossen markiert, aber es gab einen Fehler beim Senden der Aufgabe per Mail an: $mail ! " . " \n " ;
}
}
else if ( $status === " abgeschlossen " )
{
$msg = " Die Aufgabe wurde als abgeschlossen markiert. " ;
} else {
$msg = " Die Aufgabe wurde angelegt. " ;
}
return new JsonResponse ([ 'status' => 1 , 'statusText' => $msg ]);
}
public function HandleTaskAddToTimeLineAction () : JsonResponse
{
$taskId = ( int ) $this -> app -> Secure -> GetPOST ( 'task_id' );
$text = ( string ) $this -> app -> Secure -> GetPOST ( 'text' , '' , '' , true );
$timeLineId = $this -> createTaskTimeline ( $taskId , $text );
return new JsonResponse ([ 'id' => $timeLineId , 'timeline' => $this -> getTimeLineElementsForTaskId ( $taskId )]);
}
/**
* @ param int $taskId
* @ param string $content
* @ param int | null $addressId
*
* @ return int
*/
public function createTaskTimeline ( int $taskId , string $content , ? int $addressId = null ) : int
{
if ( $addressId === null ) {
$addressId = $this -> app -> User -> GetAdresse ();
}
$this -> app -> DB -> Insert (
sprintf (
" INSERT INTO `task_timeline` (`task_id`, `address_id`, `time`, `content`)
VALUES ( % d , % d , NOW (), '%s' ) " ,
$taskId , $addressId , $this -> app -> DB -> real_escape_string ( $content )
)
);
return ( int ) $this -> app -> DB -> GetInsertID ();
}
/**
* @ return JsonResponse
*/
public function HandleChangeStatusAction () : JsonResponse
{
$taskId = ( int ) $this -> app -> Secure -> GetPOST ( 'task_id' );
$status = ( string ) $this -> app -> Secure -> GetPOST ( 'status' );
$task = $this -> app -> DB -> SelectRow ( sprintf ( 'SELECT `status` FROM `aufgabe` WHERE `id` = %d' , $taskId ));
if ( empty ( $task )) {
return new JsonResponse ([ 'error' => 'Aufgabe nicht gefunden' ]);
}
if ( $this -> app -> DB -> real_escape_string ( $task [ 'status' ]) !== $status ) {
$this -> app -> DB -> Update (
sprintf (
" UPDATE `aufgabe` SET `status` = '%s' WHERE `id` = %d " ,
$status , $taskId
)
);
$this -> createTaskTimeline ( $taskId , sprintf ( " Verschoben von '%s' nach '%s' " , $task [ 'status' ], $status ));
}
return new JsonResponse ([ 'timeline' => $this -> getTimeLineElementsForTaskId ( $taskId )]);
}
/* inhalt des popup fenster */
public function AufgabenEdit ()
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ) {
case 'get' :
return $this -> HandleTaskGetAction ();
case 'save' :
return $this -> HandleTaskSaveAction ();
case 'addtotimeline' :
return $this -> HandleTaskAddToTimeLineAction ();
case 'changestatus' :
return $this -> HandleChangeStatusAction ();
}
}
function AufgabenEditWdh ()
{
$this -> AufgabenMenu ();
$this -> app -> Tpl -> Set ( 'ABBRECHEN' , " <input type= \" button \" value= \" Abbrechen \" onclick= \" window.location.href='index.php?module=aufgaben&action=list#tabs-2'; \" > " );
$widget = new WidgetAufgabe ( $this -> app , 'NEUEAUFGABE' );
$widget -> form -> SpecialActionAfterExecute ( " close_refresh " ,
" index.php?module=aufgaben&action=list#tabs-2 " );
$widget -> Edit ();
$this -> app -> Tpl -> Parse ( 'PAGE' , 'aufgabenuebersicht.tpl' );
}
/**
* @ return JsonResponse
*/
public function AufgabenDragDrop () : JsonResponse
{
$aufgabeId = $this -> app -> Secure -> GetGET ( 'id' );
$aufgabeDatum = $this -> app -> Secure -> GetGET ( 'start' );
if ( $aufgabeId && $aufgabeDatum ) {
$this -> app -> DB -> Update ( '
UPDATE `aufgabe` SET `abgabe_bis` = " ' . $aufgabeDatum . ' " WHERE `id` = " ' . $aufgabeId . ' "
' );
return new JsonResponse ([
'status' => 1 ,
'statusText' => 'Gespeichert' ,
'debug' => $_GET
]);
}
return new JsonResponse ([
'status' => 0 ,
'statusText' => 'Fehler' ,
'debug' => $_GET
]);
}
function AufgabenSort () {
$idList = $this -> app -> Secure -> GetGET ( 'idList' );
if ( $idList ) {
$pos = 1 ;
foreach ( $idList as $id ) {
$this -> app -> DB -> Update ( 'UPDATE aufgabe SET sort = ' . $pos . ' WHERE id = ' . $id );
$pos ++ ;
}
}
echo json_encode ( array (
'status' => 1 ,
'statusText' => 'Gepsichert'
));
}
function AufgabenData ()
{
$subwhere = " " ;
$withoutName = true ;
if ( $this -> app -> erp -> RechteVorhanden ( " aufgaben " , " alle " ))
{
$adresseIdUser = $this -> app -> User -> GetParameter ( " aufgabe_benutzer_simulieren " );
if ( $adresseIdUser <= 0 ) $withoutName = false ;
} else {
$adresseIdUser = $this -> app -> User -> GetID ();
}
if ( $adresseIdUser > 0 )
{
$subwhere = " AND a.adresse=' $adresseIdUser ' " ;
}
$kunde = $this -> app -> erp -> FirstTillSpace ( $this -> app -> User -> GetParameter ( " aufgabe_kalender_filter_kunde " ));
if ( $kunde > 0 )
{
$subwhere .= " AND a.kunde=' $kunde ' " ;
}
$start = date ( " Y-m-d " , $this -> app -> Secure -> GetGET ( 'start' ));
$end = date ( " Y-m-d " , $this -> app -> Secure -> GetGET ( 'end' ));
//Produktion start - ende
$data = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT a.id, CONCAT(IF(a.status='abgeschlossen','✓ ',''), " . ( $withoutName ? " '' " : " adr.name,': ' " ) . " ,a.aufgabe, if(a.kunde > 0,CONCAT(' (',ak.name,')'),'')) as title, a.abgabe_bis as start, a.abgabe_bis as ende FROM aufgabe a LEFT JOIN adresse adr ON adr.id=a.adresse LEFT JOIN adresse ak ON ak.id=a.kunde
WHERE a . abgabe_bis <= '$end' AND a . abgabe_bis >= '$start' $subwhere ORDER by a . abgabe_bis " );
if ( $data ){
2022-06-10 11:28:28 +02:00
$cdata = ( ! empty ( $data ) ? count ( $data ) : 0 );
2021-05-21 08:49:41 +02:00
for ( $i = 0 ; $i < $cdata ; $i ++ ) {
$data [ $i ][ 'allDay' ] = 1 ; //(($data[$i]['allDay']=='1')?true:false);
$data [ $i ][ 'public' ] = 1 ; //(($data[$i]['public']=='1')?true:false);
$data [ $i ][ 'title' ] = $this -> app -> erp -> ReadyForPDF ( $data [ $i ][ 'title' ]);
$data [ $i ][ 'beschreibung' ] = $this -> app -> erp -> ReadyForPDF ( $data [ $i ][ 'beschreibung' ]);
}
}
header ( 'Content-type: application/json' );
echo json_encode ( $data );
$this -> app -> ExitXentral ();
}
public function sendAufgabenMail ( $aufgabe , $vorabankuendigung = false )
{
$arraufgabe = $this -> app -> DB -> SelectArr ( " SELECT *,DATE_FORMAT(abgabe_bis,'%d.%m.%Y') as datum,DATE_FORMAT(abgabe_bis,'%Y%m%d') as icaldatum, DATE_FORMAT(abgabe_bis_zeit,'%H%i00') as icaluhrzeit,
DATE_FORMAT ( abgabe_bis_zeit , '%H:%i' ) as zeit FROM aufgabe WHERE id = '$aufgabe' LIMIT 1 " );
$adresse = $arraufgabe [ 0 ][ " adresse " ];
$adresse_initiator = $arraufgabe [ 0 ][ " initiator " ];
//$this->LogFile("sende an adresse ".$adresse);
$to = $this -> app -> DB -> Select ( " SELECT email FROM adresse WHERE id=' $adresse ' AND geloescht!=1 LIMIT 1 " );
$to_name = $this -> app -> DB -> Select ( " SELECT name FROM adresse WHERE id=' $adresse ' AND geloescht!=1 LIMIT 1 " );
$initiator_to = $this -> app -> DB -> Select ( " SELECT email FROM adresse WHERE id=' $adresse_initiator ' AND geloescht!=1 LIMIT 1 " );
$initiator_to_name = $this -> app -> DB -> Select ( " SELECT name FROM adresse WHERE id=' $adresse_initiator ' AND geloescht!=1 LIMIT 1 " );
//$this->LogFile("Sende Aufgabe $aufgabe an Email ".$to." und Initiator ".$initiator_to);
$aufgabe_name = $arraufgabe [ 0 ][ " aufgabe " ];
$beschreibung = $arraufgabe [ 0 ][ " beschreibung " ];
$sonstiges = $arraufgabe [ 0 ][ " sonstiges " ];
$datum = $arraufgabe [ 0 ][ " datum " ];
$zeit = $arraufgabe [ 0 ][ " zeit " ];
$text = " Aufgabe: $aufgabe_name\r\n\r\n " ;
$text .= " Mitarbeiter: $to_name\r\n\r\n " ;
$text .= " Abgabe bis: $datum $zeit Uhr \r \n " ;
if ( $beschreibung != " " )
$text .= " Beschreibung: \r \n \r \n $beschreibung\r\n " ;
if ( $sonstiges != " " )
$text .= " Notizen: \r \n \r \n $sonstiges\r\n " ;
$event_id = $aufgabe ;
$summary = $arraufgabe [ 0 ][ " aufgabe " ];
$venue = 'WaWision Aufgabe' ;
$start = $arraufgabe [ 0 ][ " icaldatum " ];
$start_time = $arraufgabe [ 0 ][ " icaluhrzeit " ];
$end = $arraufgabe [ 0 ][ " icaldatum " ];
$end_time = $arraufgabe [ 0 ][ " icaluhrzeit " ];
$status = 'TENTATIVE' ;
$sequence = 0 ;
$beschreibung = preg_replace ( '#<[^>]+>#' , ' ' , $arraufgabe [ 0 ][ " beschreibung " ]);
$beschreibung = preg_replace ( '/\s\s+/' , ' ' , $beschreibung );
$ical = " BEGIN:VCALENDAR \r \n " ;
$ical .= " VERSION:2.0 \r \n " ;
$ical .= " PRODID:-//WaWision//Aufgabe//DE \r \n " ;
$ical .= " METHOD:REQUEST \r \n " ;
$ical .= " BEGIN:VEVENT \r \n " ;
//$ical .= "ORGANIZER;SENT-BY=\"MAILTO:$initiator_to\":MAILTO:onbehalfoforganizer@kaserver.com\r\n";
$ical .= " ORGANIZER;SENT-BY= \" MAILTO: $initiator_to\ " \r\n " ;
$ical .= " ATTENDEE;CN= $to ;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;RSVP=TRUE:mailto: $initiator_to\r\n " ;
$ical .= " UID: " . strtoupper ( md5 ( $event_id )) . " -wawision \r \n " ;
$ical .= " SEQUENCE: " . $sequence . " \r \n " ;
$ical .= " STATUS: " . $status . " \r \n " ;
$ical .= " DTSTAMPTZID=Europe/Berlin: " . date ( 'Ymd' ) . 'T' . date ( 'His' ) . " \r \n " ;
$ical .= " DTSTART: " . $start . " T " . $start_time . " \r \n " ;
$ical .= " DTEND: " . $end . " T " . $end_time . " \r \n " ;
$ical .= " LOCATION: " . $venue . " \r \n " ;
$ical .= " SUMMARY: " . $summary . " \r \n " ;
$ical .= " DESCRIPTION: " . $beschreibung . " \r \n " ;
$ical .= " BEGIN:VALARM \r \n " ;
$ical .= " TRIGGER:-PT15M \r \n " ;
$ical .= " ACTION:DISPLAY \r \n " ;
$ical .= " DESCRIPTION:Reminder \r \n " ;
$ical .= " END:VALARM \r \n " ;
$ical .= " END:VEVENT \r \n " ;
$ical .= " END:VCALENDAR \r \n " ;
$datei = $this -> app -> erp -> GetTMP () . 'Aufgabe_' . $arraufgabe [ 0 ][ " aufgabe " ] . " .ics " ;
file_put_contents ( $datei , $ical );
if ( $start != " 00000000 " )
$dateien = array ( $datei );
else $dateien = " " ;
if ( $vorabankuendigung )
{
$result = $this -> app -> erp -> MailSend ( $this -> app -> erp -> GetFirmaMail (),
$this -> app -> erp -> GetFirmaAbsender (), $to , $to_name ,
" VORABERINNERUNG: " . $aufgabe_name , $text , $dateien , " " , false );
if ( $to != $initiator_to ){
$this -> app -> erp -> MailSend ( $this -> app -> erp -> GetFirmaMail (),
$this -> app -> erp -> GetFirmaAbsender (), $initiator_to , $initiator_to_name ,
" INITIATOR VORABERINNERUNG: " . $aufgabe_name , $text , $dateien , " " , false );
}
}
else
{
$result = $this -> app -> erp -> MailSend ( $this -> app -> erp -> GetFirmaMail (),
$this -> app -> erp -> GetFirmaAbsender (), $to , $to_name ,
" ERINNERUNG: " . $aufgabe_name , $text , $dateien , " " , false );
if ( $to != $initiator_to )
$this -> app -> erp -> MailSend ( $this -> app -> erp -> GetFirmaMail (),
$this -> app -> erp -> GetFirmaAbsender (), $initiator_to , $initiator_to_name ,
" INITIATOR ERINNERUNG: " . $aufgabe_name , $text , $dateien , " " , false );
}
unlink ( $datei );
return $result ;
}
}