diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php index d570a0e0..34a867f9 100644 --- a/www/lib/class.erpapi.php +++ b/www/lib/class.erpapi.php @@ -6758,7 +6758,9 @@ title: 'Abschicken', reset($ISO10646XHTMLTrans); - while(list($UnicodeChar, $XHTMLEquiv) = each($ISO10646XHTMLTrans)) { +// while(list($UnicodeChar, $XHTMLEquiv) = each($ISO10646XHTMLTrans)) { + foreach($ISO10646XHTMLTrans as $UniccideChar => $XHTMLEquiv) + { $content = str_replace($UnicodeChar, $XHTMLEquiv, $content); } diff --git a/www/pages/supportapp.php b/www/pages/supportapp.php index 5b3885f4..8b34c39e 100644 --- a/www/pages/supportapp.php +++ b/www/pages/supportapp.php @@ -1,1467 +1,1515 @@ - -'; - $menu .= ''; - $menu .= ''; - $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteartikel(%value%);\">"; - $menu .= ""; - $menu .= ""; - $menu .= ""; - - $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 = ''; - $menu .= ''; - $menu .= '"; - $menu .= ""; - $menu .= "
'; - $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" /> "; - $menu .= "
"; - $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('',date_format(re2.datum,'%d.%m.%Y'),''),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 (".implode(',', $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 (".implode(',', $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 = ''; - $menu .= ''; - $menu .= '"; - $menu .= ""; - $menu .= "
'; - $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(%value%);\"> "; - $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteeintrag(%value%);\">"; - $menu .= "
"; - - $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 = ''; - $menu .= ''; - $menu .= '"; - $menu .= ""; - $menu .= "
'; - $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"gruppenneuedit(%value%);\"> "; - $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"gruppendeleteeintrag(%value%);\">"; - $menu .= "
"; - - $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', '
'), 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 = ''; - //$menu .= ''; - //$menu .= '"; - //$menu .= ""; - //$menu .= "
'; - //$menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> "; - $menu = "
Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
"; - //$menu .= "
"; - - $trcol = 5; - - $artikektelefonarr = array(0); - $artikektechnikerarr = array(0); - $artikekenterprisearr = array(0); - $artikeltmp = $app->DB->SelectArr("SELECT * FROM supportapp_artikel"); - for ($i=0; $i < count($artikeltmp); $i++) { - 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('
', - ' 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'),'\"> ', - ' 0,'Technikersupport vorhanden', 'Kein Technikersupport'),'\" src=\"themes/new/images/', IF(IFNULL(techniker.adresse,0) > 0, 'technikersupport_gruen_kl.png', 'technikersupport_grey_kl.png'),'\"> ', - ' '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'),'\"> ', - ' 0,'Pluspaket vorhanden', 'Kein Pluspaket'),'\" src=\"themes/new/images/',IF(IFNULL(plus.adresse,0) > 0, 'pluspaket_gruen_kl.png', 'pluspaket_grey_kl.png'),'\"> ', - ' 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'),'\"> ', - '
'), - 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 = ""; - - $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(count($filterschritte) > 0){ - for ($i=4; $i < count($filterschritte)+4; $i++) { - $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]; - } - } - if(count($aktivefilterschritte) > 0 ){ - $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"; - $where .= "AND wac.sumx < wac.countx AND wac.countx>=".count($aktivefilterschritte); - } - - $sql = "SELECT SQL_CALC_FOUND_ROWS w.id, '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('
Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(',w.id,')\"> Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') 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 = ''; - $menu .= ''; - $menu .= '"; - $menu .= ""; - $menu .= "
'; - $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(%value%);\"> "; - $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteeintrag(%value%);\">"; - $menu .= "
"; - - $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; - $kundenzahl = count($kunden); - for ($h=0; $h < count($kunden); $h++) { - $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"); - for ($i=0; $i < count($gruppenzumhinzufuegen); $i++) { - $einzelschritte = $this->app->DB->SelectArr("SELECT * FROM supportapp_schritte WHERE aktiv = 1 AND gruppe = ".$gruppenzumhinzufuegen[$i]['gruppe']); - for ($j=0; $j < count($einzelschritte); $j++) { - $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", "
Es wurden $schrittzahl Schritte bei $kundenzahl Kunden hinzugefügt
"); - } - - $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($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(count($filterschritte) > 0){ - $filterinhalt = "
Einzelfilter"; - $filtergruppe_tmp = ""; - for ($i=0; $i < count($filterschritte); $i++) { - if($filtergruppe_tmp != $filterschritte[$i]['wgb']){ - $filterinhalt .= ''; - $filtergruppe_tmp = $filterschritte[$i]['wgb']; - } - $filterinhalt .= ''; - - $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 .= "
'.$filterschritte[$i]['wgb'].'
"; - } - - $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('','',''.$kundennr.' '.$kundenname.''); - } - } - - $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"); - for ($i=0; $i < count($artikeltmp); $i++) { - 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"); - for ($i=0; $i < count($gruppenzumhinzufuegen); $i++) { - $einzelschritte = $this->app->DB->Select("SELECT * FROM supportapp_schritte WHERE aktiv = 1 AND gruppe = ".$gruppenzumhinzufuegen[$i]['gruppe']); - for ($j=0; $j < count($einzelschritte); $j++) { - $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 = ''.$revision.''; - $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','
Kundenspezifische Modifikationen vorhanden!
'); - - $module_custom = json_decode($updatedaten['module_custom']); - foreach($module_custom as $datei => $arr) - { - if(strpos($datei,'/download/') !== 0) - { - $this->app->Tpl->Add('UEBERLADENLISTE','
'.$datei.''); - - //foreach($arr as $fkey => $arr2) - // { - // $this->app->Tpl->Add('UEBERLADENLISTE','
'."\r\n...\r\n");
-           //   foreach($arr2 as $v)$this->app->Tpl->Add('UEBERLADENLISTE',$v);
-           //   $this->app->Tpl->Add('UEBERLADENLISTE',"\r\n...\r\n".'


'); - //} - $this->app->Tpl->Add('UEBERLADENLISTE','
'); - } - } - - } - }*/ - //$this->app->Tpl->Add('MODULEUPDATE'); - - - $updates =' - - - - - - - '; - $updates .= ' - - - - - - - '; - $updates .= '
DatumUpdateInfo 1Info 2Info 3
dummydummyInfo 1Info 2Info 3
'; - - $module =' - - - - - - - - '; - $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'"); - for ($i=0; $i < count($modules); $i++) { - $module .= ' - - - - - - - - '; - } - $module .= '
DatumNummerNameMengePreisRabatt
'.$modules[$i]['datum'].''.$modules[$i]['nummer'].''.$modules[$i]['bezeichnung'].''.$modules[$i]['menge'].''.$modules[$i]['preis'].''.$modules[$i]['rabatt'].'
'; - - $belege =' - - - - - - - - '; - $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('') 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('') AS pdf FROM auftrag a LEFT JOIN auftrag_position ap ON a.id = ap.auftrag WHERE adresse = '$kundenid' GROUP BY a.id"); - for ($i=0; $i < count($beleges); $i++) { - $belege .= ' - - - - - - - - '; - } - $belege .= '
ArtBelegDatumSummeStatus
'.$beleges[$i]['art'].''.$beleges[$i]['belegnr'].''.$beleges[$i]['datum'].''.$beleges[$i]['summe'].''.$beleges[$i]['status'].'
'.$beleges[$i]['pdf'].'
'; - - $logbuch =' - - - - - '; - $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"); - - for ($i=0; $i < count($logbuchs); $i++) { - $logbuch .= ' - - - - - '; - } - $logbuch .= '
DatumBearbeiterDetails
'.date_format(date_create($logbuchs[$i]['logdatei']), 'H:i d.m.y').''.$logbuchs[$i]['name'].''.$logbuchs[$i]['details'].'
'; - - $einrichtung =' - - - - - '; - $einrichtungs = $this->app->DB->SelectArr("SELECT status, DATE_FORMAT(startdatum,'%d.%m.%Y') AS startdatum ,bemerkung FROM supportapp WHERE adresse='$kundenid' ORDER BY startdatum"); - for ($i=0; $i < count($einrichtungs); $i++) { - $einrichtung .= ' - - - - - '; - } - $einrichtung .= '
StatusStartdatumBemerkung
'.$einrichtungs[$i]['status'].''.$einrichtungs[$i]['startdatum'].''.$einrichtungs[$i]['bemerkung'].'
'; - - - $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 = ""; - $zeilen = 0; - $kopfzeilen = 0; - for ($i=0; $i < count($gruppen); $i++) { - 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 .= ''; - $kopfzeilen++; - $checkboxen .= ''; - for ($j=0; $j < count($schritte); $j++) { - if(($j % 4) == 0 && $j != 0){ - $checkboxen .= ''; - } - if(($j % 4) == 0 || $j == 0){ - $zeilen++; - } - $cbname = 'gs_'.$gruppen[$i]['id'].'_'.$schritte[$j]['id'].'_'.$gruppen[$i]['auftragsposition']; - $checkboxen .= ''; - } - $checkboxen .=""; - $checkboxen .= ''; - } - } - $checkboxen .= "
'.$gruppen[$i]['auftrag']." - ".$gruppen[$i]['bezeichnung'].'
"; - - $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 = ""; - for ($i=0; $i < count($vorlagenarray); $i++) { - $vorlagen .= ''; - } - - - 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", "Sperrvermerk: ".$sperrvermerk.""); - } - - //$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 - "); - $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"); - $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('',ap.bezeichnung,'
',REPLACE(ap.beschreibung,'\r\n','
')) 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"); - $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('',kundennummer,' ',name,'') 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')"); - } - -} + +'; + $menu .= ''; + $menu .= ''; + $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteartikel(%value%);\">"; + $menu .= ""; + $menu .= ""; + $menu .= ""; + + $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 = ''; + $menu .= ''; + $menu .= '"; + $menu .= ""; + $menu .= "
'; + $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" /> "; + $menu .= "
"; + $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('',date_format(re2.datum,'%d.%m.%Y'),''),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 = ''; + $menu .= ''; + $menu .= '"; + $menu .= ""; + $menu .= "
'; + $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(%value%);\"> "; + $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteeintrag(%value%);\">"; + $menu .= "
"; + + $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 = ''; + $menu .= ''; + $menu .= '"; + $menu .= ""; + $menu .= "
'; + $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"gruppenneuedit(%value%);\"> "; + $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"gruppendeleteeintrag(%value%);\">"; + $menu .= "
"; + + $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', '
'), 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 = ''; + //$menu .= ''; + //$menu .= '"; + //$menu .= ""; + //$menu .= "
'; + //$menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> "; + $menu = "
Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
"; + //$menu .= "
"; + + $trcol = 5; + + $artikektelefonarr = array(0); + $artikektechnikerarr = array(0); + $artikekenterprisearr = array(0); + $artikeltmp = $app->DB->SelectArr("SELECT * FROM supportapp_artikel"); + + if (!is_null($artikeltmp)) { + for ($i=0; $i < count($artikeltmp); $i++) { + 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('
', + ' 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'),'\"> ', + ' 0,'Technikersupport vorhanden', 'Kein Technikersupport'),'\" src=\"themes/new/images/', IF(IFNULL(techniker.adresse,0) > 0, 'technikersupport_gruen_kl.png', 'technikersupport_grey_kl.png'),'\"> ', + ' '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'),'\"> ', + ' 0,'Pluspaket vorhanden', 'Kein Pluspaket'),'\" src=\"themes/new/images/',IF(IFNULL(plus.adresse,0) > 0, 'pluspaket_gruen_kl.png', 'pluspaket_grey_kl.png'),'\"> ', + ' 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'),'\"> ', + '
'), + 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 = ""; + + $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)) { + + if(count($filterschritte) > 0){ + for ($i=4; $i < count($filterschritte)+4; $i++) { + $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]; + } + } + if(count($aktivefilterschritte) > 0 ){ + $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"; + $where .= "AND wac.sumx < wac.countx AND wac.countx>=".count($aktivefilterschritte); + } + + $sql = "SELECT SQL_CALC_FOUND_ROWS w.id, '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('
Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(',w.id,')\"> Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') 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 = ''; + $menu .= ''; + $menu .= '"; + $menu .= ""; + $menu .= "
'; + $menu .= "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(%value%);\"> "; + $menu .= "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteeintrag(%value%);\">"; + $menu .= "
"; + + $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; + $kundenzahl = count($kunden); + for ($h=0; $h < count($kunden); $h++) { + $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"); + for ($i=0; $i < count($gruppenzumhinzufuegen); $i++) { + $einzelschritte = $this->app->DB->SelectArr("SELECT * FROM supportapp_schritte WHERE aktiv = 1 AND gruppe = ".$gruppenzumhinzufuegen[$i]['gruppe']); + for ($j=0; $j < count($einzelschritte); $j++) { + $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", "
Es wurden $schrittzahl Schritte bei $kundenzahl Kunden hinzugefügt
"); + } + + $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)) { + + if(count($filterschritte) > 0){ + $filterinhalt = "
Einzelfilter"; + $filtergruppe_tmp = ""; + for ($i=0; $i < count($filterschritte); $i++) { + if($filtergruppe_tmp != $filterschritte[$i]['wgb']){ + $filterinhalt .= ''; + $filtergruppe_tmp = $filterschritte[$i]['wgb']; + } + $filterinhalt .= ''; + + $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 .= "
'.$filterschritte[$i]['wgb'].'
"; + } + } + + $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('','',''.$kundennr.' '.$kundenname.''); + } + } + + $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)) { + + for ($i=0; $i < count($artikeltmp); $i++) { + 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)) { + + for ($i=0; $i < count($gruppenzumhinzufuegen); $i++) { + $einzelschritte = $this->app->DB->Select("SELECT * FROM supportapp_schritte WHERE aktiv = 1 AND gruppe = ".$gruppenzumhinzufuegen[$i]['gruppe']); + for ($j=0; $j < count($einzelschritte); $j++) { + $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 = ''.$revision.''; + $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','
Kundenspezifische Modifikationen vorhanden!
'); + + $module_custom = json_decode($updatedaten['module_custom']); + foreach($module_custom as $datei => $arr) + { + if(strpos($datei,'/download/') !== 0) + { + $this->app->Tpl->Add('UEBERLADENLISTE','
'.$datei.''); + + //foreach($arr as $fkey => $arr2) + // { + // $this->app->Tpl->Add('UEBERLADENLISTE','
'."\r\n...\r\n");
+           //   foreach($arr2 as $v)$this->app->Tpl->Add('UEBERLADENLISTE',$v);
+           //   $this->app->Tpl->Add('UEBERLADENLISTE',"\r\n...\r\n".'


'); + //} + $this->app->Tpl->Add('UEBERLADENLISTE','
'); + } + } + + } + }*/ + //$this->app->Tpl->Add('MODULEUPDATE'); + + + $updates =' + + + + + + + '; + $updates .= ' + + + + + + + '; + $updates .= '
DatumUpdateInfo 1Info 2Info 3
dummydummyInfo 1Info 2Info 3
'; + + $module =' + + + + + + + + '; + $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)) { + + for ($i=0; $i < count($modules); $i++) { + $module .= ' + + + + + + + + '; + } + } + + $module .= '
DatumNummerNameMengePreisRabatt
'.$modules[$i]['datum'].''.$modules[$i]['nummer'].''.$modules[$i]['bezeichnung'].''.$modules[$i]['menge'].''.$modules[$i]['preis'].''.$modules[$i]['rabatt'].'
'; + + $belege =' + + + + + + + + '; + $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('') 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('') 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)) { + + for ($i=0; $i < count($beleges); $i++) { + $belege .= ' + + + + + + + + '; + } + } + + $belege .= '
ArtBelegDatumSummeStatus
'.$beleges[$i]['art'].''.$beleges[$i]['belegnr'].''.$beleges[$i]['datum'].''.$beleges[$i]['summe'].''.$beleges[$i]['status'].'
'.$beleges[$i]['pdf'].'
'; + + $logbuch =' + + + + + '; + $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)) { + + for ($i=0; $i < count($logbuchs); $i++) { + $logbuch .= ' + + + + + '; + } + } + + $logbuch .= '
DatumBearbeiterDetails
'.date_format(date_create($logbuchs[$i]['logdatei']), 'H:i d.m.y').''.$logbuchs[$i]['name'].''.$logbuchs[$i]['details'].'
'; + + $einrichtung =' + + + + + '; + $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)) { + + for ($i=0; $i < count($einrichtungs); $i++) { + $einrichtung .= ' + + + + + '; + } + } + + $einrichtung .= '
StatusStartdatumBemerkung
'.$einrichtungs[$i]['status'].''.$einrichtungs[$i]['startdatum'].''.$einrichtungs[$i]['bemerkung'].'
'; + + $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 = ""; + $zeilen = 0; + $kopfzeilen = 0; + + if (!is_null($gruppen)) { + + for ($i=0; $i < count($gruppen); $i++) { + 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 .= ''; + $kopfzeilen++; + $checkboxen .= ''; + for ($j=0; $j < count($schritte); $j++) { + if(($j % 4) == 0 && $j != 0){ + $checkboxen .= ''; + } + if(($j % 4) == 0 || $j == 0){ + $zeilen++; + } + $cbname = 'gs_'.$gruppen[$i]['id'].'_'.$schritte[$j]['id'].'_'.$gruppen[$i]['auftragsposition']; + $checkboxen .= ''; + } + $checkboxen .=""; + $checkboxen .= ''; + } + } + } + + + $checkboxen .= "
'.$gruppen[$i]['auftrag']." - ".$gruppen[$i]['bezeichnung'].'
"; + + $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)) { + + for ($i=0; $i < count($vorlagenarray); $i++) { + $vorlagen .= ''; + } + } + + 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", "Sperrvermerk: ".$sperrvermerk.""); + } + + //$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('',ap.bezeichnung,'
',REPLACE(ap.beschreibung,'\r\n','
')) 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('',kundennummer,' ',name,'') 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')"); + } + +}