2021-05-21 08:49:41 +02:00
< ? php
2022-05-23 22:25:53 +02:00
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral ( c ) Xentral ERP Sorftware GmbH , Fuggerstrasse 11 , D - 86150 Augsburg , * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License * Version 3.1 .
*
* You should have received a copy of this license from your vendor and / or * along with this file ; If not , please visit www . wawision . de / Lizenzhinweis
* to obtain the text of the corresponding license version .
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
2021-05-21 08:49:41 +02:00
*/
?>
2022-05-23 22:25:53 +02:00
< ? php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* WaWision ( c ) WaWision GmbH , Holzbachstrasse 4 , D - 86154 Augsburg , * Germany 2015
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
< ? php
include ( " _gen/supportapp.php " );
class Supportapp Extends GenSupportapp {
var $app ;
static function TableSearch ( & $app , $name , $erlaubtevars )
{
// in dieses switch alle lokalen Tabellen (diese Live Tabellen mit Suche etc.) für dieses Modul
switch ( $name )
{
case 'supportapp_artikel' :
$heading = array ( 'Artikel Nummer' , 'Artikel Bezeichnung' , 'Typ' , 'Menü' );
$width = array ( '9%' , '80%' , '10%' , '1%' );
$findcols = array ( 'a.nummer' , 'a.name_de' , " IF(wa.typ=1,'Telefonsupport',IF(wa.typ=2,'Technikersupport','Enterprise')) " , 'a.id' );
$searchsql = array ( 'a.nummer' , 'a.name_de' , " IF(wa.typ=1,'Telefonsupport',IF(wa.typ=2,'Technikersupport','Enterprise')) " , 'a.id' );
$defaultorder = 0 ;
$defaultorderdesc = 0 ;
$menu = '<table cellpadding="0" cellspacing="0">' ;
$menu .= '<tr>' ;
$menu .= '<td nowrap>' ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" onclick= \" deleteartikel(%value%); \" > " ;
$menu .= " </td> " ;
$menu .= " </tr> " ;
$menu .= " </table> " ;
$where = " 1 " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS wa.id, a.nummer, a.name_de, IF(wa.typ=1,'Telefonsupport',IF(wa.typ=2,'Technikersupport','Enterprise')), wa.id FROM artikel a JOIN supportapp_artikel wa ON a.id = wa.artikel " ;
$count = " SELECT count(wa.id) FROM supportapp_artikel wa WHERE $where " ;
break ;
case 'supportapp_abgelaufen' :
$heading = array ( 'Kunden-Nr.' , 'Kunde' , 'Hat(te) Supportvertrag' , 'Kaufvertrag Ablauf' , 'Menü' );
$width = array ( '25%' , '25%' , '5%' , '10%' , '1%' );
$findcols = array ( 'adr.kundennummer' , 'adr.name' , 'isnull(re.adresse)' , 're2.datum' , 'adr.id' );
$searchsql = array ( 'adr.kundennummer' , 'adr.name' , " date_format(re2.datum,'%d.%m.%Y') " );
$defaultorder = 0 ;
$defaultorderdesc = 0 ;
$menu = '<table cellpadding="0" cellspacing="0">' ;
$menu .= '<tr>' ;
$menu .= '<td nowrap>' ;
$menu .= " <a href= \" index.php?module=adresse&action=edit&id=%value% \" target= \" _blank \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" /></a> " ;
$menu .= " </td> " ;
$menu .= " </tr> " ;
$menu .= " </table> " ;
$artikektelefonarr = array ( 0 );
for ( $i = 1 ; $i <= 10 ; $i ++ )
{
$tmp = $app -> erp -> GetKonfiguration ( 'supportapp_enterprise' . ( $i > 1 ? $i : '' ));
$tmp = explode ( ' ' , $tmp );
$tmp = reset ( $tmp );
$tmp = $app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer <> '' AND ifnull(geloescht,0) = 0 AND nummer = ' " . $app -> DB -> real_escape_string ( $tmp ) . " ' LIMIT 1 " );
if ( $tmp ) $enterprisearr = $tmp ;
}
$abgelaufene = $app -> YUI -> TableSearchFilter ( $name , 1 , 'abgelaufene' , 0 , 0 , 'checkbox' );
$sql = " SELECT SQL_CALC_FOUND_ROWS adr.id, adr.kundennummer, adr.name, if(isnull(re.adresse),'-','ja'), if(isnull(re2.datum),'',
if ( re2 . datum < DATE_SUB ( CURDATE (), INTERVAL 1 YEAR ), concat ( '<span style=\"color:red\">' , date_format ( re2 . datum , '%d.%m.%Y' ), '</span>' ), date_format ( re2 . datum , '%d.%m.%Y' ) )) , adr . id
FROM adresse adr
INNER JOIN adresse_rolle ar ON adr . id = ar . adresse AND ar . subjekt LIKE 'Kunde'
LEFT JOIN (
SELECT r . adresse
FROM rechnung r
INNER JOIN rechnung_position rp ON r . status <> 'storniert' AND r . belegnr <> '' AND r . id = rp . rechnung AND rp . artikel in ( " . $enterprisearr . " ) AND rp . artikel <> 0
LEFT JOIN abrechnungsartikel abo ON r . adresse = abo . adresse AND abo . artikel = rp . artikel
AND abo . artikel <> 0
WHERE isnull ( abo . adresse ) OR
( " .
//"abo.enddatum < CURDATE()
//AND ifnull(abo.enddatum,'0000-00-00') <> '0000-00-00' ".
" ifnull(abo.enddatum,'0000-00-00') = '0000-00-00' " .
" AND r.datum < DATE_SUB(CURDATE(), INTERVAL 1 YEAR)
)
GROUP BY r . adresse
) re ON
adr . id = re . adresse
LEFT JOIN (
SELECT r2 . adresse , max ( r2 . datum ) as datum
FROM rechnung r2 INNER JOIN rechnung_position rp2 ON r2 . status <> 'storniert' AND r2 . belegnr <> '' AND r2 . id = rp2 . rechnung
INNER JOIN wawisionstore_artikelmapping wa ON rp2 . artikel = wa . artikel AND wa . typ <> 'modul' AND wa . testversion = 0 AND wa . cloud = ''
GROUP BY r2 . adresse
) re2 ON adr . id = re2 . adresse
LEFT JOIN (
SELECT r . adresse
FROM rechnung r
INNER JOIN rechnung_position rp ON r . status <> 'storniert' AND r . belegnr <> '' AND r . id = rp . rechnung AND rp . artikel in ( " . $enterprisearr . " ) AND rp . artikel <> 0
LEFT JOIN abrechnungsartikel abo ON r . adresse = abo . adresse AND abo . artikel = rp . artikel
AND abo . artikel <> 0
WHERE
( ifnull ( abo . enddatum , '0000-00-00' ) = '0000-00-00' )
OR abo . enddatum >= CURDATE ()
GROUP BY r . adresse
) ab ON adr . id = ab . adresse
" ;
$where = " ifnull(adr.geloescht,0) = 0 AND (ifnull(re.adresse,0) > 0 OR (ifnull(re2.adresse,0) > 0 " . ( $abgelaufene ? " AND re2.datum < DATE_SUB(CURDATE(), INTERVAL 1 YEAR) " : " " ) . " ) ) AND isnull(ab.adresse) " ;
break ;
case 'supportapp_schritte' :
$heading = array ( 'Bezeichnung' , 'Gruppe' , 'Beschreibung' , 'Vorgänger' , 'Reihenfolge' , 'Aktiv' , 'Filter' , 'Menü' );
$width = array ( '20%' , '20%' , '30%' , '20%' , '4%' , '5%' , '1%' );
$findcols = array ( 'ws.bezeichnung' , 'wg.bezeichnung' , 'ws.beschreibung' , 'ws.sort' , 'ws.aktiv' , 'ws.filter' , 'ws.id' );
$searchsql = array ( 'ws.bezeichnung' , 'wg.bezeichnung' , 'ws.beschreibung' , 'ws.sort' , 'ws.id' );
$defaultorder = 0 ;
$defaultorderdesc = 0 ;
$menu = '<table cellpadding="0" cellspacing="0">' ;
$menu .= '<tr>' ;
$menu .= '<td nowrap>' ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" onclick= \" neuedit(%value%); \" > " ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" onclick= \" deleteeintrag(%value%); \" > " ;
$menu .= " </td> " ;
$menu .= " </tr> " ;
$menu .= " </table> " ;
$where = " 1 " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS ws.id, ws.bezeichnung, wg.bezeichnung, ws.beschreibung, IFNULL(wsv.bezeichnung,''), ws.sort, IF(ws.aktiv=1,'Ja','Nein'),IF(ws.filter=1,'Ja','Nein'), ws.id FROM supportapp_schritte ws JOIN supportapp_gruppen wg ON ws.gruppe = wg.id LEFT JOIN supportapp_schritte wsv ON ws.vorgaenger = wsv.id " ;
$count = " SELECT count(id) FROM supportapp_schritte WHERE $where " ;
break ;
case 'supportapp_gruppen' :
$heading = array ( 'Bezeichnung' , 'Artikel' , 'Aktiv' , 'Menü' );
$width = array ( '70%' , '20%' , '9%' , '1%' );
$findcols = array ( 'bezeichnung' , 'artikel' , 'aktiv' );
$searchsql = array ( 'bezeichnung' , 'artikel' , 'aktiv' );
$defaultorder = 0 ;
$defaultorderdesc = 0 ;
$menu = '<table cellpadding="0" cellspacing="0">' ;
$menu .= '<tr>' ;
$menu .= '<td nowrap>' ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" onclick= \" gruppenneuedit(%value%); \" > " ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" onclick= \" gruppendeleteeintrag(%value%); \" > " ;
$menu .= " </td> " ;
$menu .= " </tr> " ;
$menu .= " </table> " ;
$where = " 1 " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS wg.id, wg.bezeichnung, CONCAT(a.nummer, \" \" ,a.name_de),IF(wg.aktiv=1,'Ja','Nein') AS aktiv, wg.id FROM supportapp_gruppen wg LEFT JOIN artikel a on wg.artikel = a.id " ;
$count = " SELECT count(id) FROM supportapp_gruppen WHERE $where " ;
break ;
case 'supportapp_zeiterfassung' :
$kundennr = $app -> DB -> real_escape_string ( $app -> Secure -> GetGET ( 'kdnr' ));
$kundenid = $app -> DB -> real_escape_string ( $app -> Secure -> GetGET ( 'id' ));
if ( $kundennr != '' ){
$kundenname = $app -> DB -> Select ( " SELECT name FROM adresse WHERE kundennummer = ' " . $kundennr . " ' " );
$kundenid = $app -> DB -> Select ( " SELECT id FROM adresse WHERE kundennummer = ' " . $kundennr . " ' " );
} else {
if ( $kundenid != '' ){
$kundenname = $app -> DB -> Select ( " SELECT name FROM adresse WHERE id = ' " . $kundenid . " ' " );
$kundennr = $app -> DB -> Select ( " SELECT kundennummer FROM adresse WHERE id = ' " . $kundenid . " ' " );
}
}
$heading = array ( 'Datum' , 'Von' , 'Bis' , 'Dauer' , 'Mitarbeiter' , 'Tätigkeit' , 'Beschreibung' , '' );
$width = array ( '5%' , '5%' , '5%' , '5%' , '20' , '19%' , '40%' , '1%' );
$findcols = array ( " z.von " , 'z.von' , 'z.bis' , 'format((HOUR(TIMEDIFF(z.bis, z.von))) + MINUTE(TIMEDIFF(z.bis, z.von))/60,2)' , 'name' , 'aufgabe' , 'beschreibung' , 'z.id' );
$searchsql = array ( 'DATE_FORMAT(z.von, GET_FORMAT(DATE,\'EUR\'))' , 'a.name' , 'z.aufgabe' , 'z.beschreibung' , 'z.id' );
$datecols = array ( 0 );
$numbercols = array ( 3 );
$defaultorder = 1 ;
$defaultorderdesc = 1 ;
$menu = '' ;
$where = " adresse_abrechnung = ' $kundenid ' " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS DISTINCT z.id, DATE_FORMAT(z.von, GET_FORMAT(DATE,'EUR')) AS datum, DATE_FORMAT(z.von,'%H:%i') as von, DATE_FORMAT(z.bis,'%H:%i') as bis, format((HOUR(TIMEDIFF(z.bis, z.von))) + MINUTE(TIMEDIFF(z.bis, z.von))/60,2) AS Dauer, a.name, z.aufgabe, REPLACE(z.beschreibung, ' \n ', '<br>'), z.id FROM zeiterfassung z LEFT JOIN adresse a ON z.adresse = a.id " ;
$count = " SELECT count(DISTINCT id) FROM zeiterfassung WHERE $where " ;
break ;
case 'supportapp_kunden' :
$heading = array ( 'kundennummer' , 'Name' , 'Ansprechpartner' , 'Sperrvermerk' , 'Pakete' , '' , 'Menü' );
$width = array ( '9%' , '25%' , '25%' , '35%' , '5%' , '0%' , '1%' );
$findcols = array ( 'a.kundennummer' , 'a.name' , 'a.ansprechpartner' , 'a.freifeld6' , 'a.freifeld7' , 'a.id' , 'a.id' );
$searchsql = array ( 'a.kundennummer' , 'a.name' , 'a.ansprechpartner' , 'a.freifeld6' , 'a.freifeld7' , 'a.id' , 'a.id' );
$defaultorder = 0 ;
$defaultorderdesc = 0 ;
//$menu = '<table cellpadding="0" cellspacing="0">';
//$menu .= '<tr>';
//$menu .= '<td nowrap>';
//$menu .= "<a href=\"index.php?module=adresse&action=edit&id=%value%\" target=\"_blank\"><img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> ";
$menu = " <center><a href= \" index.php?module=supportapp&action=auftrag&id=%value% \" ><img src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/forward.svg \" border= \" 0 \" ></a></center> " ;
//$menu .= "</td>";
//$menu .= "</tr>";
//$menu .= "</table>";
$trcol = 5 ;
$artikektelefonarr = array ( 0 );
$artikektechnikerarr = array ( 0 );
$artikekenterprisearr = array ( 0 );
$artikeltmp = $app -> DB -> SelectArr ( " SELECT * FROM supportapp_artikel " );
if ( ! is_null ( $artikeltmp )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $artikeltmp ) ? count ( $artikeltmp ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
switch ( $artikeltmp [ $i ][ 'typ' ]) {
case '1' :
$artikektelefonarr [] = $artikeltmp [ $i ][ 'artikel' ];
break ;
case '2' :
$artikektechnikerarr [] = $artikeltmp [ $i ][ 'artikel' ];
break ;
case '3' :
$artikekenterprisearr [] = $artikeltmp [ $i ][ 'artikel' ];
break ;
}
}
}
//$supportvertrag2 = $->app->DB->Select("SELECT rp.id, r.datum FROM rechnung_position rp LEFT JOIN rechnung r ON rp.rechnung = r.id WHERE artikel in (".implode(', ', $artikekenterprisearr).") AND artikel <> 0 AND adresse = '$kundenid' AND r.datum >= (now() - INTERVAL 1 YEAR)");
$where = " ar.subjekt='Kunde' AND a.geloescht = '0' AND (a.projekt = 0 OR (1 " . $app -> erp -> ProjektRechte ( 'a.projekt' ) . " )) " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS DISTINCT a.id, a.kundennummer, a.name, a.ansprechpartner, a.freifeld6,
CONCAT ( '<table cellpadding=\"0\" cellspacing=\"0\"><tr><td nowrap>' ,
'<img title=\"' , IF ( IFNULL ( telefon . adresse , 0 ) > 0 OR ifnull ( plus . adresse , 0 ) > 0 , 'Telefonsupport vorhanden' , 'Kein Telefonsupport' ), '\" src=\"themes/new/images/' , IF ( IFNULL ( telefon . adresse , 0 ) > 0 OR ifnull ( plus . adresse , 0 ) > 0 , 'telefonsupport_gruen_kl.png' , 'telefonsupport_grey_kl.png' ), '\"> ' ,
'<img title=\"' , IF ( IFNULL ( techniker . adresse , 0 ) > 0 , 'Technikersupport vorhanden' , 'Kein Technikersupport' ), '\" src=\"themes/new/images/' , IF ( IFNULL ( techniker . adresse , 0 ) > 0 , 'technikersupport_gruen_kl.png' , 'technikersupport_grey_kl.png' ), '\"> ' ,
'<img title=\"' , IF ( a . freifeld9 <> '0' AND a . freifeld9 <> '' , 'Bezahlsupport vorhanden' , 'Kein Bezahlsupport' ), '\" src=\"themes/new/images/' , IF ( a . freifeld9 <> '0' AND a . freifeld9 <> '' , 'bezahlsupport_gruen_kl.png' , 'bezahlsupport_grey_kl.png' ), '\"> ' ,
'<img title=\"' , IF ( IFNULL ( plus . adresse , 0 ) > 0 , 'Pluspaket vorhanden' , 'Kein Pluspaket' ), '\" src=\"themes/new/images/' , IF ( IFNULL ( plus . adresse , 0 ) > 0 , 'pluspaket_gruen_kl.png' , 'pluspaket_grey_kl.png' ), '\"> ' ,
'<img title=\"' , IF ( IFNULL ( enterprise . adresse , 0 ) > 0 OR NOT erstesjahr . id IS NULL , 'Supportvertrag vorhanden' , 'Kein Supportvertrag' ), '\" src=\"themes/new/images/' , IF ( IFNULL ( enterprise . adresse , 0 ) > 0 OR NOT erstesjahr . id IS NULL , 'vertrag_gruen_kl.png' , 'vertrag_grey_kl.png' ), '\"> ' ,
'</td></tr></table>' ),
IF ( a . freifeld6 = '' , '' , IF ( ISNULL ( a . freifeld6 ), '' , '#ffadad' )) AS tr , a . id
FROM adresse a
JOIN adresse_rolle ar ON a . id = ar . adresse
LEFT JOIN ( SELECT rp . id , r . adresse FROM rechnung_position rp LEFT JOIN rechnung r ON rp . rechnung = r . id WHERE artikel in ( " .implode(', ', $artikekenterprisearr ). " ) AND artikel <> 0 AND r . datum >= ( now () - INTERVAL 1 YEAR )) AS erstesjahr ON a . id = erstesjahr . adresse
LEFT JOIN (
SELECT adresse
FROM abrechnungsartikel WHERE artikel in ( " .implode(', ', $artikektelefonarr ). " ) AND artikel <> 0 AND ( enddatum IS NULL OR enddatum >= CURDATE ())
GROUP BY adresse
) telefon ON a . id = telefon . adresse
LEFT JOIN (
SELECT adresse
FROM abrechnungsartikel WHERE artikel in ( " .implode(', ', $artikektechnikerarr ). " ) AND artikel <> 0 AND ( enddatum IS NULL OR enddatum >= CURDATE ())
GROUP BY adresse
) techniker ON a . id = techniker . adresse
LEFT JOIN (
SELECT adresse
FROM abrechnungsartikel WHERE artikel in ( " .implode(', ', $artikekenterprisearr ). " ) AND artikel <> 0 AND ( enddatum IS NULL OR enddatum >= CURDATE ())
GROUP BY adresse
) enterprise ON a . id = enterprise . adresse
LEFT JOIN (
SELECT adresse FROM supportapp WHERE status = 'gestartet' GROUP BY adresse
) plus on a . id = plus . adresse
" ;
//$count = "SELECT count(DISTINCT a.id) FROM adresse a JOIN adresse_rolle ar ON a.id = ar.adresse WHERE $where";
break ;
case " supportapp_list " :
// angeben welches recht der Benutzer braucht damit er auf diese tabelle zugreifen darf
$allowed [ 'supportapp' ] = array ( 'list' );
$app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#eigene').click( function() { fnFilterColumn1( 0 ); } ); " );
$app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#geplant').click( function() { fnFilterColumn2( 0 ); } ); " );
$app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#abgeschlossen').click( function() { fnFilterColumn3( 0 ); } ); " );
for ( $r = 1 ; $r < 4 ; $r ++ ) {
$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 ( \ ' A\ ' , i , 0 , 0 );
}
' );
}
$heading = array ( '' , 'Mitarbeiter' , 'Kunde' , 'Version' , 'Startdatum' , 'Letzte Buchung' , 'Offen' , 'Geplant' , 'Eigene' , 'Gesamt' , 'Menü' , 'Zustand' , '' );
$width = array ( '1%' , '10%' , '20%' , '25%' , '8%' , '8%' , '8%' , '8%' , '8%' , '8%' , '5%' , '1%' );
$findcols = array ( 'open' , 'ma.name' , " ku.name " , 'w.version' , 'w.startdatum' , 'w.startdatum' , 'w.zeitgeplant' , 'w.zeitgeplant' , 'w.id' , 'w.status' , 'w.id' );
$searchsql = array ( 'ma.name' , " ku.name " , 'w.version' , 'w.startdatum' , 'w.zeitgeplant' , 'w.status' );
$defaultorder = 1 ; //Optional wenn andere Reihenfolge gewuenscht
$defaultorderdesc = 1 ;
$menu = " <a href= \" index.php?module=supportapp&action=edit&id=%value% \" ></a> " ;
$trcol = 11 ;
$menucol = 12 ;
$moreinfo = true ;
//$sumcol = 9;
$alignright = array ( 5 , 6 , 7 , 8 , 9 , 10 , 11 );
$more_data1 = $app -> Secure -> GetGET ( " more_data1 " );
$more_data2 = $app -> Secure -> GetGET ( " more_data2 " );
$more_data3 = $app -> Secure -> GetGET ( " more_data3 " );
$moredataarray = array ();
$schrittearray = array ();
$filterschritte = $app -> DB -> SelectArr ( " SELECT ws.id AS id, wg.bezeichnung AS wgb, ws.bezeichnung AS wsb FROM supportapp_schritte ws LEFT JOIN supportapp_gruppen wg ON ws.gruppe = wg.id WHERE ws.aktiv = '1' and filter = '1' ORDER BY wg.id, ws.sort " );
if ( ! is_null ( $filterschritte )) {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $filterschritte ) ? count ( $filterschritte ) : 0 ) > 0 ){
for ( $i = 4 ; $i < ( ! empty ( $filterschritte ) ? count ( $filterschritte ) : 0 ) + 4 ; $i ++ ) {
2022-05-23 22:25:53 +02:00
$moredataarray [ $i ] = $app -> Secure -> GetGET ( " more_data " . $i );
$schrittearray [ $i ] = $filterschritte [ $i - 4 ][ 'id' ];
}
}
}
if ( $more_data2 == 1 )
$where = " w.status='geplant' " ;
else if ( $more_data3 == 1 )
$where = " w.status='abgeschlos' " ;
else
$where = " w.status='gestartet' " ;
if ( $more_data1 == 1 )
$where .= " AND w.mitarbeiter=' " . $app -> User -> GetAdresse () . " ' " ;
$filterjoin = " " ;
$countfilter = " " ;
$aktivefilterschritte = array ();
foreach ( $moredataarray as $key => $value ) {
if ( $value == 1 ){
$aktivefilterschritte [] = " wac.schritt = " . $schrittearray [ $key ];
}
}
2022-06-10 11:28:28 +02:00
if (( ! empty ( $aktivefilterschritte ) ? count ( $aktivefilterschritte ) : 0 ) > 0 ){
2022-05-23 22:25:53 +02:00
$filterjoin = " LEFT JOIN (SELECT wac.adresse, SUM(wac.status) AS sumx, COUNT(IF(ws.vorgaenger,IF(wac2.status = 1,1,NULL),wac.status)) AS countx FROM supportapp_auftrag_check wac LEFT JOIN supportapp_schritte ws ON wac.schritt = ws.id LEFT JOIN supportapp_auftrag_check wac2 ON wac2.auftragposition = wac.auftragposition AND wac2.schritt = ws.vorgaenger WHERE ( " . implode ( " OR " , $aktivefilterschritte ) . " ) GROUP BY adresse) AS wac ON wac.adresse = ku.id " ;
$countfilter = " LEFT JOIN (SELECT wac.adresse, SUM(wac.status) AS sumx, COUNT(IF(ws.vorgaenger,IF(wac2.status = 1,1,NULL),wac.status)) AS countx FROM supportapp_auftrag_check wac LEFT JOIN supportapp_schritte ws ON wac.schritt = ws.id LEFT JOIN supportapp_auftrag_check wac2 ON wac2.auftragposition = wac.auftragposition AND wac2.schritt = ws.vorgaenger WHERE ( " . implode ( " OR " , $aktivefilterschritte ) . " ) GROUP BY adresse) AS wac ON wac.adresse = w.adresse " ;
2022-06-10 11:28:28 +02:00
$where .= " AND wac.sumx < wac.countx AND wac.countx>= " . ( ! empty ( $aktivefilterschritte ) ? count ( $aktivefilterschritte ) : 0 );
2022-05-23 22:25:53 +02:00
}
$sql = " SELECT SQL_CALC_FOUND_ROWS w.id, '<img src=./themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/details_open.png class=details>' as open,
ma . name , ku . name , w . version , DATE_FORMAT ( w . startdatum , '%d.%m.%Y' ),
( SELECT DATE_FORMAT ( MAX ( z2 . bis ), '%d.%m.%Y' ) FROM zeiterfassung z2 WHERE z2 . adresse_abrechnung = w . adresse AND DATE_FORMAT ( z2 . von , '%Y-%m-%d' ) >= w . startdatum ),
( SELECT SUM ( auf . umsatz_netto ) FROM auftrag auf WHERE auf . adresse = w . adresse AND ( auf . status = 'freigegeben' OR auf . status = 'versendet' )),
FORMAT ( w . zeitgeplant , 2 ),
( SELECT FORMAT ( SUM ( TIME_TO_SEC ( TIMEDIFF ( z3 . bis , z3 . von ))) / 3600 , 2 ) FROM zeiterfassung z3 WHERE z3 . adresse = w . mitarbeiter AND z3 . adresse_abrechnung = w . adresse AND DATE_FORMAT ( z3 . von , '%Y-%m-%d' ) >= w . startdatum ),
( SELECT FORMAT ( SUM ( TIME_TO_SEC ( TIMEDIFF ( z3 . bis , z3 . von ))) / 3600 , 2 ) FROM zeiterfassung z3 WHERE z3 . adresse_abrechnung = w . adresse AND DATE_FORMAT ( z3 . von , '%Y-%m-%d' ) >= w . startdatum ),
CONCAT ( '<table cellpadding=\"0\" cellspacing=\"0\"><tr><td nowrap><img style=\"cursor: pointer;\" src=\"themes/{$app->Conf->WFconf[' defaulttheme ']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(' , w . id , ')\"> <a href=\"index.php?module=supportapp&action=auftrag&id=' , ku . id , '\"><img src=\"themes/{$app->Conf->WFconf[' defaulttheme ']}/images/forward.svg\" border=\"0\"></a></td></tr></table>' ) as test ,
IF ( DATEDIFF ( DATE_FORMAT ( NOW (), '%Y-%m-%d' ),( SELECT DATE_FORMAT ( MAX ( z2 . bis ), '%Y-%m-%d' ) FROM zeiterfassung z2 WHERE z2 . adresse_abrechnung = w . adresse AND z2 . adresse = w . mitarbeiter AND DATE_FORMAT ( z2 . von , '%Y-%m-%d' ) >= w . startdatum )) > 5 * w . intervall , '#ffadad' , IF ( DATEDIFF ( DATE_FORMAT ( NOW (), '%Y-%m-%d' ),( SELECT DATE_FORMAT ( MAX ( z2 . bis ), '%Y-%m-%d' ) FROM zeiterfassung z2 WHERE z2 . adresse_abrechnung = w . adresse AND DATE_FORMAT ( z2 . von , '%Y-%m-%d' ) >= w . startdatum )) > 2 * w . intervall , '#E5F5D2' , '' )) as tr ,
w . id
FROM supportapp w LEFT JOIN adresse ma ON ma . id = w . mitarbeiter LEFT JOIN adresse ku ON ku . id = w . adresse $filterjoin " ;
$count = " SELECT count(w.id) FROM supportapp w $countfilter WHERE $where " ;
break ;
case " supportapp_vorlagenuebersicht " :
$heading = array ( 'Bezeichnung' , 'Taetigkeit' , 'Beschreibung' , 'Menü' );
$width = array ( '10%' , '20%' , '79%' , '1%' );
$findcols = array ( 'bezeichnung' , 'taetigkeit' , 'beschreibung' , 'id' );
$searchsql = array ( 'bezeichnung' , 'taetigkeit' , 'beschreibung' , 'id' );
$defaultorder = 0 ;
$defaultorderdesc = 0 ;
$menu = '<table cellpadding="0" cellspacing="0">' ;
$menu .= '<tr>' ;
$menu .= '<td nowrap>' ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/edit.svg \" border= \" 0 \" onclick= \" neuedit(%value%); \" > " ;
$menu .= " <img style= \" cursor: pointer; \" src= \" themes/ { $app -> Conf -> WFconf [ 'defaulttheme' ] } /images/delete.svg \" border= \" 0 \" onclick= \" deleteeintrag(%value%); \" > " ;
$menu .= " </td> " ;
$menu .= " </tr> " ;
$menu .= " </table> " ;
$where = " 1 " ;
$sql = " SELECT SQL_CALC_FOUND_ROWS id, taetigkeit, bezeichnung, beschreibung, id FROM supportapp_vorlagen " ;
$count = " SELECT count(id) FROM supportapp_vorlagen WHERE $where " ;
break ;
}
$erg = false ;
foreach ( $erlaubtevars as $k => $v )
{
if ( isset ( $$v )) $erg [ $v ] = $$v ;
}
return $erg ;
}
function __construct ( & $app , $intern = false ) {
$this -> app =& $app ;
if ( $intern ) return ;
$this -> app -> ActionHandlerInit ( $this );
// ab hier alle Action Handler definieren die das Modul hat
$this -> app -> ActionHandler ( " list " , " supportappList " );
$this -> app -> ActionHandler ( " kunden " , " supportappKunden " );
$this -> app -> ActionHandler ( " schritte " , " supportappSchritte " );
//$this->app->ActionHandler("create", "supportappCreate");
$this -> app -> ActionHandler ( " auftrag " , " supportappAuftrag " );
$this -> app -> ActionHandler ( " edit " , " supportappEdit " );
$this -> app -> ActionHandler ( " minidetail " , " supportappMiniDetail " );
$this -> app -> ActionHandler ( " abgelaufeneabos " , " supportappAbgelaufeneAbos " );
$this -> app -> ActionHandler ( " einstellungen " , " supportappEinstellungen " );
$this -> app -> erp -> Headlines ( 'Suppport' );
$this -> app -> DefaultActionHandler ( " kunden " );
$this -> app -> ActionHandlerListen ( $app );
}
function supportappEinstellungen ()
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ){
case 'artikelhinzufuegen' :
$typ = $this -> app -> Secure -> GetGET ( 'typ' );
$artikeltmp = explode ( " " , $this -> app -> Secure -> GetGET ( 'artikel' ));
$artikelid = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer =' " . $artikeltmp [ 0 ] . " ' LIMIT 1 " );
$antwort = 0 ;
if ( $artikelid > 0 ){
if ( ! $this -> app -> DB -> Select ( " SELECT id FROM supportapp_artikel WHERE artikel=' $artikelid ' AND typ=' $typ ' " )){
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_artikel (artikel, typ) VALUES (' $artikelid ',' $typ ') " );
$antwort = 1 ;
}
}
echo json_encode ( $antwort );
exit ;
break ;
case 'deleteartikel' :
$id = $this -> app -> Secure -> GetGET ( 'id' );
$this -> app -> DB -> Delete ( " DELETE FROM supportapp_artikel WHERE id=' $id ' " );
echo json_encode ( 1 );
exit ;
break ;
case 'vorlagespeichern' :
$id = $this -> app -> Secure -> GetPOST ( 'vid' );
$bezeichnung = $this -> app -> Secure -> GetPOST ( 'bezeichnung' );
$taetigkeit = $this -> app -> Secure -> GetPOST ( 'taetigkeit' );
$beschreibung = $this -> app -> Secure -> GetPOST ( 'beschreibung' );
if ( $this -> app -> DB -> Select ( " SELECT id FROM supportapp_vorlagen WHERE bezeichnung = ' $bezeichnung ' LIMIT 1 " )){
$antwort = 'Eine Vorlage mit dieser Bezeichnung existiert bereits.' ;
}
if ( $antwort == '' ){
$antwort = " success " ;
if ( $id == '0' ){
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_vorlagen (bezeichnung, taetigkeit, beschreibung) VALUES (' $bezeichnung ',' $taetigkeit ',' $beschreibung ') " );
} else {
$this -> app -> DB -> Update ( " UPDATE supportapp_vorlagen SET taetigkeit = ' $taetigkeit ', bezeichnung = ' $bezeichnung ', beschreibung = ' $beschreibung ' WHERE id = $id " );
}
}
echo json_encode ( $antwort );
exit ;
break ;
case 'delete' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$this -> app -> DB -> Delete ( " DELETE FROM supportapp_vorlagen WHERE id = ' $id ' " );
echo json_encode ( 'success' );
exit ;
break ;
case 'editvorlage' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$result = $this -> app -> DB -> SelectArr ( " SELECT * FROM supportapp_vorlagen WHERE id = ' $id ' " );
$result = reset ( $result );
echo json_encode ( $result );
exit ;
break ;
default :
break ;
}
if ( $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'schritteerrechnen' ))){
$kunden = $this -> app -> DB -> SelectArr ( " SELECT adresse FROM supportapp WHERE status='gestartet' " );
$schrittzahl = 0 ;
2022-06-10 11:28:28 +02:00
$kundenzahl = ( ! empty ( $kunden ) ? count ( $kunden ) : 0 );
for ( $h = 0 ; $h < ( ! empty ( $kunden ) ? count ( $kunden ) : 0 ); $h ++ ) {
2022-05-23 22:25:53 +02:00
$kundenid = $kunden [ $h ][ 'adresse' ];
$gruppenzumhinzufuegen = $this -> app -> DB -> SelectArr ( " SELECT ap.id, was.gruppe FROM auftrag_position ap JOIN auftrag a ON ap.auftrag = a.id LEFT JOIN supportapp_gruppen wag ON ap.artikel = wag.artikel LEFT JOIN supportapp_schritte was ON wag.id = was.gruppe LEFT JOIN supportapp_auftrag_check wac ON wac.schritt = was.id WHERE a.adresse = ' $kundenid ' AND a.status <> 'storniert' AND a.belegnr <> '' AND wag.aktiv = 1 AND was.aktiv = 1 GROUP BY ap.id, was.id " );
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $gruppenzumhinzufuegen ) ? count ( $gruppenzumhinzufuegen ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$einzelschritte = $this -> app -> DB -> SelectArr ( " SELECT * FROM supportapp_schritte WHERE aktiv = 1 AND gruppe = " . $gruppenzumhinzufuegen [ $i ][ 'gruppe' ]);
2022-06-10 11:28:28 +02:00
for ( $j = 0 ; $j < ( ! empty ( $einzelschritte ) ? count ( $einzelschritte ) : 0 ); $j ++ ) {
2022-05-23 22:25:53 +02:00
$vorhanden = $this -> app -> DB -> Select ( " SELECT id FROM supportapp_auftrag_check WHERE auftragposition = ' " . $gruppenzumhinzufuegen [ $i ][ 'id' ] . " ' AND gruppe = ' " . $gruppenzumhinzufuegen [ $i ][ 'gruppe' ] . " ' AND adresse = ' $kundenid ' AND schritt = ' " . $einzelschritte [ $j ][ 'id' ] . " ' LIMIT 1 " );
if ( $vorhanden == '' ){
$schrittzahl += 1 ;
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_auftrag_check (adresse, gruppe, schritt, auftragposition, status) VALUES (' $kundenid ',' " . $gruppenzumhinzufuegen [ $i ][ 'gruppe' ] . " ',' " . $einzelschritte [ $j ][ 'id' ] . " ',' " . $gruppenzumhinzufuegen [ $i ][ 'id' ] . " ','0') " );
}
}
}
}
$this -> app -> Tpl -> Set ( " MESSAGE " , " <div class= \" info \" >Es wurden $schrittzahl Schritte bei $kundenzahl Kunden hinzugefügt</div> " );
}
$this -> supportappMenuNormal ();
$this -> app -> erp -> Headlines ( '' , 'Einstellungen' );
$this -> app -> YUI -> AutoComplete ( " artikelfuerauswahl " , " artikelnummer " );
$this -> app -> YUI -> CkEditor ( " beschreibung " , " all " , array ( 'height' => '11em' , 'width' => '100%' ));
$this -> app -> YUI -> TableSearch ( 'TAB2' , 'supportapp_vorlagenuebersicht' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> YUI -> TableSearch ( 'ARTIKELTABELLE' , 'supportapp_artikel' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'supportapp_einstellungen.tpl' );
}
function Install ()
{
$artikeluebernehmen = false ; //Nur für das erste mal notwending, kann später gelöscht werden
$this -> app -> DB -> Select ( " SELECT id FROM supportapp_artikel LIMIT 1 " );
if ( $this -> app -> DB -> error ()) $artikeluebernehmen = true ;
$this -> app -> erp -> CheckTable ( " supportapp " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " adresse " , " int(11) " , " supportapp " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " mitarbeiter " , " int(11) " , " supportapp " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " startdatum " , " DATE " , " supportapp " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " zeitgeplant " , " int(11) " , " supportapp " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " version " , " TEXT " , " supportapp " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " bemerkung " , " TEXT " , " supportapp " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " status " , " varchar(10) " , " supportapp " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckColumn ( " phase " , " varchar(10) " , " supportapp " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckColumn ( " intervall " , " int(11) " , " supportapp " , " NOT NULL DEFAULT '1' " );
$this -> app -> erp -> CheckTable ( " supportapp_schritte " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp_schritte " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " bezeichnung " , " varchar(255) " , " supportapp_schritte " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " gruppe " , " int(11) " , " supportapp_schritte " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " beschreibung " , " TEXT " , " supportapp_schritte " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " aktiv " , " int(1) " , " supportapp_schritte " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " sort " , " int(11) " , " supportapp_schritte " , " DEFAULT 0 " );
$this -> app -> erp -> CheckColumn ( " vorgaenger " , " int(11) " , " supportapp_schritte " , " DEFAULT 0 " );
$this -> app -> erp -> CheckColumn ( " filter " , " int(1) " , " supportapp_schritte " , " DEFAULT 0 " );
$this -> app -> erp -> CheckTable ( " supportapp_gruppen " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp_gruppen " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " artikel " , " int(11) " , " supportapp_gruppen " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " bezeichnung " , " varchar(255) " , " supportapp_gruppen " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckColumn ( " aktiv " , " int(1) " , " supportapp_gruppen " , " NOT NULL DEFAULT '1' " );
$this -> app -> erp -> CheckTable ( " supportapp_auftrag_check " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp_auftrag_check " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " adresse " , " int(11) " , " supportapp_auftrag_check " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " gruppe " , " int(11) " , " supportapp_auftrag_check " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " schritt " , " int(11) " , " supportapp_auftrag_check " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " auftragposition " , " int(11) " , " supportapp_auftrag_check " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " status " , " int(1) " , " supportapp_auftrag_check " , " NOT NULL DEFAULT 0 " );
$this -> app -> erp -> CheckTable ( " supportapp_vorlagen " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp_vorlagen " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " bezeichnung " , " varchar(255) " , " supportapp_vorlagen " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckColumn ( " taetigkeit " , " varchar(255) " , " supportapp_vorlagen " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckColumn ( " beschreibung " , " TEXT " , " supportapp_vorlagen " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckTable ( " supportapp_log " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp_log " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " adresse " , " int(11) " , " supportapp_log " , " NOT NULL DEFAULT '0' " ); //Kunde
$this -> app -> erp -> CheckColumn ( " bearbeiter " , " int(11) " , " supportapp_log " , " NOT NULL DEFAULT '0' " );
$this -> app -> erp -> CheckColumn ( " logdatei " , " DATETIME " , " supportapp_log " , " NOT NULL " );
$this -> app -> erp -> CheckColumn ( " details " , " varchar(255) " , " supportapp_log " , " NOT NULL DEFAULT '' " );
$this -> app -> erp -> CheckTable ( " supportapp_artikel " );
$this -> app -> erp -> CheckColumn ( " id " , " int(11) " , " supportapp_artikel " , " NOT NULL AUTO_INCREMENT " );
$this -> app -> erp -> CheckColumn ( " artikel " , " int(11) " , " supportapp_artikel " , " NOT NULL DEFAULT '0' " ); //artikel
$this -> app -> erp -> CheckColumn ( " typ " , " int(11) " , " supportapp_artikel " , " NOT NULL DEFAULT '0' " ); //) 1: Telefonsupport, 2: Technikersupport, 3: Enterprise, etc
$this -> app -> erp -> RegisterMenuHook ( 'startseite' , 'supportappMenuHook' , $this );
if ( $artikeluebernehmen ){ //Nur für das erste mal notwending, kann später gelöscht werden
//Damit bei der Änderung der Artikelzuweisung nicht alle Artikel nochmal angelegt werden müssen
for ( $i = 1 ; $i <= 10 ; $i ++ )
{
$tmp = $this -> app -> erp -> GetKonfiguration ( 'supportapp_telefonsupport' . ( $i > 1 ? $i : '' ));
$tmp = explode ( ' ' , $tmp );
$tmp = reset ( $tmp );
$tmp = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer <> '' AND ifnull(geloescht,0) = 0 AND nummer = ' " . $this -> app -> DB -> real_escape_string ( $tmp ) . " ' LIMIT 1 " );
if ( $tmp ) $this -> app -> DB -> Insert ( " INSERT INTO supportapp_artikel (artikel, typ) VALUES (' $tmp ','1') " );
$tmp = $this -> app -> erp -> GetKonfiguration ( 'supportapp_technikersupport' . ( $i > 1 ? $i : '' ));
$tmp = explode ( ' ' , $tmp );
$tmp = reset ( $tmp );
$tmp = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer <> '' AND ifnull(geloescht,0) = 0 AND nummer = ' " . $this -> app -> DB -> real_escape_string ( $tmp ) . " ' LIMIT 1 " );
if ( $tmp ) $this -> app -> DB -> Insert ( " INSERT INTO supportapp_artikel (artikel, typ) VALUES (' $tmp ','2') " );
$tmp = $this -> app -> erp -> GetKonfiguration ( 'supportapp_enterprise' . ( $i > 1 ? $i : '' ));
$tmp = explode ( ' ' , $tmp );
$tmp = reset ( $tmp );
$tmp = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer <> '' AND ifnull(geloescht,0) = 0 AND nummer = ' " . $this -> app -> DB -> real_escape_string ( $tmp ) . " ' LIMIT 1 " );
if ( $tmp ) $this -> app -> DB -> Insert ( " INSERT INTO supportapp_artikel (artikel, typ) VALUES (' $tmp ','3') " );
}
}
}
function supportappMenuHook ()
{
//$this->app->erp->InsertMenuAfter("index.php?module=matrixprodukt&action=artikel&id=$id","Matrixprodukt","artikel","eigenschaften");
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=kunden " , " Support " );
}
function supportappMenu ()
{
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=list " , " Zurück zur Übersicht " );
}
function supportappMenuNormal ( $id = '' )
{
//$this->app->erp->MenuEintrag("index.php?module=supportapp&action=create","Neue supportapp");
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=kunden " , " Kunden " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=list " , " Einrichtung " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=auftrag " . ( $id != '' ? '&id=' . $id : '' ), " Auftrag " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=schritte " , " Schritte " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=abgelaufeneabos " , " Abgelaufene Supportverträge " );
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=einstellungen " , " Einstellungen " );
if ( $this -> app -> User -> GetParameter ( " supportapp_startstop " ) == '' ){
$this -> app -> User -> SetParameter ( " supportapp_startstop " , serialize ( array ()));
}
}
function supportappAbgelaufeneAbos ()
{
$this -> supportappMenuNormal ();
$this -> app -> erp -> Headlines ( '' , 'Abgelaufene Supportverträge' );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'supportapp_abgelaufen' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'supportapp_abgelaufeneabos.tpl' );
}
function supportappList ()
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ) {
case 'einrichtungspeichern' :
$einrichtungid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'einrichtungid' ));
$kundetmp = explode ( " " , $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'kunde' )));
$mitarbeitertmp = explode ( " " , $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'mitarbeiter' )));
$version = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'version' ));
$status = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'status' ));
$intervall = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'intervall' ));
$startdatum = date_create_from_format ( 'd.m.Y' , $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'startdatum' )));
$zeitgeplant = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'zeitgeplant' ));
$phase = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'phase' ));
$bemerkung = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'bemerkung' ));
$kundennummer = $kundetmp [ 0 ];
$mitarbeiternummer = $mitarbeitertmp [ 0 ];
$kundenid = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE kundennummer =' $kundennummer ' LIMIT 1 " );
$mitarbeiterid = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE mitarbeiternummer = ' $mitarbeiternummer ' LIMIT 1 " );
if ( gettype ( $startdatum ) !== 'DateTimeInterface' ) {
$startdatum = new DateTime ( 'now' );
}
if ( $einrichtungid > 0 ){
$this -> app -> DB -> Update ( " UPDATE supportapp SET adresse=' $kundenid ',mitarbeiter=' $mitarbeiterid ',startdatum=' " . date_format ( $startdatum , 'Y-m-d' ) . " ',zeitgeplant=' $zeitgeplant ', intervall=' $intervall ', version=' $version ',bemerkung=' $bemerkung ',status=' $status ',phase=' $phase ' WHERE id=' $einrichtungid ' " );
} else {
$this -> app -> DB -> Insert ( " INSERT INTO supportapp (adresse, mitarbeiter, startdatum, zeitgeplant, intervall, version, bemerkung, status, phase) VALUES (' $kundenid ',' $mitarbeiterid ',' " . date_format ( $startdatum , 'Y-m-d' ) . " ',' $zeitgeplant ',' $intervall ',' $version ',' $bemerkung ',' $status ',' $phase ') " );
}
echo json_encode ( " success " );
exit ;
break ;
case 'geteinrichtung' :
$einrichtungid = $this -> app -> Secure -> GetGET ( 'id' );
$einrichtung = reset ( $this -> app -> DB -> SelectArr ( " SELECT s.id AS id, CONCAT(a1.kundennummer,' ',a1.name) AS kunde, CONCAT(a2.mitarbeiternummer,' ',a2.name) AS mitarbeiter, DATE_FORMAT(s.startdatum,'%d.%m.%Y') AS startdatum, s.zeitgeplant, s.version, s.intervall, s.status, s.phase, s.bemerkung FROM supportapp s LEFT JOIN adresse a1 ON s.adresse = a1.id LEFT JOIN adresse a2 ON s.mitarbeiter = a2.id WHERE s.id = ' $einrichtungid ' " ));
echo json_encode ( $einrichtung );
exit ;
break ;
default :
# code...
break ;
}
$this -> supportappMenuNormal ();
$this -> app -> erp -> Headlines ( '' , 'Einrichtung' );
$filterschritte = $this -> app -> DB -> SelectArr ( " SELECT ws.id AS id, wg.bezeichnung AS wgb, ws.bezeichnung AS wsb FROM supportapp_schritte ws LEFT JOIN supportapp_gruppen wg ON ws.gruppe = wg.id WHERE ws.aktiv = '1' and filter = '1' ORDER BY wg.id, ws.sort " );
if ( ! is_null ( $filterschritte )) {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $filterschritte ) ? count ( $filterschritte ) : 0 ) > 0 ){
2022-05-23 22:25:53 +02:00
$filterinhalt = " <fieldset style= \" width:33em; \" ><legend>Einzelfilter</legend><table> " ;
$filtergruppe_tmp = " " ;
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $filterschritte ) ? count ( $filterschritte ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
if ( $filtergruppe_tmp != $filterschritte [ $i ][ 'wgb' ]){
$filterinhalt .= '<tr><td></td></tr><tr><td colspan="2"><b>' . $filterschritte [ $i ][ 'wgb' ] . '</b></td></tr>' ;
$filtergruppe_tmp = $filterschritte [ $i ][ 'wgb' ];
}
$filterinhalt .= '<tr><td><input type="checkbox" id="filter_' . $filterschritte [ $i ][ 'id' ] . '"></td><td rowspan="2"><label for="filter_' . $filterschritte [ $i ][ 'id' ] . '">' . $filterschritte [ $i ][ 'wsb' ] . ' fehlt</label></td></tr><tr></tr>' ;
$this -> app -> Tpl -> Add ( 'JQUERYREADY' , " $ ('#filter_ " . $filterschritte [ $i ][ 'id' ] . " ').click(function() { fnFilterColumn " . ( $i + 4 ) . " ( 0 ); } ); " );
$this -> app -> Tpl -> Add ( 'JAVASCRIPT' , '
function fnFilterColumn '.($i+4).' ( i ){
if ( oMoreData '.($i+4).' supportapp_list == 1 ) oMoreData '.($i+4).' supportapp_list = 0 ;
else
oMoreData '.($i+4).' supportapp_list = 1 ;
$ ( \ ' #supportapp_list\').dataTable().fnFilter(\'A\',i,0,0);
}
' );
}
$filterinhalt .= " </table></fieldset> " ;
}
}
$this -> app -> YUI -> DatePicker ( " startdatum " );
$this -> app -> YUI -> CkEditor ( " bemerkung " , " basic " , array ( 'height' => '200px' , 'width' => '500px' ));
$this -> app -> YUI -> AutoComplete ( " kunde " , " kunde " );
$this -> app -> YUI -> AutoComplete ( " mitarbeiter " , " mitarbeiter " );
$this -> app -> Tpl -> Set ( " FILTERBOX " , $filterinhalt );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'supportapp_list' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( " PAGE " , " supportapp_list.tpl " );
}
function supportappAuftrag ()
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ) {
case 'changeschritt' :
$adressid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$gs = explode ( " _ " , $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'gs' )));
$checked = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'checked' ));
$schrittname = $this -> app -> DB -> Select ( " SELECT bezeichnung FROM supportapp_schritte WHERE id = ' " . $gs [ 2 ] . " ' " );
$this -> supportapplogbucheintrag ( $adressid , $this -> app -> User -> GetAdresse (), $schrittname . " geändert zu " . ( $checked == '1' ? 'erledigt' : 'nicht erledigt' ));
$vorhanden = $this -> app -> DB -> Select ( " SELECT id FROM supportapp_auftrag_check WHERE adresse=' " . $adressid . " ' AND schritt=' " . $gs [ 2 ] . " ' AND auftragposition = ' " . $gs [ 3 ] . " ' " );
if ( $vorhanden ){
$this -> app -> DB -> Update ( " UPDATE supportapp_auftrag_check set status = ' $checked ' WHERE adresse=' " . $adressid . " ' AND schritt=' " . $gs [ 2 ] . " ' AND auftragposition = ' " . $gs [ 3 ] . " ' " );
} else {
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_auftrag_check (adresse, gruppe, schritt, auftragposition, status) VALUES (' $adressid ',' " . $gs [ 1 ] . " ',' " . $gs [ 2 ] . " ',' " . $gs [ 3 ] . " ', ' $checked ') " );
}
echo json_encode ( " success " );
exit ;
break ;
case 'goto' :
$kundennr = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'kdnr' ));
$kundendaten = explode ( " " , $kundennr );
$id = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE kundennummer = ' " . $kundendaten [ 0 ] . " ' " );
echo json_encode ( $id );
exit ;
break ;
case 'start' :
$kundenid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$startstop = unserialize ( $this -> app -> User -> GetParameter ( " supportapp_startstop " ));
if (( $startstop [ $kundenid ][ 'status' ] != 1 )){
$startstop [ $kundenid ][ 'status' ] = 1 ;
$startstop [ $kundenid ][ 'zeit' ] = date ( " d.m.Y H:i " );
$this -> app -> User -> SetParameter ( " supportapp_startstop " , serialize ( $startstop ));
}
echo json_encode ( " success " );
exit ;
break ;
case 'stop' :
$kundenid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$startstop = unserialize ( $this -> app -> User -> GetParameter ( " supportapp_startstop " ));
$zeit = $startstop [ $kundenid ][ 'zeit' ];
$projektid = $this -> app -> DB -> Select ( " SELECT CONCAT(p.abkuerzung,' ',p.name) FROM projekt p LEFT JOIN adresse a ON p.id = a.projekt WHERE a.id = ' $kundenid ' " );
$antwort = array ( 'zeit' => $zeit ,
'adresse' => $kundenid ,
'projekt' => $projekt );
echo json_encode ( $antwort );
exit ;
break ;
case 'save' :
$kundenid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$bearbeiternummer = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'bearbeiter' ));
$bearbeiteradresse = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE mitarbeiternummer = ' " . $bearbeiternummer . " ' " );
if ( $bearbeiteradresse == '' || $bearbeiteradresse == 0 || ! is_numeric ( $bearbeiteradresse )){
$bearbeiteradresse = $this -> app -> User -> GetAdresse ();
}
$von = $this -> app -> Secure -> GetPOST ( 'von' );
$bis = $this -> app -> Secure -> GetPOST ( 'bis' );
$taetigkeit = $this -> app -> Secure -> GetPOST ( 'taetigkeit' );
$details = $this -> app -> Secure -> GetPOST ( 'details' );
$projekt = $this -> app -> Secure -> GetPOST ( 'projekt' );
$projekt = explode ( " " , $projekt );
$projektid = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE abkuerzung = ' " . $projekt [ 0 ] . " ' " );
if ( $projektid == '' ) $projektid = 0 ;
$von = DateTime :: createFromFormat ( 'd.m.Y H:i' , $von );
$bis = DateTime :: createFromFormat ( 'd.m.Y H:i' , $bis );
$von = $von -> format ( " Y-m-d H:i:s " );
$bis = $bis -> format ( " Y-m-d H:i:s " );
$erfolg = $this -> app -> DB -> Insert ( " INSERT INTO zeiterfassung (art, adresse, von, bis, aufgabe, beschreibung, arbeitspaket, buchungsart, kostenstelle, projekt, abgerechnet, logdatei, status, gps, arbeitsnachweispositionid, adresse_abrechnung, abrechnen, ist_abgerechnet, gebucht_von_user, ort, abrechnung_dokument, dokumentid, verrechnungsart, arbeitsnachweis, internerkommentar, aufgabe_id, auftrag, auftragpositionid, produktion,stundensatz, arbeitsanweisung, serviceauftrag)
VALUES ( 'Arbeit' , '$bearbeiteradresse' , '$von' , '$bis' , '$taetigkeit' , '$details' , '0' , 'manuell' , '' , '$projektid' , '0' , NOW (), 'offen' , '' , '0' , '$kundenid' , '0' , '0' , '$bearbeiteradresse' , '' , '' , '0' , '' , '0' , '' , '0' , '0' , '0' , '0' , '0' , '0' , '1' ) " );
$startstop = unserialize ( $this -> app -> User -> GetParameter ( " supportapp_startstop " ));
$startstop [ $kundenid ][ 'status' ] = '0' ;
$startstop [ $kundenid ][ 'zeit' ] = '' ;
$this -> app -> User -> SetParameter ( " supportapp_startstop " , serialize ( $startstop ));
if ( $erfolg == '1' ){
echo json_encode ( " success " );
} else {
echo json_encode ( " Zeiterfassung wurde nicht gebucht: Unbekannter Fehler. " );
}
exit ;
break ;
case 'discard' :
$kundenid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$startstop = unserialize ( $this -> app -> User -> GetParameter ( " supportapp_startstop " ));
$startstop [ $kundenid ][ 'status' ] = '0' ;
$startstop [ $kundenid ][ 'zeit' ] = '' ;
$this -> app -> User -> SetParameter ( " supportapp_startstop " , serialize ( $startstop ));
echo json_encode ( " success " );
exit ;
break ;
case 'notiz' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$sonstiges = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'notiz' ));
$this -> app -> DB -> Update ( " UPDATE adresse SET sonstiges = ' $sonstiges ' WHERE id = ' $id ' " );
echo json_encode ( " success " );
exit ;
break ;
case 'getmail' :
$empfanengerid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$betreff = $this -> app -> DB -> Select ( " SELECT kundennummer FROM adresse WHERE id = ' " . $empfanengerid . " ' " ) . " - " . $this -> app -> DB -> Select ( " SELECT name FROM adresse WHERE id = ' " . $empfanengerid . " ' " );
$antwort = array (
'von' => $this -> app -> User -> GetName () . " < " . $this -> app -> erp -> GetFirmaMail () . " > " ,
'an' => " kontakt@wawision.de " ,
'betreff' => $betreff
);
echo json_encode ( $antwort );
exit ;
break ;
case 'sendmail' :
$kundenid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'id' ));
$von = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'von' ));
$an = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'an' ));
$betreff = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'betreff' ));
$nachricht = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'nachricht' ));
$this -> supportapplogbucheintrag ( $kundenid , $this -> app -> User -> GetAdresse (), 'An Vertrieb: ' . substr ( $betreff , 0 , 25 ) . (( strlen ( $betreff ) > 25 ? '...' : '' )));
$von = explode ( '<' , trim ( $von , '> ' ));
$an = explode ( '<' , trim ( $an , '> ' ));
$mailSend = $this -> app -> erp -> MailSend (
$von [ 1 ], //Mail
$von [ 0 ], //Von
$an [ 1 ],
$an [ 0 ],
$betreff ,
$nachricht
);
echo json_encode ( " success " );
exit ;
break ;
case 'holevorlage' :
$vorlageid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$daten = $this -> app -> DB -> SelectArr ( " SELECT taetigkeit, beschreibung FROM supportapp_vorlagen WHERE id = ' $vorlageid ' " );
$daten = reset ( $daten );
echo json_encode ( $daten );
exit ;
break ;
default :
# code...
break ;
}
$kundennr = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'kdnr' ));
$kundenid = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$this -> app -> erp -> Headlines ( '' , 'Auftrag' );
if ( $kundennr != '' ){
$kundenname = $this -> app -> DB -> Select ( " SELECT name FROM adresse WHERE kundennummer = ' " . $kundennr . " ' " );
$kundenid = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE kundennummer = ' " . $kundennr . " ' " );
} else {
if ( $kundenid != '' ){
$kundenname = $this -> app -> DB -> Select ( " SELECT name FROM adresse WHERE id = ' " . $kundenid . " ' " );
$kundennr = $this -> app -> DB -> Select ( " SELECT kundennummer FROM adresse WHERE id = ' " . $kundenid . " ' " );
$this -> app -> erp -> Headlines ( '' , '' , '<a href="index.php?module=adresse&action=edit&id=' . $kundenid . '" target="_blank">' . $kundennr . ' ' . $kundenname . '</a>' );
}
}
$nameduser = $this -> app -> DB -> Select ( " SELECT freifeld5 FROM adresse WHERE id = ' " . $kundenid . " ' " );
$sperrvermerk = trim ( $this -> app -> DB -> Select ( " SELECT freifeld6 FROM adresse WHERE id = ' " . $kundenid . " ' " ));
//$telefonsupport = trim($this->app->DB->Select("SELECT freifeld7 FROM adresse WHERE id = '".$kundenid."'"));
//$techniksupport = trim($this->app->DB->Select("SELECT freifeld8 FROM adresse WHERE id = '".$kundenid."'"));
$artikektelefonarr = array ( 0 );
$artikektechnikerarr = array ( 0 );
$artikekenterprisearr = array ( 0 );
$artikeltmp = $this -> app -> DB -> SelectArr ( " SELECT wa.* FROM supportapp_artikel wa JOIN artikel a ON wa.artikel = a.id WHERE a.geloescht = 0 " );
if ( ! is_null ( $artikeltmp )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $artikeltmp ) ? count ( $artikeltmp ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
switch ( $artikeltmp [ $i ][ 'typ' ]) {
case '1' :
$artikektelefonarr [] = $artikeltmp [ $i ][ 'artikel' ];
break ;
case '2' :
$artikektechnikerarr [] = $artikeltmp [ $i ][ 'artikel' ];
break ;
case '3' :
$artikekenterprisearr [] = $artikeltmp [ $i ][ 'artikel' ];
break ;
}
}
}
$telefonsupport = $this -> app -> DB -> Select ( " SELECT id FROM abrechnungsartikel WHERE artikel in ( " . implode ( ', ' , $artikektelefonarr ) . " ) AND artikel <> 0 AND (enddatum IS NULL OR enddatum >= CURDATE()) AND adresse = ' $kundenid ' LIMIT 1 " );
$techniksupport = $this -> app -> DB -> Select ( " SELECT id FROM abrechnungsartikel WHERE artikel in ( " . implode ( ', ' , $artikektechnikerarr ) . " ) AND artikel <> 0 AND (enddatum IS NULL OR enddatum >= CURDATE()) AND adresse = ' $kundenid ' LIMIT 1 " );
$supportvertrag = $this -> app -> DB -> Select ( " SELECT id FROM abrechnungsartikel WHERE artikel in ( " . implode ( ', ' , $artikekenterprisearr ) . " ) AND artikel <> 0 AND (enddatum IS NULL OR enddatum >= CURDATE()) AND adresse = ' $kundenid ' LIMIT 1 " );
$supportvertrag2 = $this -> app -> DB -> Select ( " SELECT rp.id FROM rechnung_position rp LEFT JOIN rechnung r ON rp.rechnung = r.id WHERE artikel in ( " . implode ( ', ' , $artikekenterprisearr ) . " ) AND artikel <> 0 AND adresse = ' $kundenid ' AND r.datum >= (now() - INTERVAL 1 YEAR) " );
$rechnungenbezahlt = trim ( $this -> app -> DB -> Select ( " SELECT freifeld9 FROM adresse WHERE id = ' " . $kundenid . " ' " ));
$pluspaketamlaufen = $this -> app -> DB -> Select ( " SELECT COUNT(w.id) FROM supportapp w LEFT JOIN adresse ma ON ma.id=w.mitarbeiter LEFT JOIN adresse ku ON ku.id=w.adresse WHERE w.status='gestartet' AND adresse = ' " . $kundenid . " ' " );
if ( $pluspaketamlaufen ) $telefonsupport = $pluspaketamlaufen ; // Wenn Kunde Pluspaket hat ist Telefonsupport auch automatisch dabei
$sonstiges = $this -> app -> DB -> Select ( " SELECT sonstiges FROM adresse WHERE id = ' " . $kundenid . " ' " );
if ( $kundenid != '' ){
$gruppenzumhinzufuegen = $this -> app -> DB -> SelectArr ( " SELECT ap.id, was.gruppe FROM auftrag_position ap JOIN auftrag a ON ap.auftrag = a.id LEFT JOIN supportapp_gruppen wag ON ap.artikel = wag.artikel LEFT JOIN supportapp_schritte was ON wag.id = was.gruppe LEFT JOIN supportapp_auftrag_check wac ON wac.auftragposition = ap.id WHERE a.adresse = ' $kundenid ' AND a.status <> 'storniert' AND a.belegnr <> '' AND wag.aktiv = 1 AND was.aktiv = 1 AND ISNULL(wac.id) GROUP BY ap.id " );
if ( ! is_null ( $gruppezumhinzufuegen )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $gruppenzumhinzufuegen ) ? count ( $gruppenzumhinzufuegen ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$einzelschritte = $this -> app -> DB -> Select ( " SELECT * FROM supportapp_schritte WHERE aktiv = 1 AND gruppe = " . $gruppenzumhinzufuegen [ $i ][ 'gruppe' ]);
2022-06-10 11:28:28 +02:00
for ( $j = 0 ; $j < ( ! empty ( $einzelschritte ) ? count ( $einzelschritte ) : 0 ); $j ++ ) {
2022-05-23 22:25:53 +02:00
$vorhanden = $this -> app -> DB -> Select ( " SELECT id FROM supportapp_auftrag_check WHERE auftragposition = ' " . $gruppenzumhinzufuegen [ $i ][ 'id' ] . " ' AND gruppe = ' " . $gruppenzumhinzufuegen [ $i ][ 'gruppe' ] . " ' AND adresse = ' $kundenid ' AND schritt = ' " . $einzelschritte [ $j ][ 'id' ] . " ' LIMIT 1 " );
if ( $vorhanden == '' ){
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_auftrag_check (adresse, gruppe, schritt, auftragposition, status) VALUES (' $kundenid ',' " . $gruppenzumhinzufuegen [ $i ][ 'gruppe' ] . " ',' " . $einzelschritte [ $j ][ 'id' ] . " ',' " . $gruppenzumhinzufuegen [ $i ][ 'id' ] . " ','0') " );
}
}
}
}
}
/*
$updatedaten = $this -> app -> DB -> SelectArr ( " SELECT w.*,
date_format ( versionupdate , '%d.%m.%Y %H:%i:%s' ) as versionupdatede ,
date_format ( ioncube_expdate , '%d.%m.%Y' ) as ioncube_expdatede ,
datediff ( ioncube_expdate , CURDATE ()) as diff FROM wawisionsupport w WHERE adresse = '$kundenid' LIMIT 1 " );
if ( $updatedaten )
{
$updatedaten = reset ( $updatedaten );
$this -> app -> Tpl -> Add ( 'UPDATE_MODULLIST' , str_replace ( ',' , ', ' , $updatedaten [ 'module' ]));
$revision = $updatedaten [ 'revision' ];
if ( $revision ) $revision = '<a target="_blank" href="http://192.168.0.81/versionen/versionen.php?version=' . $revision . '">' . $revision . '</a>' ;
$this -> app -> Tpl -> Add ( 'UPDATE_REVISION' , $revision );
$this -> app -> Tpl -> Add ( 'UPDATE_MAXUSER' , $updatedaten [ 'ioncube_maxuser' ]);
$this -> app -> Tpl -> Add ( 'UPDATE_MAXLIGHTUSER' , $updatedaten [ 'ioncube_maxlightuser' ]);
$this -> app -> Tpl -> Add ( 'UPDATE_VERSIONUPATE' , $updatedaten [ 'versionupdatede' ]);
$this -> app -> Tpl -> Add ( 'UPDATE_ABLAUFAM' , $updatedaten [ 'ioncube_expdatede' ]);
$this -> app -> Tpl -> Add ( 'UPDATE_ABLAUFIN' , $updatedaten [ 'diff' ]);
$this -> app -> Tpl -> Add ( 'UPDATE_VERSIONSHINWEIS' , $updatedaten [ 'versionshinweis' ]);
$this -> app -> Tpl -> Add ( 'UPDATE_DEAKTIVIEREN' , $updatedaten [ 'ioncube_deaktivateonexp' ] ? 'ja' : 'nein' );
$this -> app -> Tpl -> Add ( 'UPDATE_GESPERRT' , $updatedaten [ 'gesperrt' ] ? 'ja' : 'nein' );
$this -> app -> Tpl -> Add ( 'UPDATE_TESTLIZENZ' , $updatedaten [ 'testlizenz' ] ? 'ja' : 'nein' );
$this -> app -> Tpl -> Add ( 'UPDATE_CLOUD' , $updatedaten [ 'cloud' ] != '' ? ucfirst ( $updatedaten [ 'cloud' ]) : 'Kauf Erstvertrag' );
if ( $updatedaten [ 'module_custom' ] != '' )
{
$this -> app -> Tpl -> Add ( 'UPDATEWARNUNG' , '<div class="error">Kundenspezifische Modifikationen vorhanden!</div>' );
$module_custom = json_decode ( $updatedaten [ 'module_custom' ]);
foreach ( $module_custom as $datei => $arr )
{
if ( strpos ( $datei , '/download/' ) !== 0 )
{
$this -> app -> Tpl -> Add ( 'UEBERLADENLISTE' , '<div >' . $datei . '' );
//foreach($arr as $fkey => $arr2)
// {
// $this->app->Tpl->Add('UEBERLADENLISTE','<pre>'."\r\n...\r\n");
// foreach($arr2 as $v)$this->app->Tpl->Add('UEBERLADENLISTE',$v);
// $this->app->Tpl->Add('UEBERLADENLISTE',"\r\n...\r\n".'</pre><br /><br />');
//}
$this -> app -> Tpl -> Add ( 'UEBERLADENLISTE' , '</div>' );
}
}
}
} */
//$this->app->Tpl->Add('MODULEUPDATE');
$updates = ' < table class = " mkTable " cellpadding = " 0 " cellspacing = " 0 " >
< tr >
< td > Datum </ td >
< td > Update </ td >
< td > Info 1 </ td >
< td > Info 2 </ td >
< td > Info 3 </ td >
</ tr > ' ;
$updates .= '
< tr >
< td > dummy </ td >
< td > dummy </ td >
< td > Info 1 </ td >
< td > Info 2 </ td >
< td > Info 3 </ td >
</ tr > ' ;
$updates .= '</table>' ;
$module = ' < table class = " mkTable " cellpadding = " 0 " cellspacing = " 0 " >
< tr >
< td > Datum </ td >
< td > Nummer </ td >
< td > Name </ td >
< td > Menge </ td >
< td > Preis </ td >
< td > Rabatt </ td >
</ tr > ' ;
$modules = $this -> app -> DB -> SelectArr ( " SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') AS datum, ar.nummer, ap.bezeichnung, " . $this -> app -> erp -> FormatMenge ( " ap.menge " ) . " AS menge, " . $this -> app -> erp -> FormatPreis ( " ap.preis " , 2 ) . " AS preis, " . $this -> app -> erp -> FormatPreis ( " ap.rabatt " , 2 ) . " AS rabatt FROM auftrag a LEFT JOIN auftrag_position ap ON a.id = ap.auftrag LEFT JOIN artikel ar ON ar.id = ap.artikel WHERE a.status <> 'angelegt' AND a.status <> 'storniert' AND a.adresse = ' $kundenid ' " );
if ( ! is_null ( $modules )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $modules ) ? count ( $modules ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$module .= '
< tr >
< td > '.$modules[$i][' datum '].' </ td >
< td > '.$modules[$i][' nummer '].' </ td >
< td > '.$modules[$i][' bezeichnung '].' </ td >
< td align = " right " > '.$modules[$i][' menge '].' </ td >
< td align = " right " > '.$modules[$i][' preis '].' </ td >
< td align = " right " > '.$modules[$i][' rabatt '].' </ td >
</ tr > ' ;
}
}
$module .= '</table>' ;
$belege = ' < table class = " mkTable " cellpadding = " 0 " cellspacing = " 0 " >
< tr >
< td > Art </ td >
< td > Beleg </ td >
< td > Datum </ td >
< td > Summe </ td >
< td > Status </ td >
< td ></ td >
</ tr > ' ;
$steuersatznormal = 1 + $this -> app -> erp -> GetStandardSteuersatzNormal () / 100 ;
$steuersatzermaessigt = 1 + $this -> app -> erp -> GetStandardSteuersatzErmaessigt () / 100 ;
$beleges = $this -> app -> DB -> SelectArr ( " SELECT 'Angebot' AS art,a.belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') AS datum, " . $this -> app -> erp -> FormatPreis ( " IF(ISNULL(SUM(ap.preis)),0,SUM(ap.preis*ap.menge*IF(ap.umsatzsteuer = 'normal', $steuersatznormal , $steuersatzermaessigt ))) " , 2 ) . " AS summe, a.status, CONCAT('<a href= \" index.php?module=angebot&action=pdf&id=',a.id,' \" ><img src= \" themes/new/images/pdf.svg \" border= \" 0 \" ></a>') AS pdf FROM angebot a LEFT JOIN angebot_position ap ON a.id = ap.angebot WHERE adresse = ' $kundenid ' GROUP BY a.id UNION SELECT 'Auftrag' AS art,a.belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') AS datum, " . $this -> app -> erp -> FormatPreis ( " IF(ISNULL(SUM(ap.preis)),0,SUM(ap.preis*ap.menge*IF(ap.umsatzsteuer = 'normal', $steuersatznormal , $steuersatzermaessigt ))) " , 2 ) . " AS summe, a.status, CONCAT('<a href= \" index.php?module=auftrag&action=pdf&id=',a.id,' \" ><img src= \" themes/new/images/pdf.svg \" border= \" 0 \" ></a>') AS pdf FROM auftrag a LEFT JOIN auftrag_position ap ON a.id = ap.auftrag WHERE adresse = ' $kundenid ' GROUP BY a.id " );
if ( ! is_null ( $beleges )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $beleges ) ? count ( $beleges ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$belege .= '
< tr >
< td > '.$beleges[$i][' art '].' </ td >
< td > '.$beleges[$i][' belegnr '].' </ td >
< td > '.$beleges[$i][' datum '].' </ td >
< td align = " right " > '.$beleges[$i][' summe '].' </ td >
< td > '.$beleges[$i][' status '].' </ td >
< td >< center > '.$beleges[$i][' pdf '].' </ center ></ td >
</ tr > ' ;
}
}
$belege .= '</table>' ;
$logbuch = ' < table class = " mkTable " cellpadding = " 0 " cellspacing = " 0 " >
< tr >
< td > Datum </ td >
< td > Bearbeiter </ td >
< td > Details </ td >
</ tr > ' ;
$logbuchs = $this -> app -> DB -> SelectArr ( " SELECT wl.logdatei, a.name, wl.details FROM supportapp_log wl LEFT JOIN adresse a ON wl.bearbeiter = a.id WHERE adresse = ' $kundenid ' ORDER BY wl.logdatei DESC " );
if ( ! is_null ( $logbuchs )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $logbuchs ) ? count ( $logbuchs ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$logbuch .= '
< tr >
< td > '.date_format(date_create($logbuchs[$i][' logdatei ']), ' H : i d . m . y ').' </ td >
< td > '.$logbuchs[$i][' name '].' </ td >
< td > '.$logbuchs[$i][' details '].' </ td >
</ tr > ' ;
}
}
$logbuch .= '</table>' ;
$einrichtung = ' < table class = " mkTable " cellpadding = " 0 " cellspacing = " 0 " >
< tr >
< td > Status </ td >
< td > Startdatum </ td >
< td > Bemerkung </ td >
</ tr > ' ;
$einrichtungs = $this -> app -> DB -> SelectArr ( " SELECT status, DATE_FORMAT(startdatum,'%d.%m.%Y') AS startdatum ,bemerkung FROM supportapp WHERE adresse=' $kundenid ' ORDER BY startdatum " );
if ( ! is_null ( $einrichtungs )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $einrichtungs ) ? count ( $einrichtungs ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$einrichtung .= '
< tr >
< td > '.$einrichtungs[$i][' status '].' </ td >
< td > '.$einrichtungs[$i][' startdatum '].' </ td >
< td > '.$einrichtungs[$i][' bemerkung '].' </ td >
</ tr > ' ;
}
}
$einrichtung .= '</table>' ;
$gruppen = $this -> app -> DB -> SelectArr ( " SELECT wag.id AS id, ap.id AS auftragsposition, a.belegnr AS auftrag, ap.bezeichnung AS bezeichnung, COUNT(was.id) AS gesamt, x.erledigt FROM auftrag_position ap JOIN auftrag a ON ap.auftrag = a.id LEFT JOIN supportapp_gruppen wag ON ap.artikel = wag.artikel LEFT JOIN supportapp_schritte was ON wag.id = was.gruppe LEFT JOIN (SELECT auftragposition, SUM(status) AS erledigt FROM supportapp_auftrag_check WHERE adresse = ' $kundenid ' GROUP BY auftragposition) x ON x.auftragposition = ap.id WHERE a.adresse = ' $kundenid ' AND a.status <> 'storniert' AND a.belegnr <> '' AND wag.aktiv = 1 AND was.aktiv = 1 GROUP BY ap.id " );
$checkboxen = " <table> " ;
$zeilen = 0 ;
$kopfzeilen = 0 ;
if ( ! is_null ( $gruppen )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $gruppen ) ? count ( $gruppen ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
if ( $gruppen [ $i ][ 'gesamt' ] > $gruppen [ $i ][ 'erledigt' ]){
$schritte = $this -> app -> DB -> SelectArr ( " SELECT ws.*, IF(wac.status=1,1,0) AS status FROM supportapp_schritte ws LEFT JOIN (SELECT * FROM supportapp_auftrag_check WHERE adresse = ' " . $kundenid . " ' AND auftragposition = ' " . $gruppen [ $i ][ 'auftragsposition' ] . " ') wac ON ws.id = wac.schritt WHERE ws.gruppe = ' " . $gruppen [ $i ][ 'id' ] . " ' AND ws.aktiv = '1' ORDER BY sort ASC " );
$checkboxen .= '<tr><td colspan="4"><b><u>' . $gruppen [ $i ][ 'auftrag' ] . " - " . $gruppen [ $i ][ 'bezeichnung' ] . '<u><b></td><tr>' ;
$kopfzeilen ++ ;
$checkboxen .= '<tr>' ;
2022-06-10 11:28:28 +02:00
for ( $j = 0 ; $j < ( ! empty ( $schritte ) ? count ( $schritte ) : 0 ); $j ++ ) {
2022-05-23 22:25:53 +02:00
if (( $j % 4 ) == 0 && $j != 0 ){
$checkboxen .= '</tr><tr>' ;
}
if (( $j % 4 ) == 0 || $j == 0 ){
$zeilen ++ ;
}
$cbname = 'gs_' . $gruppen [ $i ][ 'id' ] . '_' . $schritte [ $j ][ 'id' ] . '_' . $gruppen [ $i ][ 'auftragsposition' ];
$checkboxen .= '<td><input type="checkbox" name="' . $cbname . '" id="' . $cbname . '" onchange="changeschritt(\'' . $kundenid . '\',\'' . $cbname . '\');" ' . ( $schritte [ $j ][ 'status' ] == '1' ? 'checked' : '' ) . '></td><td colspan=2><label for="' . $cbname . '">' . $schritte [ $j ][ 'bezeichnung' ] . '</label></td>' ;
}
$checkboxen .= " </tr><tr> " ;
$checkboxen .= '</tr>' ;
}
}
}
$checkboxen .= " </table> " ;
$stundensumme = $this -> app -> DB -> Select ( " SELECT IFNULL(SUM(TIME_TO_SEC(TIMEDIFF(bis, von)))/3600,0) AS Dauer FROM zeiterfassung WHERE adresse_abrechnung = ' $kundenid ' AND MONTH(von) = MONTH(CURRENT_DATE) AND YEAR(von) = YEAR(CURRENT_DATE) " );
if ( $stundensumme == " " )
$stundensumme = 0 ;
$stundensumme = ( int ) $stundensumme . " : " . round ( fmod ( $stundensumme , 1 ) * 60 );
$stundensummejahr = $this -> app -> DB -> Select ( " SELECT IFNULL(SUM(TIME_TO_SEC(TIMEDIFF(bis, von)))/3600,0) AS Dauer FROM zeiterfassung WHERE adresse_abrechnung = ' $kundenid ' AND YEAR(von) = YEAR(CURRENT_DATE) " );
if ( $stundensummejahr == " " )
$stundensummejahr = 0 ;
$stundensummejahr = ( int ) $stundensummejahr . " : " . round ( fmod ( $stundensummejahr , 1 ) * 60 );
$timestamp = strtotime ( date ( " Y-m-d " ));
$resttagemonat = ( int ) date ( 't' , $timestamp ) - ( int ) date ( 'j' , $timestamp );
$this -> supportappMenuNormal ( $kundenid );
$vorlagenarray = $this -> app -> DB -> SelectArr ( " SELECT * FROM supportapp_vorlagen " );
$vorlagen = " " ;
if ( ! is_null ( $vorlagenarray )) {
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $vorlagenarray ) ? count ( $vorlagenarray ) : 0 ); $i ++ ) {
2022-05-23 22:25:53 +02:00
$vorlagen .= '<option value="' . $vorlagenarray [ $i ][ 'id' ] . '">' . $vorlagenarray [ $i ][ 'bezeichnung' ] . '</option>' ;
}
}
if ( $telefonsupport == '' ){
$this -> app -> Tpl -> Set ( " TELEFON " , " telefonsupport_grey.png " );
$this -> app -> Tpl -> Set ( " TELEFONTITLE " , " Kein Telefonsupport " );
} else {
$this -> app -> Tpl -> Set ( " TELEFON " , " telefonsupport_go.png " );
$this -> app -> Tpl -> Set ( " TELEFONTITLE " , " Telefonsupport vorhanden " );
}
if ( $techniksupport == '' ){
$this -> app -> Tpl -> Set ( " TECHNIK " , " technikersupport_grey.png " );
$this -> app -> Tpl -> Set ( " TECHNIKTITLE " , " Kein Technikersupport " );
} else {
$this -> app -> Tpl -> Set ( " TECHNIK " , " technikersupport_go.png " );
$this -> app -> Tpl -> Set ( " TECHNIKTITLE " , " Technikersupport vorhanden " );
}
if ( $rechnungenbezahlt == '' ){
$this -> app -> Tpl -> Set ( " GELD " , " bezahlsupport_grey.png " );
$this -> app -> Tpl -> Set ( " GELDTITLE " , " Kein Bezahlsupport " );
} else {
$this -> app -> Tpl -> Set ( " GELD " , " bezahlsupport_go.png " );
$this -> app -> Tpl -> Set ( " GELDTITLE " , " Bezahlsupport vorhanden " );
}
if ( $pluspaketamlaufen > 0 ){
$this -> app -> Tpl -> Set ( " PLUS " , " pluspaket_go.png " );
$this -> app -> Tpl -> Set ( " PLUSTITLE " , " Pluspaket vorhanden " );
} else {
$this -> app -> Tpl -> Set ( " PLUS " , " pluspaket_grey.png " );
$this -> app -> Tpl -> Set ( " PLUSTITLE " , " Kein Pluspaket " );
}
if ( $supportvertrag > 0 || $supportvertrag2 > 0 ){
$this -> app -> Tpl -> Set ( " VERTRAG " , " vertrag_go.png " );
$this -> app -> Tpl -> Set ( " VERTRAGTITLE " , " Supportvertrag vorhanden " );
} else {
$this -> app -> Tpl -> Set ( " VERTRAG " , " vertrag_grey.png " );
$this -> app -> Tpl -> Set ( " VERTRAGTITLE " , " Kein Supportvertrag " );
}
$this -> app -> YUI -> AutoComplete ( " kunde " , " kunde " );
if ( $kundenid != '' ){
$this -> app -> Tpl -> Set ( " ADRESSID " , $kundenid );
} else {
$this -> app -> Tpl -> Set ( 'ELEMENTESICHTBAR' , " display:none; " );
}
$this -> app -> YUI -> AutoComplete ( " bearbeiter " , " mitarbeiter " );
$bearbeiteradresse = $this -> app -> User -> GetAdresse ();
$bearbeitertext = $this -> app -> DB -> Select ( " SELECT CONCAT (mitarbeiternummer, ' ', name) FROM adresse WHERE id = $bearbeiteradresse LIMIT 1 " );
$this -> app -> Tpl -> Set ( " BEARBEITER " , $bearbeitertext );
$this -> app -> Tpl -> Set ( " KUNDE " , $kundennr . " " . $kundenname );
$this -> app -> Tpl -> Set ( " NAMEDUSER " , $nameduser );
$this -> app -> Tpl -> Set ( " VERSION " , " TODO " );
if ( $sperrvermerk != '' ){
$this -> app -> Tpl -> Set ( " SPERRWARNUNG " , " background-color: red;border: 0px solid red;border-top: 25px solid red; " );
$this -> app -> Tpl -> Set ( " SPERRVERMERK " , " <td>Sperrvermerk: </td><td colspan= \" 3 \" > " . $sperrvermerk . " </td> " );
}
//$this->app->Tpl->Set("UPDATES", $updates);
$this -> app -> Tpl -> Set ( " MODULELISTE " , $module );
$this -> app -> Tpl -> Set ( " BELEGE " , $belege );
$this -> app -> Tpl -> Set ( " PAKETE " , $pakete );
$this -> app -> Tpl -> Set ( " EINRICHTUNG " , $einrichtung );
$this -> app -> Tpl -> Set ( " LOGBUCH " , $logbuch );
$this -> app -> Tpl -> Set ( " STARTSTOPVORLAGE " , $vorlagen );
$this -> app -> Tpl -> Set ( " NOTIZEN " , $sonstiges );
$hoehe = $zeilen * 2.5 ;
$hoehe += $kopfzeilen * 1.8 ;
$hoehe += 1 ;
if ( $hoehe == 0 ){
$this -> app -> Tpl -> Set ( " PLUSPAKETATTRIBUT " , 'display:none;' );
} else {
$this -> app -> Tpl -> Set ( " PLUSPAKETATTRIBUT " , 'height:' . ( $hoehe > 1 ? $hoehe : '1' ) . 'em' );
}
$this -> app -> Tpl -> Set ( " RESTTAGEMONAT " , $resttagemonat );
$this -> app -> Tpl -> Set ( " STUNDENSUMME " , $stundensumme );
$this -> app -> Tpl -> Set ( " STUNDENSUMMEJAHR " , $stundensummejahr );
$this -> app -> Tpl -> Set ( " CHECKBOXEN " , $checkboxen );
$startstop = unserialize ( $this -> app -> User -> GetParameter ( " supportapp_startstop " ));
if ( $startstop [ $kundenid ][ 'status' ] == 1 ){
$startstopzeit = $startstop [ $kundenid ][ 'zeit' ];
$sekunden = strtotime ( date ( " Y-m-d H:i:s " )) - date_create_from_format ( 'd.m.Y H:i' , $startstopzeit ) -> getTimestamp ();
$this -> app -> Tpl -> Set ( " STARTSTOPTEXT " , " Zeiterfassung läuft " );
$this -> app -> Tpl -> Set ( " STARTSTOPSTATUS " , '1' );
$this -> app -> Tpl -> Set ( 'STARTSTOPFARBE' , '#E73028' );
$this -> app -> Tpl -> Set ( " STARTSTOPSEKUNDEN " , $sekunden );
} else {
$this -> app -> Tpl -> Set ( " STARTSTOPTEXT " , " Zeiterfassung starten " );
$this -> app -> Tpl -> Set ( " STARTSTOPSTATUS " , '0' );
$this -> app -> Tpl -> Set ( 'STARTSTOPFARBE' , '#A2D624' );
$this -> app -> Tpl -> Set ( " STARTSTOPSEKUNDEN " , '0' );
}
$this -> app -> YUI -> AutoComplete ( " startstopmitarbeiter " , " mitarbeiter " );
$this -> app -> YUI -> AutoComplete ( " startstopprojekt " , " projektname " );
//$this->app->YUI->CkEditor("nachricht","all",array('height'=>'11em', 'width'=>'100%'));
$this -> app -> YUI -> CkEditor ( " nachricht " , " all " , array ( 'height' => '10em' , 'width' => '100%' ));
$this -> app -> YUI -> CkEditor ( " notizen " , " minimal " , array ( 'height' => '11em' , 'width' => '100%' ));
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'supportapp_zeiterfassung' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( " PAGE " , " supportapp_auftrag.tpl " );
}
function supportappSchritte ()
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ) {
case 'schrittegetfuergruppe' :
$gruppe = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'gruppe' ));
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$gruppenid = $this -> app -> DB -> Select ( " SELECT id FROM supportapp_gruppen WHERE bezeichnung = ' $gruppe ' LIMIT 1 " );
$vorgaenger = $this -> app -> DB -> SelectArr ( " SELECT id, bezeichnung FROM supportapp_schritte WHERE gruppe=' $gruppenid ' AND id <>' $id ' AND aktiv = 1 " );
echo json_encode ( $vorgaenger );
exit ;
break ;
case 'schritteget' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$result = $this -> app -> DB -> SelectArr ( " SELECT ws.id AS id, ws.bezeichnung AS bezeichnung, ws.beschreibung AS beschreibung, wg.bezeichnung AS gruppe, ws.aktiv AS aktiv, ws.sort AS sort, ws.filter AS filter, wg.id AS gruppenid, ws.vorgaenger AS vorgaenger FROM supportapp_schritte ws JOIN supportapp_gruppen wg ON ws.gruppe = wg.id WHERE ws.id = ' $id ' " );
$result = reset ( $result );
$vorgaenger = $this -> app -> DB -> SelectArr ( " SELECT id, bezeichnung FROM supportapp_schritte WHERE gruppe= " . $result [ 'gruppenid' ] . " AND id <>' $id ' AND aktiv = 1 " );
$result [ 'vorgaengerauflistung' ] = $vorgaenger ;
echo json_encode ( $result );
exit ;
break ;
case 'schritteneuedit' :
$id = $this -> app -> Secure -> GetPOST ( 'id' );
$bezeichnung = $this -> app -> Secure -> GetPOST ( 'bezeichnung' );
$beschreibung = $this -> app -> Secure -> GetPOST ( 'beschreibung' );
$gruppe = $this -> app -> Secure -> GetPOST ( 'gruppe' );
$reihenfolge = $this -> app -> Secure -> GetPOST ( 'reihenfolge' );
$aktiv = $this -> app -> Secure -> GetPOST ( 'aktiv' );
$filter = $this -> app -> Secure -> GetPOST ( 'filter' );
$vorgaenger = $this -> app -> Secure -> GetPOST ( 'vorgaenger' );
if ( ! is_numeric ( $reihenfolge )){
$reihenfolge = 0 ;
}
$gruppenid = $this -> app -> DB -> Select ( " SELECT id FROM supportapp_gruppen WHERE bezeichnung = ' $gruppe ' " );
if ( $gruppenid != 0 ){
if ( $id == '0' ){
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_schritte (bezeichnung, beschreibung, gruppe, sort, aktiv, filter, vorgaenger) VALUES (' $bezeichnung ',' $beschreibung ', ' $gruppenid ', ' $reihenfolge ', ' $aktiv ', ' $filter ', ' $vorgaenger ') " );
} else {
$this -> app -> DB -> Update ( " UPDATE supportapp_schritte SET bezeichnung = ' $bezeichnung ', beschreibung = ' $beschreibung ', gruppe = ' $gruppenid ', sort = ' $reihenfolge ', aktiv = ' $aktiv ', filter = ' $filter ', vorgaenger = ' $vorgaenger ' WHERE id = $id " );
}
} else {
echo json_encode ( " Gruppe konnte nicht gefunden werden. " );
exit ;
}
echo json_encode ( " success " );
exit ;
case 'schrittedelete' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$this -> app -> DB -> Delete ( " DELETE FROM supportapp_schritte WHERE id = ' $id ' " );
echo json_encode ( 'success' );
exit ;
break ;
case 'gruppeget' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$result = $this -> app -> DB -> SelectArr ( " SELECT * FROM supportapp_gruppen WHERE id = ' $id ' " );
$result = reset ( $result );
$artikel = $this -> app -> DB -> SelectArr ( " SELECT nummer, name_de FROM artikel WHERE id = ' " . $result [ 'artikel' ] . " ' " );
$artikel = reset ( $artikel );
$result [ 'artikel' ] = $artikel [ 'nummer' ] . " " . $artikel [ 'name_de' ];
echo json_encode ( $result );
exit ;
break ;
case 'gruppenneuedit' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'id' ));
$aktiv = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'aktiv' ));
$bezeichnung = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'bezeichnung' ));
$artikel = explode ( " " , $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetPOST ( 'artikel' )));
$artikelid = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer = ' " . $artikel [ 0 ] . " ' " );
if ( $id == '0' ){
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_gruppen (bezeichnung, aktiv,artikel) VALUES (' $bezeichnung ', ' $aktiv ', ' $artikelid ') " );
} else {
$this -> app -> DB -> Update ( " UPDATE supportapp_gruppen SET bezeichnung = ' $bezeichnung ', aktiv = ' $aktiv ', artikel = ' $artikelid ' WHERE id = ' $id ' " );
}
echo json_encode ( " success " );
exit ;
case 'gruppedelete' :
$id = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'id' ));
$this -> app -> DB -> Delete ( " DELETE FROM supportapp_schritte WHERE gruppe = ' $id ' " );
$this -> app -> DB -> Delete ( " DELETE FROM supportapp_gruppen WHERE id = ' $id ' " );
echo json_encode ( 'success' );
exit ;
break ;
break ;
default :
break ;
}
$this -> supportappMenuNormal ();
$this -> app -> erp -> Headlines ( '' , 'Schritte' );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'supportapp_schritte' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> YUI -> TableSearch ( 'TAB2' , 'supportapp_gruppen' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> YUI -> CkEditor ( " beschreibung " , " all " , array ( 'height' => '100px' , 'width' => '545px' ));
$this -> app -> YUI -> AutoComplete ( " gruppe " , " supportapp_gruppen " );
$this -> app -> YUI -> AutoComplete ( " gruppeartikel " , " artikelnummer " );
$this -> app -> Tpl -> Parse ( " PAGE " , " supportapp_schritte.tpl " );
}
function supportappKunden ()
{
$this -> supportappMenuNormal ();
$this -> app -> erp -> Headlines ( '' , 'Kunden' );
$this -> app -> YUI -> TableSearch ( 'TAB1' , 'supportapp_kunden' , " show " , " " , " " , basename ( __FILE__ ), __CLASS__ );
$this -> app -> Tpl -> Parse ( " PAGE " , " supportapp_kunden.tpl " );
}
function supportappMiniDetail ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( " id " );
$adresse = $this -> app -> DB -> Select ( " SELECT adresse FROM supportapp WHERE id=' $id ' LIMIT 1 " );
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT DATE_FORMAT(z.bis, GET_FORMAT(DATE,'EUR')) AS Datum,
z . aufgabe as Taetigkeit ,
TIME_FORMAT ( TIMEDIFF ( z . bis , z . von ), '%H:%i' ) AS Dauer ,
a . name as mitarbeiter
FROM zeiterfassung z LEFT JOIN projekt p ON p . id = z . projekt LEFT JOIN arbeitspaket ap ON z . arbeitspaket = ap . id LEFT JOIN adresse a ON z . adresse = a . id
WHERE z . adresse_abrechnung = " . $adresse . "
ORDER BY z . id DESC LIMIT 100
" ,0, " " );
$table -> DisplayNew ( 'LETZTEBUCHUNGEN' , " Mitarbeiter " , " noAction " );
$adr = $this -> app -> DB -> SelectArr ( " select *, DATE_FORMAT(mandatsreferenzdatum, '%e.%m.%Y') AS mandatsreferenzdatumd from adresse where id = " . $adresse . " limit 1 " );
if ( $adr )
{
$adr = reset ( $adr );
$this -> app -> Tpl -> Set ( 'EMAIL' , $adr [ 'email' ]);
$this -> app -> Tpl -> Set ( 'MOBIL' , $adr [ 'mobil' ]);
$this -> app -> Tpl -> Set ( 'TELEFAX' , $adr [ 'telefax' ]);
$this -> app -> Tpl -> Set ( 'TELEFON' , $adr [ 'telefon' ]);
$this -> app -> Tpl -> Set ( 'ORT' , $adr [ 'ort' ]);
$this -> app -> Tpl -> Set ( 'LAND' , $adr [ 'land' ]);
$this -> app -> Tpl -> Set ( 'PLZ' , $adr [ 'plz' ]);
$this -> app -> Tpl -> Set ( 'STRASSE' , $adr [ 'strasse' ]);
$this -> app -> Tpl -> Set ( 'ANSPRECHPARTNERNAME' , $adr [ 'ansprechpartner' ]);
}
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT a.name, a.bereich, a.email, a.telefon, a.mobil FROM ansprechpartner a WHERE adresse=' $adresse ' AND a.name!='Neuer Datensatz' ORDER by id DESC " , 0 , " " );
$table -> DisplayNew ( 'ANSPRECHPARTNER' , " Mobil " , " noAction " );
$table = new EasyTable ( $this -> app );
$table -> Query ( " SELECT DATE_FORMAT(a.datum,'%d.%m.%Y') as datum,a.belegnr as auftrag, ap.nummer as 'Artikel-Nr.',CONCAT('<b>',ap.bezeichnung,'</b><br>',REPLACE(ap.beschreibung,' \r \n ','<br>')) as bezeichnung, ap.menge FROM auftrag a LEFT JOIN auftrag_position ap ON ap.auftrag=a.id WHERE a.adresse=' $adresse ' ORDER by ap.id DESC " , 0 , " " );
$table -> DisplayNew ( 'ARTIKEL' , " Menge " , " noAction " , false , 0 , 0 , false );
$this -> app -> Tpl -> Output ( " supportapp_minidetail.tpl " );
exit ;
}
function supportappCreate ()
{
//Veraltet, kann raus
$this -> supportappMenu ();
$this -> app -> erp -> Headlines ( '' , 'Anlegen' );
parent :: supportappCreate ();
}
function supportappEdit ()
{
$id = ( int ) $this -> app -> Secure -> GetGET ( " id " );
$adresse = $this -> app -> DB -> Select ( " SELECT adresse FROM supportapp WHERE id = ' $id ' LIMIT 1 " );
$this -> app -> erp -> Headlines ( '' , 'Bearbeiten' , $this -> app -> DB -> Select ( " SELECT concat('<a href= \" index.php?module=adresse&action=edit&id=',id,' \" >',kundennummer,' ',name,'</a>') FROM adresse WHERE id = ' $adresse ' LIMIT 1 " ));
$this -> app -> erp -> MenuEintrag ( " index.php?module=supportapp&action=edit&id= $id " , " Details " );
$this -> supportappMenu ();
parent :: supportappEdit ();
}
function supportapplogbucheintrag ( $adresse , $bearbeiter , $details ){
$this -> app -> DB -> Insert ( " INSERT INTO supportapp_log (logdatei, adresse, bearbeiter, details) VALUES (NOW(), ' $adresse ', ' $bearbeiter ', ' $details ') " );
}
}