app = $app; } function dateien_module_objekt_map($module) : string { $dateien_module_objekt_map_array = array( 'adresse' => 'adressen', 'ticket' => 'ticket_header' ); return (isset($dateien_module_objekt_map_array[$module]) ? $dateien_module_objekt_map_array[$module] : $module); } function PasswordCheck($passwordFieldID, $repassFieldID, $accountNameFieldID, $submitButtonID, $extra = ''){ $this->app->Tpl->Add('JQUERYREADY', " function checkPassword(){ var password = $('#$passwordFieldID').val(); var message = ''; if(password.length < 8) message += '{|Mindestens 8 Zeichen|}
'; $extra if('$accountNameFieldID' != '') if(password.includes($('#$accountNameFieldID').val())) message += 'Darf nicht den Benutzernamen enthalten
'; var equal = comparePasswords(); var secure = (message == '') && equal; setButtonActive(secure); if(message != ''){ setSemaphore(0); }else if( /[0-9]/.test(password) && /[A-Z]/.test(password) && /[a-z]/.test(password)){ setSemaphore(2); }else{ setSemaphore(1); } $('#passwordInfo').html(message); } function runCheck(){ checkPassword(); } function setSemaphore(level){ var colors = ['red', 'yellow', 'green']; $('#semaphore').prop('src', './themes/new/images/semaphore_' + colors[level] + '.png'); } function setButtonActive(active){ if('$submitButtonID' == '') return; var button = $('#$submitButtonID'); button.css('opacity', (active ? '1.0' : '0.5')); if(!active){ button.prop('disabled','disabled'); }else{ button.removeAttr('disabled'); } } function comparePasswords(){ if('$repassFieldID' == '') return true; var equal = $('#$passwordFieldID').val() == $('#$repassFieldID').val(); $('#repasswordInfo').html(equal ? '' : 'Passwörter stimmen nicht überein'); return equal; } var passwordField = $('#$passwordFieldID'); passwordField.css('display: inline-block'); passwordField.bind('input propertychange', runCheck); passwordField.parent().append(''); passwordField.parent().append('

'); if('$repassFieldID' != ''){ var repassField = $('#$repassFieldID'); repassField.parent().append('

'); repassField.bind('input propertychange', runCheck); } if('$accountNameFieldID' != ''){ $('#$accountNameFieldID').bind('input propertychange', runCheck); } runCheck(); "); } function BundeslaenderSelect($target, $landid, $bundeslandid, $valueland = '', $valuebundesland = '', $disabled = false) { $obj = $this->app->erp->LoadModul('bundesstaaten'); if($obj && method_exists($obj, 'BundeslaenderSelect')) return $obj->BundeslaenderSelect($target, $landid, $bundeslandid, $valueland, $valuebundesland, $disabled); } function Stroke($fieldstroke, $field) { return "if(" . $fieldstroke . ",CONCAT(''," . $field . ",'')," . $field . ")"; } function Redify($decisionField, $field){ return "if(" . $decisionField . ",CONCAT(''," . $field . ",'')," . $field . ")"; } function TagEditor($element = '', $optionen = null) { if(!$this->tageditorloaded) { $this->tageditorloaded = true; $this->app->Tpl->Add('SCRIPTJAVASCRIPT',''); $this->app->Tpl->Add('SCRIPTJAVASCRIPT',''); } if($element != '') $this->app->Tpl->Add('AUTOCOMPLETE',' $(\'#'.$element.'\').tagEditor(); '); if($optionen) { if(isset($optionen['width'])) { $this->app->Tpl->Add('YUICSS', ' input#'.$element.' + ul.tag-editor { width: '.$optionen['width'].(is_numeric($optionen['width'])?'px':'').'; } '); } } } function DateiPopup($target, $typ, $parameter, $optionen = null) { if($optionen) { if(isset($optionen['onopen']))$this->app->Tpl->Set('ONOPEN', $optionen['onopen']); if(isset($optionen['onclose']))$this->app->Tpl->Set('ONCLOSE', $optionen['onclose']); if(isset($optionen['frompopup'])) { $this->app->Tpl->Add('ONOPEN','$(\'#'.$optionen['frompopup'].'\').dialog(\'close\');'); $this->app->Tpl->Add('ONCLOSE','$(\'#'.$optionen['frompopup'].'\').dialog(\'open\');'); $this->app->Tpl->Set('FROMPOPUP', $optionen['frompopup']); } if(isset($optionen['afteropen']))$this->app->Tpl->Add($optionen['afteropen'],'updatefilecount();'); } $this->app->Tpl->Set('TYP', $typ); if(is_numeric($parameter)) { $this->app->Tpl->Set('VORTYPID1','//'); }else{ $this->app->Tpl->Set('VORTYPID2','//'); } $this->app->Tpl->Set('TYPID', $parameter); if(isset($optionen['openbuttontarget'])) { $this->app->Tpl->Set('VORDATEIENBUTTON', ''); $this->app->Tpl->Set($optionen['openbuttontarget'], '\'{|DATEIEN|}\': function() { opendateipopup(); },'); $this->app->Tpl->Set('ISPOPUPBUTTON','true'); }else $this->app->Tpl->Set('ISPOPUPBUTTON','false'); $this->app->Tpl->Parse($target, 'datei_neudirekt_popup_iframe.tpl'); } function ContentTooltip($template, $daten, $typ = 'html') { $tmpid = md5(microtime(true).mt_rand(0,1000)); $ret = "app->Conf->WFconf['defaulttheme']."/images/tooltip_grau.png\" />"; if($typ == 'html') { $ret .= "
'.$daten.'
"; }elseif($typ == 'url') { $ret .= "
"; } $ret .= ''; if($template == 'return')return $ret; $this->app->Tpl->Add($template, $ret); } function MassenbearbeitungsWidget($name,$typ = 'artikel',$parameter = null, $target = 'PAGE') { if($this->app->erp->RechteVorhanden('massenbearbeitung','edit')) { if(!class_exists('Massenbearbeitung')) { if(is_file(dirname(dirname(__DIR__)).'/www/pages/massenbearbeitung_custom.php')) { include_once(dirname(dirname(__DIR__)).'/www/pages/massenbearbeitung_custom.php'); if(class_exists('MassenbearbeitungCustom')) $obj = new MassenbearbeitungCustom($this->app,true); }elseif(is_file(dirname(dirname(__DIR__)).'/www/pages/massenbearbeitung.php')) { include_once(dirname(dirname(__DIR__)).'/www/pages/massenbearbeitung.php'); if(class_exists('Massenbearbeitung')) $obj = new Massenbearbeitung($this->app,true); } } if(isset($obj) && $obj) { if(method_exists($obj,'Widget')) $obj->Widget($name, $typ, $parameter, $target); } } } function SaveReally($formid = '') { if($formid) { $selector = '#'.$formid; }else{ $selector = 'form'; $formid = 'all'; } $this->app->Tpl->Add('JQUERYREADY',' var changed'.$formid.' = false; $(\''.$selector.' input[type="checkbox"]\').bind(\'change\',function(){ changed'.$formid.' = true; }); $(\''.$selector.' input[type="text"]\').bind(\'change\',function(){ changed'.$formid.' = true; }); $(\''.$selector.' input[type="radio"]\').bind(\'change\',function(){ changed'.$formid.' = true; }); $(\''.$selector.' input[type="textarea"]\').bind(\'change\',function(){ changed'.$formid.' = true; }); $(\''.$selector.' select\').bind(\'change\',function(){ changed'.$formid.' = true; }); $(\''.$selector.' input[type="submit"]\').bind(\'click\',function(){ changed'.$formid.' = false; }); $(\''.$selector.'\').bind(\'submit\',function(){ changed'.$formid.' = false; }); $(window).bind(\'beforeunload\', function(){ if(changed'.$formid.')return confirm(\'Sie haben die Daten geändert, wollen Sie diese Seite wirklich ohne speichern verlassen\'); });'); } function AddDialog($element, $template,$name = '', $target = 'PAGE', $optionen = null) { $weiter = 'SPEICHERN'; $afterclose = ''; $onweiter = '$(this).dialog(\'close\');'; $width = '90%'; $left = '5%'; if(!empty($optionen)) { if(isset($optionen['weiter']))$weiter = $optionen['weiter']; if(!empty($optionen['afterclose']))$weiter = $optionen['afterclose']; if(!empty($optionen['onweiter']))$onweiter = $optionen['onweiter']; if(isset($optionen['left']))$left = $optionen['left']; if(isset($optionen['width']))$width = $optionen['width']; } $this->app->Tpl->Add($target,'
'); if($template)$this->app->Tpl->Parse($target,$template); $this->app->Tpl->Add($target,'
'); $this->app->Tpl->Add('JQUERYREADY',' $(\'#'.$element.'\').dialog( { modal: true, autoOpen: false, minWidth: 1200, title:\''.$name.'\', buttons: { '); if($weiter) { $this->app->Tpl->Add('JQUERYREADY',' '.$weiter.': function() { '.$onweiter.' },'); } $this->app->Tpl->Add('JQUERYREADY',' ABBRECHEN: function() { $(this).dialog(\'close\'); } }, close: function(event, ui){ '.$afterclose.' } }); $(\'#'.$element.'\').on("dialogopen",function(){ '); if($width) { $this->app->Tpl->Add('JQUERYREADY', '$(\'#'.$element.'\').parent().css(\'width\',\''.$width.'\');'); } if($left) { $this->app->Tpl->Add('JQUERYREADY', '$(\'#'.$element.'\').parent().css(\'left\',\''.$left.'\');'); } $this->app->Tpl->Add('JQUERYREADY', ' }); '); } function AARLGEditable() { $module = $this->app->Secure->GetGET("module"); $table = $this->AARLGPositionenModule2Tabelle(); $id = $this->app->Secure->GetPOST("id", 'nohtml'); //ACHTUNG auftrag_positions tabelle id $tmp = explode('split', $id); $id = $tmp[0]; $column = $tmp[1]; $value = $this->app->Secure->GetPOST("value"); $cmd = $this->app->Secure->GetGET("cmd"); $column = $column - 1; $this->app->erp->RunHook('AARLGEditable', 5,$module, $id, $value, $cmd, $column); if ($module == "arbeitsnachweis") { switch ($column) { case 1: // ort $this->app->DB->Update("UPDATE $table SET ort='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ort FROM $table WHERE id='$id' LIMIT 1"); break; case 2: // Datum $value = $this->app->String->Convert($value, "%1.%2.%3", "%3-%2-%1"); $this->app->DB->Update("UPDATE $table SET datum='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT datum FROM $table WHERE id='$id' LIMIT 1"); $result = $this->app->String->Convert($result, "%3-%2-%1", "%1.%2.%3"); break; case 3: // von $this->app->DB->Update("UPDATE $table SET von='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT von FROM $table WHERE id='$id' LIMIT 1"); break; case 4: // bis $this->app->DB->Update("UPDATE $table SET bis='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT bis FROM $table WHERE id='$id' LIMIT 1"); break; case 5: //bezeichnung $this->app->DB->Update("UPDATE $table SET bezeichnung='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT bezeichnung FROM $table WHERE id='$id' LIMIT 1"); break; default:; } } else if ($module == "reisekosten") { switch ($column) { case 0: //Datum $value = $this->app->String->Convert($value, "%1.%2.%3", "%3-%2-%1"); $this->app->DB->Update("UPDATE $table SET datum='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT datum FROM $table WHERE id='$id' LIMIT 1"); $result = $this->app->String->Convert($result, "%3-%2-%1", "%1.%2.%3"); break; case 2: // Betrag $value = $this->app->erp->FromFormatZahlToDB($value); if(strpos($value,',')) { $value = str_replace(",", ".",str_replace('.','', $value)); }else{ $value = str_replace(",", ".", $value); } $this->app->DB->Update("UPDATE $table SET betrag='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->FormatPreis('betrag')." FROM $table WHERE id='$id' LIMIT 1"); break; case 6: // bezeichnung $this->app->DB->Update("UPDATE $table SET bezeichnung='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT bezeichnung FROM $table WHERE id='$id' LIMIT 1"); break; default:; } } else if ($module == "kalkulation") { switch ($column) { case 1: // bezeichnung $this->app->DB->Update("UPDATE $table SET bezeichnung='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT bezeichnung FROM $table WHERE id='$id' LIMIT 1"); break; case 2: // Menge $value = $this->app->erp->FromFormatZahlToDB($value); $value = str_replace(",", ".", $value); $this->app->DB->Update("UPDATE $table SET menge='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->app->erp->FormatMenge("menge")." FROM $table WHERE id='$id' LIMIT 1"); break; case 3: // Betrag $value = $this->app->erp->FromFormatZahlToDB($value); if(strpos($value,',')) { $value = str_replace(",", ".",str_replace('.','', $value)); }else{ $value = str_replace(",", ".", $value); } $this->app->DB->Update("UPDATE $table SET betrag='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->FormatPreis('betrag')." FROM $table WHERE id='$id' LIMIT 1"); break; default:; } } else if ($module == "inventur") { switch ($column) { case 0: //Bezeichnung $this->app->DB->Update("UPDATE $table SET bezeichnung='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT bezeichnung FROM $table WHERE id='$id' LIMIT 1"); break; case 2: // Nummer $this->app->DB->Update("UPDATE $table SET nummer='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT nummer FROM $table WHERE id='$id' LIMIT 1"); break; case 3: // Menge $value = $this->app->erp->FromFormatZahlToDB($value); if($value < 0 ) $value=1; $this->app->DB->Update("UPDATE $table SET menge='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->app->erp->FormatMenge("menge")." FROM $table WHERE id='$id' LIMIT 1"); break; case 4: // preis $value = $this->app->erp->FromFormatZahlToDB($value); if(strpos($value,',')) { $value = str_replace(",", ".",str_replace('.','', $value)); }else{ $value = str_replace(",", ".", $value); } $this->app->DB->Update("UPDATE $table SET preis='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->FormatPreis('preis')." FROM $table WHERE id='$id' LIMIT 1"); break; default:; } } else if ($module == "produktion") { } else { switch ($column) { case 3: // Datum $value = $this->app->String->Convert($value, "%1.%2.%3", "%3-%2-%1"); $this->app->DB->Update("UPDATE $table SET lieferdatum='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT lieferdatum FROM $table WHERE id='$id' LIMIT 1"); $result = $this->app->String->Convert($result, "%3-%2-%1", "%1.%2.%3"); break; case 4: // Menge $value = $this->app->erp->FromFormatZahlToDB($value); $value = str_replace(',', '.', $value); if($value < 0 ) { $value=1; } $value = $this->app->erp->PruefeMengeVPE($table, $id, $value); //if ($table === 'bestellung_position') { // schau was mindestmenge bei diesem lieferant ist //$tmpartikel = $this->app->DB->Select("SELECT artikel FROM $table WHERE id='$id' LIMIT 1"); //} $tmptable_value = $this->app->DB->Select( sprintf( 'SELECT `%s` FROM `%s` WHERE id = %d LIMIT 1', $module, $table, $id ) ); // bei stuecklisten auch unterpositionen anmelden $altemenge = $this->app->DB->Select( sprintf( 'SELECT menge FROM `%s` WHERE id=%d LIMIT 1', $table, $id ) ); $this->app->DB->Update( sprintf( "UPDATE `%s` SET menge=%f WHERE id=%d LIMIT 1", $table, (float)$value, $id ) ); $changed = $this->app->DB->affected_rows() > 0; $this->app->DB->Update( sprintf( 'UPDATE `%s` SET menge=menge * %f WHERE explodiert_parent=%d AND `%s` = %d', $table, ($value/$altemenge), $id, $module, $tmptable_value ) ); $changed = $changed || $this->app->DB->affected_rows() > 0; $result = $this->app->DB->Select( sprintf( 'SELECT %s FROM `%s` WHERE id = %d LIMIT 1', $this->app->erp->FormatMenge('menge'),$table, $id ) ); $changePrice = $this->app->erp->Firmendaten('position_quantity_change_price_update'); if($changed && $changePrice && in_array($module, array('auftrag','rechnung','gutschrift','angebot'))) { $tableArr = $this->app->DB->SelectRow( sprintf('SELECT * FROM `%s` WHERE id = %d LIMIT 1', $table, $id) ); $docArr = $this->app->DB->SelectRow( sprintf('SELECT * FROM `%s` WHERE id = %d LIMIT 1', $module, $tableArr[$module]) ); $waehrung = !empty($tableArr['waehrung'])?$tableArr['waehrung']:$docArr['waehrung']; if(empty($waehrung)) { $waehrung = 'EUR'; } if($module==='inventur'){ $newPrice = $this->app->erp->GetEinkaufspreis($tableArr['artikel'], $value, $docArr['adresse']); } else { if(method_exists($this->app->erp, 'GetVerkaufspreisMitWaehrung')) { $newPrice = $this->app->erp->GetVerkaufspreisMitWaehrung( $tableArr['artikel'], $value, $docArr['adresse'], $waehrung ); } else{ $newPrice = $this->app->erp->GetVerkaufspreis( $tableArr['artikel'], $value, $docArr['adresse'], $waehrung ); } } if(!empty($newPrice)) { $this->app->DB->Update( sprintf( 'UPDATE `%s` SET preis = %f WHERE id = %d LIMIT 1', $table, $newPrice, $id ) ); } } if(in_array($module, array('auftrag','rechnung','gutschrift'))) { $this->app->DB->Update( sprintf( 'UPDATE `%s` SET extsoll = 0 WHERE id = %d LIMIT 1', $module, $tmptable_value ) ); } // Menge im Lager reserviert anpassen break; case 5: //preis $value = $this->app->erp->FromFormatZahlToDB($value); if(strpos($value,',')) { $value = str_replace(",", ".",str_replace('.','', $value)); }else{ $value = str_replace(",", ".", $value); } $join = ""; $preiscell = 'b.preis'; if($module == 'auftrag' || $module == 'rechnung' || $module == 'gutschrift' || $module == 'angebot' || $module == 'proformarechnung') { $parent = $this->app->DB->Select("SELECT $module FROM $table WHERE id='$id' LIMIT 1"); $anrede = $this->app->DB->Select("SELECT typ FROM $module WHERE id = '$parent' LIMIT 1"); $projekt = $this->app->DB->Select("SELECT projekt FROM $module WHERE id = '$parent' LIMIT 1"); $adresse = $this->app->DB->Select("SELECT adresse FROM $module WHERE id = '$parent' LIMIT 1"); $funktion = ucfirst($module).'MitUmsatzeuer'; $anrede = 'firma'; if(!$this->app->erp->AnzeigeBelegNettoAdresse($anrede, $module, $projekt, $adresse,$parent) && $this->app->erp->$funktion($parent)) { $steuersatz = $this->app->erp->GetSteuersatzBelegpos($module, $parent, $id); $value = $value / (1+(float)$steuersatz / 100); $umsatzsteuer_ermaessigt = (float)$this->app->DB->Select("SELECT steuersatz_ermaessigt FROM $module WHERE id = '$parent' LIMIT 1"); $umsatzsteuer_normal = (float)$this->app->DB->Select("SELECT steuersatz_normal FROM $module WHERE id = '$parent' LIMIT 1"); $preiscell = " round(10000000 * b.preis*(1+ if(isnull(b.steuersatz) OR b.steuersatz < 0, if(b.umsatzsteuer = 'befreit',0, if(b.umsatzsteuer = 'ermaessigt', $umsatzsteuer_ermaessigt, if(ifnull(b.umsatzsteuer,'') <> '', $umsatzsteuer_normal, if(a.umsatzsteuer = 'befreit',0, if(a.umsatzsteuer = 'ermaessigt', $umsatzsteuer_ermaessigt,$umsatzsteuer_normal) ) ) ) ) ,b.steuersatz) /100)) / 10000000 "; $join = " LEFT JOIN artikel a ON b.artikel = a.id "; $anzeigebrutto = true; } } $this->app->DB->Update("UPDATE $table SET preis='$value' WHERE id='$id' LIMIT 1"); $this->app->DB->Update("UPDATE $table SET keinrabatterlaubt='1' WHERE id='$id' LIMIT 1"); if(in_array($module, array('auftrag','rechnung','gutschrift'))) { $tmptable_value = $this->app->DB->Select("SELECT $module FROM $table WHERE id = '$id' LIMIT 1"); $this->app->DB->Update("UPDATE $module SET extsoll = 0 WHERE id = '$tmptable_value' LIMIT 1"); } $result = $this->app->DB->Select("SELECT ".$this->FormatPreis($preiscell)." FROM $table b $join WHERE b.id='$id' LIMIT 1"); break; case 6: if($module == 'auftrag' || $module == 'rechnung' || $module == 'angebot' || $module == 'gutschrift' || $module == 'bestellung' || $module == 'proformarechnung') { if($value == '')$value = 'EUR'; if($value!="") { $this->app->DB->Update("UPDATE $table SET waehrung='$value' WHERE id='$id' LIMIT 1"); } // waehrung hier geloeshct $result = $this->app->DB->Select("SELECT waehrung FROM $table WHERE id='$id' LIMIT 1"); $parent = $this->app->DB->Select("SELECT $module FROM $table WHERE id='$id' LIMIT 1"); if($parent) { if(!$this->app->DB->Select("SELECT id FROM $table WHERE waehrung <> '".$value."' AND $module = '$parent' LIMIT 1")) { if($value!="") { $this->app->DB->Update("UPDATE $module SET waehrung = '$value' WHERE id = '$parent' AND waehrung='' LIMIT 1");} } } } break; case 7: if($module == 'auftrag' || $module == 'rechnung' || $module == 'angebot' || $module == 'gutschrift' || $module == 'proformarechnung') { $value = $this->app->erp->FromFormatZahlToDB($value); if(strpos($value,',')) { $value = str_replace(",", ".",str_replace('.','', $value)); }else{ $value = str_replace(",", ".", $value); } if($value == '')$value = '0'; $this->app->DB->Update("UPDATE $table SET rabatt='$value',keinrabatterlaubt=1 WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->FormatPreis('rabatt')." FROM $table WHERE id='$id' LIMIT 1"); //$sort = $this->app->DB->Select("SELECT sort FROM $table WHERE id='$id' LIMIT 1"); //$parent = $this->app->DB->Select("SELECT $module FROM $table WHERE id='$id' LIMIT 1"); //if($parent && $sort == 1)$this->app->DB->Update("UPDATE $module SET rabatt = '$value',keinrabatterlaubt=1 WHERE id = '$parent' LIMIT 1"); if(in_array($module, array('auftrag','rechnung','gutschrift'))) { $tmptable_value = $this->app->DB->Select("SELECT $module FROM $table WHERE id = '$id' LIMIT 1"); $this->app->DB->Update("UPDATE $module SET extsoll = 0 WHERE id = '$tmptable_value' LIMIT 1"); } } break; case 8: if($module == 'auftrag' || $module == 'rechnung' || $module == 'angebot' || $module == 'gutschrift' ) { $value = $this->app->erp->FromFormatZahlToDB($value); if(strpos($value,',')) { $value = str_replace(",", ".",str_replace('.','', $value)); }else{ $value = str_replace(",", ".", $value); } if($value == '')$value = '0'; $this->app->DB->Update("UPDATE $table SET einkaufspreis='$value' WHERE id='$id' LIMIT 1"); $result = $this->app->DB->Select("SELECT ".$this->FormatPreis('einkaufspreis')." FROM $table WHERE id='$id' LIMIT 1"); } break; case 9: if($module === 'retoure') { $value = (int)$this->app->erp->ReplaceLagerPlatz(1, $value, 1); $this->app->DB->Update( sprintf( 'UPDATE retoure_position SET default_storagelocation = %d WHERE id = %d', $value, $id ) ); $result = $this->app->erp->ReplaceLagerPlatz(0, $value, 0); } break; default:; } $this->app->erp->RunHook('AARLGPosEnde', 5, $module, $id, $cmd, $column,$result); if ($table == "auftrag_position") { $tmpartikel = $this->app->DB->Select("SELECT artikel FROM $table WHERE id='$id' LIMIT 1"); $tmptable_value = $this->app->DB->Select("SELECT auftrag FROM $table WHERE id='$id' LIMIT 1"); $this->app->DB->Delete("DELETE FROM lager_reserviert WHERE artikel='$tmpartikel' AND objekt='auftrag' AND parameter='$tmptable_value'"); $this->app->erp->AuftragEinzelnBerechnen($tmptable_value); $this->app->DB->Update( sprintf( 'UPDATE `artikel` SET `laststorage_changed` = NOW() WHERE `id` = %d', $tmpartikel ) ); $this->app->erp->ANABREGSNeuberechnen($tmptable_value,"auftrag"); } if ($table == "angebot_position") { $tmptable_value = $this->app->DB->Select("SELECT angebot FROM $table WHERE id='$id' LIMIT 1"); $this->app->erp->ANABREGSNeuberechnen($tmptable_value,"angebot"); } if ($table == "rechnung_position") { $tmptable_value = $this->app->DB->Select("SELECT rechnung FROM $table WHERE id='$id' LIMIT 1"); $this->app->erp->ANABREGSNeuberechnen($tmptable_value,"rechnung"); } if ($table == "gutschrift_position") { $tmptable_value = $this->app->DB->Select("SELECT gutschrift FROM $table WHERE id='$id' LIMIT 1"); $this->app->erp->ANABREGSNeuberechnen($tmptable_value,"gutschrift"); } if ($table == "kalkulation_position") { $tmptable_value = $this->app->DB->Select("SELECT gutschrift FROM $table WHERE id='$id' LIMIT 1"); $this->app->erp->KalkulationNeuberechnen($tmptable_value); } if ($table == "proformarechnung_position") { $tmptable_value = $this->app->DB->Select("SELECT proformarechnung FROM $table WHERE id='$id' LIMIT 1"); $this->app->erp->ANABREGSNeuberechnen($tmptable_value,"proformarechnung"); } if ($table == "retoure_position") { $tmptable_value = $this->app->DB->Select("SELECT retoure FROM $table WHERE id='$id' LIMIT 1"); $this->app->erp->ANABREGSNeuberechnen($tmptable_value,"retoure"); } } if ($cmd === 'load') { echo 'Load'; } else { echo $result; } $this->app->ExitXentral(); } function AARLGPositionenModule2Tabelle() { $module = $this->app->Secure->GetGET("module"); if ($module == "auftrag") $table = "auftrag_position"; else if ($module == "angebot") $table = "angebot_position"; else if ($module == "retoure") $table = "retoure_position"; else if ($module == "lieferschein") $table = "lieferschein_position"; else if ($module == "rechnung") $table = "rechnung_position"; else if ($module == "gutschrift") $table = "gutschrift_position"; else if ($module == "bestellung") $table = "bestellung_position"; else if ($module == "produktion") $table = "produktion_position"; else if ($module == "arbeitsnachweis") $table = "arbeitsnachweis_position"; else if ($module == "reisekosten") $table = "reisekosten_position"; else if ($module == "kalkulation") $table = "kalkulation_position"; else if ($module == "inventur") $table = "inventur_position"; else if ($module == "anfrage") $table = "anfrage_position"; else if ($module == "proformarechnung") $table = "proformarechnung_position"; else if ($module == "preisanfrage") $table = "preisanfrage_position"; else if ($module == "verbindlichkeit") $table = "verbindlichkeit_position"; else { $table = ''; $this->app->erp->RunHook('yui_positionmodule2table', 1, $table); if(empty($table)) { $this->app->ExitXentral(); } } return $table; } function DownDrawItem($module, $id, $sid) { $check = $this->app->DB->SelectArr("SELECT id,pos,sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if($check) { $sort = $check[0]['sort']; $pos = $check[0]['pos']; $check2 = $this->app->DB->SelectArr("SELECT id,pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos= '$pos' AND sort > '$sort' ORDER BY sort DESC LIMIT 1"); if($check2) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '".$check2[0]['sort']."' WHERE id = '$sid' LIMIT 1"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '$sort' WHERE id = '".$check2[0]['id']."' LIMIT 1"); }else{ $newpos = $pos + 1; $check3 = $this->app->DB->SelectArr("SELECT id,pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos= '$newpos' ORDER BY sort LIMIT 1"); if($check3) { if($check3[0]['sort'] < 1) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos= '$newpos'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = 0, pos = '$newpos' WHERE id = '$sid' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = 0, pos = '$newpos' WHERE id = '$sid' LIMIT 1"); } }else{ $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = 0, pos = '$newpos' WHERE id = '$sid' LIMIT 1"); } } return true; } return false; } function UpDrawItem($module, $id, $sid) { $check = $this->app->DB->SelectArr("SELECT id,pos,sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if($check) { $sort = $check[0]['sort']; $pos = $check[0]['pos']; $check2 = $this->app->DB->SelectArr("SELECT id,pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos= '$pos' AND sort < '$sort' ORDER BY sort DESC LIMIT 1"); if($check2) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '".$check2[0]['sort']."' WHERE id = '$sid' LIMIT 1"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '$sort' WHERE id = '".$check2[0]['id']."' LIMIT 1"); }elseif($pos > 0){ $newpos = $pos - 1; $check3 = $this->app->DB->SelectArr("SELECT id,pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos= '$newpos' ORDER BY sort DESC LIMIT 1"); if($check3) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '".($check3[0]['sort']+1)."', pos = '$newpos' WHERE id = '$sid' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = 0, pos = '$newpos' WHERE id = '$sid' LIMIT 1"); } } return true; } return false; } function CopyDrawItem($module, $id, $sid) { $check = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if(!$check)return false; $pos = $this->app->DB->Select("SELECT max(sort) FROM $module"."_position WHERE $module = '$id'"); $lastzwischen = $this->app->DB->SelectArr("SELECT sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '$pos' ORDER BY sort DESC LIMIT 1"); if($lastzwischen) { $sort = (int)$lastzwischen[0]['sort'] + 1; }else{ $sort = 0; } $check[0]['pos'] = $pos; $check[0]['sort'] = $sort; unset($check[0]['id']); $this->app->DB->Insert("INSERT INTO beleg_zwischenpositionen (doctype) VALUES ('$module')"); $new = $this->app->DB->GetInsertID(); $this->app->DB->UpdateArr('beleg_zwischenpositionen',$new,'id',$check[0], true); return true; } function DeleteDrawItem($module, $id, $sid) { $check = $this->app->DB->Select("SELECT id FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if(!$check)return false; if($check)$this->app->DB->Delete("DELETE FROM beleg_zwischenpositionen WHERE id = '$check' LIMIT 1"); return true; } function FirstField($name) { if(strpos($name,'.') === false && strpos($name,'#') === false && strpos($name,'>') === false && strpos($name,',') === false && strpos($name,' ') === false && strpos($name,':') === false) { $name = 'input[name=\''.$name.'\'], select[name=\''.$name.'\'],textarea[name=\''.$name.'\'],a[name=\''.$name.'\']'; } $this->app->Tpl->Add('JAVASCRIPT', ' if(typeof firstfocuselement == \'undefined\') { var firstfocuselement = "'.$name.'"; } '); } function getStandardDrawJSON($typ) { $data = new StdClass(); if($typ == 'seitenumbruch')return $data; $data->name = null; $data->kurztext = null; $data->Abstand_Oben = 0; $data->Abstand_Unten = 5; $data->Schriftgroesse = 8; $data->Fett = true; $data->Unterstrichen = false; switch($typ) { case 'gruppe': $data->Abstand_Links = 0; $data->Kurztext_Abstand_Links = 0; $data->Kurztext_Unterstrichen = false; break; case 'zwischensumme': $data->Rahmen_Links = false; $data->Rahmen_Rechts = false; $data->Rahmen_Oben = false; $data->Rahmen_Unten = false; $data->Text_Ausrichtung = 'R'; break; case 'gruppensumme': $data->Rahmen_Links = false; $data->Rahmen_Rechts = false; $data->Rahmen_Oben = false; $data->Rahmen_Unten = false; $data->Text_Ausrichtung = 'R'; break; } return $data; } function EditDrawItem($module, $id,$sid, $postype, $data, $bezeichnung, $text) { if(!$id || !$sid)return; $element = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if(!$element)return; if($data) { $data = json_decode($data); }else{ $data = json_decode($element[0]['wert']); } if(!$data)$data = new stdClass(); $update = false; switch($postype) { case 'gruppe': if(is_object($data))$data->name = $bezeichnung; if(is_object($data))$data->kurztext = $text; $update = true; break; case 'zwischensumme': if(is_object($data))$data->name = $bezeichnung; $update = true; break; case 'gruppensumme': case 'gruppensummemitoptionalenpreisen': if(is_object($data))$data->name = $bezeichnung; $update = true; break; case 'seitenumbruch': $update = true; break; case 'bild': if(is_object($data))$data->name = $bezeichnung; if(is_object($data))$data->kurztext = $text; if(is_object($data))$data->bildbreite = $this->app->Secure->GetGET('bildbreite'); if(is_object($data))$data->bildhoehe = $this->app->Secure->GetGET('bildhoehe'); if($_FILES['bild']['tmp_name']) { $md5alt = false; if(!empty($data->bild) && (int)$data->bild > 0) { $path = $this->app->Conf->WFuserdata."/dms/".$this->app->Conf->WFdbname."/".(int)$data->bild; if(is_file($path))$md5alt = md5_file($path); } if($md5alt === false || $md5alt != md5_file($_FILES['bild']['tmp_name'])) { $fileid = $this->app->erp->CreateDatei($_FILES['bild']['name'], $bezeichnung, $text, "", $_FILES['bild']['tmp_name'], $this->app->User->GetName()); $this->app->erp->AddDateiStichwort($fileid, $module, $module, $id); $data->bild = $fileid; } } $update = true; break; } $data = $this->app->DB->real_escape_string(json_encode($data)); if($update)$this->app->DB->Update("UPDATE beleg_zwischenpositionen set postype = '$postype', wert = '$data' WHERE id = '".$element[0]['id']."' LIMIT 1"); } function AddDrawItem($module, $id, $postype, $pos, $sort, $data, $bezeichnung, $text) { if($data)$data = json_decode($data); if(!$data) { $data = $this->getStandardDrawJSON($postype); } if(empty($data->name) && $bezeichnung != '')$data->name = $bezeichnung; if(empty($data->kurztext) && $text != '')$data->kurztext = $text; $postypes = array('zwischensumme','gruppe','seitenumbruch','gruppensumme','bild','gruppensummemitoptionalenpreisen'); if(!in_array($postype, $postypes))return false; $id = (int)$id; if(!$id)return false; $id = $this->app->DB->Select("SELECT id FROM $module WHERE id = '$id' AND schreibschutz <> 1 LIMIT 1"); if(!$id)return false; if($_FILES['bild']['tmp_name']) { $fileid = $this->app->erp->CreateDatei($_FILES['bild']['name'], $bezeichnung, $text, "", $_FILES['bild']['tmp_name'], $this->app->User->GetName()); $this->app->erp->AddDateiStichwort($fileid, $module, $module, $id); $data->bild = $fileid; } $bildhoehe = $this->app->Secure->GetGET('bildhoehe'); $bildbreite = $this->app->Secure->GetGET('bildbreite'); if(!empty($bildhoehe)){ $data->bildhoehe = $bildhoehe; } if(!empty($bildbreite)){ $data->bildbreite = $bildbreite; } $pos = (int)$pos; $sort = (int)$sort; $data = $this->app->DB->real_escape_string(json_encode($data)); $check = $this->app->DB->Select("SELECT id FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '$pos' AND sort = '$sort' LIMIT 1"); if($check) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '$pos' AND sort >= '$sort'"); } $this->app->DB->Insert("INSERT INTO beleg_zwischenpositionen (doctype, doctypeid, pos, sort, wert, postype) VALUES ('$module','$id','$pos','$sort','$data','$postype')"); $newid = $this->app->DB->GetInsertID(); $this->ReSortDrawItem($module, $id); return $newid; } function ReSortDrawItem($module, $id) { $items = $this->app->DB->SelectArr("SELECT id, pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' ORDER BY pos, sort"); $maxpos = $this->app->DB->Select("SELECT max(sort) FROM $module"."_position WHERE $module = '$id'"); if($items) { $oldpos = false; $oldsort = false; $aktsort = 0; foreach($items as $item) { if($oldpos !== $item['pos']) { if($item['pos'] <= $maxpos) { $oldpos = $item['pos']; $aktsort = 0; }elseif($oldpos < $maxpos) { $oldpos = $maxpos; $aktsort = 0; } } if($aktsort != $item['sort']) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '$aktsort' WHERE id = '".$item['id']."' LIMIT 1"); } if($oldpos != $item['pos']) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = '$oldpos' WHERE id = '".$item['id']."' LIMIT 1"); } $aktsort++; } } } function MoveDrawItem($module, $id, $styp, $sid, $styp2, $sid2) { $this->ReSortDrawItem($module, $id); if(!$styp || !$styp2 || !$sid || (!$sid2 && $styp2 != 'oben'))return false; if($styp2 == 'oben') { if($styp == 'pos') { $check = $this->app->DB->SelectArr("SELECT id, sort FROM ".$module."_position WHERE $module = '$id' AND id = '$sid' LIMIT 1"); if($check) { if($check[0]['explodiert_parent'])return false; $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."'"); if($anz > 0)$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' AND pos = '".($check[0]['sort'])."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = 0 WHERE $module = '$id' AND id = '".$check[0]['id']."' LIMIT 1"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos < '".($check[0]['sort'])."'"); return true; } }else{ $check = $this->app->DB->SelectArr("SELECT id, pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if($check) { if($check[0]['sort'] == 0 && $check[0]['pos'] == 0)return true; $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['pos']."' AND sort > '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = 0"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = 0, pos = 0 WHERE id = '".$check[0]['id']."' LIMIT 1"); return true; } } return false; } if($styp != 'pos') { $check = $this->app->DB->SelectArr("SELECT id, pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid' LIMIT 1"); if($check) { if($styp2 != 'pos') { $check2 = $this->app->DB->SelectArr("SELECT id, pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid2' LIMIT 1"); if($check2) { if($check[0]['pos'] == $check2[0]['pos']) { if($check[0]['sort'] < $check2[0]['sort']) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['pos']."' AND sort > '".$check[0]['sort']."' AND sort <= '".$check2[0]['sort']."' "); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '".$check2[0]['sort']."' WHERE id = '".$check[0]['id']."' LIMIT 1"); return true; }elseif($check[0]['sort'] > $check2[0]['sort']) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['pos']."' AND sort < '".$check[0]['sort']."' AND sort > '".$check2[0]['sort']."' "); //Test > $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '".$check2[0]['sort']."' WHERE id = '".$check[0]['id']."' LIMIT 1"); return true; } return true; }else{ $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['pos']."' AND sort > '".$check[0]['sort']."' "); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check2[0]['pos']."' AND sort > '".$check2[0]['sort']."' "); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '".($check2[0]['sort']+1)."',pos = '".($check2[0]['pos'])."' WHERE id = '".$check[0]['id']."' LIMIT 1"); return true; } } }else{ $check2 = $this->app->DB->SelectArr("SELECT id, sort FROM ".$module."_position WHERE $module = '$id' AND id = '$sid2' LIMIT 1"); if($check2) { $check2[0]['explodiert_parent'] = $this->app->DB->Select("SELECT explodiert_parent FROM ".$module."_position WHERE $module = '$id' AND id = '$sid2' LIMIT 1"); if($check2[0]['explodiert_parent'] > 0){ //Nur nicht verschieben wenn in die Stückliste verschoben wird. $sorttmp = $this->app->DB->Select("SELECT sort FROM ".$module."_position WHERE $module = '$id' AND id = '$sid2' LIMIT 1 "); $parent2 = $this->app->DB->Select("SELECT explodiert_parent FROM ".$module."_position WHERE $module = '$id' AND sort = '".($sorttmp+1)."' LIMIT 1 "); if($parent2 == $check2[0]['explodiert_parent'])return false; } if($check[0]['pos'] == $check2[0]['sort']) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['pos']."' AND sort < '".$check[0]['sort']."' "); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = 0 WHERE id = '".$check[0]['id']."' LIMIT 1"); return true; }else{ $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['pos']."' AND sort > '".$check[0]['sort']."' "); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check2[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = '0',pos = '".($check2[0]['sort'])."' WHERE id = '".$check[0]['id']."' LIMIT 1"); return true; } return true; } } } }else{ $check = $this->app->DB->SelectArr("SELECT id, sort FROM ".$module."_position WHERE $module = '$id' AND id = '$sid' LIMIT 1"); if($check) { $check2[0]['explodiert_parent'] = $this->app->DB->Select("SELECT explodiert_parent FROM ".$module."_position WHERE $module = '$id' AND id = '$sid' LIMIT 1"); if($check[0]['explodiert_parent'] > 0)return false; if($styp2 != 'pos') { $check2 = $this->app->DB->SelectArr("SELECT id, pos, sort FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND id = '$sid2' LIMIT 1"); if($check2) { if($check[0]['sort'] == $check2[0]['pos']) { $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1, sort = sort + $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort'])."' AND sort < '".$check2[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1, sort = sort - $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort'])."' AND sort >= '".$check2[0]['sort']."'"); return true; }elseif($check[0]['sort'] < $check2[0]['pos']) { $kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC"); if((empty($kinderartikel)?0:count($kinderartikel))){ $maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'"); $zuverschiebendezwischenpositionen = $this->app->DB->SelectArr("SELECT ID,pos FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos >= '".$check[0]['sort']."'"); $zwipos = "(".implode(",", $zuverschiebendezwischenpositionen).")"; } $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1, sort = sort + $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort'])."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort <= '".$check2[0]['pos']."' AND sort > '".$check[0]['sort']."'"); $anz2 = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check2[0]['pos'])."' AND sort > '".$check2[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos > '".$check[0]['sort']."' AND pos <= '".($check2[0]['pos'])."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1, sort = sort - $anz2 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check2[0]['pos']-1)."' AND sort > '".($check2[0]['sort'])."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = ".$check2[0]['pos']." WHERE $module = '$id' AND id = '".$check[0]['id']."'"); if(!empty($kinderartikel)){ $elternsort = $check[0]['sort']; $ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel)); for ($i=0; $i < $ckinderartikel; $i++) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos < '".($check2[0]['pos'])."' AND pos >= '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort > '$elternsort' AND sort <= '".$check2[0]['pos']."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($check2[0]['pos']-$i)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1"); } if((empty($zuverschiebendezwischenpositionen)?0:count($zuverschiebendezwischenpositionen))){ $positionsanzahl = $this->app->DB->Select("SELECT sort-".$check[0]['sort']." FROM auftrag_position WHERE id = '".$check[0]['id']."'"); foreach ($zuverschiebendezwischenpositionen as $zkey => $zvalue) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = ".$zvalue['pos']." + $positionsanzahl WHERE id = '".$zvalue['ID']."'"); } } } return true; }elseif($check[0]['sort'] > $check2[0]['pos']) { if($check[0]['sort'] > $check2[0]['pos'] + 1) { $kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC"); $zuverschiebendezwischenpositionen= array(0); if((empty($kinderartikel)?0:count($kinderartikel))){ $maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'"); $zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos >= '".$check[0]['sort']."'"); $zuverschiebendezwischenpositionen = array(0); if(is_array($zuverschiebendezwischenpositionentmp)){ foreach ($zuverschiebendezwischenpositionentmp as $key => $value) { $zuverschiebendezwischenpositionen[] = $value['ID']; } } } $zwipos = "(".implode(",", $zuverschiebendezwischenpositionen).")"; $anz1 = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."' "); $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check2[0]['pos'])."' AND sort > '".$check2[0]['sort']."'"); if($anz1)$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + $anz1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort'])."' AND NOT id IN $zwipos"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos < '".($check[0]['sort'])."' AND pos > ".$check2[0]['pos']." AND NOT id IN $zwipos"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort > '".$check2[0]['pos']."' AND sort < '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($check2[0]['pos']+1)."' WHERE $module = '$id' AND id = '".$check[0]['id']."' LIMIT 1"); if($anz) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort - $anz, pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check2[0]['pos'])."' AND sort > '".$check2[0]['sort']."' AND NOT id IN $zwipos"); } if(!empty($kinderartikel)){ $elternsort = $check2[0]['pos']+1; $zielpos = $elternsort+1; $ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel)); for ($i=0; $i < $ckinderartikel; $i++) { $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$kinderartikel[$i]['sort']."' AND sort > '".($elternsort+$i)."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($zielpos+$i)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1"); } $differenzwert = ($check[0]['sort'] - $check2[0]['pos']) -1 ; $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos-$differenzwert WHERE id IN $zwipos"); } }else{ $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check2[0]['pos'])."' AND sort > '".$check2[0]['sort']."'"); if($anz) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort - $anz, pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check2[0]['pos'])."' AND sort > '".$check2[0]['sort']."'"); } } return true; } return true; } }else{ $check2 = $this->app->DB->SelectArr("SELECT id, sort FROM ".$module."_position WHERE $module = '$id' AND id = '$sid2' LIMIT 1"); if($check2) { $check2[0]['explodiert_parent'] = $this->app->DB->Select("SELECT explodiert_parent FROM ".$module."_position WHERE $module = '$id' AND id = '$sid2' LIMIT 1"); if($check2[0]['explodiert_parent'] > 0){ //Nur nicht verschieben wenn in die Stückliste verschoben wird. $sorttmp = $this->app->DB->Select("SELECT sort FROM ".$module."_position WHERE $module = '$id' AND id = '$sid2' LIMIT 1 "); $parent2 = $this->app->DB->Select("SELECT explodiert_parent FROM ".$module."_position WHERE $module = '$id' AND sort = '".($sorttmp+1)."' LIMIT 1 "); if($parent2 == $check2[0]['explodiert_parent'])return false; } if($check[0]['sort'] < $check2[0]['sort']) { $maxsort = $check[0]['sort']; $zuverschiebendezwischenpositionen = array(0); $kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort ASC"); if((empty($kinderartikel)?0:count($kinderartikel))){ $maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'"); $zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos >='$maxsort' AND pos <= '$maxsortkind'"); $zuverschiebendezwischenpositionen = array(0); if(is_array($zuverschiebendezwischenpositionentmp)){ foreach ($zuverschiebendezwischenpositionentmp as $key => $value) { $zuverschiebendezwischenpositionen[] = $value['ID']; } } } $zwipos = "(".implode(",", $zuverschiebendezwischenpositionen).")"; $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1, sort = sort + $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['sort']."' AND NOT id IN $zwipos"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort <= '".$check2[0]['sort']."' AND sort > '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos - 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos < '".$check2[0]['sort']."' AND pos > '".$check[0]['sort']."' AND NOT id IN $zwipos"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '".$check2[0]['sort']."' WHERE $module = '$id' AND id = '".$check[0]['id']."' LIMIT 1"); if(!empty($kinderartikel)){ $differenzwert = $check2[0]['sort'] - $check[0]['sort']-(empty($kinderartikel)?0:count($kinderartikel)); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos+$differenzwert WHERE id IN $zwipos"); $elternsort = $check2[0]['sort']; $ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel)); for ($i=0; $i < $ckinderartikel; $i++) { $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort - 1 WHERE $module = '$id' AND sort > '".$kinderartikel[$i]['sort']."' AND sort < '$elternsort'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '$elternsort' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos-1 WHERE doctype='$module' AND doctypeid='$id' AND pos >= '".$check[0]['sort']."' AND pos < '$elternsort' AND NOT id IN $zwipos"); } } return true; }elseif($check[0]['sort'] > $check2[0]['sort']) { $zuverschiebendezwischenpositionen = array(0); $kinderartikel = $this->app->DB->SelectArr("SELECT id,sort FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."' ORDER BY sort DESC"); if(!empty($kinderartikel)){ $maxsortkind = $this->app->DB->Select("SELECT max(sort) FROM ".$module."_position WHERE explodiert_parent ='".$check[0]['id']."'"); $zuverschiebendezwischenpositionentmp = $this->app->DB->SelectArr("SELECT ID FROM beleg_zwischenpositionen WHERE doctype='$module' AND doctypeid='$id' AND pos <='$maxsortkind' AND pos > '".$check2[0]['sort']."'"); $zuverschiebendezwischenpositionen = array(0); if(is_array($zuverschiebendezwischenpositionentmp)){ foreach ($zuverschiebendezwischenpositionentmp as $key => $value) { $zuverschiebendezwischenpositionen[] = $value['ID']; } } } $zwipos = "(".implode(",", $zuverschiebendezwischenpositionen).")"; $anz = $this->app->DB->Select("SELECT count(id) FROM beleg_zwischenpositionen WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".($check[0]['sort']-1)."'"); if($anz > 0)$this->app->DB->Update("UPDATE beleg_zwischenpositionen SET sort = sort + $anz WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos = '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos >= '".$check2[0]['sort']."' AND pos < '".$check[0]['sort']."' AND NOT id IN $zwipos"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort > '".$check2[0]['sort']."' AND sort < '".$check[0]['sort']."'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($check2[0]['sort'] + 1)."' WHERE $module = '$id' AND id = '".$check[0]['id']."' LIMIT 1"); if(!empty($kinderartikel)){ $differenzwert = $check[0]['sort'] - ($check2[0]['sort'] + 1); $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos=pos-$differenzwert WHERE id IN $zwipos"); $elternsort = $check2[0]['sort']+1; $ckinderartikel = (empty($kinderartikel)?0:count($kinderartikel)); for ($i=0; $i < $ckinderartikel; $i++) { $this->app->DB->Update("UPDATE beleg_zwischenpositionen SET pos = pos + 1 WHERE doctype = '".$module."' AND doctypeid = '$id' AND pos >= '".$check2[0]['sort']."' AND pos <= '$maxsortkind' AND NOT id IN $zwipos"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = sort + 1 WHERE $module = '$id' AND sort < '".$maxsortkind."' AND sort > '$elternsort'"); $this->app->DB->Update("UPDATE ".$module."_position SET sort = '".($elternsort+1)."' WHERE $module = '$id' AND id = '".$kinderartikel[$i]['id']."' LIMIT 1"); } } return true; } } } } } return false; } function AARLGPositionen($iframe = true, $cmd = null, $sid = null) { $module = $this->app->Secure->GetGET("module"); $fmodul = $this->app->Secure->GetGET("fmodul"); if($this->app->erp->Firmendaten("erweiterte_positionsansicht")=="1") $erweiterte_ansicht=",'
',b.beschreibung,'
'"; if($this->app->erp->Firmendaten("erweiterte_positionsansicht")=="1") $hersteller_ansicht="if(a.hersteller!='',CONCAT('',a.hersteller,'
'),''),"; else $hersteller_ansicht=""; $extended_mysql55 = ",'de_DE'"; $id = $this->app->Secure->GetGET("id"); $this->app->DB->Select("set @order = 0;"); $this->app->DB->Update("update " . $module . "_position set sort=@order:= @order + 1 WHERE " . $module . "='$id' order by sort asc"); $intern = true; if(is_null($cmd)) { $intern = false; $cmd = $this->app->Secure->GetGET('cmd'); } $priceCol = 'b.preis'; if($cmd === 'getpreise') { $ret = null; //$scol = $this->app->Secure->GetPOST('scol'); $prices = explode(';', $this->app->Secure->GetPOST('preise')); $quantities = explode(';', $this->app->Secure->GetPOST('quantities')); if($module === 'auftrag' || $module === 'rechnung' || $module === 'gutschrift' || $module === 'angebot' || $module === 'proformarechnung') { $moduleArr = $this->app->DB->SelectRow( sprintf( 'SELECT * FROM `%s` WHERE `id` = %d LIMIT 1', $module, $id ) ); //$anrede = $moduleArr['typ'];// $this->app->DB->Select("SELECT typ FROM $module WHERE id = '$id' LIMIT 1"); $projekt = $moduleArr['projekt'];//$this->app->DB->Select("SELECT projekt FROM $module WHERE id = '$id' LIMIT 1"); $adresse = $moduleArr['adresse'];//$this->app->DB->Select("SELECT adresse FROM $module WHERE id = '$id' LIMIT 1"); $funktion = ucfirst($module).'MitUmsatzeuer'; $join = ''; $anrede = 'firma'; if(!$this->app->erp->AnzeigeBelegNettoAdresse($anrede, $module, $projekt, $adresse, $id) && $this->app->erp->$funktion($id)) { //$steuersatz = $this->app->erp->GetSteuersatzBelegpos($module, $id, $sid); //$value /= $value / (1+(float)$steuersatz / 100); /*$umsatzsteuer_ermaessigt = (float)$this->app->DB->Select( "SELECT steuersatz_ermaessigt FROM $module WHERE id = '$id' LIMIT 1" ); $umsatzsteuer_normal = (float)$this->app->DB->Select( "SELECT steuersatz_normal FROM $module WHERE id = '$id' LIMIT 1" );*/ $umsatzsteuer_ermaessigt = (float)$moduleArr['steuersatz_ermaessigt']; $umsatzsteuer_normal = (float)$moduleArr['steuersatz_normal']; $priceCol = "round(10000000* b.preis*(1+ if(isnull(b.steuersatz) OR b.steuersatz < 0, if(b.umsatzsteuer = 'befreit',0, if(b.umsatzsteuer = 'ermaessigt', $umsatzsteuer_ermaessigt, if(ifnull(b.umsatzsteuer,'') <> '', $umsatzsteuer_normal, if(a.umsatzsteuer = 'befreit',0, if(a.umsatzsteuer = 'ermaessigt', $umsatzsteuer_ermaessigt,$umsatzsteuer_normal) ) ) ) ) ,b.steuersatz) /100)) / 10000000 "; $join = ' LEFT JOIN `artikel` AS `a` ON b.artikel = a.id '; //$anzeigebrutto = true; } } $idToPrice = []; $idToQuantity = []; $positionsIds = []; foreach($prices as $priceInForm) { $priceSplit = explode(':', $priceInForm); if((empty($priceSplit)?0:count($priceSplit)) == 2) { $elementId = $priceSplit[0]; $price = trim($priceSplit[1]); $idSplit = explode('split', $elementId); $positionId = (int)$idSplit[0]; $arr[$positionId] = ['position_id' => $positionId, 'value' => $price, 'price_id' => $elementId]; $idToPrice[$positionId] = $price; $positionsIds[] = $positionId; } } foreach($quantities as $quantityInForm) { $quantitySplittet = explode(':', $quantityInForm); if((empty($quantitySplittet)?0:count($quantitySplittet)) == 2) { $elementId = $quantitySplittet[0]; $quantity = $this->app->erp->ReplaceMenge(1, trim($quantitySplittet[1]), 1); if(!is_numeric($quantity)) { continue; } $idSplit = explode('split', $elementId); $positionId = (int)$idSplit[0]; if(!isset($arr[$positionId])){ $arr[$positionId] = ['position_id' => $positionId, 'qty' => $quantity, 'quantity_id' => $elementId]; } else { $arr[$positionId]['quantity_id'] = $elementId; $arr[$positionId]['qty'] = $quantity; } $idToQuantity[$positionId] = $quantity; $positionsIds[] = $positionId; } } if(!empty($positionsIds)) { $positions = $this->app->DB->SelectArr( sprintf( "SELECT b.id, %s AS `preis`, trim(b.menge)+0 as menge FROM `%s` AS `b` %s WHERE b.`%s` = %d AND b.id IN (%s)", $priceCol, $module.'_position', $join, $module, $id, implode(', ', array_unique($positionsIds)) ) ); if(!empty($positions)) { foreach($positions as $position) { $positionId = $position['id']; if(isset($idToPrice[$positionId]) && $position['preis'] != $idToPrice[$positionId] ) { $price = rtrim(number_format($position['preis'], 8, ',', '.'), '0'); $priceSplit = explode(',', $price); if(strlen($priceSplit[(empty($priceSplit)?0:count($priceSplit))-1]) < 2) { $price .= str_repeat('0',2-strlen($priceSplit[(empty($priceSplit)?0:count($priceSplit))-1])); } $ret[] = ['elid' => $arr[$positionId]['price_id'], 'value' => $price]; } if(isset($idToQuantity[$positionId]) && $position['menge'] != $idToQuantity[$positionId] ) { $quantity = rtrim(number_format($position['menge'], 8, ',', ''), '0'); $quantitySplit = explode(',', $quantity); if(isset($quantitySplit[1]) && $quantitySplit[1] === '') { $quantity = $quantitySplit[0]; } $ret[] = ['elid'=> $arr[$positionId]['quantity_id'], 'value' => $quantity]; } } } } echo json_encode($ret); $this->app->ExitXentral(); } if($cmd == 'getelements') { $id = (int)$id; $erweiterte_positionsansicht = (int)$this->app->erp->Firmendaten('erweiterte_positionsansicht'); $ecol = 0; $dcol = 0; $beleg_zwischenpositionen = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype = '$module' AND doctypeid = '$id' ORDER by pos, sort DESC"); //TODO ecol if($beleg_zwischenpositionen) { foreach($beleg_zwischenpositionen as $k => $v) { $beleg_zwischenpositionen[$k]['id'] = $v['id']; $beleg_zwischenpositionen[$k]['erweiterte_positionsansicht'] = $erweiterte_positionsansicht; $beleg_zwischenpositionen[$k]['name'] = ''; $beleg_zwischenpositionen[$k]['kurztext'] = ''; $beleg_zwischenpositionen[$k]['bildbreite'] = ''; $beleg_zwischenpositionen[$k]['bildhoehe'] = ''; $beleg_zwischenpositionen[$k]['dcol'] = $dcol; $beleg_zwischenpositionen[$k]['ecol'] = $ecol; if($v['wert']) { $json = json_decode($v['wert']); if($json) { $beleg_zwischenpositionen[$k]['wert'] = $json; if(isset($json->name)) { $beleg_zwischenpositionen[$k]['name'] = (String)$json->name; } if(isset($json->kurztext))$beleg_zwischenpositionen[$k]['kurztext'] = (String)$json->kurztext; if(isset($json->bildbreite))$beleg_zwischenpositionen[$k]['bildbreite'] = (String)$json->bildbreite; if(isset($json->bildhoehe))$beleg_zwischenpositionen[$k]['bildhoehe'] = (String)$json->bildhoehe; } } } } echo json_encode(array('result'=>json_decode(json_encode($beleg_zwischenpositionen)))); exit; } if($cmd == 'deldrawitem') { if($this->app->erp->RechteVorhanden($module,'del'.$module.'position')) { $id = (int)$id; $sid = (int)$this->app->Secure->GetGET("sid"); $this->DeleteDrawItem($module, $id, $sid); } header('Location: index.php?module='.$module.'&action=positionen&id='.$id.($fmodul?'&fmodul='.$fmodul:'')); exit; } if($cmd == 'copydrawitem') { if($this->app->erp->RechteVorhanden($module,'copy'.$module.'position')) { $id = (int)$id; $sid = (int)$this->app->Secure->GetGET("sid"); $this->CopyDrawItem($module, $id, $sid); } header('Location: index.php?module='.$module.'&action=positionen&id='.$id.($fmodul?'&fmodul='.$fmodul:'')); exit; } if($cmd == 'downdrawitem') { $id = (int)$id; $sid = (int)$this->app->Secure->GetGET("sid"); $this->DownDrawItem($module, $id, $sid); header('Location: index.php?module='.$module.'&action=positionen&id='.$id.($fmodul?'&fmodul='.$fmodul:'')); exit; } if($cmd == 'updrawitem') { $id = (int)$id; $sid = (int)$this->app->Secure->GetGET("sid"); $this->UpDrawItem($module, $id, $sid); header('Location: index.php?module='.$module.'&action=positionen&id='.$id.($fmodul?'&fmodul='.$fmodul:'')); exit; } if($cmd == 'drawmove') { $id = (int)$id; $sid = (int)$this->app->Secure->GetGET("sid"); $sid2 = (int)$this->app->Secure->GetGET("sid2"); $styp = $this->app->Secure->GetGET("styp"); $styp2 = $this->app->Secure->GetGET("styp2"); $this->MoveDrawItem($module, $id, $styp, $sid, $styp2, $sid2); header('Location: index.php?module='.$module.'&action=positionen&id='.$id.($fmodul?'&fmodul='.$fmodul:'')); exit; } if($cmd == 'adddraw') { $id = (int)$id; $pos = $this->app->Secure->GetGET("pos"); $sort = $this->app->Secure->GetGET("sort"); $data = ''; $bezeichnung = $this->app->Secure->GetPOST('grbez'); $text = $this->app->Secure->GetPOST('grtext'); $postype = $this->app->Secure->GetPOST('postype'); $this->AddDrawItem($module, $id, $postype, $pos, $sort, $data, $bezeichnung, $text); echo json_encode(['success' => true]); $this->app->ExitXentral(); } if($cmd == 'editdraw') { $id = (int)$id; $sid = (int)$this->app->Secure->GetGET("sid"); $data = $this->app->Secure->GetGET("data"); $bezeichnung = $_POST['grbez']; $text = isset($_POST['grtext'])?$_POST['grtext']:''; $postype = $this->app->Secure->GetPOST('postype'); $this->EditDrawItem($module, $id,$sid, $postype, $data, $bezeichnung, $text); header('Location: index.php?module='.$module.'&action=positionen&id='.$id.($fmodul?'&fmodul='.$fmodul:'')); $this->app->ExitXentral(); } $this->app->erp->RunHook("AARLGPositionen_cmds_end", 1, $id); if ($iframe) { if($module=="angebot" || $module =="auftrag" || $module=="rechnung" || $module=="gutschrift" || $module=="lieferschein" || $module=="retoure" || $module=="bestellung" || $module=="anfrage" || $module=="preisanfrage" || $module=="proformarechnung" || $module=="produktion" || $module=="reisekosten") $schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM $module WHERE id='$id' LIMIT 1"); if($schreibschutz=="1") $this->app->Tpl->Set('POS', ""); else $this->app->Tpl->Set('POS', ""); $this->app->Tpl->Add('POS',' '); } else { $table = $this->AARLGPositionenModule2Tabelle(); /* neu anlegen formular */ $artikelart = $this->app->Secure->GetPOST("artikelart"); $bezeichnung = $this->app->Secure->GetPOST("bezeichnung"); if($bezeichnung != '') { if($module=="auftrag" || $module=="rechnung" || $module=="gutschrift")$this->app->DB->Update("UPDATE $module SET extsoll = 0 WHERE id = '$id'"); } $vpe = $this->app->Secure->GetPOST("vpe"); $umsatzsteuerklasse = $this->app->Secure->GetPOST("umsatzsteuerklasse"); $waehrung = $this->app->Secure->GetPOST("waehrung"); $projekt = $this->app->Secure->GetPOST("projekt"); $preis = $this->app->Secure->GetPOST("preis"); $preis = $this->app->erp->FromFormatZahlToDB($preis); $menge = $this->app->Secure->GetPOST("menge"); //$menge = str_replace(',', '.', $menge); $menge= $this->app->erp->FromFormatZahlToDB($menge); if($menge < 0) $menge = 1; $ort = $this->app->Secure->GetPOST("ort"); $lieferdatum = $this->app->Secure->GetPOST("lieferdatum"); $lieferdatum = $this->app->String->Convert($lieferdatum, "%1.%2.%3", "%3-%2-%1"); $datum = $this->app->Secure->GetPOST("datum"); $datum = $this->app->String->Convert($datum, "%1.%2.%3", "%3-%2-%1"); $rabatt = $this->app->Secure->GetPOST("rabatt"); $rabatt = str_replace(',', '.', $rabatt); if($rabatt > 0 || $rabatt=="0") $keinrabatterlaubt=1; else $keinrabatterlaubt=0; if ($lieferdatum == "") $lieferdatum = "00.00.0000"; $ajaxbuchen = $this->app->Secure->GetPOST("ajaxbuchen"); if ($ajaxbuchen != "") { $artikel = $this->app->Secure->GetPOST('artikel'); $bezeichnung = $this->app->Secure->GetPOST('artikel',null,'',1); $nummer = $this->app->Secure->GetPOST("nummer"); $projekt = $this->app->Secure->GetPOST("projekt"); $docArr = $this->app->DB->SelectRow( sprintf( 'SELECT * FROM `%s` WHERE id = %d', $module, $id ) ); $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1"); $sort = $this->app->DB->Select("SELECT MAX(sort) FROM $table WHERE $module='$id' LIMIT 1"); $sort = $sort + 1; $adresse = $docArr['adresse'];// $this->app->DB->Select("SELECT adresse FROM $module WHERE id='$id' LIMIT 1"); $sprache = $docArr['sprache'];//$this->app->DB->Select("SELECT sprache FROM $module WHERE id='$id' LIMIT 1"); if($sprache=='') { $sprache = $this->app->DB->Select("SELECT sprache FROM adresse WHERE id='$adresse' LIMIT 1"); } $artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' LIMIT 1"); $articleArr = $this->app->DB->SelectRow(sprintf('SELECT * FROM artikel WHERE id = %d', $artikel_id)); if($module == 'auftrag' || $module == 'rechnung' || $module == 'gutschrift' || $module == 'angebot' || $module == 'proformarechnung') { $_anrede = $docArr['typ'];//$this->app->DB->Select("SELECT typ FROM $module WHERE id = '$id' LIMIT 1"); $_projekt = $docArr['projekt'];//$this->app->DB->Select("SELECT projekt FROM $module WHERE id = '$id' LIMIT 1"); $funktion = ucfirst($module).'MitUmsatzeuer'; $_anrede = 'firma'; if($this->app->erp->AnzeigePositionenBrutto($_anrede, $module, $_projekt, $adresse,$id) && $this->app->erp->$funktion($id)) { $umsatzsteuer = $articleArr['umsatzsteuer'];// $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id = '".$artikel_id."' LIMIT 1"); if($umsatzsteuer === 'ermaessigt') { //$preis = round($preis / (1+ (float)$this->app->DB->Select("SELECT steuersatz_ermaessigt FROM $module WHERE id = '$id' LIMIT 1")/100),8); $preis = round($preis / (1+ (float)$docArr['steuersatz_ermaessigt']/100),8); } elseif($umsatzsteuer !== 'befreit') { //$preis = round($preis / (1+ (float)$this->app->DB->Select("SELECT steuersatz_normal FROM $module WHERE id = '$id' LIMIT 1")/100),8); $preis = round($preis / (1+ (float)$docArr['steuersatz_normal']/100),8); } } } $this->app->erp->RunHook('AARLGPositionenPreis', 3, $module, $id, $preis); if(in_array($module, array('auftrag','rechnung','gutschrift'))) { $this->app->DB->Update("UPDATE $module SET extsoll = 0 WHERE id = '$id' LIMIT 1"); } //$bezeichnung = $artikel; if($sprache=="englisch") { $name_en = $articleArr['name_en'];//$this->app->DB->Select("SELECT name_en FROM artikel WHERE id='$artikel_id' LIMIT 1"); if($name_en!='') { $bezeichnung = $name_en; } } $neue_nummer = $nummer; $waehrung = $docArr['waehrung'];//$this->app->DB->Select("SELECT waehrung FROM $module WHERE id='$id' LIMIT 1"); $hinweis_einfuegen = $articleArr['hinweis_einfuegen'];//$this->app->DB->Select("SELECT hinweis_einfuegen FROM artikel WHERE id='$artikel_id' LIMIT 1"); if($hinweis_einfuegen!="") { $this->app->erp->InternesEvent($this->app->User->GetID(),$hinweis_einfuegen,"warning",1); } $standardlieferant = $articleArr['adresse'];//$this->app->DB->Select("SELECT adresse FROM artikel WHERE id='$artikel_id' LIMIT 1"); $hinweistextlieferant = $this->app->DB->Select("SELECT hinweistextlieferant FROM adresse WHERE id='$standardlieferant' LIMIT 1"); if($hinweistextlieferant!="") { $this->app->erp->InternesEvent($this->app->User->GetID(),$hinweistextlieferant,"warning",1); } if($waehrung=="") { // schaue ob es gebuchte positionen gibt dann diese waehrung $waehrung = ""; if (!is_null($table)) { if ($this->app->DB->Select("SHOW COLUMNS FROM `$table` LIKE 'waehrung'")) { $waehrung = $this->app->DB->Select("SELECT waehrung FROM $table WHERE $module='$id' LIMIT 1"); } } if($waehrung==""){ $waehrung = $this->app->erp->GetStandardWaehrung($projekt); } if ($this->app->DB->Select("SHOW COLUMNS FROM `$module` LIKE 'waehrung'")) { if($waehrung!="") $this->app->DB->Update("UPDATE $module SET waehrung='$waehrung' WHERE id='$id' AND waehrung='' LIMIT 1"); } } $umsatzsteuer = $articleArr['umsatzsteuer'];//$this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id='$artikel_id' LIMIT 1"); $variante_von = $articleArr['variante_von'];//$this->app->DB->Select("SELECT variante_von FROM artikel WHERE id='$artikel_id' LIMIT 1"); if ($sprache === 'englisch') { $beschreibung = $articleArr['anabregs_text_en'];//$this->app->DB->Select("SELECT anabregs_text_en FROM artikel WHERE id='$artikel_id' LIMIT 1"); } else { $beschreibung = $articleArr['anabregs_text'];//$this->app->DB->Select("SELECT anabregs_text FROM artikel WHERE id='$artikel_id' LIMIT 1"); } if($beschreibung == '' && $articleArr['variante'])// $this->app->DB->Select("SELECT variante FROM artikel WHERE id='$artikel_id' LIMIT 1")) { if($variante_von) { if ($sprache === 'englisch') { $beschreibung = $this->app->DB->Select("SELECT anabregs_text_en FROM artikel WHERE id='$variante_von' LIMIT 1"); } else { $beschreibung = $this->app->DB->Select("SELECT anabregs_text FROM artikel WHERE id='$variante_von' LIMIT 1"); } } } $this->app->erp->RunHook('AARLGPositionenSprache', 6, $module, $id, $artikel_id, $sprache, $bezeichnung, $beschreibung); $bezeichnung = $this->app->DB->real_escape_string($bezeichnung); $beschreibung = $this->app->DB->real_escape_string($beschreibung); $mlmpunkte = $articleArr['mlmpunkte'];//$this->app->DB->Select("SELECT mlmpunkte FROM artikel WHERE id='$artikel_id' LIMIT 1"); $mlmbonuspunkte = $articleArr['mlmbonuspunkte'];//$this->app->DB->Select("SELECT mlmbonuspunkte FROM artikel WHERE id='$artikel_id' LIMIT 1"); $mlmdirektpraemie = $articleArr['mlmdirektpraemie'];//$this->app->DB->Select("SELECT mlmdirektpraemie FROM artikel WHERE id='$artikel_id' LIMIT 1"); $artikelnummerkunde = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT kundenartikelnummer FROM verkaufspreise WHERE adresse='$adresse' AND artikel='$artikel_id' AND kundenartikelnummer!='' AND ab_menge <='$menge' AND (gueltig_bis>=NOW() OR gueltig_bis='0000-00-00') ORDER by ab_menge DESC LIMIT 1")); // Anzeige Artikel Nummer von Gruppe aus Verkaufspreis $gruppevkresult = $this->app->erp->GetVerkaufspreis($artikel_id,$menge,$adresse,$waehrung, $returnwaehrung ,true); if($gruppevkresult['kundenartikelnummer']!="" && $artikelnummerkunde=="") $artikelnummerkunde = $gruppevkresult['kundenartikelnummer']; $zolltarifnummer = $this->app->DB->real_escape_string($articleArr['zolltarifnummer']);//$this->app->DB->real_escape_string($this->app->DB->Select("SELECT zolltarifnummer FROM artikel WHERE id='$artikel_id' LIMIT 1")); $kostenstelle = $this->app->DB->real_escape_string($articleArr['kostenstelle']);//$this->app->DB->real_escape_string($this->app->DB->Select("SELECT kostenstelle FROM artikel WHERE id='$artikel_id' LIMIT 1")); $herkunftsland = $this->app->DB->real_escape_string($articleArr['herkunftsland']);//$this->app->DB->real_escape_string($this->app->DB->Select("SELECT herkunftsland FROM artikel WHERE id='$artikel_id' LIMIT 1")); $einheit = $this->app->DB->real_escape_string($articleArr['einheit']);//$this->app->DB->real_escape_string($this->app->DB->Select("SELECT einheit FROM artikel WHERE id='$artikel_id' LIMIT 1")); $ohnepreisimpdf = $articleArr['ohnepreisimpdf'];//$this->app->DB->Select("SELECT ohnepreisimpdf FROM artikel WHERE id='$artikel_id' LIMIT 1"); if($variante_von) { if((String)$zolltarifnummer === "")$zolltarifnummer = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT zolltarifnummer FROM artikel WHERE id='$variante_von' LIMIT 1")); if((String)$kostenstelle === "")$kostenstelle = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT kostenstelle FROM artikel WHERE id='$variante_von' LIMIT 1")); if((String)$herkunftsland === "")$herkunftsland = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT herkunftsland FROM artikel WHERE id='$variante_von' LIMIT 1")); if((String)$einheit === "")$einheit = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT einheit FROM artikel WHERE id='$variante_von' LIMIT 1")); if((String)$ohnepreisimpdf === "")$ohnepreisimpdf = $this->app->DB->real_escape_string($this->app->DB->Select("SELECT ohnepreisimpdf FROM artikel WHERE id='$variante_von' LIMIT 1")); } if ($vpe < 1 || !is_numeric($vpe)) $vpe = '1'; if($this->app->erp->Firmendaten("lieferdatumkw")=="1") $lieferdatumkw=1; else $lieferdatumkw=0; if (($module == "lieferschein" || $module == "retoure") && $artikel_id > 0) { $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnung,beschreibung,nummer,menge,sort,lieferdatum, status,projekt,vpe,artikelnummerkunde,zolltarifnummer,herkunftsland,einheit,lieferdatumkw) VALUES ('','$id','$artikel_id','$bezeichnung','$beschreibung','$neue_nummer','$menge','$sort','$lieferdatum','angelegt','$projekt','$vpe','$artikelnummerkunde','$zolltarifnummer','$herkunftsland','$einheit','$lieferdatumkw')"); $newposid = $this->app->DB->GetInsertID(); } else if ($module == "arbeitsnachweis") { $bezeichnung = $this->app->Secure->GetPOST("bezeichnung"); $von = $this->app->Secure->GetPOST("von"); $bis = $this->app->Secure->GetPOST("bis"); $adresse = $this->app->Secure->GetPOST("adresse"); $adresse = explode(' ', $adresse); $adresse = $adresse[0]; $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer='$adresse' LIMIT 1"); $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnung,nummer,menge,sort,datum, status,projekt,ort,von,bis,adresse) VALUES ('','$id','$artikel_id','$bezeichnung','$neue_nummer','$menge','$sort','$datum','angelegt','$projekt','$ort','$von','$bis','$adresse')"); $newposid = $this->app->DB->GetInsertID(); } else if ($module == "kalkulation") { $bezeichnung = $this->app->Secure->GetPOST("bezeichnung"); $artikel = $this->app->Secure->GetPOST("artikel"); $stueckliste = $this->app->Secure->GetPOST("stueckliste"); $beschreibung = $this->app->Secure->GetPOST("beschreibung"); $betrag = $this->app->Secure->GetPOST("betrag"); $betrag = str_replace(',', '.', $betrag); $kalkulationart = $this->app->Secure->GetPOST("kalkulationart"); //$projekt = $this->app->DB->Select("SELECT projekt FROM kalkulation WHERE mitarbeiternummer='$adresse' LIMIT 1"); $adresse = $this->app->DB->Select("SELECT adresse FROM kalkulation WHERE id='$id' LIMIT 1"); if($artikel > 0) { $tmp = explode(' ', $artikel); $neue_nummer = $tmp[0]; $artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$neue_nummer' LIMIT 1");// AND projekt='$projekt'"); } if($stueckliste > 0) { $tmp = explode(' ', $stueckliste); $neue_nummer = $tmp[0]; $artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$neue_nummer' LIMIT 1");// AND projekt='$projekt'"); } if($bezeichnung=="") $bezeichnung = $this->app->DB->Select("SELECT CONCAT(nummer,' ',name_de) FROM artikel WHERE id='$artikel_id' LIMIT 1"); if($menge=="" && $artikel_id > 0) $menge=1; if($artikel_id > 0 && $betrag=="") $betrag = $this->app->erp->GetVerkaufspreis($artikel_id,$menge,$adresse); if($stueckliste > 0 && $betrag=="") $betrag = $this->app->erp->GetEinkaufspreisStueckliste($artikel_id); $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnung,nummer,menge,sort,datum, status,projekt,betrag,kalkulationart) VALUES ('','$id','$artikel_id','$bezeichnung','$neue_nummer','$menge','$sort','$datum','angelegt','$projekt','$betrag','$kalkulationart')"); $newposid = $this->app->DB->GetInsertID(); } else if ($module == "reisekosten") { $bezeichnung = $this->app->Secure->GetPOST("bezeichnung"); $betrag = $this->app->Secure->GetPOST("betrag"); $betrag = str_replace(',', '.', $betrag); $reisekostenart = $this->app->Secure->GetPOST("reisekostenart"); $abrechnen = $this->app->Secure->GetPOST("abrechnen"); $keineust = $this->app->Secure->GetPOST("keineust"); $uststeuersatz = $this->app->Secure->GetPOST("uststeuersatz"); $bezahlt_wie = $this->app->Secure->GetPOST("bezahlt_wie"); /*adresse = $this->app->Secure->GetPOST("adresse"); $adresse =explode(' ',$adresse); $adresse = $adresse[0]; $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer='$adresse' LIMIT 1"); */ $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnung,nummer,menge,sort,datum, status,projekt,ort,von,bis,betrag,bezahlt_wie,reisekostenart,abrechnen,keineust,uststeuersatz) VALUES ('','$id','$artikel_id','$bezeichnung','$neue_nummer','$menge','$sort','$datum','angelegt','$projekt','$ort','$von','$bis','$betrag','$bezahlt_wie','$reisekostenart','$abrechnen','$keineust','$uststeuersatz')"); $newposid = $this->app->DB->GetInsertID(); } else if ($module == "inventur" && $artikel_id > 0) { $bezeichnung = $this->app->Secure->GetPOST("artikel"); $preis = $this->app->Secure->GetPOST("preis"); $preis = str_replace(',', '.', $preis); $nummer = $this->app->Secure->GetPOST("nummer"); /*adresse = $this->app->Secure->GetPOST("adresse"); $adresse =explode(' ',$adresse); $adresse = $adresse[0]; $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer='$adresse' LIMIT 1"); */ $projekt = $this->app->Secure->GetPOST("projekt"); $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1"); $sort = $this->app->DB->Select("SELECT MAX(sort) FROM $table WHERE $module='$id' LIMIT 1"); $sort = $sort + 1; $artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' LIMIT 1"); $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnung,nummer,menge,sort,projekt,preis) VALUES ('','$id','$artikel_id','$bezeichnung','$nummer','$menge','$sort','$projekt','$preis')"); $newposid = $this->app->DB->GetInsertID(); } else if (($module == "anfrage" || $module == "preisanfrage") && $artikel_id > 0) { /* $bezeichnung = $this->app->Secure->GetPOST("artikel"); $preis = $this->app->Secure->GetPOST("preis"); $preis = str_replace(',','.',$preis); $nummer = $this->app->Secure->GetPOST("nummer"); */ /*adresse = $this->app->Secure->GetPOST("adresse"); $adresse =explode(' ',$adresse); $adresse = $adresse[0]; $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE mitarbeiternummer='$adresse' LIMIT 1"); */ $projekt = $this->app->Secure->GetPOST("projekt"); $projekt = $this->app->DB->Select("SELECT id FROM projekt WHERE abkuerzung='$projekt' LIMIT 1"); $sort = $this->app->DB->Select("SELECT MAX(sort) FROM $table WHERE $module='$id' LIMIT 1"); $sort = $sort + 1; $artikel_id = $this->app->DB->Select("SELECT id FROM artikel WHERE nummer='$nummer' LIMIT 1"); $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnung,beschreibung,nummer,menge,sort,projekt,preis) VALUES ('','$id','$artikel_id','$bezeichnung','$beschreibung','$nummer','$menge','$sort','$projekt','$preis')"); $newposid = $this->app->DB->GetInsertID(); } else if ($module == "bestellung" && $artikel_id > 0) { $bestellnummer = $this->app->Secure->GetPOST("bestellnummer"); $bezeichnunglieferant = $this->app->Secure->GetPOST("bezeichnunglieferant"); $waehrung = $this->app->Secure->GetPOST("waehrung"); if($waehrung=="") $waehrung = $this->app->DB->Select("SELECT waehrung FROM $module WHERE id='$id' LIMIT 1"); if($this->app->erp->Firmendaten("bestellungmitartikeltext")!="1") $beschreibung = ""; //hier muesste man beeichnung bei lieferant auch noch speichern .... oder beides halt $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,bezeichnunglieferant,beschreibung,bestellnummer,menge,sort,lieferdatum, status,projekt,vpe,preis,waehrung,umsatzsteuer,einheit,kostenstelle) VALUES ('','$id','$artikel_id','$bezeichnunglieferant','$beschreibung','$bestellnummer','$menge','$sort','$lieferdatum','angelegt','$projekt','$vpe','$preis','$waehrung','$umsatzsteuer','$einheit','$kostenstelle')"); $newposid = $this->app->DB->GetInsertID(); $menge2 = $this->app->erp->PruefeMengeVPE($table, $newposid, $menge); if($menge != $menge2)$this->app->DB->Update("UPDATE $table SET menge = '$menge2' WHERE id = '$newposid' LIMIT 1"); $ust_befreit = $this->app->DB->Select("SELECT ust_befreit FROM $module WHERE id = '$id' LIMIT 1"); $umsatzsteuer = $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id = '$artikel_id' LIMIT 1"); $kategorie = str_replace('_kat','',$this->app->DB->Select("SELECT typ FROM artikel WHERE id = '$artikel_id' LIMIT 1")); if($kategorie && is_numeric($kategorie)) { $kategorie = (int)$kategorie; $kategorie = $this->app->DB->Select("SELECT id FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }else $kategorie = false; if($umsatzsteuer !== 'ermaessigt' && $umsatzsteuer !== 'befreit') { $umsatzsteuer = 'normal'; } $steuersatz = false; if($ust_befreit == 1) { $steuertext = $this->app->DB->Select("SELECT steuertext_innergemeinschaftlich FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$steuertext && $kategorie)$steuertext = $this->app->DB->Select("SELECT steuertext_innergemeinschaftlich FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); if($umsatzsteuer === 'ermaessigt') { $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = null;//$this->app->DB->Select("SELECT steuersatz_erloese_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($umsatzsteuer === 'befreit'){ $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_nichtsteuerbar FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = 0; }else{ $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_eunormal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_eunormal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = null;//$this->app->DB->Select("SELECT steuersatz_erloese_eunormal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_eunormal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); } }elseif($ust_befreit == 2) { $steuertext = $this->app->DB->Select("SELECT steuertext_export FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$steuertext && $kategorie)$steuertext = $this->app->DB->Select("SELECT steuertext_export FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($ust_befreit == 3) { $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_nichtsteuerbar FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = 0; }else{ $steuertext = ''; if($umsatzsteuer === 'ermaessigt') { $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_ermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_ermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = null;//$this->app->DB->Select("SELECT steuersatz_aufwendung_ermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_aufwendung_ermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($umsatzsteuer === 'befreit') { $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_nichtsteuerbar FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = 0; }else{ $erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_normal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_aufwendung_inland_normal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = null;//$this->app->DB->Select("SELECT steuersatz_aufwendung_normal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_aufwendung_normal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); } } if($steuersatz !== false && !is_null($steuersatz)) { //$this->app->DB->Update("UPDATE $table SET steuersatz = '$steuersatz' WHERE id = '$newposid' LIMIT 1"); } //if($erloese)$this->app->DB->Update("UPDATE $table SET erloese = '$erloese' WHERE id = '$newposid' LIMIT 1"); ///if($steuertext)$this->app->DB->Update("UPDATE $table SET steuertext = '".$this->app->DB->real_escape_string($steuertext)."' WHERE id = '$newposid' LIMIT 1"); } else if ($module == "produktion" && $artikel_id > 0) { } else if ($module == "gutschrift" && $artikel_id > 0) { $waehrung = $this->app->Secure->GetPOST("waehrung"); if($waehrung=="") $waehrung = $this->app->DB->Select("SELECT waehrung FROM $module WHERE id='$id' LIMIT 1"); // mlm punkte bei angebot, auftrag und rechnung $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,beschreibung,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe,artikelnummerkunde,zolltarifnummer,kostenstelle,herkunftsland,einheit,rabatt,keinrabatterlaubt,lieferdatumkw) VALUES ('','$id','$artikel_id','$beschreibung','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuer','angelegt','$projekt','$vpe','$artikelnummerkunde','$zolltarifnummer','$kostenstelle','$herkunftsland','$einheit','$rabatt','$keinrabatterlaubt','$lieferdatumkw')"); $newposid = $this->app->DB->GetInsertID(); $menge2 = $this->app->erp->PruefeMengeVPE($table, $newposid, $menge); if($menge != $menge2)$this->app->DB->Update("UPDATE $table SET menge = '$menge2' WHERE id = '$newposid' LIMIT 1"); $ust_befreit = $this->app->DB->Select("SELECT ust_befreit FROM $module WHERE id = '$id' LIMIT 1"); $umsatzsteuer = $this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id = '$artikel_id' LIMIT 1"); $kategorie = str_replace('_kat','',$this->app->DB->Select("SELECT typ FROM artikel WHERE id = '$artikel_id' LIMIT 1")); if($kategorie && is_numeric($kategorie)) { $kategorie = (int)$kategorie; $kategorie = $this->app->DB->Select("SELECT id FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }else $kategorie = false; if($umsatzsteuer != 'ermaessigt' && $umsatzsteuer != 'befreit')$umsatzsteuer = 'normal'; $steuersatz = false; if($ust_befreit == 1) { $steuertext = $this->app->DB->Select("SELECT steuertext_innergemeinschaftlich FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$steuertext && $kategorie)$steuertext = $this->app->DB->Select("SELECT steuertext_innergemeinschaftlich FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); if($umsatzsteuer == 'ermaessigt') { $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); }elseif($umsatzsteuer == 'befreit'){ $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }else{ $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_eunormal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_eunormal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_eunormal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); } }elseif($ust_befreit == 2) { $steuertext = $this->app->DB->Select("SELECT steuertext_export FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$steuertext && $kategorie)$steuertext = $this->app->DB->Select("SELECT steuertext_export FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($ust_befreit == 3) { $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); $steuersatz = 0; }else{ $steuertext = ''; if($umsatzsteuer == 'ermaessigt') { $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_ermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_ermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_ermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); }elseif($umsatzsteuer == 'befreit'){ $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }else{ $erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_normal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_normal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_normal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); } } if($steuersatz !== false && !is_null($steuersatz)) { //$this->app->DB->Update("UPDATE $table SET steuersatz = '$steuersatz' WHERE id = '$newposid' LIMIT 1"); } //if($erloese)$this->app->DB->Update("UPDATE $table SET erloese = '$erloese' WHERE id = '$newposid' LIMIT 1"); //($steuertext)$this->app->DB->Update("UPDATE $table SET steuertext = '".$this->app->DB->real_escape_string($steuertext)."' WHERE id = '$newposid' LIMIT 1"); $this->app->erp->GutschriftNeuberechnen($id); } else if ($module == "auftrag" || $module == "rechnung" || $module == "angebot" || $module == "proformarechnung") { $waehrung = $this->app->Secure->GetPOST("waehrung"); if($waehrung=="") $waehrung = $this->app->DB->Select("SELECT waehrung FROM $module WHERE id='$id' LIMIT 1"); if ($artikel_id > 0) { $articleRow = $this->app->DB->SelectRow(sprintf('SELECT * FROM artikel WHERE id = %d', $artikel_id)); $istportoartikel = !empty($articleRow['porto']);// $this->app->DB->Select("SELECT id FROM artikel WHERE id='$artikel_id' AND porto='1'"); $istdienstleistungsartikel = !empty($articleRow['dienstleistung']);//$this->app->DB->Select("SELECT id FROM artikel WHERE id='$artikel_id' AND dienstleistung='1'"); $istindividualartikel = !empty($articleRow['individualartikel']);//$this->app->DB->Select("SELECT id FROM artikel WHERE id='$artikel_id' AND individualartikel='1'"); if($module == "angebot" && $this->app->erp->Firmendaten('staffelpreiseanzeigen') && !$istportoartikel && !$istdienstleistungsartikel && !$istindividualartikel){ $id = $this->app->Secure->GetGET("id"); $adresse = $this->app->DB->Select("SELECT adresse FROM angebot WHERE id ='$id'"); $allestaffelpreise = array(); $allestaffelpreise = $this->app->DB->SelectArr("SELECT * FROM verkaufspreise WHERE artikel='$artikel_id' AND geloescht = 0 AND (gueltig_bis >= '".date("Y-m-d")."' OR gueltig_bis = '0000-00-00') AND (gueltig_ab <= '".date("Y-m-d")."' OR gueltig_ab = '0000-00-00') AND (adresse='0' OR adresse='$adresse') AND (gruppe='0') AND inbelegausblenden=0"); $anzeigepreise = array(); for ($i=0; $i < (empty($allestaffelpreise)?0:count($allestaffelpreise)); $i++) { if(!isset($anzeigepreise[$allestaffelpreise[$i]['ab_menge']])){ $anzeigepreise[$allestaffelpreise[$i]['ab_menge']] = $allestaffelpreise[$i]; }else{ if($allestaffelpreise[$i]['adresse'] != '0' || ($anzeigepreise[$allestaffelpreise[$i]['ab_menge']]['gruppe'] == '0' && $anzeigepreise[$allestaffelpreise[$i]['ab_menge']]['adresse'] == '0')){ $anzeigepreise[$allestaffelpreise[$i]['ab_menge']] = $allestaffelpreise[$i]; } } } if((empty($anzeigepreise)?0:count($anzeigepreise))>1){ ksort($anzeigepreise); $staffelpreistext = ''; $belegsprache = $this->app->DB->Select("SELECT sprache FROM $module WHERE id='$id' LIMIT 1"); $praefixwort = $this->app->erp->Beschriftung("dokument_staffelpreis_von", $belegsprache).' '; $beschriftungeinheit = $this->app->erp->Beschriftung("dokument_staffelpreis_stueck", $belegsprache); $artikeleinheit = $this->app->DB->Select("SELECT einheit FROM artikel WHERE id = '$artikel_id' LIMIT 1"); $standardeinheit = $this->app->erp->Firmendaten("artikeleinheit_standard"); if($praefixwort === ' '){ $praefixwort = 'from '; } if($beschreibung){ $staffelpreistext = '
'; } if($standardeinheit){ $einheit = $standardeinheit; } if($beschriftungeinheit){ $einheit = $beschriftungeinheit; } if($artikeleinheit){ $einheit = $artikeleinheit; } foreach ($anzeigepreise as $key => $value) { $praefix = $praefixwort; if($key == 1){ $praefix = ''; } $staffelpreistext .= $praefix.number_format($key,($key == (int)$key?0:2),",",".")." $einheit ".$this->app->DB->real_escape_string($this->app->erp->formatMoney($value['preis'],$value['waehrung'],2))." ".$value['waehrung']."
"; } if($staffelpreistext != ''){ $beschreibung .= $staffelpreistext; } } } $steuersatzartikel = $this->app->DB->Select("SELECT IFNULL(steuersatz,'NULL') FROM artikel WHERE id='$artikel_id' LIMIT 1"); // mlm punkte bei angebot, auftrag und rechnung $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,beschreibung,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe,punkte,bonuspunkte,mlmdirektpraemie,artikelnummerkunde,zolltarifnummer,kostenstelle,herkunftsland,einheit,rabatt,keinrabatterlaubt,lieferdatumkw,steuersatz) VALUES ('','$id','$artikel_id','$beschreibung','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuer','angelegt','$projekt','$vpe','$mlmpunkte','$mlmbonuspunkte','$mlmdirektpraemie','$artikelnummerkunde','$zolltarifnummer','$kostenstelle','$herkunftsland','$einheit','$rabatt','$keinrabatterlaubt','$lieferdatumkw',$steuersatzartikel)"); $newposid = $this->app->DB->GetInsertID(); $menge2 = $this->app->erp->PruefeMengeVPE($table, $newposid, $menge); if($menge != $menge2)$this->app->DB->Update("UPDATE $table SET menge = '$menge2' WHERE id = '$newposid' LIMIT 1"); $originalpreis = $preis; $originalwaehrung = $waehrung; $ekpreisp = $this->app->erp->GetEinkaufspreisWaehrung($artikel_id, $menge, $waehrung, $originalwaehrung, $originalpreis); $dbeitrag = 1; if(!is_null($ekpreisp) && (int)$preis*(100-(int)$rabatt)/100 != 0) { $dbeitrag = ((int)$preis*(100-(int)$rabatt)/100-(int)$ekpreisp)/((int)$preis*(100-(int)$rabatt)/100); } $this->app->DB->Update("UPDATE $table SET einkaufspreis = '$ekpreisp', einkaufspreisurspruenglich = '$originalpreis',ekwaehrung = '$originalwaehrung', deckungsbeitrag = '$dbeitrag' WHERE id = '$newposid' LIMIT 1"); $ust_befreit = $this->app->DB->Select("SELECT ust_befreit FROM $module WHERE id = '$id' LIMIT 1"); $umsatzsteuer = $articleRow['umsatzsteuer'];//$this->app->DB->Select("SELECT umsatzsteuer FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //$kategorie = str_replace('_kat','',$this->app->DB->Select("SELECT typ FROM artikel WHERE id = '$artikel_id' LIMIT 1")); $kategorie = str_replace('_kat','',$articleRow['typ']); if($kategorie && is_numeric($kategorie)) { $kategorie = (int)$kategorie; $kategorie = $this->app->DB->Select("SELECT id FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }else { $kategorie = false; } if($umsatzsteuer != 'ermaessigt' && $umsatzsteuer != 'befreit') { $umsatzsteuer = 'normal'; } $steuersatz = false; if($ust_befreit == 1) { //$steuertext = $articleRow['steuertext_innergemeinschaftlich'];//$this->app->DB->Select("SELECT steuertext_innergemeinschaftlich FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$steuertext && $kategorie) { ///$steuertext = $this->app->DB->Select("SELECT steuertext_innergemeinschaftlich FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); } if($umsatzsteuer === 'ermaessigt') { //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); if(!$erloese && $kategorie) { //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); } //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($umsatzsteuer === 'befreit'){ //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //$steuersatz = 0; }else{ ///$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_eunormal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_eunormal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_eunormal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_eunormal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); } }elseif($ust_befreit == 2) { //$steuertext = $this->app->DB->Select("SELECT steuertext_export FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(!$steuertext && $kategorie)$steuertext = $this->app->DB->Select("SELECT steuertext_export FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_euermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($ust_befreit == 3) { //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); $steuersatz = 0; }else{ //$steuertext = ''; if($umsatzsteuer === 'ermaessigt') { //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_ermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_ermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_ermaessigt FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_ermaessigt FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); }elseif($umsatzsteuer === 'befreit') { //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_nichtsteuerbar FROM artikel WHERE id = '$artikel_id' LIMIT 1"); }else{ //$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_normal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(!$erloese && $kategorie)$erloese = $this->app->DB->Select("SELECT steuer_erloese_inland_normal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); //$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_normal FROM artikel WHERE id = '$artikel_id' LIMIT 1"); //if(($steuersatz === false || is_null($steuersatz)) && $kategorie)$steuersatz = $this->app->DB->Select("SELECT steuersatz_erloese_normal FROM artikelkategorien WHERE id = '$kategorie' LIMIT 1"); } } if($steuersatz !== false && !is_null($steuersatz)) { //$this->app->DB->Update("UPDATE $table SET steuersatz = '$steuersatz' WHERE id = '$newposid' LIMIT 1"); } //if($erloese)$this->app->DB->Update("UPDATE $table SET erloese = '$erloese' WHERE id = '$newposid' LIMIT 1"); //if($steuertext)$this->app->DB->Update("UPDATE $table SET steuertext = '".$this->app->DB->real_escape_string($steuertext)."' WHERE id = '$newposid' LIMIT 1"); switch ($module) { case "angebot": $this->app->erp->AngebotNeuberechnen($id); break; case "auftrag": $this->app->DB->Update( sprintf( 'UPDATE `artikel` SET `laststorage_changed` = NOW() WHERE `id` = %d', $artikel_id ) ); $this->app->erp->AuftragNeuberechnen($id); $this->app->erp->AuftragEinzelnBerechnen($id); break; case "rechnung": $this->app->erp->RechnungNeuberechnen($id); break; } } } elseif($module == "verbindlichkeit") { if ($artikel_id > 0) { $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,beschreibung,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe) VALUES ('','$id','$artikel_id','$beschreibung','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuer','angelegt','$projekt','$vpe')"); $newposid = $this->app->DB->GetInsertID(); } } else { if ($artikel_id > 0) { $newposid = null; $inputArr = [ 'article_id' => $artikel_id, 'description' => $beschreibung, 'name' => $bezeichnung, 'number' => $neue_nummer, 'quantity' => $menge, 'price' => $preis, 'currency' => $waehrung, 'sort' => $sort, 'document_id' => $id ]; $this->app->erp->RunHook('yui_insert_position', 3, $table, $inputArr, $newposid); // mlm punkte bei angebot, auftrag und rechnung if($newposid === null) { $this->app->DB->Insert("INSERT INTO $table (id,$module,artikel,beschreibung,bezeichnung,nummer,menge,preis, waehrung, sort,lieferdatum, umsatzsteuer, status,projekt,vpe,punkte,bonuspunkte,mlmdirektpraemie) VALUES ('','$id','$artikel_id','$beschreibung','$bezeichnung','$neue_nummer','$menge','$preis','$waehrung','$sort','$lieferdatum','$umsatzsteuer','angelegt','$projekt','$vpe','$mlmpunkte','$mlmbonuspunkte','$mlmdirektpraemie')"); $newposid = $this->app->DB->GetInsertID(); } } } $module = $this->app->Secure->GetGET("module"); if($module=="angebot" || $module=="auftrag" || $module=="rechnung" || $module=="gutschrift"){ $this->app->erp->RunHook("beleg_afterinsertposition", 5, $module, $id, $artikel_id, $menge, $newposid); } // Wenn Unikat-Artikel (Individualartikel) > direkt nach dem Einfügen das Bearbeiten-Popup öffnen if($newposid > 0){ $istUnikat = (bool)$this->app->DB->Select(sprintf("SELECT a.unikat FROM artikel AS a WHERE a.id = '%s'", $artikel_id)); if ($istUnikat) { $this->app->Tpl->Add('TAB1',""); } } if($newposid > 0 && $module!="reisekosten") { $tmpfreifelder = $this->app->DB->SelectArr("SELECT * FROM artikel WHERE id='".$artikel_id."'"); if($variante_von)$tmpfreifelder_variante_von = $this->app->DB->SelectArr("SELECT * FROM artikel WHERE id='".$variante_von."'"); switch($module) { case "angebot": $kurz="an"; break; case "auftrag": $kurz="ab"; break; case "rechnung": $kurz="re"; break; case "gutschrift": $kurz="gs"; break; case "lieferschein": $kurz="ls"; break; case "retoure": $kurz="rt"; break; case "bestellung": $kurz="be"; break; case "proformarechnung": $kurz="pr"; break; case "preisanfrage": $kurz="pa"; break; } $language = $this->app->erp->GetSpracheBelegISO($module,$id); for($ifreifeld=1;$ifreifeld<=40;$ifreifeld++) { if($this->app->erp->Firmendaten("freifeld".$ifreifeld.$kurz)=="1") { $check_language = $this->app->DB->Select("SELECT wert FROM artikel_freifelder WHERE artikel=$artikel_id AND sprache='$language' LIMIT 1"); if($check_language!="") $tmpfreifelder[0]['freifeld'.$ifreifeld] = $check_language ; if((String)$tmpfreifelder[0]['freifeld'.$ifreifeld] !== "") { $this->app->DB->Update("UPDATE $table SET freifeld".$ifreifeld."='".$this->app->DB->real_escape_string($tmpfreifelder[0]['freifeld'.$ifreifeld])."' WHERE id='".$newposid."'"); }elseif($variante_von){ $this->app->DB->Update("UPDATE $table SET freifeld".$ifreifeld."='".$this->app->DB->real_escape_string($tmpfreifelder_variante_von[0]['freifeld'.$ifreifeld])."' WHERE id='".$newposid."'"); } } } // ohne preis im PDF if($module=="angebot" || $module=="auftrag" || $module=="rechnung" || $module=="gutschrift") $this->app->DB->Update("UPDATE $table SET ohnepreis='$ohnepreisimpdf' WHERE id='".$newposid."'"); } if($module=="auftrag" || $module=="rechnung" || $module=="gutschrift")$this->app->DB->Update("UPDATE $module SET extsoll = 0 WHERE id = '$id'"); } if ($module == "produktion") { } if ($module == "auftrag") { $this->app->erp->AuftragExplodieren($id, "auftrag"); } $this->app->erp->RunHook("AARLGPositionen_cmds_end2", 1, $id); /* ende neu anlegen formular */ $this->app->Tpl->Set('SUBSUBHEADING', "Positionen"); if($module == 'produktion') { $menu = array("edit" => "positioneneditpopup","copy"=>"copy{$module}position", "del" => "del{$module}position"); } else { $menu = array("up" => "up{$module}position", "down" => "down{$module}position", //"add"=>"addstueckliste", "edit" => "positioneneditpopup","copy"=>"copy{$module}position", "del" => "del{$module}position"); } $anzeigebrutto = false; $preiscell = 'b.preis'; if($module == 'auftrag' || $module == 'rechnung' || $module == 'gutschrift' || $module == 'angebot' || $module == 'proformarechnung') { $docArr = $this->app->DB->SelectRow( sprintf( 'SELECT typ,projekt,adresse,steuersatz_normal,steuersatz_ermaessigt,schreibschutz FROM `%s` WHERE id = %d LIMIT 1', $module, $id ) ); $_anrede = !empty($docArr)?$docArr['typ']: $this->app->DB->Select("SELECT typ FROM $module WHERE id = '$id' LIMIT 1"); $_projekt = !empty($docArr)?$docArr['projekt']:$this->app->DB->Select("SELECT projekt FROM $module WHERE id = '$id' LIMIT 1"); $_adresse = !empty($docArr)?$docArr['adresse']:$this->app->DB->Select("SELECT adresse FROM $module WHERE id = '$id' LIMIT 1"); $funktion = ucfirst($module).'MitUmsatzeuer'; $_anrede = 'firma'; if($this->app->erp->AnzeigePositionenBrutto($_anrede, $module, $_projekt, $_adresse,$id) && $this->app->erp->$funktion($id)) { $umsatzsteuer_ermaessigt = !empty($docArr)?(float)$docArr['steuersatz_ermaessigt']:(float)$this->app->DB->Select("SELECT steuersatz_ermaessigt FROM $module WHERE id = '$id' LIMIT 1"); $umsatzsteuer_normal = !empty($docArr)?(float)$docArr['steuersatz_normal']:(float)$this->app->DB->Select("SELECT steuersatz_normal FROM $module WHERE id = '$id' LIMIT 1"); $preiscell = " round(10000000 * b.preis*(1+ if(isnull(b.steuersatz) OR b.steuersatz < 0, if(b.umsatzsteuer = 'befreit',0, if(b.umsatzsteuer = 'ermaessigt', $umsatzsteuer_ermaessigt, if(ifnull(b.umsatzsteuer,'') <> '', $umsatzsteuer_normal, if(a.umsatzsteuer = 'befreit',0, if(a.umsatzsteuer = 'ermaessigt', $umsatzsteuer_ermaessigt,$umsatzsteuer_normal) ) ) ) ) ,b.steuersatz) /100)) / 10000000 "; $anzeigebrutto = true; } } $sortcol = ' b.sort '; $schreibschutz = !empty($docArr)?$docArr['schreibschutz']:$this->app->DB->Select("SELECT schreibschutz FROM $module WHERE id='$id'"); if(!$schreibschutz)$sortcol = " concat('',b.sort) as sort "; if ($module == "auftrag") { $check_waehrung = $this->app->DB->Select("SELECT COUNT(DISTINCT waehrung) FROM auftrag_position WHERE auftrag='$id'"); if($check_waehrung >=2) { $this->app->Tpl->Set('MESSAGE',"
Achtung es ist mehr als eine Währungsart angegeben. In dem Auftrag darf nur eine Währungsart angeben sein!
"); } else { $waehrung_bestellung = $this->app->DB->Select("SELECT waehrung FROM auftrag_position WHERE auftrag='$id' LIMIT 1"); $this->app->DB->Update("UPDATE auftrag SET waehrung='$waehrung_bestellung' WHERE id='$id' AND waehrung='' LIMIT 1"); } $sql = "SELECT $sortcol, CONCAT($hersteller_ansicht if(b.explodiert_parent,if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT('',SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...',''),CONCAT('',b.bezeichnung,' *','')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT('',SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...',''),CONCAT('',b.bezeichnung,' (zu Stückliste ',(SELECT ba.nummer FROM $table ba WHERE ba.id=b.explodiert_parent LIMIT 1),')'))), if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) ) $erweiterte_ansicht) as Artikel, p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, ".$this->FormatPreis($preiscell)." as preis, b.waehrung, ".$this->FormatPreis('b.rabatt')." as rabatt,"; if ($this->app->erp->RechteVorhanden('auftrag','einkaufspreise')) { $sql .= $this->FormatPreis('einkaufspreis')." as einkaufspreis, CONCAT(".$this->app->erp->FormatPreis("ROUND(deckungsbeitrag*100,2)",2).",'%') AS DB, "; } $sql .= "b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id' "; //WHERE b.$module='$id' AND b.explodiert_parent='0'"; } else if ($module == "lieferschein") { $sql = "SELECT $sortcol, CONCAT($hersteller_ansicht if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) $erweiterte_ansicht) as Artikel, p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, if(b.geliefert, ".$this->app->erp->FormatMenge('b.geliefert')." ,'-') as geliefert, b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module === 'retoure') { $projekte = $this->app->User->getUserProjects(); $projekte[] = 0; $projekte = implode(', ', $projekte); $colgrund = ''; $rmavorlagen = $this->app->DB->SelectPairs( sprintf( 'SELECT rvg.bezeichnung, lp.kurzbezeichnung FROM rma_vorlagen_grund AS rvg LEFT JOIN lager_platz AS lp ON rvg.default_storagelocation = lp.id AND lp.geloescht <> 1 WHERE rvg.ausblenden = 0 AND (rvg.projekt IN (%s)) ORDER BY rvg.bezeichnung', $projekte ) ); $bezeichnungenArr = ["''"]; if($rmavorlagen) { foreach($rmavorlagen as $v => $lag) { $bezeichnungenArr[] = sprintf( "'%s'", $this->app->DB->real_escape_string($v) ); } } $colgrund = sprintf( "CONCAT('')"; $sql = "SELECT $sortcol, CONCAT($hersteller_ansicht if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) $erweiterte_ansicht) as Artikel, p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, if(b.geliefert, ".$this->app->erp->FormatMenge('b.geliefert')." ,'-') as geliefert, if(b.menge_eingang, ".$this->app->erp->FormatMenge('b.menge_eingang')." ,'-') as `Eingang`, if(b.menge_gutschrift, ".$this->app->erp->FormatMenge('b.menge_gutschrift')." ,'-') as `Menge Gutschrift`, $colgrund AS `Grund`, IFNULL(lp.kurzbezeichnung,'') as `Lager`, b.id as id FROM $table AS b LEFT JOIN lager_platz AS lp ON b.default_storagelocation = lp.id LEFT JOIN artikel AS a ON a.id=b.artikel LEFT JOIN projekt AS p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "inventur") { $sql = "SELECT $sortcol, if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) as Artikel, p.abkuerzung as projekt, b.nummer as nummer, trim(b.menge)+0 as menge, ".$this->FormatPreis(' b.preis')." as preis, b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "anfrage" || $module == "preisanfrage") { $sql = "SELECT $sortcol, if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) as Artikel, p.abkuerzung as projekt, b.nummer as nummer, DATE_FORMAT(b.lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "bestellung") { $check_waehrung = $this->app->DB->Select("SELECT COUNT(DISTINCT waehrung) FROM bestellung_position WHERE bestellung='$id'"); if($check_waehrung >=2) { $this->app->Tpl->Set('MESSAGE',"
Achtung es ist mehr als eine Währungsart angegeben. In der Bestellung darf nur eine Währungsart angeben sein!
"); } else { $waehrung_bestellung = $this->app->DB->Select("SELECT waehrung FROM bestellung_position WHERE bestellung='$id' LIMIT 1"); $this->app->DB->Update("UPDATE bestellung SET waehrung='$waehrung_bestellung' WHERE id='$id' AND waehrung='' LIMIT 1"); } $sql = "SELECT $sortcol,CONCAT($hersteller_ansicht if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnunglieferant)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnunglieferant,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnunglieferant,' *')), if(CHAR_LENGTH(b.bezeichnunglieferant)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnunglieferant,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnunglieferant))) as Artikel, p.abkuerzung as projekt, a.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, ".$this->FormatPreis(' b.preis')." as preis, b.waehrung, b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "arbeitsnachweis") { $sql = "SELECT $sortcol, adr.name as name, b.ort as ort, DATE_FORMAT(datum,'%d.%m.%Y') as rdatum, b.von as von, b.bis as bis, if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) as Artikel, b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN adresse adr ON adr.id=b.adresse LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "kalkulation") { $this->app->erp->KalkulationNeuberechnen($id); $tmp_when = $this->app->erp->GetKalkulationartAssoc(); foreach($tmp_when as $key=>$value) $str_when .=" WHEN '$key' THEN '$value' "; $sql = "SELECT $sortcol, CASE b.kalkulationart $str_when END, if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung(-20) . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung(-20) . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung(-20) . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung(-20) . "),'...'),b.bezeichnung)) as Artikel, trim(b.menge)+0 as menge, FORMAT(b.betrag,2{$extended_mysql55}) as betrag, FORMAT(b.gesamt,2{$extended_mysql55}) as gesamt, b.id as id FROM $table b LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "reisekosten") { $sql = "SELECT $sortcol, DATE_FORMAT(datum,'%d.%m.%Y') as rdatum, CONCAT(rk.nummer,'- ',rk.beschreibung) as kostenart, FORMAT(b.betrag,2{$extended_mysql55}) as betrag, if(b.abrechnen,'ja','') as abrechnen, if(b.keineust,'keine MwSt','') as keine, CONCAT(b.uststeuersatz,' %') as uststeuersatz, if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung(-20) . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung(-20) . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung(-20) . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung(-20) . "),'...'),b.bezeichnung)) as Artikel, b.bezahlt_wie as bezahlt, b.id as id FROM $table b LEFT JOIN projekt p ON b.projekt=p.id LEFT JOIN reisekostenart rk ON rk.id=b.reisekostenart WHERE b.$module='$id'"; } else if ($module == "produktion") { } else if ($module == "rechnung" || $module == "angebot" || $module == "gutschrift" || $module == "proformarechnung") { $check_waehrung = $this->app->DB->Select("SELECT COUNT(DISTINCT waehrung) FROM ".$module."_position WHERE ".$module."='$id'"); if($check_waehrung >=2) { $this->app->Tpl->Set('MESSAGE',"
Achtung es ist mehr als eine Währungsart angegeben. In ".($module=="angebot"?'dem':'der').' '.ucfirst($module)." darf nur eine Währungsart angeben sein!
"); } else { $waehrung_bestellung = $this->app->DB->Select("SELECT waehrung FROM ".$module."_position WHERE ".$module."='$id' LIMIT 1"); $this->app->DB->Update("UPDATE ".$module." SET waehrung='$waehrung_bestellung' WHERE id='$id' AND waehrung='' LIMIT 1"); } if($module=="angebot") { $erweiterte_ansicht = " ,if(b.optional,' (Optional)','') ".$erweiterte_ansicht; } //$sql = "SELECT if(b.beschreibung!='',if(CHAR_LENGTH(b.bezeichnung)>".$this->app->erp->MaxArtikelbezeichnung().",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1,".$this->app->erp->MaxArtikelbezeichnung()."),'...'),CONCAT(b.bezeichnung,' *'),SUBSTR(b.bezeichnung,1,".$this->app->erp->MaxArtikelbezeichnung().")) as Artikel, if($module == 'angebot') { $sql = "SELECT $sortcol, CONCAT($hersteller_ansicht if(b.explodiert_parent,if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT('',SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...',''),CONCAT('',b.bezeichnung,' *','')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT('',SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...',''),CONCAT('',b.bezeichnung,' (zu Stückliste ',(SELECT ba.nummer FROM $table ba WHERE ba.id=b.explodiert_parent LIMIT 1),')'))), if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) ) $erweiterte_ansicht) as Artikel, p.abkuerzung as projekt, a.nummer as nummer, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, ".$this->FormatPreis($preiscell)." as preis ,b.waehrung, b.rabatt as rabatt,"; if ($this->app->erp->RechteVorhanden('angebot','einkaufspreise')) { $sql .= $this->FormatPreis('einkaufspreis')." as einkaufspreis, CONCAT(".$this->app->erp->FormatPreis("ROUND(deckungsbeitrag*100,2)",2).",'%') AS DB, "; } } else { $sql = "SELECT $sortcol, CONCAT($hersteller_ansicht if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) $erweiterte_ansicht) as Artikel, p.abkuerzung as projekt, a.nummer as nummer, b.nummer as nummer, DATE_FORMAT(lieferdatum, '%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, ".$this->FormatPreis($preiscell)." as preis, b.waehrung, b.rabatt as rabatt, '' AS Einkaufspreis, '' AS DB, "; } $sql .= "b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } else if ($module == "verbindlichkeit") // OpenXE { $sql = " SELECT $sortcol, IF( b.beschreibung != '', IF( CHAR_LENGTH(b.bezeichnung) > " . $this->app->erp->MaxArtikelbezeichnung() . ", CONCAT( SUBSTR( CONCAT(b.bezeichnung, ' *'), 1, " . $this->app->erp->MaxArtikelbezeichnung() . " ), '...' ), CONCAT(b.bezeichnung, ' *') ), IF( CHAR_LENGTH(b.bezeichnung) > " . $this->app->erp->MaxArtikelbezeichnung() . ", CONCAT( SUBSTR( b.bezeichnung, 1, " . $this->app->erp->MaxArtikelbezeichnung() . " ), '...' ), b.bezeichnung ) ) AS Artikel, p.abkuerzung AS projekt, a.nummer, ".$this->app->erp->FormatDate('lieferdatum')." AS lieferdatum, TRIM(b.menge) +0 AS menge, " . $this->FormatPreis($preiscell) . " AS preis, " . $this->FormatPreis($preiscell."*menge") . " AS Betrag, CONCAT( k.sachkonto, ' - ', k.beschriftung ) AS sachkonto, b.id AS id FROM $table b LEFT JOIN artikel a ON a.id = b.artikel LEFT JOIN projekt p ON b.projekt = p.id LEFT JOIN kontorahmen k ON k.id = b.sachkonto WHERE b.$module = '$id' "; } else { $sql = null; $this->app->erp->RunHook('yui_position_sql', 3, $table, $id, $sql); if($sql === null){ //$sql = "SELECT if(b.beschreibung!='',if(CHAR_LENGTH(b.bezeichnung)>".$this->app->erp->MaxArtikelbezeichnung().",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1,".$this->app->erp->MaxArtikelbezeichnung()."),'...'),CONCAT(b.bezeichnung,' *'),SUBSTR(b.bezeichnung,1,".$this->app->erp->MaxArtikelbezeichnung().")) as Artikel, $sql = "SELECT $sortcol, if(b.beschreibung!='', if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(CONCAT(b.bezeichnung,' *'),1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),CONCAT(b.bezeichnung,' *')), if(CHAR_LENGTH(b.bezeichnung)>" . $this->app->erp->MaxArtikelbezeichnung() . ",CONCAT(SUBSTR(b.bezeichnung,1," . $this->app->erp->MaxArtikelbezeichnung() . "),'...'),b.bezeichnung)) as Artikel, p.abkuerzung as projekt, a.nummer as nummer, b.nummer as nummer, DATE_FORMAT(lieferdatum,'%d.%m.%Y') as lieferdatum, trim(b.menge)+0 as menge, " . $this->FormatPreis($preiscell) . " as preis, b.id as id FROM $table b LEFT JOIN artikel a ON a.id=b.artikel LEFT JOIN projekt p ON b.projekt=p.id WHERE b.$module='$id'"; } } //$this->app->Tpl->Add(EXTEND,""); $this->app->YUI->SortListAdd('TAB1', $this, $menu, $sql); if ($schreibschutz != "1") { if($module=='angebot' || $module=='auftrag' || $module=='rechnung') $tplrabatt = " = 0) window.location.href='index.php?module=artikel&action=rabatt&id=$id&cmd={$module}&fmodul={$fmodul}&rabatt='+rabatt;\"> "; $this->app->Tpl->Add('TAB1', "
"); $this->app->Tpl->Add('TAB1', "
"); if ($module != "arbeitsnachweis") { $aktionoptionen = ''; $aktionjs = ''; $this->app->erp->RunHook('AARLGPositionen_aktion', 4, $module, $id, $aktionoptionen, $aktionjs); $this->app->Tpl->Add('AUFTAG_POSITIONUEBERSICHT_HOOK1', $aktionjs); $this->app->Tpl->Add('TAB1' ," {|alle auswählen|} "); } $this->app->Tpl->Add('TAB1', "
"); // ENDE .aarlg-toolbar-left $this->app->Tpl->Add('TAB1', "
"); // ENDE .aarlg-toolbar-left if(in_array($module ,array('auftrag', 'rechnung', 'gutschrift', 'angebot', 'lieferschein', 'bestellung','proformarechnung'))) { $extraoption = ''; if($module === 'angebot'){ $extraoption = ''; } $this->app->Tpl->Add('TAB1', "  " ." "); $target = 'TAB1'; $this->app->erp->RunHook("BelegPositionenButtons", 3, $target, $module, $id); $this->app->Tpl->Add('TAB1', $tplrabatt); } else if (in_array($module ,array('preisanfrage'))) { $this->app->Tpl->Add('TAB1', "  " ." "); $target = 'TAB1'; $this->app->erp->RunHook("BelegPositionenButtons", 3, $target, $module, $id); $this->app->Tpl->Add('TAB1', $tplrabatt); } $this->app->Tpl->Add('TAB1', "[EXTRAPOSBUTTONS]"); $this->app->Tpl->Add('TAB1', "
"); // ENDE .aarlg-toolbar-right $this->app->Tpl->Add('TAB1', "
"); // ENDE .aarlg-toolbar } $this->app->BuildNavigation = false; $this->app->Tpl->Add('EXTRAPOSBUTTONS',''); $this->app->Tpl->Add('PAGE', "
"); $scrollpos = $this->app->User->GetParameter('positioneniframe_savescrollpos_'.$module); $this->DrawPositionExtras($module, $id, $schreibschutz); if ($module == "arbeitsnachweis") $this->app->Tpl->Parse('PAGE', "arbeitsnachweis_positionuebersicht.tpl"); else { if((String)$scrollpos !== '') { $this->app->User->SetParameter('positioneniframe_savescrollpos_'.$module, ''); $this->app->Tpl->Add('PAGE',''); }else{ $this->app->Tpl->Add('PAGE',''); } $this->app->Tpl->Parse('PAGE', "auftrag_positionuebersicht.tpl"); } $this->app->Tpl->Add('PAGE', "
"); } } function FormatPreis($spalte) { return "if(trim(round( $spalte *100))+0 <> trim($spalte*100)+0, format($spalte, length( trim($spalte)+0)-length(round($spalte))-1 ,'de_DE'),format($spalte,2,'de_DE'))"; } function DrawPositionExtras($module, $id, $schreibschutz = 0) { $modules = array('auftrag', 'rechnung', 'gutschrift', 'angebot', 'lieferschein', 'retoure', 'bestellung', 'produktion','proformarechnung','preisanfrage'); if(!in_array($module, $modules))return; $this->ReSortDrawItem($module, $id); /*$drawpositionen = $this->app->DB->SelectArr("SELECT * FROM beleg_zwischenpositionen WHERE doctype like '".$module."' AND doctypeid = '$id' ORDER BY pos, sort DESC"); foreach($drawpositionen as $k => $v) { if($v['wert']) { $j = json_decode($v['wert']); if($j !== false) { $drawpositionen[$k]['wert'] = $j; } } }*/ //$this->app->Tpl->Add('DRAWPOSITIONEN',json_encode($drawpositionen, JSON_HEX_APOS)); $this->app->Tpl->Add('DRAWPOSITIONEN',''); if($schreibschutz) { $this->app->Tpl->Set('SCHREIBSCHUTZ','true'); }else{ $this->app->Tpl->Set('SCHREIBSCHUTZ','false'); if($this->app->erp->Firmendaten("briefhtml")=="1") $this->CkEditor('grtext',"belege"); } if($module === 'angebot'){ $this->app->Tpl->Set('GRUPPENSUMMEMITOPTIONALENPREISEN',''); } $this->app->Tpl->Set('ID',$this->app->Secure->GetGET('id')); $this->app->Tpl->Set('DOCTYP',$this->app->Secure->GetGET('module')); $this->app->Tpl->Set('COLOURODD','#e0e0e0'); $this->app->Tpl->Set('COLOUREVEN','#fff'); $this->app->Tpl->Set('DRAWTHEME',$this->app->Conf->WFconf['defaulttheme']); $this->app->Tpl->Set('FMODUL',$this->app->Secure->GetGET('fmodul')); $this->app->Tpl->Parse('TAB1','auftrag_position_extra.tpl'); } function FormatTableSmartphone($tableselector, $column) { $column = (int)$column; $name = 'x'.md5($tableselector); $this->app->Tpl->Add('JQUERYREADY', ' var '.$name.'anzth = $(\''.$tableselector.'\').find(\'tr\').first().find(\'th\').length; var '.$name.'anztd = $(\''.$tableselector.'\').find(\'tr\').first().find(\'td\').length; var '.$name.'anz = '.$name.'anzth; if('.$name.'anz <= 0)'.$name.'anz = '.$name.'anztd; var '.$name.'column = '.$column.'; var '.$name.'even = false; $(\''.$tableselector.'\').find(\'td\:nth-child('.$column.')\').each(function(){ '.$name.'even = !'.$name.'even; $(this).toggleClass(\'hide480\', true); var '.$name.'html = $(this).html(); $(this).parent().after(\'\'+'.$name.'html+\'\'); $(this).parent().find(\'td\').css(\'background\',('.$name.'even?\'#e0e0e0\':\'#fff\')); }); '); } function ParserVarIf($parsvar, $choose) { if ($choose == 0) { $this->app->Tpl->Set($parsvar . "IF", ""); $this->app->Tpl->Set($parsvar . "ENDIF", ""); } else { $this->app->Tpl->Set($parsvar . "IF", ""); $this->app->Tpl->Set($parsvar . "ELSE", ""); } } function ColorPicker($name,$withhex=false) { if($withhex) { $this->app->Tpl->Add('JQUERY', '$( "#' . $name . '" ).colorPicker({showHexField:true});'); } else { $this->app->Tpl->Add('JQUERY', '$( "#' . $name . '" ).colorPicker();'); } } function CkEditor($name,$configuration="basic", $options = null, $target = 'JQUERY') { $useVersion5 = false; if(!empty($options['ckeditor5'])) { $this->app->Tpl->Set('CKEDITORJS', ' '); unset($options['ckeditor5']); $useVersion5 = true; } switch($configuration) { case "none": $config[]= " toolbar: [ ]"; $config[] = " allowedContent:true "; $config[] = " readOnly:true "; break; case "minimal": if(!$useVersion5){ $config[] = " extraPlugins: 'colorbutton,font,removeformat' "; $config[]= " toolbar: [] "; } else { $config[]= "\"toolbar\":[]"; } break; case "basic": $config[]= " toolbar: [ ['Bold', 'Italic', 'Underline','RemoveFormat', '-', 'Undo', 'Redo', '-', 'SelectAll'], ['Source'] ]"; $config[] = " extraPlugins: 'removeformat' "; break; case "belege": $config[]= " toolbar: [ ['Bold', 'Italic', 'Underline','RemoveFormat', '-', 'Undo', 'Redo'],['NumberedList','BulletedList'], ['Font','FontSize','TextColor'],['Source'] ]"; $config[] = " allowedContent:true "; $config[] = " extraPlugins: 'colorbutton,font' "; break; case "all": $config[]= " toolbar: [ ['Bold', 'Italic', 'Underline','RemoveFormat', '-', 'Undo', 'Redo'],['NumberedList','BulletedList'], ['Font','FontSize','TextColor'],['Source'] ]"; $config[] = " allowedContent:true "; $config[] = " extraPlugins: 'colorbutton,font,removeformat' "; break; case "wiki": $wikiname = (is_array($options) && array_key_exists('wikiname', $options)) ? $options['wikiname'] : ''; if(!$useVersion5){ $config[] = " allowedContent:true "; $config[] = " extraPlugins: 'colorbutton,font,removeformat,' "; $config[] = " filebrowserBrowseUrl: 'index.php?module=wiki&action=dateien&cmd={$wikiname}&subcmd=browse' "; $config[] = " filebrowserWindowWidth: '60%' "; $config[] = " filebrowserWindowHeight: '60%' "; } else { $config[] = "\"allowedContent\":true"; $config[]= "\"toolbar\":[\"heading\",\"removeFormat\"]"; //$config[] = "\"extraPlugins\":[\"XentralUploadAdapterPlugin\"]"; } /** @see https://ckeditor.com/docs/ckeditor4/latest/guide/dev_file_browser_api.html#example-2 */ break; case "internal": // interne bemerkungen $config[] = " allowedContent:true "; $config[] = " extraPlugins: 'colorbutton,font,removeformat' "; break; } if(is_array($options)) { foreach($options as $k => $v) { if($useVersion5 && in_array($k, ['width','height','min-width','min-height','max-width','max-height'])) { $this->app->Tpl->Add('YUICSS',' #'.$name.' + div.ck-editor div.ck-editor__editable_inline { '.$k.': '.(is_numeric($v)?$v.'px':$v).'; }'); continue; } if($v=="false" || $v=="true"){ if($useVersion5) { $config[] = '"'.$k.'"' . ": " . $v . ""; } else{ $config[] = $k . ": " . $v . ""; } } else{ if($useVersion5) { $config[] = '"'.$k.'"' . ": \"" . $v . "\""; } else{ $config[] = $k . ": '" . $v . "'"; } } } } $config_str = ''; if(isset($config)) { $config_str = implode(",",$config); } $html = ' var ckdata_' . $name . ' = $("#' . $name . '").val(); if(typeof ckdata_' . $name . ' != \'undefined\' && ckdata_' . $name . '.indexOf("<") < 0) { var ckdataanz_' . $name . ' = 0; while(ckdataanz_' . $name . ' < 100 && ckdata_' . $name . '.indexOf("\r\n") > -1) { ckdataanz_' . $name . '++; ckdata_' . $name . ' = ckdata_' . $name . '.replace(/\r\n/g,"
"); } ckdataanz_' . $name . ' = 0; while(ckdataanz_' . $name . ' < 100 && ckdata_' . $name . '.indexOf("\n") > -1) { ckdataanz_' . $name . '++; ckdata_' . $name . ' = ckdata_' . $name . '.replace(/\n/g,"
"); } $("#' . $name . '").val(ckdata_' . $name . '); } '.($useVersion5?' ClassicEditor.create( document.querySelector( \'#'.$name.'\' ), {' . $config_str . '}).then(editor => { editor'.$name.'=editor; }); ': ' $( "#' . $name . '" ).ckeditor({' . $config_str . '});' ). ' '; if($useVersion5 && $target !== 'return') { $html = ''; $this->app->Tpl->Add( 'ADDITIONALJAVASCRIPT', $html ); return $html; } if($useVersion5) { $this->app->Tpl->Add('JAVASCRIPT', 'var editor'.$name.'= null;'); } if($target === 'return') { return $html; } $this->app->Tpl->Add($target, $html); $this->app->Tpl->Add('MSG'.strtoupper($name),' '); } function DatePicker($name) { $this->app->Tpl->Add('JQUERY', '$( "#' . $name . '" ).datepicker({ dateFormat: \'dd.mm.yy\',dayNamesMin: [\'SO\', \'MO\', \'DI\', \'MI\', \'DO\', \'FR\', \'SA\'], firstDay:1, showWeek: true, monthNames: [\'Januar\', \'Februar\', \'März\', \'April\', \'Mai\', \'Juni\', \'Juli\', \'August\', \'September\', \'Oktober\', \'November\', \'Dezember\'], });'); } function TimePicker($name) { $this->app->Tpl->Add('JQUERY', '$( "#' . $name . '" ).timepicker();'); } function Message($class, $msg) { $this->app->Tpl->Add('MESSAGE', "
$msg
"); } function IconsSQLAll() { // $go_lager = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" border=\"0\">"; // $stop_lager = "app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" border=\"0\">"; $tmp = ''; $tmpblue = ''; $tmpstorno = ''; $stop_lager = ''; $abgeschlossen = "app->Conf->WFconf['defaulttheme']}/images/grey.png\" border=\"0\">"; $angelegt = "app->Conf->WFconf['defaulttheme']}/images/dokumentoffen.png\" border=\"0\">"; $storniert = "app->Conf->WFconf['defaulttheme']}/images/storno.png\" border=\"0\">"; $go_lager = "app->Conf->WFconf['defaulttheme']}/images/dokumentok.png\" border=\"0\">"; for ($i = 0;$i < 1;$i++) $tmp.= $abgeschlossen; for ($i = 0;$i < 1;$i++) $tmpblue.= $angelegt; for ($i = 0;$i < 1;$i++) $tmpstorno.= $storniert; return "if(a.status='angelegt','
$tmpblue
', if(a.status='abgeschlossen' or a.status='storniert', if(a.status='abgeschlossen','
$tmp
','
$tmpstorno
'), CONCAT('
', if(1,'$go_lager','$stop_lager'),'
' )))"; } /** * @return string */ public function IconsSQLReturnOrder() { $closed = "app->Conf->WFconf['defaulttheme']}/images/produktion_usn_gut.png\" style=\"margin-right:1px\" title=\"Ausgeglichen\" border=\"0\">"; $open = "app->Conf->WFconf['defaulttheme']}/images/produktion_usn_gut.png\" style=\"margin-right:1px\" title=\"Offen\" border=\"0\">"; $opened = "app->Conf->WFconf['defaulttheme']}/images/vorkassegostop.png\" style=\"margin-right:1px\" title=\"Zahlung angelegt\" border=\"0\">"; $failed = "app->Conf->WFconf['defaulttheme']}/images/vorkassestop.png\" style=\"margin-right:1px\" title=\"Zahlung fehlgeschlagen\" border=\"0\">"; $ok = "app->Conf->WFconf['defaulttheme']}/images/vorkassego.png\" style=\"margin-right:1px\" title=\"Zahlung ausgeführt\" border=\"0\">"; $payed = "app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" style=\"margin-right:1px\" title=\"Zahlung verbucht\" border=\"0\">"; if(false) { return "'".$closed."'"; } return "IF( ISNULL(pt.id), '$open', IF( pt.payment_status = 'abgeschlossen', '$closed', IF( pt.payment_status = '' OR pt.payment_status = 'angelegt' OR pt.payment_status = 'created', '$opened', IF( pt.payment_status = 'fehlgeschlagen' OR pt.payment_status = 'failed' OR pt.payment_status = 'error', '$failed', IF(pt.payment_status = 'verbucht' OR pt.payment_status = 'payed', '$payed', '$ok' ) ) ) ) )"; } function IconsSQL() { $anzahl = 0; if($this->app->erp->Firmendaten("ampellager")!="1") { $go_lager = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" style=\"margin-right:1px\" title=\"Artikel ist im Lager\" border=\"0\">"; $stop_lager = "app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" style=\"margin-right:1px\" title=\"Artikel fehlt im Lager\" border=\"0\">"; $anzahl++; } else { $go_lager=""; $stop_lager=""; } if($this->app->erp->Firmendaten("ampelporto")!="1") { $go_porto = "app->Conf->WFconf['defaulttheme']}/images/portogo.png\" style=\"margin-right:1px\" title=\"Porto Check OK\" border=\"0\">"; $stop_porto = "app->Conf->WFconf['defaulttheme']}/images/portostop.png\" style=\"margin-right:1px\" title=\"Porto fehlt!\" border=\"0\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelust")!="1") { $go_ust = "app->Conf->WFconf['defaulttheme']}/images/ustgo.png\" title=\"UST Check OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_ust = "app->Conf->WFconf['defaulttheme']}/images/uststop.png\" title=\"UST-Prüfung fehlgeschlagen!\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelzahlung")!="1") { $go_vorkasse = "app->Conf->WFconf['defaulttheme']}/images/vorkassego.png\" title=\"Zahlungscheck OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_vorkasse = "app->Conf->WFconf['defaulttheme']}/images/vorkassestop.png\" title=\"Zahlungseingang bei Vorkasse fehlt!\" border=\"0\" style=\"margin-right:1px\">"; $gostop_vorkasse = "app->Conf->WFconf['defaulttheme']}/images/vorkassegostop.png\" title=\"Teilzahlung vorhanden!\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelnachnahme")!="1") { $go_nachnahme = "app->Conf->WFconf['defaulttheme']}/images/nachnahmego.png\" title=\"Nachnahme Check OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_nachnahme = "app->Conf->WFconf['defaulttheme']}/images/nachnahmestop.png\" title=\"Nachnahmegebühr fehlt!\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelautoversand")!="1") { $go_autoversand = "app->Conf->WFconf['defaulttheme']}/images/autoversandgo.png\" title=\"Autoversand erlaubt\" border=\"0\" style=\"margin-right:1px\">"; $stop_autoversand = "app->Conf->WFconf['defaulttheme']}/images/autoversandstop.png\" title=\"Kein Autoversand\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelkunde")!="1") { $go_check = "app->Conf->WFconf['defaulttheme']}/images/checkgo.png\" title=\"Kundencheck OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_check = "app->Conf->WFconf['defaulttheme']}/images/checkstop.png\" title=\"Kundencheck fehlgeschlagen\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelliefertermin")!="1") { $go_liefertermin = "app->Conf->WFconf['defaulttheme']}/images/termingo.png\" title=\"Liefertermin OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_liefertermin = "app->Conf->WFconf['defaulttheme']}/images/terminstop.png\" title=\"Liefertermin in Zukunft\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelkreditlimit")!="1") { $go_kreditlimit = "app->Conf->WFconf['defaulttheme']}/images/kreditlimitgo.png\" title=\"Kreditlimit OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_kreditlimit = "app->Conf->WFconf['defaulttheme']}/images/kreditlimitstop.png\" title=\"Kein Kreditlimit mehr verfügbar!\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } if($this->app->erp->Firmendaten("ampelliefersperre")!="1") { $go_liefersperre = "app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Liefersperre OK\" border=\"0\" style=\"margin-right:1px\">"; $stop_liefersperre = "app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Liefersperre gesetzt\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } $reserviert = "app->Conf->WFconf['defaulttheme']}/images/reserviert.png\" border=\"0\" style=\"margin-right:1px\">"; $check = "app->Conf->WFconf['defaulttheme']}/images/mail-mark-important.png\" border=\"0\" style=\"margin-right:1px\">"; $abgeschlossen = "app->Conf->WFconf['defaulttheme']}/images/grey.png\" title=\"Auftrag abgeschlossen\" border=\"0\" style=\"margin-right:1px\">"; $angelegt = "app->Conf->WFconf['defaulttheme']}/images/blue.png\" title=\"Auftrag noch nicht freigegeben!\" border=\"0\" style=\"margin-right:1px\">"; $storniert = "app->Conf->WFconf['defaulttheme']}/images/storno.png\" title=\"Auftrag storniert!\" border=\"0\" style=\"margin-right:1px\">"; if($this->app->erp->Firmendaten("ampelproduktion")!="1" && $this->app->erp->ModulVorhanden('produktion')) { $produktiongestartet = "app->Conf->WFconf['defaulttheme']}/images/produkton_laeuft.png\" title=\"Produktion gestartet\" border=\"0\" style=\"margin-right:1px\">"; $produktionangelegt = "app->Conf->WFconf['defaulttheme']}/images/produkton_start.png\" title=\"Produktion angelegt\" border=\"0\" style=\"margin-right:1px\">"; $produktionabgeschlossen = "app->Conf->WFconf['defaulttheme']}/images/produkton_erledigt.png\" title=\"Produktion abgeschlossen\" border=\"0\" style=\"margin-right:1px\">"; $produktionnichtvorhanden = "app->Conf->WFconf['defaulttheme']}/images/produktion_usn_gut.png\" title=\"Keine Produktion vorhanden\" border=\"0\" style=\"margin-right:1px\">"; $anzahl++; } $extra = ''; $extra2 = ''; $extra3 = ''; $ifextra2 = ''; $tmp = ''; $tmp2 = ''; //$anzahl = 10; $anzahl2 = $anzahl; $tmpstorno = ''; $tmpstorno2 = ''; $anzahl3 = 0; $tmpblue = ''; $_extra2a = ''; $_extra2e = ''; $_extra2icon = "app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">"; if($this->app->erp->ModulVorhanden('produktion')) { //$anzahl++; $anzahl2 = $anzahl; $extra .= ",IF((SELECT count(produ.id) FROM produktion produ WHERE produ.auftragid = a.id AND produ.status = 'gestartet' ),'$produktiongestartet',IF((SELECT count(produ.id) FROM produktion produ WHERE produ.auftragid = a.id AND (produ.status = 'angelegt' OR produ.status = 'freigegeben') ),'$produktionangelegt',IF((SELECT count(produ.id) FROM produktion produ WHERE produ.auftragid = a.id AND produ.status = 'abgeschlossen' ),'$produktionabgeschlossen','$produktionnichtvorhanden')))"; } $auftragsampel_abgeschlossenanzeigen = $this->app->erp->GetKonfiguration('auftragsampel_abgeschlossenanzeigen'); if($this->app->erp->ModulVorhanden('auftragsampel')) { $auftragsampel = $this->app->DB->SelectArr("SELECT * FROM auftragsampel WHERE aktiv = 1 AND icon != '' ORDER by sort, icon, id"); if($auftragsampel) { $check = $this->app->DB->Select("SELECT id FROM auftragsampel_auftrag_cache LIMIT 1"); if(!$this->app->DB->error()) { $check = $this->app->DB->Select("SELECT id FROM `auftragsampel_auftrageinstellungen` LIMIT 1"); $deaktivertok = false; if(!$this->app->DB->error())$deaktivertok = true; $anzahl3 = (empty($auftragsampel)?0:count($auftragsampel)); $anzahl += $anzahl3; $ifextra2a[] = " a.status = 'abgeschlossen' "; foreach($auftragsampel as $k => $ampel) { $k2 = $k+1; $ampel['beschriftung'] = str_replace(array("'",'"'),array(''','"'),$ampel['beschriftung']); $extra2 .= ","; if($deaktivertok) $_extra2a = ",if( isnull((SELECT aae.id FROM auftragsampel_auftrageinstellungen aae WHERE aae.auftrag = a.id AND aae.deaktiviert = 1 LIMIT 1)) ,concat(''"; $extra2 .= "if( substring( ifnull(aac.status,'".str_repeat('0', $anzahl3)."'), $k2,1) = '0', " ."''".", "."''". ") "; if($deaktivertok) $_extra2e = "),'app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">' )"; if($deaktivertok) $_extra2e = "),'".str_repeat($_extra2icon,(empty($auftragsampel)?0:count($auftragsampel)))."')"; $extra3 .= ",'".$abgeschlossen."'"; $ifextra2a[] = " substring(ifnull(aac.status,'".str_repeat('0', $anzahl3)."'),$k2,1) = '1' "; } }else{ $check = $this->app->DB->Select("SELECT id FROM auftragsampel_auftrag LIMIT 1"); if(!$this->app->DB->error()) { $check = $this->app->DB->Select("SELECT id FROM `auftragsampel_auftrageinstellungen` LIMIT 1"); $deaktivertok = false; if(!$this->app->DB->error())$deaktivertok = true; $anzahl3 = (empty($auftragsampel)?0:count($auftragsampel)); $anzahl += $anzahl3; $ifextra2a[] = " a.status = 'abgeschlossen' "; foreach($auftragsampel as $ampel) { $ampel['beschriftung'] = str_replace(array("'",'"'),array(''','"'),$ampel['beschriftung']); $extra2 .= ","; if($deaktivertok) $_extra2a = ",if(isnull((SELECT aae.id FROM auftragsampel_auftrageinstellungen aae WHERE aae.auftrag = a.id AND aae.deaktiviert = 1 LIMIT 1)),concat(''"; $extra2 .= "IF(isnull( (SELECT aampa.id FROM auftragsampel_auftrag aampa WHERE aampa.auftrag = a.id AND aampa.auftragsampel = '".$ampel['id']."' AND aampa.erledigt = 1) ), "."''".","."''". ") "; if($deaktivertok) $_extra2e = "),'app->Conf->WFconf['defaulttheme']}/images/abgeschlossen.png\" title=\"Auftragsampel deaktivert\" border=\"0\" style=\"margin-right:1px\">')"; if($deaktivertok) $_extra2e = "),'".str_repeat($_extra2icon,(empty($auftragsampel)?0:count($auftragsampel)))."')"; $extra3 .= ",'".$abgeschlossen."'"; $ifextra2a[] = " not isnull( (SELECT aampa.id FROM auftragsampel_auftrag aampa WHERE aampa.auftrag = a.id AND aampa.auftragsampel = '".$ampel['id']."' AND aampa.erledigt = 1) ) "; } } } } } if(!empty($ifextra2a))$ifextra2 = implode(' AND ', $ifextra2a); if($ifextra2=='')$ifextra2 = ' 0 '; for ($i = 0;$i < $anzahl;$i++) $tmp.= $abgeschlossen; for ($i = 0;$i < $anzahl2;$i++) $tmp2.= $abgeschlossen; for ($i = 0;$i < $anzahl;$i++) $tmpblue.= $angelegt; for ($i = 0;$i < $anzahl;$i++) $tmpstorno.= $storniert; for ($i = 0;$i < $anzahl2;$i++) $tmpstorno2.= $storniert; for ($i = 0;$i < $anzahl3;$i++) $tmpstorno3.= $storniert; if($auftragsampel_abgeschlossenanzeigen) { return "if(a.status='angelegt','
$tmpblue
', concat( if(a.status='abgeschlossen' or a.status='storniert', if(a.status='abgeschlossen', ''); if(isset($v['autocomplete'])) { $this->AutoComplete($prefix.'_'.$k, $v['autocomplete']); } if($type === 'datum') { $this->DatePicker($prefix.'_'.$k); } elseif($type === 'zeit') { $this->TimePicker($prefix.'_'.$k); } elseif($type === 'ckeditor') { $this->CkEditor($prefix.'_'.$name,"belege"); } } } } if($options['white_background']){ $this->app->Tpl->Add($target, '
$tmp2', ' $this->app->Tpl->Add($parsetarget, '
$tmpstorno2'), CONCAT('
', if(a.lager_ok,'$go_lager','$stop_lager'),if(a.porto_ok,'$go_porto','$stop_porto'),if(a.ust_ok,'$go_ust',CONCAT('','$stop_ust','')), if(a.vorkasse_ok=1,'$go_vorkasse',if(a.vorkasse_ok=2,'$gostop_vorkasse','$stop_vorkasse')),if(a.nachnahme_ok,'$go_nachnahme','$stop_nachnahme'),if(a.autoversand,'$go_autoversand','$stop_autoversand'), if(a.check_ok,'$go_check','$stop_check'),if(a.liefertermin_ok,'$go_liefertermin','$stop_liefertermin'),if(a.kreditlimit_ok,'$go_kreditlimit','$stop_kreditlimit'),if(a.liefersperre_ok,'$go_liefersperre','$stop_liefersperre')$extra,'' )), if( $ifextra2 ,concat(''$extra3) , if( a.status='storniert','$tmpstorno3', concat(''$_extra2a $extra2 $_extra2e)) ) ,'
') )"; } return "if(a.status='angelegt','
$tmpblue
', if(a.status='abgeschlossen' or a.status='storniert', if(a.status='abgeschlossen','
$tmp
','
$tmpstorno
'), CONCAT('
', if(a.lager_ok,'$go_lager','$stop_lager'),if(a.porto_ok,'$go_porto','$stop_porto'),if(a.ust_ok,'$go_ust',CONCAT('','$stop_ust','')), if(a.vorkasse_ok=1,'$go_vorkasse',if(a.vorkasse_ok=2,'$gostop_vorkasse','$stop_vorkasse')),if(a.nachnahme_ok,'$go_nachnahme','$stop_nachnahme'),if(a.autoversand,'$go_autoversand','$stop_autoversand'), if(a.check_ok,'$go_check','$stop_check'),if(a.liefertermin_ok,'$go_liefertermin','$stop_liefertermin'),if(a.kreditlimit_ok,'$go_kreditlimit','$stop_kreditlimit'),if(a.liefersperre_ok,'$go_liefersperre','$stop_liefersperre')$extra $extra2,'
' )))"; } function IconsSQLVerbindlichkeit() { $go_ware = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" style=\"margin-right:1px\" title=\"Wareneingangsprüfung OK\" border=\"0\">"; $stop_ware = "app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" style=\"margin-right:1px\" title=\"Wareneingangsprüfung fehlt\" border=\"0\">"; $go_pdf = "app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" style=\"margin-right:1px\" title=\"Anhang OK\" border=\"0\">"; $stop_pdf = "app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" style=\"margin-right:1px\" title=\"Anhang fehlt\" border=\"0\">"; $go_summe = "app->Conf->WFconf['defaulttheme']}/images/check_go.png\" style=\"margin-right:1px\" title=\"Rechnungseingangsprüfung OK\" border=\"0\">"; $stop_summe = "app->Conf->WFconf['defaulttheme']}/images/check_stop.png\" style=\"margin-right:1px\" title=\"Rechnungseingangsprüfung fehlt\" border=\"0\">"; $go_zahlung = "app->Conf->WFconf['defaulttheme']}/images/bank_go.svg\" style=\"margin-right:1px\" title=\"Kontoverknüpfung OK\" border=\"0\">"; $stop_zahlung = "app->Conf->WFconf['defaulttheme']}/images/bank_stop.svg\" style=\"margin-right:1px\" title=\"Kontoverknüpfung fehlt\" border=\"0\">"; $stop_betragbezahlt = "\"Zahlungapp->Conf->WFconf['defaulttheme']}/images/vorkassestop.png\" style=\"margin-right:1px\" title=\"Zahlung fehlt\" border=\"0\">"; $gostop_betragbezahlt = "\"teilweiseapp->Conf->WFconf['defaulttheme']}/images/vorkassegostop.png\" style=\"margin-right:1px\" title=\"teilweise bezahlt\" border=\"0\">"; $go_betragbezahlt = "\"nichtapp->Conf->WFconf['defaulttheme']}/images/vorkassego.png\" style=\"margin-right:1px\" title=\"bezahlt\" border=\"0\">"; return "CONCAT('
', if(datei_anzahl > 0,'$go_pdf','$stop_pdf'), if(v.freigabe,'$go_ware','$stop_ware'), if(v.rechnungsfreigabe,'$go_summe','$stop_summe'), if(v.bezahlt,'$go_betragbezahlt','$stop_betragbezahlt'), '
')"; } function IconsSQL_produktion($tablename) { $freigegeben = "app->Conf->WFconf['defaulttheme']}/images/produkton_laeuft.png\" title=\"Produktion freigegeben\" border=\"0\" style=\"margin-right:1px\">"; $angelegt = "app->Conf->WFconf['defaulttheme']}/images/blue.png\" title=\"Produktion angelegt\" border=\"0\" style=\"margin-right:1px\">"; $abgeschlossen = "app->Conf->WFconf['defaulttheme']}/images/grey.png\" title=\"Produktion abgeschlossen\" border=\"0\" style=\"margin-right:1px\">"; $gestartet = "app->Conf->WFconf['defaulttheme']}/images/produkton_green.png\" title=\"Produktion gestartet\" border=\"0\" style=\"margin-right:1px\">"; $storniert = "app->Conf->WFconf['defaulttheme']}/images/storno.png\" title=\"Produktion storniert\" border=\"0\" style=\"margin-right:1px\">"; for ($z = 0;$z < 6;$z++) { $angelegt_6 .= $angelegt; $abgeschlossen_6 .= $abgeschlossen; $storniert_6 .= $storniert; } $lager_ok = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" style=\"margin-right:1px\" title=\"Artikel ist im Lager\" border=\"0\">"; $lager_nicht_ok = "app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" style=\"margin-right:1px\" title=\"Artikel fehlt im Lager\" border=\"0\">"; $reserviert_ok = "app->Conf->WFconf['defaulttheme']}/images/ware_bestellt.png\" style=\"margin-right:1px\" title=\"Artikel reserviert\" border=\"0\">"; $reserviert_nicht_ok = "app->Conf->WFconf['defaulttheme']}/images/ware_nicht_bestellt.png\" style=\"margin-right:1px\" title=\"Artikel nicht reserviert\" border=\"0\">"; $auslagern_ok = "app->Conf->WFconf['defaulttheme']}/images/ausgelagert.png\" title=\"Produktion ausgelagert\" border=\"0\" style=\"margin-right:1px\">"; $auslagern_nicht_ok = "app->Conf->WFconf['defaulttheme']}/images/nicht_ausgelagert.png\" title=\"Produktion ausgelagert\" border=\"0\" style=\"margin-right:1px\">"; $einlagern_ok = "app->Conf->WFconf['defaulttheme']}/images/eingelagert.png\" title=\"Produktion eingelagert\" border=\"0\" style=\"margin-right:1px\">"; $einlagern_nicht_ok = "app->Conf->WFconf['defaulttheme']}/images/nicht_eingelagert.png\" title=\"Produktion eingelagert\" border=\"0\" style=\"margin-right:1px\">"; $zeit_ok = "app->Conf->WFconf['defaulttheme']}/images/zeit_dreiviertel.png\" style=\"margin-right:1px\" title=\"Zeiten erfasst\" border=\"0\">"; $zeit_nicht_ok = "app->Conf->WFconf['defaulttheme']}/images/keine_zeiten.png\" style=\"margin-right:1px\" title=\"Zeiten nicht erfasst\" border=\"0\">"; $versand_ok = "app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" style=\"margin-right:1px\" title=\"Versand ok\" border=\"0\">"; $versand_nicht_ok = "app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" style=\"margin-right:1px\" title=\"Versand nicht ok\" border=\"0\">"; return "CONCAT('
', CASE WHEN $tablename.status = 'freigegeben' THEN '$freigegeben' WHEN $tablename.status = 'abgeschlossen' THEN '$abgeschlossen' WHEN $tablename.status = 'angelegt' THEN '$angelegt' WHEN $tablename.status = 'gestartet' THEN '$gestartet' ELSE '$storniert' end, CASE WHEN FIND_IN_SET($tablename.status, 'freigegeben,gestartet') THEN CONCAT ( if($tablename.lager_ok,'$lager_ok','$lager_nicht_ok'), if($tablename.reserviert_ok,'$reserviert_ok','$reserviert_nicht_ok'), if($tablename.auslagern_ok,'$auslagern_ok','$auslagern_nicht_ok'), if($tablename.einlagern_ok,'$einlagern_ok','$einlagern_nicht_ok'), if($tablename.zeit_ok,'$zeit_ok','$zeit_nicht_ok'), if($tablename.versand_ok,'$versand_ok','$versand_nicht_ok') ) ELSE CASE WHEN $tablename.status = 'angelegt' THEN '$angelegt_6' WHEN $tablename.status = 'abgeschlossen' THEN '$abgeschlossen_6' ELSE '$storniert_6' END END, '
')"; } function IconsSQL_versandpaket() { /* status: neu -> Lagergo lagergo_stop lagerstop Schein summe_go summe_stop Auto liefersperrego liefersperrestop marke portogo portostop produktion_usn_gut storno*/ $lieferschein_kein = "app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" title=\"Kein Lieferschein\" border=\"0\" style=\"margin-right:1px\">"; $lieferschein_ohne_pos = "app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">"; $lieferschein_voll = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Lieferschein vollständig\" border=\"0\" style=\"margin-right:1px\">"; $lieferschein_teil = "app->Conf->WFconf['defaulttheme']}/images/lagergo_teil.png\" title=\"Lieferschein teilweise\" border=\"0\" style=\"margin-right:1px\">"; $versendet = "app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">"; $versendet_nicht = "app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">"; $paketmarke = "app->Conf->WFconf['defaulttheme']}/images/portogo.png\" style=\"margin-right:1px\" title=\"Paketmarke\" border=\"0\">"; $paketmarke_keine = "app->Conf->WFconf['defaulttheme']}/images/portostop.png\" style=\"margin-right:1px\" title=\"Keine Paketmarke\" border=\"0\">"; $ausgeliefert = "app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">"; $ausgeliefert_nicht = "app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">"; $storno = "app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">"; for ($z = 0;$z < 4;$z++) { $abgeschlossen .= $ausgeliefert; $storniert .= $storno; } return "CONCAT('
', CASE WHEN status = 'storniert' THEN '$storniert' ELSE CONCAT( CASE WHEN lieferscheine <> '' AND vmenge = lmenge THEN '$lieferschein_voll' WHEN lieferschein_ohne_pos <> '' AND vmenge IS NULL THEN '$lieferschein_ohne_pos' WHEN lieferscheine <> '' THEN '$lieferschein_teil' ELSE '$lieferschein_kein' END, CASE WHEN tracking <> '' THEN '$paketmarke' ELSE '$paketmarke_keine' END, CASE WHEN status = 'versendet' THEN '$versendet' WHEN status = 'abgeschlossen' THEN '$versendet' ELSE '$versendet_nicht' END, CASE WHEN status = 'abgeschlossen' THEN '$ausgeliefert' ELSE '$ausgeliefert_nicht' END ) END, '
')"; } function IconsSQL_lieferung() { $lieferschein_kein = "app->Conf->WFconf['defaulttheme']}/images/lagerstop.png\" title=\"Keine Artikel in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">"; $lieferschein_ohne_pos = "app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">"; $lieferschein_voll = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Artikel vollständig in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">"; $lieferschein_teil = "app->Conf->WFconf['defaulttheme']}/images/lagergo_stop.png\" title=\"Artikel teilweise in Versandpaketen\" border=\"0\" style=\"margin-right:1px\">"; $versendet = "app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">"; $versendet_nicht = "app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">"; $versendet_teil = "app->Conf->WFconf['defaulttheme']}/images/liefersperregostop.png\" title=\"Teilweise versendet\" border=\"0\" style=\"margin-right:1px\">"; $ausgeliefert = "app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">"; $ausgeliefert_nicht = "app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">"; $ausgeliefert_teil = "app->Conf->WFconf['defaulttheme']}/images/delivery_pending.png\" style=\"margin-right:1px\" title=\"Teilweise ausgeliefert\" border=\"0\">"; $storno = "app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">"; return "CONCAT( '
', CASE WHEN vmenge >= lmenge THEN '$lieferschein_voll' WHEN vmenge < lmenge AND vmenge <> 0 THEN '$lieferschein_teil' ELSE '$lieferschein_kein' END, CASE WHEN alle_abgeschlossen THEN '$versendet' WHEN alle_versendet THEN '$versendet' WHEN eins_versendet THEN '$versendet_teil' ELSE '$versendet_nicht' END, CASE WHEN alle_abgeschlossen THEN '$ausgeliefert' WHEN eins_abgeschlossen THEN '$ausgeliefert_teil' ELSE '$ausgeliefert_nicht' END, '
')"; } function TablePositionSearch($parsetarget, $name, $callback = "show", $gener) { $id = $this->app->Secure->GetGET("id"); switch ($name) { case "auftragpositionen": /* // headings $heading = array('Nummer','Artikel','Projekt','Menge','Einzelpreis','Menü'); $width = array('10%','45%','15%','10%','10%','10%'); $findcols = array('nummer','name_de','projekt','menge','preis','id'); $searchsql = array('a.bezeichnung','a.nummer','p.abkuerzung'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer as nummer, a.bezeichnung as name_de, p.abkuerzung as projekt, a.menge as menge, a.preis as preis, a.id as menu FROM auftrag_position a LEFT JOIN projekt p ON p.id=a.projekt "; // fester filter $w;h;ere = " a.auftrag='$id'"; $count = "SELECT COUNT(id) FROM auftrag_position WHERE auftrag='$id'"; */ break; default: break; } if ($callback == "show") { $this->app->Tpl->Add('ADDITIONALCSS', " .ex_highlight #$name tbody tr.even:hover, #example tbody tr.even td.highlighted { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.even:hover { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.even:hover td.sorting_1 { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.odd:hover { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.odd:hover td.sorting_1 { background-color: [TPLFIRMENFARBEHELL]; } "); //"sPaginationType": "full_numbers", //"aLengthMenu": [[10, 25, 50, 200, 10000], [10, 25, 50, 200, "All"]], if ($name == "versandoffene") { $bStateSave = "false"; $cookietime = 0; } else { $cookietime = 365 * 24 * 60 * 60; // 1 Jahr $bStateSave = "true"; } $this->app->Tpl->Add('JAVASCRIPT', " var oTable" . $name . "; var oMoreData1" . $name . "=0; var oMoreData2" . $name . "=0; var oMoreData3" . $name . "=0; var oMoreData4" . $name . "=0; var oMoreData5" . $name . "=0; var aData; "); $iframe = $this->app->Secure->GetGET("iframe"); $this->app->Tpl->Add('DATATABLES', ' oTable' . $name . ' = $(\'#' . $name . '\').dataTable( { "bAutoWidth": false, "bProcessing": true, "oLanguage":{"sProcessing":" "}, "iDisplayLength": 10, "bStateSave": ' . $bStateSave . ', "iCookieDuration": ' . (int)$cookietime . ', "bServerSide": true, "fnInitComplete": function (){ $(oTable' . $name . '.fnGetNodes()).click(function (){ alert(\'Demo\');// my js window.... });}, "fnServerData": function ( sSource, aoData, fnCallback ) { /* Add some extra data to the sender */ aoData.push( { "name": "more_data1", "value": oMoreData1' . $name . ' } ); aoData.push( { "name": "more_data2", "value": oMoreData2' . $name . ' } ); aoData.push( { "name": "more_data3", "value": oMoreData3' . $name . ' } ); aoData.push( { "name": "more_data4", "value": oMoreData4' . $name . ' } ); aoData.push( { "name": "more_data5", "value": oMoreData5' . $name . ' } ); $.getJSON( sSource, aoData, function (json) { /* Do whatever additional processing you want on the callback, then tell DataTables */ fnCallback(json) } ); }, "sAjaxSource": "./index.php?module=ajax&action=tableposition&cmd=' . $name . '&id=' . $id . '&iframe=' . $iframe . '" } ); '); if ($moreinfo) { $this->app->Tpl->Add('DATATABLES', ' $(document).on( \'click\',\'#' . $name . ' tbody td img.details\', function () { var nTr = this.parentNode.parentNode; aData = oTable' . $name . '.fnGetData( nTr ); if ( this.src.match(\'details_close\') ) { /* This row is already open - close it */ this.src = "./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/details_open.png"; oTable' . $name . '.fnClose( nTr ); } else { /* Open this row */ this.src = "./themes/' . $this->app->Conf->WFconf['defaulttheme'] . '/images/details_close.png"; oTable' . $name . '.fnOpen( nTr, ' . $name . 'fnFormatDetails(nTr), \'details\' ); } }); '); /* $.get("index.php?module=auftrag&action=minidetail&id=2", function(text){ spin=0; miniauftrag = text; }); */ $module = $this->app->Secure->GetGET("module"); $this->app->Tpl->Add('JAVASCRIPT', 'function ' . $name . 'fnFormatDetails ( nTr ) { //var aData = oTable' . $name . '.fnGetData( nTr ); var str = aData[' . (isset($menucol)?$menucol:(empty($heading)?0:count($heading))-1) . ']; var match = str.match(/[1-9]{1}[0-9]*/); var auftrag = parseInt(match[0], 10); var miniauftrag; var strUrl = "index.php?module=' . $module . '&action=minidetail&id="+auftrag; //whatever URL you need to call var strReturn = ""; jQuery.ajax({ url:strUrl, success:function(html){strReturn = html;}, async:false }); miniauftrag = strReturn; var sOut = \'\'; sOut += \'\'; sOut += \'
\'+miniauftrag+\'
\'; return sOut; } '); } $colspan = (empty($heading)?0:count($heading)); //

'); for ($i = 0;$i < (empty($heading)?0:count($heading));$i++) { $this->app->Tpl->Add($parsetarget, ''); } $this->app->Tpl->Add($parsetarget, ' '); for ($i = 0;$i < (empty($heading)?0:count($heading));$i++) { $this->app->Tpl->Add($parsetarget, ''); } $this->app->Tpl->Add($parsetarget, '
' . $heading[$i] . '
Lade Daten
' . $heading[$i] . '



'); } else if ($callback == "sql") return $sql; else if ($callback == "searchsql") return $searchsql; else if ($callback == "searchsql_dir") return $searchsql_dir; else if ($callback == "searchfulltext") return $searchfulltext; else if ($callback == "heading") return $heading; else if ($callback == "menu") return $menu; else if ($callback == "findcols") return $findcols; else if ($callback == "where") return $where; else if ($callback == "count") return $count; } function EnterSearch($target, $name) { $this->app->Tpl->Add($target,'
{|Schnellsuche|} 
' ); } /* Parameter name: Tablesearchname Parameter moredata: Nr 1 - 18 Parameter feldid: html id für Input Element Parameter vorbelegung: Standardwert beim ersten Laden der Seite Parameter typ: checkbox für Checkboxen sonst wird der Value direkt übernommen return: aktueller Wert aus Ajax */ function TableSearchFilter($name, $moredata, $feldid, $vorbelegung = 0,$column = 0, $typ = '') { $moredatavorbelegung = 'oMoreData'.$moredata; $this->$moredatavorbelegung = $vorbelegung; if($typ == 'checkbox') { $this->app->Tpl->Add('JQUERYREADY', " $('#".$feldid."').change( function() { fnFilterColumn".$moredata."( $('#".$feldid."').prop('checked')?1:0 ); } ); "); $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $moredata . ' ( i ) { if(oMoreData' . $moredata . $name . '==1) oMoreData' . $moredata . $name . ' = 0; else oMoreData' . $moredata . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); }else{ $this->app->Tpl->Add('JQUERYREADY', "$('#".$feldid."').on('change', function() { fnFilterColumn".$moredata."( $('#".$feldid."').val() ); } );$('#".$feldid."').on('focusout', function() { fnFilterColumn".$moredata."( $('#".$feldid."').val() ); } );$('#".$feldid."').on('click', function() { fnFilterColumn".$moredata."( $('#".$feldid."').val() ); } );"); $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $moredata . ' ( i ) { oMoreData' . $moredata . $name . ' = i; $(\'#' . $name . '\').dataTable().fnFilter( \'\', 0, 0,0 ); } '); } return $this->app->Secure->GetGET('more_data'.$moredata); } /* falls $name nicht vorhanden wird das Modul included und die Funktion static function TableSearch(&$app, $name, $erlaubtevars) aufgerufen und dort nach $name gesucht und die callbackresults als array zurückgegeben */ /** * @param $parsetarget * @param $name * @param string $callback * @param string $generic_sql * @param string $generic_menu * @param string $frommodule Modulname * @param string $fromclass Klassenname */ function TableSearch($parsetarget, $name, $callback = "show", $generic_sql = "", $generic_menu = "", $frommodule = "", $fromclass = "") { $moreDataMaxNr = ''; for($i = 1; $i <= 31; $i++) { $_name = 'oMoreData'.$i; $this->$_name = 0; } $defferloading = null; $id = (int)$this->app->Secure->GetGET("id"); $groupby = ""; $allowed = array(); $searchfulltext = ""; $extended_mysql55 = ",'de_DE'"; $allowed_row_clicks = array('artikeltabellebilder','auftraege','adressetabelle','artikeltabelle','projekttabelle','anfrage','proformarechnung','preisanfrage','angebote','angeboteinbearbeitung','auftraegeoffene','auftraegeinbearbeitung','auftragoffenepositionenlist','bestellungen','bestellungeninbearbeitung','produktionoffeneauto','produktioninbearbeitung','paketannahme','rechnungenoffene','rechnungeninbearbeitung','reisekosten','reisekostenoffene','reisekosteninbearbeitung','arbeitsnachweiseoffene','arbeitsnachweiseinbearbeitung','gutschriftenoffene','gutschriften','gutschrifteninbearbeitung','ueberweisung','ueberweisungarchiv','dta_datei_ueberweisung','lastschriften','lastschriften_gutschriften','lastschriftenarchiv','zahlungsavis','dta_datei_lastschrift','kassenbuecher','kassenbuecher_archiv','importvorlage','exportvorlage','service_list','service_list_freigabe','service_list_meine','service_list_abgeschlossen','lieferscheineoffene','lieferscheine','lieferscheineinbearbeitung','lagertabelle','versandoffene','versandfertig','userlist','ticket_vorlagenlist','emailbackuplist','warteschlangenlist','artikelkategorienlist','uservorlagelist','kontenlist','kostenstellenlist','verrechnungsartlist','waehrungumrechnung_list','zolltarifnummerlist','versandartenlist','onlineshopslist','druckerlist','adapterbox_list','etikettenlist','arbeitsfreietage_list','datei_stichwortvorlagen','rechnungen','verbindlichkeiten','produktion'); if(in_array($name,$allowed_row_clicks)) $rowclick=true; switch ($name) { case "datei_list_referer": $allowed['artikel'] = array('dateien'); $allowed['adresse'] = array('dateien'); $allowed['angebot'] = array('dateien'); $allowed['auftrag'] = array('dateien'); $allowed['rechnung'] = array('dateien'); $allowed['gutschrift'] = array('dateien'); $allowed['lieferschein'] = array('dateien'); $allowed['bestellung'] = array('dateien'); $allowed['projekt'] = array('dateien'); $allowed['produktion'] = array('dateien'); $allowed['anfrage'] = array('dateien'); $allowed['preisanfrage'] = array('dateien'); $allowed['proformarechnung'] = array('dateien'); $allowed['reisekosten'] = array('dateien'); $allowed['kalkulation'] = array('dateien'); $allowed['wiki'] = array('dateien'); $allowed['geschaeftsbrief_vorlagen'] = array('dateien'); $allowed['kasse'] = array('dateien'); $allowed['ticket'] = array('dateien'); $id = $this->app->Secure->GetGET("id"); $sid = $this->app->Secure->GetGET("sid"); if($sid > 0) { $id = $sid; } parse_str(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY), $queries); $objekt = $this->dateien_module_objekt_map($queries['module']); if(!preg_match('/[A-Za-z_]/', $objekt)) { $objekt=''; } // alle artikel die ein Kunde kaufen kann mit preisen netto brutto $cmd = $this->app->Secure->GetGET('smodule'); $adresse = 0; if(!empty($cmd) && $id > 0){ if ($this->app->DB->Select("SHOW columns FROM `$cmd` LIKE 'adresse'")) { $adresse = $this->app->DB->Select( sprintf( 'SELECT adresse FROM `%s` WHERE id=%d LIMIT 1', $cmd, (int)$id ) ); } } $sortmodus = $this->TableSearchFilter($name, 1, 'sortmodus', 0,0, 'checkbox'); // headings $heading = array('','','','Titel', 'Stichwort', 'Version','Größe', 'Ersteller','Version','Datum','Sortierung','Menü'); $width = array('1%','1%','10','40%', '15%', '5%','10%','15%', '10%', '10%','15%', '10%','5%','1%'); $findcols = array('open','d.id','d.id',"CONCAT(d.titel,' ',v.dateiname)", 's.subjekt', 'v.version',"if(v.size!='',if(v.size > 1024*1024,CONCAT(ROUND(v.size/1024/1024,2),' MB'),CONCAT(ROUND(v.size/1024,2),' KB')),'')", 'v.ersteller','v.bemerkung','v.datum', 's.sort','s.id'); $searchsql = array('d.titel', 's.subjekt', 'v.version',"if(v.size!='',if(v.size > 1024*1024,CONCAT(ROUND(v.size/1024/1024,2),' MB'),CONCAT(ROUND(v.size/1024,2),' KB')),'')", 'v.ersteller','v.bemerkung','v.dateiname',"DATE_FORMAT(v.datum, '%d.%m.%Y')"); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" >
"; $menucol = 11; $alignright=array(6,7,11); if(!function_exists('imagejpeg')) { $img = "'app->Conf->WFconf['defaulttheme']}/images/icon_img_error.png title=\"Keine GD-Erweiterung installiert\" />'"; }else{ $img = "concat('')"; } // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS d.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open,concat(''), $img, if(d.titel!='',CONCAT(d.titel,'
',v.dateiname,''),v.dateiname), s.subjekt, v.version, if(v.size!='',if(v.size > 1024*1024,CONCAT(ROUND(v.size/1024/1024,2),' MB'),CONCAT(ROUND(v.size/1024,2),' KB')),''), v.ersteller, v.bemerkung, DATE_FORMAT(v.datum, '%d.%m.%Y'),s.sort,".($sortmodus?"s.id": "d.id")." FROM `datei` AS `d` INNER JOIN `datei_stichwoerter` AS `s` ON d.id=s.datei LEFT JOIN ( SELECT `datei`, max(`version`) AS `version` FROM `datei_version` GROUP BY `datei` ) AS `v2` ON v2.datei=d.id LEFT JOIN `datei_version` AS `v` ON v.datei=v2.datei AND v.version = v2.version "; $parameter=$id; $moreinfo = true; $moreinfomodule = 'dateien'; // fester filter $where = "s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0"; if($sortmodus) { $this->app->erp->CheckFileSort($objekt, $parameter); $orderby = ' ORDER BY s.sort '; $menu = "
app->Conf->WFconf['defaulttheme']}/images/up.png\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/down.png\" border=\"0\">
"; } $count = "SELECT COUNT(d.id) FROM `datei` AS `d` INNER JOIN `datei_stichwoerter` AS `s` ON d.id=s.datei WHERE $where"; break; case "lagerplatzinventurtabelle": // headings $heading = array('Bezeichnung', 'Menü'); $width = array('30%', '20%', '20%', '20%'); $findcols = array('kurzbezeichnung', 'id'); $searchsql = array('kurzbezeichnung'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " "; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS id, kurzbezeichnung, id as menu FROM lager_platz "; // fester filter $where = " geloescht=0 AND id!=0"; $count = "SELECT COUNT(id) FROM lager_platz WHERE geloescht=0"; break; case 'adresse_gruppen': $allowed['adresse'] = array('gruppen'); $allowed['auftragscockpit'] = array('edit'); $this->app->Tpl->Add('JQUERYREADY', "$('#inaktiv').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nuraktivierte').click( function() { fnFilterColumn2( 0 ); } );"); for ($r = 1;$r < 3;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // headings $heading = array('', 'Gruppe','Kennziffer','Kategorie','Projekt'); $width = array('10%', '10%', '15%','15%', '10%', '10%'); $findcols = array('g.id','g.name','g.kennziffer','k.bezeichnung','p.abkuerzung'); $searchsql = array('g.name','g.kennziffer','k.bezeichnung','p.abkuerzung'); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $defaultorder = 2; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "%value%"; //
" . "" . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS g.id, CONCAT('= NOW()) LIMIT 1 ) > 0 ,'checked',''),' onclick=adresse_gruppen($id,',g.id,',this.checked)>'),g.name,g.kennziffer,k.bezeichnung,p.abkuerzung FROM gruppen g LEFT JOIN gruppen_kategorien k ON g.kategorie = k.id LEFT JOIN projekt p ON p.id=g.projekt"; if($this->app->Secure->GetGET("more_data1")) { $subwhere = " AND g.aktiv!=1 "; } else { $subwhere = " AND g.aktiv=1 "; } if($this->app->Secure->GetGET("more_data2")) $subwhere2 = " AND (SELECT ar.id FROM adresse_rolle ar WHERE ar.adresse='$id' AND (ar.subjekt='Mitglied' OR ar.subjekt='Kunde') AND ar.objekt='Gruppe' AND ar.parameter=g.id AND (ar.bis='0000-00-00' OR ar.bis >= NOW()) LIMIT 1) > 0 "; $where = " g.id!=0 $subwhere $subwhere2 ".$this->app->erp->ProjektRechte(); $count = "SELECT COUNT(g.id) FROM gruppen g LEFT JOIN projekt p ON p.id=g.projekt WHERE $where "; break; case "adresse_artikel_gebuehr": $allowed['adresse'] = array('kundeartikel'); // headings $heading = array('Nummer', 'Artikel', 'Rechnung', 'Datum', 'Menge', 'Einzelpreis', 'Rabatt', 'Menü'); $width = array('10%', '45%', '15%', '10%', '10%', '10%', '10%', '10%'); $findcols = array('nummer', 'name_de', 'rechnung', 'belegnr', 'menge', 'preis', 'rabatt', 'id'); $searchsql = array('a.bezeichnung', 'a.nummer', 'auf.belegnr', "DATE_FORMAT(auf.datum,'%d.%m.%Y')", 'a.preis', 'a.rabatt'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer as nummer, a.bezeichnung as name_de, auf.belegnr as rechnung, DATE_FORMAT(auf.datum,'%d.%m.%Y'), a.menge as menge, a.preis as preis, a.rabatt as rabatt, a.rechnung as menu FROM rechnung_position a LEFT JOIN rechnung auf ON a.rechnung=auf.id LEFT JOIN artikel art ON art.id=a.artikel"; // fester filter $where = " auf.adresse='$id' AND art.gebuehr=1"; $count = "SELECT COUNT(a.id) FROM rechnung_position a LEFT JOIN rechnung auf ON a.rechnung=auf.id WHERE auf.adresse='$id'"; break; case "adresse_artikel_serviceartikel": $allowed['adresse'] = array('kundeartikel'); // headings $heading = array('Nummer', 'Artikel', 'Rechnung', 'Datum', 'Menge', 'Einzelpreis', 'Rabatt', 'Menü'); $width = array('10%', '45%', '15%', '10%', '10%', '10%', '10%', '10%'); $findcols = array('nummer', 'name_de', 'rechnung', 'belegnr', 'menge', 'preis', 'rabatt', 'id'); $searchsql = array('a.bezeichnung', 'a.nummer', 'auf.belegnr', "DATE_FORMAT(auf.datum,'%d.%m.%Y')", 'a.preis', 'a.rabatt'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer as nummer, a.bezeichnung as name_de, auf.belegnr as rechnung, DATE_FORMAT(auf.datum,'%d.%m.%Y'), a.menge as menge, a.preis as preis, a.rabatt as rabatt, a.rechnung as menu FROM rechnung_position a LEFT JOIN rechnung auf ON a.rechnung=auf.id LEFT JOIN artikel art ON art.id=a.artikel"; // fester filter $where = " auf.adresse='$id' AND art.serviceartikel=1"; $count = "SELECT COUNT(a.id) FROM rechnung_position a LEFT JOIN rechnung auf ON a.rechnung=auf.id WHERE auf.adresse='$id'"; break; case "adresse_artikel_geraet": $allowed['adresse'] = array('kundeartikel'); // headings $heading = array('Nummer', 'Artikel', 'Rechnung', 'Datum', 'Menge', 'Einzelpreis', 'Rabatt', 'Menü'); $width = array('10%', '45%', '15%', '10%', '10%', '10%', '10%', '10%'); $findcols = array('nummer', 'name_de', 'rechnung', 'belegnr', 'menge', 'preis', 'rabatt', 'id'); $searchsql = array('a.bezeichnung', 'a.nummer', 'auf.belegnr', "DATE_FORMAT(auf.datum,'%d.%m.%Y')", 'a.preis', 'a.rabatt'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer as nummer, a.bezeichnung as name_de, auf.belegnr as rechnung, DATE_FORMAT(auf.datum,'%d.%m.%Y'), a.menge as menge, a.preis as preis, a.rabatt as rabatt, a.rechnung as menu FROM rechnung_position a LEFT JOIN rechnung auf ON a.rechnung=auf.id LEFT JOIN artikel art ON art.id=a.artikel"; // fester filter $where = " auf.adresse='$id' AND art.geraet=1"; $count = "SELECT COUNT(a.id) FROM rechnung_position a LEFT JOIN rechnung auf ON a.rechnung=auf.id WHERE auf.adresse='$id'"; break; case "adressebelege": $id = $this->app->Secure->GetGET('id'); $allowed['adresse'] = array('belege'); if($this->app->erp->IsAdresseSubjekt($id,"Lieferant")){ $heading = array('Belegnr./Lf-Nr.', 'Belegart', 'vom', 'Anfrage', 'Kommission/Bestellnr.', 'Tracking', 'Projekt', 'Zahlungsstatus', 'Betrag', 'Status', 'Menü', ''); }else{ $heading = array('Belegnr.', 'Belegart', 'vom', 'Anfrage', 'Kommission/Bestellnr.', 'Tracking', 'Projekt', 'Zahlungsstatus', 'Betrag', 'Status', 'Menü', ''); } $width = array('10%', '10%', '10%', '10%', '10%', '10%', '10%', '9%', '10%', '10%', '1%', '1%'); $findcols = array('b.belegnr', 'b.belegart', 'b.vom', 'b.anfrage', 'b.name', 'b.tracking', 'b.projekt', 'b.zahlungsstatus', 'CAST(b.betrag as DECIMAL(10,2))', 'b.status', 'b.menux', 'b.menu'); $searchsql = array('b.belegnr', 'b.belegart', "DATE_FORMAT(b.vom, '%d.%m.%Y')", 'b.anfrage', 'b.name', 'b.tracking', 'b.projekt', 'b.zahlungsstatus', 'b.betrag', 'b.status'); $numbercols = array(8); $datecols = array(2); //$sumcol = 8; $alignright = array(9); $menu = ""; $tmp = explode('_',$name,2); $prefix = $tmp[1]; $von = $this->TableSearchFilter($name, 13, 'von', $this->app->User->GetParameter("adresse_belege_von")); $bis = $this->TableSearchFilter($name, 14, 'bis', $this->app->User->GetParameter("adresse_belege_bis")); $subwhere = ""; if($von != "" && $von != 0 && strlen($von) >= 8){ // strlen 8 = minimum 1.1.2018 try { $vonDateTime = new DateTimeImmutable($von); $von = $vonDateTime->format("Y-m-d"); } catch (Exception $e) { $von = ""; } } else { $von = ""; } if($bis != "" && $bis != 0 && strlen($bis) >= 8){ // strlen 8 = minimum 1.1.2018 try { $bisDateTime = new DateTimeImmutable($bis); $bis = $bisDateTime->format("Y-m-d"); } catch (Exception $e) { $bis = ""; } } else { $bis = ""; } if($von !="" && $von != 0) $subwhere .= " AND DATE_FORMAT(b.vom, '%Y-%m-%d') >= '$von' "; if($bis !="" && $bis != 0) $subwhere .= " AND DATE_FORMAT(b.vom, '%Y-%m-%d') <= '$bis' "; $fauftrag = $this->TableSearchFilter($name, 5, 'auftrag', '0', 0, 'checkbox'); $frechnung = $this->TableSearchFilter($name, 6, 'rechnung', '0', 0, 'checkbox'); $fgutschrift = $this->TableSearchFilter($name, 7, 'gutschrift', '0', 0, 'checkbox'); $fangebot = $this->TableSearchFilter($name, 8, 'angebot', '0', 0, 'checkbox'); $flieferschein = $this->TableSearchFilter($name, 10, 'lieferschein', '0', 0, 'checkbox'); $fbestellung = $this->TableSearchFilter($name, 11, 'bestellung', '0', 0, 'checkbox'); $fverbindlichkeit = $this->TableSearchFilter($name, 12, 'verbindlichkeit', '0', 0, 'checkbox'); if($this->app->erp->IsAdresseSubjekt($id,"Lieferant")){ if(!$fangebot && !$fauftrag && !$frechnung && !$fgutschrift && !$flieferschein && !$fbestellung && !$fverbindlichkeit){ $fangebot = 1; $fauftrag = 1; $frechnung = 1; $fgutschrift = 1; $flieferschein = 1; $fbestellung = 1; $fverbindlichkeit = 1; } }else{ if(!$fangebot && !$fauftrag && !$frechnung && !$fgutschrift && !$flieferschein){ $fangebot = 1; $fauftrag = 1; $frechnung = 1; $fgutschrift = 1; $flieferschein = 1; } } //angebot if($fangebot && $this->app->erp->RechteVorhanden('angebot','list')){ $sqla[] = "(SELECT a.id, if(a.belegnr='',CONCAT('ENTWURF'), CONCAT('',a.belegnr,'')) as belegnr, 'Angebot' as belegart, a.datum as vom, a.anfrage as anfrage, if(a.internebezeichnung!='',CONCAT('',a.internebezeichnung,''),'') as name, ' ' as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, ' ' as zahlungsstatus, ".$this->app->erp->FormatPreis("a.gesamtsumme",2)." as betrag, a.status as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, a.id as menu FROM angebot a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id WHERE a.adresse='$id' AND a.status!='angelegt' " . $this->app->erp->ProjektRechte() . ")"; } //auftrag if($fauftrag && $this->app->erp->RechteVorhanden('auftrag','list')){ $sqla[] = "(SELECT au.id, if(au.belegnr='',CONCAT('ENTWURF'), CONCAT('',au.belegnr,'')) as belegnr, 'Auftrag' as belegart, au.datum as vom, ' ' as anfrage, CONCAT(au.ihrebestellnummer,if(au.internebezeichnung!='',CONCAT(IF(au.ihrebestellnummer!='','
',''),'',au.internebezeichnung,''),'')) as name, ' ' as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, ' ' as zahlungsstatus, ".$this->app->erp->FormatPreis("au.gesamtsumme",2)." as betrag, au.status as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, au.id as menu FROM auftrag au LEFT JOIN projekt p ON p.id=au.projekt LEFT JOIN adresse adr ON au.adresse=adr.id WHERE au.adresse='$id' AND au.status!='angelegt' " . $this->app->erp->ProjektRechte() . ")"; } //rechnung if($frechnung && $this->app->erp->RechteVorhanden('rechnung','list')){ $sqla[] = "(SELECT r.id, if(r.belegnr='',CONCAT('ENTWURF'), CONCAT('',r.belegnr,'')) as belegnr, 'Rechnung' as belegart, CONCAT(r.datum,'%d.%m.%Y',' ',if(r.zahlungsstatus='offen', if(DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day) >= NOW(),CONCAT('
fällig in ',DATEDIFF(DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day),NOW()),' Tagen'),CONCAT('
fällig seit ',DATEDIFF(NOW(),DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day)),' Tagen')) ,'')) as vom, ' ' as anfrage, CONCAT(a.ihrebestellnummer,if(r.internebezeichnung!='',CONCAT(IF(a.ihrebestellnummer!='','
',''),'',r.internebezeichnung,''),'')) as name, ' ' as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, if(r.zahlungsstatus='offen', if(DATEDIFF(NOW(),DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day)) > 0, CONCAT('',upper(substring(r.mahnwesen,1,1)),lower(substring(r.mahnwesen,2)),''), 'offen') ,if(r.zahlungsstatus='','offen',r.zahlungsstatus)) as zahlungsstatus, ".$this->app->erp->FormatPreis("r.soll",2)." as betrag, r.status as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, r.id as menu FROM rechnung r LEFT JOIN auftrag a ON r.auftragid=a.id LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id WHERE r.adresse='$id' AND r.status!='angelegt' " . $this->app->erp->ProjektRechte() . ")"; } //gutschrift if($fgutschrift && $this->app->erp->RechteVorhanden('gutschrift','list')){ $sqla[] = "(SELECT g.id, if(g.belegnr='',CONCAT('ENTWURF'), CONCAT('',g.belegnr,'')) as belegnr, 'Gutschrift' as belegart, g.datum as vom, ' ' as anfrage, if(g.internebezeichnung!='',CONCAT('',g.internebezeichnung,''),'') as name, ' ' as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, g.zahlungsstatus as zahlungsstatus, CONCAT('-', ".$this->app->erp->FormatPreis("g.soll",2).") as betrag, g.status as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, g.id as menu FROM gutschrift g LEFT JOIN projekt p ON p.id=g.projekt LEFT JOIN adresse adr ON g.adresse=adr.id WHERE g.adresse='$id' AND g.status!='angelegt' " . $this->app->erp->ProjektRechte() . ")"; } //lieferschein if($flieferschein && $this->app->erp->RechteVorhanden('lieferschein','list')){ $sqla[] = "(SELECT l.id, if(l.belegnr='',CONCAT('ENTWURF'), CONCAT('',l.belegnr,'')) as belegnr, 'Lieferschein' as belegart, l.datum as vom, ' ' as anfrage, CONCAT(a.ihrebestellnummer,if(l.internebezeichnung!='',CONCAT(IF(a.ihrebestellnummer!='','
',''),'',l.internebezeichnung,''),'')) as name, if(v.tracking,v.tracking,'-') as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, ' ' as zahlungsstatus, '0,00' as betrag, l.status as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, l.id as menu FROM lieferschein l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.adresse=adr.id LEFT JOIN auftrag a ON l.auftragid=a.id LEFT JOIN versand v ON v.lieferschein=l.id WHERE l.adresse='$id' AND l.status!='angelegt' " . $this->app->erp->ProjektRechte() . ")"; } if($this->app->erp->IsAdresseSubjekt($id,"Lieferant")){ //bestellung if($fbestellung && $this->app->erp->RechteVorhanden('bestellung','list')){ $sqla[] = "(SELECT be.id, if(be.belegnr='',CONCAT('ENTWURF'), CONCAT('',be.belegnr,'')) as belegnr, 'Bestellung' as belegart, be.datum as vom, ' ' as anfrage, if(be.internebezeichnung!='',CONCAT('',be.internebezeichnung,''),'') as name, ' ' as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, ' ' as zahlungsstatus, ".$this->app->erp->FormatPreis("be.gesamtsumme",2)." as betrag, be.status as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, be.id as menu FROM bestellung be LEFT JOIN projekt p ON p.id=be.projekt LEFT JOIN adresse adr ON be.adresse=adr.id WHERE be.adresse='$id' AND be.status !='angelegt' " . $this->app->erp->ProjektRechte() . ")"; } //verbindlichkeit if($fverbindlichkeit && $this->app->erp->RechteVorhanden('verbindlichkeit','list')){ $sqla[] = "(SELECT v.id, CONCAT('',v.id,'') as belegnr, 'Verbindlichkeit' as belegart, v.rechnungsdatum as vom, ' ' as anfrage, '' as name, ' ' as tracking, LEFT(UPPER(p.abkuerzung),10) as projekt, v.status as zahlungsstatus, CONCAT('-', ".$this->app->erp->FormatPreis("v.betrag",2).") as betrag, ' ' as status, CONCAT('app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">') as menux, v.id as menu FROM verbindlichkeit v LEFT JOIN projekt p ON p.id=v.projekt LEFT JOIN adresse adr ON v.adresse=adr.id WHERE v.adresse='$id' AND v.status != 'angelegt' " . $this->app->erp->ProjektRechte() . ")"; } } $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.belegnr, b.belegart, DATE_FORMAT(b.vom,'%d.%m.%Y'), b.anfrage, b.name, b.tracking, b.projekt, b.zahlungsstatus, b.betrag, b.status, b.menux, b.menu FROM ( ".implode(" UNION ALL ", $sqla)." )b "; $where = "b.id > 0".$subwhere; break; case "artikelfreifelder_list": $allowed['artikel'] = array('list'); $heading = array('Freifeld-Nr.', 'Freifeldname', 'Sprache', 'Wert', 'Wert Deutsch', 'Menü', ''); $width = array('10%', '20%', '20%', '30%', '30%', '10%', '1%'); $findcols = array('CAST(s.nummer AS SIGNED)', 's.bezeichnung', 's.sprache', 's.wert', 's.freifeld', 'menux', 's.id'); $searchsql = array('s.nummer', 's.bezeichnung', 's.sprache', 's.wert', 's.freifeld'); $defaultorder = 1; $defaultorderdesc = 0; $freifelder = array(); $freifelderfirmendaten = array(); $freifelderde = array(); $artikelid = $this->app->Secure->GetGET('id'); for($i=1; $i<=40; $i++){ $freifeldname = $this->app->erp->Firmendaten('freifeld'.$i); if($freifeldname == '')$freifeldname = 'Freifeld '.$i; $freifelder[] = "(SELECT a.id, ".$i." AS nummer, a.freifeld".$i." AS freifeld FROM artikel a WHERE id = '$artikelid')"; $freifelderfirmendaten[] = "(SELECT ".$i." AS nummer, '$freifeldname' AS bezeichnung )"; $freifelderde[] = "(SELECT a.id, ".$i." AS nummer, '$freifeldname' AS bezeichnung, 'DE' AS sprache, freifeld".$i." AS wert, freifeld".$i." AS freifeld FROM artikel a WHERE id ='$artikelid')"; } $where = ""; $menu = ""; $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, s.nummer, s.bezeichnung, s.sprache, s.wert, s.freifeld, CONCAT('
', 'app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ',IF(s.sprache != 'DE',CONCAT( 'app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">'),''),'
') as menux , s.id FROM (SELECT af.id, af.nummer, f.bezeichnung, af.sprache, af.wert, a.freifeld FROM (".implode(" UNION ALL ", $freifelder).") a LEFT JOIN artikel_freifelder af ON a.id = af.artikel AND a.nummer = af.nummer LEFT JOIN (".implode(" UNION ALL ", $freifelderfirmendaten).") f ON af.nummer = f.nummer WHERE af.id > 0 AND af.artikel = '$artikelid' UNION ALL ".implode(" UNION ALL ", $freifelderde).") AS s"; break; case "adressebestellungen": $allowed['adresse'] = array('offenebestellungen'); $heading = array('Bestelldatum', 'Belegnr.', 'Name', 'Nummer', 'Status', 'Versendet am', 'Versendet durch', 'Versendet per', 'Menü'); $width = array('5%', '10%', '20%', '10%', '15%', '5%', '15%', '15%', '15%'); $findcols = array('datum', "if(belegnr != '',belegnr,'ohne Nummer')", 'name', 'lieferantennummer', 'status', 'versendet_am', 'versendet_durch', 'versendet_per', 'id'); $searchsql = array("DATE_FORMAT(datum, '%d.%m.%Y')", "if(belegnr != '',belegnr,'ohne Nummer')", 'name', 'lieferantennummer', 'status', "DATE_FORMAT(versendet_am,'%d.%m.%Y')", 'versendet_durch', 'versendet_per'); $menu = ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""." "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""." "; $menu .= ''; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $datecols = array(0,5); $fabgeschlossen = $this->TableSearchFilter($name, 4, 'abgeschlossen', '0', 0, 'checkbox'); $subwhere = ""; if($fabgeschlossen == 1){ $subwhere .= " OR status = 'abgeschlossen') "; }else{ $subwhere .= ")"; } $sql = "SELECT SQL_CALC_FOUND_ROWS id, DATE_FORMAT(datum, '%d.%m.%Y'), if(belegnr != '',belegnr,'ohne Nummer') as beleg, name, lieferantennummer, status, DATE_FORMAT(versendet_am, '%d.%m.%Y') as versendet_am, versendet_durch, versendet_per, id FROM bestellung"; $where = "id > 0 AND adresse = '$id' AND (status = 'angelegt' OR status = 'freigegeben' OR status = 'storniert' OR status = 'versendet'".$subwhere; break; case "adressebestellungen_artikel": $allowed['adresse'] = array('offenebestellungen'); $heading = array('Bestelldatum', 'Belegnr.', 'Name', 'Nummer', 'Bestellnummer', 'Status', 'Lieferdatum', 'Projekt', 'Menge', 'Geliefert', 'Preis', 'Menü', ''); $width = array('10%', '10%', '10%', '10%', '10%', '10%', '10%', '10%', '10%', '10%', '10%', '10%', '5%'); $findcols = array('datum', "if(b.belegnr != '', belegnr, 'ohne Nummer')", 'bp.bezeichnunglieferant', 'a.nummer', 'bp.bestellnummer', "if(bp.geliefert < bp.menge, 'offen', 'abgeschlossen')", "if(bp.lieferdatum, DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort')", 'p.abkuerzung', 'bp.menge', 'bp.geliefert', 'bp.preis', 'menux', 'bp.id'); $searchsql = array("DATE_FORMAT(datum, '%d.%m.%Y')", "if(b.belegnr != '', belegnr, 'ohne Nummer')", 'bp.bezeichnunglieferant','bp.bezeichnunglieferant', 'a.nummer', 'bp.bestellnummer', "if(bp.geliefert < bp.menge, 'offen', 'abgeschlossen')", "if(bp.lieferdatum,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort')", 'p.abkuerzung', $this->app->erp->FormatMenge('bp.menge'), 'bp.geliefert', $this->app->erp->FormatPreis('bp.preis', 2)); $numbercols = array(8,10); $alignright = array(9,10,11); $datecols = array(0); $fabgeschlossen = $this->TableSearchFilter($name, 7, 'abgeschlossenartikel', '0', 0, 'checkbox'); $subwhere = ""; if($fabgeschlossen == 1){ $subwhere .= " OR bp.geliefert >= bp.menge )"; }else{ $subwhere .= ")"; } $sql = "SELECT SQL_CALC_FOUND_ROWS bp.id, DATE_FORMAT(b.datum, '%d.%m.%Y'), if(b.belegnr != '', belegnr, 'ohne Nummer') as belegnr, LEFT(bp.bezeichnunglieferant, 20) as name, a.nummer, bp.bestellnummer, if(bp.geliefert < bp.menge, 'offen', 'abgeschlossen') as status, if(bp.lieferdatum, DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),'sofort') as lieferdatum, p.abkuerzung, ".$this->app->erp->FormatMenge('bp.menge').", ".$this->app->erp->FormatMenge('bp.geliefert').", ".$this->app->erp->FormatPreis('bp.preis', 2)." as preis, if(bp.geliefert < bp.menge, CONCAT('app->Conf->WFconf['defaulttheme']}/images/right.png\" width=\"18\"border=\"0\">'), 'geliefert') as menux, bp.id FROM bestellung_position bp LEFT JOIN bestellung b ON bp.bestellung = b.id LEFT JOIN artikel a ON a.id = bp.artikel LEFT JOIN projekt p ON p.id = bp.projekt"; $where = "b.id > 0 AND b.adresse = '$id' AND (bp.geliefert < bp.menge".$subwhere; break; case "adresseartikel": $allowed['adresse'] = array('kundeartikel'); // headings $heading = array('Nummer', 'Artikel', 'Belegart', 'Belegnr.', 'Datum', 'Menge', 'Einzelpreis', 'Rabatt', 'Gesamt', 'Menü', '',''); $width = array('10%', '45%', '10%', '15%', '10%', '10%', '10%', '10%', '10%', '1%','1%','1%'); $findcols = array('b.nummer', 'b.name_de', 'b.typ', 'b.belegnr', 'b.datum', 'b.menge', 'CAST(b.preis AS DECIMAL(10,2))', 'CAST(b.rabatt AS DECIMAL(10,2))', 'CAST(b.gesamt AS DECIMAL(10,2))', 'b.menu'); $searchsql = array('b.nummer', 'b.name_de', 'b.typ', 'b.belegnr', "DATE_FORMAT(b.datum,'%d.%m.%Y')", $this->app->erp->FormatMenge('b.menge'), $this->app->erp->FormatPreis('b.preis',2), $this->app->erp->FormatPreis('b.rabatt',2), $this->app->erp->FormatPreis('b.gesamt',2)); if($this->app->erp->Firmendaten("artikel_artikelnummer_suche") == "1"){ $maxEinkauf = $this->app->DB->Select( "SELECT MAX(ct) as mx FROM( SELECT artikel, COUNT(bestellnummer) as ct FROM einkaufspreise WHERE bestellnummer IS NOT NULL AND bestellnummer !='' GROUP BY artikel ) as data"); $maxVerkauf = $this->app->DB->Select( "SELECT MAX(ct) as mx FROM( SELECT artikel, COUNT(kundenartikelnummer) as ct FROM verkaufspreise WHERE kundenartikelnummer IS NOT NULL AND kundenartikelnummer !='' GROUP BY artikel ) as data"); for($i=0;$i<$maxEinkauf;$i++){ $searchsql[] = "(SELECT bestellnummer FROM einkaufspreise e WHERE e.artikel=b.id LIMIT ".$i.",1)"; } for($i=0;$i<$maxVerkauf;$i++){ $searchsql[] = "(SELECT kundenartikelnummer FROM verkaufspreise v WHERE v.artikel=b.id LIMIT ".$i.",1)"; } } $sumcol = 9; //$menu = "app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">"; $numbercols = array(5,6,7,8); $alignright = array(6,7,8,9); $fauftrag = $this->TableSearchFilter($name, 5, 'auftrag', '0', 0, 'checkbox'); $frechnung = $this->TableSearchFilter($name, 6, 'rechnung', '0', 0, 'checkbox'); $fgutschrift = $this->TableSearchFilter($name, 7, 'gutschrift', '0', 0, 'checkbox'); $fangebot = $this->TableSearchFilter($name, 8, 'angebot', '0', 0, 'checkbox'); $fbestellung = $this->TableSearchFilter($name, 9, 'bestellung', '0', 0, 'checkbox'); $flieferschein = $this->TableSearchFilter($name, 10, 'lieferschein', '0', 0, 'checkbox'); $fproduktion = $this->TableSearchFilter($name, 11, 'produktion', '0', 0, 'checkbox'); $fnurgeraet = $this->TableSearchFilter($name, 12, 'nurgeraete', '0', 0, 'checkbox'); $fnurservice = $this->TableSearchFilter($name, 13, 'nurservice', '0', 0, 'checkbox'); $fnurgebuehr = $this->TableSearchFilter($name, 14, 'nurgebuehr', '0', 0, 'checkbox'); $fmitfreifelder = $this->TableSearchFilter($name, 15, 'mitfreifelder', '0', 0, 'checkbox'); if(!$fauftrag && !$frechnung && !$fgutschrift && !$fangebot && !$flieferschein && !$fproduktion && !$fbestellung) { $fauftrag = 1; $frechnung = 1; $fgutschrift = 1; $fangebot = 1; $flieferschein = 1; $fproduktion = 1; $fbestellung = 1; } if($fnurgeraet) $tmp_or[]="a.geraet='1'"; if($fnurservice) $tmp_or[]="a.serviceartikel='1'"; if($fnurgebuehr) $tmp_or[]="a.gebuehr='1'"; $startindex=8; if(1)//$fmitfreifelder)$id, $lagerplatz, $mitauswahl, $ziellager, $selartikel { for($i=1;$i<=20;$i++) { if($this->app->erp->Firmendaten("freifeld".$i."an") || $this->app->erp->Firmendaten("freifeld".$i."ab") || $this->app->erp->Firmendaten("freifeld".$i."re") || $this->app->erp->Firmendaten("freifeld".$i."gs") || $this->app->erp->Firmendaten("freifeld".$i."ls") ) { $startindex++; $heading[$startindex]=$this->app->erp->Firmendaten("freifeld".$i); $findcols[$startindex]="b.freifeld".$i; $width[$startindex]="5%"; $tmpsql[] = "ap.freifeld".$i; $indexes[] = $startindex+1; } } $hidecolumns = array('mitfreifelder','unchecked',$indexes); $startindex++; $heading[$startindex]="Menü"; $findcols[$startindex]="b.menu"; if (!is_null($tmpsql)) { $tmpsqlstring = implode(',',$tmpsql); } if($tmpsqlstring!="")$tmpsqlstring .=","; } if (!is_null($tmp_or)) { if(count($tmp_or)>0) { $tmp = "AND (".implode(' or ',$tmp_or).")"; } } //auftrag if($fauftrag && $this->app->erp->RechteVorhanden('auftrag','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, concat(ap.bezeichnung, '', if(ap.internerkommentar <> '', concat('
', ap.internerkommentar, ''),'')) as name_de, 'Auftrag' as typ, auf.belegnr as belegnr, auf.datum, ap.menge as menge, ap.preis as preis, ap.rabatt as rabatt, ".$this->app->erp->FormatPreis("ap.preis*ap.menge*(IF(ap.rabatt>0, (100-ap.rabatt)/100, 1))",2)." as gesamt, $tmpsqlstring CONCAT('
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ', 'app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') as menu FROM auftrag_position ap INNER JOIN auftrag auf ON ap.auftrag = auf.id LEFT JOIN artikel a ON a.id = ap.artikel WHERE auf.adresse = '$id' $tmp)"; } //rechnung if($frechnung && $this->app->erp->RechteVorhanden('rechnung','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, concat(rp.bezeichnung, '', if(rp.internerkommentar <> '', concat('
', rp.internerkommentar, ''),'')) as name_de, 'Rechnung' as typ, rec.belegnr as belegnr, rec.datum, rp.menge as menge, rp.preis as preis, rp.rabatt as rabatt, ".$this->app->erp->FormatPreis("rp.preis*rp.menge*(IF(rp.rabatt>0, (100-rp.rabatt)/100, 1))",2)." as gesamt, ".str_replace('ap.','rp.',$tmpsqlstring)." CONCAT('
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ', 'app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') as menu FROM rechnung_position rp INNER JOIN rechnung rec ON rp.rechnung = rec.id LEFT JOIN artikel a ON a.id = rp.artikel WHERE rec.adresse = '$id' $tmp)"; } //gutschrift if($fgutschrift && $this->app->erp->RechteVorhanden('gutschrift','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, concat(gp.bezeichnung, '', if(gp.internerkommentar <> '', concat('
', gp.internerkommentar, ''),'')) as name_de, 'Gutschrift' as typ, gut.belegnr as belegnr, gut.datum, gp.menge as menge, gp.preis as preis, gp.rabatt as rabatt, ".$this->app->erp->FormatPreis("gp.preis*gp.menge*(IF(gp.rabatt>0, (100-gp.rabatt)/100, 1))",2)." as gesamt, ".str_replace('ap.','gp.',$tmpsqlstring)." CONCAT('
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ', 'app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') as menu FROM gutschrift_position gp INNER JOIN gutschrift gut ON gp.gutschrift = gut.id LEFT JOIN artikel a ON a.id = gp.artikel WHERE gut.adresse = '$id' $tmp)"; } //angebot if($fangebot && $this->app->erp->RechteVorhanden('angebot','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, concat(anp.bezeichnung, '', if(anp.internerkommentar <> '', concat('
', anp.internerkommentar, ''),'')) as name_de, 'Angebot' as typ, ang.belegnr as belegnr, ang.datum, anp.menge as menge, anp.preis as preis, anp.rabatt as rabatt, ".$this->app->erp->FormatPreis("anp.preis*anp.menge*(IF(anp.rabatt>0, (100-anp.rabatt)/100, 1))",2)." as gesamt, ".str_replace('ap.','anp.',$tmpsqlstring)." CONCAT('
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ', 'app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') as menu FROM angebot_position anp INNER JOIN angebot ang ON anp.angebot = ang.id LEFT JOIN artikel a ON a.id = anp.artikel WHERE ang.adresse = '$id' $tmp)"; } //bestellung if($fbestellung && $this->app->erp->RechteVorhanden('bestellung','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, bp.bezeichnunglieferant as name_de, 'Bestellung' as typ, bes.belegnr as belegnr, bes.datum, bp.menge as menge, bp.preis as preis, '0,00' as rabatt, ".$this->app->erp->FormatPreis("bp.preis*bp.menge",2)." as gesamt, ".str_replace('ap.','bp.',$tmpsqlstring)." CONCAT('
app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') as menu FROM bestellung_position bp INNER JOIN bestellung bes ON bp.bestellung = bes.id LEFT JOIN artikel a ON a.id = bp.artikel WHERE bes.adresse = '$id' $tmp)"; } //lieferschein if($flieferschein && $this->app->erp->RechteVorhanden('lieferschein','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, concat(lp.bezeichnung, '', if(lp.internerkommentar <> '', concat('
', lp.internerkommentar, ''),'')) as name_de, 'Lieferschein' as typ, lie.belegnr as belegnr, lie.datum, lp.menge as menge, '0,00' as preis, '0,00' as rabatt, ".$this->app->erp->FormatPreis("0",2)." as gesamt, ".str_replace('ap.','lp.',$tmpsqlstring)." CONCAT('
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ', 'app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">') as menu FROM lieferschein_position lp INNER JOIN lieferschein lie ON lp.lieferschein = lie.id LEFT JOIN artikel a ON a.id = lp.artikel WHERE lie.adresse = '$id' $tmp)"; } //produktion if($fproduktion && $this->app->erp->ModulVorhanden('produktion') && $this->app->erp->RechteVorhanden('produktion','list')){ $sqla[] = "(SELECT a.id, a.nummer as nummer, concat(pp.bezeichnung, '', if(pp.internerkommentar <> '', concat('
', pp.internerkommentar, ''),'')) as name_de, 'Produktion' as typ, pro.belegnr as belegnr, pro.datum, pp.menge as menge, pp.preis as preis, '0,00' as rabatt, ".$this->app->erp->FormatPreis("pp.preis*pp.menge",2)." as gesamt, ".str_replace('ap.',"'' as ",$tmpsqlstring)." CONCAT('
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> ', 'app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">
') as menu FROM produktion_position pp INNER JOIN produktion pro ON pp.produktion = pro.id LEFT JOIN artikel a ON a.id = pp.artikel WHERE pro.adresse = '$id' $tmp)"; } $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.nummer, b.name_de, b.typ, b.belegnr, DATE_FORMAT(b.datum, '%d.%m.%Y'), ".$this->app->erp->FormatMenge("b.menge").", ".$this->app->erp->FormatPreis("b.preis",2).", ".$this->app->erp->FormatPreis('b.rabatt',2).", b.gesamt, ".str_replace('ap.','b.',$tmpsqlstring)." b.menu FROM ( ".implode(" UNION ALL ", $sqla)." )b "; break; case "adresse_artikel_gekaufte": $allowed['adresse'] = array('artikel'); // headings $heading = array('Artikel-Nr.', 'Artikel', 'Kategorie', 'Menge', 'Menü'); $width = array('10%', '30%','30','10%', '1%'); $findcols = array('a.nummer', 'a.name_de', "k.bezeichnung", "SUM(rp.menge)", 'a.id'); $searchsql = array('a.nummer', 'a.name_de', 'k.bezeichnung', 'a.id'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $numbercols = array(3); // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.nummer, a.name_de, k.bezeichnung, ".$this->app->erp->FormatMenge("SUM(rp.menge)").",a.id FROM rechnung_position rp LEFT JOIN rechnung r ON r.id=rp.rechnung LEFT JOIN artikel a ON a.id=rp.artikel LEFT JOIN artikelkategorien k ON a.typ = concat(k.id,'_kat') "; // fester filter $where = " r.adresse='$id' AND r.status!='storniert' ";//.$this->app->erp->ProjektRechte(); $groupby = " GROUP by rp.artikel"; $alignright = array(4); $count = "SELECT COUNT(DISTINCT rp.artikel) FROM rechnung_position rp LEFT JOIN rechnung r ON r.id=rp.rechnung LEFT JOIN artikel a ON a.id=rp.artikel WHERE $where"; break; case "adressestundensatz": $allowed['adresse'] = array('stundensatz'); $heading = array("Projekt-ID", "Projekt", "Typ", "Stundensatz", "Menü"); $width = array("10%", "50%", "10%", "15%", "15%"); $findcols = array("p.id", "p.name", "typ", "satz", "ssid"); $searchsql = array("p.name"); $sql = "SELECT SQL_CALC_FOUND_ROWS p.id, p.abkuerzung, p.name, IFNULL(ss.typ,'Standard') AS typ, IFNULL(ss.satz, (SELECT satz FROM stundensatz WHERE typ='Standard' AND adresse='$id' ORDER BY datum DESC LIMIT 1)) AS satz, IFNULL(ss.id,CONCAT('&projekt=',p.id)) AS ssid FROM adresse_rolle ar LEFT JOIN projekt as p ON ar.parameter=p.id LEFT JOIN (SELECT * FROM stundensatz AS dss ORDER BY dss.datum DESC) AS ss ON p.id=ss.projekt AND ss.adresse=ar.adresse "; $where = " ar.adresse='$id' AND subjekt='Mitarbeiter' AND objekt='Projekt' GROUP BY p.id "; $count = "SELECT COUNT(parameter) FROM adresse_rolle WHERE adresse='$id' AND subjekt='Mitarbeiter' AND objekt='Projekt'"; $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $moreinfo = false; break; case "adresselohn": $allowed['adresse'] = array('lohn'); $heading = array('Monat', 'Stunden', 'Menü'); $width = array('20%', '20%', '20%', '40%'); $findcols = array('monat', 'stunden'); $searchsql = array('monat'); $sql = "SELECT SQL_CALC_FOUND_ROWS id,DATE_FORMAT(von,'%Y-%m') AS monat, SUM(ROUND((UNIX_TIMESTAMP(bis) - UNIX_TIMESTAMP(von))/3600,2)) as stunden FROM zeiterfassung "; $where = " adresse='$id' GROUP by monat"; //ORDER BY STR_TO_DATE(CONCAT(MONTH(von),',',YEAR(von)), '%m,%Y') "; //$where = " adresse='$id' GROUP BY monat,jahr ORDER BY STR_TO_DATE(CONCAT(MONTH(von),',',YEAR(von)), '%m,%Y') "; $count = "SELECT FOUND_ROWS() AS treffer,MONTHNAME(von) AS monat, YEAR(von) AS jahr FROM zeiterfassung WHERE adresse='$id' GROUP BY monat,jahr "; // ORDER BY STR_TO_DATE(CONCAT(MONTH(von),',',YEAR(von)), '%m,%Y');"; // SELECT FOUND_ROWS();"; $menu = "test"; $moreinfo = false; break; case "adresse_suche": $allowed['adresse'] = array('list'); // headings $heading = array('Name', 'Kunde', 'Lieferant', 'Land', 'PLZ', 'Ort', 'E-Mail', 'Projekt', 'Menü'); $width = array('18%', '10%', '5%', '5%', '5%', '5%', '5%', '15%', '10%'); $findcols = array('name', 'kundennummer', 'lieferantennummer', 'land', 'plz', 'ort', 'email', 'projekt', 'id'); $defaultorder = 9; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $searchsql = array('a.sonstiges'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; // SQL statement //if(a.typ = 'herr' OR a.typ = 'frau',CONCAT(a.vorname,' ',a.name),a.name) as name, if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT(a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),'')) as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a.id as menu FROM adresse AS a LEFT JOIN projekt p ON p.id=a.projekt "; } else { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.name as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a.id as menu FROM adresse AS a LEFT JOIN projekt p ON p.id=a.projekt "; } // fester filter $where = "a.geloescht=0 " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(a.id) FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.geloescht=0 " . $this->app->erp->ProjektRechte(); break; case "adresseinnendienst": $allowed['adresse'] = array('list'); // headings $heading = array('Name', 'Kunde', 'Lieferant', 'Land', 'PLZ', 'Ort', 'E-Mail', 'Projekt', 'Menü'); $width = array('18%', '10%', '5%', '5%', '5%', '5%', '5%', '15%', '1%'); if($this->app->erp->Firmendaten("adresse_freitext1_suche")){ $findcols = array("CONCAT(a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),''))", "if(a.kundennummer!='',a.kundennummer,'-')", "if(a.lieferantennummer!='',a.lieferantennummer,'-')", 'a.land', 'a.plz', 'a.ort', 'a.email', 'p.abkuerzung', 'id'); }else{ $findcols = array('a.name', "if(a.kundennummer!='',a.kundennummer,'-')", "if(a.lieferantennummer!='',a.lieferantennummer,'-')", 'a.land', 'a.plz', 'a.ort', 'a.email', 'p.abkuerzung', 'id'); } $defaultorder = 9; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $module = $this->app->Secure->GetGET("smodule"); if ($this->app->erp->Firmendaten("adresse_freitext1_suche")){ $searchsql = array('a.ort', 'a.name', 'p.abkuerzung', 'a.land', 'a.plz', 'a.email', "if(a.kundennummer!='',a.kundennummer,'-')", "if(a.lieferantennummer!='',a.lieferantennummer,'-')", 'a.ansprechpartner', 'a.freifeld1','a.freifeld2'); }else{ $searchsql = array('a.ort', 'a.name', 'p.abkuerzung', 'a.land', 'a.plz', 'a.email', "if(a.kundennummer!='',a.kundennummer,'-')", "if(a.lieferantennummer!='',a.lieferantennummer,'-')", 'a.ansprechpartner'); } $menu = "app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">"; $gruppeJoin = ''; $gruppeWhere = ''; $gruppeBearbeiter = $this->app->erp->Firmendaten('group_employee'); if($gruppeBearbeiter !== ''){ $gruppeBearbeiterKennziffer = explode(' ', $gruppeBearbeiter); $gruppeBearbeiterKennziffer = $gruppeBearbeiterKennziffer[0]; $gruppeBearbeiterId = $this->app->DB->Select("SELECT id FROM gruppen WHERE kennziffer = '$gruppeBearbeiterKennziffer' LIMIT 1"); if($gruppeBearbeiterId > 0){ $gruppeJoin = " LEFT JOIN adresse_rolle ar ON a.id = ar.adresse"; $gruppeWhere = " AND ar.subjekt = 'Mitglied' AND ar.objekt = 'Gruppe' AND ar.parameter = '$gruppeBearbeiterId' AND ar.von <= CURDATE() AND (ar.bis = '0000-00-00' OR ar.bis >= CURDATE())"; } } // SQL statement if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT(a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),'')) as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a.id as menu FROM adresse AS a LEFT JOIN projekt p ON p.id=a.projekt ".$gruppeJoin; } else { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.name as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a.id as menu FROM adresse AS a LEFT JOIN projekt p ON p.id=a.projekt ".$gruppeJoin; } // fester filter $where = "a.geloescht=0 ".$gruppeWhere . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(a.id) FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.geloescht=0 " . $this->app->erp->ProjektRechte(); break; case "adressevertrieb": $allowed['adresse'] = array('list'); // headings $heading = array('Name', 'Kunde', 'Lieferant', 'Land', 'PLZ', 'Ort', 'E-Mail', 'Projekt', 'Menü'); $width = array('18%', '10%', '5%', '5%', '5%', '5%', '5%', '15%', '1%'); if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) { $findcols = array("CONCAT(a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),''))", "if(a.kundennummer!='',a.kundennummer,'-')", "if(a.lieferantennummer!='',a.lieferantennummer,'-')", 'a.land', 'a.plz', 'a.ort', 'a.email', 'p.abkuerzung', 'id'); }else{ $findcols = array('a.name', "if(a.kundennummer!='',a.kundennummer,'-')", "if(a.lieferantennummer!='',a.lieferantennummer,'-')", 'a.land', 'a.plz', 'a.ort', 'a.email', 'p.abkuerzung', 'id'); } $defaultorder = 9; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $module = $this->app->Secure->GetGET("smodule"); if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) $searchsql = array('a.ort', 'a.name', 'p.abkuerzung', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner', 'a.freifeld1','a.freifeld2'); else $searchsql = array('a.ort', 'a.name', 'p.abkuerzung', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner'); $menu = "app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">"; $gruppeJoin = ''; $gruppeWhere = ''; $gruppeVertrieb = $this->app->erp->Firmendaten('group_sales'); if($gruppeVertrieb !== ''){ $gruppeVertriebKennziffer = explode(' ', $gruppeVertrieb); $gruppeVertriebKennziffer = $gruppeVertriebKennziffer[0]; $gruppeVertriebId = $this->app->DB->Select("SELECT id FROM gruppen WHERE kennziffer = '$gruppeVertriebKennziffer' LIMIT 1"); if($gruppeVertriebId > 0){ $gruppeJoin = " LEFT JOIN adresse_rolle ar ON a.id = ar.adresse"; $gruppeWhere = " AND ar.subjekt = 'Mitglied' AND ar.objekt = 'Gruppe' AND ar.parameter = '$gruppeVertriebId' AND ar.von <= CURDATE() AND (ar.bis = '0000-00-00' OR ar.bis >= CURDATE())"; } } // SQL statement if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT(a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),'')) as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a.id as menu FROM adresse AS a LEFT JOIN projekt p ON p.id=a.projekt ".$gruppeJoin; } else { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.name as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a.id as menu FROM adresse AS a LEFT JOIN projekt p ON p.id=a.projekt ".$gruppeJoin; } // fester filter $where = "a.geloescht=0 ".$gruppeWhere . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(a.id) FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.geloescht=0 " . $this->app->erp->ProjektRechte(); break; case "adressetabelle": $allowed['adresse'] = array('list'); // headings $projectsearchdisabled = (String)$this->app->erp->GetKonfiguration('adressetabelle_projectsearchdisabled'); if($projectsearchdisabled==='') { $projectsearchdisabled = ($this->app->DB->Select('SELECT COUNT(id) FROM adresse') >= 100000)?1:0; $this->app->erp->SetKonfigurationValue('adressetabelle_projectsearchdisabled', $projectsearchdisabled); } $projectCol = 'p.abkuerzung'; if($projectsearchdisabled) { $projectCol = '(SELECT abkuerzung FROM projekt WHERE id = a.projekt)'; } $projectColSql = $projectCol.' AS projektabkuerung'; if ($this->app->erp->RechteVorhanden("multilevel", "list") && $this->app->erp->Firmendaten("modul_mlm") == "1") { $heading = array('','Name', 'Kunde','Sponsor', 'Lieferant', 'Land', 'PLZ', 'Ort', 'E-Mail', 'Projekt'); $width = array('1%','18%', '10%','10%', '5%', '5%', '5%', '5%', '5%', '15%'); $findcols = array('a.id', "CONCAT(a.name,if(a.ansprechpartner!='','
Ansprechpartner: ',''),a.ansprechpartner,if(a.ansprechpartner!='','',''))", 'a.kundennummer', 'a.sponsor','a.lieferantennummer', 'a.land', 'a.plz', 'a.ort', 'a.email', 'a.projekt'); $defaultorder = 11; //Optional wenn andere Reihenfolge gewuenscht $menucol = 10; if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) { $searchsql = array('a.ort', 'a.name', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner', 'a.freifeld1','a.ansprechpartner','a.adresszusatz','a.freifeld2'); } else { $searchsql = array('a.ort', 'a.name', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner','a.ansprechpartner','a.adresszusatz'); } if(!$projectsearchdisabled) { $searchsql[] = 'p.abkuerzung'; } } else { $heading = array('','Name', 'Kunde', 'Lieferant', 'Land', 'PLZ', 'Ort', 'E-Mail', 'Projekt'); $width = array('1%','18%', '10%', '5%', '5%', '5%', '5%', '5%', '15%'); $findcols = array('a.id',"CONCAT(a.name,if(a.ansprechpartner!='','
Ansprechpartner: ',''),a.ansprechpartner,if(a.ansprechpartner!='','',''))", 'a.kundennummer', 'a.lieferantennummer', 'a.land', 'a.plz', 'a.ort', 'a.email', '(SELECT abkuerzung FROM projekt WHERE id = a.projekt)'); $defaultorder = 10; //Optional wenn andere Reihenfolge gewuenscht $menucol = 9; if ($this->app->erp->Firmendaten("adresse_freitext1_suche")){ $searchsql = array('a.ort', 'a.name', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner', 'a.ansprechpartner', 'a.adresszusatz', 'a.freifeld2', 'a.telefon', 'a.freifeld1'); } else{ $searchsql = array('a.ort', 'a.name', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner', 'a.ansprechpartner', 'a.adresszusatz', 'a.telefon'); } if(!$projectsearchdisabled) { $searchsql[] = 'p.abkuerzung'; } } $zusatzfelderstr = ''; $adressezusatzfelder = $this->app->erp->getZusatzfelderAdresse(); $zusatzcols = null; $joincached = ""; for($i = 1; $i <= 5; $i++) { $zusatzfeld = $this->app->erp->Firmendaten('adressetabellezusatz'.$i); if($zusatzfeld && isset($adressezusatzfelder[$zusatzfeld])) { $zusatzfeldHead = $adressezusatzfelder[$zusatzfeld]; $typ = $this->app->erp->Firmendaten('adresse'.$zusatzfeld.'typ'); if(strstr($zusatzfeldHead,'|')!==false && $typ==='select'){ $zusatzfeldHead = explode('|', $zusatzfeldHead)[0]; } $heading[] = $zusatzfeldHead; $width[] = '10%'; $zusatzcols[] = 'a.'.$zusatzfeld; $findcols[] = 'a.'.$zusatzfeld; $zusatzfelderstr .= 'a.'.$zusatzfeld.', '; if(!in_array('a.'.$zusatzfeld, $searchsql))$searchsql[] = 'a.'.$zusatzfeld; $menucol++; } } $width[] = '1%'; $heading[] = 'Menü'; $findcols[] = 'a.id'; $moreinfo = true; $moreinfoaction = "adr"; $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; // SQL statement //if(a.typ = 'herr' OR a.typ = 'frau',CONCAT(a.vorname,' ',a.name),a.name) as name, $parameter = $this->app->User->GetParameter('table_filter_adresse'); $parameter = base64_decode($parameter); $parameter = json_decode($parameter, true); if ($this->app->erp->Firmendaten("adresse_freitext1_suche")) { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, CONCAT(CONCAT(a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),'')),if(a.ansprechpartner!='','
',''),a.ansprechpartner,if(a.ansprechpartner!='','','')) as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, $projectColSql,$zusatzfelderstr a.id as menu FROM adresse AS a "; } else { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, CONCAT(a.name,if(a.ansprechpartner!='','
',''),a.ansprechpartner,if(a.ansprechpartner!='','','')) as name, if(a.kundennummer!='',a.kundennummer,'-') as kundennummer, if(a.lieferantennummer!='',a.lieferantennummer,'-') as lieferantennummer, a.land as land, a.plz as plz, a.ort as ort, a.email as email, $projectColSql,$zusatzfelderstr a.id as menu FROM adresse AS a "; } if(!$projectsearchdisabled) { $sql .= ' LEFT JOIN projekt AS p ON a.projekt = p.id '; } /* if(isset($parameter['durchsuchenAnsprechpartner']) && !empty($parameter['durchsuchenAnsprechpartner'])) { $subJoins['durchsuchenAnsprechpartner'] = ' LEFT JOIN ansprechpartner ON ansprechpartner.adresse = adresse.id'; } if(isset($parameter['durchsuchenLieferadresse']) && !empty($parameter['durchsuchenLieferadresse'])) { $subJoins['durchsuchenLieferadresse'] = ' LEFT JOIN lieferadressen ON lieferadressen.adresse = adresse.id'; } */ if (isset($parameter['rolle']) && !empty($parameter['rolle'])) { if(isset($parameter['gruppe']) && !empty($parameter['gruppe'])) { /*$sql .= " INNER JOIN adresse_rolle adr ON adr.adresse = a.id AND adr.subjekt LIKE '" . $parameter['rolle'] . "' AND adr.objekt LIKE 'gruppe' AND adr.parameter = '".$parameter['gruppe']."' AND (adr.bis = '0000-00-00' OR adr.bis >= curdate()) AND (adr.von = '0000-00-00' OR adr.von <= curdate()) INNER JOIN gruppen gr ON adr.parameter = gr.id AND (gr.projekt = 0 OR (1 ".$this->app->erp->ProjektRechte('gr.projekt').")) ";*/ $sql .="INNER JOIN adresse_rolle adr ON adr.adresse = a.id AND adr.objekt LIKE 'Gruppe' AND adr.parameter = '".$parameter['gruppe']."' AND (adr.bis = '0000-00-00' OR adr.bis >= curdate()) AND (adr.von = '0000-00-00' OR adr.von <= curdate()) INNER JOIN adresse_rolle adr2 ON adr2.adresse = a.id AND adr2.subjekt LIKE '".$parameter['rolle']."' AND (adr.bis = '0000-00-00' OR adr.bis >= curdate()) AND (adr.von = '0000-00-00' OR adr.von <= curdate()) INNER JOIN gruppen gr ON adr.parameter = gr.id AND (gr.projekt = 0 OR (1 ".$this->app->erp->ProjektRechte('gr.projekt').")) INNER JOIN gruppen gr2 ON adr2.parameter = gr2.id AND (gr2.projekt = 0 OR (1 ".$this->app->erp->ProjektRechte('gr.projekt')."))"; } else { $sql .= " INNER JOIN adresse_rolle adr ON adr.adresse = a.id AND adr.subjekt LIKE '" . $parameter['rolle'] . "' AND (adr.bis = '0000-00-00' OR adr.bis >= curdate()) AND (adr.von = '0000-00-00' OR adr.von <= curdate()) "; } } elseif(isset($parameter['gruppe']) && !empty($parameter['gruppe'])) { $sql .= " INNER JOIN adresse_rolle adr ON adr.adresse = a.id AND adr.objekt LIKE 'gruppe' AND adr.parameter = '".$parameter['gruppe']."' AND (adr.bis = '0000-00-00' OR adr.bis >= curdate()) AND (adr.von = '0000-00-00' OR adr.von <= curdate()) INNER JOIN gruppen gr ON adr.parameter = gr.id AND (gr.projekt = 0 OR (1 ".$this->app->erp->ProjektRechte('gr.projekt').")) "; } /* if (isset($parameter['ansprechpartner']) && !empty($parameter['ansprechpartner'])) { $sql .= " LEFT JOIN ansprechpartner anp ON anp.adresse = a.id AND anp.name LIKE '%" . $parameter['ansprechpartner'] . "%' "; } */ // fester filter $where = 'a.geloescht=0 ' . $this->app->erp->ProjektRechte('a.projekt', true, 'a.vertrieb'); $cached_count = 'SELECT COUNT(id) FROM adresse AS a WHERE geloescht = 0 '.$this->app->erp->ProjektRechte('a.projekt', true, 'a.vertrieb'); /* STAMMDATEN */ if(isset($parameter['kundennummer']) && !empty($parameter['kundennummer'])) { $paramsArray[] = "a.kundennummer LIKE '%".$parameter['kundennummer']."%' "; } if(isset($parameter['name']) && !empty($parameter['name'])) { $paramsArray[] = "a.name LIKE '%".$parameter['name']."%' "; } if(isset($parameter['ansprechpartner']) && !empty($parameter['ansprechpartner'])) { /* $paramsArray[] = " a.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' "; */ $paramsArray[] = " ( a.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' OR a.id IN ( SELECT adresse FROM ansprechpartner ansp WHERE ansp.name LIKE '%" . $parameter['ansprechpartner'] . "%' ) ) "; } if(isset($parameter['abteilung']) && !empty($parameter['abteilung'])) { $paramsArray[] = "a.abteilung LIKE '%".$parameter['abteilung']."%' "; } if(isset($parameter['adresszusatz']) && !empty($parameter['adresszusatz'])) { $paramsArray[] = "a.adresszusatz LIKE '%".$parameter['adresszusatz']."%' "; } if(isset($parameter['abo']) && !empty($parameter['abo'])) { $paramsArray[] = " NOT isnull((SELECT abra.id FROM abrechnungsartikel abra WHERE abra.adresse = a.id AND (abra.enddatum = '0000-00-00' or date(now()) <= abra.enddatum ) LIMIT 1)) "; } if(isset($parameter['strasse']) && !empty($parameter['strasse'])) { $paramsArray[] = "a.strasse LIKE '%".$parameter['strasse']."%' "; } if(isset($parameter['plz']) && !empty($parameter['plz'])) { $paramsArray[] = "a.plz LIKE '".$parameter['plz']."%'"; } if(isset($parameter['ort']) && !empty($parameter['ort'])) { $paramsArray[] = "a.ort LIKE '%".$parameter['ort']."%' "; } if(isset($parameter['land']) && !empty($parameter['land'])) { $paramsArray[] = "a.land LIKE '".$parameter['land']."' "; } if(isset($parameter['ustid']) && !empty($parameter['ustid'])) { $paramsArray[] = "a.ustid LIKE '%".$parameter['ustid']."%' "; } if(isset($parameter['telefon']) && !empty($parameter['telefon'])) { $paramsArray[] = "a.telefon LIKE '%".$parameter['telefon']."%' "; } if(isset($parameter['email']) && !empty($parameter['email'])) { $paramsArray[] = "a.email LIKE '%".$parameter['email']."%' "; } /* XXX */ if(isset($parameter['kdnrVon']) && !empty($parameter['kdnrVon'])) { $paramsArray[] = "a.kundennummer >= '" . $parameter['kdnrVon'] . "'"; } if(isset($parameter['kdnrBis']) && !empty($parameter['kdnrBis'])) { $paramsArray[] = "a.kundennummer <= '" . $parameter['kdnrBis'] . "'"; } if(isset($parameter['projekt']) && !empty($parameter['projekt'])) { $projektData = $this->app->DB->SelectRow(' SELECT * FROM projekt WHERE abkuerzung LIKE "' . $parameter['projekt'] . '" '); $paramsArray[] = "a.projekt = '".$projektData['id']."' "; } if(isset($parameter['sonstiges']) && !empty($parameter['sonstiges'])) { $paramsArray[] = "a.sonstiges LIKE '%".$parameter['sonstiges']."%' "; } if(isset($parameter['infoAuftragserfassung']) && !empty($parameter['infoAuftragserfassung'])) { $paramsArray[] = "a.infoauftragserfassung LIKE '%".$parameter['infoAuftragserfassung']."%' "; } if(isset($parameter['aktion']) && !empty($parameter['aktion'])) { $paramsArray[] = "a.aktion LIKE '%".$parameter['aktion']."%' "; } if(isset($parameter['freitext']) && !empty($parameter['freitext'])) { $paramsArray[] = "a.freitext LIKE '%".$parameter['freitext']."%' "; } if(isset($parameter['zahlungsweise']) && !empty($parameter['zahlungsweise'])) { $paramsArray[] = " (a.zahlungsweise LIKE '".$parameter['zahlungsweise']."' OR a.zahlungsweiselieferant LIKE '".$parameter['zahlungsweise']."') "; } if(isset($parameter['lieferantennummer']) && !empty($parameter['lieferantennummer'])) { $paramsArray[] = "a.adresse LIKE '%".$parameter['lieferantennummer']."%' "; } if(isset($parameter['lieferantennummer']) && !empty($parameter['lieferantennummer'])) { $paramsArray[] = "a.adresse LIKE '%".$parameter['lieferantennummer']."%' "; } if(isset($parameter['vertrieb']) && !empty($parameter['vertrieb'])) { $paramsArray[] = "a.vertrieb = '".$parameter['vertrieb']."' "; } if(isset($parameter['innendienst']) && !empty($parameter['innendienst'])) { $paramsArray[] = "a.innendienst = '".$parameter['innendienst']."' "; } if(isset($parameter['mitarbeiternummer']) && !empty($parameter['mitarbeiternummer'])) { $paramsArray[] = "a.mitarbeiternummer LIKE '%".$parameter['mitarbeiternummer']."%' "; } if(isset($parameter['marketingsperre']) && !empty($parameter['marketingsperre'])) { $paramsArray[] = "a.marketingsperre = '1' "; } if(isset($parameter['lead']) && !empty($parameter['lead'])) { $paramsArray[] = "a.lead = '1' "; } /* if(isset($parameter['rolle']) && !empty($parameter['rolle'])) { $paramsArray[] = "a.rolle LIKE '%".$parameter['rolle']."%' "; } */ // projekt, belegnummer, internetnummer, bestellnummer, transaktionsId, freitext, internebemerkung, aktionscodes if (!empty($paramsArray)) { $where .= ' AND ' . implode(' AND ', $paramsArray); } $groupby = ' GROUP BY a.id '; $count = "SELECT COUNT(a.id) FROM adresse AS a WHERE a.geloescht=0 " . $this->app->erp->ProjektRechte('a.projekt', true, 'a.vertrieb'); break; case "artikeltabellehinweisausverkauft": $allowed['artikel'] = array('lagerlampe'); // headings $heading = array('', 'Nummer', 'Artikel', 'Im Lager', 'Projekt', 'Menü'); $width = array('5%', '10%', '45%', '8%', '15%', '10%'); $findcols = array('nummer', 'name_de', 'projekt', 'id'); $searchsql = array('a.name_de', 'a.nummer', 'p.abkuerzung'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . ""; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT('') as wahl, a.nummer as nummer, a.name_de as name_de, (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) as lager, p.abkuerzung as projekt, a.id as menu FROM artikel a LEFT JOIN projekt p ON p.id=a.projekt "; // fester filter $where = "a.geloescht=0 AND (a.ausverkauft='1' OR a.intern_gesperrt=1) AND a.shop > 0 AND (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0"; $count = "SELECT COUNT(a.id) FROM artikel a WHERE a.geloescht=0 AND a.shop > 0 AND (a.ausverkauft=1 OR a.intern_gesperrt=1) AND (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) > 0"; break; case "artikeltabellelagerndabernichtlagernd": $allowed['artikel'] = array('lagerlampe'); // headings $heading = array('', 'Nummer', 'Artikel', 'Im Lager', 'Projekt', 'Menü'); $width = array('5%', '10%', '45%', '8%', '15%', '10%'); $findcols = array('nummer', 'name_de', 'projekt', 'id'); $searchsql = array('a.name_de', 'a.nummer', 'p.abkuerzung'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . ""; $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT('') as wahl, a.nummer as nummer, a.name_de as name_de, (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) as lager, p.abkuerzung as projekt, a.id as menu FROM artikel a LEFT JOIN projekt p ON p.id=a.projekt "; $where = "a.geloescht=0 AND (a.lieferzeit='lager' || a.lieferzeit='') AND a.lagerartikel=1 AND (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) IS NULL AND a.shop!=0 AND a.intern_gesperrt=0 AND a.ausverkauft!='1' AND a.inaktiv!='1'"; $count = "SELECT COUNT(a.id) FROM artikel a WHERE a.geloescht=0 AND (a.lieferzeit='lager' || a.lieferzeit='') AND (SELECT SUM(l.menge) FROM lager_platz_inhalt l WHERE l.artikel=a.id) IS NULL AND a.shop!=0 AND a.intern_gesperrt=0 AND a.ausverkauft!='1' AND a.inaktiv!='1'"; break; case "anfrage": $tmp = ''; // START EXTRA checkboxen $heading = array('Anfrage','Vom', 'Mitarbeiter', 'Kd-Nr.', 'Kunde', 'Projekt', 'Status', 'Menü'); $width = array('5%','10%', '15%', '5%', '30%', '15%', '10%', '5%'); $findcols = array('belegnr','l.datum', 'adr.name', 'adr2.kundennummer', "CONCAT(l.name,if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),''))", 'p.abkuerzung', 'l.status', 'id'); $searchsql = array('l.belegnr', "DATE_FORMAT(l.datum, '%d.%m.%Y')", 'adr.name', 'adr2.kundennummer', 'l.name', 'p.abkuerzung', 'l.status', 'l.id','l.internebezeichnung'); $defaultorder = 8; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, if(l.status='angelegt','ENTWURF',l.belegnr),DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, adr.name as mitarbeiter, adr2.kundennummer, CONCAT(l.name,if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),'')) as name, p.abkuerzung as projekt, UPPER(l.status) as status, l.id FROM anfrage l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.bearbeiterid=adr.id LEFT JOIN adresse adr2 ON l.adresse=adr2.id LEFT JOIN adresse ma ON ma.id=l.mitarbeiter "; // Fester filter $where = " l.id!='' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM anfrage l"; // gesamt anzahl //$moreinfo = true; break; case "anfrageinbearbeitung": // START EXTRA checkboxen $heading = array('Vom', 'Mitarbeiter', 'Kd-Nr.', 'Kunde', 'Projekt', 'Status', 'Menü'); $width = array('15%', '15%', '5%', '30%', '15%', '10%', '10%'); $findcols = array('vom', 'mitarbeiter', 'kundennummer', 'name', 'projekt', 'status', 'id'); $searchsql = array('l.datum', 'adr.name', 'adr2.kundennummer', 'l.name', 'p.abkuerzung', 'l.status', 'l.id'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, adr.name as mitarbeiter, adr2.kundennummer, l.name, p.abkuerzung as projekt, UPPER(l.status) as status, l.id FROM anfrage l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.bearbeiterid=adr.id LEFT JOIN adresse adr2 ON l.adresse=adr2.id LEFT JOIN adresse ma ON ma.id=l.mitarbeiter "; // Fester filter if ($this->app->User->GetType() != "admin") { if ($this->app->User->GetProjektleiter()) { // normaler angestellter $where = " l.status='angelegt' AND l.id!='' $tmp " . $this->app->erp->ProjektleiterRechte(); $count = "SELECT COUNT(l.id) FROM anfrage l WHERE l.id!='' " . $this->app->erp->ProjektleiterRechte(); } else { // normaler angestellter $where = " l.id!='' AND l.status='angelegt' AND l.bearbeiterid='" . $this->app->User->GetAdresse() . "' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM anfrage l WHERE l.bearbeiterid='" . $this->app->User->GetAdresse() . "' AND l.status='angelegt'"; } } else { $where = "l.status='angelegt' AND l.id!='' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM anfrage l WHERE l.status='angelegt'"; } // gesamt anzahl //$moreinfo = true; break; case "proformarechnung": // START EXTRA checkboxen $heading = array('','Belegnr','Vom', 'Kd-Nr.', 'Rechnungsadresse','Lieferadresse','Lieferbedingung','Betrag (brutto)', 'Projekt', 'Status', 'Menü'); $width = array('1%','5%', '10%', '5%', '20%', '20%','10%','5%','10%', '5%', '5%'); $findcols = array('open','l.belegnr','l.datum', 'adr2.kundennummer', 'l.name','l.liefername','l.lieferbedingung','l.soll', 'p.abkuerzung', 'l.status', 'l.id'); $searchsql = array('l.belegnr','l.datum', 'adr2.kundennummer', 'l.name','l.liefername','l.lieferbedingung',"l.soll",'p.abkuerzung', 'l.status', 'l.internebezeichnung','l.freitext'); $defaultorder = 11; //Optional wenn andere Reihenfolge gewuenscht $menucol = 10; $alignright=array(8); $moreinfo=true; $sumcol = 8; $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, l.belegnr,DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, adr2.kundennummer, CONCAT(l.name,if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),'')) as name, if(l.abweichendelieferadresse,CONCAT(l.liefername),'-'), l.lieferbedingung,FORMAT(l.soll,2,'de_DE'), p.abkuerzung as projekt, UPPER(l.status) as status, l.id FROM proformarechnung l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.bearbeiterid=adr.id LEFT JOIN adresse adr2 ON l.adresse=adr2.id"; // Fester filter if ($this->app->User->GetType() != "admin") { if ($this->app->User->GetProjektleiter()) { // normaler angestellter $where = " l.id!='' $tmp " . $this->app->erp->ProjektleiterRechte(); $count = "SELECT COUNT(l.id) FROM proformarechnung l WHERE l.id!='' " . $this->app->erp->ProjektleiterRechte(); } else { // normaler angestellter $where = " l.id!='' AND l.status!='abgerechnet' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM proformarechnung l WHERE l.bearbeiterid='" . $this->app->User->GetAdresse() . "' AND l.status!='abgerechnet'"; } } else { $where = " l.id!='' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM proformarechnung l"; } // gesamt anzahl //$moreinfo = true; break; case "preisanfrage": // START EXTRA checkboxen $heading = array('Belegnr','Vom', 'Mitarbeiter', 'Lf-Nr.', 'Lieferant', 'Projekt', 'Status', 'Menü'); $width = array('10%','15%', '15%', '5%', '30%', '15%', '10%', '5%'); $findcols = array('l.belegnr','l.datum', 'adr.name', 'adr2.lieferantennummer', 'l.name', 'p.abkuerzung', 'l.status', 'l.id'); $searchsql = array('l.belegnr',"DATE_FORMAT(l.datum,'%d.%m.%Y')", 'adr.name', 'adr2.lieferantennummer', 'l.name', 'p.abkuerzung', 'l.status', 'l.id','l.internebezeichnung'); $defaultorder = 7; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, l.belegnr,DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, adr.name as mitarbeiter, adr2.lieferantennummer, CONCAT(l.name,if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),'')) as name, p.abkuerzung as projekt, UPPER(l.status) as status, l.id FROM preisanfrage l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.bearbeiterid=adr.id LEFT JOIN adresse adr2 ON l.adresse=adr2.id LEFT JOIN adresse ma ON ma.id=l.mitarbeiter "; // Fester filter $where = " l.id!='' " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM preisanfrage l LEFT JOIN projekt p ON p.id=l.projekt WHERE l.id > 0 ".$this->app->erp->ProjektRechte(); // gesamt anzahl //$moreinfo = true; break; case "preisanfrageinbearbeitung": // START EXTRA checkboxen $heading = array('Vom', 'Mitarbeiter', 'Kd-Nr.', 'Kunde', 'Projekt', 'Status', 'Menü'); $width = array('15%', '15%', '5%', '30%', '15%', '10%', '10%'); $findcols = array('vom', 'mitarbeiter', 'kundennummer', 'name', 'projekt', 'status', 'id'); $searchsql = array('l.datum', 'adr.name', 'adr2.kundennummer', 'l.name', 'p.abkuerzung', 'l.status', 'l.id'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, adr.name as mitarbeiter, adr2.kundennummer, l.name, p.abkuerzung as projekt, UPPER(l.status) as status, l.id FROM preisanfrage l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.bearbeiterid=adr.id LEFT JOIN adresse adr2 ON l.adresse=adr2.id LEFT JOIN adresse ma ON ma.id=l.mitarbeiter "; // Fester filter if ($this->app->User->GetType() != "admin") { if ($this->app->User->GetProjektleiter()) { // normaler angestellter $where = " l.status='angelegt' AND l.id!='' $tmp " . $this->app->erp->ProjektleiterRechte(); $count = "SELECT COUNT(l.id) FROM preisanfrage l WHERE l.id!='' " . $this->app->erp->ProjektleiterRechte(); } else { // normaler angestellter $where = " l.id!='' AND l.status='angelegt' AND l.bearbeiterid='" . $this->app->User->GetAdresse() . "' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM preisanfrage l WHERE l.bearbeiterid='" . $this->app->User->GetAdresse() . "' AND l.status='angelegt'"; } } else { $where = "l.status='angelegt' AND l.id!='' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM preisanfrage l WHERE l.status='angelegt'"; } // gesamt anzahl //$moreinfo = true; break; case "proformarechnunginbearbeitung": // START EXTRA checkboxen $heading = array('Vom', 'Mitarbeiter', 'Kd-Nr.', 'Kunde', 'Projekt', 'Status', 'Menü'); $width = array('15%', '15%', '5%', '30%', '15%', '10%', '10%'); $findcols = array('vom', 'mitarbeiter', 'kundennummer', 'name', 'projekt', 'status', 'id'); $searchsql = array('l.datum', 'adr.name', 'adr2.kundennummer', 'l.name', 'p.abkuerzung', 'l.status', 'l.id'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, adr.name as mitarbeiter, adr2.kundennummer, l.name, p.abkuerzung as projekt, UPPER(l.status) as status, l.id FROM proformarechnung l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.bearbeiterid=adr.id LEFT JOIN adresse adr2 ON l.adresse=adr2.id LEFT JOIN adresse ma ON ma.id=l.mitarbeiter "; // Fester filter if ($this->app->User->GetType() != "admin") { if ($this->app->User->GetProjektleiter()) { // normaler angestellter $where = " l.status='angelegt' AND l.id!='' $tmp " . $this->app->erp->ProjektleiterRechte(); $count = "SELECT COUNT(l.id) FROM proformarechnung l WHERE l.id!='' " . $this->app->erp->ProjektleiterRechte(); } else { // normaler angestellter $where = " l.id!='' AND l.status='angelegt' AND l.bearbeiterid='" . $this->app->User->GetAdresse() . "' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM proformarechnung l WHERE l.bearbeiterid='" . $this->app->User->GetAdresse() . "' AND l.status='angelegt'"; } } else { $where = "l.status='angelegt' AND l.id!='' $tmp " . $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(l.id) FROM proformarechnung l WHERE l.status='angelegt'"; } // gesamt anzahl //$moreinfo = true; break; case "lieferscheine": $useProjectAb = $this->app->erp->ModulVorhanden('batches'); $projectCol = 'p.abkuerzung'; $prAbJoin = ''; if($useProjectAb) { $projectCol = 'IFNULL(pab.abkuerzung ,p.abkuerzung)'; $prJoin = ' LEFT JOIN projekt AS pab ON ab.projekt = pab.id '; $prAbJoin = ' LEFT JOIN auftrag AS ab ON l.auftragid = ab.id LEFT JOIN projekt AS pab ON ab.projekt = pab.id '; } $allowed['lieferschein'] = array('list'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#lieferscheinoffen').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#lieferscheinheute').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#anlieferanten').click( function() { fnFilterColumn3( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#ohne_rechnung').click( function() { fnFilterColumn4( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nichtausgelagert').click( function() { fnFilterColumn5( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#manuellabgeschlossen').click( function() { fnFilterColumn6( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#abgeschlossenlogistik').click( function() { fnFilterColumn7( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nochinlogistik').click( function() { fnFilterColumn8( 0 ); } );"); $rowcallback_gt = 1; $defaultorder = 12; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; for ($r = 1;$r < 9;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // ENDE EXTRA checkboxen $zusatzcols = array(); $lieferscheinzusatzfelder = $this->app->erp->getZusatzfelderLieferschein(); // headings $heading = array('','', 'Lieferschein', 'Vom', 'Kd-Nr./Lf-Nr.', 'Kunde/Lieferant', 'Land', 'Projekt', 'Versand', 'Art', 'Status'); $width = array('1%','1%', '10%', '10%', '10%', '35%', '5%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open','l.id', 'l.belegnr', 'l.datum', 'if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer)', 'l.name', 'l.land', $projectCol, 'l.versandart', 'l.lieferscheinart', 'l.status'); $searchsql = array('l.id', 'DATE_FORMAT(l.datum,\'%d.%m.%Y\')', 'l.belegnr', 'if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer)', 'l.name', 'l.land', $projectCol, 'l.status', 'l.plz', 'l.id', 'adr.freifeld1', 'l.ihrebestellnummer','l.internebezeichnung','l.versandart'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">" . // " app->Conf->WFconf['defaulttheme']}/images/stamp.png\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">". " "."
"; $menucol = 11; for($i = 1; $i <= 5; $i++) { $zusatzfeld = $this->app->erp->Firmendaten('lieferscheintabellezusatz' . $i); if($zusatzfeld && isset($lieferscheinzusatzfelder[$zusatzfeld])){ $defaultorder++; $menucol++; $heading[] = $lieferscheinzusatzfelder[$zusatzfeld]; $width[] = '10%'; switch($zusatzfeld) { case 'internet': $searchsql[] = "auf.internet"; $zusatzcols[] = "auf.internet"; $findcols[] = 'auf.internet'; break; case 'tatsaechlicheslieferdatum': case 'lieferdatum': $searchsql[] = 'date_format(a.'.$zusatzfeld.",'%d.%m.%Y')"; $zusatzcols[] = 'date_format(a.'.$zusatzfeld.",'%d.%m.%Y')"; $findcols[] = 'a.'.$zusatzfeld; break; default: $searchsql[] = 'l.'.$zusatzfeld; $zusatzcols[] = 'l.'.$zusatzfeld; $findcols[] = 'l.'.$zusatzfeld; } } } $width[] = '1%'; $findcols[] = 'a.id'; $heading[] = 'Menü'; $parameter = $this->app->User->GetParameter('table_filter_lieferschein'); $parameter = base64_decode($parameter); $parameter = json_decode($parameter, true); $groupby = 'group by l.id, adr.id, auf.id, p.id'; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, concat(''), l.belegnr, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, if(l.lieferantenretoure=1,lfr.lieferantennummer,adr.kundennummer) as kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("l.name", "l.useredittimestamp") . ", if(l.internebezeichnung!='',CONCAT('
',l.internebezeichnung,''),'')) as kunde, l.land as land, $projectCol as projekt, l.versandart as versandart, l.lieferscheinart as art, UPPER(l.status) as status, ".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')." l.id FROM lieferschein l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.adresse=adr.id LEFT JOIN adresse lfr ON l.lieferant=lfr.id LEFT JOIN auftrag auf ON l.auftragid = auf.id "; $isapjoin = false; if(isset($parameter['artikel']) && !empty($parameter['artikel'])) { $artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1"); if($artikelid) { $paramsArray[] = "ap.artikel = '" . $artikelid . "' "; $sql .= " INNER JOIN lieferschein_position ap ON l.id = ap.lieferschein "; $isapjoin = true; } } // Fester filter $more_data4 = $this->app->Secure->GetGET("more_data4"); /* $versandjoin = ""; if(isset($parameter['offenversandzentrum']) && !empty($parameter['offenversandzentrum'])) { $versandjoin = " INNER JOIN versand v ON l.id = v.lieferschein AND v.abgeschlossen!='1' AND (v.tracking <> '' OR v.weitererlieferschein <> 1) AND v.cronjob = 0 AND l.status!='storniert' "; }else{ if(isset($parameter['ohnetracking']) && !empty($parameter['ohnetracking'])) { if($more_data6) { $paramsArray[] = " isnull(v.id) "; $paramsArray[] = " l.status='versendet' "; $versandjoin = " LEFT JOIN versand v ON l.id = v.lieferschein"; }else{ $paramsArray[] = " isnull(v.id) "; $versandjoin = " LEFT JOIN versand v ON l.id = v.lieferschein AND v.tracking <> '' "; } }elseif($more_data6) { $paramsArray[] = " isnull(v.id) "; $paramsArray[] = " l.status='versendet' "; $versandjoin = " LEFT JOIN versand v ON l.id = v.lieferschein"; } } if($more_data8) { $versandjoin .= " INNER JOIN versand v2 ON l.id = v2.lieferschein AND v2.abgeschlossen = 0"; } elseif($more_data7) { $versandjoin .= " INNER JOIN versand v2 ON l.id = v2.lieferschein"; } if($versandjoin)$sql .= $versandjoin; */ if($more_data4 || (isset($parameter['ohnerechnung']) && !empty($parameter['ohnerechnung']))) { $paramsArray[] = " l.status !='storniert' "; $paramsArray[] = " isnull(re.id) AND isnull(re2.id) "; $paramsArray[] = " l.keinerechnung = 0 "; $sql .= " LEFT JOIN auftrag ab ON l.auftragid = ab.id LEFT JOIN rechnung re ON l.id = re.lieferschein LEFT JOIN rechnung re2 ON ab.id = re2.auftragid "; if(!empty($prAbJoin)) { $prAbJoin = $prJoin; } if($this->app->erp->ModulVorhanden('sammelrechnung')) { $check = $this->app->DB->Select("SELECT id FROM sammelrechnung_position LIMIT 1"); if(!$this->app->DB->error()) { $sql .= " LEFT JOIN ( SELECT max(sp.id) as spid, lsp.lieferschein FROM lieferschein_position lsp INNER JOIN sammelrechnung_position sp ON lsp.id = sp.lieferschein_position_id AND sp.rechnung != 0 GROUP BY lsp.lieferschein ) sammp ON l.id = sammp.lieferschein"; $paramsArray[] = " isnull(sammp.spid) "; } } if($this->app->erp->ModulVorhanden('gruppenrechnung')){ $check = $this->app->DB->Select("SELECT id FROM gruppenrechnung_position LIMIT 1"); if(!$this->app->DB->error()) { $sql .= " LEFT JOIN ( SELECT max(gp.id) as gpid, lsp2.lieferschein FROM lieferschein_position lsp2 INNER JOIN gruppenrechnung_position gp ON lsp2.id = gp.lieferschein_position_id GROUP BY lsp2.lieferschein ) grp ON l.id = grp.lieferschein"; $paramsArray[] = " isnull(grp.gpid) "; } } } $more_data5 = $this->app->Secure->GetGET("more_data5"); if($more_data5) { if(!$isapjoin) { $sql .= " LEFT JOIN lieferschein_position ap ON l.id = ap.lieferschein "; } //06.04.18 Lisa: von > 0 zu <= 0 angepasst $groupby .= " HAVING sum(ap.geliefert) <= 0 "; $sql .= " LEFT JOIN versand v ON l.id = v.lieferschein "; $paramsArray[] = "v.id IS NULL"; //#620035 $sql .= " INNER JOIN artikel a ON a.id = ap.artikel "; $groupby .= "AND MAX(a.lagerartikel)>0 "; $paramsArray[] = "l.status !='storniert'"; } // START EXTRA more $subwhere = []; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " l.status='freigegeben' "; $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) $subwhere[] = " l.datum=CURDATE() "; $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) $subwhere[] = " l.lieferantenretoure=1 "; // ENDE EXTRA more $more_data6 = $this->app->Secure->GetGET("more_data6"); $more_data7 = $this->app->Secure->GetGET("more_data7"); $more_data8 = $this->app->Secure->GetGET("more_data8"); if ($more_data6) { $subwhere[] = "l.versand_status = 3"; } if ($more_data7) { $subwhere[] = "l.versand_status = 1"; } if ($more_data8) { $subwhere[] = "l.versand_status IN (2,3)"; } for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; $where = " l.id!='' AND l.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte('p.id', true, 'l.vertriebid'); /* STAMMDATEN */ if(isset($parameter['kundennummer']) && !empty($parameter['kundennummer'])) { $paramsArray[] = " ( l.kundennummer LIKE '%".$parameter['kundennummer']."%' OR auf.kundennummer LIKE '%".$parameter['kundennummer']."%' OR adr.kundennummer LIKE '%".$parameter['kundennummer']."%') "; } if(isset($parameter['name']) && !empty($parameter['name'])) { $paramsArray[] = " ( l.name LIKE '%".$parameter['name']."%' OR auf.name LIKE '%".$parameter['name']."%' ) "; } if(isset($parameter['ansprechpartner']) && !empty($parameter['ansprechpartner'])) { $paramsArray[] = " ( l.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' OR auf.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' ) "; } if(isset($parameter['abteilung']) && !empty($parameter['abteilung'])) { $paramsArray[] = " ( l.abteilung LIKE '%".$parameter['abteilung']."%' OR auf.abteilung LIKE '%".$parameter['abteilung']."%' ) "; } if(isset($parameter['strasse']) && !empty($parameter['strasse'])) { $paramsArray[] = " ( l.strasse LIKE '%".$parameter['strasse']."%' OR auf.strasse LIKE '%".$parameter['strasse']."%' ) "; } if(isset($parameter['plz']) && !empty($parameter['plz'])) { $paramsArray[] = " ( l.plz LIKE '".$parameter['plz']."%' OR auf.plz LIKE '".$parameter['plz']."%' ) "; } if(isset($parameter['ort']) && !empty($parameter['ort'])) { $paramsArray[] = " ( l.ort LIKE '%".$parameter['ort']."%' OR auf.ort LIKE '%".$parameter['ort']."%' ) "; } if(isset($parameter['land']) && !empty($parameter['land'])) { $paramsArray[] = " ( l.land LIKE '%".$parameter['land']."%' OR auf.land LIKE '%".$parameter['land']."%' ) "; } if(isset($parameter['ustid']) && !empty($parameter['ustid'])) { $paramsArray[] = " ( l.ustid LIKE '%".$parameter['ustid']."%' OR auf.ustid LIKE '%".$parameter['ustid']."%' ) "; } if(isset($parameter['telefon']) && !empty($parameter['telefon'])) { $paramsArray[] = " ( l.telefon LIKE '%".$parameter['telefon']."%' OR auf.telefon LIKE '%".$parameter['telefon']."%' ) "; } /* XXX */ if(isset($parameter['datumVon']) && !empty($parameter['datumVon'])) { $paramsArray[] = "l.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' "; } if(isset($parameter['datumBis']) && !empty($parameter['datumBis'])) { $paramsArray[] = "l.datum <= '" . date('Y-m-d',strtotime($parameter['datumBis']))."' "; } if(isset($parameter['projekt']) && !empty($parameter['projekt'])) { $projektData = $this->app->DB->SelectArr(' SELECT * FROM projekt WHERE abkuerzung LIKE "' . $parameter['projekt'] . '" '); $projektData = reset($projektData); $paramsArray[] = "l.projekt = '".$projektData['id']."' "; } if(isset($parameter['belegnummer']) && !empty($parameter['belegnummer'])) { $paramsArray[] = "l.belegnr LIKE '".$parameter['belegnummer']."' "; } if(isset($parameter['internebemerkung']) && !empty($parameter['internebemerkung'])) { $paramsArray[] = "l.internebemerkung LIKE '%".$parameter['internebemerkung']."%' "; } if(isset($parameter['aktion']) && !empty($parameter['aktion'])) { $paramsArray[] = "l.aktion LIKE '%".$parameter['aktion']."%' "; } if(isset($parameter['freitext']) && !empty($parameter['freitext'])) { $paramsArray[] = "l.freitext LIKE '%".$parameter['freitext']."%' "; } if(isset($parameter['status']) && !empty($parameter['status'])) { $paramsArray[] = "l.status LIKE '%".$parameter['status']."%' "; } if(isset($parameter['versandart']) && !empty($parameter['versandart'])) { $paramsArray[] = "l.versandart LIKE '%".$parameter['versandart']."%' "; } // projekt, belegnummer, internetnummer, bestellnummer, transaktionsId, freitext, internebemerkung, aktionscodes if ($paramsArray) { $where .= ' AND ' . implode(' AND ', $paramsArray); } if(!empty($prAbJoin)) { $sql .= $prAbJoin; } // gesamt anzahl $count = "SELECT COUNT(l.id) FROM lieferschein l WHERE l.status!='angelegt' "; $moreinfo = true; break; case "gutschrifteninbearbeitung": $allowed['gutschrift'] = array('list'); $heading = array('', 'Gutschrift', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlweise', 'Betrag (brutto)', 'bezahlt', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '10%', '35%', '5%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus', 'r.status', 'id'); $searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'r.zahlungsstatus', 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung'); $defaultorder = 12; //Optional wenn andere Reihenfolge gewuenscht $alignright = array('9'); if($this->app->erp->RechteVorhanden('gutschrift','summe')) $sumcol = 9; $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 11; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, 'ENTWURF' as belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),'')) as kunde, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55}) as soll, r.zahlungsstatus as zahlung, UPPER(r.status) as status, r.id FROM gutschrift r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id "; // Fester filter $where = " ( r.status='angelegt') " . $this->app->erp->ProjektRechte('p.id', true, 'r.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(r.id) FROM gutschrift r WHERE ( r.status='angelegt') "; $moreinfo = true; break; case "gutschriftenoffene": $allowed['gutschrift'] = array('list'); $heading = array('', 'Gutschrift', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlweise', 'Betrag (brutto)', 'bezahlt', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '10%', '35%', '5%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus', 'r.status', 'id'); $searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'r.zahlungsstatus', 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung'); $defaultorder = 12; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $alignright = array('9'); if($this->app->erp->RechteVorhanden('gutschrift','summe')) $sumcol = 9; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 11; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, r.belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),'')) as kunde, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55}) as soll, r.zahlungsstatus as zahlung, UPPER(r.status) as status, r.id FROM gutschrift r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id "; // Fester filter $where = " r.id!='' AND r.status='freigegeben' " . $this->app->erp->ProjektRechte('p.id',true,'r.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(r.id) FROM gutschrift r"; $moreinfo = true; break; case "gutschriften": $allowed['gutschrift'] = array('list'); $rowcallback_gt = 1; // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#gutschriftoffen').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#gutschriftheute').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#gutschriftnichterledigt').click( function() { fnFilterColumn3( 0 ); } );"); for ($r = 1;$r < 4;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $heading = array('', '', 'Gutschrift', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlweise', 'Betrag (brutto)', 'Zahlstatus','Differenz','RE-Nr.', 'Status','Monitor' ,'Menü' ); $width = array('1%', '1%', '10%', '10%', '10%', '25%', '5%', '1%', '1%', '1%', '1%', '1%', '1%','5%', '1%','1%', '1%'); $findcols = array('open', 'r.belegnr', 'r.belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus','r.soll-r.ist', 're.belegnr', 'r.status', 'id'); $searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung','re.belegnr', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung','au.internet'); $defaultorder = 13; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $alignright = array('10'); if($this->app->erp->RechteVorhanden('gutschrift','summe')){ $sumcol = 10; } $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 15; $parameter = $this->app->User->GetParameter('table_filter_gutschrift'); $parameter = base64_decode($parameter); $parameter = json_decode($parameter, true); // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, concat('')as auswahl, r.belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),'')) as kunde, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, ".$this->app->erp->FormatMenge('r.soll',2)." as soll, r.zahlungsstatus as zahlung, ".$this->app->erp->FormatMenge('r.soll-r.ist',2)." as differenz, re.belegnr as rechnung, UPPER(r.status) as status, ".$this->IconsSQLReturnOrder().", r.id FROM gutschrift r LEFT JOIN rechnung re ON re.id=r.rechnungid LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = re.auftragid LEFT JOIN payment_transaction AS pt ON r.id = pt.returnorder_id "; if(isset($parameter['artikel']) && !empty($parameter['artikel'])) { $artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1"); if($artikelid) { $paramsArray[] = "ap.artikel = '" . $artikelid . "' "; $sql .= " INNER JOIN gutschrift_position ap ON r.id = ap.gutschrift "; $groupby = " GROUP BY r.id, p.id, adr.id "; } } // Fester filter //if($tmp!="")$tmp .= " AND r.belegnr!='' "; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " (r.zahlungsstatus!='bezahlt' AND (r.manuell_vorabbezahlt='' OR r.manuell_vorabbezahlt='0000-00-00' OR r.manuell_vorabbezahlt IS NULL)) "; $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) $subwhere[] = " r.datum=DATE_FORMAT(NOW(),'%y-%m-%d') "; $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) $subwhere[] = " (r.manuell_vorabbezahlt IS NULL OR r.manuell_vorabbezahlt='0000-00-00') "; $tmp = ''; if (!is_null($subwhere)) { for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; } $where = " r.status!='angelegt' AND r.id!='' ".$tmp ." ". $this->app->erp->ProjektRechte('p.id', true, 'r.vertriebid'); /* STAMMDATEN */ if(isset($parameter['kundennummer']) && !empty($parameter['kundennummer'])) { $paramsArray[] = "(r.kundennummer LIKE '%".$parameter['kundennummer']."%' OR adr.kundennummer LIKE '%".$parameter['kundennummer']."%') "; } if(isset($parameter['name']) && !empty($parameter['name'])) { $paramsArray[] = "r.name LIKE '%".$parameter['name']."%' "; } if(isset($parameter['ansprechpartner']) && !empty($parameter['ansprechpartner'])) { $paramsArray[] = "r.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' "; } if(isset($parameter['abteilung']) && !empty($parameter['abteilung'])) { $paramsArray[] = "r.abteilung LIKE '%".$parameter['abteilung']."%' "; } if(isset($parameter['strasse']) && !empty($parameter['strasse'])) { $paramsArray[] = "r.strasse LIKE '%".$parameter['strasse']."%' "; } if(isset($parameter['plz']) && !empty($parameter['plz'])) { $paramsArray[] = "r.plz LIKE '".$parameter['plz']."%'"; } if(isset($parameter['ort']) && !empty($parameter['ort'])) { $paramsArray[] = "r.ort LIKE '%".$parameter['ort']."%' "; } if(isset($parameter['land']) && !empty($parameter['land'])) { $paramsArray[] = "r.land LIKE '%".$parameter['land']."%' "; } if(isset($parameter['ustid']) && !empty($parameter['ustid'])) { $paramsArray[] = "r.ustid LIKE '%".$parameter['ustid']."%' "; } if(isset($parameter['telefon']) && !empty($parameter['telefon'])) { $paramsArray[] = "r.telefon LIKE '%".$parameter['telefon']."%' "; } if(isset($parameter['ustid']) && !empty($parameter['ustid'])) { $paramsArray[] = "r.ustid LIKE '%".$parameter['ustid']."%' "; } /* XXX */ if(isset($parameter['datumVon']) && !empty($parameter['datumVon'])) { $paramsArray[] = "r.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' "; } if(isset($parameter['datumBis']) && !empty($parameter['datumBis'])) { $paramsArray[] = "r.datum <= '" . date('Y-m-d',strtotime($parameter['datumBis']))."' "; } if(isset($parameter['projekt']) && !empty($parameter['projekt'])) { $projektData = $this->app->DB->SelectArr(' SELECT * FROM projekt WHERE abkuerzung LIKE "' . $parameter['projekt'] . '" '); $projektData = reset($projektData); $paramsArray[] = "r.projekt = '".$projektData['id']."' "; } if(isset($parameter['belegnummer']) && !empty($parameter['belegnummer'])) { $paramsArray[] = "r.belegnr LIKE '".$parameter['belegnummer']."' "; } if(isset($parameter['internebemerkung']) && !empty($parameter['internebemerkung'])) { $paramsArray[] = "r.internebemerkung LIKE '%".$parameter['internebemerkung']."%' "; } if(isset($parameter['aktion']) && !empty($parameter['aktion'])) { $paramsArray[] = "r.aktion LIKE '%".$parameter['aktion']."%' "; } if(isset($parameter['freitext']) && !empty($parameter['freitext'])) { $paramsArray[] = "r.freitext LIKE '%".$parameter['freitext']."%' "; } if(isset($parameter['zahlungsweise']) && !empty($parameter['zahlungsweise'])) { $paramsArray[] = "r.zahlungsweise LIKE '".$parameter['zahlungsweise']."' "; } if(isset($parameter['status']) && !empty($parameter['status'])) { $paramsArray[] = "r.status LIKE '%".$parameter['status']."%' "; } if(isset($parameter['versandart']) && !empty($parameter['versandart'])) { $paramsArray[] = "r.versandart LIKE '%".$parameter['versandart']."%' "; } if(isset($parameter['betragVon']) && !empty($parameter['betragVon'])) { $paramsArray[] = "r.soll >= '" . $parameter['betragVon'] . "' "; } if(isset($parameter['betragBis']) && !empty($parameter['betragBis'])) { $paramsArray[] = "r.soll <= '" . $parameter['betragBis'] . "' "; } // projekt, belegnummer, internetnummer, bestellnummer, transaktionsId, freitext, internebemerkung, aktionscodes if ($paramsArray) { $where .= ' AND ' . implode(' AND ', $paramsArray); } // gesamt anzahl $count = "SELECT COUNT(r.id) FROM gutschrift r WHERE r.status='freigegeben'"; $moreinfo = true; /* // headings $heading = array('','Vom','Kunde','Gutschrift','Land','Projekt','Zahlung','Betrag','Zahlung','Status','Menü'); $width = array('1%','1%','40%','1%','1%','1%','1%','1%','1%','1%'); $findcols = array('open','vom','name','land','projekt','zahlungsweise','betrag','zahlung','status','icons','id'); $searchsql = array('r.id','r.datum','r.belegnr','adr.kundennummer','r.name','r.land','p.abkuerzung','r.zahlungsweise','r.status','r.soll','r.ist','r.zahlungsstatus','r.plz','r.id'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol=10; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, DATE_FORMAT(r.datum,'%Y-%m-%d') as vom, r.name as name, r.belegnr, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, r.soll as soll, r.zahlungsstatus as zahlung, UPPER(r.status) as status, r.id FROM gutschrift r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id "; // Fester filter $where = " r.id!='' AND r.status='freigegeben' "; // gesamt anzahl $count = "SELECT COUNT(r.id) FROM gutschrift r WHERE r.status='freigegeben'"; $moreinfo = true; */ break; case "rechnungeninbearbeitung": $allowed['rechnung'] = array('list', 'create'); // headings $heading = array('', 'Rechnung', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Zahlung', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '10%', '35%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'r.belegnr', 'r.datum', 'adr.kundennummer', "CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),''))", 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus', 'r.status', 'r.id'); $searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'r.zahlungsstatus', 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung', 'au.internet'); $defaultorder = 12; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $alignright = array('9'); if($this->app->erp->RechteVorhanden('rechnung','summe')) $sumcol = 9; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= "
"; $menucol = 11; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, 'ENTWURF' as belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),'')) as kunde, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55}) as soll, r.zahlungsstatus as zahlung, UPPER(r.status) as status, r.id FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid "; // Fester filter $where = " ( r.status='angelegt') " . $this->app->erp->ProjektRechte('p.id', true, 'r.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(r.id) FROM rechnung r WHERE ( r.status='angelegt') "; $moreinfo = true; break; case "rechnungenoffene": // headings $allowed['rechnung'] = array('list'); $heading = array('', 'Rechnung', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Zahlung', 'Status', 'Menü'); //$width = array('1%','2%','5%','5%','50%','3%','3%','3%','3%','3%','3%','3%'); $width = array('1%', '10%', '10%', '10%', '35%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'r.belegnr', 'r.datum', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.zahlungsstatus', 'r.status', 'r.id'); $searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'adr.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.status', "FORMAT(r.soll,2{$extended_mysql55})", 'r.zahlungsstatus', 'adr.freifeld1', 'r.ihrebestellnummer','r.internebezeichnung'); $defaultorder = 12; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $alignright = array('9'); if($this->app->erp->RechteVorhanden('rechnung','summe')){ $sumcol = 9; } $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= "
"; $menucol = 11; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, r.belegnr as belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, adr.kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),'')) as kunde, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55}) as soll, r.zahlungsstatus as zahlung, UPPER(r.status) as status, r.id FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id "; // Fester filter $where = " r.id!='' AND r.status='freigegeben' " . $this->app->erp->ProjektRechte('p.id', true, 'r.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(r.id) FROM rechnung r WHERE r.status='freigegeben'"; $moreinfo = true; break; case "rechnungen": $allowed['rechnung'] = array('list'); $rowcallback_gt = 1; $this->app->Tpl->Add('JQUERYREADY', "$('#zahlungseingang').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#zahlungseingangfehlt').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#rechnungenheute').click( function() { fnFilterColumn3( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#rechnungenstorniert').click( function() { fnFilterColumn4( 0 ); } );"); $defaultorder = 15; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $alignright = array(10,13); if($this->app->erp->RechteVorhanden('rechnung','summe')) $sumcol = array(10,13); for ($r = 1;$r < 5;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $zusatzcols = array(); $rechnungzusatzfelder = $this->app->erp->getZusatzfelderRechnung(); // headings $heading = array('', '', 'Rechnung', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Währung', 'Zahlstatus', 'Differenz', 'Status'); $width = array('1%', '1%', '10%', '10%', '10%', '35%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'r.belegnr', 'r.belegnr', 'r.datum', 'r.kundennummer', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.soll', 'r.waehrung', "if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0 AND r.zahlungsstatus!='bezahlt','teilbezahlt',r.zahlungsstatus)", "r.ist-r.soll+r.skonto_gegeben", 'r.status'); $searchsql = array('r.belegnr', 'r.belegnr','DATE_FORMAT(r.datum,\'%d.%m.%Y\')', array('r.kundennummer','adr.kundennummer'), 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', array("FORMAT(r.soll,2{$extended_mysql55})", "if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0 AND r.zahlungsstatus!='bezahlt','teilbezahlt',r.zahlungsstatus)"), 'r.waehrung', "if(r.soll-r.ist+r.skonto_gegeben!=0 AND r.ist > 0 AND r.zahlungsstatus!='bezahlt','teilbezahlt',r.zahlungsstatus)" , "FORMAT(r.ist-r.soll+r.skonto_gegeben,2{$extended_mysql55})", "if(r.status = 'storniert' AND r.teilstorno = 1,'Teilstorno',r.status)", 'r.id', 'adr.freifeld1', 'r.ihrebestellnummer', 'r.internebezeichnung', 'au.internet'); $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= "
"; $menucol = 14; $datecols = array(3); $numbercols = array(9, 12); for($i = 1; $i <= 5; $i++) { $zusatzfeld = $this->app->erp->Firmendaten('rechnungtabellezusatz' . $i); if($zusatzfeld && isset($rechnungzusatzfelder[$zusatzfeld])){ $defaultorder++; $menucol++; $heading[] = $rechnungzusatzfelder[$zusatzfeld]; $width[] = '10%'; switch($zusatzfeld) { case 'internet': $searchsql[] = "au.internet"; $zusatzcols[] = "au.internet"; $findcols[] = 'au.internet'; break; case 'umsatz_netto': $searchsql[] = $this->app->erp->FormatPreis('r.umsatz_netto',2); $zusatzcols[] = $this->app->erp->FormatPreis('r.umsatz_netto',2); $findcols[] = 'r.umsatz_netto'; $numbercols = array(9, 12, array_search('r.umsatz_netto', $findcols)); $sumcol[] = array_search('r.umsatz_netto', $findcols) + 1; $alignright[] = array_search('r.umsatz_netto', $findcols) + 1; break; default: $searchsql[] = 'r.'.$zusatzfeld; $zusatzcols[] = 'r.'.$zusatzfeld; $findcols[] = 'r.'.$zusatzfeld; } } } $width[] = '1%'; $findcols[] = 'r.id'; $heading[] = 'Menü'; $parameter = $this->app->User->GetParameter('table_filter_rechnung'); $parameter = base64_decode($parameter); $parameter = json_decode($parameter, true); // $columnfilter = true; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, concat('') as auswahl, r.belegnr, DATE_FORMAT(r.datum,'%d.%m.%Y') as vom, if(r.kundennummer <> '',r.kundennummer,adr.kundennummer), CONCAT(" . $this->app->erp->MarkerUseredit("r.name", "r.useredittimestamp") . ", if(r.internebezeichnung!='',CONCAT('
',r.internebezeichnung,''),'')) as kunde, r.land as land, p.abkuerzung as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55} ) as soll, ifnull(r.waehrung,'EUR'), r.zahlungsstatus as zahlung, if(r.soll-r.ist!=0 AND r.ist > 0,FORMAT(r.ist-r.soll,2{$extended_mysql55}),FORMAT((r.soll-r.ist)*-1,2{$extended_mysql55})) as fehlt, if(r.status = 'storniert' AND r.teilstorno = 1,'TEILSTORNO',UPPER(r.status)) as status, ".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')." r.id FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id LEFT JOIN auftrag au ON au.id = r.auftragid "; if(isset($parameter['artikel']) && !empty($parameter['artikel'])) { $artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1"); if($artikelid) { $paramsArray[] = "ap.artikel = '" . $artikelid . "' "; $sql .= " INNER JOIN rechnung_position ap ON r.id = ap.rechnung "; $groupby = " GROUP BY r.id, p.id, adr.id "; } } // Fester filter $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) { $subwhere[] = " r.zahlungsstatus='offen' "; } $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) { $subwhere[] = " r.zahlungsstatus!='bezahlt' AND r.zahlungsstatus!='forderungsverlust' "; } $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) { $subwhere[] = " r.datum=CURDATE() "; $ignore = true; } $more_data4 = $this->app->Secure->GetGET("more_data4"); if ($more_data4 == 1) { $subwhere[] = " r.status='storniert' "; } $csubwhere = !empty($subwhere)?(empty($subwhere)?0:count($subwhere)):0; for ($j = 0;$j < $csubwhere;$j++) { $tmp.= " AND " . $subwhere[$j]; } if ($tmp != "" && !$ignore) { $tmp.= " AND r.belegnr!='' "; } $where = " r.id!='' AND r.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte('p.id',true, 'r.vertriebid'); /* STAMMDATEN */ if(isset($parameter['kundennummer']) && !empty($parameter['kundennummer'])) { $paramsArray[] = " (r.kundennummer LIKE '%".$parameter['kundennummer']."%' OR adr.kundennummer LIKE '%".$parameter['kundennummer']."%' ) "; } if(isset($parameter['name']) && !empty($parameter['name'])) { $paramsArray[] = "r.name LIKE '%".$parameter['name']."%' "; } if(isset($parameter['ansprechpartner']) && !empty($parameter['ansprechpartner'])) { $paramsArray[] = "r.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' "; } if(isset($parameter['abteilung']) && !empty($parameter['abteilung'])) { $paramsArray[] = "r.abteilung LIKE '%".$parameter['abteilung']."%' "; } if(isset($parameter['strasse']) && !empty($parameter['strasse'])) { $paramsArray[] = "r.strasse LIKE '%".$parameter['strasse']."%' "; } if(isset($parameter['plz']) && !empty($parameter['plz'])) { $paramsArray[] = "r.plz LIKE '".$parameter['plz']."%'"; } if(isset($parameter['ort']) && !empty($parameter['ort'])) { $paramsArray[] = "r.ort LIKE '%".$parameter['ort']."%' "; } if(isset($parameter['land']) && !empty($parameter['land'])) { $paramsArray[] = "r.land LIKE '%".$parameter['land']."%' "; } if(isset($parameter['ustid']) && !empty($parameter['ustid'])) { $paramsArray[] = "r.ustid LIKE '%".$parameter['ustid']."%' "; } if(isset($parameter['telefon']) && !empty($parameter['telefon'])) { $paramsArray[] = "r.telefon LIKE '%".$parameter['telefon']."%' "; } /* XXX */ if(isset($parameter['datumVon']) && !empty($parameter['datumVon'])) { $paramsArray[] = "r.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' "; } if(isset($parameter['datumBis']) && !empty($parameter['datumBis'])) { $paramsArray[] = "r.datum <= '" . date('Y-m-d',strtotime($parameter['datumBis']))."' "; } if(isset($parameter['projekt']) && !empty($parameter['projekt'])) { $projektData = $this->app->DB->SelectArr(' SELECT * FROM projekt WHERE abkuerzung LIKE "' . $parameter['projekt'] . '" '); $projektData = reset($projektData); $paramsArray[] = "r.projekt = '".$projektData['id']."' "; } if(isset($parameter['belegnummer']) && !empty($parameter['belegnummer'])) { $paramsArray[] = "r.belegnr LIKE '".$parameter['belegnummer']."' "; } if(isset($parameter['internebemerkung']) && !empty($parameter['internebemerkung'])) { $paramsArray[] = "r.internebemerkung LIKE '%".$parameter['internebemerkung']."%' "; } if(isset($parameter['aktion']) && !empty($parameter['aktion'])) { $paramsArray[] = "r.aktion LIKE '%".$parameter['aktion']."%' "; } if(isset($parameter['freitext']) && !empty($parameter['freitext'])) { $paramsArray[] = "r.freitext LIKE '%".$parameter['freitext']."%' "; } if(isset($parameter['zahlungsweise']) && !empty($parameter['zahlungsweise'])) { $paramsArray[] = "r.zahlungsweise LIKE '".$parameter['zahlungsweise']."' "; } if(isset($parameter['status']) && !empty($parameter['status'])) { $paramsArray[] = "r.status LIKE '%".$parameter['status']."%' "; } if(isset($parameter['versandart']) && !empty($parameter['versandart'])) { $paramsArray[] = "r.versandart LIKE '%".$parameter['versandart']."%' "; } if(isset($parameter['betragVon']) && !empty($parameter['betragVon'])) { $parameter['betragVon'] = $this->app->erp->FromFormatZahlToDB($parameter['betragVon']); $paramsArray[] = "r.soll >= '" . $parameter['betragVon'] . "' "; } if(isset($parameter['betragBis']) && !empty($parameter['betragBis'])) { $parameter['betragBis'] = $this->app->erp->FromFormatZahlToDB($parameter['betragBis']); $paramsArray[] = "r.soll <= '" . $parameter['betragBis'] . "' "; } // projekt, belegnummer, internetnummer, bestellnummer, transaktionsId, freitext, internebemerkung, aktionscodes if ($paramsArray) { $where .= ' AND ' . implode(' AND ', $paramsArray); } // gesamt anzahl $count = "SELECT COUNT(r.id) FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id WHERE ".$where; $moreinfo = true; break; case "bestellungeninbearbeitung": $allowed['bestellung'] = array('create', 'list'); // headings $heading = array('', 'Bestellung', 'Vom', 'Lf-Nr.', 'Lieferant', 'Land', 'Projekt', 'Betrag (brutto)', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '10%', '40%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('b.id', 'belegnr', 'b.datum', 'adr.lieferantennummer', 'b.name', 'b.land', 'p.abkuerzung', 'b.gesamtsumme', 'b.status', 'b.id'); $searchsql = array('DATE_FORMAT(b.datum,\'%d.%m.%Y\')', 'b.belegnr', 'adr.lieferantennummer', 'b.name', 'b.land', 'p.abkuerzung', 'b.status', 'b.gesamtsumme','b.internebezeichnung'); $defaultorder = 10; //Optional wenn andere Reihenfolge gewuenscht $alignright = array('8'); $sumcol = 8; $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 9; // SQL statement $sql = "SELECT b.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`, 'ENTWURF' AS `belegnr`, DATE_FORMAT(b.datum,'%d.%m.%Y') AS `vom`, adr.lieferantennummer AS `lieferantennummer`, CONCAT( " . $this->app->erp->MarkerUseredit("b.name", "b.useredittimestamp") . ", IF( b.internebezeichnung!='', CONCAT( '
', b.internebezeichnung, '' ), '' ), IF( b.abweichendelieferadresse = 1, CONCAT( '
Abw. Lieferadr.: ', b.liefername,', ', b.lieferstrasse,', ', b.lieferland,'-', b.lieferplz,' ', b.lieferort, '' ), '' ) ) AS `lieferant`, b.land AS `land`, p.abkuerzung AS `projekt`, FORMAT(b.gesamtsumme,2{$extended_mysql55}) AS `summe`, UPPER(b.status) AS `status`, b.id FROM `bestellung` AS `b` LEFT JOIN `projekt` AS `p` ON p.id=b.projekt LEFT JOIN adresse AS `adr` ON b.adresse=adr.id "; // Fester filter $where = " ( b.status='angelegt') " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(b.id) FROM `bestellung` AS `b` WHERE ( b.status='angelegt') "; $moreinfo = true; break; case "bestellung_offenepositionen": $allowed['bestellung'] = array('offenepositionen'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#bestellung_offenepositionen_lager').click( function() { fnFilterColumn1( 0 ); } );"); for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // headings $heading = array('Vom','Bestellung', 'LF-Datum', 'best. LF-Datum', 'Lf-Nr.', 'Lieferant', 'Artikel-Nr','Artikel','Bestell-Nr.','Bezeichnung','Menge','Geliefert', 'Projekt','Menü'); $width = array('5%','5%', '8%', '8%', '10%', '20%', '10%', '20%', '10%', '10%', '10%', '10%','10%','1%'); $liefertermine = $this->app->erp->ModulVorhanden('liefertermine'); if($liefertermine) { $searchsql = array('DATE_FORMAT(b.datum,\'%d.%m.%Y\')','b.belegnr', 'if(bp.lieferdatum != \'0000-00-00\' ,bp.lieferdatum,if(b.lieferdatum != \'0000-00-00\',b.lieferdatum,\'-\'))', 'if(lp.lieferdatum != \'0000-00-00\' ,lp.lieferdatum,if(b.bestaetigteslieferdatum != \'0000-00-00\',b.bestaetigteslieferdatum,\'-\'))','adr.lieferantennummer', 'b.name', 'a.nummer','a.name_de','bp.bestellnummer','bp.bezeichnunglieferant','bp.menge','bp.geliefert', 'p.abkuerzung'); }else{ $searchsql = array('DATE_FORMAT(b.datum,\'%d.%m.%Y\')','b.belegnr', 'if(bp.lieferdatum != \'0000-00-00\' ,bp.lieferdatum,if(b.lieferdatum != \'0000-00-00\',b.lieferdatum,\'-\'))', 'if(b.bestaetigteslieferdatum != \'0000-00-00\',b.bestaetigteslieferdatum,\'-\')','adr.lieferantennummer', 'b.name', 'a.nummer','a.name_de','bp.bestellnummer','bp.bezeichnunglieferant','bp.menge','bp.geliefert', 'p.abkuerzung'); } $findcols = array('b.datum','b.belegnr', "if(bp.lieferdatum != '0000-00-00', bp.lieferdatum, if(b.lieferdatum != '0000-00-00', b.lieferdatum, '-'))", "if(lp.lieferdatum != '0000-00-00', lp.lieferdatum, if(b.bestaetigteslieferdatum != '0000-00-00', b.bestaetigteslieferdatum, '-'))", 'adr.lieferantennummer', 'b.name', 'a.nummer','a.name_de','bp.bestellnummer','bp.bezeichnunglieferant','bp.menge','bp.geliefert', 'p.abkuerzung', 'id'); //$defaultorder = 10; //Optional wenn andere Reihenfolge gewuenscht //$defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= "
"; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " a.lagerartikel='1' "; $tmp = ''; $csubwhere = !empty($subwhere)?(empty($subwhere)?0:count($subwhere)):0; for ($j = 0;$j < $csubwhere;$j++) $tmp.= " AND " . $subwhere[$j]; if($liefertermine) { // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, DATE_FORMAT(b.datum,'%d.%m.%Y') as vom, b.belegnr, if(bp.lieferdatum != '0000-00-00' ,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),if(b.lieferdatum != '0000-00-00',DATE_FORMAT(b.lieferdatum,'%d.%m.%Y'),'-')) as standardlieferdatum, if(lp.lieferdatum != '0000-00-00' ,DATE_FORMAT(lp.lieferdatum,'%d.%m.%Y'),if(b.bestaetigteslieferdatum != '0000-00-00',DATE_FORMAT(b.bestaetigteslieferdatum,'%d.%m.%Y'),'-')) as bestaetigteslieferdatum, adr.lieferantennummer as lieferantennummer, " . $this->app->erp->MarkerUseredit("b.name", "b.useredittimestamp") . " as lieferant, a.nummer,a.name_de, bp.bestellnummer,bp.bezeichnunglieferant,trim(bp.menge)+0,trim(bp.geliefert)+0, p.abkuerzung as projekt, b.id FROM bestellung b LEFT JOIN projekt p ON p.id=b.projekt LEFT JOIN adresse adr ON b.adresse=adr.id LEFT JOIN bestellung_position bp ON bp.bestellung=b.id LEFT JOIN artikel a ON a.id=bp.artikel LEFT JOIN liefertermine_positionen lp ON bp.id=lp.bestellung_position"; // Fester filter $where = " (bp.geliefert < bp.menge AND (b.status!='abgeschlossen' AND b.status!='angelegt' AND b.status!='storniert')) $tmp " . $this->app->erp->ProjektRechte(); }else{ // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, DATE_FORMAT(b.datum,'%d.%m.%Y') as vom, b.belegnr, if(bp.lieferdatum != '0000-00-00' ,DATE_FORMAT(bp.lieferdatum,'%d.%m.%Y'),if(b.lieferdatum != '0000-00-00',DATE_FORMAT(b.lieferdatum,'%d.%m.%Y'),'-')) as standardlieferdatum, if(b.bestaetigteslieferdatum != '0000-00-00',DATE_FORMAT(b.bestaetigteslieferdatum,'%d.%m.%Y'),'-') as bestaetigteslieferdatum, adr.lieferantennummer as lieferantennummer, " . $this->app->erp->MarkerUseredit("b.name", "b.useredittimestamp") . " as lieferant, a.nummer,a.name_de, bp.bestellnummer,bp.bezeichnunglieferant,trim(bp.menge)+0,trim(bp.geliefert)+0, p.abkuerzung as projekt, b.id FROM bestellung b LEFT JOIN projekt p ON p.id=b.projekt LEFT JOIN adresse adr ON b.adresse=adr.id LEFT JOIN bestellung_position bp ON bp.bestellung=b.id LEFT JOIN artikel a ON a.id=bp.artikel"; // Fester filter $where = " (bp.geliefert < bp.menge AND (b.status!='abgeschlossen' AND b.status!='angelegt' AND b.status!='storniert')) $tmp " . $this->app->erp->ProjektRechte(); } // gesamt anzahl $count = "SELECT COUNT(b.id) FROM bestellung b LEFT JOIN projekt p ON p.id=b.projekt LEFT JOIN adresse adr ON b.adresse=adr.id LEFT JOIN bestellung_position bp ON bp.bestellung=b.id LEFT JOIN artikel a ON a.id=bp.artikel WHERE $where"; $moreinfo = false; break; case "bestellungenoffene": // headings $heading = array('', 'Vom', 'Lf-Nr.', 'Lieferant', 'Land', 'Projekt', 'Betrag (brutto)', 'Status', 'Menü'); $width = array('1%', '10%', '10%', '40%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'vom', 'lieferantennummer', 'lieferant', 'land', 'projekt', 'betrag', 'status', 'id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'adr.lieferantennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', 'a.gesamtsumme', 'a.status'); $defaultorder = 10; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 8; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS b.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, DATE_FORMAT(b.datum,'%d.%m.%Y') as vom, adr.lieferantennummer as lieferantennummer, " . $this->app->erp->MarkerUseredit("b.name", "b.useredittimestamp") . " as lieferant, b.land as land, p.abkuerzung as projekt, b.gesamtsumme as summe, UPPER(b.status) as status, b.id FROM bestellung b LEFT JOIN projekt p ON p.id=b.projekt LEFT JOIN adresse adr ON b.adresse=adr.id "; // Fester filter $where = " b.id!='' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(b.id) FROM bestellung b"; $moreinfo = true; // gesamt anzahl $count = "SELECT COUNT(b.id) FROM bestellung b WHERE b.status='freigegeben'"; $moreinfo = true; break; //offene case "bestellungen": $allowed['bestellung'] = array('list'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#bestellungenoffen').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#bestellungnichtbestaetigt').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#bestellungversendet').click( function() { fnFilterColumn3( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#bestellungstorniert').click( function() { fnFilterColumn4( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#bestellungfehlt').click( function() { fnFilterColumn5( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#bestellunglieferdatumueberschritten').click( function() { fnFilterColumn6( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#bestellungohneverbindlichkeit').click( function() { fnFilterColumn7( 0 ); } );"); $defaultorder = 10; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $rowcallback_gt = 1; $sumcol = 9; $alignright = array(9); for ($r = 1;$r < 8;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // ENDE EXTRA checkboxen // headings $heading = array('', '', 'Bestellung', 'Vom', 'Lf-Nr.', 'Lieferant', 'Land', 'Projekt', 'Betrag (brutto)', 'Status'); $width = array('1%', '1%', '10%', '10%', '10%', '30%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'b.belegnr', 'b.belegnr', 'b.datum', 'adr.lieferantennummer', 'b.name', 'b.land', 'p.abkuerzung', 'b.gesamtsumme', 'b.status'); $searchsql = array('DATE_FORMAT(b.datum,\'%d.%m.%Y\')', 'b.belegnr', 'adr.lieferantennummer', 'b.name', 'b.land', 'p.abkuerzung', 'b.status', 'b.gesamtsumme','b.internebezeichnung'); $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 10; $bestellungzusatzfelder = $this->app->erp->getZusatzfelderBestellung(); for($i = 1; $i <= 5; $i++) { $zusatzfeld = $this->app->erp->Firmendaten('bestellungtabellezusatz' . $i); if($zusatzfeld && isset($bestellungzusatzfelder[$zusatzfeld])){ $defaultorder++; $menucol++; $heading[] = $bestellungzusatzfelder[$zusatzfeld]; $width[] = '10%'; $findcols[] = 'b.'.$zusatzfeld; switch($zusatzfeld) { case 'bestaetigteslieferdatum': case 'gewuenschteslieferdatum': $searchsql[] = 'IF(b.'.$zusatzfeld.'!="0000-00-00", DATE_FORMAT(b.'.$zusatzfeld.",'%d.%m.%Y'), '')"; $zusatzcols[] = 'IF(b.'.$zusatzfeld.'!="0000-00-00", DATE_FORMAT(b.'.$zusatzfeld.",'%d.%m.%Y'), '')"; $datecols[] = array_search('b.'.$zusatzfeld, $findcols); break; default: $searchsql[] = 'b.'.$zusatzfeld; $zusatzcols[] = 'b.'.$zusatzfeld; } } } $heading[] = 'Menü'; $width[] = '1%'; $findcols[] = 'b.id'; $parameter = $this->app->User->GetParameter('table_filter_bestellung'); $parameter = base64_decode($parameter); $parameter = json_decode($parameter, true); $more_data6 = $this->app->Secure->GetGET("more_data6"); $more_data7 = $this->app->Secure->GetGET("more_data7"); // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS b.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`, CONCAT('') AS `auswahl`, IF(b.status='storniert',CONCAT(b.belegnr),b.belegnr) AS `belegnr`, IF(b.status='storniert',CONCAT(DATE_FORMAT(b.datum,'%d.%m.%Y')),DATE_FORMAT(b.datum,'%d.%m.%Y')) AS `vom`, IF(b.status='storniert',CONCAT(adr.lieferantennummer),adr.lieferantennummer) AS `lieferantennummer`, IF( b.status='storniert', CONCAT( " . $this->app->erp->MarkerUseredit("b.name", "b.useredittimestamp") . ", IF( b.internebezeichnung!='', CONCAT( '
', b.internebezeichnung, '' ), '' ), IF( b.abweichendelieferadresse = 1, CONCAT( '
Abw. Lieferadr.: ', b.liefername,', ', b.lieferstrasse,', ', b.lieferland,'-', b.lieferplz,' ', b.lieferort, '' ), '' ) ), CONCAT( " . $this->app->erp->MarkerUseredit("b.name", "b.useredittimestamp") . ", IF( b.internebezeichnung!='', CONCAT( '
', b.internebezeichnung, '' ), '' ), IF( b.abweichendelieferadresse = 1, CONCAT( '
Abw. Lieferadr.: ', b.liefername,', ', b.lieferstrasse,', ', b.lieferland,'-', b.lieferplz,' ', b.lieferort, '' ), '' ) ) ) AS `lieferant`, IF(b.status='storniert',CONCAT(b.land),b.land) AS `land`, IF(b.status='storniert',CONCAT(p.abkuerzung),p.abkuerzung) AS `projekt`, IF(b.status='storniert',CONCAT(FORMAT(b.gesamtsumme,2{$extended_mysql55})),FORMAT(b.gesamtsumme,2{$extended_mysql55})) AS `summe`, IF(b.status='storniert',CONCAT('',UPPER(b.status),''),UPPER(b.status)) AS `status`, ".(!empty($zusatzcols)?implode(', ',$zusatzcols).',':'')." b.id"; $sql .= " FROM `bestellung` AS `b` LEFT JOIN `projekt` AS `p` ON p.id=b.projekt LEFT JOIN `adresse` AS `adr` ON b.adresse=adr.id"; if(isset($parameter['artikel']) && !empty($parameter['artikel'])) { $artikelData = $this->app->DB->SelectArr('SELECT id FROM artikel WHERE nummer = "'.$parameter['artikel'].'"'); if ($artikelData) { $artikelData = reset($artikelData); $sql .= " RIGHT JOIN `bestellung_position` AS `bp` ON bp.bestellung = b.id AND bp.artikel = " . $artikelData['id'] . " "; } } $liefertermine = $this->app->erp->ModulVorhanden('liefertermine'); if($more_data6){ if($liefertermine){ $sql .=' LEFT JOIN (SELECT MAX(`lieferdatum`) AS `datum`, `bestellung` FROM `liefertermine_positionen` GROUP BY `bestellung`) AS `ltp` ON b.id = ltp.bestellung LEFT JOIN (SELECT MAX(`lieferdatum`) AS `datum`, `bestellung` FROM `bestellung_position` GROUP BY `bestellung`) AS `bpl` ON b.id = bpl.bestellung LEFT JOIN (SELECT SUM(`menge`) AS `menge`, SUM(geliefert) AS `geliefert`, `bestellung` FROM `bestellung_position` GROUP BY `bestellung`) AS `bm` ON b.id = bm.bestellung'; } else{ $sql .=' LEFT JOIN (SELECT MAX(`lieferdatum`) AS `datum`, `bestellung` FROM `bestellung_position` GROUP BY `bestellung`) AS `bpl` ON b.id = bpl.bestellung LEFT JOIN (SELECT SUM(`menge`) AS `menge`, SUM(`geliefert`) AS `geliefert`, `bestellung` FROM `bestellung_position` GROUP BY `bestellung`) AS `bm` ON b.id = bm.bestellung'; } } if($more_data7) { $sql .= " LEFT JOIN `verbindlichkeit` AS `verb` ON b.id = verb.bestellung "; for($i = 1; $i <= 15; $i++) { $sql .= " OR b.id = verb.bestellung".$i; } $sql .= " LEFT JOIN `verbindlichkeit_bestellungen` AS `verb_best` ON b.id = verb_best.bestellung "; $subwhere[] = " ISNULL(verb.id) AND ISNULL(verb_best.id) "; } // Fester filter //FORMAT(b.gesamtsumme,2,'de_DE') // START EXTRA more // TODO: status abgeschlossen muss noch umgesetzt werden $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " b.status!='abgeschlossen' AND b.status!='storniert' "; $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) $subwhere[] = " b.bestellung_bestaetigt!='1' AND b.status!='abgeschlossen' "; $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) $subwhere[] = " b.status='versendet' "; $more_data4 = $this->app->Secure->GetGET("more_data4"); if ($more_data4 == 1) $subwhere[] = " b.status='storniert' "; $more_data5 = $this->app->Secure->GetGET("more_data5"); if ($more_data5 == 1) $subwhere[] = " b.status!='storniert' AND b.status!='abgeschlossen' AND (SELECT SUM(bp1.menge)>SUM(bp1.geliefert) FROM bestellung_position bp1 WHERE bp1.bestellung=b.id)!=0"; if($more_data6 == 1){ if($liefertermine){ $subwhere[] = " IF(ISNULL(ltp.datum) OR ltp.datum = '0000-00-00', IF(ISNULL(bpl.datum) OR bpl.datum = '0000-00-00', IF(b.bestaetigteslieferdatum != '' && b.bestaetigteslieferdatum != '0000-00-00', b.bestaetigteslieferdatum < NOW(), b.gewuenschteslieferdatum < NOW() AND b.gewuenschteslieferdatum != '0000-00-00'), bpl.datum < NOW() AND bpl.datum != '0000-00-00'), ltp.datum < NOW() AND ltp.datum != '0000-00-00') AND b.status != 'storniert' AND b.status != 'abgeschlossen' AND (bm.menge > bm.geliefert)"; } else{ $subwhere[] = " IF( ISNULL(bpl.datum) OR bpl.datum = '0000-00-00', IF( b.bestaetigteslieferdatum != '' && b.bestaetigteslieferdatum != '0000-00-00', b.bestaetigteslieferdatum < NOW(), b.gewuenschteslieferdatum < NOW() AND b.gewuenschteslieferdatum != '0000-00-00' ), bpl.datum < NOW() AND bpl.datum != '0000-00-00' ) AND b.status != 'storniert' AND b.status != 'abgeschlossen' AND (bm.menge > bm.geliefert)"; } } if (!is_null($subwhere)) { for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; } // START EXTRA more $where = " b.id!='' AND b.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte(); /* STAMMDATEN */ if(isset($parameter['name']) && !empty($parameter['name'])) { $paramsArray[] = "b.name LIKE '%".$parameter['name']."'% "; } if(isset($parameter['ansprechpartner']) && !empty($parameter['ansprechpartner'])) { $paramsArray[] = "b.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' "; } if(isset($parameter['abteilung']) && !empty($parameter['abteilung'])) { $paramsArray[] = "b.abteilung LIKE '%".$parameter['abteilung']."%' "; } if(isset($parameter['strasse']) && !empty($parameter['strasse'])) { $paramsArray[] = "b.strasse LIKE '%".$parameter['strasse']."%' "; } if(isset($parameter['plz']) && !empty($parameter['plz'])) { $paramsArray[] = "b.plz LIKE '".$parameter['plz']."%'"; } if(isset($parameter['ort']) && !empty($parameter['ort'])) { $paramsArray[] = "b.ort LIKE '%".$parameter['ort']."%' "; } if(isset($parameter['land']) && !empty($parameter['land'])) { $paramsArray[] = "b.land LIKE '%".$parameter['land']."%' "; } if(isset($parameter['ustid']) && !empty($parameter['ustid'])) { $paramsArray[] = "b.ustid LIKE '%".$parameter['ustid']."%' "; } if(isset($parameter['telefon']) && !empty($parameter['telefon'])) { $paramsArray[] = "b.telefon LIKE '%".$parameter['telefon']."%' "; } if(isset($parameter['email']) && !empty($parameter['email'])) { $paramsArray[] = "b.email LIKE '%".$parameter['email']."%' "; } if(isset($parameter['datumVon']) && !empty($parameter['datumVon'])) { $paramsArray[] = "b.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' "; } if(isset($parameter['datumBis']) && !empty($parameter['datumBis'])) { $paramsArray[] = "b.datum <= '" . date('Y-m-d',strtotime($parameter['datumBis']))."' "; } if(isset($parameter['betragVon']) && !empty($parameter['betragVon'])) { $paramsArray[] = "b.gesamtsumme >= ' ".$parameter['betragVon']."' "; } if(isset($parameter['betragBis']) && !empty($parameter['betragBis'])) { $paramsArray[] = "b.gesamtsumme <= ' ".$parameter['betragBis']."' "; } if(isset($parameter['projekt']) && !empty($parameter['projekt'])) { $projektData = $this->app->DB->SelectArr(' SELECT * FROM `projekt` WHERE `abkuerzung` LIKE "' . $parameter['projekt'] . '" '); $projektData = reset($projektData); $paramsArray[] = "b.projekt = '".$projektData['id']."' "; } if(isset($parameter['belegnummer']) && !empty($parameter['belegnummer'])) { $paramsArray[] = "b.belegnr LIKE '%".$parameter['belegnummer']."%' "; } if(isset($parameter['internebemerkung']) && !empty($parameter['internebemerkung'])) { $paramsArray[] = "b.internebemerkung LIKE '%".$parameter['internebemerkung']."%' "; } if(isset($parameter['aktion']) && !empty($parameter['aktion'])) { $paramsArray[] = "b.aktion LIKE '%".$parameter['aktion']."%' "; } if(isset($parameter['freitext']) && !empty($parameter['freitext'])) { $paramsArray[] = "b.freitext LIKE '%".$parameter['freitext']."%' "; } if(isset($parameter['zahlungsweise']) && !empty($parameter['zahlungsweise'])) { $paramsArray[] = "b.zahlungsweise LIKE '%".$parameter['zahlungsweise']."%' "; } if(isset($parameter['status']) && !empty($parameter['status'])) { $paramsArray[] = "b.status LIKE '%".$parameter['status']."%' "; } if(isset($parameter['versandart']) && !empty($parameter['versandart'])) { $paramsArray[] = "b.versandart LIKE '%".$parameter['versandart']."%' "; } if(isset($parameter['lieferantennummer']) && !empty($parameter['lieferantennummer'])) { $paramsArray[] = "(b.lieferantennummer LIKE '%".$parameter['lieferantennummer']."%' OR adr.lieferantennummer LIKE '%".$parameter['lieferantennummer']."%')"; } if ($paramsArray) { $where .= ' AND ' . implode(' AND ', $paramsArray); } // gesamt anzahl $count = "SELECT COUNT(b.id) FROM `bestellung` AS `b` WHERE b.status!='angelegt'"; $moreinfo = true; break; case "vertreter": // headings $id = $this->app->Secure->GetGET('id'); $heading = array('', 'Kennziffer', 'Name', 'Menü'); $width = array('1%', '5%', '90%', '5%'); $findcols = array('open', 'g.kennziffer', 'g.name', 'g.id'); $searchsql = array('g.kennziffer', 'g.name'); //$defaultorder = 6; //Optional wenn andere Reihenfolge gewuenscht //$defaultorderdesc=1; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">
"; // 
"; $menucol = 6; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS g.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, g.kennziffer, g.name, g.id FROM gruppen g "; $where = " g.art='verband' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(g.id) FROM gruppen g WHERE g.art='verband' " . $this->app->erp->ProjektRechte(); $moreinfo = false; break; case "adresse_angebot": $allowed['adresse'] = array('belege'); // headings $id = $this->app->Secure->GetGET('id'); $heading = array('Angebot', 'Vom', 'Anfrage', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Status', 'Menü'); $width = array('1%', '10%', '40%', '50%', '5%', '1%', '1%', '1%'); $findcols = array('belegnr', 'vom', 'name', 'projekt', 'zahlungsweise', 'betrag', 'status', 'id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'a.anfrage', 'a.status', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})"); $defaultorder = 8; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $sumcol = 6; $alignright = array(6); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 9; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, if(belegnr='','ENTWURF',belegnr) as belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, a.anfrage as name, LEFT(UPPER( p.abkuerzung),10) as projekt, a.zahlungsweise as zahlungsweise, FORMAT(a.gesamtsumme,2{$extended_mysql55}) as betrag, a.status as status, a.id FROM angebot a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; $where = " a.adresse='$id' AND a.status!='angelegt' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(a.id) FROM angebot a WHERE a.status!='angelegt' AND a.adresse='$id' "; $moreinfo = false; break; case "adresse_auftrag": $allowed['adresse'] = array('belege'); // headings $id = $this->app->Secure->GetGET('id'); $heading = array('Auftrag', 'Vom', 'Kommission/Bestellnummer', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Status', 'Menü'); $width = array('1%', '10%', '40%', '50%', '5%', '1%', '1%', '1%'); $findcols = array('belegnr', 'vom', 'name', 'projekt', 'zahlungsweise', 'a.gesamtsumme', 'status', 'id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'a.ihrebestellnummer', 'internet', 'a.status', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})"); $defaultorder = 8; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $sumcol = 6; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 8; $alignright = array(6); // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, if(belegnr='','ENTWURF',belegnr) as belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, a.ihrebestellnummer as name, LEFT(UPPER( p.abkuerzung),10) as projekt, a.zahlungsweise as zahlungsweise, ".$this->app->erp->FormatPreis("a.gesamtsumme",2)." as betrag, a.status as status, a.id FROM auftrag a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; $where = " a.adresse='$id' AND a.status!='angelegt' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(a.id) FROM auftrag a LEFT JOIN projekt p ON p.id=a.projekt WHERE $where"; $moreinfo = false; break; case "adresse_rechnung": $allowed['adresse'] = array('belege'); // headings $id = $this->app->Secure->GetGET('id'); $heading = array('Rechnung', 'Vom', 'Kommission/Internetnummer', 'Projekt', 'Zahlung', 'Betrag (brutto)','IST','Skonto gegeben','Zahlungsstatus','bezahlt am', 'Status', 'Menü'); $width = array('1%', '10%', '40%', '5%', '5%', '1%','1%','1%', '1%','6%', '1%', '1%'); $findcols = array('r.belegnr', 'r.datum', 'a.ihrebestellnummer', 'r.projekt', 'r.zahlungsweise', 'r.soll','r.ist','r.skonto_gegeben', 'r.zahlungsstatus','r.bezahlt_am', 'r.status', 'r.id'); $searchsql = array('DATE_FORMAT(r.datum,\'%d.%m.%Y\')', 'r.belegnr', 'a.ihrebestellnummer', 'r.status', 'r.name', 'r.land', 'p.abkuerzung', 'r.zahlungsweise', 'r.status', "FORMAT(r.ist,2{$extended_mysql55})", "FORMAT(r.soll,2{$extended_mysql55})", 'r.zahlungsstatus', "if(r.zahlungsstatus='offen', if(DATEDIFF(NOW(),DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day)) > 0, CONCAT('',upper(substring(r.mahnwesen,1,1)),lower(substring(r.mahnwesen,2)),''), 'offen') ,if(r.zahlungsstatus='','offen',r.zahlungsstatus))"); $defaultorder = 11; $defaultorderdesc = 1; $sumcol = 6; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 1; $alignright = array(6,7,8); $sql = "SELECT SQL_CALC_FOUND_ROWS r.id, if(r.belegnr='','ENTWURF',r.belegnr) as belegnr, CONCAT(DATE_FORMAT(r.datum,'%d.%m.%Y'),' ',if(r.zahlungsstatus='offen', if(DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day) >= NOW(),CONCAT('
fällig in ',DATEDIFF(DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day),NOW()),' Tagen'),CONCAT('
fällig seit ',DATEDIFF(NOW(),DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day)),' Tagen')) ,'')) as vom, a.ihrebestellnummer, LEFT(UPPER( p.abkuerzung),10) as projekt, r.zahlungsweise as zahlungsweise, FORMAT(r.soll,2{$extended_mysql55}) as betrag, FORMAT(r.ist,2{$extended_mysql55}) as ist, FORMAT(r.skonto_gegeben,2{$extended_mysql55}) as skonto_gegeben, if(r.zahlungsstatus='offen', if(DATEDIFF(NOW(),DATE_ADD(r.datum, INTERVAL r.zahlungszieltage day)) > 0, CONCAT('',upper(substring(r.mahnwesen,1,1)),lower(substring(r.mahnwesen,2)),''), 'offen') ,if(r.zahlungsstatus='','offen',r.zahlungsstatus)) as zahlungsstatus, r.bezahlt_am, r.status, r.id FROM rechnung r LEFT JOIN auftrag a ON r.auftragid=a.id LEFT JOIN projekt p ON p.id=r.projekt LEFT JOIN adresse adr ON r.adresse=adr.id "; $where = " r.adresse='$id' AND r.status!='angelegt' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(r.id) FROM rechnung r LEFT JOIN projekt p ON p.id=r.projekt WHERE r.adresse='$id' AND r.status!='angelegt' " . $this->app->erp->ProjektRechte(); $moreinfo = false; break; case "adresse_gutschrift": $allowed['adresse'] = array('belege'); // headings $id = $this->app->Secure->GetGET('id'); $heading = array('Gutschrift', 'Vom', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Zahlungsstatus', 'Status', 'Menü'); $width = array('1%', '10%', '5%', '5%', '10%', '10%', '10%', '1%'); $findcols = array('g.belegnr', 'g.datum', 'g.projekt', 'g.zahlungsweise', 'g.soll', 'g.zahlungsstatus', 'g.status', 'g.id'); $searchsql = array("DATE_FORMAT(g.datum,'%d.%m.%Y')", 'g.belegnr', 'g.status', 'g.name', 'g.land', 'p.abkuerzung', 'g.zahlungsweise', 'g.status', "FORMAT(g.ist,2{$extended_mysql55})", "FORMAT(g.soll,2{$extended_mysql55})"); $defaultorder = 8; $defaultorderdesc = 1; $defaultsum = 5; $alignright = array(5); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 1; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS g.id, if(g.belegnr='','ENTWURF',g.belegnr) as belegnr, DATE_FORMAT(g.datum,'%d.%m.%Y') as vom, LEFT(UPPER( p.abkuerzung),10) as projekt, g.zahlungsweise as zahlungsweise, FORMAT(g.soll,2{$extended_mysql55}) as betrag, g.zahlungsstatus as zahlungsstatus, g.status, g.id FROM gutschrift g LEFT JOIN projekt p ON p.id=g.projekt LEFT JOIN adresse adr ON g.adresse=adr.id "; $where = " g.adresse='$id' AND g.status!='angelegt' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(g.id) FROM gutschrift g WHERE g.adresse='$id' AND g.status!='angelegt' "; $moreinfo = false; break; case "adresse_lieferschein": $allowed['adresse'] = array('belege'); // headings $id = $this->app->Secure->GetGET('id'); $heading = array('Lieferschein', 'Auftrag', 'Kommission/Bestellnummer', 'Vom', 'Projekt', 'Versandart', 'Tracking', 'Status', 'Menü'); $width = array('5%', '5%', '30%', '10%', '5%', '10%', '10%','10%', '1%'); $findcols = array('l.belegnr', 'a.belegnr', 'a.ihrebestellnummer', 'l.datum', 'l.projekt', 'l.versandart', 'v.tracking', 'l.status', 'l.id'); $searchsql = array("DATE_FORMAT(l.datum,'%d.%m.%Y')", 'a.belegnr', 'a.ihrebestellnummer', 'l.belegnr', 'a.ihrebestellnummer', 'l.status', 'v.tracking', 'l.name', 'l.land', 'p.abkuerzung', 'l.versandart', 'l.status'); $defaultorder = 9; $defaultorderdesc = 1; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 1; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, if(l.belegnr='','ENTWURF',l.belegnr) as belegnr, a.belegnr, a.ihrebestellnummer, DATE_FORMAT(l.datum,'%d.%m.%Y') as vom, LEFT(UPPER( p.abkuerzung),10) as projekt, l.versandart, if(v.tracking,v.tracking,'-'), l.status, l.id FROM lieferschein l LEFT JOIN projekt p ON p.id=l.projekt LEFT JOIN adresse adr ON l.adresse=adr.id LEFT JOIN auftrag a ON l.auftragid=a.id LEFT JOIN versand v ON v.lieferschein=l.id "; $where = " l.adresse='$id' AND l.status!='angelegt' " . $this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(l.id) FROM lieferschein l WHERE l.adresse='$id' AND l.status!='angelegt' "; $moreinfo = false; break; case "angeboteinbearbeitung": $allowed['angebot'] = array('create', 'list'); // headings $heading = array('', 'Angebot', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Status', 'Menü'); $width = array('1%', '1%', '10%', '10%', '40%', '5%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'belegnr', 'a.datum', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.gesamtsumme', 'a.status', 'id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})", 'a.status', 'adr.freifeld1','a.anfrage','a.internebezeichnung'); $defaultorder = 11; $defaultorderdesc = 1; if($this->app->erp->RechteVorhanden('angebot','summe')) $sumcol = 9; $alignright = array('9'); $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 10; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, 'ENTWURF' as belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("a.name", "a.useredittimestamp") . ", if(a.internebezeichnung!='',CONCAT('
',a.internebezeichnung,''),'')) as name, a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise, FORMAT(a.gesamtsumme,2{$extended_mysql55}) as betrag, UPPER(a.status) as status, a.id FROM angebot a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; $where = " ( a.status='angelegt') " . $this->app->erp->ProjektRechte('p.id', true, 'a.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(a.id) FROM angebot a WHERE ( a.status='angelegt') "; $moreinfo = true; break; case "angeboteoffene": $allowed['angebot'] = array('list'); // headings $heading = array('', 'Angebot', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Status', 'Menü'); $width = array('1%', '1%', '10%', '10%', '40%', '5%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'belegnr', 'a.datum', 'kundennummer', 'name', 'land', 'projekt', 'zahlungsweise', 'a.gesamtsumme', 'status', 'id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})", 'a.status', 'adr.freifeld1','a.anfrage'); $defaultorder = 11; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $alignright = array('9'); $sumcol = 9; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $menucol = 10; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, a.belegnr as belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer, " . $this->app->erp->MarkerUseredit("a.name", "a.useredittimestamp") . " as name, a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise, FORMAT(a.gesamtsumme,2{$extended_mysql55}) as betrag, UPPER(a.status) as status, a.id FROM angebot a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; $where = " a.id!='' AND a.status='freigegeben' " . $this->app->erp->ProjektRechte('p.id', true, 'a.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(a.id) FROM angebot a WHERE a.status='freigegeben'"; $moreinfo = true; break; case "projekt_aufgaben": // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#nuroffene').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nurabgeschlossene').click( function() { fnFilterColumn2( 0 ); } );"); for ($r = 1;$r < 3;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // ENDE EXTRA checkboxen (int)$fteilprojektfilter = $this->app->YUI->TableSearchFilter($name, 19, 'teilprojektfilter', $this->app->User->GetParameter("projektdashboardartikelteilprojektfilter")); // headings $heading = array('Aufgabe','Teilprojekt', 'Mitarbeiter', 'Abgabe-Termin', 'Status', 'Menü'); $width = array('35%', '20%','20%', '10%', '10%','1%'); $findcols = array('aufgabe','ap.aufgabe', 'mitarbeiter', 'abgabe', 'status', 'id'); $searchsql = array('a.aufgabe','ap.aufgabe', 'adr.name', 'a.status', 'a.abgabe_bis'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/haken.png\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . "
"; // $menucol=9; // SQL statement $sql = "SELECT a.id, if(a.prio,CONCAT('',a.aufgabe,''),a.aufgabe) as aufgabe, ap.aufgabe, adr.name as mitarbeiter, if(a.abgabe_bis,DATE_FORMAT(abgabe_bis,'%d.%m.%Y'),'') as abgabe, a.status, a.id FROM aufgabe a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id LEFT JOIN arbeitspaket ap ON ap.id=a.teilprojekt"; // Fester filter // START EXTRA more $subwhere = []; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " a.status='offen' "; $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) $subwhere[] = " a.status='abgeschlossen' "; if($fteilprojektfilter) { $subwhere[] = " a.teilprojekt = '$fteilprojektfilter' "; } for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; $where = " a.projekt='" . $id."'".$tmp; $count = "SELECT COUNT(a.id) FROM aufgabe a WHERE $where "; break; case "abrechnungzeit": $allowed['adresse'] = array('abrechnungzeit'); $id = $this->app->Secure->GetGET('id'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#archiviert').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#kunden').click( function() { fnFilterColumn2( 0 ); } );"); for ($r = 1;$r < 3;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // ENDE EXTRA checkboxen // headings $heading = array('', '', 'Aufgabe', 'Mitarbeiter', 'Von', 'Bis', 'Stunden','Projekt', 'Projektname', 'Art','Information','Status', 'Menü'); $width = array('1%', '1%', '25%', '10%', '10%', '10%', '1%','5%','10%','5%','5%','1%', '1%'); $findcols = array('open', 'auswahl', 'aufgabe', 'a.name', 'z.von', 'z.bis','TIME_TO_SEC(TIMEDIFF(z.bis, z.von))/3600','p.abkuerzung','p.name',"CONCAT(if(z.produktion > 0 ,'Produktion',''),if(z.auftrag > 0 ,'Auftrag',''),if(z.arbeitspaket > 0 ,'Teilprojekt',''))","IF(z.produktion>0, pr.belegnr COLLATE utf8_general_ci, IF(z.auftrag>0, auf.belegnr COLLATE utf8_general_ci, IF(z.arbeitspaket>0, ap.aufgabe COLLATE utf8_general_ci, '')))", "if(z.abrechnen,if(z.abgerechnet!=1 AND z.abrechnen='1','offen','abgerechnet'),'abgeschlossen')", 'id'); $searchsql = array("z.aufgabe","p.abkuerzung","CONCAT(if(z.produktion > 0 ,'Produktion',''),if(z.auftrag > 0 ,'Auftrag',''),if(z.arbeitspaket > 0 ,'Teilprojekt',''))","IF(z.produktion>0, pr.belegnr COLLATE utf8_general_ci, IF(z.auftrag>0, auf.belegnr COLLATE utf8_general_ci, IF(z.arbeitspaket>0, ap.aufgabe COLLATE utf8_general_ci, '')))",'a.name', "DATE_FORMAT(von, '%d.%m.%Y')", "DATE_FORMAT(bis, '%d.%m.%Y')", "if(z.abrechnen,if(z.abgerechnet!=1 AND z.abrechnen='1','offen','abgerechnet'),'abgeschlossen')",$this->app->erp->FormatPreis('TIME_TO_SEC(TIMEDIFF(z.bis, z.von))/3600',2),'p.name'); $defaultorder = 6; $defaultorderdesc = 1; $id = $this->app->Secure->GetGET("id"); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/haken.png\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . "
"; $numbercols = array(6); $datecols = array(4, 5); $alignright = array(7); // $menucol=9; $sumcol = 7; // SQL statement //CONCAT(LPAD(HOUR(TIMEDIFF(bis, von)),2,'0'),':',LPAD(MINUTE(TIMEDIFF(bis, von)),2,'0')) AS dauer, $sql = "SELECT SQL_CALC_FOUND_ROWS z.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, CONCAT('',if(z.abrechnen,'(A)','')) as auswahl, z.aufgabe as aufgabe, a.name as name, DATE_FORMAT(z.von, '%d.%m.%Y') as von, DATE_FORMAT(z.bis, '%d.%m.%Y') as bis, ".$this->app->erp->FormatPreis("FORMAT(TIME_TO_SEC(TIMEDIFF(z.bis, z.von))/3600,2)")." as dauer, p.abkuerzung as projekt, p.name, CONCAT(if(z.produktion > 0 ,'Produktion',''),if(z.auftrag > 0 ,'Auftrag',''),if(z.arbeitspaket > 0 ,'Teilprojekt','')) as art, IF(z.produktion>0, pr.belegnr, IF(z.auftrag>0, auf.belegnr, IF(z.arbeitspaket>0, ap.aufgabe, ''))) AS information, if(z.abrechnen,if(z.abgerechnet!=1 AND z.abrechnen='1','offen','abgerechnet'),'abgeschlossen') as status,z.id as id FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse LEFT JOIN projekt p ON p.id=z.projekt LEFT JOIN produktion pr ON pr.id = z.produktion LEFT JOIN auftrag auf ON auf.id = z.auftrag LEFT JOIN arbeitspaket ap on ap.id = z.arbeitspaket"; // Fester filter // START EXTRA more // $more_data1 = $this->app->Secure->GetGET("more_data1"); if($more_data1==1) $subwhere[] = " z.abrechnen='1' "; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) { $subwhere[] = " (z.abgerechnet='1' OR z.abrechnen!='1') "; } else $subwhere[] = " z.abgerechnet!=1 "; if($this->app->Secure->GetGET("more_data2")=="1") { $subwhere[] = " z.aufgabe_id <=0 AND z.auftrag <=0 AND z.produktion <=0 AND z.arbeitsanweisung <=0 AND z.projekt <=0 "; } for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; $where = " (z.adresse_abrechnung='" . $id . "' OR p.kunde='$id') $tmp"; $count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse LEFT JOIN projekt p ON p.id=z.projekt WHERE $where"; // gesamt anzahl $menucol = 12; $moreinfo = true; break; case "abrechnungszeitprojektdashboard": $tmp = ''; $allowed['projekt'] = array('dashboard'); $id = $this->app->Secure->GetGET('id'); //$uid = (int)$this->app->User->GetParameter('projektdashboardartikelteilprojektfilter'); // START EXTRA checkboxen //$this->app->Tpl->Add('JQUERYREADY', "$('#archiviert').click( function() { fnFilterColumn6( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#zeiterfassungabgeschlossene').click( function() { fnFilterColumn7( 0 ); } );"); for ($r = 7;$r < 8;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $this->app->Tpl->Add('JQUERYREADY', " $(document).ready(function() {fnFilterColumn8( $('#teilprojektfilter').val() );}); $('#teilprojektfilter').click( function() { fnFilterColumn8( $('#teilprojektfilter').val() ); } );$('#teilprojektfilter').change( function() { fnFilterColumn8( $('#teilprojektfilter').val()); } );"); for ($r = 8;$r < 9;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { oMoreData' . $r . $name . ' = i; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $heading = array( 'Auswahl','Teilprojekt', 'Aufgabe', 'Mitarbeiter', 'Von', 'Bis', 'Stunden','Stundensatz','Kosten','Status', 'Menü'); $width = array( '1%', '25%', '10%', '10%', '10%', '10%','5%','5%','5%','5%','5%','1%', '1%'); $findcols = array( 'auswahl', 'arb.aufgabe','z.aufgabe', 'name', 'von', 'bis','dauer','stundensatz','kosten','status', 'z.id'); $searchsql = array("z.aufgabe",'arb.aufgabe','z.aufgabe','a.name'); $defaultorder = 6; $defaultorderdesc = 1; $alignright = array(7,8,9); $id = $this->app->Secure->GetGET("id"); $menu = "";//
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/haken.png\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . "
"; $sumcol = array(7,9); $sql = "SELECT SQL_CALC_FOUND_ROWS z.id, CONCAT('') as auswahl, arb.aufgabe as teilprojekt, z.aufgabe as aufgabe, a.name as name, z.von as von, z.bis as bis, FORMAT(TIME_TO_SEC(TIMEDIFF(z.bis, z.von))/3600,2) as dauer, ifnull(z.stundensatz ,0 ) as stundensatz,FORMAT(ifnull(z.stundensatz ,0 ) * FORMAT(TIME_TO_SEC(TIMEDIFF(z.bis, z.von))/3600,2),2) as kosten, if(z.abgerechnet = 1,'abgerechnet','offen') as status,z.id as id FROM zeiterfassung z LEFT JOIN arbeitspaket arb ON z.arbeitspaket = arb.id LEFT JOIN adresse a ON a.id=z.adresse "; //$more_data6 = $this->app->Secure->GetGET("more_data6"); $more_data7 = $this->app->Secure->GetGET("more_data7"); $more_data8 = $this->app->Secure->GetGET("more_data8"); if($more_data8 > 0)$subwhere[] = " z.arbeitspaket = '$more_data8' "; /*if ($more_data6 == 1) { $subwhere[] = " (z.abgerechnet='1' OR z.abrechnen!='1') "; } else $subwhere[] = " z.abgerechnet!=1 ";*/ if($more_data7 == 1) { $subwhere[] = " z.abgerechnet = 1 "; }else{ $subwhere[] = " z.abgerechnet <> 1 "; } for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; $where = " z.projekt ='" . $id . "' $tmp"; $count = "SELECT COUNT(z.id) FROM zeiterfassung z LEFT JOIN arbeitspaket arb ON z.arbeitspaket = arb.id WHERE $where"; // gesamt anzahl $menucol = 11; $moreinfo = false; break; case "angebote": $allowed['angebot'] = array('list'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#angeboteoffen').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#angeboteheute').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#angeboteohneab').click( function() { fnFilterColumn3( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#angeboteabgelehnt').click( function() { fnFilterColumn4( 0 ); } );"); for ($r = 1;$r < 5;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // ENDE EXTRA checkboxen // headings $heading = array('', '', 'Angebot', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Status','Bearbeiter', 'Menü'); $width = array('1%', '1%', '1%', '10%', '10%', '40%', '5%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'a.belegnr', 'a.belegnr', 'a.datum', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.gesamtsumme', 'a.status','a.bearbeiter', 'id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.anfrage','a.belegnr', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})", 'a.status','a.bearbeiter', 'adr.freifeld1','a.internebezeichnung'); $defaultorder = 12; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; if($this->app->erp->RechteVorhanden('angebot','summe')) $sumcol = 10; $rowcallback_gt = 1; $alignright = array('10'); $menu = ""; $menu .= ""; $menu .= "" ."" ."" ."" ."
"; $menu .= "" ."app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" ."" ."" ."app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" ."" ."" ."app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">" ."" ."" ."app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">" ."" ."" ."
"; $menucol = 12; $parameter = $this->app->User->GetParameter('table_filter_angebot'); $parameter = base64_decode($parameter); $parameter = json_decode($parameter, true); $sql = ""; $sql .= " SELECT SQL_CALC_FOUND_ROWS a.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, CONCAT('') as auswahl, a.belegnr as belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, adr.kundennummer as kundennummer, CONCAT(" . $this->app->erp->MarkerUseredit("a.name", "a.useredittimestamp") . ", if(a.internebezeichnung!='',CONCAT('
',a.internebezeichnung,''),'')) as name, a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise, FORMAT(a.gesamtsumme,2{$extended_mysql55}) as betrag, UPPER(a.status) as status, a.bearbeiter, a.id "; $sql .= " FROM angebot a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; if(isset($parameter['artikel']) && !empty($parameter['artikel'])) { $artikelid = $this->app->DB->Select("SELECT id FROM artikel where geloescht != 1 AND nummer != 'DEL' AND nummer != '' AND nummer = '".$this->app->DB->real_escape_string(reset(explode(' ',trim($parameter['artikel']))))."' LIMIT 1"); if($artikelid) { $paramsArray[] = "ap.artikel = '" . $artikelid . "' "; $sql .= " INNER JOIN angebot_position ap ON a.id = ap.angebot "; $groupby = " GROUP BY a.id, p.id, adr.id "; } } // SQL statement /* $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, a.belegnr as belegnr, DATE_FORMAT(a.datum,'%Y-%m-%d') as vom, adr.kundennummer as kundennummer, " . $this->app->erp->MarkerUseredit("a.name", "a.useredittimestamp") . " as name, a.land as land, p.abkuerzung as projekt, a.zahlungsweise as zahlungsweise, FORMAT(a.gesamtsumme,2{$extended_mysql55}) as betrag, UPPER(a.status) as status, a.id FROM angebot a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; */ // Fester filter // START EXTRA more $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " a.status='freigegeben' "; $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) $subwhere[] = " a.datum=CURDATE() "; $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) $subwhere[] = " a.auftragid <= 0 AND a.status!='storniert' AND a.status!='abgelehnt' AND a.status != 'beauftragt' "; $more_data4 = $this->app->Secure->GetGET("more_data4"); if ($more_data4 == 1) $subwhere[] = " a.status='abgelehnt' "; $tmp = ''; $csubwhere = !empty($subwhere)?(empty($subwhere)?0:count($subwhere)):0; for ($j = 0;$j < $csubwhere;$j++) $tmp.= " AND " . $subwhere[$j]; $where = " a.id!='' AND a.status!='angelegt' $tmp " . $this->app->erp->ProjektRechte(); /* STAMMDATEN */ if(!empty($parameter['kundennummer'])) { $paramsArray[] = " (a.kundennummer LIKE '%".$parameter['kundennummer']."%' OR adr.kundennummer LIKE '%".$parameter['kundennummer']."%') "; } if(!empty($parameter['name'])) { $paramsArray[] = "a.name LIKE '%".$parameter['name']."%' "; } if(!empty($parameter['ansprechpartner'])) { $paramsArray[] = "a.ansprechpartner LIKE '%".$parameter['ansprechpartner']."%' "; } if(!empty($parameter['abteilung'])) { $paramsArray[] = "a.abteilung LIKE '%".$parameter['abteilung']."%' "; } if(!empty($parameter['strasse'])) { $paramsArray[] = "a.strasse LIKE '%".$parameter['strasse']."%' "; } if(!empty($parameter['plz'])) { $paramsArray[] = "a.plz LIKE '".$parameter['plz']."%'"; } if(!empty($parameter['ort'])) { $paramsArray[] = "a.ort LIKE '%".$parameter['ort']."%' "; } if(!empty($parameter['land'])) { $paramsArray[] = "a.land LIKE '%".$parameter['land']."' "; } if(!empty($parameter['ustid'])) { $paramsArray[] = "a.ustid LIKE '%".$parameter['ustid']."%' "; } if(!empty($parameter['telefon'])) { $paramsArray[] = "a.telefon LIKE '%".$parameter['telefon']."%' "; } if(!empty($parameter['email'])) { $paramsArray[] = "a.email LIKE '%".$parameter['email']."%' "; } /* XXX */ if(!empty($parameter['datumVon'])) { $paramsArray[] = "a.datum >= '" . date('Y-m-d',strtotime($parameter['datumVon']))."' "; } if(!empty($parameter['datumBis'])) { $paramsArray[] = "a.datum <= '" . date('Y-m-d',strtotime($parameter['datumBis']))."' "; } if(!empty($parameter['projekt'])) { $projektData = $this->app->DB->SelectArr(' SELECT * FROM projekt WHERE abkuerzung LIKE "' . $parameter['projekt'] . '" '); if(!empty($projektData)){ $projektData = reset($projektData); $paramsArray[] = "a.projekt = '" . $projektData['id'] . "' "; } } if(!empty($parameter['belegnummer'])) { $paramsArray[] = "a.belegnr LIKE '".$parameter['belegnummer']."' "; } if(!empty($parameter['internebemerkung'])) { $paramsArray[] = "a.internebemerkung LIKE '%".$parameter['internebemerkung']."%' "; } if(!empty($parameter['aktion'])) { $paramsArray[] = "a.aktion LIKE '%".$parameter['aktion']."%' "; } if(!empty($parameter['freitext'])) { $paramsArray[] = "a.freitext LIKE '%".$parameter['freitext']."%' "; } if(!empty($parameter['zahlungsweise'])) { $paramsArray[] = "a.zahlungsweise LIKE '%".$parameter['zahlungsweise']."%' "; } if(!empty($parameter['status'])) { $paramsArray[] = "a.status LIKE '%".$parameter['status']."%' "; } if(!empty($parameter['versandart'])) { $paramsArray[] = "a.versandart LIKE '%".$parameter['versandart']."%' "; } if(!empty($parameter['betragVon'])) { $paramsArray[] = "a.gesamtsumme >= '" . $parameter['betragVon'] . "' "; } if(!empty($parameter['betragBis'])) { $paramsArray[] = "a.gesamtsumme <= '" . $parameter['betragBis'] . "' "; } // projekt, belegnummer, internetnummer, bestellnummer, transaktionsId, freitext, internebemerkung, aktionscodes if ($paramsArray) { $where .= ' AND ' . implode(' AND ', $paramsArray); } // gesamt anzahl $count = "SELECT COUNT(a.id) FROM angebot a WHERE a.status!='angelegt'"; $moreinfo = true; break; case "mlmwartekonto": $allowed['adresse'] = array('multilevel'); // headings // headings $heading = array('Bezeichnung', 'Betrag', 'Menü'); $width = array('700px', '10%', '3%'); $findcols = array('bezeichnung', 'betrag', 'id'); $searchsql = array('bezeichnung', 'betrag', 'id'); $id = $this->app->Secure->GetGET("id"); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\">app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" >"; // $menucol=3; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS m.id, m.bezeichnung, m.betrag, m.id FROM mlm_wartekonto m "; //LEFT JOIN artikel a ON a.id=m.artikel "; // Fester filter $where = " m.adresse='$id' AND m.abgerechnet=0 "; // gesamt anzahl $count = "SELECT COUNT(id) FROM mlm_wartekonto WHERE adresse='$id' AND abgerechnet=0"; break; case "auftraegeinbearbeitung": $allowed['auftrag'] = array('create', 'list'); $auftragmarkierenegsaldo = $this->app->erp->Firmendaten('auftragmarkierenegsaldo'); // headings $heading = array('', 'Auftrag', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Monitor', 'Menü'); $width = array('1%', '10%', '10%', '10%', '31%', '5%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('open', 'a.belegnr', 'a.datum', 'if(a.lieferantenauftrag=1,adr.lieferantennummer,adr.kundennummer)', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.gesamtsumme', 'a.status', 'a.id'); $searchsql = array('a.datum', 'a.belegnr', 'a.ihrebestellnummer', 'internet', "if(a.lieferantenauftrag=1,adr.lieferantennummer,adr.kundennummer)", 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', 'a.gesamtsumme'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'a.ihrebestellnummer', 'internet', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})", 'adr.freifeld1','a.internebezeichnung'); $alignright = array('9'); $defaultorder = 11; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 1; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">"; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menucol = 10; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id,'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, CONCAT(if(belegnr='','ENTWURF',belegnr),if(projektfiliale > 0,' (F)','')) as belegnr, DATE_FORMAT(a.datum,'%d.%m.%Y') as vom, if(a.lieferantenauftrag=1,adr.lieferantennummer,adr.kundennummer) as kunde, CONCAT(" . $this->app->erp->MarkerUseredit("a.name", "a.useredittimestamp") . ",if(a.internebemerkung='','',' *'),if(a.freitext='','',' *'),if(a.internebezeichnung!='',CONCAT('
',a.internebezeichnung,''),'')) as name, a.land as land,LEFT(UPPER( p.abkuerzung),10) as projekt, ".($auftragmarkierenegsaldo?"CONCAT('',":'')."a.zahlungsweise".($auftragmarkierenegsaldo?",'')":"")." as zahlungsweise, FORMAT(a.gesamtsumme,2{$extended_mysql55}) as betrag, (" . $this->IconsSQL() . ") as icons, a.id FROM auftrag a LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON a.adresse=adr.id "; $where = " a.id!='' AND a.status='angelegt' " . $this->app->erp->ProjektRechte('p.id', true, 'a.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(a.id) FROM auftrag a WHERE a.status='angelegt' "; $moreinfo = true; $this->app->erp->RunHook('auftraege_tablesearch', 2, $sql, $where); break; case "auftraegeoffene": $allowed['auftrag'] = array('positionstabelle', 'list'); $auftragmarkierenegsaldo = $this->app->erp->Firmendaten('auftragmarkierenegsaldo'); // headings $heading = array('', '', 'Auftrag', 'Vom', 'Kd-Nr.', 'Kunde', 'Land', 'Projekt', 'Zahlung', 'Betrag (brutto)', 'Monitor', 'Menü'); $width = array('1%', '1%', '10%', '12%', '10%', '35%', '1%', '1%', '1%', '1%', '1%', '1%', '1%', '1%'); $findcols = array('a.id','a.id', 'a.belegnr', 'r.datum', 'kundennummer', 'kunde', 'land', 'p.abkuerzung', 'zahlungsweise', 'a.gesamtsumme', 'a.status', 'a.id', 'a.id'); $searchsql = array('DATE_FORMAT(a.datum,\'%d.%m.%Y\')', 'a.belegnr', 'a.ihrebestellnummer', 'internet', 'adr.kundennummer', 'a.name', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'adr.freifeld1', 'a.status', "FORMAT(a.gesamtsumme,2{$extended_mysql55})"); $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">
"; $defaultorder = 11; $defaultorderdesc = 1; $menucol = 11; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`, CONCAT( ' ' ) AS `versand`, CONCAT( a.belegnr, IF(a.autoversand,'','') ), a.datum AS `vom`, IF( a.lieferantenauftrag = 1, adr.lieferantennummer, adr.kundennummer ) AS `kundennummer`, CONCAT( " . $this->app->erp->MarkerUseredit("a.name", "a.useredittimestamp") . ", IF( a.internebemerkung='', '', ' *', IF( a.freitext='', '', ' *' ) ), IF( a.abweichendelieferadresse = 1, CONCAT( '
Abw. Lieferadr.: ', a.liefername,', ', a.lieferstrasse,', ', a.lieferland,'-', a.lieferplz,' ', a.lieferort, '' ), '' ) ) AS `kunde`, a.land AS `land`, p.abkuerzung AS `projekt`, ".( $auftragmarkierenegsaldo ? "CONCAT( ''," : '' )."a.zahlungsweise".($auftragmarkierenegsaldo ? ",'')" : "")." AS `zahlungsweise`, FORMAT(a.gesamtsumme,2{$extended_mysql55}) AS `betrag`, (" . $this->IconsSQL() . ") AS `icons`, a.id FROM `auftrag` AS `a` LEFT JOIN `projekt` AS `p` ON p.id = a.projekt LEFT JOIN `adresse` AS `adr` ON a.adresse = adr.id"; // Fester filter $where = " a.id!='' AND (a.belegnr !=0 OR a.belegnr != '') AND a.status = 'freigegeben' AND a.inbearbeitung = 0 AND a.nachlieferung != '1' AND a.vorkasse_ok = '1' AND a.porto_ok = '1' AND a.lager_ok = '1' AND a.check_ok = '1' AND a.ust_ok = '1' " . $this->app->erp->ProjektRechte('p.id', true, 'a.vertriebid'); // gesamt anzahl $count = "SELECT COUNT(a.id) FROM `auftrag` AS `a` WHERE a.id != '' AND (a.belegnr != 0 OR a.belegnr != '') AND a.status = 'freigegeben' AND a.inbearbeitung = 0 AND a.nachlieferung != '1' AND a.vorkasse_ok = '1' AND a.porto_ok = '1' AND a.lager_ok = '1' AND a.check_ok = '1' AND a.ust_ok = '1'"; $moreinfo = true; break; case "arbeitsnachweiseprojekt": $allowed['projekt'] = array('arbeitsnachweise'); // headings $heading = array('Datum', 'Dauer', 'Teilprojekt/Aufgabe', 'Menü'); $width = array('10%', '10%', '75%', '5%'); $findcols = array('Datum', 'Dauer', 'aufgabe', 'id'); $searchsql = array('z.id', 'z.bis'); $menu = "
app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">" . " 
"; $menucol = 11; // SQL statement //'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, $sql = "SELECT 'leer', DATE_FORMAT(z.bis, '%d.%m.%Y') AS Datum, SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von))/3600) as Dauer, ap.aufgabe, CONCAT(DATE_FORMAT(z.bis, '%d.%m.%Y'),'-',ap.id) as id FROM zeiterfassung z LEFT JOIN arbeitspaket ap ON ap.id=z.arbeitspaket "; // Fester filter // START EXTRA more // $more_data1 = $this->app->Secure->GetGET("more_data1"); if($more_data1==1) $subwhere[] = " a.status='freigegeben' "; // $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'"; for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; $id = $this->app->Secure->GetGET("id"); $where = " ap.aufgabe IS NOT NULL $tmp AND ap.projekt='$id' GROUP by Datum,ap.id "; // gesamt anzahl $count = "SELECT COUNT(z.id) FROM zeiterfassung z"; // $moreinfo = true; break; case "arbeitspakete": $this->app->Tpl->Add('JQUERYREADY', "$('#altearbeitspaket').click( function() { fnFilterColumn1( 0 ); } );"); for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // headings $heading = array('Art', 'Aufgabe', 'Verantwortlicher', 'Abgabe', 'geplant', 'gebucht', 'Status', 'Menü'); $width = array('5%', '25%', '25%', '3%', '3%', '3%', '1%', '10%'); $findcols = array('art', 'aufgabe', 'name', 'abgabedatum', 'geplant', 'gebucht', 'status', 'id'); $searchsql = array('adr.name', 'ap.aufgabe', 'ap.abgabedatum', 'ap.status'); $id = $this->app->Secure->GetGET("id"); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/haken.png\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; // SQL statement //'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, $sql = "SELECT SQL_CALC_FOUND_ROWS ap.id, if(ap.abgenommen,CONCAT('',UCASE(ap.art),''),UCASE(ap.art)) as art, if(ap.abgenommen,CONCAT('',ap.aufgabe,''),ap.aufgabe) as aufgabe, if(ap.abgenommen,CONCAT('',adr.name,''),adr.name) as name, if(ap.abgenommen,CONCAT('',ap.abgabedatum,''),ap.abgabedatum) as abgabedatum, if(ap.abgenommen,CONCAT('',ap.zeit_geplant,''),ap.zeit_geplant) as geplant, if(ap.abgenommen,CONCAT('', (SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von)))/3600,2) FROM zeiterfassung z WHERE z.arbeitspaket=ap.id) ,''), (SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von)))/3600,2) FROM zeiterfassung z WHERE z.arbeitspaket=ap.id) ) as gebucht, ap.status as status, ap.id FROM arbeitspaket ap LEFT JOIN adresse adr ON ap.adresse=adr.id "; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " OR ( ap.abgenommen='1') "; for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " " . $subwhere[$j]; // if($tmp!="")$tmp .= " AND e.geloescht='1' "; // Fester filter $where = "ap.projekt='$id' AND (ap.geloescht='0' OR ap.geloescht IS NULL) AND ap.abgenommen!='1'$tmp"; // Fester filter // $where = "e.artikel='$id' AND e.geloescht='0' "; // gesamt anzahl $count = "SELECT COUNT(ap.id) FROM arbeitspaket ap WHERE ap.projekt='$id' AND (ap.geloescht='0' OR ap.geloescht IS NULL)"; // $menucol = 6; // $moreinfo = true; break; case "einkaufspreise": $allowed['artikel'] = array('einkauf'); $this->app->Tpl->Add('JQUERYREADY', "$('#alteeinkaufspreise').click( function() { fnFilterColumn1( 0 ); } );"); $defaultorder = 4; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // headings $heading = array('Lieferant', 'Bezeichnung', 'Bestellnummer', 'ab', 'VPE', 'Preis', 'Währung', 'bis', 'Rahmenvert.', 'Menü'); $width = array('35%', '20%', '3%', '3%', '1%', '1%', '1%', '1%', '10%', '10%'); $findcols = array('adr.name', 'e.bezeichnunglieferant', 'e.bestellnummer', 'e.ab_menge', 'e.vpe', 'e.preis', 'e.waehrung', 'e.gueltig_bis', "if(e.rahmenvertrag='1',CONCAT(e.rahmenvertrag_menge,' / ',IFNULL((SELECT trim(SUM(bp.menge)) FROM bestellung b LEFT JOIN bestellung_position bp ON bp.bestellung=b.id WHERE b.datum >=e.rahmenvertrag_von AND b.datum <= e.rahmenvertrag_bis AND b.status!='storniert' AND e.adresse=b.adresse AND bp.artikel=e.artikel),0)),'-')", 'id'); $searchsql = array('adr.name', 'e.bezeichnunglieferant', 'e.bestellnummer', 'e.ab_menge', 'e.vpe', $this->FormatPreis('e.preis'), 'e.waehrung', "DATE_FORMAT(e.gueltig_bis,'%d.%m.%Y')", "if(e.rahmenvertrag='1',CONCAT(e.rahmenvertrag_menge,' / ',IFNULL((SELECT trim(SUM(bp.menge)) FROM bestellung b LEFT JOIN bestellung_position bp ON bp.bestellung=b.id WHERE b.datum >=e.rahmenvertrag_von AND b.datum <= e.rahmenvertrag_bis AND b.status!='storniert' AND e.adresse=b.adresse AND bp.artikel=e.artikel),0)),'-')"); $menu = ''; //$menu = ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= "" . " "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/disable.png\" border=\"0\">"; $menu .= "" . " "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= "" . " "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; // SQL statement $datecols = array(7); $numbercols = array(5); $alignright=array(4,5,6,7,8,9); $sql = "SELECT SQL_CALC_FOUND_ROWS e.id, CONCAT('',adr.name,'') as lieferant, e.bezeichnunglieferant, e.bestellnummer, ".$this->app->erp->FormatMenge('e.ab_menge')." as ab_menge ,e.vpe as vpe, ".$this->FormatPreis('e.preis')." as preis,e.waehrung as waehrung, if(e.gueltig_bis='0000-00-00','-',DATE_FORMAT(e.gueltig_bis, '%d.%m.%Y')) as gueltig_bis, if(e.rahmenvertrag='1',CONCAT(e.rahmenvertrag_menge,' / ',IFNULL((SELECT trim(SUM(bp.menge)) FROM bestellung b LEFT JOIN bestellung_position bp ON bp.bestellung=b.id WHERE b.datum >=e.rahmenvertrag_von AND b.datum <= e.rahmenvertrag_bis AND b.status!='storniert' AND e.adresse=b.adresse AND bp.artikel=e.artikel),0)),'-') as rahmenvertrag, e.id as menu FROM einkaufspreise e LEFT JOIN projekt p ON p.id=e.projekt LEFT JOIN adresse adr ON e.adresse=adr.id "; $more_data1 = $this->app->Secure->GetGET("more_data1"); // if($tmp!="")$tmp .= " AND e.geloescht='1' "; // Fester filter if ($more_data1 == 1) $where = "e.artikel='$id' AND e.geloescht='0' "; else $where = "e.artikel='$id' AND e.geloescht='0' AND (e.gueltig_bis>NOW() OR e.gueltig_bis='0000-00-00') "; // Fester filter // $where = "e.artikel='$id' AND e.geloescht='0' "; // gesamt anzahl $count = "SELECT COUNT(e.id) FROM einkaufspreise e WHERE $where"; break; case "artikel_eigenschaften": $allowed['artikel'] = array('eigenschaften'); $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $alignright = array(3,4,5); $heading = array('Eigenschaft', 'Wert', 'Einheit (Optional)', 'Menü'); $width = array('32%', '32%', '32', '8%'); $findcols = array('e.name', 'ew.wert', 'ew.einheit', 'ew.id'); $searchsql = array('e.name', 'ew.wert', 'ew.einheit'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS ew.id, e.name, CONCAT(ew.wert,'  '), ew.einheit, ew.id FROM artikeleigenschaften e INNER JOIN artikeleigenschaftenwerte ew ON e.id = ew.artikeleigenschaften"; $where = " ew.artikel='$id' "; // gesamt anzahl $count = "SELECT COUNT(ew.id) FROM artikeleigenschaften e INNER JOIN artikeleigenschaftenwerte ew ON e.id = ew.artikeleigenschaften WHERE $where "; break; break; case "eigenschaften": $allowed['artikel'] = array('eigenschaften'); $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $alignright = array(3,4,5); $heading = array('Hauptkategorie', 'Unterkategorie (Optional)', 'Wert', 'Einheit (Optional)', 'Menü'); $width = array('15%', '15%', '12%', '8%', '10%'); $findcols = array('e.hauptkategorie', 'e.unterkategorie', 'e.wert', 'e.einheit', 'e.id'); $searchsql = array('e.hauptkategorie', 'e.unterkategorie', 'e.wert', 'e.einheit'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">". " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS e.id, e.hauptkategorie, e.unterkategorie, CONCAT(e.wert,'  '), e.einheit, e.id FROM eigenschaften e "; $where = "e.artikel='$id' "; // gesamt anzahl $count = "SELECT COUNT(e.id) FROM eigenschaften e WHERE e.artikel='$id' "; break; case "verkaufspreise": $allowed['artikel'] = array('verkauf'); $this->app->Tpl->Add('JQUERYREADY', "$('#alteverkaufspreise').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nurkunde').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nurgruppe').click( function() { fnFilterColumn3( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#nurstandard').click( function() { fnFilterColumn4( 0 ); } );"); $defaultorder = 3; //Optional wenn andere Reihenfolge gewuenscht $alignright=array(3,4,5,6,7); $defaultorderdesc = 0; for ($r = 1;$r < 5;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $heading = array('Kunde/Gruppe', 'Hinweis', 'ab', 'Preis', 'Währung', 'Gültig ab', 'Gültig bis', 'Menü'); $width = array('40%', '15%', '10%', '5%', '10%', '10%','15%'); $findcols = array("if(v.art='Kunde',if(v.adresse='' or v.adresse=0,'Standardpreis',CONCAT(adr.kundennummer,' ',adr.name)),CONCAT(g.name,' ',g.kennziffer))", 'hinweis', 'v.ab_menge', 'v.preis', 'v.waehrung','gueltig_ab','gueltig_bis', 'id'); $searchsql = array("if(v.art='Kunde',if(v.adresse='' or v.adresse=0,'Standardpreis',CONCAT(adr.kundennummer,' ',adr.name)),CONCAT(g.name,' ',g.kennziffer))",'adr.name', 'g.name', $this->app->erp->FormatMenge('v.ab_menge'), 'v.waehrung',$this->FormatPreis('v.preis'),"DATE_FORMAT(v.gueltig_bis,'%d.%m.%Y')","DATE_FORMAT(v.gueltig_ab,'%d.%m.%Y')"); $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ''; //$menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= "" . " "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/disable.png\" border=\"0\">"; $menu .= "" . " "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= "" . " "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= "
"; $numbercols = array(2,3); // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS v.id, if(v.art='Kunde',if(v.adresse='' or v.adresse=0,'Standardpreis',CONCAT(adr.kundennummer,' ',adr.name)),CONCAT(g.name,' ',g.kennziffer)) as kunde, if(v.adresse > 0 OR v.gruppe >0,'','') as hinweis, ".$this->app->erp->FormatMenge('v.ab_menge')." as ab_menge, ".$this->FormatPreis('v.preis')." as preis, v.waehrung, DATE_FORMAT(v.gueltig_ab, '%d.%m.%Y') as gueltig_ab, DATE_FORMAT(v.gueltig_bis, '%d.%m.%Y') as gueltig_bis, v.id as menu FROM verkaufspreise v LEFT JOIN adresse adr ON v.adresse=adr.id LEFT JOIN gruppen g ON g.id=v.gruppe "; $more_data1 = $this->app->Secure->GetGET("more_data1"); // kunde $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2=="1") $subwhere[] = " v.adresse > 0 AND v.gruppe <= 0 "; //Gruppe $more_data3 = $this->app->Secure->GetGET("more_data3"); if($more_data3=="1") $subwhere[] = " v.gruppe > 0 AND v.adresse<=0 "; //listenpreise $more_data4 = $this->app->Secure->GetGET("more_data4"); if($more_data4=="1") $subwhere[] = " v.adresse = 0 AND v.gruppe=0 "; if (!is_null($subwhere)) { for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; } if ($more_data1 == 1) $where = "v.artikel='$id' AND v.geloescht = 0 ".$tmp; else $where = "v.artikel='$id' AND v.geloescht='0' AND (v.gueltig_bis>NOW() OR v.gueltig_bis='0000-00-00') ".$tmp; // gesamt anzahl $count = "SELECT COUNT(v.id) FROM verkaufspreise v WHERE $where"; break; case "projektzeiterfassung": $allowed['projekt'] = array('zeit', 'arbeitspaket'); $this->app->Tpl->Add('JQUERYREADY', "$('#altearbeitspaket').click( function() { fnFilterColumn1( 0 ); } );"); for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // headings $heading = array('','', 'Art', 'Bezeichnung', 'Verantwortlicher', 'Abgabe', 'SOLL', 'IST','Status','Monitor', 'Menü'); $width = array('1%', '5%', '25%', '25%', '3%', '8%', '3%','1%', '10%','5%',); $findcols = array('open', 'art', 'bezeichnung', 'name', 'abgabedatum', 'geplant', 'gebucht','abgeschlossen', 'status', 'id'); $searchsql = array('adr.name', 'ap.aufgabe', 'ap.abgabedatum', 'ap.status',"if(ap.art='material' OR ap.kosten_geplant!=0,CONCAT(FORMAT(ap.kosten_geplant,2{$extended_mysql55}),' €'),CONCAT(ap.zeit_geplant,' h'))","CONCAT((SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von)))/3600,2) FROM zeiterfassung z WHERE z.arbeitspaket=ap.id),' h')"); $id = $this->app->Secure->GetGET("id"); $alignright = array(6,7); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . "" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS ap.id, CONCAT('') as auswahl, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, UCASE(ap.art) as art, ap.aufgabe as 'Bezeichnung', adr.name as name, ap.abgabedatum as abgabedatum, if(ap.art='material' OR ap.kosten_geplant!=0,CONCAT(FORMAT(ap.kosten_geplant,2{$extended_mysql55}),' €'),CONCAT(ap.zeit_geplant,' h')) as geplant, CONCAT((SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von)))/3600,2) FROM zeiterfassung z WHERE z.arbeitspaket=ap.id),' h') as gebucht, ap.status as status, '' as monitor2, ap.id FROM arbeitspaket ap LEFT JOIN adresse adr ON ap.adresse=adr.id "; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " AND ap.status='abgerechnet' "; else $subwhere[] = " AND ap.status!='abgerechnet' "; for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " " . $subwhere[$j]; // Fester filter $where = "ap.projekt='$id' AND (ap.geloescht='0' OR ap.geloescht IS NULL) $tmp"; // gesamt anzahl $count = "SELECT COUNT(ap.id) FROM arbeitspaket ap WHERE $where"; $menucol = 10; $moreinfoaction = 'arbeitspaket'; // $moreinfo = true; $moreinfo = true; break; case "zeiterfassungmitarbeiter": $allowed['adresse'] = array('zeiterfassung'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#offen').click( function() { fnFilterColumn1( 0 ); } );"); //$this->app->Tpl->Add('JQUERYREADY',"$('#abrechnung').click( function() { fnFilterColumn2( 0 ); } );"); for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // ENDE EXTRA checkboxen // headings //$heading = array('','A','Datum','Von','Bis','Dauer','Mitarbeiter','Tätigkeit','Projekt','Menü'); $heading = array('', 'Datum', 'Von', 'Bis', 'Dauer', 'Mitarbeiter', 'Tätigkeit', 'Projekt', 'Menü'); //$width = array('1%','1%','1%','1%','1%','5%','20%','40%','10%','1%'); $width = array('1%', '1%', '1%', '1%', '5%', '20%', '40%', '10%', '1%'); //$findcols = array('open','Auswahl','z.von','von','bis','Dauer','Mitarbeiter','id'); $findcols = array('open', 'z.von', 'z.von', 'z.bis', "CONCAT(LPAD(HOUR(TIMEDIFF(z.bis, z.von)),2,'0'),':',LPAD(MINUTE(TIMEDIFF(z.bis, z.von)),2,'0'))", 'a.name',"if(z.adresse_abrechnung!=0,CONCAT('Kunde: ',b.name,' (',b.kundennummer,')
',z.aufgabe),z.aufgabe)",'p.abkuerzung','z.id'); $searchsql = array('z.id', "DATE_FORMAT(z.bis, '%d.%m.%Y')", "DATE_FORMAT(z.von,'%H:%i')", "DATE_FORMAT(z.bis,'%H:%i')", "CONCAT(LPAD(HOUR(TIMEDIFF(z.bis, z.von)),2,'0'),':',LPAD(MINUTE(TIMEDIFF(z.bis, z.von)),2,'0'))", 'z.aufgabe', 'a.name', 'p.abkuerzung'); $defaultorder = 9; $defaultorderdesc = 1; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; //CONCAT('') as auswahl, //$menucol=9; $datecols = array(1); $menucol = 8; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS z.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, DATE_FORMAT(z.bis, GET_FORMAT(DATE,'EUR')) AS Datum, DATE_FORMAT(z.von,'%H:%i') as von, DATE_FORMAT(z.bis,'%H:%i') as bis, CONCAT(LPAD(HOUR(TIMEDIFF(z.bis, z.von)),2,'0'),':',LPAD(MINUTE(TIMEDIFF(z.bis, z.von)),2,'0')) AS Dauer, a.name as Mitarbeiter, if(z.adresse_abrechnung!=0,CONCAT('Kunde: ',b.name,' (',b.kundennummer,')
',z.aufgabe),z.aufgabe) as Taetigkeit, p.abkuerzung, z.id FROM zeiterfassung z LEFT JOIN adresse a ON a.id=z.adresse LEFT JOIN adresse b ON b.id=z.adresse_abrechnung LEFT JOIN projekt p ON p.id=z.projekt LEFT JOIN arbeitspaket ap ON z.arbeitspaket=ap.id"; // Fester filter // START EXTRA more $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) $subwhere[] = " z.abrechnen='1' AND z.abgerechnet!='1' "; // $more_data2 = $this->app->Secure->GetGET("more_data2"); if($more_data2==1) $subwhere[] = " a.datum=CURDATE() AND a.status='freigegeben'"; for ($j = 0;$j < (empty($subwhere)?0:count($subwhere));$j++) $tmp.= " AND " . $subwhere[$j]; $where = " z.id!='' AND z.adresse='" . $id . "' $tmp"; $count = "SELECT COUNT(z.id) FROM zeiterfassung z WHERE z.adresse='" . $id . "'"; $moreinfo = true; break; // Administration-tables: case 'permissionhistory': $allowed['user'] = array('list'); $allowed['benutzer'] = array('list'); $heading = array('Datum','Erhalten von','Erteilt für', 'Modul', 'Action', 'Recht',''); $width = array('10%','10%' ,'10%', '10%', '10%', '10%','1%'); $findcols = array("DATE_FORMAT(ph.timeofpermission,'%d.%m.%Y %H:%i:%s')","IF(granter.username<>ph.granting_user_name,CONCAT(granter.username,' (ehemals ',ph.granting_user_name,')'),ph.granting_user_name)" , "IF(receiver.username<>ph.receiving_user_name,CONCAT(receiver.username,' (ehemals ',ph.receiving_user_name,')'),ph.receiving_user_name)", 'ph.module', 'ph.action', "IF(ph.permission=1,'aktiviert','deaktiviert')","ph.id" ); $searchsql = $findcols; $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $menu = ''; $sql = "SELECT SQL_CALC_FOUND_ROWS ph.id, DATE_FORMAT(ph.timeofpermission,'%d.%m.%Y %H:%i:%s') AS timeofpermission, IF(granter.username<>ph.granting_user_name,CONCAT(granter.username,' (ehemals ',ph.granting_user_name,')'),ph.granting_user_name) AS granter, IF(receiver.username<>ph.receiving_user_name,CONCAT(receiver.username,' (ehemals ',ph.receiving_user_name,')'),ph.receiving_user_name) AS receiver, ph.module AS module, ph.action AS action, IF(ph.permission=1,'aktiviert','deaktiviert') AS permission, ph.id FROM permissionhistory AS ph JOIN user AS granter ON ph.granting_user_id = granter.id JOIN user AS receiver ON ph.receiving_user_id = receiver.id"; $where = "1"; // z.abrechnen=1 AND z.abgerechnet!=1 AND a.id > 0 "; $count = "SELECT COUNT(ph.id) FROM permissionhistory AS ph"; break; case "userlist": $allowed['user'] = array('list'); $allowed['benutzer'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Login','Typ', 'Beschreibung', 'Aktiv', 'Extern', 'Anzahl Rechte', 'Hardware', 'Menü'); $width = array('30%','10%' ,'20%', '20%', '10%', '10%', '10%', '10%'); $findcols = array('u.username','u.type' ,'a.name', "if(u.activ,'ja','-')", "if(u.externlogin,'erlaubt','-')", "IF(u.type = 'standard', (SELECT COUNT(ur.id) FROM userrights ur WHERE ur.user = u.id), 'alle')", 'u.hwtoken', 'u.id'); //'a.name','a.kundennummer',"SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von)))/3600",'id'); $searchsql = array('u.username','u.type', 'a.name', 'u.activ', 'u.externlogin', 'u.hwtoken', "IF(u.type = 'standard', (SELECT COUNT(ur.id) FROM userrights ur WHERE ur.user = u.id), 'alle')"); $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\"> " . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS u.id, u.username as login, u.type, a.name as beschreibung, if(u.activ,'ja','-') as aktiv, if(u.externlogin,'erlaubt','-') as extern, IF(u.type = 'standard' OR u.type = 'lightuser', (SELECT COUNT(ur.id) FROM userrights ur WHERE ur.user = u.id), 'alle') as anzahlrechte, if(u.hwtoken=3,'WaWision OTP',if(u.hwtoken=1,'mOTP',if(u.hwtoken=4,'Zeiterfassung',''))) as 'Hardware', u.id FROM user u LEFT JOIN adresse a ON a.id=u.adresse "; $where = ""; // z.abrechnen=1 AND z.abgerechnet!=1 AND a.id > 0 "; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM user"; break; case "usertemplatelist": $allowed['user'] = array('list'); $allowed['benutzer'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings // $heading = array('Login','Bezeichnung', 'Beschreibung', 'Aktiv', 'Extern', 'Anzahl Rechte', 'Hardware', 'Menü'); $heading = array('Bezeichnung', 'Beschreibung', 'Menü'); $width = array('20%' ,'50%', '10%'); // $findcols = array('u.username','u.type' ,'a.name', "if(u.activ,'ja','-')", "if(u.externlogin,'erlaubt','-')", "IF(u.type = 'standard', (SELECT COUNT(ur.id) FROM userrights ur WHERE ur.user = u.id), 'alle')", 'u.hwtoken', 'u.id'); //'a.name','a.kundennummer',"SUM(TIME_TO_SEC(TIMEDIFF(z.bis, z.von)))/3600",'id'); $findcols = array('id','bezeichnung' ,'beschreibung'); $searchsql = array('id','bezeichnung', 'beschreibung'); $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\"> " . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement // $sql = "SELECT SQL_CALC_FOUND_ROWS u.id, u.username as login, u.type, a.name as beschreibung, if(u.activ,'ja','-') as aktiv, if(u.externlogin,'erlaubt','-') as extern, IF(u.type = 'standard' OR u.type = 'lightuser', (SELECT COUNT(ur.id) FROM userrights ur WHERE ur.user = u.id), 'alle') as anzahlrechte, $sql = "SELECT SQL_CALC_FOUND_ROWS id, bezeichnung, beschreibung, id FROM uservorlage"; $where = ""; // z.abrechnen=1 AND z.abgerechnet!=1 AND a.id > 0 "; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM user"; break; case "geschaeftsbrief_vorlagenlist": $allowed['geschaeftsbrief_vorlagen'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Typ', 'Betreff', 'Projekt', 'Sprache', 'Menü'); $width = array('10%', '50%', '20%', '10%', '10%'); $findcols = array('g.subjekt', 'g.betreff', 'p.abkuerzung', 'g.sprache', 'g.id'); $searchsql = array('g.subjekt', 'g.betreff', 'p.abkuerzung', 'g.sprache'); $menucol = 4; $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ''; //$menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""." "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= ""." "; $menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">"; $menu .= ""; $menu .= "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS g.id, g.subjekt as typ, g.betreff, if(g.projekt<=0,'Standard Vorlage / ohne Projekt',p.abkuerzung) as projekt, g.sprache, g.id FROM geschaeftsbrief_vorlagen g LEFT JOIN projekt p ON g.projekt=p.id "; $firma = $this->app->User->GetFirma(); if($firma == 0)$firma = 1; $where = " (g.firma='" . $firma . "' OR g.firma = 0) " . $this->app->erp->ProjektRechte(); //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM geschaeftsbrief_vorlagen"; break; case "artikeleinheitlist": $allowed['artikeleinheit'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Einheit', 'Menü'); $width = array('40%', '20%'); $findcols = array('a.einheit_de', 'a.id'); $searchsql = array('a.einheit_de'); $defaultorder = 1; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.einheit_de as einheit, a.id FROM artikeleinheit a "; $where = ""; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM artikeleinheit"; break; case "projekt_mitglieder": $allowed['projekt'] = array('mitglieder'); $id = (int)$this->app->Secure->GetGET('id'); // headings $heading = array('Kd-Nr.','Lf-Nr.','Mitarbeiter-Nr.', 'Name','Rolle','von','Gruppe','Land', 'PLZ', 'Ort', 'E-Mail', 'Projekt', 'Menü'); $width = array('5%', '5%', '5%','15%', '5%', '5%', '5%','2%','5%','5%', '10%', '10%', '3%'); $findcols = array('a.kundennummer','a.lieferantennummer','a.mitarbeiternummer', 'a.name','a2.subjekt','a2.objekt',"(SELECT g.name FROM gruppen g WHERE g.id=a2.parameter)", 'a.land', 'a.plz', 'ort', 'email', 'p.abkuerzung', 'a2.id'); $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc = 0; $searchsql = array('a.ort', 'a.name', 'p.abkuerzung', 'a.land', 'a.plz', 'a.email', 'a.kundennummer', 'a.lieferantennummer', 'a.ansprechpartner','a.mitarbeiternummer','a2.subjekt','a2.objekt'); $menu = "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, CONCAT(a.kundennummer,if(a.verbandsnummer!='',CONCAT(' / ',a.verbandsnummer),'')),a.lieferantennummer,a.mitarbeiternummer, a.name as name, a2.subjekt,a2.objekt, if(a2.objekt='Gruppe',(SELECT g.name FROM gruppen g WHERE g.id=a2.parameter LIMIT 1),''), a.land as land, a.plz as plz, a.ort as ort, a.email as email, p.abkuerzung as projekt, a2.id as menu FROM adresse a INNER JOIN adresse_rolle a2 ON a2.adresse=a.id INNER JOIN projekt p ON p.id=a2.projekt "; $groupby = ""; $where = " p.id='$id' AND (a2.bis='0000-00-00' OR a2.bis >= date(NOW())) AND a2.objekt like 'Projekt' AND a.geloescht <> 1 "; $count = "SELECT count(a.id) FROM adresse a INNER JOIN adresse_rolle a2 ON a2.adresse=a.id INNER JOIN projekt p ON p.id=a.projekt OR p.id = a2.projekt WHERE $where"; break; case "adresse_typlist": $allowed['adresse_typ'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Bezeichnung', 'Typ','Netto', 'Projekt', 'Menü'); $width = array('40%', '20%','10%', '20%', '5%'); $findcols = array('k.bezeichnung', 'k.type','k.netto', 'p.abkuerzung', 'k.id'); $searchsql = array('k.bezeichnung', 'k.type','p.abkuerzung'); $defaultorder = 2; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS k.id, ".$this->Stroke("!k.aktiv", "k.bezeichnung").",".$this->Stroke("!k.aktiv", "k.type")." as typ, if(k.netto=1,'ja','-') as netto, if(k.projekt > 0,p.abkuerzung,''), k.id FROM adresse_typ k LEFT JOIN projekt p ON p.id=k.projekt"; $where = " k.geloescht!=1 ".$this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(k.id) FROM adresse_typ k WHERE k.id >0 ".$this->app->erp->ProjektRechte(); break; case "zahlungsweisenlist": $allowed['zahlungsweisen'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Bezeichnung', 'Typ', 'Projekt','Automatisch bezahlt', 'Menü'); $width = array('40%', '20%', '20%','10%', '5%'); $findcols = array('k.bezeichnung', 'k.type', 'p.abkuerzung','k.automatischbezahlt', 'k.id'); $searchsql = array('k.bezeichnung', 'k.type','p.abkuerzung'); $defaultorder = 2; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS k.id, ".$this->Stroke("!k.aktiv", "k.bezeichnung").",".$this->Stroke("!k.aktiv", "k.type")." as typ, if(k.projekt > 0,p.abkuerzung,''), if(k.automatischbezahlt,'Ja',''), k.id FROM zahlungsweisen k LEFT JOIN projekt p ON p.id=k.projekt"; $where = " k.geloescht!=1 ".$this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(k.id) FROM zahlungsweisen k WHERE k.id >0 ".$this->app->erp->ProjektRechte(); break; case "versandartenlist": $allowed['versandarten'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Bezeichnung', 'Typ','Modul', 'Projekt', 'Menü'); $width = array('40%', '12%','12%', '12%', '5%'); $findcols = array('k.bezeichnung', 'k.type','k.modul', 'p.abkuerzung', 'k.id'); $searchsql = array('k.bezeichnung', 'k.type','k.modul','p.abkuerzung'); $defaultorder = 2; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS k.id, ".$this->Stroke("!k.aktiv", "k.bezeichnung").",".$this->Stroke("!k.aktiv", "k.type")." as typ, ".$this->Stroke("!k.aktiv", "k.modul")." as modul, if(k.projekt > 0,p.abkuerzung,''), k.id FROM versandarten k LEFT JOIN projekt p ON p.id=k.projekt"; $where = " k.geloescht!=1 ".$this->app->erp->ProjektRechte(); // gesamt anzahl $count = "SELECT COUNT(k.id) FROM versandarten k WHERE k.id >0 ".$this->app->erp->ProjektRechte(); break; case "artikeloptionengruppelist": // headings $allowed['artikeloptionengruppe'] = array('list'); $heading = array('Name', 'Projekt','Artikel', 'Menü'); $width = array('20%', '30%','30%', '10%'); $findcols = array('k.name', 'p.abkuerzung','a.nummer', 'k.id'); $searchsql = array('k.name'); $defaultorder = 1; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS k.id, k.name,p.abkuerzung,a.nummer, k.id FROM artikeloptionengruppe k LEFT JOIN projekt p ON p.id=k.projekt left join artikel a on a.id = k.artikel "; $where = " k.geloescht!=1 "; $count = "SELECT COUNT(id) FROM artikeloptionengruppe WHERE geloescht!=1"; break; case "etikettenlist": $allowed['etiketten'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name', 'Verwenden als', 'Format','Menü'); $width = array('20%', '40%', '30%','5%'); $findcols = array('k.name', 'k.verwendenals',"if(k.manuell,CONCAT(k.labelbreite,'x',k.labelhoehe,'x',labelabstand),k.format)", 'k.id'); $searchsql = array('k.name', 'k.verwendenals','k.format',"if(k.manuell,CONCAT(k.labelbreite,'x',k.labelhoehe,'x',labelabstand),k.format)"); $defaultorder = 1; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS k.id, k.name,k.verwendenals, if(k.manuell,CONCAT(k.labelbreite,'x',k.labelhoehe,'x',labelabstand),k.format), k.id FROM etiketten k "; $where = ""; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM etiketten"; break; case "reisekostenartlist": $allowed['reisekostenart'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Numer', 'Beschreibung', 'Menü'); $width = array('10%', '30%', '10%'); $findcols = array('r.nummer', 'r.beschreibung', 'r.id'); $searchsql = array('r.nummer', 'r.beschreibung'); $defaultorder = 1; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS r.id, r.nummer, r.beschreibung, r.id FROM reisekostenart r "; $where = ""; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM reisekostenart"; break; case "onlineshopslist": $allowed['onlineshops'] = array('list'); $allowed['einstellungen'] = array('category'); $isSettingAction = $this->app->Secure->GetGET('module') === 'einstellungen' || $this->app->Secure->GetGET('smodule') === 'einstellungen'; if($isSettingAction) { $maxrows = 10; } // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Shop-ID', 'Bezeichnung', 'Modul' , 'Url', 'Aktiv', 'Automatisches Abholen', 'Projekt', 'Menü'); $width = array('5%', '10%', '15%', '20%', '10%', '10%', '10%', '1%'); $findcols = array('s.id', 's.bezeichnung', 'modulename', "if(s.shoptyp = 'intern','Intern',if(s.shoptyp = 'custom','Custom',s.url))", "if(s.aktiv,'ja','nein')", "if(s.cronjobaktiv = 1,if(s.direktimport = 1, 'ja (direktimport)','ja'),'nein')", 'p.abkuerzung', 's.id'); $searchsql = array('s.id', 's.bezeichnung', 'modulename', "if(s.shoptyp = 'intern','Intern',if(s.shoptyp = 'custom','Custom',s.url))", 's.url', 's.aktiv', 'p.abkuerzung'); $defaultorder = 1; $defaultorderdesc = 0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; if(!$isSettingAction) { $menu .= " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; } $menu .= "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, s.id, s.bezeichnung, IF(modulename <> '', modulename, 'extern') AS modulename, if(s.shoptyp = 'intern','Intern',if(s.shoptyp = 'custom','Custom',s.url)), if(s.aktiv,'ja','nein') as aktiv, if(s.cronjobaktiv = 1,if(s.direktimport = 1, 'ja (direktimport)','ja'),'nein'), p.abkuerzung, s.id FROM shopexport s LEFT JOIN projekt p ON s.projekt=p.id"; $where = "s.id > 0 " . $this->app->erp->ProjektRechte(); //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(s.id) FROM shopexport s LEFT JOIN projekt p ON s.projekt=p.id WHERE ".$where; break; case "exportvorlage": $allowed['exportvorlage'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name', 'Ziel', 'Menü'); $width = array('30%', '30%', '10%'); $findcols = array('i.bezeichnung', 'i.ziel', 'i.id'); $searchsql = array('i.ziel', 'i.bezeichnung'); // $defaultorder=2; // $defaultorderdesc=0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/xls.png\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS i.id, i.bezeichnung, i.ziel, i.id FROM exportvorlage i "; $where = ""; //d.firma='".$this->app->User->GetFirma()."'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM exportvorlage"; break; case "importvorlage": $allowed['importvorlage'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name', 'Ziel', 'Menü'); $width = array('30%', '30%', '10%'); $findcols = array('i.bezeichnung', 'i.ziel', 'i.id'); $searchsql = array('i.ziel', 'i.bezeichnung'); // $defaultorder=2; // $defaultorderdesc=0; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">" . " " . ""."app->Conf->WFconf['defaulttheme']}/images/streamline-icon-share-3-alternate.svg\" border=\"0\">". " ". ""."app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\">". " ". "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " " . "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS i.id, i.bezeichnung, i.ziel, i.id FROM importvorlage i "; $where = ""; //d.firma='".$this->app->User->GetFirma()."'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM importvorlage"; break; case "adresse_abo": $allowed['adresse'] = array('abo'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Bezeichnung', 'Nummer', 'abgerechnet', 'Preis','Menge','Art','Menü'); $width = array('30%', '10%', '10%', '10%', '10%','10%','10%'); $findcols = array('aa.bezeichnung', 'art.nummer', 'aa.abgerechnetbis', 'aa.preis','aa.menge','art', 'aa.id'); $searchsql = array('aa.bezeichnung', 'art.nummer', "DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y')"); //$defaultorder = 2; // sortiert nach dem oeffnen nach spalte 2 //$defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS aa.id, aa.bezeichnung,art.nummer, DATE_FORMAT(aa.abgerechnetbis,'%d.%m.%Y') as abgerechnet, aa.preis as preis, aa.menge as menge, if(aa.wiederholend=1 OR aa.preisart='monat' OR aa.preisart='jahr','wdh','einmalig') as art, aa.id as id FROM abrechnungsartikel aa LEFT JOIN artikel art ON art.id=aa.artikel"; $where = " aa.adresse='" . $id . "'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM abrechnungsartikel WHERE adresse='$id'"; break; case "pinwand_list": $allowed['drucker'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name', 'Erstellt von', 'Menü'); $width = array('30%', '30%', '10%'); $findcols = array('p.name', 'a.name', 'p.id'); $searchsql = array('p.name', 'a.name'); // $defaultorder = 2; // sortiert nach dem oeffnen nach spalte 2 // $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS p.id, p.name, a.name, p.id FROM pinwand p LEFT JOIN user u ON p.user=u.id LEFT JOIN adresse a ON a.id=u.adresse"; if ($this->app->User->GetType() != "admin") { $where = "p.user='" . $this->app->User->GetID() . "'"; $where = ""; $count = "SELECT COUNT(p.id) FROM pinwand p AND ".$where; } else { $where = ""; $count = "SELECT COUNT(p.id) FROM pinwand p "; } //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl break; case "artikel_eigenschaftensuche": $allowed['artikel'] = array('eigenschaftensuche'); $heading = array('Artikel-Nr.', 'Karat', 'Schliff', 'Reinheit','Labor','GA-Nr.','Menü'); $width = array('30%', '20%', '20%','10%','10%','10%', '10%'); $findcols = array('ae.nummer', 'ae.karat', 'ae.schliff', 'ae.reinheit','ae.labor','ae.ganr','ae.id'); $searchsql = array('ae.nummer', "FORMAT(ae.karat,2{$extended_mysql55})",'ae.schliff','ae.reinheit','ae.labor','ae.ganr'); $searchsql_dir = array('LR', 'R','LR','LR','LR','LR'); $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . " 
"; $alignright=array('2'); // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS ae.id, ae.nummer, FORMAT(ae.karat,2{$extended_mysql55}), ae.schliff, ae.reinheit,ae.labor,ae.ganr,ae.id FROM artikel_eigenschaftensuche ae "; //$where = "d.firma='" . $this->app->User->GetFirma() . "'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM artikel_eigenschaftensuche"; break; case "adresse_brief": $allowed['adresse'] = array('brief'); // START EXTRA checkboxen $this->app->Tpl->Add('JQUERYREADY', "$('#brief').change( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#email').change( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#telefon').change( function() { fnFilterColumn3( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#notiz').change( function() { fnFilterColumn4( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#ticket').change( function() { fnFilterColumn5( 0 ); } );"); //$this->app->Tpl->Add('JQUERYREADY', "$('#versendete').click( function() { fnFilterColumn6( 0 ); } );"); //$this->app->Tpl->Add('JQUERYREADY', "$('#nichtversendete').click( function() { fnFilterColumn7( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "fnFilterColumn8( 0 );"); $this->app->Tpl->Add('JQUERYREADY', "$('#belege').click( function() { fnFilterColumn9( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#wiedervorlage').change( function() { fnFilterColumn10( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#kalender').change( function() { fnFilterColumn11( 0 ); } );"); for ($r = 1;$r < 12;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $heading = array('','Datum', 'Titel','Ansprechpartner','Projekt','Bearbeiter', 'Art', 'Gesendet','', ''); $width = array('1%','15%', '30%','10%','15%', '15%', '10%', '10%','1%', '1%'); $findcols = array('a.datum','a.datum', 'if(ifnull(a.internebezeichnung,\'\') = \'\', a.title, concat(a.title,\'
\',a.internebezeichnung,\'\'))','a.ansprechpartner','a.abkuerzung', 'a.bearbeiter', 'a.art','a.gesendet','a.did','a.did'); $searchsql = array('a.datum', 'a.title','a.ansprechpartner','a.abkuerzung', 'a.bearbeiter','a.art','a.suchtext','a.internebezeichnung', 'a.gesendet'); $defaultorder = 2; // sortiert nach dem oeffnen nach spalte 2 $defaultorderdesc = 1; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) //index.php?module=adresse&action=korreseditpopup&id=%value% popup $menu = ''; $menu .= ''; $menu .= ''; $menu .= ''; //$menu .= ''; $menu .= ''; $menu .= '
'; $menu .= '%value% '; $menu .= " "; $menu .= ' '; $menu .= ''; // $menu .= ' '; //$menu .= '
'; // $menu = 'OPEN EDIT'; #$menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . $einfuegen . " 
"; $cmd = $this->app->Secure->GetGET("cmd"); $id = $this->app->Secure->GetGET("id"); if($cmd=="adresse_brief" && $id > 0) $adresseId = $id; else $adresseId = $this->app->User->GetParameter('adresse_brief_adresseId'); $sql = ' SELECT SQL_CALC_FOUND_ROWS a.id, a.open, DATE_FORMAT(a.datum, "%d.%m.%Y %H:%i"), if(ifnull(a.internebezeichnung,\'\') = \'\', a.title, concat(a.title,\'
\',a.internebezeichnung,\'\')), a.ansprechpartner, a.abkuerzung, a.bearbeiter, a.art, a.gesendet, a.pdf, a.did FROM ( ( SELECT d.id,"app->Conf->WFconf['defaulttheme'] . '/images/details_open.png class=details>" as open, CONCAT(DATE_FORMAT(d.datum, "%Y-%m-%d"), " ", IF(d.uhrzeit IS NULL OR DATE_FORMAT(d.uhrzeit, "%H:%i")="00:00", "", DATE_FORMAT(d.uhrzeit, "%H:%i")) ) as datum, d.betreff as title,if(d.typ = \'email\',if(d.ansprechpartner <> \'\',d.ansprechpartner,d.email_an),d.ansprechpartner) as ansprechpartner, p.abkuerzung as abkuerzung, if(bearbeiter!="",bearbeiter,a2.name) as bearbeiter, CONCAT(UCASE(LEFT(d.typ, 1)), SUBSTRING(d.typ, 2)) as art, CONCAT(IF(d.sent = 1, "JA", "NEIN"),"") as gesendet, concat("app->Conf->WFconf['defaulttheme'] . '/images/pdf.svg>") as pdf, concat("1","-",d.id) as did,d.content as suchtext,d.internebezeichnung FROM dokumente d LEFT JOIN projekt p ON p.id=d.projekt LEFT JOIN adresse a2 ON a2.id=adresse_from WHERE adresse_to = ' . $adresseId . ' ) UNION ALL ( SELECT ds.id,"app->Conf->WFconf['defaulttheme'] . '/images/details_open.png class=details>" as open, CONCAT(DATE_FORMAT(ds.zeit, "%Y-%m-%d")," ", IF(DATE_FORMAT(ds.zeit, "%H:%i")="00:00", "", DATE_FORMAT(ds.zeit, "%H:%i"))) as datum, ds.betreff as title,ds.ansprechpartner , p.abkuerzung as abkuerzung, ds.bearbeiter as bearbeiter, CONCAT(UCASE(LEFT(ds.dokument, 1)), SUBSTRING(ds.dokument, 2),"index.php?module=",ds.dokument,"&action=edit&id=",ds.parameter,"") as art, CONCAT(IF(ds.versendet = 1, "JA", "NEIN"),"") as gesendet, concat("app->Conf->WFconf['defaulttheme'] . '/images/pdf.svg>") as pdf, concat("2","-",ds.id) as did,ds.text as suchtext, ifnull(d1.internebezeichnung, ifnull(d2.internebezeichnung, ifnull(d3.internebezeichnung, ifnull(d4.internebezeichnung, ifnull(d5.internebezeichnung, ifnull(d6.internebezeichnung, \'\')))))) as internebezeichnung FROM dokumente_send ds LEFT JOIN lieferschein d1 ON ds.parameter = d1.id AND ds.dokument = \'lieferschein\' LEFT JOIN auftrag d2 ON ds.parameter = d2.id AND ds.dokument = \'auftrag\' LEFT JOIN rechnung d3 ON ds.parameter = d3.id AND ds.dokument = \'rechnung\' LEFT JOIN gutschrift d4 ON ds.parameter = d4.id AND ds.dokument = \'gutschrift\' LEFT JOIN angebot d5 ON ds.parameter = d5.id AND ds.dokument = \'angebot\' LEFT JOIN bestellung d6 ON ds.parameter = d6.id AND ds.dokument = \'bestellung\' LEFT JOIN projekt p ON p.id=ds.projekt WHERE ds.adresse = ' . $adresseId . ' ) UNION ALL ( SELECT k.id,"app->Conf->WFconf['defaulttheme'] . '/images/details_open.png class=details>" as open, CONCAT(DATE_FORMAT(k.von, "%Y-%m-%d")," ", IF(DATE_FORMAT(k.von, "%H:%i")="00:00", "", DATE_FORMAT(k.von, "%H:%i"))) as datum, k.bezeichnung COLLATE utf8_general_ci as title,\'\' as ansprechpartner, p.abkuerzung as abkuerzung, a2.name COLLATE utf8_general_ci as bearbeiter, "Kalender" as art, CONCAT("") as gesendet, "" as pdf, concat("6","-",k.id) as did,k.beschreibung COLLATE utf8_general_ci as suchtext,\'\' as internebezeichnung FROM kalender_event k LEFT JOIN adresse a2 ON k.adresseintern = a2.id LEFT JOIN projekt p ON p.id=k.projekt WHERE k.adresse = ' . $adresseId . ' ) '; if($this->app->erp->RechteVorhanden('wiedervorlage','list')){ if($this->app->erp->GetKonfiguration('adresse_crm_collateerror') && method_exists($this,'ConvertLatin1UTF')) { $sql .= ' UNION ALL ( SELECT w.id,"app->Conf->WFconf['defaulttheme'] . '/images/details_open.png class=details>" as open, CONCAT(DATE_FORMAT(datum_erinnerung, "%Y-%m-%d"), " ", IF(zeit_erinnerung IS NULL OR DATE_FORMAT(zeit_erinnerung, "%H:%i")="00:00", "", DATE_FORMAT(zeit_erinnerung, "%H:%i")) ) as datum, '. $this->ConvertLatin1UTF('w.bezeichnung').' as title,\'\' as ansprechpartner, '. $this->ConvertLatin1UTF('p.abkuerzung').' as abkuerzung, adr.name COLLATE utf8_general_ci as bearbeiter, CONCAT("Wiedervorlage") as art, CONCAT("") as gesendet, "" as pdf, concat("5","-",w.id) as did,'. $this->ConvertLatin1UTF('w.beschreibung').' as suchtext,\'\' as internebezeichnung FROM wiedervorlage w left join adresse adr on w.bearbeiter = adr.id LEFT JOIN projekt p ON p.id=w.projekt WHERE w.adresse = ' . $adresseId . ' )'; } else { $sql .= ' UNION ALL ( SELECT w.id, "app->Conf->WFconf['defaulttheme'] . '/images/details_open.png class=details>" as open, CONCAT(DATE_FORMAT(datum_erinnerung, "%Y-%m-%d"), " ", IF(zeit_erinnerung IS NULL OR DATE_FORMAT(zeit_erinnerung, "%H:%i")="00:00", "", DATE_FORMAT(zeit_erinnerung, "%H:%i")) ) as datum, w.bezeichnung COLLATE utf8_general_ci as title, \'\' as ansprechpartner, p.abkuerzung COLLATE utf8_general_ci as abkuerzung, adr.name COLLATE utf8_general_ci as bearbeiter, CONCAT("Wiedervorlage") as art, CONCAT("") as gesendet, "" as pdf, concat("5","-",w.id) as did, w.beschreibung COLLATE utf8_general_ci as suchtext, \'\' as internebezeichnung FROM wiedervorlage w left join adresse adr on w.bearbeiter = adr.id LEFT JOIN projekt p ON p.id=w.projekt WHERE w.adresse = ' . $adresseId . ' )'; } } // RechteVorhanden wiedervorlage $sql .= 'UNION ALL ( SELECT t.id, "app->Conf->WFconf['defaulttheme'] . '/images/details_open.png class=details>" as open, tn.zeit, tn.betreff, ifnull((SELECT name FROM ansprechpartner ap WHERE ap.adresse = a.id AND ap.email = tn.mail LIMIT 1),tn.mail) as ansprechpartner, p.abkuerzung, tn.verfasser, \'Ticketnachricht\' as art, CONCAT(IF(tn.versendet = 1, "JA", "NEIN"),"") as gesendet, \'\' as PDF, concat("4","-",tn.id) as did, CONCAT(tn.text,t.notiz) as suchtext, \'\' as intern FROM ticket_nachricht tn INNER JOIN ticket t ON tn.ticket = t.schluessel INNER JOIN adresse a ON t.adresse = a.id LEFT JOIN projekt p on t.projekt = p.id WHERE t.adresse = '.$adresseId.' AND !(tn.versendet = 1 AND tn.zeitausgang IS NULL) ) '; $sql .= ') a '; $moreinfo = true; $doppelteids = true; $moreinfoaction = 'brief'; $menucol = 9; $more_data1 = $this->app->Secure->GetGET("more_data1"); $more_data2 = $this->app->Secure->GetGET("more_data2"); $more_data3 = $this->app->Secure->GetGET("more_data3"); $more_data4 = $this->app->Secure->GetGET("more_data4"); $more_data5 = $this->app->Secure->GetGET("more_data5"); $more_data6 = $this->app->Secure->GetGET("more_data6"); $more_data7 = $this->app->Secure->GetGET("more_data7"); $more_data9 = $this->app->Secure->GetGET("more_data9"); $more_data10 = $this->app->Secure->GetGET("more_data10"); $more_data11 = $this->app->Secure->GetGET("more_data11"); if ($more_data1 == 1) { $subWhereConditions[] = 'art LIKE "brief%"'; } if ($more_data2 == 1) { $subWhereConditions[] = 'art LIKE "email"'; } if ($more_data3 == 1) { $subWhereConditions[] = 'art LIKE "telefon"'; } if ($more_data4 == 1) { $subWhereConditions[] = 'art LIKE "notiz"'; } if ($more_data5 == 1) { $subWhereConditions[] = 'art LIKE "ticket%"'; } if ($more_data10 == 1) { $subWhereConditions[] = 'art LIKE "wiedervorlage"'; } if ($more_data9 == 1) { $subWhereConditions[] = '(art LIKE "lieferschein%" OR art LIKE "angebot%" OR art LIKE "auftrag%" OR art LIKE "rechnung%" OR art LIKE "bestellung%" OR art LIKE "gutschrift%")'; } if ($more_data11 == 1) { $subWhereConditions[] = 'art LIKE "kalender"'; } if ($subWhereConditions) { $whereConditions[] = '( ' . implode(' OR ', $subWhereConditions) . ' )'; } if ($more_data6 == 1) { $whereConditions[] = 'gesendet LIKE "ja%"'; } if ($more_data7 == 1) { $whereConditions[] = 'gesendet LIKE "nein%"'; } if ($whereConditions) { $where = implode(' AND ', $whereConditions); } //$orderby = 'UNIX_TIMESTAMP(a.datum)'; //$groupby=" GROUP BY artikel.id "; // gesamt anzahl $count = ' SELECT SUM(anzahl) FROM ( ( SELECT COUNT(id) as anzahl FROM dokumente WHERE adresse_to = ' . $adresseId . ' ) UNION ALL ( SELECT COUNT(id) as anzahl FROM dokumente_send WHERE adresse = ' . $adresseId . ' )'; $count .= ' UNION ALL ( SELECT COUNT(k.id) as anzahl FROM kalender_event k LEFT JOIN adresse a2 ON k.adresseintern = a2.id LEFT JOIN projekt p ON p.id=k.projekt WHERE k.adresse = ' . $adresseId . ' )'; if($this->app->erp->RechteVorhanden('wiedervorlage','list')){ $count .= ' UNION ALL ( SELECT COUNT(id) as anzahl FROM wiedervorlage WHERE wiedervorlage.adresse = ' . $adresseId . ' )'; } $count .= ' ) a '; break; case 'stammdatenbereinigen_list': $allowed['stammdatenbereinigen'] = array('list'); $this->app->Tpl->Add('JQUERYREADY', "$('#stammdatenbereinigenName').click( function() { fnFilterColumn1( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#stammdatenbereinigenPlz').click( function() { fnFilterColumn2( 0 ); } );"); $this->app->Tpl->Add('JQUERYREADY', "$('#stammdatenbereinigenEMail').click( function() { fnFilterColumn3( 0 ); } );"); for ($r = 1;$r <= 3;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } $heading = array('Name', 'Straße', 'Ort','PLZ', 'Land', 'Anzahl','Projekt', 'Menü'); $width = array('20%','20%','20%', '10%', '10%', '10%','5%', '5%'); $findcols = array('a.name','a.strasse', 'a.ort', 'a.plz', 'a.land', 'p.abkuerzung','anzahl'); $searchsql = array('a.name','a.strasse', 'a.ort', 'a.plz', 'a.land', 'p.abkuerzung'); $defaultorder = 0; // sortiert nach dem oeffnen nach spalte 2 $defaultorderdesc = 1; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = ''; $menu = ''; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= '
'; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= '
'; $grouping = 0; $more_data1 = $this->app->Secure->GetGET("more_data1"); if ($more_data1 == 1) { $groupABy[] = 'a.name'; $paramsGroupBy[] = 'name'; $grouping++; } $more_data2 = $this->app->Secure->GetGET("more_data2"); if ($more_data2 == 1) { $groupABy[] = 'a.plz'; $paramsGroupBy[] = 'plz'; $grouping++; } $more_data3 = $this->app->Secure->GetGET("more_data3"); if ($more_data3 == 1) { $groupABy[] = 'a.email'; $paramsGroupBy[] = 'email'; $grouping++; } /* if ($grouping <= 0) { $groupABy = array(); $groupABy[] = 'a.name'; $paramsGroupBy[] = 'name'; } */ $this->app->User->SetParameter('stammdatenbereinigen_list_param', implode(';',$paramsGroupBy)); if((empty($groupABy)?0:count($groupABy))>0) { $groupby = ' GROUP BY ' . implode(',', $groupABy) . ' HAVING count(*) > 1 '; $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.name, a.strasse, a.ort, a.plz, a.land, count(*) as anzahl, p.abkuerzung, a.id FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt "; } else { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.name, a.strasse, a.ort, a.plz, a.land, '1' as anzahl, p.abkuerzung, a.id FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt "; } $where = " a.geloescht!=1"; // gesamt anzahl $count = 'SELECT COUNT(id) FROM adresse WHERE geloescht!=1'; break; case 'layoutvorlagen_list': $allowed['layoutvorlagen'] = array('list'); $heading = array('Name', 'Typ', 'Format','Kategorie','Projekt','Menü'); $width = array('60%','10%','10%','15%','10%','5%'); $findcols = array('l.name','l.typ', 'l.format', 'l.kategorie', 'p.abkuerzung', 'l.id'); $searchsql = array('l.name','l.typ', 'l.format', 'l.kategorie', 'p.abkuerzung', 'l.id'); $defaultorder = 1; // sortiert nach dem oeffnen nach spalte 2 $defaultorderdesc = 1; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) // $alignright=array(3,4,5); $menu = ''; $menu = ''; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= '
'; $menu .= ''; $menu .= ''; $menu .= ' '; $menu .= ''; $menu .= ''; $menu .= ' '; $menu .= "app->Conf->WFconf['defaulttheme']}/images/copy.svg\" border=\"0\"> "; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= '
'; $sql = ' SELECT SQL_CALC_FOUND_ROWS l.id, l.name, l.typ, l.format, l.kategorie, p.abkuerzung, l.id FROM layoutvorlagen l LEFT JOIN projekt p ON l.projekt = p.id '; //$groupby = ''; $where = ""; // gesamt anzahl $count = ' SELECT COUNT(id) FROM layoutvorlagen '; break; case 'layoutvorlagen_edit': $allowed['layoutvorlagen'] = array('edit'); $heading = array('Sort','Beschreibung','Name', 'Position X','Position Y','Menü'); $width = array('5%','25%','25%','10%','10%', '1%'); $findcols = array('lp.sort','lp.beschreibung','lp.name', 'lp.position_x', 'lp.position_y', 'lp.id'); $searchsql = array('lp.sort','lp.beschreibung','lp.name', 'lp.position_x', 'lp.position_y'); $defaultorder = 1; // sortiert nach dem oeffnen nach spalte 2 $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $layoutvorlageId = $this->app->User->GetParameter('layoutvorlagen_id'); $menu = ''; $menu = ''; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= '
'; $menu .= ''; $menu .= ''; $menu .= ' '; $menu .= ''; $menu .= ''; $menu .= ''; $menu .= '
'; $sql = ' SELECT SQL_CALC_FOUND_ROWS lp.id, lp.sort, lp.beschreibung, lp.name, lp.position_x, lp.position_y, lp.id FROM layoutvorlagen_positionen lp '; //$groupby = ''; $where = ' lp.layoutvorlage = ' . $layoutvorlageId; // gesamt anzahl $count = ' SELECT COUNT(id) FROM layoutvorlagen_positionen WHERE layoutvorlage = ' . $layoutvorlageId . ' '; break; case "shopexport_artikeluebertragung": $allowed['shopexport'] = array('artikeluebertragung'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Artikel-Nr', 'Artikel','Typ', 'Sortierung','Menü'); $width = array('15%', '60%', '10%','5%','1%'); $findcols = array('a.nummer', 'a.name_de',"IF(s.typ = 1, 'zum übertragen','wird geprüft')", 's.id','s.id'); $searchsql = array('a.nummer', 'a.name_de',"IF(s.typ = 1, 'zum übertragen','wird geprüft')"); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $defaultorder = 3; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.artikel, a.nummer,a.name_de, IF(s.typ = 1, 'zum übertragen','wird geprüft'), s.id,s.artikel FROM ( ( SELECT artikel, shop, 1 as typ , id FROM shopexport_artikeluebertragen ) UNION ALL ( SELECT artikel, shop, 2 as typ ,id FROM shopexport_artikeluebertragen_check ) ) AS s LEFT JOIN artikel AS a ON a.id=s.artikel "; $where = sprintf(' s.shop=%d ', $id); $alignright = [4]; $count = '';//sprintf('SELECT COUNT(id) FROM shopexport_artikeluebertragen WHERE shop=%d', $id); break; case "shopexport_adressuebertragung": $allowed['shopexport'] = array('shopexport_adressuebertragung'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name', 'Kunden-Nr', 'Lieferanten-Nr','Menü'); $width = array('33%', '33%', '33%','1%'); $findcols = array('a.name', "IF(a.kundennummer='','-',a.kundennummer)", "IF(a.lieferantennummer='','-',a.lieferantennummer)",'s.id'); $searchsql = array('a.name', "IF(a.kundennummer='','-',a.kundennummer)", "IF(a.lieferantennummer='','-',a.lieferantennummer)"); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $defaultorder = 3; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, a.name, IF(a.kundennummer='','-',a.kundennummer) ,IF(a.lieferantennummer='','-',a.lieferantennummer) ,s.id,s.id FROM shopexport_adressenuebertragen s LEFT JOIN adresse a ON a.id=s.adresse "; $where = " s.shop='$id' "; $count = "SELECT COUNT(id) FROM shopexport_adressenuebertragen WHERE shop='$id'"; break; case "shopexport_zahlweisen": $allowed['onlineshops'] = array('edit'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Zahlweise Shop', 'Zahlweise Xentral', 'Vorab als bezahlt','Autoversand','keine Rechnung anlegen','Fast-Lane','Aktiv','Menü'); $width = array('30%', '30%', '10%','10%', '10%','10%','10%', '5%'); $findcols = array('s.zahlweise_shop', 's.zahlweise_wawision', 's.vorabbezahltmarkieren','s.autoversand','s.keinerechnung','s.fastlane','s.aktiv','s.id'); $searchsql = array('s.zahlweise_shop', 's.zahlweise_wawision', 's.vorabbezahltmarkieren','s.autoversand','s.keinerechnung','s.fastlane','s.aktiv'); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, s.zahlweise_shop, s.zahlweise_wawision,if(s.vorabbezahltmarkieren=1,'ja','-'),if(s.autoversand=1,'ja','-'),if(s.keinerechnung=1,'ja','-'),if(s.fastlane=1,'ja','-'),if(s.aktiv=1,'ja','-'), s.id FROM shopexport_zahlweisen s "; $where = " s.shop='$id' "; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM shopexport_zahlweisen WHERE shop='$id'"; break; case "shopexport_versandarten": $allowed['onlineshops'] = array('edit'); $heading = array('Versandart Shop', 'Versandart Xentral', 'Versandart Ausgehend', 'Produkt Ausgehend', 'Land','Autoversand','Fast-Lane','Aktiv','Menü'); $width = array('25%', '25%','25%', '10%','10%','10%','10%','5%', '5%'); $findcols = array('s.versandart_shop', 's.versandart_wawision','s.versandart_ausgehend','s.produkt_ausgehend','s.land','s.autoversand','s.fastlane','s.aktiv','s.id'); $searchsql = array('s.versandart_shop', 's.versandart_wawision','s.versandart_ausgehend','s.land','s.autoversand','s.fastlane', 's.aktiv'); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, s.versandart_shop, s.versandart_wawision, s.versandart_ausgehend,s.produkt_ausgehend, s.land,if(s.autoversand=1,'ja','-'),if(s.fastlane=1,'ja','-'),if(s.aktiv=1,'ja','-'), s.id FROM shopexport_versandarten s "; $where = " s.shop='$id' "; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM shopexport_versandarten WHERE shop='$id'"; break; case "shopexport_freifelder": $allowed['onlineshops'] = array('edit'); $heading = array('Freifeld Xentral', 'Bezeichnung in Shop','Aktiv','Menü'); $width = array('30%', '30%','10%', '5%'); $findcols = array('s.freifeld_wawi', 's.freifeld_shop','s.aktiv','s.id'); $searchsql = array('s.freifeld_wawi', 's.freifeld_shop'); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $subsql = ''; for($i = 1; $i <= 40; $i++) { $freifeldname = $this->app->erp->Firmendaten('freifeld'.$i); if(!$freifeldname){ $freifeldname = 'Freifeld '.$i; } $freifeldname = explode('|',$freifeldname); $subsql .= " if(s.freifeld_wawi = 'freifeld".$i."', '$freifeldname[0]', "; } $subsql .= 's.freifeld_wawi'; for($i = 1; $i <= 40; $i++)$subsql .= ')'; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, $subsql, s.freifeld_shop,if(s.aktiv=1,'ja','-'), s.id FROM shopexport_freifelder s "; $where = " s.shop='$id' "; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM shopexport_freifelder WHERE shop='$id'"; break; case "shopexport_subshop": $allowed['onlineshops'] = array('edit'); $heading = array('Subshop Kennung', 'Projekt Xentral','Sprache','Aktiv','Menü'); $width = array('30%', '30%','10%','5%', '5%'); $findcols = array('s.subshopkennung', 'p.abkuerzung','s.sprache','s.aktiv','s.id'); $searchsql = array('s.subshopkennung', 'p.abkuerzung','s.sprache'); $defaultorderdesc = 0; // 0 = auftsteigend , 1 = absteigen (eventuell notfalls pruefen) $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS s.id, s.subshopkennung, p.abkuerzung,s.sprache,if(s.aktiv=1,'ja','-'), s.id FROM shopexport_subshop s LEFT JOIN projekt p ON p.id=s.projekt "; $where = " s.shop='$id' "; $count = "SELECT COUNT(id) FROM shopexport_subshop WHERE shop='$id'"; break; case "berichte": $allowed['berichte'] = array('list'); // START EXTRA checkboxen // ENDE EXTRA checkboxen // headings $heading = array('Name','Projekt', 'Menü'); $width = array('75%','20%','5%'); $findcols = array('b.name','p.abkuerzung', 'b.id'); $searchsql = array('d.name', 'd.bezeichnung', 'd.anbindung','p.abkuerzung', 'd.aktiv'); $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/pdf.svg\" border=\"0\">" . " ". "" . "app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">" . " ". "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS b.id, b.name, p.abkuerzung, b.id FROM berichte b LEFT JOIN projekt p ON p.id=b.project "; $where = " b.id > 0 ".$this->app->erp->ProjektRechte("b.project");//d.firma='" . $this->app->User->GetFirma() . "'"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(id) FROM berichte"; break; case "adresse_stammdatenlieferadresselist": case "adresse_stammdatenverzollungadresselist": $allowed['adresse'] = array('ansprechpartner'); $allowed['proformarechnung'] = array('edit','create'); // START EXTRA checkboxen // ENDE EXTRA checkboxen $id = $this->app->Secure->GetGET('id'); $lid = $this->app->Secure->GetGET("lid"); $iframe = $this->app->Secure->GetGET("iframe"); $postfix = $this->app->Secure->GetGET("postfix"); $smodule = $this->app->Secure->GetGET("smodule"); // headings $heading = array('Name', 'Abteilung', 'Strasse', 'PLZ', 'Ort', 'Menü'); $width = array('20%', '20%', '20%', '15%', '10%', '20%', '1%'); $findcols = array('a.name', 'a.abteilung', 'a.strasse', 'a.plz', 'a.ort', 'a.id'); $searchsql = array('a.name', 'a.abteilung', 'a.strasse', 'a.plz', 'a.ort','a.kundennummer','a.lieferantennummer'); $defaultorder = 1; $defaultorderdesc = 0; switch($smodule) { case "alsverzollungadresse": $auswahl = "Verzolladresse"; break; case "alsansprechpartner": $auswahl = "AdresseStammdatenIframe"; break; default: $auswahl = "AdresseStammdatenLieferscheinIframe"; break; } if ($iframe == "true") $einfuegen = "app->Conf->WFconf['defaulttheme']}/images/down.png\" border=\"0\">"; $menu = "
" . $einfuegen . " 
"; // SQL statement $sql = "SELECT DISTINCT SQL_CALC_FOUND_ROWS a.id, a.name, a.abteilung, a.strasse, a.plz, a.ort, a.id FROM `adresse` AS `a` LEFT JOIN `adresse_rolle` AS `ar` ON a.id = ar.adresse AND ar.objekt = 'Projekt' LEFT JOIN `projekt` AS `p` ON p.id = ar.parameter"; $where = " a.geloescht!=1 ".$this->app->erp->ProjektRechte(); //$orderby = "a.name,a.strasse"; //$orderby = "l.name, l.strasse"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(a.id) FROM adresse a WHERE a.geloescht!=1 "; break; case "adresse_ansprechpartnerlieferadresselist": $allowed['adresse'] = array('ansprechpartner'); $this->app->Tpl->Add('JQUERYREADY', "$('#alle').click( function() { fnFilterColumn1( 0 ); } );"); for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // START EXTRA checkboxen // ENDE EXTRA checkboxen $id = $this->app->Secure->GetGET('id'); $lid = $this->app->Secure->GetGET("lid"); $iframe = $this->app->Secure->GetGET("iframe"); $postfix = $this->app->Secure->GetGET("postfix"); if ($lid > 0) $id = $this->app->DB->Select("SELECT adresse FROM ansprechpartner WHERE id='$lid' LIMIT 1"); // headings $heading = array('Name', 'Bereich', 'Email', 'Telefon', 'Telefax', 'Mobil', 'Menü'); $width = array('20%', '15%', '15%', '10%', '10%', '10%', '10%', '5%'); $findcols = array('a.name', 'a.bereich', 'a.email', 'a.telefon', 'a.telefax', 'a.mobil', 'a.id'); $searchsql = array('a.name', 'a.bereich', 'a.email', 'a.telefon', 'a.telefax', 'a.mobil'); $defaultorder = 1; $defaultorderdesc = 0; if ($iframe == "true") $einfuegen = "app->Conf->WFconf['defaulttheme']}/images/down.png\" border=\"0\">"; $menu = "
" . "" . "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " " . "" . "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . $einfuegen . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.name, a.bereich, a.email, a.telefon, a.telefax, a.mobil, a.id FROM ansprechpartner a "; if($this->app->Secure->GetGET("more_data1")=="1") $where = " a.name!='Neuer Datensatz' "; else $where = " a.adresse='" . $id . "' AND a.name!='Neuer Datensatz' "; //$orderby = "a.name,a.strasse"; //$orderby = "l.name, l.strasse"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(a.id) FROM ansprechpartner a WHERE a.adresse='" . $id . "' AND a.name!='Neuer Datensatz'"; break; case "adresse_accounts": $allowed['adresse'] = array('accounts'); // START EXTRA checkboxen // ENDE EXTRA checkboxen $id = $this->app->Secure->GetGET('id'); $lid = $this->app->Secure->GetGET("lid"); $iframe = $this->app->Secure->GetGET("iframe"); if ($lid > 0) $id = $this->app->DB->Select("SELECT adresse FROM adresse_accounts WHERE id='$lid' LIMIT 1"); // headings $heading = array('Bezeichnung', 'Art', 'Benutzer','URL', 'Aktiv','Zwischenspeicher', 'Menü'); $width = array('10%', '10%', '10%','35%', '5%', '15%', '5%'); $findcols = array('a.bezeichnung', 'a.art', 'a.benutzername','a.url', "if(a.aktiv,'Ja','Nein')", 'a.id', 'a.id'); $searchsql = array('a.bezeichnung', 'a.art', 'a.benutzername','a.url', "if(a.aktiv,'Ja','Nein')"); $defaultorder = 1; $defaultorderdesc = 0; if ($iframe == "true") $einfuegen = "app->Conf->WFconf['defaulttheme']}/images/down.png\" border=\"0\">"; $menu = ""; $menu .= ""; $menu .= ""; $menu .= ""; $menu .= "
"; $menu .= ''; //$menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; $menu .= ""." "; $menu .= ''; //$menu .= ""; $menu .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu .= "" . $einfuegen . " "; $menu .= "
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, a.bezeichnung, a.art, a.benutzername, if(LOCATE('https://',url) > 0 OR LOCATE('http://',url) > 0,concat('',IF(LENGTH(a.url) > 60, CONCAT(LEFT(a.url,60),'...'), a.url),''), IF(LENGTH(a.url) > 60, CONCAT(LEFT(a.url,60),'...'), a.url)) , if(a.aktiv,'Ja','Nein'),CONCAT('  '), a.id FROM adresse_accounts a "; $where = "a.adresse='" . $id . "' AND a.bezeichnung!='Neuer Datensatz' "; // gesamt anzahl $count = "SELECT COUNT(a.id) FROM adresse_accounts a WHERE a.adresse='" . $id . "' AND a.bezeichnung!='Neuer Datensatz'"; break; case "adresse_ansprechpartnerlist": $allowed['adresse'] = array('ansprechpartner'); // START EXTRA checkboxen // ENDE EXTRA checkboxen $id = $this->app->Secure->GetGET('id'); $lid = $this->app->Secure->GetGET("lid"); $iframe = $this->app->Secure->GetGET("iframe"); $alslieferadresse = $this->app->Secure->GetGET("smodule") === 'alslieferadresse'; $tempid = $this->app->Secure->GetGET("more_data1"); if($tempid > 0){ $id = $tempid; } if ($lid > 0) $id = $this->app->DB->Select("SELECT adresse FROM ansprechpartner WHERE id='$lid' LIMIT 1"); // headings $heading = array('', 'Name','Abteilung', 'Bereich', 'Email', 'Telefon', 'Telefax', 'Mobil', 'Menü'); $width = array('1%', '20%', '15%', '15%', '10%', '10%', '10%', '10%', '5%'); $findcols = array('open', 'a.name','a.abteilung', 'a.bereich', 'a.email', 'a.telefon', 'a.telefax', 'a.mobil', 'a.id'); $searchsql = array('a.name','a.abteilung', 'a.bereich', 'a.email', 'a.telefon', 'a.telefax', 'a.mobil'); $defaultorder = 1; $defaultorderdesc = 0; $menucol = 8; $moreinfo = true; $moreinfoaction='ansprechpartner'; if ($iframe == "true"){ $onClickFunction = $alslieferadresse ? 'AnsprechpartnerLieferscheinIframe' : 'AnsprechpartnerIframe'; $einfuegen = "app->Conf->WFconf['defaulttheme']}/images/down.png\" border=\"0\">"; } $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(%value%);\" style=\"cursor: pointer;\"> app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteeintrag(%value%);\" style=\"cursor: pointer;\">" . $einfuegen . " 
"; // $menu = "Conf->WFconf['defaulttheme']}/images/phone.png\" border=\"0\">"; $sipuid = $this->app->erp->GetPlacetelSipuid(); if( $sipuid) { $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, if(a.adresszusatz!='',CONCAT(a.name,if(a.interne_bemerkung='','',' *'),'
',a.adresszusatz,''),CONCAT(a.name, if(a.interne_bemerkung='','',' *'))) as name2, if(a.unterabteilung!='',CONCAT(a.abteilung,'
',a.unterabteilung,''),a.abteilung) as unterabteilung2, a.bereich, a.email, CONCAT('
',a.telefon,'
app->Conf->WFconf['defaulttheme']}/images/phone.png\" border=\"0\">'), a.telefax, CONCAT('
',a.mobil,'
app->Conf->WFconf['defaulttheme']}/images/phone.png\" border=\"0\">'), a.id FROM ansprechpartner a "; } else { // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS a.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, if(a.adresszusatz!='',CONCAT(a.name,if(a.interne_bemerkung='','',' *'),'
',a.adresszusatz,''),CONCAT(a.name, if(a.interne_bemerkung='','',' *'))) as name2, if(a.unterabteilung!='',CONCAT(a.abteilung,'
',a.unterabteilung,''),a.abteilung) as unterabteilung2, a.bereich, a.email, CONCAT('
',a.telefon,'
app->Conf->WFconf['defaulttheme']}/images/phone.png\" border=\"0\">'), a.telefax, CONCAT('
',a.mobil,'
app->Conf->WFconf['defaulttheme']}/images/phone.png\" border=\"0\">'), a.id FROM ansprechpartner a "; } $where = "a.adresse='" . $id . "' AND a.name!='Neuer Datensatz' "; // gesamt anzahl $count = "SELECT COUNT(a.id) FROM ansprechpartner a WHERE a.adresse='" . $id . "' AND a.name!='Neuer Datensatz'"; break; case "adresse_lieferadressenlist": $allowed['adresse'] = array('lieferadresse'); $this->app->Tpl->Add('JQUERYREADY', "$('#alle').click( function() { fnFilterColumn1( 0 ); } );"); for ($r = 1;$r < 2;$r++) { $this->app->Tpl->Add('JAVASCRIPT', ' function fnFilterColumn' . $r . ' ( i ) { if(oMoreData' . $r . $name . '==1) oMoreData' . $r . $name . ' = 0; else oMoreData' . $r . $name . ' = 1; $(\'#' . $name . '\').dataTable().fnFilter( \'\', i, 0,0 ); } '); } // START EXTRA checkboxen // ENDE EXTRA checkboxen $id = $this->app->Secure->GetGET("id"); $iframe = $this->app->Secure->GetGET("iframe"); $lid = $this->app->Secure->GetGET("lid"); if ($lid > 0) $id = $this->app->DB->Select("SELECT adresse FROM lieferadressen WHERE id='$lid' LIMIT 1"); // headings $heading = array('', 'Name', 'Abteilung', 'Strasse', 'Land', 'PLZ', 'Ort', 'Telefon', 'Email', 'Menü'); $width = array('1%', '15%', '15%', '15%', '1%', '1%', '5%','10%', '15%', '1%'); $findcols = array('open', "CONCAT(l.name, l.adresszusatz, l.gln)", "CONCAT(l.abteilung, l.unterabteilung)", 'l.strasse', 'l.land', 'l.plz', 'l.ort', 'l.telefon', 'l.email', 'l.id'); $searchsql = array('l.name', 'l.abteilung', 'l.strasse', 'l.land', 'l.plz', 'l.ort', 'l.telefon', 'l.email', 'l.adresszusatz', 'l.gln', 'l.unterabteilung', 'l.ustid'); $defaultorder = 1; $defaultorderdesc = 0; $moreinfo = true; $moreinfoaction='lieferadressen'; $menucol = 9; // $id = $this->app->Secure->GetGET("sid"); $postfix = $this->app->Secure->GetGET('postfix'); if ($iframe == "true") $einfuegen = "app->Conf->WFconf['defaulttheme']}/images/down.png\" border=\"0\">"; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\" onclick=\"neuedit(%value%);\"> app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" onclick=\"deleteeintrag(%value%);\">" . $einfuegen . " 
"; // SQL statement $sql = "SELECT SQL_CALC_FOUND_ROWS l.id, 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' as open, CONCAT( CONCAT(IF(l.standardlieferadresse,CONCAT('',l.name,' (Standardlieferadresse)'),l.name),if(l.interne_bemerkung='' OR ISNULL(l.interne_bemerkung),'',' *')), IF(l.adresszusatz!='',CONCAT('
',l.adresszusatz,''),''), IF(l.gln!='',CONCAT('
GLN: ',l.gln,''),'')) AS name2, if(l.unterabteilung!='',CONCAT(l.abteilung,'
',l.unterabteilung,''),l.abteilung) as unterabteilung2, l.strasse, l.land, l.plz, l.ort, l.telefon,l.email, l.id FROM lieferadressen l "; if($this->app->Secure->GetGET("more_data1")=="1") $where = " l.name!='Neuer Datensatz' "; else $where = " l.adresse='" . $id . "' AND l.name!='Neuer Datensatz' "; //$orderby = "l.name, l.strasse"; //$groupby=" GROUP by z.adresse_abrechnung "; // gesamt anzahl $count = "SELECT COUNT(l.id) FROM lieferadressen l WHERE ".$where; break; case "zeiterfassungprojektoffen": $allowed['zeiterfassung'] = array('list'); // headings $heading = array('Projekt','Bezeichnung','Kunden-Nr','Kunde', 'Offen','Menü'); $alignright = array(5); $width = array('10%','20%','10%','20%','15%','1%'); $findcols = array('p.abkuerzung', 'p.name','adr.kundennummer','adr.name', "(SELECT SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von))) FROM zeiterfassung z2 WHERE z2.adresse_abrechnung=a.id AND z2.abrechnen=1 AND z2.abgerechnet!=1)","(SELECT SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von))) FROM zeiterfassung z2 WHERE z2.adresse_abrechnung=a.id AND z2.abrechnen!=1 AND z2.abgerechnet!=1)", 'z.id'); $searchsql = array('adr.name','adr.kundennummer','p.abkuerzung', 'p.name'); $defaultorder = 4; $defaultorderdesc = 1; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">" . " 
"; $sql = "SELECT 'leer', p.abkuerzung, p.name,adr.kundennummer,adr.name, (SELECT FORMAT(SUM(TIME_TO_SEC(TIMEDIFF(z2.bis, z2.von)))/3600,2) FROM zeiterfassung z2 WHERE z2.arbeitspaket=a.id AND z2.abrechnen!=1 AND z2.abgerechnet!=1) as offen2, p.id FROM zeiterfassung z LEFT JOIN arbeitspaket a ON a.id=z.arbeitspaket LEFT JOIN projekt p ON p.id=a.projekt LEFT JOIN adresse adr ON adr.id=p.kunde"; $where = " z.abgerechnet!=1 AND a.id > 0 "; $groupby = " GROUP by a.projekt "; // gesamt anzahl $count = "SELECT COUNT(distinct a.projekt) FROM zeiterfassung z LEFT JOIN arbeitspaket a ON a.id=z.arbeitspaket WHERE z.abgerechnet!=1 AND z.adresse_abrechnung > 0 "; // $moreinfo = true; break; case 'gruppen_kategorienlist': $heading = array('Name','Projekt' , 'Menü'); $width = array('55%','40%', '5%'); $findcols = array('gk.bezeichnung', 'p.abkuerzung' , 'gk.id'); $searchsql = array('gk.bezeichnung','p.abkuerzung'); $defaultorder = 1; //Optional wenn andere Reihenfolge gewuenscht $defaultorderdesc=0; $menu = "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">
"; $menucol = 2; $sql = "SELECT SQL_CALC_FOUND_ROWS gk.id, gk.bezeichnung,p.abkuerzung,gk.id FROM gruppen_kategorien gk LEFT JOIN projekt p ON gk.projekt = p.id"; $where = "1 ". $this->app->erp->ProjektRechte(); $count = "SELECT COUNT(gk.id) FROM gruppen_kategorien gk LEFT JOIN projekt p ON gk.projekt = p.id WHERE ($where)"; $moreinfo = false; break; default: if($frommodule && $fromclass) { $paramFrommodule = $frommodule; $paramFromClass = $fromclass; $isFromCustom = false; if(strtolower(substr($fromclass, -6)) === 'custom') { $isFromCustom = true; $fromclass = substr($fromclass,0, -6); } //$fromclass = str_replace('Custom','',$fromclass); if(strtolower(substr($frommodule,-11)) === '_custom.php') { $isFromCustom = true; $frommodule = substr($frommodule, 0, -11).'.php'; } //$frommodule = str_replace('_custom.php','.php',$frommodule); $fromclass_custom = $fromclass; $frommodule_custom = $frommodule; //if(strpos($fromclass,'Custom')=== false) $fromclass_custom = $fromclass.'Custom'; if(!strpos($frommodule, '_custom.php')) { $frommodule_custom = str_replace('.php','',$frommodule).'_custom.php'; } if(!class_exists($fromclass) && file_exists(dirname(dirname(__DIR__)).'/www/pages/'.$frommodule)) { include_once dirname(dirname(__DIR__)).'/www/pages/'.$frommodule; } if($isFromCustom && !class_exists($fromclass_custom) && file_exists(dirname(dirname(__DIR__)).'/www/pages/'.$frommodule_custom)) { include_once dirname(dirname(__DIR__)).'/www/pages/'.$frommodule_custom; } $erlaubtevars = array('moreDataMaxNr','forcerowclick','rowclick','rowclickaction','matchesql','aligncenter','onequeryperuser','postfix','datesearchcols','datecols','numbercols','hidecolumns','extracallback','maxrows','nowrap','orderby','fastcount','disableautosavefilter','columnfilter','disablebuttons','doppelteids','countcol','heading','width','sql','count','findcols','searchsql','defaultorder','defaultorderdesc','menu','menucol','where','groupby','groupcol','allowed','moreinfo','moreinfoaction','sumcol','alignright','hide767','hide480','hide320','trcol','colcolor','cellcolor','rowcallback_gt','cached_count','tageditor','moreinfomodule','defferloading'); if($isFromCustom && class_exists($fromclass_custom) && (method_exists($fromclass_custom, 'TableSearch') || method_exists($fromclass_custom, 'Tablesearch'))) { $tablesearchmethod = 'TableSearch'; if(!method_exists($fromclass_custom, $tablesearchmethod)) { $tablesearchmethod = 'Tablesearch'; } $MethodChecker = new ReflectionMethod($fromclass_custom,$tablesearchmethod); if($MethodChecker->isStatic()) { $erg = $fromclass_custom::$tablesearchmethod($this->app, $name, $erlaubtevars); $paramFrommodule = $frommodule_custom; $paramFromClass = $fromclass_custom; } else{ $obj = new $fromclass_custom($this->app, true); $erg = $obj->$tablesearchmethod($this->app, $name, $erlaubtevars); $paramFrommodule = $frommodule_custom; $paramFromClass = $fromclass_custom; } if($erg && is_array($erg)) { foreach($erlaubtevars as $k => $v) { if(isset($erg[$v])){ $$v = $erg[$v]; } } } if(!$sql) { if(class_exists($fromclass) && (method_exists($fromclass, 'TableSearch') || (method_exists($fromclass, 'Tablesearch')))) { $tablesearchmethod = 'TableSearch'; if(!method_exists($fromclass,$tablesearchmethod)) { $tablesearchmethod = 'Tablesearch'; } $MethodChecker = new ReflectionMethod($fromclass,$tablesearchmethod); if($MethodChecker->isStatic()) { $erg = $fromclass::$tablesearchmethod($this->app, $name, $erlaubtevars); $paramFrommodule = $frommodule; $paramFromClass = $fromclass; } else{ $obj = new $fromclass($this->app, true); $erg = $obj->$tablesearchmethod($this->app, $name, $erlaubtevars); $paramFrommodule = $frommodule; $paramFromClass = $fromclass; } if($erg && is_array($erg)) { foreach($erlaubtevars as $k => $v) { if(isset($erg[$v])) { $$v = $erg[$v]; } } } } } } elseif(class_exists($fromclass) && (method_exists($fromclass, 'TableSearch') || method_exists($fromclass, 'Tablesearch'))) { $tablesearchmethod = 'TableSearch'; if(!method_exists($fromclass,$tablesearchmethod)) { $tablesearchmethod = 'Tablesearch'; } $MethodChecker = new ReflectionMethod($fromclass,$tablesearchmethod); if($MethodChecker->isStatic()) { $erg = $fromclass::$tablesearchmethod($this->app, $name, $erlaubtevars); $paramFrommodule = $frommodule; $paramFromClass = $fromclass; } else{ $obj = new $fromclass($this->app, true); $erg = $obj->$tablesearchmethod($this->app, $name, $erlaubtevars); $paramFrommodule = $frommodule; $paramFromClass = $fromclass; } if($erg && is_array($erg)) { foreach($erlaubtevars as $k => $v) { if(isset($erg[$v])) { $$v = $erg[$v]; } } } } $frommodule = $paramFrommodule; $fromclass = $paramFromClass; } break; } $erlaubtevars = array('moreDataMaxNr','forcerowclick','rowclick','aligncenter','onequeryperuser','postfix','datesearchcols','datecols','numbercols','hidecolumns','extracallback','maxrows','nowrap','orderby','fastcount','disableautosavefilter','columnfilter','disablebuttons','doppelteids','countcol','heading','width','sql','count','findcols','searchsql','defaultorder','defaultorderdesc','menu','menucol','where','groupby','groupcol','allowed','moreinfo','moreinfoaction','sumcol','alignright','hide767','hide480','hide320','trcol','colcolor','cellcolor','rowcallback_gt','cached_count'); $hookfelder = array(); $hookname = $name; foreach($erlaubtevars as $k => $v) { if(isset($$v)){ $hookfelder[$v] =$$v; } } $this->app->erp->RunHook('tablesearch_after', 2, $hookname, $hookfelder); if(!empty($hookfelder)){ foreach ($hookfelder as $k => $v) { if(!empty($k)){ $$k = $v; } } } switch($callback) { case 'show': break; case 'sql': return $sql; break; case 'searchsql': return $searchsql; break; case 'searchsql_dir': return $searchsql_dir; break; case 'searchfulltext': return $searchfulltext; break; case 'defaultorder': return $defaultorder; break; case 'defaultorderdesc': return $defaultorderdesc; break; case 'heading': return $heading; break; case 'menu': return $menu; break; case 'findcols': return $findcols; break; case 'moreinfo': return $moreinfo; break; case 'allowed': return $allowed; break; case 'where': return $where; break; case 'groupby': return $groupby; break; case 'groupcol': return $groupcol; break; case 'count': return $count; break; case 'orderby': return isset($orderby)?$orderby:''; break; case 'ALL': return [ 'findcols' => (isset($findcols) ? $findcols : ''), 'moreinfo' => (isset($moreinfo) ? $moreinfo : ''), 'defaultorder' => (isset($defaultorder) ? $defaultorder : ''), 'defaultorderdesc' => (isset($defaultorderdesc) ? $defaultorderdesc : ''), 'where' => (isset($where) ? $where : ''), 'searchsql' => (isset($searchsql) ? $searchsql : ''), 'searchfulltext' => (isset($searchfulltext) ? $searchfulltext : ''), 'columnfilter' => (isset($columnfilter) ? $columnfilter : ''), 'sql' => (isset($sql) ? $sql : ''), 'matchesql' => (isset($matchesql) ? $matchesql : ''), 'groupcol' => (isset($groupcol) ? $groupcol : ''), 'groupby' => (isset($groupby) ? $groupby : ''), 'orderby' => (isset($orderby) ? $orderby : ''), 'count' => (isset($count) ? $count : ''), 'heading' => (isset($heading) ? $heading : ''), 'fastcount' => (isset($fastcount) ? $fastcount : ''), 'menu' => (isset($menu) ? $menu : ''), 'datecols' => (isset($datecols) ? $datecols : ''), 'datesearchcols' => (isset($datesearchcols) ? $datesearchcols : ''), 'numbercols' => (isset($numbercols) ? $numbercols : ''), 'maxrows' => (isset($maxrows) ? $maxrows : '0'), 'onequeryperuser' => (isset($onequeryperuser) ? $onequeryperuser : '0'), 'cached_count' => (isset($cached_count) ? $cached_count : ''), ]; break; } if ($callback === 'show') { $this->app->Tpl->Add('ADDITIONALCSS', " .ex_highlight #$name tbody tr.even:hover, #example tbody tr.even td.highlighted { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.even:hover { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.even:hover td.sorting_1 { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.odd:hover { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #$name tr.odd:hover td.sorting_1 { background-color: [TPLFIRMENFARBEHELL]; } "); $moreDataMaxNrC = 31; if(empty($moreDataMaxNr) || (int)$moreDataMaxNr < 32) { $moreDataMaxNr = ''; } else{ $moreDataMaxNrC = (int)$moreDataMaxNr; if($moreDataMaxNrC > 50) { $moreDataMaxNrC = 50; } $moreDataMaxNr = ''; for($i = 32; $i <= $moreDataMaxNrC; $i++) { $moreDataMaxNr .= ' aoData.push( { "name": "more_data'.$i.'", "value": oMoreData'.$i . $name . ' } );'; } } //"sPaginationType": "full_numbers", //"aLengthMenu": [[10, 25, 50, 10000], [10, 25, 50, "All"]], $this->app->Tpl->Add('JAVASCRIPT', " var oTable" . $name . "; "); for($i = 1; $i <= ($moreDataMaxNrC>31?$moreDataMaxNrC:31); $i++) { $_name = 'oMoreData'.$i; $this->app->Tpl->Add('JAVASCRIPT',"var oMoreData".$i . $name . "=".(isset($this->$_name) && $this->$_name !== '0'?"'".$this->$_name."'":0).";");// var oMoreData2" . $name . "=0; var oMoreData3" . $name . "=0; var oMoreData4" . $name . "=0; var oMoreData5" . $name . "=0; var oMoreData6" . $name . "=0; var oMoreData7" . $name . "=0; var oMoreData8" . $name . "=0; var oMoreData9" . $name . "=0; var oMoreData10" . $name . "=0; var oMoreData11" . $name . "=0; var oMoreData12" . $name . "=0; var oMoreData13" . $name . "=0;var oMoreData14" . $name . "=0;var oMoreData15" . $name . "=0;var oMoreData16" . $name . "=0;var oMoreData17" . $name . "=0;" } if(isset($countcol) && $countcol && (empty($sumcol) || $sumcol != $countcol)) { $this->app->Tpl->Add('JAVASCRIPT', ' setInterval(function(){countcol' . $name . '();},1000); function countcol' . $name . '() { /* $(\'#'.$name.'\').find(\'input[type="checkbox"]\').each(function(){ $(this).on(\'change\',function(){ countcol' . $name . '(); }); });*/ var anz = 0; var anzges = 0; var isfloat = false; $(\'#'.$name.'\').find(\'input[type="checkbox"]\').each(function(){ var anz2 = 0; $(this).parent().parent().children(\':nth-child('.$countcol.')\').each(function(){ anz2 = $(this).html(); if(anz2.indexOf(\'.\') > 0)anz2 = anz2.replace(/\./g, \'\'); // Tausendertrenner entfernen if(anz2.indexOf(\',\') > 0)anz2 = anz2.replace(\',\',\'.\'); // Dezimaltrenner in Punkt wandeln if(anz2.indexOf(\'.\') > 0)isfloat = true; anz2 = parseFloat(anz2); }); if(!isNaN(anz2)) { anzges = anzges + anz2; if($(this).prop(\'checked\'))anz = anz + anz2; } }); if(isfloat) { // Mit zwei Nachkommastellen und Tausendertrenner anzeigen anz = anz.toLocaleString(\'de-DE\', {minimumFractionDigits: 2, maximumFractionDigits: 2}); anzges = anzges.toLocaleString(\'de-DE\', {minimumFractionDigits: 2, maximumFractionDigits: 2}); } $(\'#'.$name.'\').children(\'tfoot\').find(\'tr > :nth-child('.$countcol.')\').each(function(){ $(this).html(\'\'+anz+ \' / \'+anzges+\'\'); }); } '); } $this->app->Tpl->Add('JAVASCRIPT'," var aData;"); $smoduleRule = $this->app->Secure->GetGET('module') === 'wiki' ? 'nohtml' : null; $smodule = $this->app->Secure->GetGET("cmd", $smoduleRule); $sid = $this->app->Secure->GetGET("sid"); if ($this->app->Secure->GetGET("module") == "artikel") { $sort = '"aaSorting": [[ 0, "desc" ]],'; } else { $sort = '"aaSorting": [[ 1, "desc" ]],'; } if(isset($alignright)) { for ($aligni = 0;$aligni < (empty($alignright)?0:count($alignright));$aligni++) { $this->app->Tpl->Add('YUICSS', ' #' . $name . ' > tbody > tr > td:nth-child(' . $alignright[$aligni] . ') { text-align: right; } '); } } if(isset($aligncenter)) { for ($aligni = 0;$aligni < (empty($aligncenter)?0:count($aligncenter));$aligni++) { $this->app->Tpl->Add('YUICSS', ' #' . $name . ' > tbody > tr > td:nth-child(' . $aligncenter[$aligni] . ') { text-align: center; } '); } } if(isset($hide320)) { for ($h = 0;$h < (empty($hide320)?0:count($hide320));$h++) { $this->app->Tpl->Add('YUICSS', ' @media screen and (max-width: 320px){ #' . $name . ' > thead > tr > th:nth-child(' . $hide320[$h] . ') { display: none; } #' . $name . ' > tfoot > tr > th:nth-child(' . $hide320[$h] . ') { display: none; } #' . $name . ' > tbody > tr > td:nth-child(' . $hide320[$h] . '){ display: none; } } '); } } if(isset($nowrap) && is_array($nowrap)) { for ($h = 0;$h < (empty($nowrap)?0:count($nowrap));$h++) { $this->app->Tpl->Add('YUICSS', ' @media screen and (max-width: 767px){ #' . $name . ' > tbody > tr > td:nth-child(' . $hide767[$h] . '){ white-space: nowrap; } } '); } } if(isset($hide767)) { for ($h = 0;$h < (empty($hide767)?0:count($hide767));$h++) { $this->app->Tpl->Add('YUICSS', ' @media screen and (max-width: 767px){ #' . $name . ' > thead > tr > th:nth-child(' . $hide767[$h] . ') { display: none; } #' . $name . ' > tfoot > tr > th:nth-child(' . $hide767[$h] . ') { display: none; } #' . $name . ' > tbody > tr > td:nth-child(' . $hide767[$h] . '){ display: none; } } '); } } if(isset($hide480)) { for ($h = 0;$h < (empty($hide480)?0:count($hide480));$h++) { $this->app->Tpl->Add('YUICSS', ' @media screen and (max-width: 479px){ #' . $name . ' > thead > tr > th:nth-child(' . $hide480[$h] . ') { display: none; } #' . $name . ' > tfoot > tr > th:nth-child(' . $hide480[$h] . ') { display: none; } #' . $name . ' > tbody > tr > td:nth-child(' . $hide480[$h] . '){ display: none; } } '); } } if(isset($trcol)) { $this->app->Tpl->Add('YUICSS', ' #' . $name . ' > thead > tr > th:nth-child(' . ($trcol+1) . ') { display: none; } #' . $name . ' > tfoot > tr > th:nth-child(' . ($trcol+1) . ') { display: none; } #' . $name . ' > tbody > tr > td:nth-child(' . ($trcol+1) . '){ display: none; }'); } if(isset($colcolor) && is_array($colcolor)) { foreach($colcolor as $k => $color) { $this->app->Tpl->Add('YUICSS', ' #' . $name . ' > tbody > tr > td:nth-child(' . $k . '){ background-color: '.$color.'; } '); } } if(isset($hidecolumns) && $hidecolumns && is_array($hidecolumns) && (empty($hidecolumns)?0:count($hidecolumns)) > 2) { $hidecolumnsitem = $hidecolumns[0]; if(!is_array($hidecolumns[2]))$hidecolumns[2][0] = $hidecolumns[2]; $this->app->Tpl->Add('JQUERYREADY',' $(\'#'.$hidecolumnsitem.'\').on(\'change\',function(){ var prop = '.($hidecolumns[0] == 'unchecked'?'1-':'').'$(this).prop(\'checked\')?1:0; var tab = $(\'#'.$name.'\'); if(prop) { '); foreach($hidecolumns[2] as $vh) { //$this->app->Tpl->Add('JQUERYREADY',' $this->app->Tpl->Add('YUICSS', ' .'.$name.'_hidecolums > thead > tr > th:nth-child('.$vh.') {display:none;} .'.$name.'_hidecolums > tbody > tr > td:nth-child('.$vh.'){display:none;} .'.$name.'_hidecolums > tfoot > tr > th:nth-child('.$vh.'){display:none;} '); $this->app->Tpl->Add('JQUERYREADY',' if(tab != null && typeof tab.toggleClass != \'undefined\')$(tab).toggleClass(\''.$name.'_hidecolums\',false); '); } $this->app->Tpl->Add('JQUERYREADY',' }else{ '); foreach($hidecolumns[2] as $vh) { $this->app->Tpl->Add('JQUERYREADY',' if(tab != null && typeof tab.toggleClass != \'undefined\')$(tab).toggleClass(\''.$name.'_hidecolums\',true); '); } $this->app->Tpl->Add('JQUERYREADY',' } }); $(\'#'.$hidecolumnsitem.'\').trigger(\'change\'); '); } $this->app->Tpl->Add('YUICSS', ' /* * Row highlighting example */ .ex_highlight #' . $name . ' tbody tr.even:hover, #' . $name . ' tbody tr.even td.highlighted { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight #' . $name . ' tbody tr.odd:hover, #' . $name . ' tbody tr.odd td.highlighted { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.even:hover { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.even:hover td.sorting_1 { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.even:hover td.sorting_2 { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.even:hover td.sorting_3 { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.odd:hover { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.odd:hover td.sorting_1 { background-color: [TPLFIRMENFARBEHELL]; } .ex_highlight_row #' . $name . ' tr.odd:hover td.sorting_2 { background-color: #E0FF84; } .ex_highlight_row #' . $name . ' tr.odd:hover td.sorting_3 { background-color: #DBFF70; } '); if ($name == "artikeltabelle") { //$js="alert($(nTds[0]).text()); //window.location.href='index.php?module=artikel&action=edit&nummer='+$(nTds[0]).text();"; } else $js = ""; $anzahl_datensaetze = $this->app->erp->Firmendaten("standard_datensaetze_datatables"); if ($anzahl_datensaetze != 0 && $anzahl_datensaetze != "10" && $anzahl_datensaetze != "25" && $anzahl_datensaetze != "50" && $anzahl_datensaetze != "200" && $anzahl_datensaetze != "1000" && $anzahl_datensaetze != "") { $extra_anzahl_datensaetze = $anzahl_datensaetze . ","; } else { if ($anzahl_datensaetze > 0) { //$extra_anzahl_datensaetze=$anzahl_datensaetze.","; } else { $extra_anzahl_datensaetze = ''; $anzahl_datensaetze = '10'; } } if(isset($maxrows) && ($maxrows > 0) && ($maxrows < $anzahl_datensaetze)) { $extra_anzahl_datensaetze = $maxrows; if($anzahl_datensaetze > $maxrows)$anzahl_datensaetze = $maxrows; } if (!empty($sumcolnumber) && $sumcolnumber >= 1) { $sumcolnumber = $sumcolnumber - 1; $footercallback = '"footerCallback": function ( row, data, start, end, display ) { var api = this.api(), data; // Remove the formatting to get integer data for summation var intVal = function ( i ) { return typeof i === \'string\' ? i.replace(/[\$,.]/g, \'\')*1 : typeof i === \'number\' ? i : 0; }; // Total over all pages data = api.column( ' . $sumcolnumber . ' ).data(); total = data.length ? data.reduce( function (a, b) { if(String(a) == \'\')a = 0; if(String(b) == \'\')b = 0; return intVal(a) + intVal(b); } ) : 0; // Total over this page data = api.column( ' . $sumcolnumber . ', { page: \'current\'} ).data(); pageTotal = data.length ? data.reduce( function (a, b) { if(String(a) == \'\')a = 0; if(String(b) == \'\')b = 0; return intVal(a) + intVal(b); } ) : 0; $( api.column( ' . $sumcolnumber . ' ).footer() ).html( \' \' + pageTotal + \'\' ); }, '; } if(!empty($sumcol) && is_array($sumcol)) { $footercallback = '"footerCallback": function ( row, data, start, end, display ) { var api = this.api(), data; // Remove the formatting to get integer data for summation var intVal = function ( i ) { return typeof i === \'string\' ? i.replace(/[\$,.]/g, \'\')*1 : typeof i === \'number\' ? i : 0; }; '; foreach($sumcol as $_sumcol) { $_sumcol = $_sumcol - 1; $footercallback .= ' // Total over all pages data = api.column( ' . $_sumcol . ' ).data(); total = data.length ? data.reduce( function (a, b) { if(String(a) == \'\')a = 0; if(String(b) == \'\')b = 0; var stra = (a+\'\').replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\'); if(stra.indexOf(\'.\') >= 0 && stra.indexOf(\',\') >= 0 ) { a = parseFloat(stra.replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\',\',\'.\')); }else{ if(stra.indexOf(\'.\') >= 0) { a = parseFloat(stra); }else{ if(stra.indexOf(\',\') >= 0) { a = parseFloat(stra.replace(\',\',\'.\')); }else{ a = parseFloat(stra); } } } var strb = (b+\'\').replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\'); if(strb.indexOf(\'.\') >= 0 && strb.indexOf(\',\') >= 0 ) { b = parseFloat(strb.replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\',\',\'.\')); }else{ if(strb.indexOf(\'.\') >= 0) { b = parseFloat(strb); }else{ if(strb.indexOf(\',\') >= 0) { b = parseFloat(strb.replace(\',\',\'.\')); }else{ b = parseFloat(strb); } } } return (a+b).toFixed(2); return intVal(a) + intVal(b); } ) : 0; // Total over this page data = api.column( ' . $_sumcol . ', { page: \'current\'} ).data(); pageTotal = data.length ? data.reduce( function (a, b) { if(String(a) == \'\')a = 0; if(String(b) == \'\')b = 0; var stra = (a+\'\').replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\'); if(stra.indexOf(\'.\') >= 0 && stra.indexOf(\',\') >= 0 ) { a = parseFloat(stra.replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\',\',\'.\')); }else{ if(stra.indexOf(\'.\') >= 0) { a = parseFloat(stra); }else{ if(stra.indexOf(\',\') >= 0) { a = parseFloat(stra.replace(\',\',\'.\')); }else{ a = parseFloat(stra); } } } var strb = (b+\'\').replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\'); if(strb.indexOf(\'.\') >= 0 && strb.indexOf(\',\') >= 0 ) { b = parseFloat(strb.replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\'.\',\'\').replace(\',\',\'.\')); }else{ if(strb.indexOf(\'.\') >= 0) { b = parseFloat(strb); }else{ if(strb.indexOf(\',\') >= 0) { b = parseFloat(strb.replace(\',\',\'.\')); }else{ b = parseFloat(strb); } } } return (a+b).toFixed(2); return intVal(a) + intVal(b); } ) : 0; // if(typeof pageTotal === \'int\') if(data.length > 1) { //pageTotal = pageTotal / 100.0; text = pageTotal.toString(); var parts = text.toString().split("."); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, "."); showTotal = parts.join(","); } else if(data.length > 0) { pageTotal = pageTotal.replace(/,/, "A"); pageTotal = pageTotal.replace(/A/, "\,"); showTotal = pageTotal; } else showTotal = 0; $( api.column( ' . $_sumcol . ' ).footer() ).html( \'Σ \' + showTotal + \'\' ); '; } $footercallback .= '},'; }elseif (!empty($sumcol) && $sumcol >= 1) { $sumcol = $sumcol - 1; $footercallback = '"footerCallback": function ( row, data, start, end, display ) { var api = this.api(), data; // Remove the formatting to get integer data for summation var intVal = function ( i ) { return typeof i === \'string\' ? i.replace(/[\$,.]/g, \'\')*1 : typeof i === \'number\' ? i : 0; }; // Total over all pages data = api.column( ' . $sumcol . ' ).data(); total = data.length ? data.reduce( function (a, b) { if(String(a) == \'\')a = 0; if(String(b) == \'\')b = 0; return intVal(a.toString().replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\').replace(/[^\.\,\d\-]/g, \'\').replace(\',\',\'.\')) + intVal(b.toString().replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\').replace(/[^\.\,\d\-]/g, \'\').replace(\',\',\'.\')); } ) : 0; // Total over this page data = api.column( ' . $sumcol . ', { page: \'current\'} ).data(); pageTotal = data.length ? data.reduce( function (a, b) { return intVal(a.toString().replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\').replace(/[^\.\,\d\-]/g, \'\').replace(\',\',\'.\')) + intVal(b.toString().replace(\'\',\'\').replace(\'\',\'\').replace(\'\',\'\').replace(/[^\.\,\d\-]/g, \'\').replace(\',\',\'.\')); } ) : 0; // if(typeof pageTotal === \'int\') if(data.length > 1) { pageTotal = pageTotal / 100.0; text = pageTotal.toString(); var parts = text.toString().split("."); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, "."); showTotal = parts.join(","); } else if(data.length > 0) { pageTotal = pageTotal.replace(/,/, "A"); pageTotal = pageTotal.replace(/A/, "\,"); showTotal = pageTotal; } else showTotal = 0; $( api.column( ' . $sumcol . ' ).footer() ).html( \'Σ \' + showTotal + \'\' ); }, '; } if ($name == "versandoffene" || $name == "auftragscockpit_list") { $bStateSave = "false"; $cookietime = 0; } else { $bStateSave = "true"; $cookietime = 365 * 24 * 60 * 60; // 1 Jahr } $iframe = $this->app->Secure->GetGET("iframe"); if($this->app->erp->Firmendaten("datatables_export_button_flash")=="1") { $tabletools = ' "dom": \'lfrtipB\', "buttons": [ \'copy\', \'csv\', \'excel\', , \'pdf\' , \'print\' ], '; if(!empty($disablebuttons))$tabletools = ''; } $_module = $this->app->Secure->GetGET("module"); $_action = $this->app->Secure->GetGET("action"); $directlink=0; if( (($this->app->erp->RechteVorhanden($_module,"edit") && $_action=="list") || (!empty($forcerowclick))) && !empty($rowclick)) { if($menucol > 0 || (empty($heading)?0:count($heading)) > 0) { if(!empty($doppelteids)){ $doppelteids = '\-[1-9]{1}[0-9]*'; }else{ $doppelteids = ''; } if(!empty($menucol) && $menucol > 0) { $tmpmenucol=$menucol; } else { $tmpmenucol=!empty($heading)?(empty($heading)?0:count($heading))-1:0; } if(!empty($menucol) && $menucol > 0 || (empty($heading)?0:count($heading)) > 0) { if(isset($doppelteids)&& $doppelteids){ $doppelteids = '\-[1-9]{1}[0-9]*'; } }else{ $doppelteids = ''; } if(!empty($menucol) && $menucol > 0) { $tmpmenucol=$menucol; } else { $tmpmenucol=(empty($heading)?0:count($heading))-1; } if(empty($rowclickaction) || $rowclickaction=="") { $rowclickaction="edit"; } $jsscriptcallback =' var str = aData[' . $tmpmenucol . ']; if (str.match(\'string\')) { str = str.replace("string", ""); var menuid = str; } else { var match = str.match(/[1-9]{1}[0-9]*'.$doppelteids.'/); '.($doppelteids==''?'var menuid = parseInt(match[0], 10);':'var menuid = match[0];').' } window.location.href=\'index.php?module='.$_module.'&action='.$rowclickaction.'&id=\'+menuid;'; if(!isset($rowcallback_gt)) { $rowcallback_gt = 0; } else{ $directlink = 1; } } else { if(!isset($rowcallback_gt)) { $rowcallback_gt=-1; } $checkmenucol=0; } } if($directlink || (!empty($rowclickaction) && !empty($jsscriptcallback))) { $this->app->Tpl->Add('JAVASCRIPT','function setCursorTmp'.$name.'() {$("#'.$name.' tbody td").css( \'cursor\', \'pointer\' );}'); $this->app->Tpl->Add('JQUERYREADY',' setInterval("setCursorTmp'.$name.'()",1000);'); } if(empty($smodule)) { $smodule = !empty($_module)?$_module:''; } $aLengthMenuArr = array(10, 25, 50,200,1000); if((isset($extra_anzahl_datensaetze) && (int)$extra_anzahl_datensaetze > 0) || (isset($maxrows) && $maxrows > 0)) { $_aLengthMenuArr = $aLengthMenuArr; $aLengthMenuArr = null; foreach($_aLengthMenuArr as $k => $v) { if(isset($maxrows) && (int)$maxrows > 0) { if($v > $maxrows) { if(!empty($aLengthMenuArr)) { if($aLengthMenuArr[(empty($aLengthMenuArr)?0:count($aLengthMenuArr))-1] < $maxrows) { $aLengthMenuArr[] = (int)$maxrows; break; } }else{ $aLengthMenuArr[] = (int)$maxrows; break; } } } if((isset($extra_anzahl_datensaetze) && (int)$extra_anzahl_datensaetze > 0)) { if(empty($aLengthMenuArr)) { if($extra_anzahl_datensaetze < $v) { $aLengthMenuArr[] = (int)$extra_anzahl_datensaetze; } }elseif(!in_array($extra_anzahl_datensaetze, $aLengthMenuArr)) { if($v > $extra_anzahl_datensaetze) { $aLengthMenuArr[] = (int)$extra_anzahl_datensaetze; }elseif($v < $extra_anzahl_datensaetze) { if($k == count($_aLengthMenuArr)-1) { $aLengthMenuArr[] = (int)$extra_anzahl_datensaetze; } } } } if(empty($maxrows) || (int)$v < $maxrows) { $aLengthMenuArr[] = (int)$v; } } } $aLengthMenuArrStr = implode(',', $aLengthMenuArr); if(!isset($columnfilter)) { if(empty($extracallback)) { $extracallback = ''; } $extracallback .= ' if(typeof json != \'undefinded\' && typeof json.iTotalRecords != \'undefined\' && json.iTotalRecords ) { $(\'#' . $name . '\').toggleClass(\'trsnotempty\',true); }else{ $(\'#' . $name . '\').toggleClass(\'trsnotempty\',false); } setTimeout(function(){ var throws = $(\'#'.$name.' > thead > tr\'); if(typeof throws[1] != \'undefined\') { var emptytd = $(\'#'.$name.' > tbody > tr > td.dataTables_empty\'); $(throws[1]).toggleClass(\'allowhide\', true); if(emptytd.length) { var trausblenden = !$(\'#' . $name . '\').hasClass(\'trsnotempty\'); $(throws[1]).find(\'input\').each(function(){ if(!$(this).hasClass(\'search_init\')) { trausblenden = false; } }); $(\'#'.$name.'_filter input\').each(function() { var tmpval = $(this).val()+\'\'; if(tmpval != \'\') { trausblenden = false; $(throws[1]).toggleClass(\'allowhide\', false); } }); if(true) { $(\'.table_filter\').each(function(){ if($(this).css(\'display\') != \'none\') { trausblenden = false; $(throws[1]).toggleClass(\'allowhide\', true); } }); if(trausblenden) { $(throws[1]).hide(); $(throws[1]).toggleClass(\'forcehide\', true); } } }else { $(throws[1]).toggleClass(\'forcehide\', false); $(throws[1]).toggleClass(\'allowhide\', true); var trausblenden = true; $(throws[1]).find(\'input\').each(function(){ if(!$(this).hasClass(\'search_init\')) { trausblenden = false; } }); $(\'#'.$name.'_filter input\').each(function() { var tmpval = $(this).val()+\'\'; if(tmpval != \'\') { trausblenden = false; $(throws[1]).toggleClass(\'allowhide\', true); } }); if(true) { $(\'.table_filter\').each(function(){ if($(this).css(\'display\') != \'none\'){ trausblenden = false; $(throws[1]).toggleClass(\'allowhide\', true); } }); } if(!trausblenden) { $(throws[1]).show(300); }else{ $(throws[1]).show(300); //$(throws[1]).hide(300); } } } },100); '; } if(!empty($tageditor)) { if(empty($extracallback)) { $extracallback = ''; } $extracallback .= ' window.setTimeout(function() { $(\'.tageditor\').tagEditor({ sortable:false, onChange: function(field, editor, tags) { return false; }, beforeTagSave: function(field, editor, tags, tag, val) { return false; }, beforeTagDelete: function(field, editor, tags, val) { return false; } }); // Input-Feld mit Tag-Liste nach dem ersten Ausführen löschen. // Ansonsten werden Tags mehrfach gerendert. Jeder aktivierter Filter löst ein zusätzliches Rendering aus. // Grund für dieses Verhalten sind die zusätzlichen AJAX-Requests pro aktiviertem Filter. $(\'input.tageditor\').remove(); $(\'#' . $name . '\').find(\'div.tag-editor-delete\').hide(); $(\'#' . $name . '\').find(\'ul.tag-editor\').prop(\'disabled\',true); $(\'#' . $name . '\').find(\'ul.tag-editor\').off(\'click\'); $(\'#' . $name . '\').find(\'ul.tag-editor\').off(\'paste\'); $(\'#' . $name . '\').find(\'ul.tag-editor\').off(\'keydown\'); $(\'#' . $name . '\').find(\'ul.tag-editor\').off(\'keypress\'); }, 100); '; } if ($name == "versandoffene" || $name == "auftragscockpit_list") { $bStateSave = "false"; $cookietime = 0; } else { $bStateSave = "true"; $cookietime = 365 * 24 * 60 * 60; // 1 Jahr } if (!empty($groupcol)) { $rowgroupDataSrc = null; if (is_int($groupcol)) { $rowgroupDataSrc = (string)$groupcol; } if (is_array($groupcol)) { $rowgroupDataSrc = '[' . implode(', ', $groupcol) . ']'; } } $rowgroupOption = !empty($rowgroupDataSrc) ? 'rowGroup: { dataSrc: ' . $rowgroupDataSrc . ' }, ' : 'rowGroup: false, '; $this->app->Tpl->Add('DATATABLES', ' var currentdate = new Date(); var datetime = "'.$this->app->Tpl->pruefeuebersetzung('Stand').': " + currentdate.getDay() + "."+currentdate.getMonth() + "." + currentdate.getFullYear() + " um " + currentdate.getHours() + ":" + currentdate.getMinutes() + ":" + currentdate.getSeconds() + " '.$this->app->Tpl->pruefeuebersetzung('von').' ' . $this->app->User->GetName() . '"; // Add custom button type $.fn.dataTable.ext.buttons.excelFormatMoney = { extend: \'excelHtml5\', _exportTextarea: $(\''); } elseif($type === 'submit'){ $this->app->Tpl->Add($target, ''); } elseif($type==='link'){ $this->app->Tpl->Add($target, !empty($v['link']) ? $v['link'] : ''); } elseif($type === 'radiobutton'){ if(isset($v['optionen'])) { $first = true; foreach($v['optionen'] as $k2 => $v2) { if(!$first) { $this->app->Tpl->Add($target,'
'); } $this->app->Tpl->Add($target,''); $first = false; } } } else{ if(!empty($v['replace'])) { switch (strtolower($v['replace'])) { case 'artikel': $value = $this->app->erp->ReplaceArtikel(0, $value, 0); if(!isset($v['autocomplete'])) { $v['autocomplete'] = 'artikelnummer'; } break; case 'adresse': $value = $this->app->erp->ReplaceAdresse(0, $value, 0); if(!isset($v['autocomplete'])) { $v['autocomplete'] = 'adresse'; } break; case 'lagerplatz': $value = $this->app->erp->ReplaceLagerPlatz(0, $value, 0); if(!isset($v['autocomplete'])) { $v['autocomplete'] = 'lagerplatz'; } break; case 'lager': $value = $this->app->erp->ReplaceLager(0, $value, 0); if(!isset($v['autocomplete'])) { $v['autocomplete'] = 'lager'; } break; } } $this->app->Tpl->Add($target,''); } if(!empty($v['info'])) { $this->app->Tpl->Add($target,' '.$v['info'].''); } $this->app->Tpl->Add($target,'
'); }else{ $this->app->Tpl->Add($target, ''); } if(empty($options['nodiv'])) { $this->app->Tpl->Add($target, ''); } if(!empty($options['form'])) { $this->app->Tpl->Add($target, ''); } if(!empty($options['template'])){ if(is_numeric($options['template']) || is_bool($options['template'])) { $this->app->Tpl->Parse('PAGE', 'tabview.tpl'); } else{ if(substr($options['template'],-4) !== '.tpl'){ $options['template'] .= '.tpl'; } $this->app->Tpl->Parse('PAGE', $options['template']); } } } function AddSimpleForm($table, $fields, $options = null, $obj = null) { $target = 'TAB1'; $funktionsave = 'save'.$table; $funktiondelete = 'delete'.$table; $funktiondget = 'get'.$table; $element = $table.'popup'; $minwidth = 1200; $afterclose = ''; $livetabelle = ''; $save = 'SPEICHERN'; $onsave = ''; $weiteretabelle = ''; $weiteretabellekey = ''; $prefix = $table; $functionafterdelete = ''; $functionbeforedelete = ''; $functionafterget = ''; $functionaftersave = ''; $legend = 'Einstellungen'; $title = ''; $nocreate = false; $nocreatebutton = false; $editbutton = ''; $edittext = 'ändern'; $addbuttonafter = ''; $beforebutton = ''; $afterbutton = ''; $btnclass = 'btnGreen'; $module = $this->app->Secure->GetGET('module'); $action = $this->app->Secure->GetGET('action'); $id = $this->app->Secure->GetGET('id'); $optionfields = array('target','legend','element','minwidth','afterclose','livetabelle','save', 'onsave','funktionget','funktiondelete','funktionsave','weiteretabelle','weiteretabellekey', 'prefix','id','module','action','functionbeforedelete','functionafterdelete','functionafterget','functionaftersave', 'title','nocreate','edittext','editbutton','addbuttonafter','beforebutton','afterbutton','btnclass','nocreatebutton'); if($options) { foreach($optionfields as $option) { if(isset($options[$option])) { $$option = $options[$option]; } } } $btntarget = $target; if(!empty($options['btntarget'])) { $btntarget = $options['btntarget']; } if(!empty($options['width'])) { $width = $options['width']; } if(!empty($options['left'])) { $left = $options['left']; } if(empty($title)){ $title = $legend; } $cmd = $this->app->Secure->GetGET('cmd'); if($cmd == $funktiondget) { $data = null; $id = (int)$this->app->Secure->GetPOST('id'); if($id) { $data = $this->app->DB->SelectArr("SELECT * FROM $table WHERE id = '$id' LIMIT 1"); if($data) { $data = reset($data); foreach($fields as $k => $v) { $type = 'text'; if(isset($v['type'])) { $type = $v['type']; } if($type === 'legend') { continue; } if(isset($v['autocomplete'])) { switch($v['autocomplete']) { case 'projektname': $v['replace'] = 'ProjektNameDyn'; break; case 'artikelnummer': $v['replace'] = 'Artikel'; break; case 'kunde': $v['replace'] = 'Kunde'; break; case 'lieferant': $v['replace'] = 'Lieferant'; break; case 'retoure': case 'rechnung': $v['replace'] = ucfirst($v['autocomplete']); break; } } if($type === 'menge') { $v['replace'] = 'Menge'; } if(isset($v['replace']) && $v['replace'] != '') { $methodname = 'Replace'.$v['replace']; if(method_exists($this->app->erp, $methodname)) { $data[$k] = $this->app->erp->$methodname(0, $data[$k], 0); } } if($type === 'datum') { if(strpos($data[$k],'-')) { $data[$k] = $this->app->String->Convert($data[$k],'%1-%2-%3','%3.%2.%1'); } } if($type === 'datetime') { if(strpos($data[$k],'-')) { $data[$k] = $this->app->String->Convert($data[$k],'%1-%2-%3 %4','%3.%2.%1 %4'); } } } } } if(!$data) { foreach($fields as $k => $v) { if(isset($v['default'])) { $data[$k] = $v['default']; }else{ $data[$k] = ''; } } }else{ foreach($fields as $k=> $v) { if(isset($v['defaultonempty']) && empty($data[$k])) { $data[$k] = $v['defaultonempty']; } } } if($functionafterget && $obj && method_exists($obj, $functionafterget)) { $data = $obj->$functionafterget($id, $data); } echo json_encode($data); $this->app->ExitXentral(); } if($cmd == $funktiondelete) { $id = (int)$this->app->Secure->GetPOST('id'); $ret = array('status'=>0); if($id) { $id = $this->app->DB->Select("SELECT id FROM $table WHERE id = '$id' LIMIT 1"); } if($id) { if($functionbeforedelete && $obj && method_exists($obj, $functionbeforedelete)) { $obj->$functionbeforedelete($id); } $this->app->DB->Delete("DELETE FROM $table WHERE id = '$id' LIMIT 1"); if($weiteretabelle != '' && $weiteretabellekey != '') { $this->app->DB->Delete("DELETE FROM $weiteretabelle WHERE $weiteretabellekey = '$id' LIMIT 1"); } if($functionafterdelete && $obj && method_exists($obj, $functionafterdelete)) { $obj->$functionafterdelete($id); } $ret = array('status'=>1); } echo json_encode($ret); $this->app->ExitXentral(); } if(!empty($cmd) && $cmd == $funktionsave) { $id = (int)$this->app->Secure->GetPOST('id'); $ret = array('status'=>0); if($id) { $id = $this->app->DB->Select("SELECT id FROM $table WHERE id = '$id' LIMIT 1"); } if(!$id && !$nocreate) { foreach($fields as $k => $v) { if(!empty($v['unique'])) { $data[$k] = $this->app->Secure->GetPOST($k); if($type === 'menge') { $v['replace'] = 'Menge'; } if(isset($v['autocomplete'])) { switch($v['autocomplete']) { case 'projektname': $v['replace'] = 'ProjektNameDyn'; break; case 'artikelnummer': $v['replace'] = 'Artikel'; break; case 'kunde': $v['replace'] = 'Kunde'; break; case 'lieferant': $v['replace'] = 'Lieferant'; break; case 'lieferschein': case 'rechnung': case 'retoure': $v['replace'] = ucfirst($v['autocomplete']); break; } } if(isset($v['replace']) && $v['replace'] != '') { $methodname = 'Replace'.$v['replace']; if(method_exists($this->app->erp, $methodname)) { $data[$k] = $this->app->DB->real_escape_string($this->app->erp->$methodname(1, $data[$k], 1)); } } if(!empty($data[$k])) { if($this->app->DB->Select("SELECT id FROM $table WHERE `$k` = '".$data[$k]."' ".(!empty($v['uniquewhere'])?' AND '.$v['uniquewhere']:'').' LIMIT 1')) { echo json_encode( ['status'=>0, 'error'=>'Es existiert bereits ein Eintrag mit dem Feld: '. (!empty($v['bezeichnung'])?$v['bezeichnung']:$k) ] ); $this->app->ExitXentral(); } } } if(!empty($v['notempty'])) { $data[$k] = $this->app->Secure->GetPOST($k); if($type === 'menge') { $v['replace'] = 'Menge'; } if(isset($v['autocomplete'])) { switch($v['autocomplete']) { case 'projektname': $v['replace'] = 'ProjektNameDyn'; break; case 'artikelnummer': $v['replace'] = 'Artikel'; break; case 'kunde': $v['replace'] = 'Kunde'; break; case 'lieferant': $v['replace'] = 'Lieferant'; break; case 'lieferschein': case 'rechnung': case 'retoure': $v['replace'] = ucfirst($v['autocomplete']); break; } } if(isset($v['replace']) && $v['replace'] != '') { $methodname = 'Replace'.$v['replace']; if(method_exists($this->app->erp, $methodname)) { $data[$k] = $this->app->DB->real_escape_string($this->app->erp->$methodname(1, $data[$k], 1)); } } if(empty($data[$k])) { echo json_encode( [ 'status'=>0, 'error'=>'Das Feld '.(!empty($v['bezeichnung'])?$v['bezeichnung']:$k).' darf nicht leer sein: ' ] ); $this->app->ExitXentral(); } } } $this->app->DB->Insert("INSERT INTO $table (id) VALUES (NULL)"); $id = $this->app->DB->GetInsertID(); } if($id) { $ret = array('status'=>1); $data = null; $bearbeiterex = false; foreach($fields as $k => $v) { if($k === 'bearbeiter') { $bearbeiterex = true; } $type = 'text'; if(isset($v['type'])) { $type = $v['type']; } if($type === 'legend' || $type === 'link') { continue; } $data[$k] = $this->app->Secure->GetPOST($k); if($type === 'menge') { $v['replace'] = 'Menge'; } if(isset($v['autocomplete'])) { switch($v['autocomplete']) { case 'projektname': $v['replace'] = 'ProjektNameDyn'; break; case 'artikelnummer': $v['replace'] = 'Artikel'; break; case 'kunde': $v['replace'] = 'Kunde'; break; case 'lieferant': $v['replace'] = 'Lieferant'; break; case 'lieferschein': case 'rechnung': case 'retoure': $v['replace'] = ucfirst($v['autocomplete']); break; } } if(isset($v['replace']) && $v['replace'] != '') { $methodname = 'Replace'.$v['replace']; if(method_exists($this->app->erp, $methodname)) { $data[$k] = $this->app->DB->real_escape_string($this->app->erp->$methodname(1, $data[$k], 1)); } } if($type === 'datum') { if(strpos($data[$k],'.')) { $data[$k] = $this->app->String->Convert($data[$k],'%3.%2.%1','%1-%2-%3'); } } elseif($type === 'datetime') { if(strpos($data[$k],'.')) { $data[$k] = $this->app->String->Convert($data[$k],'%3.%2.%1 %4','%1-%2-%3 %4'); } } } $this->app->DB->UpdateArr($table,$id,'id',$data); if(!$bearbeiterex && empty($options['nobearbeiter'])) { $bearbeiter = $this->app->DB->real_escape_string($this->app->User->GetName()); $this->app->DB->Update("UPDATE $table SET bearbeiter = '$bearbeiter' WHERE id = '$id' LIMIT 1"); } if($functionaftersave && $obj && method_exists($obj, $functionaftersave)) { $obj->$functionaftersave($id); } } echo json_encode($ret); $this->app->ExitXentral(); } $updatetable = ''; if($livetabelle != '') { $updatetable .= 'var oTable = $(\'#'.ltrim($livetabelle,'#').'\').DataTable(); oTable.ajax.reload(); '; } if(!is_numeric($minwidth)){ $minwidth = "'".$minwidth."'"; } if(!empty($beforebutton)) { $this->app->Tpl->Add($target, $beforebutton); } if(!$nocreate && !$nocreatebutton){ $btn = ''; if(!empty($addbuttonafter)) { $this->app->Tpl->Add('JQUERYREADY',' '.$addbuttonafter.'.after(\''.$btn.'\'); '); }else{ $this->app->Tpl->Add($btntarget, $btn); } } if(!empty($editbutton)){ $btn = ''; if(!empty($addbuttonafter)) { $this->app->Tpl->Add('JQUERYREADY',' '.$addbuttonafter.'.after(\''.$btn.'\'); '); }else{ $this->app->Tpl->Add($btntarget, $btn); } } if(!empty($afterbutton)) { $this->app->Tpl->Add($target, $afterbutton); } $this->DrawSimpleFormDiv($target, $element, $fields, $prefix, $legend, $options); $this->app->Tpl->Add($target, ' '); $this->app->Tpl->Add('JQUERYREADY',' $(\'#'.$element.'\').dialog( { modal: true, autoOpen: false, minWidth: '.$minwidth.', title:\''.$title.'\', buttons: { '); $this->app->Tpl->Add( 'JQUERYREADY', ' \'{|ABBRECHEN|}\': function() { $(this).dialog(\'close\'); }' ); if($save) { $this->app->Tpl->Add( 'JQUERYREADY', ' ,'.$save.': function() { var fehler = \'\'; '); foreach($fields as $k => $v) { if(isset($v['notempty']) && $v['notempty']) { $this->app->Tpl->Add('JQUERYREADY',' if($(\'#'.$prefix.'_'.$k.'\').val()+\'\' === \'\')fehler = \'Bitte '.(isset($v['bezeichnung'])?$v['bezeichnung']:ucfirst($k)).' ausfüllen\'; '); } } $this->app->Tpl->Add('JQUERYREADY',' if(fehler == \'\') { $.ajax({ url: \'index.php?module='.$module.'&action='.$action.''.($id?'&id='.$id:'').'&cmd='.$funktionsave.'\', type: \'POST\', dataType: \'json\', data: { id:$(\'#'.$prefix.'_id\').val() '); foreach($fields as $k => $v) { $type = 'text'; if(isset($v['type'])) { $type = $v['type']; } if($type === 'legend') { continue; } if($type === 'checkbox'){ $this->app->Tpl->Add('JQUERYREADY', ' ,' . $k . ':($(\'#' . $prefix . '_' . $k . '\').prop(\'checked\')?1:0) '); }elseif($type === 'radiobutton'){ $this->app->Tpl->Add('JQUERYREADY', ' ,' . $k . ':($(\'input[name=' . $prefix . '_' . $k . ']:checked\').val()) '); }else{ $this->app->Tpl->Add('JQUERYREADY',' ,'.$k.':($(\'#'.$prefix.'_'.$k.'\').val()) '); } } $this->app->Tpl->Add('JQUERYREADY',' }, success: function(data) { if(typeof data.status != \'undefined\' && data.status == 0 && typeof data.error != \'undefined\') { alert(data.error); return; } $(\'#'.$element.'\').dialog(\'close\'); '.$updatetable.' '.$onsave.' } }); }else alert(fehler); }' ); } $this->app->Tpl->Add('JQUERYREADY', ' }, close: function(event, ui){ '.$afterclose.' } }); $(\'#'.$element.'\').on("dialogopen",function(){ '); if(!empty($width)) { $this->app->Tpl->Add('JQUERYREADY', '$(\'#'.$element.'\').parent().css(\'width\',\''.$width.'\');'); } if(!empty($left)) { $this->app->Tpl->Add('JQUERYREADY', '$(\'#'.$element.'\').parent().css(\'left\',\''.$left.'\');'); } $this->app->Tpl->Add('JQUERYREADY', ' }); '); } function AutoSaveFormular($prefix, $fields, $options = null) { /** @var SystemConfigModule $systemConfig */ $systemConfig = $this->app->Container->get('SystemConfigModule'); $target = 'TAB1'; $finaltarget = 'PAGE'; $template = 'tabview.tpl'; $legend = '{|Einstellungen|}'; if($options && isset($options['target']))$target = $options['target']; if($options && isset($options['finaltarget']))$finaltarget = $options['finaltarget']; if($options && isset($options['template']))$template = $options['template']; if($options && isset($options['legend']))$legend = $options['legend']; $this->app->Tpl->Add($target, '
'.$legend.''); if($fields) { foreach($fields as $k => $v) { $type = 'text'; if(isset($v['type'])) { $type = $v['type']; } $size = ''; if(!empty($v['size'])) { $size = $v['size']; } $placeholder = ''; if(!empty($v['placeholder'])) { $placeholder = $v['placeholder']; } $bezeichnung = ucfirst($k); if(isset($v['bezeichnung'])) { $bezeichnung = $v['bezeichnung']; } if($type === 'legend') { $this->app->Tpl->Add($target,'
'.$bezeichnung.''); }else{ $name = $k; if(substr(trim($bezeichnung), -1) !== ':') { $bezeichnung .= ':'; } $value = $this->app->erp->GetKonfiguration($prefix.'_'.$k); $isNewConfigValue = false; if(empty($value)){ $value = $systemConfig->tryGetValue($prefix, $k); if(!empty($value)){ $isNewConfigValue = true; } } if($type !== 'select') { $this->app->Tpl->Add($target, '' ); }else{ $this->app->Tpl->Add($target, '' ); } $delimiter = '_'; if($isNewConfigValue){ $delimiter = '__'; } $this->app->YUI->AutoSaveKonfiguration($name, $prefix.$delimiter.$k); } } } $this->app->Tpl->Add($target, '
'); $this->app->Tpl->Parse($finaltarget, $template); } function DisableFormular($fieldname,$filter) { if(!is_array($filter))return; $tpl = '$(document).ready(function() { disablefunction'.$fieldname.'(); $(\'input[name="'.$fieldname.'"]\').on(\'change\',function(){ disablefunction'.$fieldname.'(); }); $(\'select[name="'.$fieldname.'"]\').on(\'change\',function(){ disablefunction'.$fieldname.'(); }); }); function disablefunction'.$fieldname.'() { var usestandard = true; var disableformulareltyp'.$fieldname.' = \'\'; if($(\'input[name="'.$fieldname.'"]\').is(\'input[type="checkbox"]\'))disableformulareltyp'.$fieldname.' = \'checkbox\'; if($(\'input[name="'.$fieldname.'"]\').is(\'input[type="radio"]\'))disableformulareltyp'.$fieldname.' = \'radio\'; if($(\'select[name="'.$fieldname.'"]\').is(\'select\'))disableformulareltyp'.$fieldname.' = \'select\'; if(disableformulareltyp'.$fieldname.' != \'\') { '; foreach($filter as $k => $f) { if($f)$tpl .= '$(\'.'.$f.', .'.$f.' input,.'.$f.' select ,.'.$f.' textarea \').prop(\'disabled\',\'\');'; } foreach($filter as $k => $f) { if($f) { $tpl .= 'if(disableformulareltyp'.$fieldname.' == \'checkbox\') { '; if($k == 'checked' || $k == 1) { $tpl .= 'if($(\'input[name="'.$fieldname.'"]\').prop(\'checked\')) { $(\'.'.$f.', .'.$f.' input,.'.$f.' select ,.'.$f.' select \').prop(\'disabled\',\'disabled\'); usestandard = false; } '; }elseif($k == 'unchecked' || !$k){ $tpl .= 'if(!$(\'input[name="'.$fieldname.'"]\').prop(\'checked\')) { $(\'.'.$f.', .'.$f.' input,.'.$f.' select ,.'.$f.' select \').prop(\'disabled\',\'disabled\'); usestandard = false; } '; } $tpl .= ' }else if(disableformulareltyp'.$fieldname.' == \'radio\') { $(\'input[name="'.$fieldname.'"]:checked\').first().each(function(){ if($(this).val() == \''.$k.'\') { $(\'.'.$f.', .'.$f.' input,.'.$f.' select,.'.$f.' select \').prop(\'disabled\',\'disabled\'); usestandard = false; } }); }else if(disableformulareltyp'.$fieldname.' == \'select\') { if($(\'select[name="'.$fieldname.'"]\').val() == \''.$k.'\') { $(\'.'.$f.', .'.$f.' input,.'.$f.' select,.'.$f.' select \').prop(\'disabled\',\'disabled\'); usestandard = false; } } '; } } foreach($filter as $k => $f) { if($f)$tpl .= 'if(usestandard){ $(\'.'.$f.', .'.$f.' input,.'.$f.' select,.'.$f.' select \').prop(\'disabled\',\'disabled\');}'; break; } $tpl .= ' } }'; $this->app->Tpl->Add('JAVASCRIPT',$tpl); } function HideFormular($fieldname, $filter) { if(!is_array($filter))return; $tpl = ' function hidefunction'.$fieldname.'() { var hideformulareltyp'.$fieldname.' = \'\'; var usestandard = true; if($(\'input[name="'.$fieldname.'"]\').is(\'input[type="checkbox"]\'))hideformulareltyp'.$fieldname.' = \'checkbox\'; if($(\'input[name="'.$fieldname.'"]\').is(\'input[type="radio"]\'))hideformulareltyp'.$fieldname.' = \'radio\'; if($(\'select[name="'.$fieldname.'"]\').is(\'select\'))hideformulareltyp'.$fieldname.' = \'select\'; if(hideformulareltyp'.$fieldname.' != \'\') { '; foreach($filter as $k => $_f) { if(preg_match('/^([a-zA-Z0-9\_\s]+)$/', $_f, $_matches)) { $fa = explode(' ',$_f); }else $fa = array($_f); foreach($fa as $f) { if($f !== '')$tpl .= '$(\'.'.$f.'\').css(\'display\',\'\');'; } } foreach($filter as $k => $_f) { if(preg_match('/^([a-zA-Z0-9\_\s]+)$/', $_f, $_matches)) { $fa = explode(' ',$_f); }else $fa = array($_f); foreach($fa as $f) { if($f) { $fa = explode(' ', $f); $tpl .= 'if(hideformulareltyp'.$fieldname.' == \'checkbox\') { '; if($k == 'checked' || $k == 1) { $tpl .= 'if($(\'input[name="'.$fieldname.'"]\').prop(\'checked\')) { $(\'.'.$f.'\').css(\'display\',\'none\'); usestandard = false; } '; }elseif($k == 'unchecked' || !$k){ $tpl .= 'if(!$(\'input[name="'.$fieldname.'"]\').prop(\'checked\')) { $(\'.'.$f.'\').css(\'display\',\'none\'); usestandard = false; } '; } $tpl .= ' }else if(hideformulareltyp'.$fieldname.' == \'radio\') { $(\'input[name="'.$fieldname.'"]:checked\').first().each(function(){ if($(this).val() == \''.$k.'\') { $(\'.'.$f.'\').css(\'display\',\'none\'); usestandard = false; } }); }else if(hideformulareltyp'.$fieldname.' == \'select\') { if($(\'select[name="'.$fieldname.'"]\').val() == \''.$k.'\') { $(\'.'.$f.'\').css(\'display\',\'none\'); usestandard = false; } } '; } } } foreach($filter as $k => $_f) { if(preg_match('/^([a-zA-Z0-9\_\s]+)$/', $_f, $_matches)) { $fa = explode(' ',$_f); }else $fa = array($_f); foreach($fa as $f) { if($f !== '')$tpl .= 'if(usestandard) { $(\'.'.$f.'\').css(\'display\',\'none\');}'; } break; } $tpl .= ' } } $(document).ready(function() { hidefunction'.$fieldname.'(); $(\'input[name="'.$fieldname.'"]\').on(\'change\',function(){ hidefunction'.$fieldname.'(); }); $(\'select[name="'.$fieldname.'"]\').on(\'change\',function(){ hidefunction'.$fieldname.'(); }); }); '; $this->app->Tpl->Add('JAVASCRIPT',$tpl); } function AutoSaveKonfiguration($feldname,$konfigurationsname,$success="") { $tpl = "$(\"[name='$feldname']\").change(function() { var wert = $.base64Encode( $(\"[name='$feldname']\").val()); if($(this).is(\"[type='checkbox']\") && !$(this).prop('checked'))wert = $.base64Encode(''); $.ajax({ type: \"POST\", url: \"index.php?module=ajax&action=autosavekonfiguration\", data: { name: \"$konfigurationsname\", value: wert } }).done(function( data ) { $success }); }); $(\"[name='$feldname']\").focusout(function() { var wert = $.base64Encode( $(\"[name='$feldname']\").val() ); if($(this).is(\"[type='checkbox']\") && !$(this).prop('checked'))wert = $.base64Encode(''); $.ajax({ type: \"POST\", url: \"index.php?module=ajax&action=autosavekonfiguration\", data: { name: \"$konfigurationsname\", value: wert } }) .done(function( data ) { $success }); }); "; $this->app->Tpl->Add('AUTOCOMPLETE',$tpl); } function AutoSaveUserParameter($feldname,$parametername,$success="") { $tpl = "$(\"[name='$feldname']\").change(function() { var wert = $.base64Encode( $(\"[name='$feldname']\").val() ); if($(this).is(\"[type='checkbox']\") && !$(this).prop('checked'))wert = $.base64Encode(''); $.ajax({ type: \"POST\", url: \"index.php?module=ajax&action=autosaveuserparameter\", data: { name: \"$parametername\", value: wert } }) .done(function( data ) { $success }); }); $(\"[name='$feldname']\").focusout(function() { var wert = $.base64Encode( $(\"[name='$feldname']\").val() ); if($(this).is(\"[type='checkbox']\") && !$(this).prop('checked'))wert = $.base64Encode(''); $.ajax({ type: \"POST\", url: \"index.php?module=ajax&action=autosaveuserparameter\", data: { name: \"$parametername\", value: wert } }) .done(function( data ) { $success }); }); "; $this->app->Tpl->Add('AUTOCOMPLETE',$tpl); } function ChartDB($sql, $parsetarget, $width, $height, $limitmin = 0, $limitmax = 100, $gridy = 5) { $result = $this->app->DB->SelectArr($sql); for ($i = 0;$i < (empty($result)?0:count($result));$i++) { $lables[] = $result[$i]['legende']; $values[] = $result[$i]['wert']; } $values = array_reverse($values, false); $lables = array_reverse($lables, false); $this->app->YUI->ChartAdd("#4040FF", $values); $this->app->YUI->Chart('TAB3', $lables, $width, $height, $limitmin, $limitmax, $gridy); } function Chart($parsetarget, $labels, $width = 400, $height = 200, $limitmin = 0, $limitmax = 100, $gridy = 5) { $werte = ''; $values = $labels; for ($i = 0;$i < (empty($values)?0:count($values)) - 1;$i++) { $werte = $werte . "'" . $values[$i] . "',"; } $werte = $werte . "'" . $values[$i + 1] . "'"; $this->app->Tpl->Set('LABELS', "[" . $werte . "]"); $this->app->Tpl->Set('CHART_WIDTH', $width); $this->app->Tpl->Set('CHART_HEIGHT', $height); $this->app->Tpl->Set('LIMITMIN', $limitmin); $this->app->Tpl->Set('LIMITMAX', $limitmax); $this->app->Tpl->Set('GRIDX', (empty($values)?0:count($values))); $this->app->Tpl->Set('GRIDY', $gridy); $this->app->Tpl->Parse($parsetarget, "chart.tpl"); } /** * @param string $popupId * @param string $title * @param string $url * @param string $formular * @param string $uniqueid * @param string $elementId * * @return string */ public function addConfirmPopup($popupId, $title, $url, $formular, $uniqueid = '', $elementId = '') { $this->app->Tpl->Set('POPUPID', $popupId); $this->app->Tpl->Set('UNIQUEID', $uniqueid); $this->app->Tpl->Set('ELEMENTID', $elementId); $this->app->Tpl->Set('POPUPTITLE', $title); $this->app->Tpl->Set('POPUPURL', $url); $this->app->Tpl->Set('POPUPFORMULAR', $formular); return $this->app->Tpl->OutputAsString('confirm_popup.tpl'); } function ChartAdd($color, $values) { $werte = ''; for ($i = 0;$i < (empty($values)?0:count($values)) - 1;$i++) { $werte = $werte . $values[$i] . ","; } $werte = $werte . $values[$i + 1]; $this->app->Tpl->Add('CHARTS', "c.add('', '$color', [ $werte]);"); } function DateiUploadNeuVersion($parsetarget, $datei) { $speichern = $this->app->Secure->GetPOST("speichern"); $module = $this->app->Secure->GetGET("module"); $action = $this->app->Secure->GetGET("action"); $id = $this->app->Secure->GetGET("id"); if($id)$this->app->Tpl->Set('ID',$id); if ($speichern != "") { $titel = $this->app->Secure->GetPOST("titel"); $beschreibung = $this->app->Secure->GetPOST("beschreibung"); $stichwort = $this->app->Secure->GetPOST("stichwort"); $this->app->Tpl->Set('TITLE', $titel); $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung); if ($_FILES['upload']['tmp_name'] == "") { $this->app->Tpl->Set('ERROR', "
Bitte wählen Sie eine Datei aus und laden Sie diese herauf!
"); $this->app->erp->EnableTab("tabs-2"); } else { //$fileid = $this->app->erp->CreateDatei($_FILES['upload']['name'],$titel,$beschreibung,"",$_FILES['upload']['tmp_name'],$this->app->User->GetName()); $this->app->erp->AddDateiVersion($datei, $this->app->User->GetName(), $_FILES['upload']['name'], "Neue Version", $_FILES['upload']['tmp_name']); header("Location: index.php?module=$module&action=$action&id=$id"); exit; } } $this->app->Tpl->Set('STARTDISABLE', ""); $this->app->Tpl->Parse($parsetarget, "datei_neudirekt.tpl"); } function DateiUpload($parsetarget, $objekt, $parameter, $optionen = null) { $speichern = $this->app->Secure->GetPOST("speichern"); $module = $this->app->Secure->GetGET("module"); $action = $this->app->Secure->GetGET("action"); $typ = $this->app->Secure->GetGET("typ"); $cmd = $this->app->Secure->GetGET("cmd"); if($cmd == 'up') { $sid = (int)$this->app->Secure->GetPOST("sid"); $sort = $this->app->DB->Select("SELECT sort FROM datei_stichwoerter WHERE id = '$sid' LIMIT 1"); $id = (int)$this->app->Secure->GetGET("id"); $objekt = $this->dateien_module_objekt_map($module); if(!preg_match('/[A-Za-z_]/', $objekt))$objekt=""; $parameter=$id; // fester filter $where = "s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0 AND s.sort <= '$sort'"; $sql = "SELECT s.id,s.sort FROM datei d LEFT JOIN datei_stichwoerter s ON d.id=s.datei LEFT JOIN (SELECT datei, max(version) as version FROM datei_version GROUP BY datei ) v2 ON v2.datei=d.id LEFT JOIN datei_version v ON v.datei=v2.datei AND v.version = v2.version WHERE $where ORDER BY s.sort DESC LIMIT 2 "; $query = $this->app->DB->SelectArr($sql); $status = 0; if($query && (empty($query)?0:count($query)) == 2) { $status = 1; $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[1]['sort']."' WHERE id = '".$query[0]['id']."' LIMIT 1"); $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[0]['sort']."' WHERE id = '".$query[1]['id']."' LIMIT 1"); } $arr = array('status'=>$status); echo json_encode($arr); exit; } if($cmd == 'down') { $sid = (int)$this->app->Secure->GetPOST("sid"); $sort = $this->app->DB->Select("SELECT sort FROM datei_stichwoerter WHERE id = '$sid' LIMIT 1"); $id = (int)$this->app->Secure->GetGET("id"); $objekt = $this->dateien_module_objekt_map($module); if(!preg_match('/[A-Za-z_]/', $objekt))$objekt=""; $parameter=$id; // fester filter $where = "s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0 AND s.sort >= '$sort'"; $sql = "SELECT s.id,s.sort FROM datei d LEFT JOIN datei_stichwoerter s ON d.id=s.datei LEFT JOIN (SELECT datei, max(version) as version FROM datei_version GROUP BY datei ) v2 ON v2.datei=d.id LEFT JOIN datei_version v ON v.datei=v2.datei AND v.version = v2.version WHERE $where ORDER BY s.sort LIMIT 2 "; $query = $this->app->DB->SelectArr($sql); $status = 0; if($query && (empty($query)?0:count($query)) == 2) { $status = 1; $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[1]['sort']."' WHERE id = '".$query[0]['id']."' LIMIT 1"); $this->app->DB->Update("UPDATE datei_stichwoerter SET sort = '".$query[0]['sort']."' WHERE id = '".$query[1]['id']."' LIMIT 1"); } $arr = array('status'=>$status); echo json_encode($arr); exit; } $_module = $module; $_action = $action; if($optionen && isset($optionen['module']))$module = $optionen['module']; if($optionen && isset($optionen['action']))$action = $optionen['action']; $id = $this->app->Secure->GetGET("id"); $sid = $this->app->Secure->GetGET("sid"); if($id)$this->app->Tpl->Set('ID', $id); if ($speichern != "") { if($parameter == '')$parameter = $id; if(isset($_POST['dateiv'])) { foreach($_POST['dateiv'] as $k => $v) { $name = $this->app->DB->real_escape_string($_POST['dateiname'][$k]); $titel = $this->app->DB->real_escape_string($_POST['dateititel'][$k]); $beschreibung = $this->app->DB->real_escape_string($_POST['beschreibung'][$k]); $stichwort = $this->app->DB->real_escape_string($_POST['dateistichwort'][$k]); //$getMime = explode('.', $name); //$mime = end($getMime); $data = explode(',', $v); $encodedData = str_replace(' ','+',$data[1]); $decodedData = base64_decode($encodedData); $this->app->Tpl->Set('TITLE', $titel); $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung); if ($v == "" ) { $this->app->Tpl->Set('ERROR', "
Keine Datei ausgewählt!
"); $this->app->erp->EnableTab("tabs-2"); } else { $fileid = $this->app->erp->CreateDatei($name, $titel, $beschreibung, "", $decodedData, $this->app->User->GetName()); // stichwoerter hinzufuegen $this->app->erp->AddDateiStichwort($fileid, $stichwort, $objekt, $parameter); } } if($_FILES['upload']['tmp_name'] == "") { header("Location: index.php?module=$_module&action=$_action&id=$id&sid=$sid".($typ!=''?"&typ=".$typ:'')); } } $titel = $this->app->Secure->GetPOST("titel"); $beschreibung = $this->app->Secure->GetPOST("beschreibung"); $stichwort = $this->app->Secure->GetPOST("stichwort"); $this->app->Tpl->Set('TITLE', $titel); $this->app->Tpl->Set('BESCHREIBUNG', $beschreibung); if ($_FILES['upload']['tmp_name'] == "" && empty($_POST['dateiv'])) { $this->app->Tpl->Set('ERROR', "
Keine Datei ausgewählt!
"); $this->app->erp->EnableTab("tabs-2"); } elseif($_FILES['upload']['tmp_name'] != '') { $fileid = $this->app->erp->CreateDatei($_FILES['upload']['name'], $titel, $beschreibung, "", $_FILES['upload']['tmp_name'], $this->app->User->GetName()); // stichwoerter hinzufuegen $this->app->erp->AddDateiStichwort($fileid, $stichwort, $objekt, $parameter); header("Location: index.php?module=$_module&action=$_action&id=$id&sid=$sid".($typ!=''?"&typ=".$typ:'')); } } if($this->app->Secure->GetPOST('sammelpdf')) { $auswahl = $this->app->Secure->GetPOST('auswahl'); if(!($auswahl)) { echo 'Keine PDF-Dateien ausgewählt!'; exit; $this->app->Tpl->Add('MESSAGE','
Keine Dateien ausgewählt!
'); }else{ $objekt = $this->app->Secure->GetGET('module'); $objekt = $this->dateien_module_objekt_map($objekt); $parameter = (int)$this->app->Secure->GetGET('id'); $alledateien = $this->app->DB->SelectArr("SELECT v.datei, v.id FROM datei d INNER JOIN datei_stichwoerter s ON d.id=s.datei INNER JOIN datei_version v ON v.datei=d.id WHERE s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0 "); $auswahl = explode(',',$auswahl); foreach($auswahl as $k => $ausw) { $found = false; if($alledateien) { foreach($alledateien as $datei) { if($datei['datei'] == $ausw) { $dateiname = $this->app->erp->GetDateiPfad($datei['datei']); if($dateiname && file_exists($dateiname) && mime_content_type($dateiname) == 'application/pdf') { $found = true; break; } } } } if(!$found)unset($auswahl[$k]); } if(!$auswahl || (empty($auswahl)?0:count($auswahl)) == 0) { echo 'Keine PDF-Dateien ausgewählt!'; exit; $this->app->Tpl->Add('MESSAGE','
Keine PDF-Dateien ausgewählt!
'); }else{ try { /** @var \Xentral\Components\Pdf\PdfMerger $pdfMerger */ $pdfMerger = $this->app->Container->get('PdfMerger'); $mergeInputPaths = []; foreach ($auswahl as $dateiid){ $mergeInputPaths[] = $this->app->erp->GetDateiPfad($dateiid); } // Dateien zusammenführen $mergeOutputPath = realpath($this->app->erp->GetTMP()) . '/' . uniqid('sammelpdf_') . '.pdf'; $pdfMerger->merge($mergeInputPaths, $mergeOutputPath); header('Content-type: application/pdf'); readfile($mergeOutputPath); $this->app->ExitXentral(); } catch (\Xentral\Components\Pdf\Exception\PdfComponentExceptionInterface $exception) { echo 'Fehler beim Generieren der Sammelpdf: ' . htmlspecialchars($exception->getMessage()); $this->app->ExitXentral(); } } } } if($this->app->Secure->GetPOST('dateizip')) { $auswahl = $this->app->Secure->GetPOST('auswahl'); if(!($auswahl)) { echo 'Keine Dateien ausgewählt!'; exit; $this->app->Tpl->Add('MESSAGE','
Keine Dateien ausgewählt!
'); }else{ $objekt = $this->app->Secure->GetGET('module'); $objekt = $this->dateien_module_objekt_map($objekt); $typmodul = $this->app->Secure->GetPOST('typ'); if($objekt == 'dateien' && $typmodul == 'geschaeftsbrief_vorlagen'){ $objekt = $typmodul; } $parameter = (int)$this->app->Secure->GetGET('id'); $alledateien = $this->app->DB->SelectArr("SELECT v.datei, v.id FROM datei d INNER JOIN datei_stichwoerter s ON d.id=s.datei INNER JOIN datei_version v ON v.datei=d.id WHERE s.objekt LIKE '$objekt' AND s.parameter='$parameter' AND d.geloescht=0 "); $auswahl = explode(',',$auswahl); foreach($auswahl as $k => $ausw) { $found = false; if($alledateien) { foreach($alledateien as $datei) { if($datei['datei'] == $ausw) { $dateiname = $this->app->erp->GetDateiPfad($datei['datei']); if($dateiname && file_exists($dateiname)) { $found = true; break; } } } } if(!$found)unset($auswahl[$k]); } if(!$auswahl || (empty($auswahl)?0:count($auswahl)) == 0) { echo 'Keine Dateien ausgewählt!'; exit; $this->app->Tpl->Add('MESSAGE','
Keine Dateien ausgewählt!
'); }else{ $dateinamezip = "Dateien_".date('Y-m-d').".zip"; $zip = new ZipArchive; $zip->open($dateinamezip, ZipArchive::CREATE); foreach($auswahl as $dateiid) { $filename = $this->app->erp->GetDateiPfad($dateiid); $zip->addFile($filename, $this->app->erp->GetDateiName($dateiid)); } $zip->close(); // download header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=$dateinamezip"); header("Content-Length: " . filesize($dateinamezip)); readfile($dateinamezip); unlink($dateinamezip); exit; } } } // Spezielle Upload-Fehler abfangen $helpdeskUploadSettingsLink = 'Link'; // post_max_size zu klein if (strtoupper($_SERVER['REQUEST_METHOD']) === 'POST' && empty($_POST)) { $errorMsg = '
'; $errorMsg .= 'Die Datei konnte nicht hochgeladen werden. '; $errorMsg .= 'Die post_max_size-Einstellung in der php.ini ist kleiner als die hochgeladene Datei! '; $errorMsg .= 'Wollen Sie größere Dateien hochladen, bitte befolgen Sie die Anleitung im Heldesk: '; $errorMsg .= $helpdeskUploadSettingsLink; $errorMsg .= '
'; $this->app->Tpl->Set('ERROR',$errorMsg); } // upload_max_filesize zu klein if (!empty($_FILES) && $_FILES['upload']['error'] === UPLOAD_ERR_INI_SIZE) { $errorMsg = '
'; $errorMsg .= 'Die Datei konnte nicht hochgeladen werden. '; $errorMsg .= 'Die upload_max_filesize-Einstellung in der php.ini ist kleiner als die hochgeladene Datei! '; $errorMsg .= 'Wollen Sie größere Dateien hochladen, bitte befolgen Sie die Anleitung im Heldesk: '; $errorMsg .= $helpdeskUploadSettingsLink; $errorMsg .= '
'; $this->app->Tpl->Set('ERROR',$errorMsg); } if($parameter == ''){ $parameter = $this->app->Secure->GetGET('id'); } if ($objekt != "" && $parameter != "") { /* $table = new EasyTable($this->app); $table->Query("SELECT d.titel, s.subjekt, v.version, v.ersteller, v.bemerkung, d.id FROM datei d LEFT JOIN datei_stichwoerter s ON d.id=s.datei LEFT JOIN datei_version v ON v.datei=d.id WHERE s.objekt='$objekt' AND s.parameter='$parameter' AND d.geloescht=0"); $table->DisplayNew('INHALT', "  app->Conf->WFconf['defaulttheme']}/images/download.svg\" border=\"0\">  app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\" > "); */ if($_module == 'dateien' && $_action == 'popup') { }else{ $this->app->Tpl->Set('ID',$this->app->Secure->GetGET('id')); $this->app->Tpl->Set('MODULE',$this->app->Secure->GetGET('module')); $this->app->Tpl->Parse('INHALT','datei_list_referer_filter.tpl'); $this->app->YUI->TableSearch('INHALT', "datei_list_referer"); } $fieldset = ''; $fieldset = '
{|Stapelverarbeitung|}  alle markieren 
'; $this->app->Tpl->Add('INHALT', $fieldset); $typ = $this->app->Secure->GetGET('typ'); $this->app->Tpl->Set('TYP', $typ); $alleauswaehlen =""; $this->app->Tpl->Add('SCRIPT', $alleauswaehlen); //$this->app->Tpl->Add('INHALT','
'); } $this->app->Tpl->Parse('TAB1', "rahmen70_ohne_form.tpl"); $stichwoerter = $this->app->erp->getDateiTypen($module); foreach ($stichwoerter as $stichwort){ $this->app->Tpl->Add('EXTRASTICHWOERTER',''); } /* $tmp = $this->app->DB->SelectArr("SELECT * FROM datei_stichwortvorlagen WHERE modul='' ORDER by beschriftung"); for($i=0;$i<(empty($tmp)?0:count($tmp));$i++) $this->app->Tpl->Add('EXTRASTICHWOERTER',''); */ $maxsize = 0; $uploadmaxsize = ini_get('upload_max_filesize'); if(strpos($uploadmaxsize, 'M') !== false) { $maxsize = (int)str_replace(['M',' '],'', $uploadmaxsize)*1024*1024; } $maxpostsize = ini_get('post_max_size'); if(strpos($maxpostsize, 'M') !== false) { $maxpostsize = (int)str_replace(['M',' '], '', $maxpostsize)*1024*1024; } if(!empty($maxpostsize) && ($maxpostsize < $maxsize || $maxsize === 0)) { $maxsize = $maxpostsize; } if($maxsize > 1024*1024 && !empty($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],'nginx')!= false) { $maxsize = 1024*1024; } $this->app->Tpl->Set('MAXSIZE', (int)($maxsize * 0.70)); if($_module === 'dateien' && $_action === 'popup') { $this->app->Tpl->Parse('TAB2', 'datei_neudirekt2.tpl'); }else{ $this->app->Tpl->Parse('TAB2', 'datei_neudirekt.tpl'); } $this->app->Tpl->Set('AKTIV_TAB1', 'selected'); if($_module === 'dateien' && $_action === 'popup') { $this->app->Tpl->Parse($parsetarget, 'dateienuebersicht2.tpl'); }else{ $this->app->Tpl->Parse($parsetarget, 'dateienuebersicht.tpl'); } } function SortListAdd($parsetarget, &$ref, $menu, $sql, $sort = true) { $module = $this->app->Secure->GetGET("module"); $id = $this->app->Secure->GetGET("id"); $projekt = $this->app->DB->Select("SELECT projekt FROM `$module` WHERE id='$id' LIMIT 1"); $schreibschutz = $this->app->DB->Select("SELECT schreibschutz FROM $module WHERE id='$id'"); $table = new EasyTable($this->app); $summencol = 6; $mengencol = 0; $zwischensumme = 0; $rabattcol = 0; $ecol = 0; $dcol = 0; $einkaufspreissumme = 0; $deckungsbeitragsumme = 0; if ($sort) $table->Query($sql . (strpos($sql,'b.sort')? " ORDER BY b.sort":" ORDER BY sort"),0,''); else $table->Query($sql,0,''); $this->app->erp->RunHook('sortlistadd', 3, $module, $id, $table); // letzte zeile anzeigen if(isset($table->headings) && isset($table->headings[-1]))unset($table->headings[-1]); if ($module == "lieferschein") { if ($schreibschutz != 1) { $table->AddRow(array('
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', '', '
')); $this->app->YUI->AutoCompleteAuftrag("artikel", "verkaufartikelnummerprojekt", 1, "&projekt=$projekt"); } } else if ($module === 'retoure') { if ($schreibschutz != 1) { $projekte = $this->app->User->getUserProjects(); $projekte[] = 0; $projekte = implode(', ', $projekte); $rmavorlagen = $this->app->DB->SelectPairs( sprintf( 'SELECT rvg.bezeichnung, lp.kurzbezeichnung FROM rma_vorlagen_grund AS rvg LEFT JOIN lager_platz AS lp ON rvg.default_storagelocation = lp.id WHERE rvg.ausblenden = 0 AND (rvg.projekt IN (%s)) ORDER BY rvg.bezeichnung', $projekte ) ); $selgrund = ''; foreach($rmavorlagen as $rmabez => $rmalager) { $selgrund .= ''; } $table->AddRow( array( '
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', '', '', '', '', '', '
')); $this->app->YUI->AutoComplete('lager_platz', 'lagerplatz'); $this->app->YUI->AutoCompleteAuftrag("artikel", "artikelnummer", 1, "&projekt=$projekt"); } } else if ($module == "inventur") { if ($schreibschutz != 1) { $table->AddRow(array('
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', '
')); //$this->app->YUI->AutoCompleteAddEvent("artikel", "artikelnummer", 1); $this->app->YUI->AutoCompleteAuftrag("artikel", "artikelnummer", 1, "&projekt=$projekt"); } } else if ($module == "anfrage" || $module == "preisanfrage") { if ($schreibschutz != 1) { $table->AddRow(array('
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', '
')); //$this->app->YUI->AutoCompleteAddEvent("artikel", "artikelnummer", 1, "&projekt=$projekt"); $this->app->YUI->AutoCompleteAuftrag("artikel", "artikelnummer", 1, "&projekt=$projekt"); } } else if ($module == "arbeitsnachweis") { if ($schreibschutz != 1) { $table->AddRow(array('
', '[ADRESSESTART][ADRESSEENDE]', '', '', '', '', '', '
')); $this->app->YUI->AutoCompleteAddEvent("adresse", "mitarbeiter"); } } else if ($module == "kalkulation") { if ($schreibschutz != 1) { $table->AddRow(array('
', '', '
Artikel-Nr.: 
', '
', '
', '', '
')); $this->app->YUI->AutoCompleteProduktion("artikel", "artikelnummer", 1); $this->app->YUI->AutoCompleteProduktion("stueckliste", "artikelnummer", 1); } } else if ($module == "reisekosten") { if ($schreibschutz != 1) { $table->AddRow(array('
', '', '', '', '', '', '', '', '', '
')); $this->app->YUI->AutoCompleteAddEvent("adresse", "mitarbeiter"); } } else if ($module == "produktion") { } else if ($module == "bestellung") { if ($schreibschutz != 1) { $table->AddRow(array('
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', '', '','
')); } $adresse = $this->app->DB->Select("SELECT adresse FROM bestellung WHERE id='$id' LIMIT 1"); $this->app->YUI->AutoCompleteBestellung("artikel", "einkaufartikelnummerprojekt", 1, "&adresse=$adresse"); } else if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift" || $module == "proformarechnung") { if ($schreibschutz != 1) { $addrow = array('
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', '', '' ,'','',''); $addrow[] = '
'; $table->AddRow($addrow); $adresse = $this->app->DB->Select("SELECT adresse FROM $module WHERE id='$id' LIMIT 1"); $this->app->YUI->AutoCompleteAuftrag("artikel", "verkaufartikelnummerprojekt", 1, "&projekt=$projekt&adresse=$adresse"); } } else { $shown = false; $this->app->erp->RunHook('yui_sortlistadd', 4, $module, $id, $table, $shown); if($shown === false){ if($schreibschutz != 1){ $addrow = array('
', '[ARTIKELSTART][ARTIKELENDE]', '', '', '', '', ''); $addrow[] = '
'; $table->AddRow($addrow); $adresse = $this->app->DB->Select("SELECT adresse FROM $module WHERE id='$id' LIMIT 1"); $this->app->YUI->AutoCompleteAuftrag("artikel", "verkaufartikelnummerprojekt", 1, "&projekt=$projekt&adresse=$adresse"); } } } $table->headings[0] = 'Pos'; $table->headings[1] = 'Artikel'; $table->headings[2] = 'Projekt'; $table->headings[3] = 'Nummer'; $table->headings[4] = 'Lieferung'; $table->headings[5] = 'Menge'; $table->width_headings[0] = '5%'; $table->width_headings[1] = '25%'; $table->width_headings[2] = '10%'; $table->width_headings[3] = '10%'; $table->width_headings[4] = '10%'; $table->width_headings[5] = '10%'; $table->width_headings[6] = '10%'; if ($module == "lieferschein" || $module == "retoure") { $table->headings[6] = 'ausgeliefert'; // $zwischensumme = $this->app->DB->Select("SELECT sum(menge*preis) FROM $module"."_position WHERE $module = '$id'"); // lieferschein has no preis } else if($module == "anfrage" || $module == "preisanfrage" ) { $table->headings[6] = 'Aktion'; //$zwischensumme = $this->app->DB->Select("SELECT sum(menge*preis) FROM $module"."_position WHERE $module = '$id'"); } else if ($module == "inventur") { $table->headings[4] = 'Menge'; $table->headings[5] = 'Preis'; $summencol = 5; $mengencol = 4; $zwischensumme = $this->app->DB->Select("SELECT sum(menge*preis) FROM $module"."_position WHERE $module = '$id'"); } else if ($module == "produktion") { $table->headings[2] = 'Projekt'; $table->headings[3] = 'Nummer'; $table->headings[4] = 'Menge'; $table->headings[5] = 'Lager'; $table->headings[6] = 'Reserviert'; $mengencol = 4; } else if ($module == "bestellung") { $table->headings[6] = 'Preis'; $table->headings[7] = 'Währung'; $zwischensumme = $this->app->DB->Select("SELECT sum(menge*preis) FROM $module"."_position WHERE $module = '$id'"); $summencol = 6; $mengencol = 5; } else if ($module == "arbeitsnachweis") { $table->headings[0] = 'Pos'; $table->headings[1] = 'Mitarbeiter'; $table->headings[2] = 'Ort'; $table->headings[3] = 'Datum'; $table->headings[4] = 'Von'; $table->headings[5] = 'Bis'; $table->headings[6] = 'Tätigkeit'; } else if ($module == "kalkulation") { $table->headings[0] = 'Pos'; $table->headings[1] = 'Kostenart'; $table->headings[2] = 'Beschreibung'; $table->headings[3] = 'Menge'; $table->headings[4] = 'Einzelbetrag'; $table->headings[5] = 'Gesamt'; $summencol = 5; $mengencol = 3; } else if ($module == "reisekosten") { $table->headings[0] = 'Pos'; $table->headings[1] = 'Datum'; $table->headings[2] = 'Kostenart'; $table->headings[3] = 'Betrag'; $table->headings[4] = 'Abr. bei Kd'; $table->headings[5] = 'sonst. MwSt'; // kann man auch umbenennen in Keine $table->headings[6] = 'MwSt'; $table->headings[7] = 'Kommentar'; $table->headings[8] = 'Bezahlt'; $table->width_headings[1] = '10%'; $table->width_headings[2] = '25%'; $table->width_headings[3] = '10%'; $table->width_headings[4] = '5%'; $table->width_headings[5] = '5%'; $table->width_headings[6] = '5%'; $table->width_headings[7] = '20%'; } else { if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") { $zwischensumme = $this->app->DB->Select("SELECT sum(menge*(preis * (100-rabatt)/100)) FROM $module"."_position WHERE $module = '$id'"); }else{ $zwischensumme = $this->app->DB->Select("SELECT sum(menge*preis) FROM $module"."_position WHERE $module = '$id'"); } $table->headings[6] = 'Preis'; $mengencol = 5; if ($module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") { $table->headings[7] = 'Währung'; $table->headings[8] = 'Rabatt'; $rabattcol = 8; } } $__arr = array($summencol, $mengencol, $rabattcol, $ecol, $dcol,$zwischensumme); $this->app->erp->RunHook('yui_sortlistadd_draw', 2,$table,$__arr); $summencol = (is_int($__arr[0]) ? $__arr[0] : 0); $mengencol = (is_int($__arr[1]) ? $__arr[1] : 0); $rabattcol = $__arr[2]; $ecol = $__arr[3]; $dcol = $__arr[4]; $zwischensumme = $__arr[5]; if ($module == "produktion" || $module == "angebot" || $module == "auftrag" || $module == "rechnung" || $module == "gutschrift") $table->width_headings[7] = '10%'; $this->app->YUI->DatePicker("lieferdatum"); $this->app->YUI->DatePicker("datum"); $this->app->YUI->TimePicker("von"); $this->app->YUI->TimePicker("bis"); if(isset($summenarray))unset($summenarray); for($i = 0; $i < $summencol; $i++)$summenarray[] = ''; $js = ''; $this->app->Tpl->Add($parsetarget,''); if($summencol && $mengencol && $module != "produktion" && $module!="bestellung!" && $module!="preisanfrage") { $js = ""; } $summenarray[] = ''.number_format($zwischensumme,4,'.','').''; if($module != 'verbindlichkeit')$summenarray[] = ''; $summenarray[] = ''; $summenarray[(empty($summenarray)?0:count($summenarray))-1] .= $js; if($mengencol && $summencol && $module!='produktion')$table->AddRow($summenarray); //$this->app->YUI->AutoComplete(ARTIKELAUTO,"artikel",array('name_de','warengruppe'),"nummer"); if ($module == "bestellung") $fillArtikel = "fillArtikelBestellung"; elseif ($module == "inventur") $fillArtikel = "fillArtikelInventur"; elseif ($module == "lieferschein" || $module == "anfrage" || $module=="preisanfrage" || $module == "retoure") $fillArtikel = "fillArtikelLieferschein"; elseif ($module == "produktion") $fillArtikel = "fillArtikelProduktion"; else $fillArtikel = "fillArtikel"; if ($fillArtikel == "fillArtikelBestellung") { $this->app->Tpl->Add($parsetarget, ' '); } else { $this->app->Tpl->Add($parsetarget, ' '); } //$this->app->YUI->AutoComplete(NUMMERAUTO,"artikel",array('nummer','name_de','warengruppe'),"nummer"); if ($schreibschutz != 1) { $tmp = ''; $fmodul = $this->app->Secure->GetGET('fmodul'); foreach ($menu as $key => $value) { // im popup öffnen if($key == "add"){ $tmp .= "app->Conf->WFconf['defaulttheme']}/images/new.png\"> "; } else{ if($key == "del"){ $tmp .= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\"> "; } else{ if($key == "edit" ){ if($module != 'goodspostingdocument'){ $tmp .= "app->Conf->WFconf['defaulttheme']}/images/edit.svg\"> "; } } else if($key == 'copy'){ $tmp .= "app->Conf->WFconf['defaulttheme']}/images/$key.png\"> "; } // nur aktion ausloesen und liste neu anzeigen else{ $tmp .= "app->Conf->WFconf['defaulttheme']}/images/$key.png\"> "; } } } } $table->DisplayEditable($parsetarget, $tmp,"","","","",false); } else { $table->DisplayNew($parsetarget, $tmp,"","","","",false); } $this->app->erp->RunHook('yui_sortlistadd_ende', 1,$parsetarget); } function SortList($parsetarget, &$ref, $menu, $sql, $sort = true) { $module = $this->app->Secure->GetGET("module"); $fmodul = $this->app->Secure->GetGET("fmodul"); $id = $this->app->Secure->GetGET("id"); $table = new EasyTable($this->app); if ($sort) $table->Query($sql . " ORDER by sort"); else $table->Query($sql); foreach ($menu as $key => $value) { // im popup öffnen if ($key == "add") $tmp.= "app->Conf->WFconf['defaulttheme']}/images/new.png\"> "; else if ($key == "del") $tmp.= "app->Conf->WFconf['defaulttheme']}/images/delete.svg\"> "; else if ($key == "edit") $tmp.= " app->Conf->WFconf['defaulttheme']}/images/$key.png\" /> "; else if ($key == "copy") $tmp.= "app->Conf->WFconf['defaulttheme']}/images/$key.png\" />"; // nur aktion ausloesen und liste neu anzeigen else $tmp.= "app->Conf->WFconf['defaulttheme']}/images/$key.png\"> "; } $table->DisplayNew($parsetarget, $tmp); } function SortListEvent($event, $table, $fremdschluesselindex, $id = null, $sid = null) { if(is_null($sid))$sid = $this->app->Secure->GetGET("sid","sid"); if(is_null($id))$id = $this->app->Secure->GetGET("id"); $sort = $this->app->DB->Select("SELECT sort FROM $table WHERE id='$sid' LIMIT 1"); $this->app->erp->RunHook('yui_sortlistevent',4, $event, $table, $id, $sid); if ($event == "up") { $zwischenposition = $this->app->DB->SelectArr("SELECT id, pos, sort FROM `beleg_zwischenpositionen` WHERE doctype = '$fremdschluesselindex' AND doctypeid = '$id' AND pos = '$sort' ORDER BY sort LIMIT 1"); if($zwischenposition) { $zwischenvor = $this->app->DB->SelectArr("SELECT id, pos, sort FROM `beleg_zwischenpositionen` WHERE doctype = '$fremdschluesselindex' AND doctypeid = '$id' AND pos = '".($sort - 1)."' ORDER BY sort DESC LIMIT 1"); if($zwischenvor) { $this->app->DB->Update("UPDATE `beleg_zwischenpositionen` SET pos = pos - 1, sort = '".($zwischenvor[0]['sort'] + 1)."' WHERE id = '".$zwischenposition[0]['id']."' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE `beleg_zwischenpositionen` SET pos = pos - 1, sort = '0' WHERE id = '".$zwischenposition[0]['id']."' LIMIT 1"); } }else{ //gibt es ein element an hoeherer stelle? $nextsort = $this->app->DB->Select("SELECT sort FROM $table WHERE $fremdschluesselindex='$id' AND sort ='" . ($sort + 1) . "' LIMIT 1"); if ($nextsort > $sort) { $nextid = $this->app->DB->Select("SELECT id FROM $table WHERE $fremdschluesselindex='$id' AND sort = '" . ($sort + 1) . "' LIMIT 1"); $this->app->DB->Update("UPDATE $table SET sort='$nextsort' WHERE id='$sid' LIMIT 1"); $this->app->DB->Update("UPDATE $table SET sort='$sort' WHERE id='$nextid' LIMIT 1"); } else { // element ist bereits an oberster stelle } } $this->app->Location->execute('index.php?module='.$fremdschluesselindex.'&action=positionen&id='.$id); } else if ($event == "down") { $zwischenposition = $this->app->DB->SelectArr("SELECT id, pos, sort FROM `beleg_zwischenpositionen` WHERE doctype = '$fremdschluesselindex' AND doctypeid = '$id' AND pos = '".($sort-1)."' ORDER BY sort DESC LIMIT 1"); if($zwischenposition) { $zwischennach = $this->app->DB->SelectArr("SELECT id, pos, sort FROM `beleg_zwischenpositionen` WHERE doctype = '$fremdschluesselindex' AND doctypeid = '$id' AND pos = '$sort' ORDER BY sort LIMIT 1"); if($zwischennach) { $this->app->DB->Update("UPDATE `beleg_zwischenpositionen` SET sort = sort + 1 WHERE doctype = '$fremdschluesselindex' AND doctypeid = '$id' AND pos = '$sort'"); $this->app->DB->Update("UPDATE `beleg_zwischenpositionen` SET sort = 0, pos = '$sort' WHERE id = '".$zwischenposition[0]['id']."' LIMIT 1"); }else{ $this->app->DB->Update("UPDATE `beleg_zwischenpositionen` SET sort = 0, pos = '$sort' WHERE id = '".$zwischenposition[0]['id']."' LIMIT 1"); } }else{ //gibt es ein element an hoeherer stelle? $prevsort = $this->app->DB->Select("SELECT sort FROM $table WHERE $fremdschluesselindex='$id' AND sort = '" . ($sort - 1) . "' LIMIT 1"); if ($prevsort < $sort && $prevsort != 0) { $previd = $this->app->DB->Select("SELECT id FROM $table WHERE $fremdschluesselindex='$id' AND sort = '" . ($sort - 1) . "' LIMIT 1"); $this->app->DB->Update("UPDATE $table SET sort='$prevsort' WHERE id='$sid' LIMIT 1"); $this->app->DB->Update("UPDATE $table SET sort='$sort' WHERE id='$previd' LIMIT 1"); } else { // element ist bereits an oberster stelle } } $this->app->Location->execute('index.php?module='.$fremdschluesselindex.'&action=positionen&id='.$id); } else if ($event == "del") { if(strpos($sid, 'z') !== false || strpos($sid, 'b') !== false) { $sida = explode(',',$sid); foreach($sida as $v) { if ($v[0] == 'b') { $v = substr($v ,1); $this->SortListEvent($event, $table, $fremdschluesselindex, $id, $v); }else{ $v = substr($v ,1); $this->DeleteDrawItem($fremdschluesselindex, $id, $v); } } }elseif (is_numeric($sid) && $sid > 0) { if ($table == "auftrag_position" || $table == "produktion_position" || $table == "lieferschein_position" || $table == "angebot_position" || $table == "rechnung_position" || $table == "gutschein_position" || $table == "bestellung_position" || $table == "retoure") { switch ($table) { case "auftrag_position"; $tmptable = "auftrag"; break; case "angebot_position"; $tmptable = "angebot"; break; case "rechnung_position"; $tmptable = "rechnung"; break; case "gutschein_position"; $tmptable = "gutschein"; break; case "bestellung_position"; $tmptable = "bestellung"; break; case "lieferschein_position"; $tmptable = "lieferschein"; break; case "retoure_position"; $tmptable = "retoure"; break; case "produktion_position"; $tmptable = "produktion"; break; } // alle reservierungen fuer die eine position loeschen $tmpartikel = $this->app->DB->Select("SELECT artikel FROM $table WHERE id='$sid' LIMIT 1"); $tmptable_value = $this->app->DB->Select("SELECT $tmptable FROM $table WHERE id='$sid' LIMIT 1"); $this->app->DB->Delete("DELETE FROM lager_reserviert WHERE artikel='$tmpartikel' AND objekt='$tmptable' AND parameter='$tmptable_value'"); if($tmptable === 'auftrag') { $this->app->DB->Update( sprintf( 'UPDATE `artikel` SET `laststorage_changed` = NOW() WHERE `id` = %d', $tmpartikel ) ); } } $this->app->DB->Delete("DELETE FROM $table WHERE id='$sid' LIMIT 1"); if($tmptable==='angebot') { $this->app->DB->Delete("DELETE FROM $table WHERE explodiert_parent='$sid'"); } $this->app->DB->Update( sprintf( "UPDATE `%s` SET sort=sort-1 WHERE id=%d AND sort > %d LIMIT 1", $table, (int)$sid, (int)$sort ) ); if(in_array($tmptable, array('auftrag','rechnung','gutschrift'))) { $this->app->DB->Update("UPDATE $tmptable SET extsoll = 0 WHERE id = '$tmptable_value' LIMIT 1"); } $beleg_zwischenpositionensort = $this->app->DB->SelectArr("SELECT id, sort FROM beleg_zwischenpositionen where doctype = '$tmptable' AND doctypeid = '$tmptable_value' AND pos = '$sort' ORDER BY sort DESC LIMIT 1"); $offset = 0; if($beleg_zwischenpositionensort) { $offset = 1 + (int)$beleg_zwischenpositionensort[0]['sort']; } $this->app->DB->Update( sprintf( "UPDATE beleg_zwischenpositionen SET pos = pos - 1, sort = sort + %d WHERE doctype = '%s' AND doctypeid = %d AND pos = %d", $offset, $tmptable, (int)$tmptable_value, (int)$sort ) ); $this->app->DB->Update( sprintf( "UPDATE beleg_zwischenpositionen SET pos = pos - 1 WHERE doctype = '%s' AND doctypeid = %d AND pos > %d", $tmptable, (int)$tmptable_value, (int)$sort ) ); if ($tmptable === 'auftrag') { $this->app->erp->AuftragEinzelnBerechnen($tmptable_value); } } } elseif($event === "copy") { $arr = $this->app->DB->SelectArr("SELECT * FROM $table WHERE id = '$sid' LIMIT 1"); if($arr) { $nextsort = 1 + (int)$this->app->DB->Select("SELECT max(sort) FROM $table WHERE $fremdschluesselindex='$id' LIMIT 1"); $arr[0]['sort'] = $nextsort; unset($arr[0]['id']); $this->app->DB->Insert("INSERT INTO $table ($fremdschluesselindex) VALUES ('$id')"); $newsid = $this->app->DB->GetInsertID(); $this->app->DB->UpdateArr($table,$newsid,'id',$arr[0], true); if(is_null($arr[0]['steuersatz'])) { $this->app->DB->Update("UPDATE $table SET steuersatz = NULL WHERE id = '$newsid' LIMIT 1"); } if($table === 'auftrag_position') { $this->app->DB->Update( sprintf( 'UPDATE `artikel` SET `laststorage_changed` = NOW() WHERE `id` = %d', $arr[0]['artikel'] ) ); } if($fremdschluesselindex)$this->app->erp->AuftragEinzelnBerechnen($id); } $this->app->Location->execute('index.php?module='.$fremdschluesselindex.'&action=positionen&id='.$id); } } function IframeDialog($width, $height, $src = "") { $id = $this->app->Secure->GetGET("id"); $sid = $this->app->Secure->GetGET("sid"); $module = $this->app->Secure->GetGET("module"); $action = $this->app->Secure->GetGET("action"); if ($src != "") $this->app->Tpl->Set('PAGE', ""); else $this->app->Tpl->Set('PAGE', ""); $this->app->BuildNavigation = false; } function WaehrungsumrechnungTabelle($targetbutton, $targettabelle) { $this->app->Tpl->Set($targetbutton,''); $_waehrungen = $this->app->erp->GetWaehrungUmrechnungskurseTabelle('EUR'); $waehrungen['EUR'] = 1; foreach($_waehrungen as $waehrung => $kurs)$waehrungen[$waehrung] = $kurs; if($_waehrungen) { foreach($waehrungen as $k => $v)$waehrung_felder[$k] = $k; } $htmltabelle = "
".((empty($waehrungen)?0:count($waehrungen)) > 1?"":"Bitte legen Sie erst Währungen an!")."
"; $i = -1; if((empty($waehrungen)?0:count($waehrungen)) > 1) { $htmltabelle .= ""; foreach($waehrungen as $waehrung => $kurs) { $i++; $htmltabelle .= ""; } $htmltabelle .= "
WährungKursumgerechnter PreisAktion
".$waehrung."".$kurs."
Runden auf Stellen
"; } $htmltabelle .= "
"; $this->app->Tpl->Set($targettabelle, $htmltabelle); } public function ConvertLatin1UTF($field) { return 'convert(cast(convert('.$field.' using latin1) as binary) using utf8)'; //return $field.' COLLATE utf8_general_ci'; ersetzt Original } }