2021-05-21 08:49:41 +02:00
< ? php
2023-03-30 10:54:18 +02:00
/*
* SPDX - FileCopyrightText : 2019 Xentral ERP Software GmbH , Fuggerstrasse 11 , D - 86150 Augsburg
* SPDX - FileCopyrightText : 2023 Andreas Palm
*
* SPDX - License - Identifier : LicenseRef - EGPL - 3.1
*/
2022-05-24 21:50:35 +02:00
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral ( c ) Xentral ERP Sorftware GmbH , Fuggerstrasse 11 , D - 86150 Augsburg , * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License * Version 3.1 .
*
* You should have received a copy of this license from your vendor and / or * along with this file ; If not , please visit www . wawision . de / Lizenzhinweis
* to obtain the text of the corresponding license version .
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
2021-05-21 08:49:41 +02:00
*/
?>
2022-05-24 21:50:35 +02:00
< ? php
use Xentral\Components\Http\JsonResponse ;
use Xentral\Components\Http\Request ;
use Xentral\Components\Util\StringUtil ;
use Xentral\Modules\Label\Exception\LabelExceptionInterface ;
use Xentral\Modules\MandatoryFields\Exception\MandatoryFieldNotFoundException ;
use Xentral\Modules\MandatoryFields\Exception\UnknownTypeException ;
class Ajax {
public $app ;
/**
* Ajax constructor .
*
* @ param Application $app
* @ param bool $intern
*/
public function __construct ( $app , $intern = false ) {
$this -> app = $app ;
if ( $intern ) {
return ;
}
$this -> app -> ActionHandlerInit ( $this );
$this -> app -> ActionHandler ( " filter " , " AjaxFilter " );
$this -> app -> ActionHandler ( " table " , " AjaxTable " );
$this -> app -> ActionHandler ( " labels " , " AjaxLabels " );
$this -> app -> ActionHandler ( " validator " , " AjaxValidator " );
$this -> app -> ActionHandler ( " ansprechpartner " , " AjaxAnsprechpartner " );
$this -> app -> ActionHandler ( " lieferadresse " , " AjaxLieferadresse " );
$this -> app -> ActionHandler ( " verzolladresse " , " AjaxVerzolladresse " );
$this -> app -> ActionHandler ( " adressestammdaten " , " AjaxAdresseStammdaten " );
$this -> app -> ActionHandler ( " tooltipsuche " , " AjaxTooltipSuche " );
$this -> app -> ActionHandler ( " tableposition " , " AjaxTablePosition " );
$this -> app -> ActionHandler ( " tablefilter " , " AjaxTableFilter " );
$this -> app -> ActionHandler ( " articlematrixselection " , " AjaxArticleMatrixSelection " );
$this -> app -> ActionHandler ( " moduleunlock " , " AjaxModuleUnlock " );
$this -> app -> ActionHandler ( " thumbnail " , " AjaxThumbnail " );
$this -> app -> ActionHandler ( " autosavekonfiguration " , " AjaxAutoSaveKonfiguration " );
$this -> app -> ActionHandler ( " autosaveuserparameter " , " AjaxAutoSaveUserParameter " );
$this -> app -> ActionHandler ( " getuserparameter " , " AjaxGetUserParameter " );
$this -> app -> ActionHandler ( " getdateititel " , " AjaxGetDateiTitel " );
$this -> app -> ActionHandler ( " editdateititel " , " AjaxEditDateiTitel " );
$this -> app -> ActionHandler ( " profilbild " , " AjaxProfilbild " );
$this -> app -> ActionHandler ( " getgewicht " , " AjaxGetGewicht " );
$this -> app -> ActionHandler ( " upload " , " AjaxUpload " );
$this -> app -> ActionHandler ( " sidebar " , " AjaxSidebar " );
$this -> app -> ActionHandler ( " livetable " , " AjaxLiveTable " );
$this -> app -> ActionHandlerListen ( $app );
}
/**
* @ return JsonResponse
*/
public function AjaxSidebar () : JsonResponse
{
$userId = $this -> app -> User -> GetID ();
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ) {
case 'set_collapsed' :
$state = $this -> app -> Secure -> GetGET ( 'value' ) === 'true' ;
/** @var Xentral\Modules\User\Service\UserConfigService $userConfig */
$userConfig = $this -> app -> Container -> get ( 'UserConfigService' );
$userConfig -> set ( 'sidebar_collapsed' , $state , $userId );
$data = [ 'success' => true , 'collapsed' => $state ];
break ;
default :
$data = [ 'success' => false , 'error' => 'Incomplete request' ];
break ;
}
return new JsonResponse (
$data ,
$data [ 'success' ] === false ? JsonResponse :: HTTP_BAD_REQUEST : JsonResponse :: HTTP_OK
);
}
public function AjaxUpload ()
{
$fromUrl = $this -> app -> Secure -> GetGET ( 'fromurl' );
$fromUrl = pathinfo ( $fromUrl );
$fromUrl = $fromUrl [ 'basename' ];
if ( strpos ( $fromUrl , 'index.php?' ) === 0 ) {
$fromUrl = substr ( $fromUrl , 10 );
}
$fromUrl = explode ( '&' , $fromUrl );
$parts = [];
foreach ( $fromUrl as $urlpart ) {
$urlpartA = explode ( '=' , $urlpart );
$parts [ $urlpartA [ 0 ]] = isset ( $urlpartA [ 1 ]) ? $urlpartA [ 1 ] : '' ;
}
if ( ! empty ( $_FILES )) {
$this -> app -> erp -> RunHook ( 'ajaxupload' , 1 , $parts );
}
header ( 'Content-Type: application/json' );
echo json_encode ([]);
$this -> app -> ExitXentral ();
}
public function AjaxGetGewicht ()
{
$seriennummer = $this -> app -> Secure -> GetPOST ( 'seriennummer' );
///$mindestgewicht = (float)$this->app->Secure->GetPOST('mindestgewicht');
$gewicht = str_replace ( ',' , '.' , $this -> app -> erp -> GetAdapterboxAPIWaage ( $seriennummer ));
if ( ! is_numeric ( $gewicht )) {
$gewicht = 0 ;
}
//if($gewicht < $mindestgewicht)$gewicht = $mindestgewicht;
echo json_encode ( array ( 'gewicht' => number_format ( $gewicht , 1 , '.' , '' )));
$this -> app -> ExitXentral ();
}
public function AjaxLabels ()
{
/** @var \Xentral\Modules\Label\LabelModule $labelModule */
$labelModule = $this -> app -> Container -> get ( 'LabelModule' );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
switch ( $cmd ) {
case 'collect' :
// Aktive Labels für eine DataTable-Seite abrufen
$collection = $this -> app -> Secure -> GetPOST ( 'collection' );
$data = $this -> FindLabelsByCollection ( $collection );
header ( 'Content-Type: application/json' );
echo json_encode ([ 'success' => true , 'data' => $data ]);
$this -> app -> erp -> ExitWawi ();
break ;
case 'list' :
// Label-Typen auflisten + Zugewiesene Typen markieren
$referenceId = ( int ) $this -> app -> Secure -> GetPOST ( 'reference_id' );
$referenceTable = $this -> app -> Secure -> GetPOST ( 'reference_table' );
$labelTypes = $this -> FindLabelTypesByReference ( $referenceTable , $referenceId );
header ( 'Content-Type: application/json' );
echo json_encode ( $labelTypes );
$this -> app -> erp -> ExitWawi ();
break ;
case 'assign' :
// Label-Zuweisung erstellen
$referenceId = ( int ) $this -> app -> Secure -> GetPOST ( 'reference_id' );
$referenceTable = $this -> app -> Secure -> GetPOST ( 'reference_table' );
$labelType = $this -> app -> Secure -> GetPOST ( 'type' );
try {
$labelModule -> assignLabel ( $referenceTable , $referenceId , $labelType );
} catch ( LabelExceptionInterface $exception ) {
header ( 'HTTP/1.1 404 Not Found' );
header ( 'Content-Type: application/json' );
echo json_encode ([ 'success' => false , 'error' => 'Zuweisung nicht möglich. Fehler: ' . $exception -> getMessage ()]);
$this -> app -> erp -> ExitWawi ();
return ;
}
// Ausgabe
$data = $this -> FindLabelsByReference ( $referenceTable , $referenceId );
header ( 'Content-Type: application/json' );
echo json_encode ([ 'success' => true , 'data' => $data ]);
$this -> app -> erp -> ExitWawi ();
break ;
case 'unassign' :
// Label-Zuweisung löschen
$referenceId = ( int ) $this -> app -> Secure -> GetPOST ( 'reference_id' );
$referenceTable = $this -> app -> Secure -> GetPOST ( 'reference_table' );
$labelType = $this -> app -> Secure -> GetPOST ( 'type' );
try {
$labelModule -> unassignLabel ( $referenceTable , $referenceId , $labelType );
} catch ( LabelExceptionInterface $exception ) {
header ( 'HTTP/1.1 404 Not Found' );
header ( 'Content-Type: application/json' );
echo json_encode ([ 'success' => false , 'error' => 'Zuweisung löschen nicht möglich. Fehler: ' . $exception -> getMessage ()]);
$this -> app -> erp -> ExitWawi ();
return ;
}
// Ausgabe
$data = $this -> FindLabelsByReference ( $referenceTable , $referenceId );
header ( 'Content-Type: application/json' );
echo json_encode ([ 'success' => true , 'data' => $data ]);
$this -> app -> erp -> ExitWawi ();
break ;
}
}
/**
* @ param string $referenceTable
* @ param int $referenceId
*
* @ return array
*/
protected function FindLabelsByReference ( $referenceTable , $referenceId )
{
/** @var \Xentral\Modules\Label\LabelModule $labelModule */
$labelModule = $this -> app -> Container -> get ( 'LabelModule' );
$labels = $labelModule -> findLabelsByReference ( $referenceTable , $referenceId );
$target = sprintf ( 'labels-%s-%s' , $referenceTable , $referenceId );
$result = [ $target => []];
foreach ( $labels as $item ) {
$item [ 'target' ] = $target ;
$item [ 'title' ] = htmlspecialchars ( $item [ 'title' ]);
$item [ 'bgcolor' ] = $item [ 'hexcolor' ];
unset ( $item [ 'hexcolor' ]);
unset ( $item [ 'id' ]);
$result [ $target ][] = $item ;
}
return $result ;
}
/**
* @ param array $collection
*
* @ return array
*/
protected function FindLabelsByCollection ( $collection )
{
/** @var \Xentral\Modules\Label\LabelModule $labelModule */
$labelModule = $this -> app -> Container -> get ( 'LabelModule' );
$result = [];
foreach ( $collection as $referenceTable => $referenceIds ) {
$referenceTable = ( string ) $referenceTable ;
if ( empty ( $referenceTable )) {
continue ;
}
// Für jede angefragte Referenz ein Ergebnis liefern; Leeres Ergebnis als Default
foreach ( $referenceIds as $referenceId ) {
$target = sprintf ( 'labels-%s-%s' , $referenceTable , $referenceId );
$result [ $target ] = [];
}
// Label-Gruppen anlegen
$labelGroupId = $this -> app -> DB -> Select (
" SELECT lg.id FROM label_group AS lg WHERE lg.group_table = ' { $referenceTable } ' "
);
if ( empty ( $labelGroupId )) {
$groupTitle = ucwords ( $referenceTable );
$this -> app -> DB -> Insert (
" INSERT INTO label_group (id, group_table, title, created_at)
VALUES ( NULL , '{$referenceTable}' , '{$groupTitle}' , CURRENT_TIMESTAMP ) "
);
}
$labels = $labelModule -> findLabelsByReferences ( $referenceTable , $referenceIds );
foreach ( $labels as $item ) {
$target = sprintf ( 'labels-%s-%s' , $item [ 'reference_table' ], $item [ 'reference_id' ]);
if ( ! isset ( $result [ $target ])) {
$result [ $target ] = [];
}
$item [ 'target' ] = $target ;
$item [ 'title' ] = htmlspecialchars ( $item [ 'title' ]);
$item [ 'bgcolor' ] = $item [ 'hexcolor' ];
$item [ 'referenceTable' ] = $item [ 'reference_table' ];
$item [ 'referenceId' ] = $item [ 'reference_id' ];
unset ( $item [ 'reference_table' ]);
unset ( $item [ 'reference_id' ]);
unset ( $item [ 'hexcolor' ]);
unset ( $item [ 'id' ]);
$result [ $target ][] = $item ;
}
}
return $result ;
}
/**
* @ param string $referenceTable
* @ param int $referenceId
*
* @ return array
*/
protected function FindLabelTypesByReference ( $referenceTable , $referenceId )
{
/** @var \Xentral\Modules\Label\LabelModule $labelModule */
$labelModule = $this -> app -> Container -> get ( 'LabelModule' );
$labelTypes = $labelModule -> findLabelTypesByReference ( $referenceTable , $referenceId );
foreach ( $labelTypes as & $labelType ) {
$labelType [ 'id' ] = ( int ) $labelType [ 'id' ];
$labelType [ 'target' ] = 'labels-' . $referenceTable . '-' . $referenceId ;
$labelType [ 'selected' ] = ! empty ( $labelType [ 'label_id' ]);
if (( int ) $labelType [ 'label_id' ] > 0 ) {
$labelType [ 'key' ] = 'label-' . ( int ) $labelType [ 'label_id' ];
}
$labelType [ 'bgcolor' ] = $labelType [ 'hexcolor' ];
$labelType [ 'referenceTable' ] = $referenceTable ;
$labelType [ 'referenceId' ] = $referenceId ;
unset ( $labelType [ 'hexcolor' ]);
}
return $labelTypes ;
}
public function AjaxValidator ()
{
$rule = $this -> app -> Secure -> GetPOST ( 'rule' );
$value = $this -> app -> Secure -> GetPOST ( 'value' );
$mandatoryId = ( int ) $this -> app -> Secure -> GetPOST ( 'mandatoryid' );
/** @var \Xentral\Modules\MandatoryFields\MandatoryFieldsModule $mandatoryFields */
$mandatoryFields = $this -> app -> Container -> get ( 'MandatoryFieldsModule' );
try {
$data = $mandatoryFields -> validate ( $rule , $value , $mandatoryId ) -> toArray ();
} catch ( UnknownTypeException $e ){
$data = [ 'error' => true , 'message' => 'Validatorregel nicht gültig.' ];
} catch ( MandatoryFieldNotFoundException $e ){
$data = [ 'error' => true , 'message' => 'Die Validierungsregel konnte nicht gefunden werden.' ];
}
header ( 'Content-Type: application/json' );
echo json_encode ( $data );
$this -> app -> ExitXentral ();
}
public function AjaxGetDateiTitel ()
{
$status = 0 ;
$cmds = $this -> CmdList ();
$cmd = $this -> app -> Secure -> GetPOST ( 'typ' );
$data = null ;
if ( $this -> app -> erp -> RechteVorhanden ( $cmd , 'dateien' ))
{
$id = $this -> app -> Secure -> GetPOST ( 'id' );
$objekt = $this -> app -> Secure -> GetPOST ( 'typ' );
$parameter = $this -> app -> Secure -> GetPOST ( 'parameter' );
2023-11-19 14:07:16 +01:00
$module = strtolower ( $objekt );
$objekt = $this -> app -> YUI -> dateien_module_objekt_map ( $objekt );
2022-05-24 21:50:35 +02:00
$data = $this -> app -> DB -> SelectRow (
" SELECT d.*, s.subjekt
FROM datei AS d
LEFT JOIN datei_stichwoerter AS s ON d . id = s . datei
LEFT JOIN datei_version AS v ON v . datei = d . id
WHERE s . objekt LIKE '$objekt' AND s . parameter = '$parameter' AND d . geloescht = 0 AND d . id = '$id'
LIMIT 1 "
);
$typen = $this -> app -> erp -> getDateiTypen ( $module );
$found = false ;
foreach ( $typen as $typ ) {
if ( $typ [ 'wert' ] === $data [ 'subjekt' ]) {
$found = true ;
break ;
}
}
$subjekthtml = '' ;
if ( ! $found ) {
$subjekthtml = '<option value="' . $data [ 'subjekt' ] . '">' . $data [ 'subjekt' ] . '</option>' ;
}
foreach ( $typen as $typ ) {
$subjekthtml .= '<option value="' . $typ [ 'wert' ] . '">' . $typ [ 'beschriftung' ] . '</option>' ;
}
/*
$subjekthtml = '<option value="Sonstige">Sonstige Datei</option><option value="anhang">Anhang</option><option value="Shopbild">Standard Artikelbild (Shopbild)</option><option value="Gruppenbild">Standard Gruppenbild</option><option value="Etikettenbild">Etikettenbild</option><option value="Bild">Sonstiges Bild</option><option value="Briefpapier1">Briefpapier Seite 1</option><option value="Briefpapier2">Briefpapier Seite 2</option><option value="Datenblatt">Datenblatt</option><option value="Druckbild">Druckbild (300dpi)</option><option value="Zertifikat">Zertifikat Anhang (PDF)</option>' ;
if ( $module === 'adresse' )
{
$subjekthtml .= '<option value="Profilbild">Profilbild</option>' ;
}
if ( $module != '' )
{
$tmp = $this -> app -> DB -> SelectArr ( " SELECT * FROM datei_stichwortvorlagen WHERE modul=' $module ' ORDER by beschriftung " );
$ctmp = $tmp ? count ( $tmp ) : 0 ;
for ( $i = 0 ; $i < $ctmp ; $i ++ ) {
$subjekthtml .= '<option value="' . $tmp [ $i ][ 'beschriftung' ] . '">' . $tmp [ $i ][ 'beschriftung' ] . '</option>' ;
}
}
$tmp = $this -> app -> DB -> SelectArr ( " SELECT * FROM datei_stichwortvorlagen WHERE modul='' ORDER by beschriftung " );
$ctmp = $tmp ? count ( $tmp ) : 0 ;
for ( $i = 0 ; $i < $ctmp ; $i ++ ) {
$subjekthtml .= '<option value="' . $tmp [ $i ][ 'beschriftung' ] . '">' . $tmp [ $i ][ 'beschriftung' ] . '</option>' ;
}
*/
if ( $data ){
$data [ 'subjekthtml' ] = $subjekthtml ;
}
}
echo json_encode ( $data );
exit ;
}
public function AjaxEditDateiTitel ()
{
$status = 0 ;
$cmds = $this -> CmdList ();
$cmd = $this -> app -> Secure -> GetPOST ( 'typ' );
$data = null ;
if ( $this -> app -> erp -> RechteVorhanden ( $cmd , 'dateien' ))
{
$id = $this -> app -> Secure -> GetPOST ( 'id' );
$objekt = $this -> app -> Secure -> GetPOST ( 'typ' );
$parameter = $this -> app -> Secure -> GetPOST ( 'parameter' );
$titel = $this -> app -> Secure -> GetPOST ( 'titel' );
$beschreibung = $this -> app -> Secure -> GetPOST ( 'beschreibung' );
$subjekt = $this -> app -> Secure -> GetPOST ( 'subjekt' );
2023-11-19 14:07:16 +01:00
$module = strtolower ( $objekt );
$objekt = $this -> app -> YUI -> dateien_module_objekt_map ( $module );
2022-05-24 21:50:35 +02:00
$ersteller = $this -> app -> DB -> real_escape_string ( $this -> app -> User -> GetName ());
$datei = $this -> app -> DB -> SelectArr ( " SELECT d.id, s.id as sid 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 LIKE ' $objekt ' AND s.parameter=' $parameter ' AND d.geloescht=0 AND d.id = ' $id ' LIMIT 1 " );
if ( $datei )
{
$sid = $datei [ 0 ][ 'sid' ];
if ( $subjekt && $sid )
{
$this -> app -> DB -> Update ( " UPDATE datei_stichwoerter SET subjekt = ' " . $this -> app -> DB -> real_escape_string ( $subjekt ) . " ' WHERE id = ' $sid ' LIMIT 1 " );
}
$this -> app -> DB -> Update ( " UPDATE datei SET titel = ' $titel ', beschreibung = ' $beschreibung ' WHERE id = ' $id ' LIMIT 1 " );
if ( ! empty ( $_FILES [ 'datei' ]) && $_FILES [ 'datei' ][ 'tmp_name' ] != '' )
{
$dateiname = $_FILES [ 'datei' ][ 'name' ];
$this -> app -> erp -> AddDateiVersion ( $id , $ersteller , $dateiname , $beschreibung , $_FILES [ 'datei' ][ 'tmp_name' ]);
}
$status = 1 ;
}
}
echo json_encode ( array ( 'status' => $status ));
exit ;
}
protected function CmdList ()
{
return array ( 'artikel' , 'adresse' , 'angebot' , 'auftrag' , 'rechnung' , 'gutschrift' , 'lieferschein' , 'bestellung' , 'projekt' , 'produktion' , 'anfrage' , 'reisekosten' , 'kalkulation' , 'serviceauftrag' , 'verbindlichkeit' , 'kasse' , 'geschaeftsbrief_vorlagen' , 'wiedervorlage' , 'wiki' );
}
/**
* @ param int $userId
* @ param string | null $alt
* @ param string | null $imgClass
* @ param int | null $widthHeight
*
* @ return string
*/
public function getProfileHtml ( $userId , $alt = null , $imgClass = null , $widthHeight = null ) : string
{
$userId = ( int ) $userId ;
$addressId = 0 ;
$shortUserName = '' ;
$user = $userId <= 0 ? null : $this -> app -> DB -> SelectRow (
sprintf (
" SELECT u.adresse, u.`username`
FROM `user` AS `u`
WHERE u . id =% d
LIMIT 1 " ,
$userId
)
);
if ( ! empty ( $user )) {
$addressId = $user [ 'adresse' ];
$shortUserName = substr ( $user [ 'username' ], 0 , 2 );
}
$fileId = $this -> getFileVersionFromProfileImage ( $addressId );
if ( $this -> getProfilePictureFromFileVersionId ( $fileId ) !== null ) {
$imgString = sprintf (
'<img src="index.php?module=ajax&action=profilbild&id=%d" ' ,
$userId
);
if ( $widthHeight !== null ) {
$imgString .= sprintf ( ' width="%s" heigth="%s" ' , $widthHeight , $widthHeight );
}
if ( $alt !== null ) {
$imgString .= sprintf ( ' alt="%s"' , $alt );
}
if ( $imgClass !== null ) {
$imgString .= sprintf ( ' class="%s"' , $imgClass );
}
return $imgString . ' />' ;
}
return sprintf ( '%s' , $shortUserName );
}
/**
* @ param int $addressId
*
* @ return int | null
*/
public function getFileVersionFromProfileImage ( $addressId ) : ? int
{
$addressId = ( int ) $addressId ;
if ( $addressId <= 0 ) {
return null ;
}
$fileVersionId = ( int ) $this -> app -> DB -> Select (
sprintf (
" SELECT dv.id
FROM `datei_stichwoerter` AS `ds`
INNER JOIN `datei` AS `d` ON ds . datei = d . id
INNER JOIN `datei_version` AS `dv` ON dv . datei = d . id
WHERE d . geloescht = 0 AND objekt LIKE 'Adressen' AND parameter = '%d' AND subjekt LIKE 'Profilbild'
ORDER BY dv . id DESC
LIMIT 1 " ,
$addressId
)
);
if ( $fileVersionId <= 0 ) {
return null ;
}
return $fileVersionId ;
}
/**
* @ param int $fileVersionId
*
* @ return bool
*/
public function getProfilePictureFromFileVersionId ( $fileVersionId ) : ? array
{
$fileVersionId = ( int ) $fileVersionId ;
if ( $fileVersionId <= 0 ) {
return null ;
}
$userdata = isset ( $this -> app -> Conf -> WFuserdata ) ? $this -> app -> Conf -> WFuserdata : str_replace ( 'index.php' , '' , $_SERVER [ 'SCRIPT_FILENAME' ]) . " ../userdata " ;
$path = $userdata . '/dms/' . $this -> app -> Conf -> WFdbname ;
$cachefolder = $path . '/cache' ;
$path = $this -> app -> erp -> GetDMSPath ( $fileVersionId , $path );
$cachefolder = $this -> app -> erp -> GetDMSPath ( $fileVersionId . '_100_100' , $cachefolder , true );
if ( ! file_exists ( $cachefolder . '/' . $fileVersionId . '_100_100' )) {
if ( file_exists ( $path . '/' . $fileVersionId )) {
$type = mime_content_type ( $path . '/' . $fileVersionId );
switch ( $type ) {
case 'image/jpg' :
case 'image/jpeg' :
$img = new image ( $this -> app );
$str = $img -> scaledPicByFileId ( $fileVersionId , 100 , 100 );
if (( string ) $str === '' ) {
return null ;
}
return [
'header' => 'Content-type: image/jpg' ,
'image' => $str ,
];
break ;
case 'image/png' :
$img = new image ( $this -> app );
$str = $img -> scaledPicByFileId ( $fileVersionId , 100 , 100 );
if (( string ) $str === '' ) {
return null ;
}
return [
'header' => 'Content-type: image/png' ,
'image' => $str ,
];
break ;
case 'image/gif' :
$img = new image ( $this -> app );
$str = $img -> scaledPicByFileId ( $fileVersionId , 100 , 100 );
if (( string ) $str === '' ) {
return null ;
}
return [
'header' => 'Content-type: image/gif' ,
'image' => $str ,
];
break ;
case 'application/pdf' :
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/pdf.svg' );
if (( string ) $str === '' ) {
return null ;
}
return [
'header' => 'Content-type: image/svg' ,
'picture' => $str ,
];
break ;
}
}
}
if ( file_exists ( $cachefolder . '/' . $fileVersionId . '_100_100' )){
$type = mime_content_type ( $cachefolder . '/' . $fileVersionId . '_100_100' );
if ( strpos ( $type , 'image' ) !== false ){
$str = file_get_contents ( $cachefolder . '/' . $fileVersionId . '_100_100' );
if (( string ) $str === '' ) {
return null ;
}
return [
'header' => 'Content-type: ' . $type ,
'picture' => $str ,
];
}
}
return null ;
}
public function AjaxProfilbild ()
{
$userId = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$addressId = $userId === $this -> app -> User -> GetID ()
? $this -> app -> User -> GetAdresse () :
( int ) $this -> app -> DB -> Select ( sprintf ( 'SELECT `adresse` FROM `user` WHERE `id` = %d' , $userId ));
$dateiversion = $this -> getFileVersionFromProfileImage ( $addressId );
$picture = $this -> getProfilePictureFromFileVersionId ( $dateiversion );
if ( $picture !== null ) {
header ( $picture [ 'header' ]);
echo $picture [ 'picture' ];
exit ;
}
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/profil.png' );
header ( 'Content-type: image/png' );
echo $str ;
exit ;
}
public function AjaxThumbnail ()
{
$cmds = $this -> CmdList ();
$cmd = trim ( $this -> app -> Secure -> GetGET ( 'cmd' ));
$id = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
2023-11-19 14:07:16 +01:00
$module = strtolower ( $cmd );
$cmd = $this -> app -> YUI -> dateien_module_objekt_map ( $cmd );
2022-05-24 21:50:35 +02:00
if ( ! empty ( $cmd ) && $id
&& ( ! in_array ( $cmd , $cmds ) || ( in_array ( $cmd , $cmds ) && $this -> app -> erp -> RechteVorhanden ( $cmd , 'dateien' )))) {
$datei = $this -> app -> DB -> SelectRow (
sprintf (
" SELECT dv.id, ds.parameter, dv.dateiname
FROM datei_version AS dv
INNER JOIN datei_stichwoerter ds ON ds . datei = dv . datei
2023-11-19 14:07:16 +01:00
WHERE dv . datei = % d AND ( ds . objekt like '%s' )
2022-05-24 21:50:35 +02:00
ORDER BY dv . datei DESC , dv . version DESC
LIMIT 1 " ,
$id , $cmd
)
);
if ( empty ( $datei )) {
if ( $this -> app -> erp -> Firmendaten ( 'iconset_dunkel' )) {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_dunkel.png' );
} else {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_hell.png' );
}
header ( 'Content-type: image/png' );
echo $str ;
exit ;
}
2023-11-30 19:39:11 +01:00
2022-05-24 21:50:35 +02:00
if ( ! empty ( $datei [ 'parameter' ])) {
if ( $cmd === 'projekt' ) {
if ( ! $this -> app -> erp -> UserProjektRecht ( $datei [ 'parameter' ])) {
if ( $this -> app -> erp -> Firmendaten ( 'iconset_dunkel' )) {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_dunkel.png' );
} else {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_hell.png' );
}
header ( 'Content-type: image/png' );
echo $str ;
exit ;
}
}
else {
$projekt = $this -> app -> DB -> Select (
sprintf (
'SELECT `projekt` FROM `%s` WHERE `id` = %d LIMIT 1' ,
2023-11-19 14:07:16 +01:00
$module , $datei [ 0 ][ 'parameter' ]
2022-05-24 21:50:35 +02:00
)
);
if ( ! $this -> app -> erp -> UserProjektRecht ( $projekt )) {
if ( $this -> app -> erp -> Firmendaten ( 'iconset_dunkel' )) {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_dunkel.png' );
}
else {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_hell.png' );
}
header ( 'Content-type: image/png' );
echo $str ;
exit ;
}
}
}
2023-11-30 19:39:11 +01:00
//Rechte prüfen
2022-05-24 21:50:35 +02:00
$userdata = isset ( $this -> app -> Conf -> WFuserdata )
? $this -> app -> Conf -> WFuserdata
: ( str_replace ( 'index.php' , '' , $_SERVER [ 'SCRIPT_FILENAME' ]) . '../userdata' );
$path = $userdata . '/dms/' . $this -> app -> Conf -> WFdbname ;
$cachefolder = $path . '/cache' ;
$_cachefolder = $cachefolder ;
$cachefolder = $this -> app -> erp -> GetDMSPath ( $datei [ 'id' ] . '_100_100' , $cachefolder , true );
if ( ! file_exists ( $cachefolder . '/' . $datei [ 'id' ] . '_100_100' )) {
$cachefolder = $this -> app -> erp -> CreateDMSPath ( $_cachefolder , $datei [ 'id' ]);
$datei_orig = $this -> app -> erp -> GetDateiPfadVersion ( $datei [ 'id' ]);
if ( file_exists ( $datei_orig )) {
$type = mime_content_type ( $datei_orig );
switch ( $type )
{
case 'image/jpg' :
case 'image/jpeg' :
$img = new image ( $this -> app );
$str = $img -> scaledPicByFileId ( $datei [ 'id' ], 100 , 100 );
header ( 'Content-type: image/jpg' );
echo $str ;
exit ;
break ;
case 'image/png' :
$img = new image ( $this -> app );
$str = $img -> scaledPicByFileId ( $datei [ 'id' ], 100 , 100 );
header ( 'Content-type: image/png' );
echo $str ;
exit ;
break ;
case 'image/gif' :
$img = new image ( $this -> app );
$str = $img -> scaledPicByFileId ( $datei [ 'id' ], 100 , 100 );
header ( 'Content-type: image/gif' );
echo $str ;
exit ;
break ;
case 'application/pdf' :
2023-11-30 19:39:11 +01:00
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/pdf.png' );
2022-05-24 21:50:35 +02:00
header ( 'Content-type: image/png' );
echo $str ;
exit ;
break ;
2023-11-30 19:39:11 +01:00
default :
2022-05-24 21:50:35 +02:00
break ;
}
}
}
2023-11-30 19:39:11 +01:00
2022-05-24 21:50:35 +02:00
if ( file_exists ( $cachefolder . '/' . $datei [ 'id' ] . '_100_100' )) {
$type = is_file ( $path . '/' . $datei [ 'id' ]) ? false : mime_content_type ( $path . '/' . $datei [ 'id' ]);
if ( $type === false ) {
$type = mime_content_type ( $cachefolder . '/' . $datei [ 'id' ] . '_100_100' );
}
if ( strpos ( $type , 'image' ) !== false ) {
header ( 'Content-type: ' . $type );
$str = file_get_contents ( $cachefolder . '/' . $datei [ 'id' ] . '_100_100' );
echo $str ;
exit ;
}
$str = file_get_contents ( $cachefolder . '/' . $datei [ 'id' ] . '_100_100' );
if ( substr ( strtolower ( $datei [ 'dateiname' ]), - 4 ) === '.gif' ) {
header ( 'Content-type: image/gif' );
echo $str ;
exit ;
}
if ( substr ( strtolower ( $datei [ 'dateiname' ]), - 4 ) === '.png' ) {
header ( 'Content-type: image/png' );
echo $str ;
exit ;
}
if ( substr ( strtolower ( $datei [ 'dateiname' ]), - 4 ) === '.jpg'
|| substr ( strtolower ( $datei [ 'dateiname' ]), - 5 ) === '.jpeg' ) {
header ( 'Content-type: image/jpg' );
echo $str ;
exit ;
}
}
else {
if ( $this -> app -> erp -> Firmendaten ( 'iconset_dunkel' )) {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_dunkel.png' );
} else {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_hell.png' );
}
header ( 'Content-type: image/png' );
echo $str ;
exit ;
}
}
else {
if ( $this -> app -> erp -> Firmendaten ( 'iconset_dunkel' )) {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_dunkel.png' );
} else {
$str = file_get_contents ( dirname ( __DIR__ ) . '/themes/new/images/keinbild_hell.png' );
}
header ( 'Content-type: image/png' );
echo $str ;
}
exit ;
}
public function AjaxModuleUnlock () {
if ( $this -> app -> erp -> RechteVorhanden ( 'welcome' , 'unlock' ) &&
( $salt = $this -> app -> Secure -> GetGET ( 'salt' )))
{
$this -> app -> DB -> Delete ( " DELETE from module_lock where salt = ' " . $salt . " ' " );
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxTableFilter () {
/*header("Content-Type: text/html; charset=utf-8");*/
$do = $this -> app -> Secure -> GetGET ( 'do' );
$filter = $this -> app -> Secure -> GetGET ( 'filter' );
switch ( $do ) {
case 'getParameters' :
$params = $this -> app -> User -> GetParameter ( 'table_filter_' . $filter );
echo base64_decode ( $params );
break ;
case 'setParameters' :
$params = base64_encode ( json_encode ( $_GET ));
$this -> app -> User -> SetParameter ( 'table_filter_' . $filter , $params );
break ;
case 'clearParameters' :
$this -> app -> User -> SetParameter ( 'table_filter_' . $filter , '' );
break ;
default :
return false ;
break ;
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxArticleMatrixSelection ()
{
$menge = $this -> app -> Secure -> GetPOST ( 'menge' );
$auswahl = $this -> app -> Secure -> GetPOST ( 'auswahl' );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
$vorgangsId = ( int ) $this -> app -> Secure -> GetGET ( 'id' );
$vorgangsTyp = $this -> app -> Secure -> GetGET ( 'typ' );
if ( $vorgangsId === 0 ) {
$this -> app -> erp -> ExitWawi ();
}
if ( $cmd === 'get' ) {
$articleMatrixSelection = $this -> GetArticleMatrixSelection ( $vorgangsTyp , $vorgangsId );
header ( 'Content-Type: application/json' );
echo json_encode ( $articleMatrixSelection );
$this -> app -> erp -> ExitWawi ();
}
if ( $cmd === 'set' ) {
// Vorhandene Auswahl laden und aktuelle Auswahl hinzufügen
// Notwendig, da sich der Auswahlprozess über mehrere Seiten erstrecken kann.
$articleMatrix = $this -> GetArticleMatrixSelection ( $vorgangsTyp , $vorgangsId );
foreach ( $menge as $artikelId => $artikelAnzahl ) {
// Nur Mengen größer Null merken
if ( ! empty ( $artikelAnzahl )) {
$articleMatrix [ 'menge' ][( int ) $artikelId ] = ( int ) $artikelAnzahl ;
}
// Auswahl wurde entfernt > Menge ebenfalls leeren
if ( isset ( $menge [ $artikelId ]) && ! isset ( $auswahl [ $artikelId ])) {
unset ( $articleMatrix [ 'auswahl' ][( int ) $artikelId ], $articleMatrix [ 'menge' ][( int ) $artikelId ]);
}
}
// Nur aktive Checkboxen merken
foreach ( $auswahl as $artikelId => $artikelAuswahl ) {
if ( $artikelAuswahl === 'on' ) {
$articleMatrix [ 'auswahl' ][( int ) $artikelId ] = true ;
}
}
$this -> SaveArticleMatrixSelection ( $vorgangsTyp , $vorgangsId , $articleMatrix );
$this -> app -> erp -> ExitWawi ();
}
// Artikelmatrix-Auswahl zurücksetzen
if ( $cmd === " reset " ) {
$this -> SaveArticleMatrixSelection ( $vorgangsTyp , $vorgangsId , []);
$this -> app -> erp -> ExitWawi ();
}
}
protected function GetArticleMatrixSelection ( $vorgangsTyp , $vorgangsId )
{
if ( empty ( $vorgangsTyp ) || ( int ) $vorgangsId === 0 ) {
return [
'auswahl' => [],
'menge' => [],
];
}
$selection = $this -> app -> User -> GetParameter ( " article_matrix_selection_ { $vorgangsTyp } _ { $vorgangsId } " );
$matrix = json_decode ( $selection , true );
if ( empty ( $matrix )) {
$matrix = [];
}
// Alter des Eintrags kontrollieren; nach 24 Stunden ohne Änderung > Eintrag verwerfen
$yesterday = time () - ( 60 * 60 * 24 );
if ( empty ( $matrix [ 'time' ]) || ( int ) $matrix [ 'time' ] < $yesterday ) {
$this -> SaveArticleMatrixSelection ( $vorgangsTyp , $vorgangsId , []);
$matrix = [];
}
if ( empty ( $matrix [ 'auswahl' ])) {
$matrix [ 'auswahl' ] = [];
}
if ( empty ( $matrix [ 'menge' ])) {
$matrix [ 'menge' ] = [];
}
return $matrix ;
}
protected function SaveArticleMatrixSelection ( $vorgangsTyp , $vorgangsId , $data = [])
{
if (( int ) $vorgangsId === 0 ) {
return ;
}
if ( empty ( $vorgangsTyp )) {
return ;
}
if ( ! is_array ( $data )) {
$data = [];
}
// Aktuellen Timestamp hinzufügen/überschreiben
$data [ 'time' ] = time ();
// Auswahl pro User und Vorgang merken
$this -> app -> User -> SetParameter ( " article_matrix_selection_ { $vorgangsTyp } _ { $vorgangsId } " , json_encode ( $data ));
}
public function AjaxTooltipSuche ()
{
$term = $this -> app -> Secure -> GetGET ( 'term' );
if ( is_numeric ( $term ))
{
$rechnung = $this -> app -> DB -> SelectArr ( " SELECT id,belegnr,soll,ist FROM rechnung WHERE belegnr=' $term ' " );
$gutschrift = $this -> app -> DB -> SelectArr ( " SELECT id,belegnr,soll,ist FROM gutschrift WHERE belegnr=' $term ' " );
$auftrag = $this -> app -> DB -> SelectArr ( " SELECT id,belegnr FROM auftrag WHERE belegnr=' $term ' " );
$internet = $this -> app -> DB -> SelectArr ( " SELECT id,belegnr FROM auftrag WHERE internet=' $term ' " );
$kunde = $this -> app -> DB -> SelectArr ( " SELECT id,name FROM adresse WHERE kundennummer=' $term ' " );
}
if ( ! empty ( $rechnung ) && is_array ( $rechnung ))
{
foreach ( $rechnung as $value ){
echo '<table width="500"><tr><td>Rechnung ' . $value [ 'belegnr' ] . ' SOLL:' . $value [ 'soll' ] . ' IST:' . $value [ 'ist' ] . '</td></tr></table>' ;
}
}
if ( ! empty ( $auftrag ) && is_array ( $auftrag ))
{
foreach ( $auftrag as $value ){
echo 'Auftrag ' . $value [ 'belegnr' ];
}
}
if ( ! empty ( $internet ) && is_array ( $internet ))
{
foreach ( $internet as $value ){
echo 'Internet Auftrag ' . $value [ 'belegnr' ];
}
}
/* if ( $internetnummer )
echo " Internetnummer " ; */
if ( ! empty ( $kunde ) && is_array ( $kunde ))
{
foreach ( $kunde as $value ){
echo 'Kunde ' . $value [ 'name' ];
}
}
echo 'ENDE ' ;
$this -> app -> erp -> ExitWawi ();
}
public function AjaxAdresseStammdaten ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
if ( $id <= 0 )
{
$this -> app -> erp -> ExitWawi ();
}
//name abteilung unterabteilung land strasse ort plz
$values = $this -> app -> DB -> SelectArr ( " SELECT * FROM adresse WHERE id=' $id ' LIMIT 1 " );
if ( ! empty ( $values )){
foreach ( $values [ 0 ] as $key => $value ) {
$values [ 0 ][ $key ] = $this -> app -> erp -> ReadyForPDF ( $value );
}
echo $this -> app -> erp -> ClearDataBeforeOutput ( $values [ 0 ][ 'name' ] . '#*#' . $values [ 0 ][ 'abteilung' ] . '#*#' . $values [ 0 ][ 'unterabteilung' ] . '#*#' . $values [ 0 ][ 'land' ] . '#*#' . $values [ 0 ][ 'strasse' ] . '#*#' . $values [ 0 ][ 'ort' ] . '#*#' . $values [ 0 ][ 'plz' ] . '#*#' . $values [ 0 ][ 'adresszusatz' ] . '#*#' . $values [ 0 ][ 'ansprechpartner' ] . '#*#' . $values [ 0 ][ 'titel' ] . '#*#' . $values [ 0 ][ 'id' ] .
'#*#' . $values [ 0 ][ 'email' ] .
'#*#' . $values [ 0 ][ 'telefon' ] .
'#*#' . $values [ 0 ][ 'telfax' ] .
'#*#' . $values [ 0 ][ 'anschreiben' ] .
'#*#' . $values [ 0 ][ 'gln' ]
);
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxVerzolladresse ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
if ( $id <= 0 )
{
$this -> app -> erp -> ExitWawi ();
}
//name abteilung unterabteilung land strasse ort plz
$values = $this -> app -> DB -> SelectArr ( " SELECT * FROM adresse WHERE id=' $id ' LIMIT 1 " );
if ( ! empty ( $values )){
foreach ( $values [ 0 ] as $key => $value ) {
if ( $key !== 'zollinformationen' ) {
$values [ 0 ][ $key ] = $this -> app -> erp -> ReadyForPDF ( $value );
}
}
echo $this -> app -> erp -> ClearDataBeforeOutput ( $values [ 0 ][ 'name' ] . '#*#' . $values [ 0 ][ 'abteilung' ] . '#*#' . $values [ 0 ][ 'unterabteilung' ] . '#*#' . $values [ 0 ][ 'land' ] . '#*#' . $values [ 0 ][ 'strasse' ] . '#*#' . $values [ 0 ][ 'ort' ] . '#*#' . $values [ 0 ][ 'plz' ] . '#*#' . $values [ 0 ][ 'adresszusatz' ] . '#*#' . $values [ 0 ][ 'ansprechpartner' ] . '#*#' . $values [ 0 ][ 'titel' ] . '#*#' . base64_encode ( $values [ 0 ][ 'zollinformationen' ]) . '#*#' );
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxLieferadresse ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
if ( $id <= 0 )
{
$this -> app -> erp -> ExitWawi ();
}
//name abteilung unterabteilung land strasse ort plz
$values = $this -> app -> DB -> SelectArr ( " SELECT * FROM lieferadressen WHERE id=' $id ' LIMIT 1 " );
if ( ! empty ( $values )){
foreach ( $values [ 0 ] as $key => $value ) {
$values [ 0 ][ $key ] = $this -> app -> erp -> ReadyForPDF ( $value );
}
echo $this -> app -> erp -> ClearDataBeforeOutput ( $values [ 0 ][ 'name' ] . '#*#' . $values [ 0 ][ 'abteilung' ] . '#*#' . $values [ 0 ][ 'unterabteilung' ] . '#*#' . $values [ 0 ][ 'land' ] . '#*#' . $values [ 0 ][ 'strasse' ] . '#*#' . $values [ 0 ][ 'ort' ] . '#*#' . $values [ 0 ][ 'plz' ] . '#*#' . $values [ 0 ][ 'adresszusatz' ] . '#*#' . $values [ 0 ][ 'ansprechpartner' ] . '#*#' . $values [ 0 ][ 'id' ] . '#*#' . $values [ 0 ][ 'gln' ] . '#*#' . $values [ 0 ][ 'ustid' ] . '#*#' . $values [ 0 ][ 'ust_befreit' ] . '#*#' . $values [ 0 ][ 'lieferbedingung' ] . '#*#' . $values [ 0 ][ 'email' ]);
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxAnsprechpartner ()
{
$id = $this -> app -> Secure -> GetGET ( 'id' );
if ( $id <= 0 )
{
$this -> app -> erp -> ExitWawi ();
}
$values = $this -> app -> DB -> SelectArr ( " SELECT * FROM ansprechpartner WHERE id=' $id ' LIMIT 1 " );
if ( ! empty ( $values [ 0 ])){
foreach ( $values [ 0 ] as $key => $value ) {
$values [ 0 ][ $key ] = $this -> app -> erp -> ReadyForPDF ( $value );
}
echo $this -> app -> erp -> ClearDataBeforeOutput ( $values [ 0 ][ 'name' ] . '#*#' . $values [ 0 ][ 'email' ] . '#*#' . $values [ 0 ][ 'telefon' ] . '#*#' . $values [ 0 ][ 'telefax' ] . '#*#' . $values [ 0 ][ 'abteilung' ] . '#*#' . $values [ 0 ][ 'unterabteilung' ] .
'#*#' . $values [ 0 ][ 'land' ] . '#*#' . $values [ 0 ][ 'strasse' ] . '#*#' . $values [ 0 ][ 'plz' ] . '#*#' . $values [ 0 ][ 'ort' ] . '#*#' . $values [ 0 ][ 'adresszusatz' ] . '#*#' . $values [ 0 ][ 'typ' ] . '#*#' . $values [ 0 ][ 'anschreiben' ] . '#*#' . $values [ 0 ][ 'titel' ] . '#*#' . $values [ 0 ][ 'id' ]);
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxAutoSaveKonfiguration ()
{
$name = $this -> app -> Secure -> GetPOST ( 'name' );
$value = $this -> app -> Secure -> GetPOST ( 'value' );
$this -> app -> erp -> SetKonfigurationValue ( $name , base64_decode ( $value ));
$this -> app -> erp -> ExitWawi ();
}
public function AjaxAutoSaveUserParameter ()
{
$name = $this -> app -> Secure -> GetPOST ( 'name' );
$value = $this -> app -> Secure -> GetPOST ( 'value' );
$this -> app -> User -> SetParameter ( $name , base64_decode ( $value ));
$this -> app -> erp -> ExitWawi ();
}
public function AjaxGetUserParameter ()
{
$name = $this -> app -> Secure -> GetPOST ( 'name' );
$names = $this -> app -> Secure -> GetPOST ( 'names' );
if ( ! empty ( $names ))
{
$names = explode ( ',' , $names );
$elems = explode ( ',' , $this -> app -> Secure -> GetPOST ( 'elems' ));
$values = $this -> app -> User -> GetParameter ( $names );
if ( ! empty ( $values ))
{
foreach ( $values as $k => $v )
{
$values [ $k ][ 'elem' ] = $elems [ $k ];
}
}
echo json_encode ( $values );
} else {
echo json_encode ( array ( 'name' => $name , 'elem' => $this -> app -> Secure -> GetPOST ( 'elem' ), 'value' => $this -> app -> User -> GetParameter ( $name )));
}
$this -> app -> erp -> ExitWawi ();
}
public function AjaxFilterWhere ( $term , $fields )
{
if ( empty ( $fields ))
{
return '1' ;
}
while ( strpos ( $term , ' ' ) !== false )
{
$term = str_replace ( ' ' , ' ' , $term );
}
$term = trim ( $term );
$term2 = $term ;
$term3 = $term ;
$term2 = $this -> app -> erp -> ConvertForDBUTF8 ( $term );
$term3 = $this -> app -> erp -> ConvertForDB ( $term );
$terma = explode ( ' ' , $term );
$term2a = explode ( ' ' , $term2 );
$term3a = explode ( ' ' , $term3 );
2022-06-10 11:28:28 +02:00
if (( ! empty ( $terma ) ? count ( $terma ) : 0 ) === 1 )
2022-05-24 21:50:35 +02:00
{
$wherea = [];
foreach ( $fields as $v ) {
$wherea [] = $v . " LIKE '% " . $term . " %' " ;
if ( $term2 !== $term && $term2 !== '' ){
$wherea [] = $v . " LIKE '% " . $term2 . " %' " ;
}
if ( $term3 !== $term && $term3 !== $term2 && $term3 !== '' ){
$wherea [] = $v . " LIKE '% " . $term3 . " %' " ;
}
}
return ' (' . implode ( ' OR ' , $wherea ) . ') ' ;
}
$wherea = [];
foreach ( $fields as $v ) {
if ( ! empty ( $term2 ) && $term2 !== $term ){
$tmp = [];
//foreach ($terma as $v2) {
$tmp [] = $this -> AjaxTableWhereBuilderArray ( $v , $terma , $term2a );
//}
$wherea [] = implode ( ' AND ' , $tmp );
}
elseif ( ! empty ( $term3 ) && $term3 !== $term ){
$tmp = [];
//foreach ($terma as $v2) {
$tmp [] = $this -> AjaxTableWhereBuilderArray ( $v , $terma , $term3a );
//}
$wherea [] = implode ( ' AND ' , $tmp );
}
else {
$tmp = [];
//foreach ($terma as $v2) {
$tmp [] = $this -> AjaxTableWhereBuilderArray ( $v , $terma );
//}
$wherea [] = implode ( ' AND ' , $tmp );
}
}
return ' (' . implode ( ' OR ' , $wherea ) . ') ' ;
}
public function AjaxFilter ()
{
//$term = $this->app->Secure->GetGET("term");
$term = $this -> app -> Secure -> GetGET ( 'term' );
$termorig = $term ;
$rmodule = $this -> app -> Secure -> GetGET ( 'rmodule' );
$raction = $this -> app -> Secure -> GetGET ( 'raction' );
$rid = ( int ) $this -> app -> Secure -> GetGET ( 'rid' );
2023-03-30 10:54:18 +02:00
$asObject = $this -> app -> Secure -> GetGET ( 'object' );
2022-05-24 21:50:35 +02:00
$pruefemodule = array ( 'artikel' , 'auftrag' , 'angebot' , 'rechnung' , 'lieferschein' , 'gutschrift' , 'bestellung' , 'produktion' );
$filter_projekt = 0 ;
if ( $raction === 'edit' && $rid && in_array ( $rmodule , $pruefemodule ))
{
$projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM $rmodule WHERE id = ' $rid ' LIMIT 1 " );
if ( $projekt )
{
$eigenernummernkreis = $this -> app -> DB -> Select ( " SELECT eigenernummernkreis FROM projekt WHERE id = ' $projekt ' LIMIT 1 " );
//if($eigenernummernkreis)
$filter_projekt = $projekt ;
}
}
$term2 = $term ;
$term3 = $term ;
$term = $this -> app -> erp -> ConvertForDBUTF8 ( $term );
$term2 = $this -> app -> erp -> ConvertForDB ( $term2 );
if ( $term2 == '' ) {
$term2 = $term ;
}
$term = str_replace ( ' ' , '%' , $term );
$term2 = str_replace ( ' ' , '%' , $term2 );
$term3 = str_replace ( ' ' , '%' , $term3 );
//$term = $this->app->erp->ConvertForDBUTF8($term);
//$term = str_replace(' ','%',$term);
$filtername = $this -> app -> Secure -> GetGET ( 'filtername' );
$term = trim ( $term );
$term2 = trim ( $term2 );
switch ( $filtername )
{
case " adressenamegruppe " :
$gruppe = $this -> app -> Secure -> GetGET ( 'gruppe' );
$gruppea = explode ( ',' , $gruppe );
$gruppenwhere = ' 0 ' ;
foreach ( $gruppea as $v )
{
if ( $v ){
$gruppenw [] = " ar.parameter = ' $v ' " ;
}
}
if ( ! empty ( $gruppenw ))
{
$gruppenwhere = ' (' . implode ( ' OR ' , $gruppenw ) . ') ' ;
}
$felder = array ( 'a.email' , 'a.name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT concat(a.id, ' ',a.name) as name2 FROM adresse a
INNER JOIN adresse_rolle ar ON a . id = ar . adresse AND $gruppenwhere AND ar . objekt LIKE 'Gruppe' AND ( bis = '0000-00-00' OR bis >= curdate ())
WHERE ( $subwhere ) AND a . geloescht <> 1 " . $this->app ->erp->ProjektRechte('a.projekt'). "
ORDER BY a . name LIMIT 20
" );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name2' ] } " ;
}
break ;
case " adressename " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT a.email, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.kundennummer " . $this -> app -> erp -> ProjektRechte ( 'a2.projekt' ) . " order by " . ( $filter_projekt ? " a2.projekt = ' $filter_projekt ' DESC, " : " " ) . " projekt LIMIT 1) as name2 FROM adresse a WHERE (a.email LIKE '% $term %' OR a.name LIKE '% $term %' OR a.name LIKE '% $term2 %' OR a.name LIKE '% $term3 %') " . $this -> app -> erp -> ProjektRechte ( 'a.projekt' ) . " GROUP by email ORDER BY a.email, name2 LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name2' ] } " ;
}
2022-07-24 21:10:33 +02:00
break ;
case 'warteschlangename' :
2022-12-23 19:55:48 +01:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(label, ' ', warteschlange) as result from warteschlangen WHERE label LIKE '% $term %' OR warteschlange LIKE '% $term %' ORDER BY label " );
2022-07-24 21:10:33 +02:00
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'result' ] } " ;
}
break ;
2022-05-24 21:50:35 +02:00
/*
select a . kundennummer , ( SELECT name FROM adresse a2 WHERE a2 . kundennummer = a . kundennummer order by a2 . projekt = 13 DESC , a2 . projekt = 0 DESC , projekt LIMIT 1 ) as name FROM adresse a WHERE a . kundennummer like '10500' group by a . kundennummer
*/
case " arbeitspaket " :
if ( trim ( $this -> app -> Secure -> GetGET ( 'projekt' )) != '' ){
$checkprojekt = trim ( $this -> app -> Secure -> GetGET ( 'projekt' ));
} else {
$checkprojekt = $this -> app -> User -> GetParameter ( " teilprojekt_filter " );
}
if ( is_numeric ( $checkprojekt ) && $checkprojekt > 0 ){
$projektid = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE id=' " . $checkprojekt . " ' LIMIT 1 " );
}
$limit = '' ;
if ( $projektid <= 0 )
{
$checkprojekt = explode ( ' ' , $checkprojekt );
$projektid = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE abkuerzung=' " . $checkprojekt [ 0 ] . " ' AND abkuerzung!='' LIMIT 1 " );
if ( $projektid <= 0 ){
$limit = ' LIMIT 20 ' ;
}
}
if ( $projektid > 0 ){
$subwhere = " AND p.id=' " . $projektid . " ' " ;
} else {
$subwhere = '' ;
}
$felder = array ( 'p.abkuerzung' , 'ap.aufgabe' );
$subwhere2 = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(ap.id,' ',p.abkuerzung,' ',ap.aufgabe) as name2 FROM arbeitspaket ap LEFT JOIN projekt p ON p.id=ap.projekt WHERE ( $subwhere2 ) AND ap.status!='abgeschlossen' AND ap.aufgabe!='' AND p.id > 0 $subwhere " . $limit );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name2' ] } " ;
}
break ;
case " artikeleigenschaften " :
$subwhere = $this -> app -> erp -> ProjektRechte ( 'e.projekt' );
$felder = array ( 'name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT name FROM artikeleigenschaften e WHERE ( $subwhere ) AND geloescht <> 1 LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name' ] } " ;
}
break ;
case " artikeleigenschaftenwerte " :
//$arr = $this->app->DB->SelectArr("SELECT DISTINCT wert FROM artikeleigenschaftenwerte WHERE wert LIKE '%$term%' OR wert LIKE '%$term2%' OR wert LIKE '%$term3%' LIMIT 20");
//$arr2 = $this->app->DB->SelectArr("SELECT DISTINCT property_value_from FROM article_property_translation WHERE (property_value_from LIKE '%$term%' OR property_value_from LIKE '%$term2%' OR property_value_from LIKE '%$term3') AND language_from = 'DE' LIMIT 20");
$arr = $this -> app -> DB -> SelectArr ( " (SELECT DISTINCT wert FROM artikeleigenschaftenwerte WHERE wert LIKE '% $term %' OR wert LIKE '% $term2 %' OR wert LIKE '% $term3 %' LIMIT 20) UNION
( SELECT DISTINCT property_value_from as wert FROM article_property_translation WHERE ( property_value_from LIKE '%$term%' OR property_value_from LIKE '%$term2%' OR property_value_from LIKE '%$term3' ) AND language_from = 'DE' LIMIT 20 ) ORDER BY wert " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = " { $arr [ $i ][ 'wert' ] } " ;
}
break ;
case " matrixprodukt_uebersetzungen " :
$arr = $this -> app -> DB -> SelectArr ( " (SELECT DISTINCT name_from AS name FROM matrix_article_translation WHERE name_from LIKE '% $term %' OR name_from LIKE '% $term2 %' OR name_from LIKE '% $term3 %' LIMIT 20)
UNION ( SELECT DISTINCT name_to AS name FROM matrix_article_translation WHERE name_to LIKE '%$term%' OR name_to LIKE '%$term2%' OR name_to LIKE '%$term3%' LIMIT 20 )
UNION ( SELECT DISTINCT name FROM matrixprodukt_eigenschaftengruppen WHERE name LIKE '%$term%' OR name LIKE '%$term2%' OR name LIKE '%$term3%' LIMIT 20 ) " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = " { $arr [ $i ][ 'name' ] } " ;
}
break ;
case " matrixprodukt_optionen_uebersetzungen " :
$arr = $this -> app -> DB -> SelectArr ( " (SELECT DISTINCT name_from AS name FROM matrix_article_options_translation WHERE name_from LIKE '% $term %' OR name_from LIKE '% $term2 %' OR name_from LIKE '% $term3 %' LIMIT 10)
UNION ( SELECT DISTINCT name_to AS name FROM matrix_article_options_translation WHERE name_to LIKE '%$term%' OR name_to LIKE '%$term2%' OR name_to LIKE '%$term3%' LIMIT 20 )
UNION ( SELECT DISTINCT name FROM matrixprodukt_eigenschaftenoptionen WHERE name LIKE '%$term%' OR name LIKE '%$term2%' OR name LIKE '%$term3%' LIMIT 20 ) " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = " { $arr [ $i ][ 'name' ] } " ;
}
break ;
case " drucker " :
$felder = array ( 'name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT name FROM drucker WHERE $subwhere LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name' ] } " ;
}
break ;
case " wiedervorlage_stages " :
$felder = array ( 'ws.name' , 'ws.kurzbezeichnung' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr (
" SELECT CONCAT(ws.id, ' ', ws.kurzbezeichnung, ' (', IFNULL(wv.shortname, 'Standard'), ' - ', ws.name, ')') AS `name2`
FROM `wiedervorlage_stages` AS `ws`
LEFT JOIN `wiedervorlage_view` AS `wv` ON ws . view = wv . id
WHERE $subwhere
ORDER BY ws . view , ws . kurzbezeichnung LIMIT 20 "
);
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name2' ] } " ;
}
break ;
case " wiedervorlage_view " :
$felder = array ( 'name' , 'shortname' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id, ' ', shortname, ' (',name,')') AS name2 FROM wiedervorlage_view WHERE $subwhere ORDER BY shortname LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = " { $arr [ $i ][ 'name2' ] } " ;
}
break ;
case " etiketten " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id,' ',name) as name2 FROM etiketten WHERE name LIKE '% $term %' OR name LIKE '% $term2 %' OR name LIKE '% $term3 %' LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = " { $arr [ $i ][ 'name2' ] } " ;
break ;
case " laender " :
$laender = $this -> app -> erp -> GetSelectLaenderliste ();
$_term = explode ( ',' , $term );
2022-06-10 11:28:28 +02:00
$_term = $_term [( ! empty ( $_term ) ? count ( $_term ) : 0 ) - 1 ];
2022-05-24 21:50:35 +02:00
if ( $laender ){
foreach ( $laender as $key => $value )
{
if ( stripos ( $key , $_term ) !== false || stripos ( $value , $_term ) !== false )
{
$newarr [] = $key . ' ' . $value ;
}
}
}
break ;
case " artikelname " :
$felder = array ( 'CONCAT(nummer,\' \',name_de)' , 'nummer' , 'name_de' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT name_de FROM artikel WHERE geloescht=0 AND intern_gesperrt!=1 AND ( $artikel_freitext1_suche ) AND geloescht=0 ORDER by name_de LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name_de' ];
}
break ;
case " artikelgruppe " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT typ FROM artikel WHERE geloescht=0 AND intern_gesperrt!=1 AND typ LIKE '% $term %' ORDER by typ " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'typ' ];
}
break ;
case " artikelkategorienfull " :
$anz = $this -> app -> DB -> Select ( " SELECT count(*) FROM artikelkategorien " );
$subwhere = $this -> app -> erp -> ProjektRechte ( 'ar.projekt' );
if ( $anz )
{
$artikelbaum = array ();
$allekategorien = $this -> app -> DB -> SelectArr ( " SELECT id, bezeichnung, parent FROM artikelkategorien WHERE geloescht = 0 " );
foreach ( $allekategorien as $key => $value ){
if ( $value [ 'parent' ] == 0 ){
$artikelbaum [ $value [ 'id' ]] = $value [ 'bezeichnung' ];
foreach ( $allekategorien as $key2 => $value2 ){
if ( array_key_exists ( $value2 [ 'parent' ], $artikelbaum )){
$artikelbaum [ $value2 [ 'id' ]] = $artikelbaum [ $value2 [ 'parent' ]] . " / " . $value2 [ 'bezeichnung' ];
}
}
}
}
$arr = array ();
$i = 0 ;
if ( $term == " " || $term == " % " ){
foreach ( $artikelbaum as $key => $value ){
$arr [ $i ] = $key . " " . $value ;
$i ++ ;
}
} else {
foreach ( $artikelbaum as $key => $value ){
if ( strpos ( strtolower ( $value ), strtolower ( $term )) !== false ){
$arr [ $i ] = $key . ' ' . $value ;
$i ++ ;
}
}
}
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
if ( $i < 20 ){
$newarr [] = $arr [ $i ];
} else {
break ;
}
}
break ;
case " artikelkategorien " :
$anz = $this -> app -> DB -> Select ( " SELECT count(*) FROM artikelkategorien " );
$subwhere = $this -> app -> erp -> ProjektRechte ( 'ar.projekt' );
if ( $anz )
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT a.typ,ar.bezeichnung FROM artikel a LEFT JOIN artikelkategorien ar ON a.typ = concat(ar.id,'_kat') WHERE a.geloescht=0 AND a.intern_gesperrt!=1 AND ar.bezeichnung LIKE '% $term %' " . $subwhere . " GROUP BY a.typ ORDER by ar.bezeichnung " );
if ( $arr )
{
$typen = false ;
foreach ( $arr as $k => $a )
{
if ( $a [ 'bezeichnung' ]) $arr [ $k ][ 'typ' ] = $a [ 'bezeichnung' ];
$typen = $arr [ $k ][ 'typ' ];
}
array_multisort ( $typen , $arr );
$last = false ;
foreach ( $arr as $k => $a )
{
if ( $last == $a [ 'typ' ])
{
unset ( $arr [ $k ]);
} else {
$last = $a [ 'typ' ];
}
}
}
} else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT typ FROM artikel WHERE geloescht=0 AND intern_gesperrt!=1 AND typ LIKE '% $term %' ORDER by typ " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = $arr [ $i ][ 'typ' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " alleartikelkategorien " :
2022-05-24 21:50:35 +02:00
$anz = $this -> app -> DB -> Select ( " SELECT count(*) FROM artikelkategorien " );
$subwhere = $this -> app -> erp -> ProjektRechte ( 'ar.projekt' );
if ( $anz )
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT ar.bezeichnung as typ FROM artikelkategorien ar WHERE ar.bezeichnung LIKE '% $term %' " . $subwhere . " AND ar.geloescht <> 1 ORDER by ar.bezeichnung " );
} else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT typ FROM artikel WHERE geloescht=0 AND intern_gesperrt!=1 AND typ LIKE '% $term %' ORDER by typ " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'typ' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " xcs_tables " :
2022-05-24 21:50:35 +02:00
$felder = array ( 'name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT name FROM xcs_table ORDER BY name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " artikeleanbeleg " :
$doctype = $this -> app -> Secure -> GetGET ( 'doctype' );
$doctypeid = ( int ) $this -> app -> Secure -> GetGET ( 'doctypeid' );
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(if(art.ean <> '', art.ean, art.nummer),' ',art.name_de) as name FROM artikel art
INNER JOIN $doctype " . " _position ap ON ap . artikel = art . id AND $doctype = '$doctypeid'
WHERE art . geloescht = 0 AND ( $subwhere ) AND art . geloescht = 0 AND art . intern_gesperrt != 1 LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " artikelnummerbeleg " :
$doctype = $this -> app -> Secure -> GetGET ( 'doctype' );
$doctypeid = ( int ) $this -> app -> Secure -> GetGET ( 'doctypeid' );
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
2023-10-16 21:22:21 +02:00
} else {
$artikel_freitext1_suche = 'true' ;
2022-05-24 21:50:35 +02:00
}
2023-10-16 21:22:21 +02:00
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$sql = " SELECT CONCAT(art.nummer,' ',art.name_de) as name FROM artikel art
2022-05-24 21:50:35 +02:00
INNER JOIN $doctype " . " _position ap ON ap . artikel = art . id AND $doctype = '$doctypeid'
2023-10-26 20:23:19 +02:00
WHERE
art . geloescht = 0 AND ( $artikel_freitext1_suche ) AND art . geloescht = 0 AND art . intern_gesperrt != 1 AND
( name_de LIKE '%$term%' OR art . nummer LIKE '%$term%' )
LIMIT 20 " ;
2023-10-16 21:22:21 +02:00
$arr = $this -> app -> DB -> SelectArr ( $sql );
2022-05-24 21:50:35 +02:00
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " spracheniso " :
$arr = $this -> app -> DB -> SelectArr ( 'SELECT iso FROM sprachen' );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = $arr [ $i ][ 'iso' ];
}
break ;
2023-12-11 22:13:37 +01:00
case " activelanguages " :
$newarr = $this -> app -> DB -> SelectArr ( 'SELECT * FROM sprachen WHERE aktiv=1' );
break ;
2022-05-24 21:50:35 +02:00
case " geschaeftsbrief_vorlagen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id,' ',subjekt,' (',sprache,')') as name FROM geschaeftsbrief_vorlagen " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " artikeleinheit " :
//$arr = $this->app->DB->SelectArr("SELECT DISTINCT einheit_de FROM artikeleinheit WHERE firma='".$this->app->User->GetFirma()."' AND einheit_de LIKE '%$term%' ORDER by einheit_de");
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT einheit_de FROM artikeleinheit WHERE einheit_de LIKE '% $term %' ORDER by einheit_de " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'einheit_de' ];
break ;
case " ihrebestellnummer " :
$adresse = $this -> app -> Secure -> GetGET ( 'adresse' );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT ihrebestellnummer FROM auftrag WHERE ihrebestellnummer LIKE '% $term %' AND adresse=' $adresse ' ORDER by ihrebestellnummer " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'ihrebestellnummer' ];
}
break ;
case " accountart " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT art FROM adresse_accounts WHERE art LIKE '% $term %' ORDER by art " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'art' ];
}
break ;
case " ansprechpartneradresse " :
$adressId = $this -> app -> Secure -> GetGET ( 'adresse' );
if ( is_numeric ( $adressId ) && $adressId > 0 ){
$adressId = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE id = ' $adressId ' LIMIT 1 " );
}
$limit = '' ;
2022-06-30 14:33:48 +02:00
2022-05-24 21:50:35 +02:00
if ( $adressId <= 0 ){
$adresse = explode ( ' ' , $adressId );
$adressId = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE name = ' " . $adresse [ 0 ] . " ' AND name != '' LIMIT 1 " );
if ( $adressId <= 0 ){
$limit = ' LIMIT 20 ' ;
}
}
2022-06-30 14:33:48 +02:00
// if($adressId > 0){
2022-05-24 21:50:35 +02:00
$subwhere = " AND a.id = ' $adressId ' " ;
2022-06-30 14:33:48 +02:00
// }else{
// $subwhere = '';
// }
2022-05-24 21:50:35 +02:00
$felder = array ( 'an.name' );
$subwhere2 = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(an.id, ' ', an.name, ' ', IF(a.lieferantennummer,CONCAT('(', a.name, ', Kdr: ', a.kundennummer, ' Liefr: ', a.lieferantennummer, ')'), CONCAT('(', a.name, ', Kdr: ', a.kundennummer, ')'))) AS name
FROM ansprechpartner an
2022-06-30 14:33:48 +02:00
INNER JOIN adresse a ON an . adresse = a . id
2022-05-24 21:50:35 +02:00
WHERE ( $subwhere2 ) AND a . id > 0 AND a . geloescht = 0 $subwhere " . $this->app ->erp->ProjektRechte('a.projekt'). $limit );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = " { $arr [ $i ][ 'name' ] } " ;
}
break ;
case " ansprechpartner " :
$adresse = $this -> app -> Secure -> GetGET ( 'adresse' );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT name FROM ansprechpartner WHERE adresse=' $adresse ' AND name LIKE '% $term %' AND geloescht <> 1 ORDER by name " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " hersteller " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT hersteller FROM artikel WHERE geloescht=0 AND intern_gesperrt!=1 AND hersteller LIKE '% $term %' ORDER by hersteller " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'hersteller' ];
break ;
case " rmakategorien " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT bezeichnung FROM rma_vorlagen_kategorien WHERE bezeichnung LIKE '% $term %' ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " spedition_einstellungen_feld " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT feld FROM spedition_einstellungen WHERE aktiv=1 AND feld LIKE '% $term %' ORDER by feld " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'feld' ];
}
break ;
case " zeiterfassung_beschreibung " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT beschreibung FROM zeiterfassung_kosten WHERE beschreibung LIKE '% $term %' ORDER by beschreibung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'beschreibung' ];
}
break ;
case " eigenschaften_vorlagen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT bezeichnung FROM eigenschaften_vorlagen WHERE bezeichnung LIKE '% $term %' AND aktiv = 1 ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " ticketnummer " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(t.schluessel, ' Name: ', t.kunde, ' Betr: ', t.betreff) as schluessel FROM ticket t WHERE t.schluessel LIKE '% $term %' OR t.kunde LIKE '% $term %' OR t.betreff LIKE '% $term %' ORDER BY t.schluessel " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'schluessel' ];
}
break ;
case " abosammelrechnungen " :
$id = $this -> app -> Secure -> GetGET ( 'adresse' );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id, ' ', bezeichnung) as bezeichnung FROM adresse_abosammelrechnungen WHERE bezeichnung LIKE '% $term %' AND adresse = ' $id ' ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " arbeitsplatzgruppe " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id, ' ',bezeichnung) as bezeichnung FROM arbeitsplatzgruppen WHERE bezeichnung LIKE '% $term %' AND aktiv = 1 ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
case " artikelarbeitsanweisung_vorlagen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT bezeichnung FROM artikelarbeitsanweisung_vorlagen WHERE bezeichnung LIKE '% $term %' AND aktiv = 1 ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
case " artikelfunktionsprotokoll_vorlagen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT bezeichnung FROM artikelfunktionsprotokoll_vorlagen WHERE bezeichnung LIKE '% $term %' AND aktiv = 1 ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
case " fahrtenbuch_kennzeichen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT kennzeichen FROM fahrtenbuch_fahrzeuge WHERE kennzeichen LIKE '% $term %' AND aktiv = 1 ORDER BY kennzeichen " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'kennzeichen' ];
break ;
case " fahrtenbuch_strecke " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT strecke FROM fahrtenbuch_vorlagen WHERE (strecke LIKE '% $term %' OR strecke LIKE '% $term2 %' OR strecke LIKE '% $term3 %') AND aktiv = 1 ORDER BY strecke " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'strecke' ];
break ;
case " verpackungsgruppe " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT verpackungsgruppe FROM verpackungen_details WHERE verpackungsgruppe LIKE '% $term %' ORDER by verpackungsgruppe " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'verpackungsgruppe' ];
break ;
case " dropshipping_gruppe " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT bezeichnung FROM dropshipping_gruppe WHERE bezeichnung LIKE '% $term %' ORDER BY bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
case " layoutvorlage " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id, ' ', name) AS name FROM layoutvorlagen WHERE name LIKE '% $term %' ORDER BY name " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " uservorlage " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT bezeichnung FROM uservorlage WHERE bezeichnung LIKE '% $term %' ORDER by bezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
case " lagergrund " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT TRIM(REPLACE(REPLACE(referenz,'Umlagern fü :',''),'Differenz:','')) as ergebnis FROM lager_bewegung WHERE REPLACE(referenz,'Differenz:','') LIKE '% $term %' AND referenz NOT LIKE '%Inventur%' AND referenz NOT LIKE '%Charge%' AND referenz NOT LIKE '%Lieferschein%'
AND referenz NOT LIKE '%Manuell%' AND referenz NOT LIKE '%Wareneingang%' AND referenz NOT LIKE '%Lieferungen%' LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'ergebnis' ];
break ;
case " auftrag_zahlungseingang " :
if ( strpos ( $term , ',' ) !== false )
{
$term = substr ( $term , strripos ( $term , ',' ));
$term = str_replace ( ',' , '' , $term );
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(r.belegnr,' ',REPLACE(a.name,',',''),' ',r.internet,' GESAMT: ',r.gesamtsumme,' (Kunde ',a.kundennummer,') vom ',DATE_FORMAT(r.datum,'%d.%m.%Y'),' Status: ',r.status) as name
FROM auftrag r LEFT JOIN adresse a ON a . id = r . adresse WHERE r . belegnr != ''
AND ( a . name LIKE '%$term%' OR r . belegnr LIKE '%$term%' OR a . kundennummer LIKE '%$term%' OR a . name LIKE '%$term2%' OR a . name LIKE '%$term3%' OR IFNULL ( r . internet , '' ) LIKE '%$term%' ) ORDER by r . belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " rechnung_zahlungseingang " :
if ( strpos ( $term , ',' ) !== false )
{
$term = substr ( $term , strripos ( $term , ',' ));
$term = str_replace ( ',' , '' , $term );
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(r.belegnr,' Soll:',r.soll,' Ist:',r.ist,' ',' Diff:',(r.soll-r.ist)*-1,' ',
if ( r . zahlungszielskonto > 0 , if ( isnull ( r . skontobetrag ), CONCAT ( 'SK:' , r . zahlungszielskonto , '%(' , FORMAT (( r . soll / 100 ) * r . zahlungszielskonto , 2 ), ') ' ), concat ( 'SK:' , FORMAT ( 100 * r . skontobetrag / r . soll , 2 ), '%(' , FORMAT ( r . skontobetrag , 2 ), ')' )), '' ), REPLACE ( a . name , ',' , '' ), '(Kunde ' , a . kundennummer , ') vom ' , DATE_FORMAT ( r . datum , '%d.%m.%Y' ), ' Status: ' , r . status
, IF ( IFNULL ( ab . internet , '' ) != '' , CONCAT ( ' Intenet: ' , ab . internet ), '' )
) as name
FROM rechnung r
LEFT JOIN auftrag ab ON r . auftragid = ab . id
LEFT JOIN adresse a ON a . id = r . adresse
WHERE r . belegnr != '' AND
( a . name LIKE '%$term%' OR r . belegnr LIKE '%$term%' OR a . kundennummer LIKE '%$term%'
OR a . name LIKE '%$term2%' OR a . name LIKE '%$term3%'
OR IFNULL ( ab . internet , '' ) LIKE '%$term%'
)
AND r . zahlungsstatus != 'bezahlt'
ORDER by r . belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " gutschrift_zahlungseingang " :
if ( strpos ( $term , ',' ) !== false )
{
$term = substr ( $term , strripos ( $term , ',' ));
$term = str_replace ( ',' , '' , $term );
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(r.belegnr,' SOLL: ',r.soll,' IST:',r.ist,' ',REPLACE(a.name,',',''),' (Kunde ',a.kundennummer,') vom ',DATE_FORMAT(r.datum,'%d.%m.%Y'),' Status: ',r.status) as name
FROM gutschrift r LEFT JOIN adresse a ON a . id = r . adresse WHERE r . belegnr != '' AND ( a . name LIKE '%$term%' OR r . belegnr LIKE '%$term%' OR a . kundennummer LIKE '%$term%' OR a . name LIKE '%$term2%' OR a . name LIKE '%$term3%' ) AND ( r . manuell_vorabbezahlt IS NULL OR r . manuell_vorabbezahlt = '0000-00-00' ) ORDER by r . belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " gutschrift " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) AS name
FROM gutschrift WHERE belegnr != '' AND belegnr != '0' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) " . $this->app ->erp->ProjektRechte(). " ORDER BY belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " angebot " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM angebot WHERE belegnr != '' AND belegnr != '0' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) " . $this->app ->erp->ProjektRechte( " projekt " ). " ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " bestellung " :
$status = $this -> app -> Secure -> GetGET ( 'status' );
switch ( $status ) {
case 'freigegeben' :
case 'abgeschlossen' :
case 'versendet' :
case 'strorniert' :
break ;
default :
$status = '' ;
break ;
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM bestellung WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) " .( $status != ''? " AND status = '".$status."' " :''). $this->app ->erp->ProjektRechte( " projekt " ). " ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " preisanfrage " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM preisanfrage WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) " . $this->app ->erp->ProjektRechte( " projekt " ). " ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " bestellunggesamtsumme " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ', " . $this -> app -> erp -> FormatPreis ( " gesamtsumme " , 2 ) . " ,' ',waehrung,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM bestellung WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " auftrag_position_dienstleistung " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT ap.menge, ap.id as auftragspositionid,CONCAT(a.belegnr,'-',ap.sort,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y'),' ',ap.bezeichnung) as name
FROM auftrag_position ap LEFT JOIN auftrag a ON a . id = ap . auftrag LEFT JOIN artikel art ON art . id = ap . artikel WHERE art . dienstleistung = 1 AND a . belegnr != '0' AND a . belegnr != '' AND ( a . name LIKE '%$term%' OR ap . bezeichnung LIKE '%$term%' OR a . belegnr LIKE '%$term%' OR DATE_FORMAT ( a . datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by a . belegnr DESC LIMIT 20 " );
foreach ( $arr as $value ){
$sollzeit = number_format ( $value [ 'menge' ], 2 );
$istzeit = $this -> app -> DB -> Select ( " SELECT SUM(Time_to_sec(Timediff(z.von,z.bis))/3600) FROM zeiterfassung z WHERE z.auftragpositionid = ' { $value [ 'auftragspositionid' ] } ' " );
$newarr [] = $value [ 'name' ] . " ( " . number_format (( $istzeit *- 1 ), 2 ) . " von " . $sollzeit . " ) " ;
}
break ;
case " alle_auftrag_positionen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT ap.menge, ap.id as auftragspositionid,CONCAT(a.belegnr,'-',ap.sort,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y'),' ',ap.bezeichnung) as name
FROM auftrag_position ap LEFT JOIN auftrag a ON a . id = ap . auftrag WHERE a . belegnr != '0' AND a . belegnr != '' AND ( a . name LIKE '%$term%' OR ap . bezeichnung LIKE '%$term%' OR a . belegnr LIKE '%$term%' OR DATE_FORMAT ( a . datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by a . belegnr DESC LIMIT 20 " );
foreach ( $arr as $value ){
$sollzeit = number_format ( $value [ 'menge' ], 2 );
$istzeit = $this -> app -> DB -> Select ( " SELECT SUM(Time_to_sec(Timediff(z.von,z.bis))/3600) FROM zeiterfassung z WHERE z.auftragpositionid = ' { $value [ 'auftragspositionid' ] } ' " );
$newarr [] = $value [ 'name' ] . " ( " . number_format (( $istzeit *- 1 ), 2 ) . " von " . $sollzeit . " ) " ;
}
break ;
case " auftragihrebestellnummer " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y'),
if ( ihrebestellnummer != '' , CONCAT ( ' ' , ihrebestellnummer ), '' ), if ( internebezeichnung != '' , CONCAT ( ' ' , internebezeichnung ), '' )) as name
FROM auftrag WHERE belegnr != '0' AND belegnr != '' AND status != 'angelegt' AND
( name LIKE '%$term%' OR name LIKE '%$term2%' OR name LIKE '%$term3%' OR ihrebestellnummer LIKE '%$term%' OR internebezeichnung LIKE '%$term%'
OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " auftrag " :
$status = $this -> app -> Secure -> GetGET ( 'status' );
switch ( $status ) {
case 'freigegeben' :
case 'abgeschlossen' :
case 'strorniert' :
break ;
default :
$status = '' ;
break ;
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(a.belegnr,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y')) as name
FROM auftrag a LEFT JOIN projekt p ON p . id = a . projekt WHERE a . belegnr != '0' AND a . belegnr != '' AND ( a . name LIKE '%$term%' OR a . belegnr LIKE '%$term%' OR DATE_FORMAT ( a . datum , '%Y-%m-%d' ) LIKE '%$term%' ) " . $this->app ->erp->ProjektRechte(). " " .( $status != ''? " AND a . status = '".$status."' " :''). " ORDER by a . belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " auftragmitrechnung " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(a.belegnr,' ',a.name,' ',DATE_FORMAT(a.datum,'%d.%m.%Y')) as name
FROM auftrag a
INNER JOIN rechnung r ON a . id = r . auftragid AND r . belegnr <> ''
WHERE a . belegnr != '0' AND a . belegnr != '' AND ( a . name LIKE '%$term%' OR a . belegnr LIKE '%$term%' OR DATE_FORMAT ( a . datum , '%Y-%m-%d' ) LIKE '%$term%' ) GROUP BY a . id ORDER by a . belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " auftrag_freigegeben " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM auftrag WHERE belegnr != '0' AND belegnr != '' AND status = 'freigegeben' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " rechnung_freigegeben " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM rechnung WHERE belegnr != '0' AND belegnr != '' AND status = 'freigegeben' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " produktion " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM produktion WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " arbeitsnachweis " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM arbeitsnachweis WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " lieferschein " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM lieferschein WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
2022-07-01 14:24:56 +02:00
case " rechnung " :
2022-05-24 21:50:35 +02:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM rechnung WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
2022-07-01 14:24:56 +02:00
case " retoure " :
2022-05-24 21:50:35 +02:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',name,' ',DATE_FORMAT(datum,'%d.%m.%Y')) as name
FROM retoure WHERE belegnr != '0' AND belegnr != '' AND ( name LIKE '%$term%' OR belegnr LIKE '%$term%' OR DATE_FORMAT ( datum , '%Y-%m-%d' ) LIKE '%$term%' ) ORDER by belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " rechnungmitauftrag " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(r.belegnr,' ',r.name,' ',DATE_FORMAT(r.datum,'%d.%m.%Y')) as name
FROM rechnung r
INNER JOIN auftrag a ON r . auftragid = a . id
LEFT JOIN projekt p ON p . id = r . projekt
WHERE r . belegnr != '0' AND r . belegnr != '' AND ( r . name LIKE '%$term%' OR r . belegnr LIKE '%$term%' OR DATE_FORMAT ( r . datum , '%Y-%m-%d' ) LIKE '%$term%' ) " . $this->app ->erp->ProjektRechte(). " GROUP BY r . id ORDER by r . belegnr DESC LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
2023-04-01 20:42:37 +02:00
case " fibu_objekte " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT( " . $this -> app -> erp -> FormatUCfirst ( 'typ' ) . " ,'-',id,'-',info) as objekt FROM fibu_objekte WHERE info LIKE '% $term %' LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'objekt' ];
break ;
case " fibu_belege " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT( " . $this -> app -> erp -> FormatUCfirst ( 'typ' ) . " ,'-',id,'-',info) as objekt FROM fibu_objekte WHERE info LIKE '% $term %' AND typ IN ('auftrag','rechnung','gutschrift','verbindlichkeit') LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'objekt' ];
break ;
2022-05-24 21:50:35 +02:00
case " vpeartikel " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT vpe FROM verkaufspreise WHERE geloescht=0 AND vpe LIKE '% $term %' ORDER by vpe " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'vpe' ];
break ;
case " herstellerlink " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT herstellerlink FROM artikel WHERE geloescht=0 AND intern_gesperrt!=1 AND herstellerlink LIKE '% $term %' ORDER by herstellerlink " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'herstellerlink' ];
break ;
2022-07-01 14:24:56 +02:00
case " lagerplatz " :
case " lagerplatzstandardlager " :
$lager = $this -> app -> Secure -> GetGET ( 'lager' );
$lagerwhere = " " ;
if ( ! empty ( $lager )) {
$lagerwhere = " AND lager = ' " . $lager . " ' " ;
}
2022-05-24 21:50:35 +02:00
$onlyStdLager = $filtername === 'lagerplatzstandardlager' ;
$stdLager = 0 ;
if ( $rmodule === 'produktionszentrum' || $rmodule === 'produktion' ) {
if ( $onlyStdLager > 0 && $rid > 0 ) {
$stdLager = ( int ) $this -> app -> DB -> Select (
sprintf (
'SELECT standardlager FROM produktion WHERE id = %d' ,
$rid
)
);
}
}
$withzwischenlager = $this -> app -> Secure -> GetGET ( 'zwischenlager' );
$withstadardlager = $this -> app -> Secure -> GetGET ( 'withstandardlager' );
$sql = " SELECT lp.kurzbezeichnung
FROM lager_platz AS lp
LEFT JOIN lager AS l ON l . id = lp . lager
WHERE lp . geloescht = 0 AND ( '$stdLager' = '0' OR l . id = '$stdLager' )
2022-07-01 14:24:56 +02:00
AND lp . kurzbezeichnung LIKE '%$term%' " . $lagerwhere .
2022-05-24 21:50:35 +02:00
$this -> app -> erp -> ProjektRechte ( 'l.projekt' ) . '
ORDER BY lp . kurzbezeichnung ' ;
$arr = $this -> app -> DB -> SelectArr ( $sql );
if ( empty ( $arr )) {
$arr = [];
}
if ( $withzwischenlager ) {
$arr2 = $this -> app -> DB -> SelectArr (
" SELECT 'Zwischenlager' AS kurzbezeichnung FROM (SELECT 1) a WHERE 'Zwischenlager' LIKE '% $term %' "
);
if ( ! empty ( $arr2 )) {
$arr = array_merge ( $arr , $arr2 );
}
}
if ( $withstadardlager ) {
$arr2 = $this -> app -> DB -> SelectArr (
" SELECT 'Standardlager' AS kurzbezeichnung FROM (SELECT 1) a WHERE 'Standardlager' LIKE '% $term %' "
);
if ( ! empty ( $arr2 )) {
$arr = array_merge ( $arr , $arr2 );
}
}
if ( ! empty ( $arr )) {
sort ( $arr );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'kurzbezeichnung' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " artikelfremdnummern " :
2022-05-24 21:50:35 +02:00
$article = explode ( ' ' , $this -> app -> Secure -> GetGET ( 'artikel' ));
$article = reset ( $article );
$articleId = ( int ) $this -> app -> Secure -> GetGET ( 'artikelid' );
$bezeichnung = $this -> app -> Secure -> GetGET ( 'bezeichnung' );
$shopid = ( int ) $this -> app -> Secure -> GetGET ( 'shopid' );
if ( empty ( $articleId ) && ! empty ( $article )) {
$articleId = $this -> app -> DB -> Select (
sprintf (
" SELECT id
FROM artikel
WHERE nummer = '%s' AND nummer <> '' AND geloescht <> 1
ORDER BY intern_gesperrt
LIMIT 1 " ,
$article
)
);
}
if ( ! empty ( $articleId )) {
$newarr = $this -> app -> DB -> SelectFirstCols (
sprintf (
" SELECT DISTINCT af.nummer
FROM artikelnummer_fremdnummern AS af
WHERE af . artikel = % d AND af . aktiv = 1 AND ( af . bezeichnung = '%s' OR '%s' = '' )
AND af . nummer LIKE '%%%s%%' AND af . shopid = % d " ,
$articleId , $bezeichnung , $bezeichnung , $term , $shopid
)
);
}
break ;
case " bezeichnungfremdnr " :
$arr = $this -> app -> DB -> SelectArr ( 'SELECT DISTINCT af.bezeichnung FROM artikelnummer_fremdnummern af' );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
if ( ! in_array ( 'ID' , $newarr )){
$newarr [] = 'ID' ;
}
if ( ! in_array ( 'SKU' , $newarr )){
$newarr [] = 'SKU' ;
}
break ;
case " lagerplatzprojekt " :
$arr = $this -> app -> DB -> SelectArr ( ' SELECT lp . kurzbezeichnung
FROM lager_platz AS lp
INNER JOIN lager l ON lp . lager = l . id AND ( l . projekt = 0 OR ( 1 '.$this->app->erp->ProjektRechte(' l . projekt ' ) . " ))
WHERE lp . geloescht = 0 AND lp . kurzbezeichnung LIKE '%$term%'
ORDER BY lp . kurzbezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'kurzbezeichnung' ];
}
break ;
case " sperrlagerplatz " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT kurzbezeichnung FROM lager_platz WHERE geloescht=0 AND sperrlager = 1 AND kurzbezeichnung LIKE '% $term %' ORDER by kurzbezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'kurzbezeichnung' ];
break ;
2022-07-01 14:24:56 +02:00
case " lagerplatzartikel " :
2022-05-24 21:50:35 +02:00
$artikel = ( int ) $this -> app -> Secure -> GetGET ( 'artikel' );
$pos = ( int ) $this -> app -> Secure -> GetGET ( 'pos' );
$doctype = strtolower ( $this -> app -> Secure -> GetGET ( 'doctype' ));
$join = '' ;
if ( $pos > 0 && $doctype === 'lieferschein' && $artikel > 0 ) {
$seriennummern = $this -> app -> DB -> Select (
sprintf (
'SELECT `seriennummern` FROM artikel WHERE id = %d LIMIT 1' ,
$artikel
)
);
if ( $seriennummern !== 'keine' && ! empty ( $seriennummern )) {
$cSn = $this -> app -> DB -> SelectArr (
sprintf (
' SELECT IFNULL ( COUNT ( id ), 0 )
FROM `beleg_chargesnmhd`
WHERE doctype = \ ' % s\ ' AND pos = % d AND type = \ ' sn\ ' AND wert <> \ ' \ '
' ,
$doctype , $pos
)
);
$position = $this -> app -> DB -> SelectRow (
sprintf ( 'SELECT menge, geliefert FROM lieferschein_position WHERE id = %d' ,
$pos
)
);
if ( $cSn == $position [ 'menge' ]) {
$join = sprintf ( ' INNER JOIN
(
SELECT lagerplatz
FROM `beleg_chargesnmhd`
WHERE doctype = \ ' % s\ ' AND parameter = % d
GROUP BY lagerplatz
) AS bc ON lp . id = bc . lagerplatz ' ,
$doctype , $pos
);
}
}
}
$arr = $this -> app -> DB -> SelectArr (
sprintf ( ' SELECT lp . kurzbezeichnung
FROM lager_platz AS lp
INNER JOIN lager_platz_inhalt AS lpi on lp . id = lpi . lager_platz
% s
WHERE lpi . artikel =% d AND lp . geloescht = 0 AND lp . kurzbezeichnung LIKE \ ' %%% s %% \ '
GROUP BY lp . kurzbezeichnung
ORDER by lp . kurzbezeichnung ' ,
$join , $artikel , $term
)
);
if ( empty ( $arr )) {
break ;
}
foreach ( $arr as $row ) {
$newarr [] = $row [ 'kurzbezeichnung' ];
}
break ;
case " lager " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT l.bezeichnung FROM lager l WHERE l.geloescht=0 AND l.bezeichnung LIKE '% $term %' " . $this -> app -> erp -> ProjektRechte ( " l.projekt " ) . " ORDER by 1 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
2022-07-01 14:24:56 +02:00
case " lager_produktion " :
2022-05-24 21:50:35 +02:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT l.bezeichnung FROM lager l JOIN lager_platz lp ON l.id = lp.lager WHERE l.geloescht=0 AND l.bezeichnung LIKE '% $term %' " . $this -> app -> erp -> ProjektRechte ( " l.projekt " ) . " AND lp.allowproduction = 1 ORDER BY 1 " );
if ( empty ( $arr )){
$arr = $this -> app -> DB -> SelectArr ( " SELECT l.bezeichnung FROM lager l WHERE l.geloescht=0 AND l.bezeichnung LIKE '% $term %' " . $this -> app -> erp -> ProjektRechte ( " l.projekt " ) . " ORDER by 1 " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
break ;
case " aktionscode " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(code,' ',beschriftung) as name FROM aktionscode_liste
WHERE ( beschriftung LIKE '%$term%' OR code LIKE '%$term%' OR code LIKE '%$term2%' OR code LIKE '%$term3%' ) AND ausblenden != 1 ORDER by code " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " waehrung " :
if ( $this -> app -> DB -> Select ( " SELECT id FROM waehrung_umrechnung LIMIT 1 " )) {
$arr = $this -> app -> DB -> SelectArr ( "
(
SELECT DISTINCT waehrung_nach as name FROM waehrung_umrechnung
WHERE ( waehrung_nach LIKE '%$term%' ) ORDER by waehrung_nach
)
UNION
(
SELECT DISTINCT waehrung_von as name FROM waehrung_umrechnung
WHERE ( waehrung_von LIKE '%$term%' )
ORDER by waehrung_von
)
ORDER by name " );
} else {
$waehrungen = $this -> app -> erp -> GetWaehrung ();
if ( $waehrungen )
{
foreach ( $waehrungen as $v )
{
if ( $v ) {
$sqla [] = " (SELECT ' $v ' as name FROM (SELECT 1) AS X WHERE
'$v' LIKE '%$term%'
) " ;
}
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT t.name FROM ( " . implode ( ' UNION ' , $sqla ) . " ) t ORDER BY name " );
}
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " sachkonto " :
$cmd = $this -> app -> Secure -> GetGET ( " cmd " );
if ( $cmd != " " ) $projekt = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE abkuerzung=' " . $this -> app -> DB -> real_escape_string ( $cmd ) . " ' LIMIT 1 " );
$checkprojekt = ( $projekt > 0 ? $this -> app -> DB -> Select ( " SELECT COUNT(id) FROM kontorahmen WHERE projekt=' $projekt ' " ) : 0 );
$checkprojektnull = $this -> app -> DB -> Select ( " SELECT COUNT(id) FROM kontorahmen WHERE projekt=0 OR projekt IS NULL " );
if ( $checkprojekt > 0 )
{
$andprojekt = " AND (projekt=' $projekt ' OR projekt = 0 OR projekt IS NULL) " ;
} else {
if ( $checkprojektnull > 0 )
{
$andprojekt = " AND (projekt=0 OR projekt IS NULL) " ;
} else {
$andprojekt = " " ;
}
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(sachkonto,' ',beschriftung) as name FROM kontorahmen
WHERE ( beschriftung LIKE '%$term%' OR sachkonto LIKE '%$term%' OR sachkonto LIKE '%$term2%' OR sachkonto LIKE '%$term3%' OR beschriftung LIKE '%$term2%' OR beschriftung LIKE '%$term3%' ) AND ausblenden != 1 $andprojekt ORDER by sachkonto " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
2023-12-11 22:17:28 +01:00
case " sachkonto_aufwendungen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(sachkonto,' ',beschriftung) as name FROM kontorahmen
WHERE art = 1 AND ( beschriftung LIKE '%$term%' OR sachkonto LIKE '%$term%' OR sachkonto LIKE '%$term2%' OR sachkonto LIKE '%$term3%' OR beschriftung LIKE '%$term2%' OR beschriftung LIKE '%$term3%' ) AND ausblenden != 1 $andprojekt ORDER by sachkonto " );
2022-05-24 21:50:35 +02:00
2023-12-11 22:17:28 +01:00
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
2022-05-24 21:50:35 +02:00
case " lieferbedingungen " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(lieferbedingungen) as name FROM lieferbedingungen
WHERE ( lieferbedingungen LIKE '%$term%' OR lieferbedingungen LIKE '%$term2%' OR lieferbedingungen LIKE '%$term3%' ) ORDER by lieferbedingungen " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " zeiterfassungvorlage " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT vorlage as name FROM zeiterfassungvorlage
WHERE ( vorlage LIKE '%$term%' OR vorlage LIKE '%$term2%' OR vorlage LIKE '%$term3%' ) AND ausblenden != 1 ORDER by vorlage " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " zeiterfassungvorlagedetail " :
$vorlage = $this -> app -> Secure -> GetPOST ( 'vorlage' );
$arr = $this -> app -> DB -> SelectRow ( " SELECT vorlagedetail as name, art, projekt, teilprojekt, kunde, abrechnen FROM zeiterfassungvorlage WHERE vorlage = ' $vorlage ' LIMIT 1 " );
if ( $arr [ 'projekt' ] > 0 ){
$arr [ 'projekt' ] = $this -> app -> DB -> Select ( " SELECT CONCAT(abkuerzung, ' ', name) FROM projekt WHERE id = ' " . $arr [ 'projekt' ] . " ' LIMIT 1 " );
} else {
$arr [ 'projekt' ] = '' ;
}
if ( $arr [ 'teilprojekt' ] > 0 ){
$projektid = $this -> app -> DB -> Select ( " SELECT projekt FROM arbeitspaket WHERE id = ' " . $arr [ 'teilprojekt' ] . " ' LIMIT 1 " );
if ( $projektid > 0 ){
$projektabk = $this -> app -> DB -> Select ( " SELECT abkuerzung FROM projekt WHERE id = ' $projektid ' LIMIT 1 " );
if ( $projektabk != " " ){
$arr [ 'teilprojekt' ] = $this -> app -> DB -> Select ( " SELECT CONCAT(' " . $arr [ 'teilprojekt' ] . " ', ' ', ' $projektabk ', ' ', aufgabe) FROM arbeitspaket WHERE id = ' " . $arr [ 'teilprojekt' ] . " ' LIMIT 1 " );
} else {
$arr [ 'teilprojekt' ] = '' ;
}
} else {
$arr [ 'teilprojekt' ] = '' ;
}
} else {
$arr [ 'teilprojekt' ] = '' ;
}
if ( $arr [ 'kunde' ] > 0 ){
$arr [ 'kunde' ] = $this -> app -> DB -> Select ( " SELECT CONCAT(kundennummer, ' ', name) FROM adresse WHERE id = ' " . $arr [ 'kunde' ] . " ' LIMIT 1 " );
}
if ( $arr [ 'art' ] == '' ){
$arr [ 'art' ] = 'Arbeit' ;
}
$newarr [] = $arr [ 'name' ];
$newarr [] = $arr [ 'art' ];
$newarr [] = $arr [ 'projekt' ];
$newarr [] = $arr [ 'teilprojekt' ];
$newarr [] = $arr [ 'kunde' ];
$newarr [] = $arr [ 'abrechnen' ];
break ;
case " zeiterfassungprojektdetail " :
$projekt = explode ( ' ' , $this -> app -> Secure -> GetPOST ( 'projekt' ));
$projektkennung = $projekt [ 0 ];
$kunde = $this -> app -> DB -> Select ( " SELECT CONCAT(a.kundennummer,' ',a.name,' (',a.ort,')') AS kunde FROM projekt p JOIN adresse a ON p.kunde=a.id WHERE a.geloescht=0 AND p.abkuerzung=' $projektkennung ' LIMIT 1 " );
$newarr [] = $kunde ;
break ;
case " zolltarifnummer " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',beschreibung) as name FROM zolltarifnummer WHERE beschreibung LIKE '% $term %' OR nummer LIKE '% $term %' ORDER by nummer " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " kostenstelle " :
$felder = array ( 'CONCAT(nummer,\' \',beschreibung)' , 'nummer' , 'beschreibung' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',beschreibung) as name FROM kostenstellen WHERE $subwhere ORDER by nummer " );
2023-12-27 18:17:30 +01:00
2022-05-24 21:50:35 +02:00
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " verrechnungsart " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',beschreibung) as name FROM verrechnungsart WHERE beschreibung LIKE '% $term %' OR nummer LIKE '% $term %' ORDER by nummer " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " kundenrechnung " :
case " kundenauftrag " :
case " kundenlieferschein " :
case " kundenangebot " :
case " kundenproformarechnung " :
$adresse = ( int ) $this -> app -> Secure -> GetGET ( 'adresse' );
if ( ! $adresse )
{
$kunde = explode ( ' ' , $this -> app -> Secure -> GetGET ( 'kunde' ));
$adresse = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE kundennummer = ' " . $kunde [ 0 ] . " ' AND kundennummer <> '' LIMIT 1 " );
}
$beleg = str_replace ( 'kunden' , '' , $filtername );
2023-10-22 18:22:07 +02:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',kundennummer,' ',name) as name FROM $beleg WHERE (belegnr <> '') AND (belegnr LIKE '% $term %' OR name LIKE '% $term %' OR kundennummer LIKE ' $ %term%') AND (status IN ('angelegt','freigegeben','versendet'))
2022-05-24 21:50:35 +02:00
" .( $adresse ? " AND adresse = '$adresse' " :''). " " . $this->app ->erp->ProjektRechte('projekt'). "
ORDER by belegnr LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
case " lieferantenpreisanfrage " :
case " lieferantenbestellung " :
$adresse = ( int ) $this -> app -> Secure -> GetGET ( 'adresse' );
if ( ! $adresse )
{
$lieferant = explode ( ' ' , $this -> app -> Secure -> GetGET ( 'lieferant' ));
$adresse = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE lieferantennummer = ' " . $lieferant [ 0 ] . " ' AND lieferantennummer <> '' LIMIT 1 " );
}
$beleg = str_replace ( 'lieferanten' , '' , $filtername );
2024-01-03 15:45:43 +01:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(belegnr,' ',lieferantennummer,' ',name) as name FROM $beleg WHERE (belegnr <> '') AND (belegnr LIKE '% $term %' OR name LIKE '% $term %' OR lieferantennummer LIKE ' $ %term%') AND (status = 'versendet' OR status = 'freigegeben')
2022-05-24 21:50:35 +02:00
" .( $adresse ? " AND adresse = '$adresse' " :''). " " . $this->app ->erp->ProjektRechte('projekt'). "
ORDER by belegnr LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
// Suche nach einzelner Artikelnummer
2022-07-01 14:24:56 +02:00
case " artikelnummer " :
case " artikelnummerseriennummer " :
2022-05-24 21:50:35 +02:00
$isSeriennummer = $filtername === 'artikelnummerseriennummer' ;
$tmp_where = '' ;
if ( $isSeriennummer ) {
$tmp_where = " AND seriennummern <> '' AND seriennummern <> 'keine' " ;
}
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
//$checkprojekt = $this->app->DB->Select("SELECT id FROM projekt WHERE id='$projekt' LIMIT 1");
//$eigenernummernkreis = $this->app->DB->Select("SELECT eigenernummernkreis FROM projekt WHERE id='$projekt' LIMIT 1");
//if($checkprojekt > 0 && $eigenernummernkreis=="1") $tmp_where = " AND projekt='$checkprojekt' ";
//else $tmp_where = "";
2023-03-30 10:54:18 +02:00
$selectfields = $asObject ? 'art.id, art.nummer, art.name_de name' : " CONCAT(nummer,' ',name_de) as `name` " ;
2022-05-24 21:50:35 +02:00
$arr = $this -> app -> DB -> SelectArr (
2023-03-30 10:54:18 +02:00
" SELECT $selectfields
FROM artikel AS art WHERE geloescht = 0 AND ( $subwhere ) AND intern_gesperrt != 1 $tmp_where " .
2022-05-24 21:50:35 +02:00
$this -> app -> erp -> ProjektRechte ( 'art.projekt' ) . ' LIMIT 20'
);
2023-03-30 10:54:18 +02:00
if ( $asObject ) {
$newarr = $arr ;
} else {
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
2022-05-24 21:50:35 +02:00
}
break ;
case " artikelnummerstueckliste " :
$tmp_where = '' ;
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$artikel_artikelnummer_suche = $this -> app -> erp -> Firmendaten ( 'artikel_artikelnummer_suche' );
if ( $artikel_artikelnummer_suche ){
$felder [] = 'e.bestellnummer' ;
$felder [] = 'v.kundenartikelnummer' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
if ( $artikel_artikelnummer_suche ){
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(nummer,' ',name_de) as name
FROM artikel AS art
LEFT JOIN einkaufspreise e ON art . id = e . artikel AND e . bestellnummer != '' AND e . geloescht = 0 AND e . bestellnummer IS NOT NULL AND
( IFNULL ( e . gueltig_bis , '0000-00-00' ) > NOW () OR IFNULL ( e . gueltig_bis , '0000-00-00' ) = '0000-00-00' )
LEFT JOIN verkaufspreise v ON art . id = v . artikel AND v . kundenartikelnummer != '' AND v . geloescht = 0 AND v . kundenartikelnummer IS NOT NULL AND
( IFNULL ( v . gueltig_bis , '0000-00-00' ) > NOW () OR IFNULL ( v . gueltig_bis , '0000-00-00' ) = '0000-00-00' )
WHERE art . geloescht = 0 AND ( $subwhere ) AND art . intern_gesperrt != 1 $tmp_where " .
$this -> app -> erp -> ProjektRechte ( 'art.projekt' ) . " LIMIT 20 " );
} else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel AS art WHERE geloescht=0 AND ( $subwhere ) AND geloescht=0 AND intern_gesperrt!=1 $tmp_where " .
$this -> app -> erp -> ProjektRechte ( 'art.projekt' ) . " LIMIT 20 " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " artikelnummermitseriennummern " :
$tmp_where = '' ;
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel AS art WHERE geloescht=0 AND ( $subwhere ) AND geloescht=0 AND intern_gesperrt!=1 AND seriennummern<>'keine' $tmp_where " .
$this -> app -> erp -> ProjektRechte ( 'art.projekt' ) . 'LIMIT 20' );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
2024-07-26 14:38:14 +02:00
case " seriennummerverfuegbar " :
$artikel = ( int ) $this -> app -> Secure -> GetGET ( 'artikel' );
2024-08-04 22:05:35 +02:00
$lieferschein = ( int ) $this -> app -> Secure -> GetGET ( 'lieferschein' );
$sql = "
SELECT DISTINCT
s . seriennummer
FROM
seriennummern s
INNER JOIN
lieferschein_position lp ON lp . artikel = s . artikel
WHERE
s . eingelagert = 1
AND s . seriennummer LIKE '%$term%'
AND ( s . artikel = '$artikel' OR '$artikel' = '0' )
LIMIT 20
" ;
//echo($sql);
$arr = $this -> app -> DB -> SelectArr ( $sql );
2024-07-26 14:38:14 +02:00
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'seriennummer' ];
}
break ;
break ;
2022-05-24 21:50:35 +02:00
case " artikelmengeinbeleg " :
$beleg = $this -> app -> Secure -> GetGet ( 'beleg' );
$belegid = $this -> app -> Secure -> GetGet ( 'id' );
$artikel = explode ( ' ' , $this -> app -> Secure -> GetPost ( 'vorlage' ));
$artikelnummer = $artikel [ 0 ];
$artikelid = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer=' $artikelnummer ' AND geloescht=0 LIMIT 1 " );
if ( $artikelid ){
$menge = $this -> app -> DB -> Select ( 'SELECT ' . $this -> app -> erp -> FormatMenge ( 'SUM(menge)' ) . ' FROM ' . $beleg . " _position WHERE artikel=' $artikelid ' AND $beleg =' $belegid ' " );
}
if ( ! $menge ){
$menge = '0' ;
}
$newarr [] = $menge ;
break ;
// Suche nach mehreren Artikelnummern (kommagetrennt)
case " artikelnummer_multi " :
$tmp_where = '' ;
if ( strpos ( $term , ',' ) !== false ) {
$term = substr ( $term , ( strripos ( $term , ',' ) + 1 ));
}
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel AS art WHERE geloescht=0 AND ( $subwhere ) AND geloescht=0 AND intern_gesperrt!=1 $tmp_where LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " portoartikel " :
$tmp_where = '' ;
//$projekt = $this->app->Secure->GetGET('projekt');
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
//$checkprojekt = $this->app->DB->Select("SELECT id FROM projekt WHERE id='$projekt' LIMIT 1");
//$eigenernummernkreis = $this->app->DB->Select("SELECT eigenernummernkreis FROM projekt WHERE id='$projekt' LIMIT 1");
//if($checkprojekt > 0 && $eigenernummernkreis=="1") $tmp_where = " AND projekt='$checkprojekt' ";
//else $tmp_where = "";
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel AS art WHERE geloescht=0 AND porto = 1 AND ( $subwhere ) AND geloescht=0 AND intern_gesperrt!=1 $tmp_where LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " juststuecklistenartikel " :
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel AS art WHERE geloescht=0 AND ( $subwhere ) AND geloescht=0 AND intern_gesperrt!=1 AND stueckliste = 1 LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " stuecklistenartikel " :
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$tmp_where = '' ;
if ( $projekt != '' )
{
if ( is_numeric ( $projekt ))
{
$tmp_where = " AND projekt = ' $projekt ' " ;
} else {
$projekt = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE ifnull(geloescht,0) = 0 AND abkuerzung = ' $projekt ' LIMIT 1 " );
if ( $projekt ){
$tmp_where = " AND projekt = ' $projekt ' " ;
}
}
}
$juststueckliste = $this -> app -> Secure -> GetGET ( 'juststueckliste' );
if ( $juststueckliste )
{
$swhere = '' ;
} else {
$swhere = ' AND juststueckliste = 0 ' ;
}
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel AS art WHERE geloescht=0 AND ( $subwhere ) AND geloescht=0 AND intern_gesperrt!=1 AND stueckliste = 1 $swhere $tmp_where LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
break ;
case " artikelstueckliste " :
$stuecklistenartikel = $this -> app -> Secure -> GetGET ( 'stuecklistenartikel' );
$artikelID = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer = ' $stuecklistenartikel ' " );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(a.nummer,' ',a.name_de) AS name FROM artikel a LEFT JOIN stueckliste s ON a.id=s.artikel WHERE s.stuecklistevonartikel=' $artikelID ' AND a.geloescht=0 LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " artikelinstueckliste " :
$stuecklistenartikel = trim ( $this -> app -> Secure -> GetGET ( 'art' ));
if ( $stuecklistenartikel != '' ){
$stuecklistenartikel = explode ( ' ' , $stuecklistenartikel );
$stuecklistenartikelnr = $stuecklistenartikel [ 0 ];
$stuecklistenartikelid = $this -> app -> DB -> Select ( " SELECT id FROM artikel WHERE nummer = ' $stuecklistenartikelnr ' LIMIT 1 " );
if ( $stuecklistenartikelid != " " && $stuecklistenartikelid > 0 ){
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(a.nummer, ' ', a.name_de) as name FROM artikel a LEFT JOIN stueckliste s ON a.id = s.artikel WHERE a.geloescht = 0 AND (a.nummer LIKE '% $term %' OR a.name_de LIKE '% $term %' OR a.herstellernummer LIKE '% $term %' OR a.ean LIKE '% $term %') AND a.intern_gesperrt != 1 AND s.stuecklistevonartikel = ' $stuecklistenartikelid ' " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
}
}
break ;
case " partlistfrom " :
$article_id = $this -> app -> Secure -> GetGET ( 'article_id' );
$arr = $this -> app -> DB -> SelectArr ( "
SELECT concat ( art . nummer , ' ' , art . name_de ) as name
FROM artikel art
INNER JOIN ( SELECT DISTINCT stuecklistevonartikel FROM stueckliste WHERE artikel = '$article_id' ) s
ON art . id = s . stuecklistevonartikel
WHERE ( concat ( art . nummer , ' ' , art . name_de ) LIKE '%$term%' OR concat ( art . nummer , ' ' , art . name_de ) LIKE '%$term2%' OR concat ( art . nummer , ' ' , art . name_de ) LIKE '%$term3%' )
" );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
break ;
case " artikelnummertagespreise " :
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
$checkprojekt = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE id=' $projekt ' LIMIT 1 " );
$eigenernummernkreis = $this -> app -> DB -> Select ( " SELECT eigenernummernkreis FROM projekt WHERE id=' $projekt ' LIMIT 1 " );
if ( $checkprojekt > 0 && $eigenernummernkreis == '1' )
{
$tmp_where = " AND projekt=' $checkprojekt ' " ;
}
else {
$tmp_where = '' ;
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name FROM artikel WHERE geloescht=0 AND tagespreise = 1 AND (nummer LIKE '% $term %' OR name_de LIKE '% $term %' OR nummer LIKE '% $term2 %' OR name_de LIKE '% $term2 %' OR nummer LIKE '% $term3 %' OR name_de LIKE '% $term3 %' OR herstellernummer LIKE '% $term %' OR ean LIKE '% $term %' " . ( $artikel_freitext1_suche ? " OR freifeld1 LIKE '% $term %' " : " " ) . " ) AND geloescht=0 AND intern_gesperrt!=1 $tmp_where LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " keinelagerartikelnummer " :
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' , 'CONCAT(art.nummer,\' \',art.name_de)' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name
FROM artikel AS art WHERE ( $subwhere ) AND geloescht = 0 AND intern_gesperrt != 1
AND ( lagerartikel != '1' OR dienstleistung = 1 ) AND porto != 1 AND stueckliste != 1 LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " lagerartikelnummer " :
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' , 'CONCAT(art.nummer,\' \',art.name_de)' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name
FROM artikel AS art WHERE ( $subwhere ) AND geloescht = 0 AND intern_gesperrt != 1
AND lagerartikel = '1' LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " lagerartikelnummerohnechargemhdseriennummer " :
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' , 'CONCAT(art.nummer,\' \',art.name_de)' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name
FROM artikel AS art WHERE ( $subwhere ) AND geloescht = 0 AND intern_gesperrt != 1
AND lagerartikel = '1' AND chargenverwaltung = 0 AND mindesthaltbarkeitsdatum <> 1 AND ( seriennummern = '' OR seriennummern = 'keine' ) " . $this->app ->erp->ProjektRechte('projekt'). " LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " lagerartikelkategorie " :
$felder = array ( 'bezeichnung' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT bezeichnung FROM artikelkategorien WHERE ( $subwhere ) AND geloescht=0 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " chargenartikel " :
$felder = array ( 'art.nummer' , 'art.name_de' , 'art.herstellernummer' , 'art.ean' , 'CONCAT(art.nummer,\' \',art.name_de)' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(nummer,' ',name_de) as name
FROM artikel AS art WHERE ( $subwhere ) AND geloescht = 0 AND intern_gesperrt != 1
AND chargenverwaltung > 0 " . $this->app ->erp->ProjektRechte('projekt'). " LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " artikelnummerlager " :
$lager_platz = ( int ) $this -> app -> Secure -> GetGET ( 'lager_platz' );
$lwhere = '' ;
if ( $lager_platz ){
$lwhere = " and lpi.lager_platz = ' $lager_platz ' " ;
}
$felder = array ( 'ar.nummer' , 'ar.name_de' , 'ar.herstellernummer' , 'ar.ean' , 'CONCAT(ar.nummer,\' \',ar.name_de)' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'ar.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
// heute 13.07. das INNER zu einem LEFT gemacht
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(ar.nummer,' ',ar.name_de) as name
FROM artikel ar LEFT JOIN lager_platz_inhalt lpi ON ar . id = lpi . artikel WHERE ( $subwhere ) AND ar . geloescht = 0 AND ar . intern_gesperrt != 1
AND ar . lagerartikel = '1' $lwhere GROUP BY CONCAT ( ar . nummer , ' ' , ar . name_de ) " . $this->app ->erp->ProjektRechte('ar.projekt'). " LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " artikelnummerprojektpos " :
$felder = array ( 'a.nummer' , 'a.name_de' , 'a.herstellernummer' , 'a.ean' , 'CONCAT(a.nummer,\' \',a.name_de)' , 'a.herstellernummer' );
if ( $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' ))
{
$felder [] = 'a.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$projekt = $this -> app -> User -> GetParameter ( 'pos_list_projekt' );
$projekArr = $this -> app -> DB -> SelectRow (
sprintf (
' SELECT id , pos_artikelnurausprojekt , eanherstellerscan
FROM projekt WHERE id = % d
LIMIT 1 ' ,
( int ) $projekt
)
);
$checkprojekt = 0 ;
$eigenernummernkreis = 0 ;
$eanherstellerscan = 0 ;
if ( ! empty ( $projekArr )){
$checkprojekt = $projekArr [ 'id' ];
$eigenernummernkreis = $projekArr [ 'pos_artikelnurausprojekt' ];
$eanherstellerscan = $projekArr [ 'eanherstellerscan' ];
}
if ( $checkprojekt > 0 && $eigenernummernkreis == '1' ) {
$tmp_where = " AND a.projekt=' $checkprojekt ' " ;
}
else {
$tmp_where = '' ;
}
// besser ist wenn man die immer scannt da es oberflächen gibt wo das projekt nicht angegeben werden kann
if ( 0 ) //$eanherstellerscan)
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(a.nummer,' ',a.name_de,if(a.herstellernummer IS NULL OR a.herstellernummer='','',CONCAT(' PN: ',a.herstellernummer))) as name, a.id FROM artikel a WHERE a.geloescht=0 AND a.intern_gesperrt!=1 AND (a.nummer LIKE '% $term %' OR a.name_de LIKE '% $term %' OR CONCAT(a.nummer,' ',a.name_de) LIKE '% $term %' OR CONCAT(a.nummer,' ',a.name_de) LIKE '% $term2 %' OR CONCAT(a.nummer,' ',a.name_de) LIKE '% $term3 %' OR a.herstellernummer LIKE '% $term %' OR a.ean LIKE '% $term %' " . ( $artikel_freitext1_suche ? " OR freifeld1 LIKE '% $term %' " : " " ) . " ) $tmp_where ORDER by a.id DESC LIMIT 20 " );
}
else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(a.nummer,' ',a.name_de,if(a.herstellernummer IS NULL OR a.herstellernummer='','',CONCAT(' PN: ',a.herstellernummer))) as name, a.id FROM artikel a WHERE a.geloescht=0 AND a.intern_gesperrt!=1 AND ( $subwhere ) $tmp_where ORDER by a.id DESC LIMIT 20 " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
{
$check_lagerartikel = $this -> app -> DB -> Select ( " SELECT lagerartikel FROM artikel WHERE id=' " . $arr [ $i ][ 'id' ] . " ' LIMIT 1 " );
if ( $check_lagerartikel )
{
$summe_im_lager = ( float ) $this -> app -> DB -> Select ( " SELECT ifnull(SUM(li.menge),0) FROM lager_platz_inhalt li LEFT JOIN lager_platz lp ON lp.id=li.lager_platz WHERE li.artikel=' " . $arr [ $i ][ 'id' ] . " ' " );
if ( $summe_im_lager > 0 )
{
$artikel_reserviert = ( float ) $this -> app -> DB -> Select ( " SELECT ifnull(SUM(menge),0) FROM lager_reserviert WHERE artikel=' " . $arr [ $i ][ 'id' ] . " ' AND (datum>=NOW() OR datum='0000-00-00') " );
} else $artikel_reserviert = 0 ;
}
if ( $check_lagerartikel && ( $summe_im_lager - $artikel_reserviert ) <= 0 ) {
$lager = ' (Aktuell kein Lagerbestand bzw. durch Aufträge reserviert) ' ;
} else {
$lager = '' ;
}
$newarr [] = $arr [ $i ][ 'name' ] . $lager ;
}
break ;
case " artikelnummerprojekt " :
$felder = array ( 'a.nummer' , 'a.name_de' , 'a.herstellernummer' , 'a.ean' , 'CONCAT(a.nummer,\' \',a.name_de)' , 'a.herstellernummer' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$checkprojekt = $this -> app -> DB -> Select ( " SELECT id FROM projekt WHERE id=' $projekt ' LIMIT 1 " );
$eigenernummernkreis = $this -> app -> DB -> Select ( " SELECT eigenernummernkreis FROM projekt WHERE id=' $projekt ' LIMIT 1 " );
$eanherstellerscan = $this -> app -> DB -> Select ( " SELECT eanherstellerscan FROM projekt WHERE id=' $projekt ' " );
if ( $checkprojekt > 0 && $eigenernummernkreis == '1' ) {
$tmp_where = " AND a.projekt=' $checkprojekt ' " ;
}
else {
$tmp_where = '' ;
}
// besser ist wenn man die immer scannt da es oberflächen gibt wo das projekt nicht angegeben werden kann
if ( 0 ) //$eanherstellerscan)
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(a.nummer,' ',a.name_de,if(a.herstellernummer IS NULL OR a.herstellernummer='','',CONCAT(' PN: ',a.herstellernummer))) as name FROM artikel a WHERE a.geloescht=0 AND a.intern_gesperrt!=1 AND (a.nummer LIKE '% $term %' OR a.name_de LIKE '% $term %' OR a.herstellernummer LIKE '% $term %' OR CONCAT(a.nummer,' ',a.name_de) LIKE '% $term %' OR CONCAT(a.nummer,' ',a.name_de) LIKE '% $term2 %' OR CONCAT(a.nummer,' ',a.name_de) LIKE '% $term3 %' OR a.ean LIKE '% $term %' " . ( $artikel_freitext1_suche ? " OR freifeld1 LIKE '% $term %' " : " " ) . " ) $tmp_where ORDER by a.id DESC LIMIT 20 " );
}
else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(a.nummer,' ',a.name_de,if(a.herstellernummer IS NULL OR a.herstellernummer='','',CONCAT(' PN: ',a.herstellernummer))) as name FROM artikel a WHERE a.geloescht=0 AND a.intern_gesperrt!=1 AND ( $subwhere ) $tmp_where ORDER by a.id DESC LIMIT 20 " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " lagerartikelnummerprojekt " :
$felder = array ( 'a.nummer' , 'a.name_de' , 'a.herstellernummer' , 'a.ean' , 'CONCAT(a.nummer,\' \',a.name_de)' , 'a.herstellernummer' );
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'art.freifeld1' ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(a.nummer,' ',a.name_de,' (',p.abkuerzung,')') as name FROM artikel a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.geloescht=0 AND a.porto=0 AND a.intern_gesperrt!=1
AND (
$subwhere
) LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " verkaufartikelnummerprojekt " :
$letzte_menge = null ;
$artikel_freitext1_suche = $this -> app -> erp -> Firmendaten ( 'artikel_freitext1_suche' );
$projekt = $this -> app -> Secure -> GetGET ( 'projekt' );
$projectRow = empty ( $projekt ) ? null : $this -> app -> DB -> SelectRow (
sprintf (
'SELECT `id`, `eigenernummernkreis`, `projektlager` FROM `projekt` WHERE `id` = %d' , $projekt
)
);
$checkprojekt = empty ( $projectRow ) ? null : $projectRow [ 'id' ]; // $this->app->DB->Select("SELECT id FROM projekt WHERE id='$projekt' LIMIT 1");
$eigenernummernkreis = empty ( $projectRow ) ? null : $projectRow [ 'eigenernummernkreis' ]; //$this->app->DB->Select("SELECT eigenernummernkreis FROM projekt WHERE id='$projekt' LIMIT 1");
$projectStorage = ! empty ( $projectRow [ 'projektlager' ]) ? $checkprojekt : 0 ;
$smodule = $this -> app -> Secure -> GetGET ( 'smodule' );
$sid = $this -> app -> Secure -> GetGET ( 'sid' );
$document = $this -> app -> DB -> SelectRow ( sprintf ( 'SELECT * FROM `%s` WHERE `id` = %d' , $smodule , $sid ));
$adresse = $document [ 'adresse' ]; // $this->app->DB->Select("SELECT adresse FROM $smodule WHERE id='$sid' LIMIT 1");
$waehrung = $document [ 'waehrung' ]; //$this->app->DB->Select("SELECT waehrung FROM $smodule WHERE id='$sid' LIMIT 1");
$posanz = ( int ) $this -> app -> DB -> Select ( " SELECT count(id) FROM $smodule " . " _position WHERE $smodule = ' $sid ' " );
if ( $posanz == 0 )
{
$waehrung = '' ;
}
$anzeigebrutto = false ;
if ( $smodule == 'auftrag' || $smodule == 'rechnung' || $smodule == 'gutschrift' || $smodule == 'angebot' || $smodule == 'proformarechnung' )
{
$_anrede = $this -> app -> DB -> Select ( " SELECT typ FROM $smodule WHERE id = ' $sid ' LIMIT 1 " );
$_projekt = $this -> app -> DB -> Select ( " SELECT projekt FROM $smodule WHERE id = ' $sid ' LIMIT 1 " );
$funktion = ucfirst ( $smodule ) . 'MitUmsatzeuer' ;
if ( $this -> app -> erp -> AnzeigePositionenBrutto ( $_anrede , $smodule , $_projekt , $adresse , $sid ) && $this -> app -> erp -> $funktion ( $sid ))
{
$anzeigebrutto = true ;
}
}
$tmp_where = $this -> app -> erp -> ProjektRechte ( 'p.id' , true , '' , array ( 0 , $projekt ));
//if($checkprojekt > 0 && $eigenernummernkreis=="1") $tmp_where = $this->app->erp->ProjektRechte();
//else $tmp_where = "";
$felder = array ( 'a.nummer' , 'a.name_de' , 'a.ean' , 'a.herstellernummer' , 'a.name_de' , 'CONCAT(a.nummer,\' \',a.name_de)' );
if ( $artikel_freitext1_suche )
{
$felder [] = 'a.freifeld1' ;
}
$artikel_artikelnummer_suche = $this -> app -> erp -> Firmendaten ( 'artikel_artikelnummer_suche' );
if ( $artikel_artikelnummer_suche ){
$felder [] = 'v.kundenartikelnummer' ;
$felder [] = 'e.bestellnummer' ;
$artikelnummer_suche_join = "
LEFT JOIN `einkaufspreise` AS `e` ON e . artikel = a . id AND e . geloescht = 0
AND e . bestellnummer IS NOT NULL AND ( e . gueltig_bis IS NULL OR e . gueltig_bis = '0000-00-00' OR e . gueltig_bis >= CURDATE ())
AND ( e . gueltig_bis > NOW () OR e . gueltig_bis = '0000-00-00' OR e . gueltig_bis IS NULL ) " ;
if ( $waehrung === 'EUR' ) {
$artikelnummer_suche_join .= " AND (e.waehrung='EUR' OR e.waehrung = '') " ;
}
elseif ( $waehrung != '' ){
$artikelnummer_suche_join .= " AND e.waehrung=' { $waehrung } ' " ;
}
$artikelnummer_suche_join .= " LEFT JOIN `verkaufspreise` AS `v` ON v.artikel=a.id AND v.geloescht = 0
AND v . kundenartikelnummer IS NOT NULL
AND ( v . gueltig_bis > NOW () OR v . gueltig_bis = '0000-00-00' OR v . gueltig_bis IS NULL ) " ;
if ( $waehrung === 'EUR' ) {
$artikelnummer_suche_join .= " AND (v.waehrung='EUR' OR v.waehrung = '') " ;
}
elseif ( $waehrung != '' ){
$artikelnummer_suche_join .= " AND v.waehrung = ' { $waehrung } ' " ;
}
$artikelnummer_suche_where = '' ;
} else {
$artikelnummer_suche_join = " " ;
$artikelnummer_suche_where = " " ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr (
" SELECT DISTINCT a.id as id,
CONCAT (
a . nummer , ' ' , a . name_de , ' (' , p . abkuerzung , if ( a . lagerartikel = 1 , '' , '' ), ')' ,
if ( a . herstellernummer != '' , CONCAT ( ' (PN: ' , a . herstellernummer , ')' ), '' )
) as `name` , a . lagerartikel , a . porto , a . keinrabatterlaubt , a . juststueckliste , a . stueckliste
FROM `artikel` AS `a`
LEFT JOIN `projekt` AS `p` ON p . id = a . projekt
" . $artikelnummer_suche_join . "
WHERE a . geloescht = 0 AND a . intern_gesperrt != 1
" . $artikelnummer_suche_where . "
AND ( $subwhere ) $tmp_where LIMIT 20 " );
if ( $module != " " ) {
if ( $this -> app -> DB -> Select ( " SHOW COLUMNS FROM ` $module ` LIKE 'realrabatt' " )) {
$rabatt = $this -> app -> DB -> Select ( " SELECT realrabatt FROM $smodule WHERE id=' $sid ' LIMIT 1 " );
}
}
$sql_erweiterung = '' ;
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$arr [ $i ][ 'name' ] = $this -> app -> DB -> Select ( " SELECT CONCAT(nummer,' ',name_de,if(herstellernummer!='',CONCAT(' (PN: ',herstellernummer,')'),'') ) FROM artikel WHERE id=' " . $arr [ $i ][ 'id' ] . " ' LIMIT 1 " );
$keinrabatterlaubt = $arr [ $i ][ 'keinrabatterlaubt' ]; //$this->app->DB->Select("SELECT keinrabatterlaubt FROM artikel WHERE id='".$arr[$i]['id']."' LIMIT 1");
$checkporto = $arr [ $i ][ 'porto' ]; //$this->app->DB->Select("SELECT porto FROM artikel WHERE id='".$arr[$i]['id']."' LIMIT 1");
$gruppenarray = $this -> app -> erp -> GetGruppen ( $adresse );
$cgruppenarray = ! empty ( $gruppenarray ) ? count ( $gruppenarray ) : 0 ;
if ( $cgruppenarray > 0 )
{
$sql_erweiterung = ' OR ' ;
}
for ( $gi = 0 ; $gi < $cgruppenarray ; $gi ++ )
{
$sql_erweiterung .= " gruppe=' " . $gruppenarray [ $gi ] . " ' " ;
if ( $gi < $cgruppenarray - 1 ){
$sql_erweiterung .= ' OR ' ;
}
}
$vkarr = $this -> app -> erp -> GeneratePreisliste ( $arr [ $i ][ 'id' ], $adresse , $rabatt , $waehrung );
$check_lagerartikel = $arr [ $i ][ 'lagerartikel' ]; //$this->app->DB->Select("SELECT lagerartikel FROM artikel WHERE id='".$arr[$i]['id']."' LIMIT 1");
$isJit = $arr [ $i ][ 'juststueckliste' ];
//$newarr[]=$arr[$i]['name']." ($label Inkl. Rabatt ".$rabatt."%: ".$this->app->erp->Rabatt($arr[$i]['preis'],$rabatt).")";
if ( $isJit ) {
$preproducedpartlist = $this -> app -> erp -> getPreproducedPartlistFromArticle ( $arr [ $i ][ 'id' ]);
if ( ! empty ( $preproducedpartlist )
&& ( $partlistsellable = $this -> app -> erp -> ArtikelAnzahlVerkaufbar ( $preproducedpartlist , $projektlager ))
) {
$lager = ' (Verfügbar: ' . round ( $partlistsellable , 4 );
}
else {
$lager = ( float ) $this -> app -> erp -> ArtikelAnzahlLagerStueckliste ( $arr [ $i ][ 'id' ], $projectStorage );
if ( $lager == 0 ) {
$lager = ' (Aktuell kein Lagerbestand bzw. durch Aufträge reserviert) ' ;
}
else {
$lager = ' (Verfügbar: ' . round ( $lager , 4 );
}
}
}
elseif ( $this -> app -> erp -> LagerFreieMenge ( $arr [ $i ][ 'id' ]) <= 0 && $check_lagerartikel ){
$lager = ' (Aktuell kein Lagerbestand bzw. durch Aufträge reserviert) ' ;
}
else {
if ( $this -> app -> erp -> Firmendaten ( 'lagerbestand_in_auftragspositionen_anzeigen' )){
$artikel_reserviert = $this -> app -> DB -> Select ( 'SELECT ' . $this -> app -> erp -> FormatMenge ( 'SUM(menge)' ) . " FROM lager_reserviert WHERE artikel=' " . $arr [ $i ][ 'id' ] . " ' AND (datum>=NOW() OR datum='0000-00-00') " );
$lager = ' (Verfügbar: ' . $this -> app -> erp -> LagerFreieMenge ( $arr [ $i ][ 'id' ]);
if ( $artikel_reserviert )
{
$lager .= ' Reserviert: ' . $artikel_reserviert ;
}
else {
$lager .= ' Reserviert: 0' ;
}
$lager .= ') ' ;
} else {
$lager = '' ;
}
}
$cvkarr = ! empty ( $vkarr ) ? count ( $vkarr ) : 0 ;
$letzte_menge = null ;
for ( $vi = 0 ; $vi < $cvkarr ; $vi ++ )
{
if ( isset ( $vkarr [ $vi ][ 'ab_menge' ]))
{
$vkarr [ $vi ][ 'ab_menge' ] = round ( $vkarr [ $vi ][ 'ab_menge' ], 8 );
}
$tmprabatt = $rabatt ;
if ( $vkarr [ $vi ][ 'art' ] == 'Kunde' && ( $vkarr [ $vi ][ 'adresse' ] <= 0 || $vkarr [ $vi ][ 'adresse' ] == '' )){
$vkarr [ $vi ][ 'art' ] = 'Standardpreis' ;
}
$preis = 0 ;
if ( $letzte_menge != $vkarr [ $vi ][ 'ab_menge' ])
{
if ( $keinrabatterlaubt == '1' || $checkporto == '1' )
{
$preis = $vkarr [ $vi ][ 'preis' ]; //$this->app->erp->GetVerkaufspreis($arr[$i]['id'],$vkarr[$vi][ab_menge],$adresse);
$newarr [] = $arr [ $i ][ 'name' ] . " $lager ab Menge " . $vkarr [ $vi ][ 'ab_menge' ] . ' | Preis: ' . $preis .
' (' . $vkarr [ $vi ][ 'art' ] . ' - Kein Rabatt erlaubt) ' ;
} else {
if ( $this -> app -> erp -> IsSpezialVerkaufspreis ( $arr [ $i ][ 'id' ], $vkarr [ $vi ][ 'ab_menge' ], $adresse ))
{
$tmprabatt = 0 ;
$rabatt_string = ' - Kein Rabatt auf Spezialpreis' ;
$uvp_string = '(UVP: ' . $this -> app -> erp -> GetVerkaufspreis ( $arr [ $i ][ 'id' ], $vkarr [ $vi ][ 'ab_menge' ], $adresse ) . " ) " ;
} else {
if ( $tmprabatt > 0 ) {
$rabatt_string = ' Inkl. Rabatt ' . $tmprabatt . '%' ;
$uvp_string = '(UVP: ' . $this -> app -> erp -> GetVerkaufspreis ( $arr [ $i ][ 'id' ], $vkarr [ $vi ][ 'ab_menge' ], $adresse ) . " ) " ;
} else {
$rabatt_string = '' ;
$uvp_string = '' ;
}
}
if ( $anzeigebrutto )
{
$umsatzsteuer = $this -> app -> DB -> Select ( " SELECT umsatzsteuer FROM artikel WHERE id = ' " . $arr [ $i ][ 'id' ] . " ' LIMIT 1 " );
if ( $umsatzsteuer == 'ermaessigt' )
{
$vkarr [ $vi ][ 'preis' ] = round ( $vkarr [ $vi ][ 'preis' ] * ( 1 + ( float ) $this -> app -> DB -> Select ( " SELECT steuersatz_ermaessigt FROM $smodule WHERE id = ' $sid ' LIMIT 1 " ) / 100 ), 8 );
} elseif ( $umsatzsteuer != 'befreit' )
{
$vkarr [ $vi ][ 'preis' ] = round ( $vkarr [ $vi ][ 'preis' ] * ( 1 + ( float ) $this -> app -> DB -> Select ( " SELECT steuersatz_normal FROM $smodule WHERE id = ' $sid ' LIMIT 1 " ) / 100 ), 8 );
}
}
if ( $this -> app -> erp -> Firmendaten ( 'viernachkommastellen_belege' )){
$preis = number_format ( rtrim ( $vkarr [ $vi ][ 'preis' ], 0 ), 4 , ',' , '.' ); //$this->app->erp->GetVerkaufspreis($arr[$i]['id'],$vkarr[$vi][ab_menge],$adresse);
}
else {
$preis = number_format ( rtrim ( $vkarr [ $vi ][ 'preis' ], 0 ), 2 , ',' , '.' ); //$this->app->erp->GetVerkaufspreis($arr[$i]['id'],$vkarr[$vi][ab_menge],$adresse);
}
$newarr [] = $arr [ $i ][ 'name' ] . ( $vkarr [ $vi ][ 'vpe' ] != '' ? ' (Menge in VPE: ' . $vkarr [ $vi ][ 'vpe' ] . " ) " : " " ) . " $lager ab Menge " . $vkarr [ $vi ][ 'ab_menge' ] . " | Preis: " . $preis .
" $uvp_string ( " . $vkarr [ $vi ][ 'art' ] . $rabatt_string . ') ' ;
}
}
}
if ( $vi == 0 )
{
$rabattartikel = $this -> app -> DB -> Select ( " SELECT rabatt FROM artikel WHERE id=' " . $arr [ $i ][ 'id' ] . " ' LIMIT 1 " );
$rabattartikel_prozent = $this -> app -> DB -> Select ( " SELECT rabatt_prozent FROM artikel WHERE id=' " . $arr [ $i ][ 'id' ] . " ' LIMIT 1 " );
$arr [ $i ][ 'name' ] = $this -> app -> DB -> Select ( " SELECT CONCAT(nummer,' ',name_de,if(herstellernummer!='',CONCAT(' (PN: ',herstellernummer,')'),'')) FROM artikel WHERE id=' " . $arr [ $i ][ 'id' ] . " ' LIMIT 1 " );
if ( $rabattartikel == '1' ){
$newarr [] = $arr [ $i ][ 'name' ] . " $lager ab Menge 1 | Preis: $rabattartikel_prozent % Rabatt auf Gesamtsumme ohne Porto " ;
}
else {
$preis = $this -> app -> erp -> GetVerkaufspreis ( $arr [ $i ][ 'id' ], 1 , $adresse , $waehrung );
if ( $preis > 0 ){
$newarr [] = $arr [ $i ][ 'name' ] . " $lager ab Menge 1 | Preis: $preis " ;
}
else {
$newarr [] = $arr [ $i ][ 'name' ] . " $lager ab Menge 1 | Preis: nicht vorhanden " ;
}
}
}
}
break ;
case " einkaufartikelnummerprojekt " :
$smodule = $this -> app -> Secure -> GetGET ( 'smodule' );
$sid = $this -> app -> Secure -> GetGET ( 'sid' );
$waehrung = $this -> app -> DB -> Select ( " SELECT `waehrung` FROM ` { $smodule } ` WHERE `id`=' { $sid } ' LIMIT 1 " );
$felder = [
'a.nummer' ,
'a.name_de' ,
'e.bezeichnunglieferant' ,
'e.bestellnummer' ,
];
$artikel_artikelnummer_suche = ( int ) $this -> app -> erp -> Firmendaten ( 'artikel_artikelnummer_suche' );
if ( $artikel_artikelnummer_suche > 0 ){
$felder [] = 'v.kundenartikelnummer' ;
$artikelnummer_suche_join = 'LEFT JOIN `verkaufspreise` `v` ON v.artikel=a.id'
. ' AND v.geloescht = 0 AND v.kundenartikelnummer IS NOT NULL '
. " AND (v.gueltig_bis > NOW() OR v.gueltig_bis='0000-00-00' OR v.gueltig_bis IS NULL) " ;
if ( $waehrung === 'EUR' ) {
$artikelnummer_suche_join .= " AND (v.waehrung='EUR' OR v.waehrung = '') " ;
}
elseif ( $waehrung != '' ){
$artikelnummer_suche_join .= " AND v.waehrung=' { $waehrung } ' " ;
}
$artikelnummer_suche_where = '' ;
} else {
$artikelnummer_suche_join = " " ;
$artikelnummer_suche_where = " " ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$adresse = ( int ) $this -> app -> Secure -> GetGET ( 'adresse' );
$sql = " SELECT
CONCAT (
a . nummer ,
' ' ,
a . name_de ,
' | Bezeichnung bei Lieferant ' ,
IFNULL ( e . bestellnummer , 'nicht vorhanden' ),
' ' ,
LEFT ( IFNULL ( e . bezeichnunglieferant , 'nicht vorhanden' ), 50 ),
' | ' ,
' ab Menge ' ,
" . $this->app ->erp->FormatMenge( " IFNULL ( e . ab_menge , 1 ) " ). " ,
' | Preis ' ,
" . $this->app ->erp->FormatPreis( " IFNULL ( e . preis , 0 ) " ). " ,
' | VPE ' ,
" . $this->app ->erp->FormatMenge( " IF ( IFNULL ( e . vpe , 1 ) = '' , 1 , IFNULL ( e . vpe , 1 )) " ). "
) as `name`
FROM `artikel` AS `a`
LEFT JOIN `projekt` AS `p` ON p . id = a . projekt
LEFT JOIN `einkaufspreise` AS `e` ON e . artikel = a . id "
. ( $waehrung != " " ? " AND IFNULL(e.waehrung,' $waehrung ')=' $waehrung ' " : " " ) .
$artikelnummer_suche_join . "
WHERE a . tagespreise = 0 AND a . geloescht = 0 AND a . intern_gesperrt != 1
AND ( e . gueltig_bis > NOW () OR e . gueltig_bis = '0000-00-00' OR e . gueltig_bis IS NULL ) " .
$artikelnummer_suche_where . "
AND ( IFNULL ( e . adresse , 0 ) = '$adresse' OR a . allelieferanten = 1 )
AND $subwhere "
. $this -> app -> erp -> ProjektRechte ( " a.projekt " ) . "
GROUP BY a . nummer , a . name_de , e . bezeichnunglieferant , e . bestellnummer , e . preis , e . ab_menge , e . vpe LIMIT 20 " ;
$arr = $this -> app -> DB -> SelectArr ( $sql );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " lieferantname " :
$felder = array ( 'a.nummer' , 'a.name_de' , 'e.bezeichnunglieferant' , 'e.bestellnummer' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT name FROM adresse
WHERE geloescht = 0 AND a . lieferantennummer != '' AND a . lieferantennummer != '0' AND (
name LIKE '%$term%' OR name LIKE '%$term2%' OR name LIKE '%$term3%'
) order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " lieferant " :
//$arr = $this->app->DB->SelectArr("SELECT CONCAT(a.lieferantennummer,' ',a.name) as name FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.geloescht=0 AND a.lieferantennummer!='' AND lieferantennummer!='0' AND (a.name LIKE '%$term%' OR a.lieferantennummer LIKE '%$term%' OR a.name LIKE '%$term2%' OR a.name LIKE '%$term3%') ".$this->app->erp->ProjektRechte()." order by a.name LIMIT 20");
/*
$arr = $this -> app -> DB -> SelectArr ( " SELECT a.lieferantennummer,
( SELECT
CONCAT ( a2 . lieferantennummer , ' ' , a2 . name )
FROM adresse a2 WHERE a2 . lieferantennummer = a . lieferantennummer " . $this->app ->erp->ProjektRechte( " a2 . projekt " ). " ORDER BY
" .( $filter_projekt ? " a2 . projekt = '$filter_projekt' DESC , " : " " ). " a2 . projekt LIMIT 1
) as name2
FROM adresse a LEFT JOIN projekt p ON p . id = a . projekt WHERE a . geloescht = 0 AND a . lieferantennummer != '' AND lieferantennummer != '0' AND ( a . name LIKE '%$term%' OR a . lieferantennummer LIKE '%$term%' OR a . name LIKE '%$term2%' OR a . name LIKE '%$term3%' ) " . $this->app ->erp->ProjektRechte(). " group by a . lieferantennummer order by name2 LIMIT 20 " );
*/
$felder = array ( " concat(a.lieferantennummer,' ',a.name, if(a.ort!='', CONCAT(' ',a.ort),'')) " );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT concat(a.lieferantennummer,' ',a.name, if(a.ort!='', CONCAT(' (',a.ort,')'),'')) as name2
FROM adresse a INNER JOIN ( SELECT a2 . lieferantennummer , " .( $filter_projekt ? " min ( if ( a2 . projekt = " . $filter_projekt . " , - 1 , a2 . projekt )) " : " min ( a2 . projekt ) " ). " as mprojekt FROM adresse a2
LEFT JOIN adresse_rolle ar2 ON a2 . id = ar2 . adresse AND ar2 . projekt > 0 " . $this->app ->erp->ProjektRechte( " ar2 . projekt " ). "
WHERE ( a2 . geloescht = 0 or isnull ( a2 . geloescht )) AND a2 . lieferantennummer != '' AND a2 . lieferantennummer != '0' AND ( 1 " . $this->app ->erp->ProjektRechte( " a2 . projekt " , true, 'a2.vertrieb'). " OR not isnull ( ar2 . id ) )
group by a2 . lieferantennummer ) adr
ON a . lieferantennummer = adr . lieferantennummer AND " .( $filter_projekt ? " ( a . projekt = adr . mprojekt OR a . projekt = $filter_projekt AND adr . mprojekt = - 1 ) " : " a . projekt = adr . mprojekt " ). "
LEFT JOIN adresse_rolle ar ON a . id = ar . adresse AND ar . projekt > 0
WHERE a . geloescht = 0 AND a . lieferantennummer != '' AND a . lieferantennummer != '0' AND ( $subwhere )
group by a . lieferantennummer order by name2 LIMIT 20
" );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name2' ];
}
break ;
case " lieferantartikel " :
$felder = array ( " concat(a.lieferantennummer,' ',a.name) " );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$artikel = ( int ) $this -> app -> Secure -> GetGET ( 'artikel' );
$arr = $this -> app -> DB -> SelectArr ( " SELECT concat(a.lieferantennummer,' ',a.name) as name2
FROM adresse a INNER JOIN ( SELECT a2 . lieferantennummer , " .( $filter_projekt ? " min ( if ( a2 . projekt = " . $filter_projekt . " , - 1 , a2 . projekt )) " : " min ( a2 . projekt ) " ). " as mprojekt FROM adresse a2
WHERE ( a2 . geloescht = 0 or isnull ( a2 . geloescht )) AND a2 . lieferantennummer != '' AND a2 . lieferantennummer != '0' " . $this->app ->erp->ProjektRechte( " a2 . projekt " , true, 'a2.vertrieb'). "
group by a2 . lieferantennummer ) adr
ON a . lieferantennummer = adr . lieferantennummer AND " .( $filter_projekt ? " ( a . projekt = adr . mprojekt OR a . projekt = $filter_projekt AND adr . mprojekt = - 1 ) " : " a . projekt = adr . mprojekt " ). "
INNER JOIN einkaufspreise ep ON ep . adresse = a . id AND ep . artikel = '$artikel'
WHERE a . geloescht = 0 AND a . lieferantennummer != '' AND a . lieferantennummer != '0' AND ( $subwhere ) " . $this->app ->erp->ProjektRechte( " a . projekt " ). " group by a . lieferantennummer order by name2 LIMIT 20
" );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name2' ];
}
break ;
case " adressegruppevertriebbearbeiter " :
$typ = $this -> app -> Secure -> GetGET ( 'typ' );
if ( $typ === 'vertrieb' ){
$gruppe = $this -> app -> erp -> Firmendaten ( 'group_sales' );
} elseif ( $typ === 'bearbeiter' ){
$gruppe = $this -> app -> erp -> Firmendaten ( 'group_employee' );
} else {
$gruppe = '' ;
}
$gruppeJoin = '' ;
$gruppeWhere = '' ;
if ( $gruppe !== '' ){
$gruppeKennziffer = explode ( ' ' , $gruppe );
$gruppeKennziffer = $gruppeKennziffer [ 0 ];
$gruppeId = $this -> app -> DB -> Select ( " SELECT id FROM gruppen WHERE kennziffer = ' $gruppeKennziffer ' LIMIT 1 " );
if ( $gruppeId > 0 ){
$gruppeJoin =
' LEFT JOIN `adresse_rolle` AS `ar` ON a.id = ar.adresse' ;
$gruppeWhere =
' AND ar.subjekt = \'Mitglied\' AND ar.objekt = \'Gruppe\' AND ar.parameter = \'' . $gruppeId . ' \ '
AND ar . von <= CURDATE () AND ( ar . bis = \ '0000-00-00\' OR ar.bis >= CURDATE())' ;
}
}
$felder =
array (
' ( CASE
WHEN a . lieferantennummer != \ ' \ ' THEN CONCAT ( a . id , \ ' \ ' , a . name , \ ' ( Kdr : \ ' , a . kundennummer , \ ' Liefr : \ ' , a . lieferantennummer , \ ' ) \ ' )
WHEN a . kundennummer != \ ' \ ' THEN CONCAT ( a . id , \ ' \ ' , a . name , \ ' ( Kdr : \ ' , a . kundennummer , \ ' ) \ ' )
WHEN a . mitarbeiternummer != \ ' \ ' THEN CONCAT ( a . id , \ ' \ ' , a . name , \ ' ( Mitr : \ ' , a . mitarbeiternummer , \ ' ) \ ' )
END ) '
);
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$sql =
' SELECT
( CASE
WHEN a . lieferantennummer != \ ' \ ' THEN CONCAT ( a . id , \ ' \ ' , a . name , \ ' ( Kdr : \ ' , a . kundennummer , \ ' Liefr : \ ' , a . lieferantennummer , \ ' ) \ ' )
WHEN a . kundennummer != \ ' \ ' THEN CONCAT ( a . id , \ ' \ ' , a . name , \ ' ( Kdr : \ ' , a . kundennummer , \ ' ) \ ' )
WHEN a . mitarbeiternummer != \ ' \ ' THEN CONCAT ( a . id , \ ' \ ' , a . name , \ ' ( Mitr : \ ' , a . mitarbeiternummer , \ ' ) \ ' )
END ) AS `name`
FROM `adresse` AS `a` '.$gruppeJoin.'
WHERE a . geloescht = 0
AND ( '.$subwhere.' ) '.$gruppeWhere.$this->app->erp->ProjektRechte(' a . projekt ').'
ORDER BY a . name LIMIT 20 ' ;
$arr = $this -> app -> DB -> SelectArr ( $sql );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " adresse " :
$felder = array ( " if(a.lieferantennummer,CONCAT(a.name,' ',a.kundennummer,' ',a.lieferantennummer,')'),CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,')')) " );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$sql = " SELECT if(a.lieferantennummer,CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,' Liefr: ',a.lieferantennummer,')'),CONCAT(a.id,' ',a.name,' (Kdr: ',a.kundennummer,')')) as `name`
FROM adresse a WHERE a . geloescht = 0 AND ( $subwhere ) " . $this->app ->erp->ProjektRechte('a.projekt'). "
order by a . name LIMIT 20 " ;
$arr = $this -> app -> DB -> SelectArr ( $sql );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " adressemitvertrieb " :
$felder = array ( " concat(a.name,
if ( a . kundennummer <> '' OR a . lieferantennummer <> '' OR a . mitarbeiternummer <> '' ,
concat ( if ( a . kundennummer <> '' , concat ( ' ' , a . kundennummer ), '' ), if ( a . kundennummer <> '' AND a . lieferantennummer <> '' , ' ' , '' ), if ( a . lieferantennummer <> '' , concat ( ' ' , a . lieferantennummer ), '' )
, if (( a . kundennummer <> '' OR a . lieferantennummer <> '' ) AND a . mitarbeiternummer <> '' , ' ' , '' ),
if ( a . mitarbeiternummer <> '' , concat ( ' ' , a . mitarbeiternummer ), '' )
)
, '' )
) " );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT concat(a.id, ' ',a.name,
if ( a . kundennummer <> '' OR a . lieferantennummer <> '' OR a . mitarbeiternummer <> '' ,
concat ( ' (' , if ( a . kundennummer <> '' , concat ( 'Kdr: ' , a . kundennummer ), '' ), if ( a . kundennummer <> '' AND a . lieferantennummer <> '' , ' ' , '' ), if ( a . lieferantennummer <> '' , concat ( 'Liefr: ' , a . lieferantennummer ), '' )
, if (( a . kundennummer <> '' OR a . lieferantennummer <> '' ) AND a . mitarbeiternummer <> '' , ' ' , '' ),
if ( a . mitarbeiternummer <> '' , concat ( 'Mitr: ' , a . mitarbeiternummer ), '' )
, ')' )
, '' )
)
as name
FROM adresse a LEFT JOIN projekt p ON p . id = a . projekt WHERE a . geloescht = 0 AND ( $subwhere ) AND (( 1 " . $this->app ->erp->ProjektRechte(). " ) OR a . id = '".$this->app->User->GetAdresse()."' ) order by a . name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " kundepos " :
2022-05-24 21:50:35 +02:00
$aktprojekt = $this -> app -> User -> GetParameter ( 'pos_list_projekt' );
$felder = array ( " CONCAT(ifnull(a.kundennummer,''),' ',a.name,if(a.projekt > 0,CONCAT(' (',p.abkuerzung,')'),''),if(ifnull(a.freifeld1,'')!='',CONCAT(' (',a.freifeld1,')'),'')) " );
$swhere = '' ;
if ( $aktprojekt && ! $this -> app -> DB -> Select ( " SELECT pos_kundenalleprojekte FROM projekt WHERE id = ' $aktprojekt ' LIMIT 1 " ) && $this -> app -> DB -> Select ( " SELECT eigenernummernkreis FROM projekt WHERE id = ' $aktprojekt ' LIMIT 1 " )){
$swhere = " AND p.id = ' $aktprojekt ' " ;
}
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(a.kundennummer,' ',a.name,if(a.projekt > 0,CONCAT(' (',p.abkuerzung,')'),''),if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),'')) as name FROM adresse a LEFT JOIN projekt p ON p.id=a.projekt WHERE a.geloescht=0 AND a.kundennummer!='' AND a.kundennummer!='0' AND ( $subwhere ) $swhere order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " kunde " :
2022-05-24 21:50:35 +02:00
$felder = array ( " CONCAT(a.kundennummer, ' ',a.name,if(ifnull(a.freifeld1,'')!='',CONCAT(' (',ifnull(a.freifeld1,''),')'),''),' ',a.plz,' ',a.ort) " );
if ( $term2 === $term ){
$term2 = '' ;
}
if ( $term3 === $term ){
$term3 = '' ;
}
$terma = explode ( '%' , trim ( str_replace ( '%%' , '%' , $term ), '%' ));
$terma2 = explode ( '%' , trim ( str_replace ( '%%' , '%' , $term2 ), '%' ));
$terma3 = explode ( '%' , trim ( str_replace ( '%%' , '%' , $term3 ), '%' ));
foreach ( $felder as $v )
{
$subwherea [] = " $v LIKE '% $term %' " ;
if ( $term2 !== '' )
{
$subwherea [] = " $v LIKE '% $term2 %' " ;
}
if ( $term3 !== '' )
{
$subwherea [] = " $v LIKE '% $term3 %' " ;
}
}
$terma21 = '' ;
$terma22 = '' ;
$terma31 = '' ;
$terma32 = '' ;
2022-06-10 11:28:28 +02:00
if (( ! empty ( $terma2 ) ? count ( $terma2 ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
2022-06-10 11:28:28 +02:00
$terma22 = $terma2 [( ! empty ( $terma2 ) ? count ( $terma2 ) : 0 ) - 1 ];
unset ( $terma2 [( ! empty ( $terma2 ) ? count ( $terma2 ) : 0 ) - 1 ]);
2022-05-24 21:50:35 +02:00
$terma21 = implode ( '%' , $terma2 );
}
2022-06-10 11:28:28 +02:00
if (( ! empty ( $terma3 ) ? count ( $terma3 ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
2022-06-10 11:28:28 +02:00
$terma32 = $terma3 [( ! empty ( $terma3 ) ? count ( $terma3 ) : 0 ) - 1 ];
unset ( $terma3 [( ! empty ( $terma3 ) ? count ( $terma3 ) : 0 ) - 1 ]);
2022-05-24 21:50:35 +02:00
$terma31 = implode ( '%' , $terma3 );
}
2022-06-10 11:28:28 +02:00
if (( ! empty ( $terma ) ? count ( $terma ) : 0 ) > 1 ) {
$terma12 = $terma [( ! empty ( $terma ) ? count ( $terma ) : 0 ) - 1 ];
unset ( $terma [( ! empty ( $terma ) ? count ( $terma ) : 0 ) - 1 ]);
2022-05-24 21:50:35 +02:00
$terma11 = implode ( '%' , $terma );
$subwheretmpa1 = null ;
$subwheretmpa2 = null ;
foreach ( $felder as $v ) {
if ( $v !== 'a.ort' )
{
$subwheretmpa1 [] = " $v LIKE '% $terma11 %' " ;
$subwheretmpa2 [] = " $v LIKE '% $terma12 %' " ;
if ( $terma21 !== '' )
{
$subwheretmpa1 [] = " $v LIKE '% $terma21 %' " ;
$subwheretmpa2 [] = " $v LIKE '% $terma22 %' " ;
}
if ( $terma31 !== '' )
{
$subwheretmpa1 [] = " $v LIKE '% $terma31 %' " ;
$subwheretmpa2 [] = " $v LIKE '% $terma32 %' " ;
}
}
}
$subwheretmpa3 [] = " a.ort LIKE '% $terma12 %' " ;
$subwheretmpa4 [] = " a.ort LIKE '% $terma11 %' " ;
if ( $terma21 !== '' )
{
$subwheretmpa3 [] = " a.ort LIKE '% $terma22 %' " ;
$subwheretmpa4 [] = " a.ort LIKE '% $terma21 %' " ;
}
if ( $terma31 !== '' )
{
$subwheretmpa3 [] = " a.ort LIKE '% $terma32 %' " ;
$subwheretmpa4 [] = " a.ort LIKE '% $terma31 %' " ;
}
$subwherea [] = " (( " . implode ( ' OR ' , $subwheretmpa3 ) . " ) AND ( " . implode ( " OR " , $subwheretmpa1 ) . " ) ) " ;
$subwherea [] = " (( " . implode ( ' OR ' , $subwheretmpa4 ) . " ) AND ( " . implode ( " OR " , $subwheretmpa2 ) . " ) ) " ;
}
//$subwhere = implode(' OR ', $subwherea);
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
if ( $this -> app -> DB -> Select ( 'SELECT id FROM projekt WHERE geloescht <> 1 AND eigenernummernkreis = 1 LIMIT 1' )){
$sql = " SELECT CONCAT(a.kundennummer, ' ',a.name,if(a.freifeld1!='',CONCAT(' (',a.freifeld1,')'),'')) as name, a.ort
FROM adresse AS a
INNER JOIN
(
SELECT a2 . kundennummer , " . ( $filter_projekt ? " min ( if ( a2 . projekt = " . $filter_projekt . " , - 1 , a2 . projekt )) " : " min ( a2 . projekt ) " ) . " as mprojekt
FROM adresse a2
WHERE ( a2 . geloescht = 0 or isnull ( a2 . geloescht )) AND a2 . kundennummer != '' AND a2 . kundennummer != '0' " . $this->app ->erp->ProjektRechte( " a2 . projekt " , true, 'a2.vertrieb') . "
group by a2 . kundennummer
) AS adr
ON a . kundennummer = adr . kundennummer AND " . ( $filter_projekt ? " ( a . projekt = adr . mprojekt OR a . projekt = $filter_projekt AND adr . mprojekt = - 1 ) " : " a . projekt = adr . mprojekt " ) . "
WHERE ( $subwhere )
" . $this->app ->erp->ProjektRechte('a.projekt', true, 'a.vertrieb') . '
GROUP BY a . kundennummer , a . name , a . ort
ORDER BY `name` LIMIT 20
' ;
}
else {
$sql = "
SELECT CONCAT ( a . kundennummer , ' ' , a . name , if ( a . freifeld1 != '' , CONCAT ( ' (' , a . freifeld1 , ')' ), '' )) as name , a . ort
FROM adresse AS a
WHERE ( $subwhere ) AND kundennummer <> '' AND kundennummer <> '0' AND a . geloescht <> 1
" . $this->app ->erp->ProjektRechte('a.projekt', true, 'a.vertrieb') . '
GROUP BY a . kundennummer , a . name , a . ort
ORDER BY `name` LIMIT 20
' ;
}
$arr = $this -> app -> DB -> SelectArr ( $sql );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
{
if ( $arr [ $i ][ 'ort' ] != '' ){
$newarr [] = $arr [ $i ][ 'name' ] . ' (' . $arr [ $i ][ 'ort' ] . ')' ;
}
else {
$newarr [] = $arr [ $i ][ 'name' ];
}
}
break ;
case " mitarbeiter " :
$felder = array ( 'mitarbeiternummer' , 'name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(mitarbeiternummer,' ',name) as name FROM adresse WHERE geloescht=0 AND mitarbeiternummer!='' AND mitarbeiternummer!='0' AND ( $subwhere ) order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " mitarbeiterid " :
$felder = array ( 'mitarbeiternummer' , 'name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id,' ',name) as name FROM adresse WHERE geloescht=0 AND mitarbeiternummer!='' AND mitarbeiternummer!='0' AND ( $subwhere ) order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " mitarbeiteraktuell " :
$felder = array ( 'mitarbeiternummer' , 'name' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT CONCAT(a.mitarbeiternummer,' ',a.name) as name FROM adresse a LEFT JOIN adresse_rolle ar ON a.id = ar.adresse WHERE a.geloescht=0 AND a.mitarbeiternummer!='' AND a.mitarbeiternummer!='0' AND ( $subwhere ) AND ar.subjekt = 'Mitarbeiter' AND (ar.bis = '0000-00-00' OR ar.bis >= CURDATE()) ORDER BY name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " mitarbeitername " :
$felder = array ( 'name' , 'mitarbeiternummer' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT name FROM adresse WHERE geloescht=0 AND mitarbeiternummer!='' AND mitarbeiternummer!='0' AND ( $subwhere ) order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " emailadresse " :
if ( strpos ( $term , ',' ) !== false )
{
$term = substr ( $term , strripos ( $term , ',' ));
$term = str_replace ( ',' , '' , $term );
}
$subwhere1 = '' ;
$subwhere2 = '' ;
if ( $this -> app -> Secure -> GetGET ( 'kundennummer' ) != " " )
{
//$adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer like '".$this->app->Secure->GetGET('kundennummer')."' ".($filter_projekt?" AND (projekt = '$filter_projekt' or projekt = 0) ":"")." LIMIT 1");
$adresse = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE kundennummer like ' " . $this -> app -> Secure -> GetGET ( 'kundennummer' ) . " ' AND geloescht <> 1 ORDER BY " . ( $filter_projekt ? " projekt = ' $filter_projekt ' DESC, " : " " ) . " projekt LIMIT 1 " );
if ( $adresse )
{
$subwhere1 .= " AND adresse = ' $adresse ' " ;
$subwhere2 .= " AND id = ' $adresse ' " ;
}
}
if ( $this -> app -> Secure -> GetGET ( 'kd_lf_ma_nummer' ) != " " )
{
$adresse = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE (kundennummer like ' " . $this -> app -> Secure -> GetGET ( 'kd_lf_ma_nummer' ) . " ' OR lieferantennummer like ' " . $this -> app -> Secure -> GetGET ( 'kd_lf_ma_nummer' ) . " ' OR mitarbeiternummer like ' " . $this -> app -> Secure -> GetGET ( 'kd_lf_ma_nummer' ) . " ') AND geloescht <> 1 ORDER BY " . ( $filter_projekt ? " projekt = ' $filter_projekt ' DESC, " : " " ) . " projekt LIMIT 1 " );
if ( $adresse )
{
$subwhere1 .= " AND adresse = ' $adresse ' " ;
$subwhere2 .= " AND id = ' $adresse ' " ;
}
}
if ( $this -> app -> Secure -> GetGET ( 'kd_id' )){
$adresse = $this -> app -> DB -> Select ( " SELECT id FROM adresse WHERE id = ' " . $this -> app -> Secure -> GetGET ( 'kd_id' ) . " ' AND geloescht != 1 ORDER BY " . ( $filter_projekt ? " projekt = ' $filter_projekt ' DESC, " : " " ) . " projekt LIMIT 1 " );
if ( $adresse ){
$subwhere1 .= " AND adresse = ' $adresse ' " ;
$subwhere2 .= " AND id = ' $adresse ' " ;
}
}
$limit = " LIMIT 20 " ;
if ( $this -> app -> Secure -> GetGET ( 'limit' )) {
$limit = " LIMIT 1 " ;
}
if ( $limit == " LIMIT 1 " )
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT email FROM ansprechpartner WHERE email <> '' $subwhere1 AND geloescht <> 1 order by name $limit " );
} else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT email FROM ansprechpartner WHERE (name LIKE '% $term %' OR email LIKE '% $term %') and email <> '' $subwhere1 AND geloescht <> 1 order by name $limit " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'email' ];
}
if ( $limit == " LIMIT 1 " )
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT email FROM adresse WHERE geloescht!='1' $subwhere2 order by name $limit " );
}
else
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT email FROM adresse WHERE (name LIKE '% $term %' OR email LIKE '% $term %') and email <> '' AND geloescht!='1' $subwhere2 order by name $limit " );
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'email' ];
}
$newarr = array_unique ( $newarr );
sort ( $newarr );
break ;
case " emailbackup " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT email FROM emailbackup " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'email' ];
}
$newarr = array_unique ( $newarr );
sort ( $newarr );
break ;
case " emailname " :
$felder = array ( " CONCAT(name,' -ltrep-',email,'-gtrep-') " , 'name' , 'email' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
if ( strpos ( $term , ',' ) !== false )
{
$term = substr ( $term , strripos ( $term , ',' ));
$term = str_replace ( ',' , '' , $term );
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(name,' -ltrep-',email,'-gtrep-') as name FROM ansprechpartner WHERE ( $subwhere ) AND geloescht <> 1 order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(name,' -ltrep-',email,'-gtrep-') as name FROM adresse WHERE ( $subwhere ) AND geloescht!='1' order by name LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ){
$newarr [] = $arr [ $i ][ 'name' ];
}
$newarr = array_unique ( $newarr );
sort ( $newarr );
$isChangeLtGt = true ;
break ;
case " shopname " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT s.bezeichnung FROM shopexport s LEFT JOIN projekt p ON p.id=s.projekt WHERE s.bezeichnung LIKE '% $term %' " . $this -> app -> erp -> ProjektRechte ( " s.projekt " ));
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " shopnameid " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(id,' ',bezeichnung) as bezeichnung FROM shopexport WHERE bezeichnung LIKE '% $term %' " . $this -> app -> erp -> ProjektRechte ( " projekt " ) . " " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " gruppekennziffer " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(g.kennziffer,' ',g.name) as bezeichnung FROM gruppen g LEFT JOIN projekt p ON p.id=g.projekt
WHERE ( g . name LIKE '%$term%' OR g . kennziffer LIKE '%$term%' ) AND g . aktiv = 1 " . $this->app ->erp->ProjektRechte());
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " preisgruppekennziffer " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(g.kennziffer,' ',g.name) as bezeichnung FROM gruppen g LEFT JOIN projekt p ON p.id=g.projekt
WHERE ( g . name LIKE '%$term%' OR g . kennziffer LIKE '%$term%' ) AND g . art = 'preisgruppe' AND g . aktiv = 1 " . $this->app ->erp->ProjektRechte());
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " gruppe " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(g.name,' ',g.kennziffer) as bezeichnung FROM gruppen g
LEFT JOIN projekt p ON p . id = g . projekt WHERE ( g . name LIKE '%$term%' OR g . kennziffer LIKE '%$term%' ) AND g . aktiv = 1 " . $this->app ->erp->ProjektRechte());
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " verband " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(name,' ',kennziffer) as bezeichnung FROM gruppen WHERE (name LIKE '% $term %' OR kennziffer LIKE '% $term %') AND aktiv=1 AND art='verband' " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
case " verbindlichkeit " :
$felder = array ( " CONCAT(v.belegnr, v.betrag, a.name, v.rechnung, a.lieferantennummer, a.lieferantennummer_buchhaltung, " . $this -> app -> erp -> FormatPreis ( 'v.betrag' , 2 ) . " ) " ,
'v.id' , 'IFNULL(v.belegnr, \'\')' , 'v.betrag' , 'a.name' , 'v.rechnung' , 'a.lieferantennummer' , 'a.lieferantennummer_buchhaltung' , $this -> app -> erp -> FormatPreis ( 'v.betrag' , 2 ));
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
if ( strpos ( $term , ',' ) !== false )
{
$term = substr ( $term , strripos ( $term , ',' ));
$term = str_replace ( ',' , '' , $term );
}
2024-02-07 17:57:11 +01:00
$adresse = ( int ) $this -> app -> Secure -> GetGET ( 'adresse' );
if ( ! empty ( $adresse )) {
$subwhere .= " AND a.id = " . $adresse ;
}
2022-05-24 21:50:35 +02:00
$sql =
2024-02-07 17:57:11 +01:00
" SELECT CONCAT(v.belegnr,
2022-05-24 21:50:35 +02:00
' Betrag: ' , " . $this->app ->erp->FormatPreis('v.betrag',2). " ,
if ( v . skonto <> 0 , CONCAT ( ' mit Skonto ' , v . skonto , '% ' ,
" . $this->app ->erp->FormatPreis( " v . betrag - (( v . betrag / 100.0 ) * v . skonto ) " ,2). " ), '' ), ' ' ,
' Ist: ' , " . $this->app ->erp->FormatPreis('v.betragbezahlt',2). " ,
' Offen: ' , " . $this->app ->erp->FormatPreis(
' IF ( v . betrag - v . betragbezahlt > (( v . betrag / 100.0 ) * v . skonto ),
v . betrag - v . betragbezahlt , 0 ) ' , 2
) . " ,
a . name , ' (Lieferant ' , a . lieferantennummer , if ( a . lieferantennummer_buchhaltung != '' AND a . lieferantennummer <> a . lieferantennummer_buchhaltung , CONCAT ( ' ' , a . lieferantennummer_buchhaltung ), '' ), ') RE ' , v . rechnung , ' Rechnungsdatum ' , DATE_FORMAT ( v . rechnungsdatum , '%d.%m.%Y' )) as bezeichnung
FROM verbindlichkeit AS v
LEFT JOIN adresse AS a ON a . id = v . adresse
2024-02-07 17:57:11 +01:00
WHERE ( $subwhere ) AND bezahlt != 1 AND status != 'storniert' AND belegnr <> ''
2022-05-24 21:50:35 +02:00
ORDER by v . id DESC " ; //AND v.status!='bezahlt' // heute wieder raus
$arr = $this -> app -> DB -> SelectArr ( $sql );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
2023-03-30 10:54:18 +02:00
case " projektname " :
$fields = $asObject ? 'p.id, p.abkuerzung, p.name' : " CONCAT(p.abkuerzung,' ',p.name) as name " ;
$arr = $this -> app -> DB -> SelectArr ( " SELECT $fields FROM projekt p WHERE p.geloescht=0 AND status <> 'abgeschlossen' AND (p.name LIKE '% $term %' OR p.name LIKE '% $term2 %' OR p.name LIKE '% $term3 %' OR p.abkuerzung LIKE '% $term %' OR p.abkuerzung LIKE '% $term2 %' OR p.abkuerzung LIKE '% $term3 %') " . $this -> app -> erp -> ProjektRechte ());
if ( $asObject ) {
$newarr = $arr ;
} else {
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
2022-05-24 21:50:35 +02:00
}
break ;
case " uebertragung_account " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(u.id,' ',u.bezeichnung) as name FROM uebertragungen_account u WHERE (u.bezeichnung LIKE '% $term %') " . $this -> app -> erp -> ProjektRechte ( 'u.projekt' ));
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
break ;
case " api_account " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(u.id,' ',u.bezeichnung) as name FROM api_account u WHERE (u.bezeichnung LIKE '% $term %') " . $this -> app -> erp -> ProjektRechte ( 'u.projekt' ));
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
break ;
case " gruppen_kategorien " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(g.id,' ',g.bezeichnung) as name FROM gruppen_kategorien g
LEFT JOIN projekt p ON p . id = g . projekt WHERE ( g . bezeichnung LIKE '%$term%' ) " . $this->app ->erp->ProjektRechte());
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
case " gruppenkategoriegruppen " :
$kategorie = ( int ) $this -> app -> Secure -> GetGET ( 'gkid' );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(g.kennziffer,' ',g.name) as bezeichnung FROM gruppen g
LEFT JOIN projekt p ON p . id = g . projekt WHERE kategorie = '$kategorie' AND ( g . name LIKE '%$term%' OR g . kennziffer LIKE '%$term%' ) AND g . aktiv = 1 " . $this->app ->erp->ProjektRechte());
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " steuersatz " :
2022-05-24 21:50:35 +02:00
$newarr [] = $this -> app -> erp -> Firmendaten ( 'steuersatz_normal' ) . ' normal' ;
$newarr [] = $this -> app -> erp -> Firmendaten ( 'steuersatz_ermaessigt' ) . ' ermaessigt' ;
$newarr = array_merge ( $newarr , $this -> app -> DB -> SelectFirstCols (
" SELECT concat(
`satz` , ' ' , `bezeichnung` , ' ' , `country_code` ,
IF ( `type` != '' , CONCAT ( ' ' , `type` ), '' ),
IF (
`valid_from` = '0000-00-00' OR `valid_from` IS NULL ,
'' ,
CONCAT ( ' gültig ab: ' , DATE_FORMAT ( valid_from , '%d.%m.%Y' ))
),
IF (
`valid_to` = '0000-00-00' OR `valid_to` IS NULL ,
'' ,
CONCAT ( ' gültig bis: ' , DATE_FORMAT ( valid_to , '%d.%m.%Y' ))
)
) as `name`
FROM `steuersaetze` WHERE `aktiv` = 1
AND concat (
`satz` , ' ' , `bezeichnung` , ' ' , `country_code` ,
IF ( `type` != '' , CONCAT ( ' ' , `type` ), '' ),
IF (
`valid_from` = '0000-00-00' OR `valid_from` IS NULL ,
'' ,
CONCAT ( ' gültig ab: ' , DATE_FORMAT ( valid_from , '%d.%m.%Y' ))
),
IF (
`valid_to` = '0000-00-00' OR `valid_to` IS NULL ,
'' ,
CONCAT ( ' gültig bis: ' , DATE_FORMAT ( valid_to , '%d.%m.%Y' ))
)
) LIKE '%$term%' "
));
break ;
case " eigenschaftname " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT name FROM artikeleigenschaften WHERE geloescht != 1 AND name like '% $term %' ORDER BY name " );
if ( $arr )
{
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'name' ];
}
break ;
}
break ;
case " eigenschaftwert " :
$eigenschaftname = $this -> app -> DB -> real_escape_string ( urldecode ( $this -> app -> Secure -> GetGET ( 'eigenschaftname' )));
if ( $eigenschaftname !== '' )
{
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT aw.wert FROM artikeleigenschaftenwerte aw
INNER JOIN artikeleigenschaften ae ON aw . artikeleigenschaften = ae . id AND ae . geloescht <> 1
WHERE aw . wert like '%$term%' AND ae . name = '$eigenschaftname' ORDER BY aw . wert " );
} else {
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT aw.wert FROM artikeleigenschaftenwerte aw
INNER JOIN artikeleigenschaften ae ON aw . artikeleigenschaften = ae . id AND ae . geloescht <> 1
WHERE aw . wert like '%$term%' ORDER BY aw . wert " );
}
if ( $arr )
{
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'wert' ];
break ;
}
break ;
case " angebot_position " :
$angebot = $this -> app -> Secure -> GetGET ( 'angebot' );
$angebotposition = $this -> app -> Secure -> GetGET ( 'angebotposition' );
$arr = $this -> app -> DB -> SelectArr ( " SELECT CONCAT(ap.sort,' ',ap.nummer) as bezeichnung FROM angebot_position ap INNER JOIN angebot a ON ap.angebot = a.id AND a.id = ' $angebot '
LEFT JOIN projekt p ON p . id = a . projekt
WHERE ( ap . sort LIKE '%$term%' OR ap . nummer LIKE '%$term%' ) AND ap . explodiert_parent = 0 AND ap . id <> '$angebotposition' " . $this->app ->erp->ProjektRechte());
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
break ;
case " supportapp_gruppen " :
$suchbegriff = $this -> app -> DB -> real_escape_string ( $this -> app -> Secure -> GetGET ( 'term' ));
$suchbegriff = trim ( $suchbegriff );
$arr = $this -> app -> DB -> SelectArr ( " SELECT bezeichnung FROM supportapp_gruppen WHERE aktiv = '1' AND bezeichnung LIKE '% $suchbegriff %' " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'bezeichnung' ];
}
break ;
break ;
2024-10-03 13:43:45 +02:00
case " konto " :
$cmd = $this -> app -> Secure -> GetGET ( " cmd " );
$arr = $this -> app -> DB -> SelectArr ( "
SELECT CONCAT ( kurzbezeichnung , ' ' , bezeichnung ) as name FROM konten
WHERE ( kurzbezeichnung LIKE '%$term%' OR bezeichnung LIKE '%$term%' ) ORDER by kurzbezeichnung " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ )
$newarr [] = $arr [ $i ][ 'name' ];
break ;
2022-05-24 21:50:35 +02:00
case " datevkonto " :
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT t.gegenkonto FROM
( ( SELECT concat ( datevkonto , ' ' , bezeichnung ) as gegenkonto FROM konten WHERE datevkonto <> 0 AND datevkonto <> '' AND aktiv = 1 )
UNION ALL ( SELECT concat ( sachkonto , ' ' , beschriftung ) as gegenkonto FROM kontorahmen WHERE sachkonto <> 0 AND sachkonto <> '' AND ausblenden <> 1 )
) t WHERE t . gegenkonto <> '' AND t . gegenkonto LIKE '%$term%' ORDER BY t . gegenkonto " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'gegenkonto' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " gegenkonto " :
2022-05-24 21:50:35 +02:00
$kontorahmenArr = $this -> app -> DB -> SelectPairs (
" SELECT concat(kr.sachkonto, ' ',kr.beschriftung) as a, kr.sachkonto
FROM kontorahmen as kr
WHERE kr . ausblenden <> 1 "
);
$subwhere = ' ' ;
if ( ! empty ( $kontorahmenArr )) {
$kontorahmenArr = array_unique ( array_merge ( array_keys ( $kontorahmenArr ), array_values ( $kontorahmenArr )));
$subwhere = sprintf ( " AND ka.gegenkonto NOT IN ('%s') " , implode ( " ',' " , $kontorahmenArr ));
}
$arr = $this -> app -> DB -> SelectArr (
" SELECT DISTINCT t.gegenkonto
FROM
(
(
SELECT concat ( ka . gegenkonto , ' ' , ka . name ) as gegenkonto
FROM ( SELECT ka2 . gegenkonto , a . name
FROM kontoauszuege ka2
INNER JOIN adresse a ON ka2 . gegenkonto = a . kundennummer OR ka2 . gegenkonto = a . lieferantennummer
WHERE ka2 . gegenkonto <> ''
GROUP BY ka2 . gegenkonto , a . name
) AS ka
WHERE ka . gegenkonto <> '' $subwhere
)
UNION ALL (
SELECT concat ( datevkonto , ' ' , bezeichnung )
FROM konten
WHERE datevkonto <> 0 AND datevkonto <> '' AND aktiv = 1
AND concat ( datevkonto , ' ' , bezeichnung ) LIKE '%$term%'
)
UNION ALL (
SELECT concat ( sachkonto , ' ' , beschriftung )
FROM kontorahmen
WHERE sachkonto <> 0 AND sachkonto <> '' AND ausblenden <> 1
AND concat ( sachkonto , ' ' , beschriftung ) LIKE '%$term%'
)
) t
WHERE t . gegenkonto <> '' AND t . gegenkonto LIKE '%$term%'
ORDER BY t . gegenkonto "
);
if ( $this -> app -> DB -> error ()){
$arr = $this -> app -> DB -> SelectArr (
" SELECT DISTINCT t.gegenkonto
FROM
(
(
SELECT concat ( ka . gegenkonto , ' ' ,(
SELECT a . name
FROM adresse a
WHERE ( a . kundennummer = ka . gegenkonto OR a . lieferantennummer = ka . gegenkonto ) AND ka . gegenkonto != '' )
) as gegenkonto
FROM kontoauszuege ka
LEFT JOIN kontorahmen kr
ON ( ka . gegenkonto = kr . sachkonto OR ka . gegenkonto = concat ( kr . sachkonto , ' ' , kr . beschriftung ))
AND kr . ausblenden <> 1
WHERE isnull ( kr . id ) AND ka . gegenkonto <> ''
GROUP BY ka . gegenkonto
)
UNION ALL (
SELECT concat ( datevkonto , ' ' , bezeichnung )
FROM konten
WHERE datevkonto <> 0 AND datevkonto <> '' AND aktiv = 1
AND concat ( datevkonto , ' ' , bezeichnung ) LIKE '%$term%'
)
UNION ALL (
SELECT concat ( sachkonto , ' ' , beschriftung )
FROM kontorahmen
WHERE sachkonto <> 0 AND sachkonto <> '' AND ausblenden <> 1
AND concat ( sachkonto , ' ' , beschriftung ) LIKE '%$term%'
)
) t
WHERE t . gegenkonto <> '' AND t . gegenkonto LIKE '%$term%'
ORDER BY t . gegenkonto "
);
}
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'gegenkonto' ];
}
break ;
break ;
2022-07-01 14:24:56 +02:00
case " versand_klaergrund " :
2022-05-24 21:50:35 +02:00
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT problemcase FROM
delivery_problemcase WHERE problemcase LIKE '%$term%' ORDER BY sort , problemcase " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'problemcase' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " label_type " :
2022-05-24 21:50:35 +02:00
$felder = array ( 'type' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr ( " SELECT DISTINCT lt.type FROM label_type AS lt WHERE ( $subwhere ) ORDER BY type LIMIT 20 " );
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'type' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " versandartentype " :
2022-05-24 21:50:35 +02:00
$felder = array ( 'va.type' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr (
" SELECT DISTINCT va.type
FROM versandarten AS va
WHERE ( $subwhere ) AND va . geloescht <> 1 AND va . aktiv = 1
ORDER BY va . type
LIMIT 20 "
);
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'type' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " zahlungsweisetype " :
2022-05-24 21:50:35 +02:00
$felder = array ( 'va.type' );
$subwhere = $this -> AjaxFilterWhere ( $termorig , $felder );
$arr = $this -> app -> DB -> SelectArr (
" SELECT DISTINCT va.type
FROM zahlungsweisen AS va
WHERE ( $subwhere ) AND va . geloescht <> 1 AND va . aktiv = 1
ORDER BY va . type
LIMIT 20 "
);
$carr = ! empty ( $arr ) ? count ( $arr ) : 0 ;
for ( $i = 0 ; $i < $carr ; $i ++ ) {
$newarr [] = $arr [ $i ][ 'type' ];
}
break ;
2022-07-01 14:24:56 +02:00
case " ticketcategory " :
2022-05-24 21:50:35 +02:00
$newarr = $this -> app -> DB -> SelectFirstCols (
sprintf (
" SELECT CONCAT(`id`,' ',`name`) FROM `ticket_category` WHERE (`name` LIKE '%%%s%%' OR `name` LIKE '%%%s%%') %s " ,
$term , $term2 , $this -> app -> erp -> ProjektRechte ( 'project_id' )
)
);
break ;
2022-07-01 14:24:56 +02:00
case " shopimport_auftraege " :
2022-05-24 21:50:35 +02:00
$shopId = $this -> app -> Secure -> GetGET ( 'id' );
$newarr = $this -> app -> DB -> SelectFirstCols (
sprintf (
" SELECT CONCAT(sa.`extid`,' ',IFNULL(sa.`bestellnummer`,''))
FROM `shopimport_auftraege` AS `sa`
WHERE (
CONCAT ( sa . `extid` , ' ' , IFNULL ( sa . `bestellnummer` , '' )) LIKE '%%%s%%'
OR CONCAT ( sa . `extid` , ' ' , IFNULL ( sa . `bestellnummer` , '' )) LIKE '%%%s%%'
) AND ( % d = 0 OR % d = sa . shopid ) % s " ,
$term , $term2 , $shopId , $shopId , $this -> app -> erp -> ProjektRechte ( 'sa.projekt' )
)
);
break ;
default :
$newarr = null ;
$this -> app -> erp -> RunHook ( 'ajax_filter_hook1' , 5 , $filtername , $newarr , $term , $term2 , $term3 );
}
$tmp = null ;
//if(isset($this->app->stringcleaner) && false)
if ( false )
{
$cnewarr = $newarr ? count ( $newarr ) : 0 ;
for ( $i = 0 ; $i < $cnewarr ; $i ++ ){
$tmp [] = $this -> app -> erp -> ClearDataBeforeOutput ( $this -> app -> stringcleaner -> CleanString ( html_entity_decode ( $this -> app -> stringcleaner -> CleanString ( $newarr [ $i ], 'nojs' ), ENT_QUOTES , 'UTF-8' ), 'nojs' ));
}
} else {
$cnewarr = ! empty ( $newarr ) ? count ( $newarr ) : 0 ;
for ( $i = 0 ; $i < $cnewarr ; $i ++ ) {
2023-03-30 10:54:18 +02:00
$row = $newarr [ $i ];
if ( is_string ( $row ))
$tmp [] = $this -> app -> erp -> ClearDataBeforeOutput ( html_entity_decode ( $newarr [ $i ], ENT_QUOTES , 'UTF-8' ));
else if ( is_array ( $row )) {
$tmprow = [];
foreach ( $row as $key => $value ) {
$tmprow [ $key ] = $this -> app -> erp -> ClearDataBeforeOutput ( html_entity_decode ( $value , ENT_QUOTES , 'UTF-8' ));
}
$tmp [] = $tmprow ;
}
2022-05-24 21:50:35 +02:00
}
}
if ( ! empty ( $isChangeLtGt )){
$ctmp = ! empty ( $tmp ) ? count ( $tmp ) : 0 ;
for ( $i = 0 ; $i < $ctmp ; $i ++ ){
$tmp [ $i ] = str_replace ( '-gtrep-' , '>' , str_replace ( '-ltrep-' , '<' , $tmp [ $i ]));
}
}
echo json_encode ( $tmp );
$this -> app -> erp -> ExitWawi ();
}
public function AjaxTablePosition ()
{
$iDisplayStart = $this -> app -> Secure -> GetGET ( 'iDisplayStart' );
$iDisplayLength = $this -> app -> Secure -> GetGET ( 'iDisplayLength' );
$iSortCol_0 = $this -> app -> Secure -> GetGET ( 'iSortCol_0' );
$iSortingCols = $this -> app -> Secure -> GetGET ( 'iSortingCols' );
$sSearch = $this -> app -> Secure -> GetGET ( 'sSearch' );
$sEcho = $this -> app -> Secure -> GetGET ( 'sEcho' );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
$sLimit = '' ;
if ( isset ( $iDisplayStart ) )
{
$sLimit = 'LIMIT ' . ( int ) $iDisplayStart . ', ' .
( int ) $iDisplayLength ;
}
/* Ordering */
if ( isset ( $iSortCol_0 ) )
{
$sOrder = 'ORDER BY ' ;
$ciSortingCols = ( int ) $iSortingCols ;
for ( $i = 0 ; $i < $ciSortingCols ; $i ++ )
{
$iSortingCols_tmp = $this -> app -> Secure -> GetGET ( 'iSortCol_' . $i );
$sSortDir_tmp = $this -> app -> Secure -> GetGET ( 'sSortDir_' . $i );
$sOrder .= $this -> fnColumnToFieldPosition ( $iSortingCols_tmp ) . '
'. $sSortDir_tmp .' , ' ;
}
$sOrder = substr_replace ( $sOrder , '' , - 2 );
}
/* Filtering - NOTE this does not match the built - in DataTables filtering which does it
* word by word on any field . It ' s possible to do here , but concerned about efficiency
* on very large tables , and MySQL ' s regex functionality is very limited
*/
$sWhere = '' ;
$where = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'where' );
if ( $sSearch != '' )
{
$searchsql = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'searchsql' );
if ( $where == '' ){
$sWhere = ' WHERE (' ;
}
else
{
2022-06-10 11:28:28 +02:00
if ( ! empty ( $searchsql ) && ( ! empty ( $searchsql ) ? count ( $searchsql ) : 0 ) > 0 ){
2022-05-24 21:50:35 +02:00
$sWhere = " WHERE $where AND ( " ;
}
else {
$sWhere = " WHERE $where " ;
}
}
2022-06-10 11:28:28 +02:00
for ( $i = 0 ; $i < ( ! empty ( $searchsql ) ? count ( $searchsql ) : 0 ) - 1 ; $i ++ )
2022-05-24 21:50:35 +02:00
{
$sWhere .= $searchsql [ $i ] . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR " ;
}
$sWhere .= $searchsql [ $i ] . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
} else {
if ( $where != '' ){
$sWhere = " WHERE $where " ;
}
}
$searchfulltext = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'searchfulltext' );
if ( $searchfulltext != '' && $sSearch != '' )
{
$searchfulltext = ' MATCH(' . $searchfulltext . " ) AGAINST (' $sSearch ') " ;
if ( $sWhere == '' ){
$sWhere = " WHERE $searchfulltext " ;
}
else {
$sWhere .= " AND $searchfulltext " ;
}
}
$tmp = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'sql' );
$sQuery = "
$tmp
$sWhere
$sOrder
$sLimit
" ;
$rResult = $this -> app -> DB -> Query ( $sQuery );
$sQuery = '
SELECT FOUND_ROWS ()
' ;
$rResultFilterTotal = $this -> app -> DB -> Query ( $sQuery );
if ( ! empty ( $rResultFilterTotal )){
$aResultFilterTotal = $this -> app -> DB -> Fetch_Array ( $rResultFilterTotal );
$this -> app -> DB -> free ( $rResultFilterTotal );
$iFilteredTotal = $aResultFilterTotal [ 0 ];
} else {
$aResultFilterTotal = 0 ;
$iFilteredTotal = 0 ;
}
/*
$sQuery = "
SELECT COUNT ( id )
FROM artikel
" ;
*/
$sQuery = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'count' );
$rResultTotal = $this -> app -> DB -> Query ( $sQuery );
$aResultTotal = $this -> app -> DB -> Fetch_Array ( $rResultTotal );
$this -> app -> DB -> free ( $rResultTotal );
$iTotal = $aResultTotal [ 0 ];
$heading = count ( $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'heading' ));
$menu = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'menu' );
$sOutput = '{' ;
$sOutput .= '"sEcho": ' . ( int ) $sEcho . ', ' ;
$sOutput .= '"iTotalRecords": ' . $iTotal . ', ' ;
$sOutput .= '"iTotalDisplayRecords": ' . $iFilteredTotal . ', ' ;
$sOutput .= '"aaData": [ ' ;
if ( $rResult ){
while ( $aRow = $this -> app -> DB -> Fetch_Row ( $rResult )) {
$sOutput .= '[' ;
for ( $i = 1 ; $i < $heading ; $i ++ ) {
$sOutput .= '"' . addslashes ( $aRow [ $i ]) . '",' ;
}
$sOutput .= '"' . addslashes ( str_replace ( '%value%' , $aRow [ $i ], $menu )) . '"' ;
$sOutput .= '],' ;
}
$this -> app -> DB -> free ( $rResult );
}
$sOutput = substr_replace ( $sOutput , '' , - 1 );
$sOutput .= '] }' ;
$sOutput = str_replace ( " \t " , '' , $sOutput );
echo json_encode ( json_decode ( $this -> app -> erp -> ClearDataBeforeOutput ( $sOutput )));
$this -> app -> erp -> ExitWawi ();
}
protected function AjaxTableWhereBuilder ( $spalte , $sSearch , $datecol = false , $numbercol = false )
{
$sSearch = str_replace ( '%' , '%' , $sSearch );
$sSearcha = explode ( ' ' , $sSearch );
$sSearch = str_replace ( ' ' , '%' , $sSearch );
if ( $spalte == 'datum' || $datecol )
{
return ' ( DATE_FORMAT(' . $spalte . " ,'%d.%m.%Y %H:%i:%s') LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR " . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
}
if ( strpos ( $spalte , 'datum' )) {
$spaltea = explode ( '.' , $spalte );
2022-06-10 11:28:28 +02:00
if (( ! empty ( $spaltea ) ? count ( $spaltea ) : 0 ) === 2 ){
2022-05-24 21:50:35 +02:00
return ' ( DATE_FORMAT(' . $spalte . " ,'%d.%m.%Y %H:%i:%s') LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR " . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
}
} elseif (( $numbercol || $spalte === 'soll' || $spalte === 'gesamtsumme' ) && strpos ( $sSearch , ',' ))
{
return ' ( ' . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( str_replace ( ',' , '.' , $sSearch ) ) . " %' OR " . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
} elseif (( strpos ( $spalte , 'soll' ) || strpos ( $spalte , 'gesamtsumme' )) && strpos ( $sSearch , ',' ))
{
$spaltea = explode ( '.' , $spalte );
2022-06-10 11:28:28 +02:00
if (( ! empty ( $spaltea ) ? count ( $spaltea ) : 0 ) === 2 ){
2022-05-24 21:50:35 +02:00
return ' ( ' . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( str_replace ( ',' , '.' , $sSearch ) ) . " %' OR " . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
}
}
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
return ' (' . $this -> AjaxTableWhereBuilderArray ( $spalte , $sSearcha ) . ')' ;
}
return ' (' . $spalte . " LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
}
protected function AjaxTableWhereBuilderArray ( $column , $sSearcha , $sSearcha2 = null )
{
if ( empty ( $column ) || empty ( $sSearcha ))
{
return '' ;
}
2022-06-10 11:28:28 +02:00
$csSearcha = ( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 );
2022-05-24 21:50:35 +02:00
$tmp = [];
foreach ( $sSearcha as $v )
{
$tmp [ strtolower ( $v )] = 1 + ( ! empty ( $tmp [ strtolower ( $v )]) ? $tmp [ strtolower ( $v )] : 0 );
}
2022-06-10 11:28:28 +02:00
if (( ! empty ( $tmp ) ? count ( $tmp ) : 0 ) === 1 )
2022-05-24 21:50:35 +02:00
{
$sSearch = implode ( '%' , $sSearcha );
$sSearch2 = $this -> app -> erp -> ConvertForTableSearch ( $sSearch );
if ( $sSearch2 === '' )
{
$sWhere = " ( { $column } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
} else {
$sWhere = " ( { $column } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR
{ $column } LIKE '%" . $this->app->erp->ConvertForTableSearch($sSearch) . "%' ) " ;
}
return $sWhere ;
}
if ( ! empty ( $sSearcha2 ))
{
$wherea = [];
foreach ( $tmp as $v => $c ) {
if ( $c > 1 )
{
$vold = $v ;
for ( $i = 1 ; $i < $c ; $i ++ )
{
$v .= '%' . $vold ;
}
}
$vt = $this -> app -> erp -> ConvertForTableSearch ( $v );
if ( $vt === '' || $vt === $v )
{
$vt = $this -> app -> erp -> ConvertForDBUTF8 ( $v );
}
if ( $v === '' )
{
$v = $vt ;
}
if ( $v !== $vt && $vt !== '' ){
$wherea [] = ' (' . $column . " LIKE '% " . $v . " %' OR " . $column . " LIKE '% " . $vt . " %') " ;
} else {
$wherea [] = ' (' . $column . " LIKE '% " . $v . " %') " ;
}
}
return '(' . implode ( ' AND ' , $wherea ) . ')' ;
} else {
$wherea = [];
foreach ( $tmp as $v => $c ) {
if ( $c > 1 )
{
$vold = $v ;
for ( $i = 1 ; $i < $c ; $i ++ )
{
$v .= '%' . $vold ;
}
}
$wherea [] = $column . " LIKE '% " . $v . " %' " ;
}
return '(' . implode ( ' AND ' , $wherea ) . ')' ;
}
}
public function AjaxTable ()
{
$iDisplayStart = $this -> app -> Secure -> GetGET ( 'iDisplayStart' );
$iDisplayLength = $this -> app -> Secure -> GetGET ( 'iDisplayLength' );
$iSortCol_0 = $this -> app -> Secure -> GetGET ( 'iSortCol_0' );
$sSortDir_0 = $this -> app -> Secure -> GetGET ( 'sSortDir_0' );
$iSortingCols = $this -> app -> Secure -> GetGET ( 'iSortingCols' );
$sSearch = $this -> app -> Secure -> GetGET ( 'sSearch' );
$sEcho = $this -> app -> Secure -> GetGET ( 'sEcho' );
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
$frommodule = $this -> app -> Secure -> GetGET ( 'frommodule' );
$fromclass = $this -> app -> Secure -> GetGET ( 'fromclass' );
$sSearch = trim ( $sSearch );
$sSearch = str_replace ( '%' , '\%' , $sSearch );
$sSearch2 = $sSearch ;
$sSearch3 = $this -> app -> erp -> ConvertForDB ( $sSearch );
$sSearch = $this -> app -> erp -> ConvertForDBUTF8 ( $sSearch );
if ( $this -> app -> Secure -> GetGet ( 'deferLoading' )){
echo '{"sEcho":' . ( int ) $sEcho . ',"iTotalRecords":0,"iTotalDisplayRecords":0,"aaData":[]}' ;
$this -> app -> ExitXentral ();
}
$YUIs = $this -> app -> YUI -> TableSearch ( '' , $cmd , 'ALL' , '' , '' , $frommodule , $fromclass );
$starttime = microtime ( true );
$limiert = false ;
if ( method_exists ( $this -> app -> erp , 'BegrenzungLivetabelle' ))
{
$limiert = 2 * $this -> app -> erp -> BegrenzungLivetabelle ( $cmd , $this -> app -> DB -> real_escape_string ( $iDisplayLength ));
}
$maxrows = 0 ;
if ( isset ( $YUIs [ 'maxrows' ]) && $YUIs [ 'maxrows' ] > 0 )
{
$maxrows = $YUIs [ 'maxrows' ];
}
$sLimit = '' ;
if ( $limiert )
{
$limiert += ( int ) $iDisplayStart ;
$iDisplayLength = $iDisplayLength ;
if (( $maxrows > 0 ) && $iDisplayLength > $maxrows ){
$iDisplayLength = $maxrows ;
}
$sLimit = 'LIMIT ' . $iDisplayStart . ', ' . ( $limiert );
} else {
if ( isset ( $iDisplayStart ) )
{
$iDisplayLength = $iDisplayLength ;
if (( $maxrows > 0 ) && $iDisplayLength > $maxrows )
{
$iDisplayLength = $maxrows ;
}
$sLimit = 'LIMIT ' . $iDisplayStart . ', ' . $iDisplayLength ;
}
}
/* Ordering */
// check if is allowed
if ( ! $this -> app -> erp -> TableSearchAllowed ( $cmd ))
{
$this -> app -> erp -> Protokoll ( " Nicht erlaubter Zugriff auf $cmd von Benutzer " . $this -> app -> User -> GetName ());
$this -> app -> erp -> ExitWawi ();
}
//$findcolstmp = $this->app->YUI->TableSearch("",$cmd,"findcols","","",$frommodule, $fromclass);
$findcolstmp = $YUIs [ 'findcols' ];
//$moreinfo = $this->app->YUI->TableSearch("",$cmd,"moreinfo","","",$frommodule, $fromclass);
$moreinfo = $YUIs [ 'moreinfo' ];
if ( isset ( $iSortCol_0 ) || ( $moreinfo && $iSortCol_0 < 1 ))
{
if ( $moreinfo ){
if ( ! ( $iSortCol_0 < 1 )){
$iSortCol_0 ++ ;
}
} else {
$iSortCol_0 ++ ;
}
if ( $iSortCol_0 < 1 ){
$iSortCol_0 = 1 ;
}
if ( trim ( $findcolstmp [ $iSortCol_0 - 1 ]) == 'belegnr' ||
strpos ( $findcolstmp [ $iSortCol_0 - 1 ], '.belegnr' ) !== false ){
if ( preg_match_all ( '/([a-zA-Z0-9]*)(\.*)belegnr/' , $findcolstmp [ $iSortCol_0 - 1 ], $ergebnis )){
if ( isset ( $ergebnis [ 1 ][ 0 ]) && ! isset ( $ergebnis [ 1 ][ 1 ])){
$findcolstmp [ $iSortCol_0 - 1 ] = $this -> app -> erp -> BelegnummerSortierung ( $ergebnis [ 1 ][ 0 ]);
}
}
}
$sOrder = 'ORDER BY ' . $findcolstmp [ $iSortCol_0 - 1 ] . " $sSortDir_0 " ;
}
else
{
//standard einstellung nach datum absteigend wenn datumsspalte vorhanden
//$defaultorder = $this->app->YUI->TableSearch("",$cmd,"defaultorder","","",$frommodule, $fromclass);
$defaultorder = $YUIs [ 'defaultorder' ];
//$defaultorderdesc = $this->app->YUI->TableSearch("",$cmd,"defaultorderdesc","","",$frommodule, $fromclass);
$defaultorderdesc = $YUIs [ 'defaultorderdesc' ];
if ( $defaultorder <= 0 ) {
2022-06-10 11:28:28 +02:00
$defaultorder = ( ! empty ( $findcolstmp ) ? count ( $findcolstmp ) : 0 );
2022-05-24 21:50:35 +02:00
$defaultorderdesc = 1 ;
}
if ( $defaultorderdesc == '1' ) {
$defaultorderdesc = ' DESC' ;
} else {
$defaultorderdesc = '' ;
}
if ( $defaultorder >= 0 && is_numeric ( $defaultorder ))
{
$defaultorder ++ ;
//$findcolstmp = $this->app->YUI->TableSearch("",$cmd,"findcols","","",$frommodule, $fromclass);
$findcolstmp = $YUIs [ 'findcols' ];
if ( $defaultorder < 2 )
{
$defaultorder = 2 ;
}
$sOrder = 'ORDER BY ' . $findcolstmp [ $defaultorder - 2 ] . " $defaultorderdesc " ;
} else
{
$sOrder = 'ORDER BY ' . $findcolstmp [ 0 ] . " $defaultorderdesc " ;
}
}
/* Filtering - NOTE this does not match the built - in DataTables filtering which does it
* word by word on any field . It ' s possible to do here , but concerned about efficiency
* on very large tables , and MySQL ' s regex functionality is very limited
*/
$sWhere = '' ;
//$where = $this->app->YUI->TableSearch("",$cmd,"where","","",$frommodule, $fromclass);
$where = $YUIs [ 'where' ];
//echo $where;
$matchesql = ! empty ( $YUIs [ 'matchesql' ]) ? $YUIs [ 'matchesql' ] : '' ;
if ( $sSearch != '' && ! empty ( $matchesql ) && ! empty ( $matchesql [ 'sqlpre' ]))
{
while ( strpos ( $sSearch , ' ' ) !== false )
{
$sSearch = str_replace ( ' ' , ' ' , $sSearch );
}
while ( strpos ( $sSearch2 , ' ' ) !== false )
{
$sSearch2 = str_replace ( ' ' , ' ' , $sSearch2 );
}
$sSearch = str_replace ( '%' , '%' , $sSearch );
$sSearch2 = str_replace ( '%' , '%' , $sSearch2 );
$sSearcha = explode ( ' ' , $sSearch );
$sSearcha2 = explode ( ' ' , $sSearch2 );
$sSearch = str_replace ( ' ' , '%' , $sSearch );
$sSearch2 = str_replace ( ' ' , '%' , $sSearch2 );
$YUIs [ 'sql' ] = $matchesql [ 'sqlpre' ];
$unions = [];
foreach ( $matchesql [ 'elements' ] as $keyEl => $SqlElement )
{
$SqlElementQuery = $SqlElement [ 'sql' ] . ' WHERE ' ;
$whereArr = [];
$firstsubwhere = true ;
if ( ! empty ( $SqlElement [ 'where' ]))
{
foreach ( $SqlElement [ 'where' ] as $keyWhere => $valWhere )
{
if ( ! $firstsubwhere )
{
$SqlElementQuery .= ' OR ' ;
}
if ( $this -> app -> DB -> real_escape_string ( $sSearch ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch ))
{
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
$SqlElementQuery .= $this -> AjaxTableWhereBuilderArray ( $valWhere , $sSearcha , $sSearcha2 );
} else {
$SqlElementQuery .= " ( { $valWhere } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR
{ $valWhere } LIKE '%" . $this->app->erp->ConvertForTableSearch($sSearch) . "%' ) " ;
}
} else {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
$SqlElementQuery .= $this -> AjaxTableWhereBuilderArray ( $valWhere , $sSearcha );
} else {
$SqlElementQuery .= " ( { $valWhere } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
}
}
if ( $sSearch2 != '' && ( $sSearch2 !== $sSearch ))
{
if ( $this -> app -> DB -> real_escape_string ( $sSearch2 ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch2 ))
{
$SqlElementQuery .= " OR ( { $valWhere } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch2 ) . " %' OR { $valWhere } LIKE '% " . $this -> app -> erp -> ConvertForTableSearch ( $sSearch2 ) . " %' ) " ;
} else {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
$SqlElementQuery .= ' OR (' . $this -> AjaxTableWhereBuilderArray ( $valWhere , $sSearcha2 ) . ') ' ;
} else {
$SqlElementQuery .= " OR ( { $valWhere } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch2 ) . " %') " ;
}
}
}
$firstsubwhere = false ;
}
}
if ( ! empty ( $SqlElement [ 'match' ]))
{
if ( ! $firstsubwhere )
{
$SqlElementQuery .= ' OR ' ;
}
$sSearchArr = explode ( '%' , str_replace ([ '+' , '-' , '*' , '~' ],[ '%' , '' , '%' , '%' ], $sSearch ));
foreach ( $sSearchArr as $keyS => $keyv )
{
if ( strlen ( $keyv ) === 0 )
{
unset ( $sSearchArr [ $keyS ]);
}
}
$sSearchMatch = '' ;
foreach ( $sSearchArr as $sSearchItem ) {
// $sSearchItem enthält einzelne Wörter evtl. mit HTML-Entities
// Problem 1: Das Ampersand-Zeichen der HTML-Entities wird im BOOLEAN MODE als Worttrenner gesehen.
// Problem 2: Das Ampersand-Zeichen kann im BOOLEAN MODE nicht escaped werden.
// Die einzige Lösung ist das Suchwort mit doppelten Anführungszeichen zu umschließen,
// die Worttrenner-Eigenschaft des Ampersandzeichens wird damit aufgehoben.
// Der Nachteil bei dieser Lösung: Es werden nur noch ganze Wörter gefunden.
$sSearchMatch .= sprintf ( '+%s* ' , $this -> app -> DB -> real_escape_string ( $sSearchItem ));
}
$SqlElementQuery .= ' MATCH(' . implode ( ',' , $SqlElement [ 'match' ]) . ') AGAINST (\'' . $sSearchMatch . '\' IN BOOLEAN MODE) ' ;
if ( $this -> app -> DB -> real_escape_string ( $sSearch ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch ))
{
$SqlElementQuery .= ' OR MATCH(' . implode ( ',' , $SqlElement [ 'match' ]) . ') AGAINST (\'' . $this -> app -> erp -> ConvertForTableSearch ( $sSearchMatch ) . '\' IN BOOLEAN MODE) ' ;
}
elseif ( ! empty ( $sSearch2 ) && $sSearch2 !== $sSearch ) {
$sSearchArr2 = explode ( '%' , str_replace ([ '+' , '-' , '*' , '~' ],[ '%' , '' , '%' , '%' ], $sSearch2 ));
foreach ( $sSearchArr2 as $keyS => $keyv )
{
if ( strlen ( $keyv ) === 0 ) {
unset ( $sSearchArr2 [ $keyS ]);
}
}
$sSearchMatch2 = '+' . implode ( '* +' , $sSearchArr2 ) . '*' ;
$SqlElementQuery .= ' OR MATCH(' . implode ( ',' , $SqlElement [ 'match' ]) . ') AGAINST (\'' . $this -> app -> DB -> real_escape_string ( $sSearchMatch2 ) . '\' IN BOOLEAN MODE) ' ;
}
}
$SqlElementQuery .= implode ( ' OR ' , $whereArr );
$unions [] = $SqlElementQuery ;
}
$YUIs [ 'sql' ] .= implode ( '
UNION
' , $unions );
$YUIs [ 'sql' ] .= $matchesql [ 'sqlpost' ];
if ( $where != '' ){
$sWhere = " WHERE $where " ;
}
}
elseif ( $sSearch != '' ) {
/*
$sWhere = " WHERE a.nummer LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR " .
" p.abkuerzung LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR " .
" a.name_de LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' " ;
*/
//$searchsql = $this->app->YUI->TableSearch("",$cmd,"searchsql","","",$frommodule, $fromclass);
$searchsql = $YUIs [ 'searchsql' ];
$searchsql2 = null ;
$datesearchcol2 = null ;
$datesearchcol = $YUIs [ 'datesearchsols' ];
if ( is_array ( $searchsql ))
{
foreach ( $searchsql as $k => $v )
{
if ( is_array ( $v ))
{
foreach ( $v as $k2 => $v2 )
{
$searchsql2 [] = $v2 ;
if ( $datesearchcol && in_array ( $k , $datesearchcol )) {
2022-06-10 11:28:28 +02:00
$datesearchcol2 [] = ( ! empty ( $searchsql2 ) ? count ( $searchsql2 ) : 0 ) - 1 ;
2022-05-24 21:50:35 +02:00
}
}
} else {
$searchsql2 [] = $v ;
if ( $datesearchcol && in_array ( $k , $datesearchcol ))
{
2022-06-10 11:28:28 +02:00
$datesearchcol2 [] = ( ! empty ( $searchsql2 ) ? count ( $searchsql2 ) : 0 ) - 1 ;
2022-05-24 21:50:35 +02:00
}
}
}
}
if ( $where == '' ){
$sWhere = ' WHERE (' ;
}
else
{
2022-06-10 11:28:28 +02:00
if (( ! empty ( $searchsql ) ? count ( $searchsql ) : 0 ) > 0 ){
2022-05-24 21:50:35 +02:00
$sWhere = " WHERE $where AND ( " ;
}
else {
$sWhere = " WHERE $where " ;
}
}
// Prozent austauschen da dies mysql wildcat ist
while ( strpos ( $sSearch , ' ' ) !== false )
{
$sSearch = str_replace ( ' ' , ' ' , $sSearch );
}
while ( strpos ( $sSearch2 , ' ' ) !== false )
{
$sSearch2 = str_replace ( ' ' , ' ' , $sSearch2 );
}
$sSearch = str_replace ( '%' , '%' , $sSearch );
$sSearch2 = str_replace ( '%' , '%' , $sSearch2 );
//$sSearch3 = str_replace('%','%',$sSearch3);
//$sSearch3 = str_replace(' ','%',$sSearch3);
$sSearcha = explode ( ' ' , $sSearch );
$sSearcha2 = explode ( ' ' , $sSearch2 );
//$sSearcha = [];
//$sSearcha2 = [];
$sSearch = str_replace ( ' ' , '%' , $sSearch );
$sSearch2 = str_replace ( ' ' , '%' , $sSearch2 );
$csearchsql2 = $searchsql2 ? count ( $searchsql2 ) : 0 ;
for ( $i = 0 ; $i < $csearchsql2 ; $i ++ )
{
if ( $this -> app -> DB -> real_escape_string ( $sSearch ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch ))
{
if ( $datesearchcol2 && in_array ( $i , $datesearchcol2 ))
{
$sWhere .= '(' . $this -> AjaxTableWhereBuilder ( $searchsql2 [ $i ], $sSearch , true , false ) . ' OR ' . $this -> AjaxTableWhereBuilder ( $searchsql2 [ $i ], $this -> app -> erp -> ConvertForTableSearch ( $sSearch ), true , false ) . " ) " ;
} else {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
$sWhere .= $this -> AjaxTableWhereBuilderArray ( $searchsql2 [ $i ], $sSearcha , $sSearcha2 );
} else {
$sWhere .= " ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR
{ $searchsql2 [ $i ]} LIKE '%" . $this->app->erp->ConvertForTableSearch($sSearch) . "%' ) " ;
}
}
} else {
if ( $datesearchcol2 && in_array ( $i , $datesearchcol2 )) {
$sWhere .= $this -> AjaxTableWhereBuilder ( $searchsql2 [ $i ], $sSearch , true , false );
} else {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
$sWhere .= $this -> AjaxTableWhereBuilderArray ( $searchsql2 [ $i ], $sSearcha );
} else {
$sWhere .= " ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') " ;
}
}
}
if ( $sSearch2 != '' && ( $sSearch2 !== $sSearch ))
{
if ( $this -> app -> DB -> real_escape_string ( $sSearch2 ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch2 ))
{
$sWhere .= " OR ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch2 ) . " %' OR { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> erp -> ConvertForTableSearch ( $sSearch2 ) . " %' ) " ;
} else {
2022-06-10 11:28:28 +02:00
if (( ! empty ( $sSearcha ) ? count ( $sSearcha ) : 0 ) > 1 )
2022-05-24 21:50:35 +02:00
{
$sWhere .= ' OR (' . $this -> AjaxTableWhereBuilderArray ( $searchsql2 [ $i ], $sSearcha2 ) . ') ' ;
} else {
$sWhere .= " OR ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch2 ) . " %') " ;
}
}
}
if ( $sSearch3 != '' && ( $sSearch3 !== $sSearch || $sSearch3 !== $sSearch2 ))
{
if ( $this -> app -> DB -> real_escape_string ( $sSearch3 ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch3 ))
{
$sWhere .= " OR ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch3 ) . " %' OR { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> erp -> ConvertForTableSearch ( $sSearch3 ) . " %' ) OR " ;
} else {
$sWhere .= " OR ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch3 ) . " %') OR " ;
}
}
else {
$sWhere .= ' OR ' ;
}
}
//$searchfulltext = $this->app->YUI->TableSearch("",$cmd,"searchfulltext","","",$frommodule, $fromclass);
$searchfulltext = $YUIs [ 'searchfulltext' ];
if ( $searchfulltext != '' && $sSearch != '' )
{
$sSearch = str_replace ( '"' , '"' , $sSearch );
$sSearch .= '*' ;
$searchfulltext = ' MATCH(e.subject,e.sender,e.action,e.action_html) AGAINST (\'' . $this -> app -> erp -> ConvertForTableSearch ( $sSearch ) . '\' IN BOOLEAN MODE ) ' ;
}
2022-06-10 11:28:28 +02:00
if (( ! empty ( $searchsql2 ) ? count ( $searchsql2 ) : 0 ) > 0 ){
2022-05-24 21:50:35 +02:00
if ( $searchfulltext == '' )
{
$sWhere .= ' 0)' ;
} else {
$sWhere .= ' ' . $searchfulltext . ')' ;
/* $i -- ;
if ( $searchfulltext != '' ){
$searchfulltext = ' OR ' . $searchfulltext ;
}
if ( $this -> app -> DB -> real_escape_string ( $sSearch ) !== $this -> app -> erp -> ConvertForTableSearch ( $sSearch )){
$sWhere .= " ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %' OR { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> erp -> ConvertForTableSearch ( $sSearch ) . " %') $searchfulltext ) " ;
} else {
$sWhere .= " ( { $searchsql2 [ $i ] } LIKE '% " . $this -> app -> DB -> real_escape_string ( $sSearch ) . " %') $searchfulltext ) " ;
} */
}
} else {
$sWhere .= " AND $searchfulltext " ;
}
} else {
if ( $where != '' ){
$sWhere = " WHERE $where " ;
}
}
//$searchsql = $this->app->YUI->TableSearch("",$cmd,"searchsql","","",$frommodule, $fromclass);
$searchsql = $YUIs [ 'searchsql' ];
//$moreinfo = $this->app->YUI->TableSearch("",$cmd,"moreinfo","","",$frommodule, $fromclass);
$moreinfo = $YUIs [ 'moreinfo' ];
if ( $moreinfo ) {
$offset = 1 ;
} else {
$offset = 0 ;
}
if ( ! $YUIs [ 'columnfilter' ])
{
$searchsql = $YUIs [ 'findcols' ];
$offset = 0 ;
}
$csearchsql = $searchsql ? count ( $searchsql ) : 0 ;
for ( $isearch = 0 ; $isearch < $csearchsql ; $isearch ++ )
{
$sSearch = $this -> app -> Secure -> GetGET ( 'sSearch_' . $isearch );
if ( $sSearch != '' && $sSearch != 'A' )
{
if ( isset ( $searchsql [ $isearch - $offset ]) && is_array ( $searchsql [ $isearch - $offset ]))
{
$gef = false ;
foreach ( $searchsql [ $isearch - $offset ] as $v )
{
if ( $v != '' )
{
if ( $sWhere == '' )
{
//$sWhere = "WHERE (".$v." LIKE '%".$this->app->DB->real_escape_string( $sSearch )."%'";
$sWhere = 'WHERE (' . $this -> AjaxTableWhereBuilder ( $v , $sSearch , isset ( $YUIs [ 'datecols' ]) && is_array ( $YUIs [ 'datecols' ]) && in_array ( $isearch - $offset , $YUIs [ 'datecols' ]) ? true : false , isset ( $YUIs [ 'numbercols' ]) && is_array ( $YUIs [ 'numbercols' ]) && in_array ( $isearch - $offset , $YUIs [ 'numbercols' ]) ? true : false );
$gef = true ;
} else {
$sWhere = " $sWhere " ;
if ( ! $gef )
{
$sWhere .= ' AND (' ;
} else {
$sWhere .= ' OR ' ;
}
//$sWhere .= " (".$v." LIKE '%".$this->app->DB->real_escape_string( $sSearch )."%')";
$sWhere .= $this -> AjaxTableWhereBuilder ( $v , $sSearch , isset ( $YUIs [ 'datecols' ]) && is_array ( $YUIs [ 'datecols' ]) && in_array ( $isearch - $offset , $YUIs [ 'datecols' ]) ? true : false , isset ( $YUIs [ 'numbercols' ]) && is_array ( $YUIs [ 'numbercols' ]) && in_array ( $isearch - $offset , $YUIs [ 'numbercols' ]) ? true : false );
$gef = true ;
}
}
}
if ( $gef ){
$sWhere .= ' ) ' ;
}
} else {
if ( $sWhere == '' )
{
if ( $searchsql [ $isearch - $offset ] != '' )
{
//$sWhere = "WHERE ".$searchsql[$isearch-$offset]." LIKE '%".$this->app->DB->real_escape_string( $sSearch )."%'";
$sWhere = 'WHERE ' . $this -> AjaxTableWhereBuilder ( $searchsql [ $isearch - $offset ], $sSearch , isset ( $YUIs [ 'datecols' ]) && is_array ( $YUIs [ 'datecols' ]) && in_array ( $isearch - $offset , $YUIs [ 'datecols' ]) ? true : false , isset ( $YUIs [ 'numbercols' ]) && is_array ( $YUIs [ 'numbercols' ]) && in_array ( $isearch - $offset , $YUIs [ 'numbercols' ]) ? true : false );
}
}
else
{
if ( $searchsql [ $isearch - $offset ] != '' )
{
//$sWhere = "$sWhere AND (".$searchsql[$isearch-$offset]." LIKE '%".$this->app->DB->real_escape_string( $sSearch )."%')";
$sWhere = " $sWhere AND ( " . $this -> AjaxTableWhereBuilder ( $searchsql [ $isearch - $offset ], $sSearch , isset ( $YUIs [ 'datecols' ]) && is_array ( $YUIs [ 'datecols' ]) && in_array ( $isearch - $offset , $YUIs [ 'datecols' ]) ? true : false , isset ( $YUIs [ 'numbercols' ]) && is_array ( $YUIs [ 'numbercols' ]) && in_array ( $isearch - $offset , $YUIs [ 'numbercols' ]) ? true : false ) . " ) " ;
}
}
}
}
}
//$tmp = $this->app->YUI->TableSearch("",$cmd,"sql","","",$frommodule, $fromclass);
$tmp = $YUIs [ 'sql' ];
//$groupby = $this->app->YUI->TableSearch("",$cmd,"groupby","","",$frommodule, $fromclass);
$groupby = $YUIs [ 'groupby' ];
//$orderby = $this->app->YUI->TableSearch("",$cmd,"orderby","","",$frommodule, $fromclass);
$orderby = $YUIs [ 'orderby' ];
$fastcount = isset ( $YUIs [ 'fastcount' ]) ? $YUIs [ 'fastcount' ] : '' ;
if ( $orderby ){
$sOrder = $orderby ;
}
$uid = $this -> app -> Secure -> GetGET ( 'uid' );
$pid = $this -> app -> User -> GetParameter ( 'tablesearch_' . $uid );
if ( ! empty ( $pid )) {
$pid = explode ( '|' , $pid );
$sEchoCheck = ! empty ( $pid [ 1 ]) ? ( int ) $pid [ 1 ] : 0 ;
$pid = reset ( $pid );
if ( $sEchoCheck < $sEcho && $pid != $this -> app -> DB -> connection -> thread_id ){
$this -> app -> DB -> kill ( $pid );
}
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $uid );
}
//$sQuery = $sWhere." ".$sOrder." ". $sLimit;
//$rResult = $this->app->DB->Query( $sQuery);
$sQuery = "
$tmp
$sWhere
$groupby
$sOrder
$sLimit
" ;
if ( $fastcount || $limiert ){
$sQuery = str_replace ( 'SQL_CALC_FOUND_ROWS' , '' , $sQuery );
}
$jsarray = null ;
if ( isset ( $this -> app -> stringcleaner )) {
$jsarray = $this -> app -> stringcleaner -> CheckSQLHtml ( $sQuery );
}
if ( $this -> app -> erp -> Firmendaten ( 'schnellsuchecount' ) && strpos ( $sQuery , 'SQL_CALC_FOUND_ROWS' )){
$YUIs [ 'count' ] = '' ;
}
if ( isset ( $YUIs [ 'onequeryperuser' ]) && $YUIs [ 'onequeryperuser' ]) {
$killId = $this -> app -> User -> GetParameter ( 'tablesearch_' . $cmd . '_id2' );
$killId = explode ( '|' , $killId );
$sEchoCheck = ! empty ( $killId [ 1 ]) ? ( int ) $killId [ 1 ] : 0 ;
$killId = reset ( $killId );
if ( ! empty ( $killId ) && $sEchoCheck < $sEcho ) {
$this -> app -> DB -> kill ( $killId );
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $cmd . '_id2' );
}
$killId = $this -> app -> User -> GetParameter ( 'tablesearch_' . $cmd . '_id' );
$killId = explode ( '|' , $killId );
$sEchoCheck = ! empty ( $killId [ 1 ]) ? ( int ) $killId [ 1 ] : 0 ;
$killId = reset ( $killId );
if ( ! empty ( $killId ) && $sEchoCheck < $sEcho ) {
$this -> app -> DB -> kill ( $killId );
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $cmd . '_id' );
}
//TODO Alte Prozesse killen
$_sql = substr ( $this -> app -> YUI -> CodiereSQLForOneQuery ( $tmp , $cmd ), 0 , 100 );
$processlist = $this -> app -> DB -> SelectArr ( 'SHOW PROCESSLIST' );
2022-06-10 11:28:28 +02:00
if (( ! empty ( $processlist ) ? count ( $processlist ) : 0 ) > 1 ) {
2022-05-24 21:50:35 +02:00
foreach ( $processlist as $v ) {
if ( $v [ 'Time' ] > 1 && $v [ 'db' ] == $this -> app -> Conf -> WFdbname && $v [ 'User' ] == $this -> app -> Conf -> WFdbuser && substr ( $v [ 'Info' ], 0 , 100 ) == $_sql ) {
$this -> app -> DB -> kill ( $v [ 'Id' ]);
}
}
}
$this -> app -> User -> SetParameter ( 'tablesearch_' . $cmd . '_id' , $this -> app -> DB -> connection -> thread_id );
}
$maxExecutionTime = 300 ;
if ( $cmd === 'report_table' ) {
$maxExecutionTime = 30 ;
}
$useasync = function_exists ( 'mysqli_poll' );
if ( $useasync ) {
ignore_user_abort ( true );
$db2 = $this -> app -> DB -> getClone ();
$threadid = $db2 -> connection -> thread_id ;
$this -> app -> User -> SetParameter ( 'tablesearch_' . $uid , $threadid . '|' . $sEcho );
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> SetParameter ( 'tablesearch_' . $cmd . '_id2' , $db2 -> connection -> thread_id . '|' . $sEcho );
}
$startExecutionTime = microtime ( true );
$rResult = $db2 -> Query ( $sQuery , true );
$all_links = array ( $db2 -> connection );
$processed = 0 ;
do {
echo ' ' ;
flush ();
ob_flush ();
if ( connection_aborted () == 1
|| ( $maxExecutionTime > 0 && microtime ( true ) - $startExecutionTime > $maxExecutionTime )
) {
$this -> app -> DB -> kill ( $threadid );
if (( int ) $this -> app -> User -> GetParameter ( 'tablesearch_' . $uid ) == $threadid ) {
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $uid );
}
exit ;
}
$links = $errors = $reject = array ();
foreach ( $all_links as $link ) {
$links [] = $errors [] = $reject [] = $link ;
}
if ( ! mysqli_poll ( $links , $errors , $reject , 0 , 50000 )) {
continue ;
}
foreach ( $links as $link ) {
if ( $rResult = $link -> reap_async_query ()) {
break 2 ;
};
$processed ++ ;
}
2022-06-10 11:28:28 +02:00
} while ( $processed < ( ! empty ( $all_links ) ? count ( $all_links ) : 0 ));
2022-05-24 21:50:35 +02:00
}
else {
$rResult = $this -> app -> DB -> Query ( $sQuery );
}
if ( $cmd === 'adresse_brief' && $this -> app -> DB -> error () && strpos ( $this -> app -> DB -> error (), 'COLLATION \'utf8_general_ci\' is not valid for CHARACTER' ) !== false )
{
if (( String ) $this -> app -> erp -> GetKonfiguration ( 'adresse_crm_collateerror' ) === '' ){
$this -> app -> erp -> SetKonfigurationValue ( 'adresse_crm_collateerror' , 1 );
}
} elseif ( $cmd === 'adresse_brief' && $this -> app -> DB -> error () && $this -> app -> erp -> GetKonfiguration ( 'adresse_crm_collateerror' ))
{
$this -> app -> erp -> SetKonfigurationValue ( 'adresse_crm_collateerror' , 0 );
}
$iTotal = 0 ;
if ( ! $limiert ) {
if ( $fastcount ) {
$sQuery = " $fastcount $sWhere " ;
if ( $useasync ) {
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> SetParameter ( 'tablesearch_' . $cmd . '_id2' , $db2 -> connection -> thread_id . '|' . $sEcho );
}
$startExecutionTime = microtime ( true );
$rResultFilterTotal = $db2 -> Query ( $sQuery , true );
$threadid = $db2 -> connection -> thread_id ;
$all_links = array ( $db2 -> connection );
$processed = 0 ;
do {
echo ' ' ;
flush ();
ob_flush ();
if ( connection_aborted () == 1 || (
$maxExecutionTime > 0 && microtime ( true ) - $startExecutionTime > $maxExecutionTime )
){
$this -> app -> DB -> kill ( $threadid );
exit ;
}
$links = $errors = $reject = array ();
foreach ( $all_links as $link ) {
$links [] = $errors [] = $reject [] = $link ;
}
if ( ! mysqli_poll ( $links , $errors , $reject , 0 , 50000 )){
continue ;
}
foreach ( $links as $link ) {
if ( $rResultFilterTotal = $link -> reap_async_query ()){
break 2 ;
};
$processed ++ ;
}
2022-06-10 11:28:28 +02:00
} while ( $processed < ( ! empty ( $all_links ) ? count ( $all_links ) : 0 ));
2022-05-24 21:50:35 +02:00
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $cmd . '_id2' );
}
}
else {
$rResultFilterTotal = $this -> app -> DB -> Query ( $sQuery );
}
$aResultFilterTotal = $this -> app -> DB -> Fetch_Row ( $rResultFilterTotal );
$this -> app -> DB -> free ( $rResultFilterTotal );
$iFilteredTotal = $aResultFilterTotal [ 0 ];
}
else {
$sQuery = '
SELECT FOUND_ROWS ()
' ;
if ( $useasync ) {
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> SetParameter ( 'tablesearch_' . $cmd . '_id2' , $db2 -> connection -> thread_id . '|' . $sEcho );
}
$startExecutionTime = microtime ( true );
$rResultFilterTotal = $db2 -> Query ( $sQuery , true );
$threadid = $db2 -> connection -> thread_id ;
$all_links = array ( $db2 -> connection );
$processed = 0 ;
do {
echo ' ' ;
flush ();
ob_flush ();
if ( connection_aborted () == 1 || (
$maxExecutionTime > 0 && microtime ( true ) - $startExecutionTime > $maxExecutionTime )
) {
$this -> app -> DB -> kill ( $threadid );
exit ;
}
$links = $errors = $reject = array ();
foreach ( $all_links as $link ) {
$links [] = $errors [] = $reject [] = $link ;
}
if ( ! mysqli_poll ( $links , $errors , $reject , 0 , 50000 )){
continue ;
}
foreach ( $links as $link ) {
if ( $rResultFilterTotal = $link -> reap_async_query ()){
break 2 ;
};
$processed ++ ;
}
2022-06-10 11:28:28 +02:00
} while ( $processed < ( ! empty ( $all_links ) ? count ( $all_links ) : 0 ));
2022-05-24 21:50:35 +02:00
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $cmd . '_id2' );
}
}
else {
$rResultFilterTotal = $this -> app -> DB -> Query ( $sQuery );
}
$aResultFilterTotal = $this -> app -> DB -> Fetch_Row ( $rResultFilterTotal );
$this -> app -> DB -> free ( $rResultFilterTotal );
$iFilteredTotal = $aResultFilterTotal [ 0 ];
}
}
if ( $useasync ) {
echo ' ' ;
flush ();
ob_flush ();
if ( connection_aborted () == 1 ) {
if ( ! empty ( $db2 )) {
$db2 -> Close ();
}
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $cmd . '_id' );
}
$this -> app -> DB -> Close ();
exit ;
}
}
/*
$sQuery = "
SELECT COUNT ( id )
FROM artikel
" ;
*/
//$sQuery = $this->app->YUI->TableSearch("",$cmd,"count","","",$frommodule, $fromclass);
if ( ! $limiert ){
$sQuery = $YUIs [ 'count' ];
if (( String ) $sQuery !== '' ) {
$rResultTotal = $this -> app -> DB -> Query ( $sQuery );
$aResultTotal = $this -> app -> DB -> Fetch_Array ( $rResultTotal );
$this -> app -> DB -> free ( $rResultTotal );
$iTotal = ( int ) $aResultTotal [ 0 ];
}
else {
$iTotal = ! empty ( $iFilteredTotal ) ? ( int ) $iFilteredTotal : 0 ;
}
$this -> app -> erp -> CheckBegrenzungLiveTabelle ( $cmd , $iTotal , microtime ( true ) - $starttime );
}
elseif ( ! empty ( $YUIs [ 'cached_count' ])) {
$aResultTotal = $this -> app -> DB -> SelectArrCache ( $YUIs [ 'cached_count' ], 180 , 'tablesearch_count' );
if ( ! empty ( $aResultTotal )) {
$iTotal = reset ( $aResultTotal );
$iTotal = reset ( $iTotal );
}
}
if ( method_exists ( $this -> app -> erp , 'CheckSchnellsuche' )) {
$this -> app -> erp -> CheckSchnellsuche ( $cmd , $iTotal , microtime ( true ) - $starttime );
}
//$heading = count($this->app->YUI->TableSearch("",$cmd,"heading","","",$frommodule, $fromclass));
$heading = count ( $YUIs [ 'heading' ]);
//$menu = $this->app->YUI->TableSearch("",$cmd,"menu","","",$frommodule, $fromclass);
$menu = $this -> app -> Tpl -> ParseTranslation ( $YUIs [ 'menu' ]);
$sOutput2 = '' ;
$rowc = 0 ;
while ( $aRow = $this -> app -> DB -> Fetch_Row ( $rResult )) {
$rowc ++ ;
if ( ! $limiert || ( $rowc <= $iDisplayLength )) {
$sOutput2 .= '[' ;
for ( $i = 1 ; $i < $heading ; $i ++ ) {
/* if ( strpos ( $aRow [ $i ], '<' ) !== false ) //30.07.2018 Bruno Entfernt wegen fehlerhaften Entfernen von Tags
{
if ( $jsarray && isset ( $jsarray [ $i ]) && ! $jsarray [ $i ])
{
$aRow [ $i ] = strip_tags ( $aRow [ $i ]);
} elseif ( isset ( $jsarray [ $i ]) && 1 == $jsarray [ $i ])
{
$aRow [ $i ] = $this -> app -> stringcleaner -> xss_clean ( $aRow [ $i ], false );
}
} */
$aRow [ $i ] = $this -> EntferneSteuerzeichen ( trim ( str_replace ( " ' " , ''' , $aRow [ $i ])));
$aRow [ $i ] = str_replace ( " \r " , '' , $aRow [ $i ]);
$aRow [ $i ] = str_replace ( " \n " , '' , $aRow [ $i ]);
$sOutput2 .= '"' . addslashes ( $aRow [ $i ]) . '",' ;
}
$sOutput2 .= '"' . addslashes ( str_replace ( '%value%' , $aRow [ $i ], $menu )) . '"' ;
$sOutput2 .= '],' ;
}
}
if ( $limiert ) {
$sOutput = '{' ;
$sOutput .= '"sEcho": ' . ( int ) $sEcho . ', ' ;
$sOutput .= '"iTotalRecords": ' . ( ! empty ( $iTotal ) ? $iTotal : $rowc + ( int ) $iDisplayStart ) . ', ' ;
$sOutput .= '"iTotalDisplayRecords": ' . ( $rowc + ( int ) $iDisplayStart ) . ', ' ;
$sOutput .= '"aaData": [ ' ;
}
else {
$sOutput = '{' ;
$sOutput .= '"sEcho": ' . ( int ) $sEcho . ', ' ;
$sOutput .= '"iTotalRecords": ' . $iTotal . ', ' ;
$sOutput .= '"iTotalDisplayRecords": ' . $iFilteredTotal . ', ' ;
$sOutput .= '"aaData": [ ' ;
}
$sOutput .= $sOutput2 ;
$sOutput = substr_replace ( $sOutput , " " , - 1 );
$sOutput .= '] }' ;
$sOutput = str_replace ( " \t " , '' , $sOutput );
// Eventuell deutsches Datumsformat in allen Tabellen und sortieren geht auch
//$repl = preg_replace('~\"([1-2]{1}\d{3})-(\d{2})-(\d{2})\"~', '"<!--$1-%s-%3--> $3.$2.$1"', $sOutput);
//$repl = preg_replace('~\"([1-2]{1}\d{3})-(\d{2})-(\d{2})\s+~', '"<!--$1-%s-%3--> $3.$2.$1 ', $repl);
//$repl = preg_replace('~\s+([1-2]{1}\d{3})-(\d{2})-(\d{2})\s+~', ' <!--$1-%s-%3--> $3.$2.$1 ', $repl);
//$repl = preg_replace('~\"(\d{4})-(\d{2})-(\d{2})\"~', '"<!--$1-%s-%3-->$3.$2.$1"', $sOutput);
$repl = $sOutput ;
$repl = $this -> app -> erp -> ClearDataBeforeOutput ( $repl );
$repl = json_encode ( json_decode ( $repl ));
echo $repl ;
if ( ! empty ( $YUIs [ 'onequeryperuser' ])) {
$this -> app -> User -> deleteParameter ( 'tablesearch_' . $cmd . '_id' );
}
$this -> app -> erp -> ExitWawi ();
}
/**
* @ return void
*/
public function AjaxLiveTable () : void
{
/** @var Request request */
$request = $this -> app -> Container -> get ( 'Request' );
$tableName = $request -> get -> get ( 'srctable' , '' );
$module = $request -> get -> get ( 'srcmodule' , '' );
$className = $request -> get -> get ( 'srcclass' , '' );
$className = StringUtil :: toTitleCase ( $className , '-' );
$this -> app -> BuildNavigation = false ;
if ( empty ( $tableName )) {
$this -> app -> Tpl -> Set (
'MESSAGE' ,
'<div class="error">Fehler: Tabelle ist nicht spezifiziert.</div>'
);
$this -> app -> Tpl -> Parse ( 'PAGE' , 'livetable_async.tpl' );
return ;
}
if (( empty ( $module ) xor empty ( $className ))) {
$this -> app -> Tpl -> Set (
'MESSAGE' ,
'<div class="error">Fehler: Tabelle kann nicht gefunden werden.</div>'
);
$this -> app -> Tpl -> Parse ( 'PAGE' , 'livetable_async.tpl' );
return ;
}
if ( ! empty ( $module ) && ! str_ends_with ( strtolower ( $module ), '.php' )) {
$module .= '.php' ;
}
$this -> app -> YUI -> TableSearch ( 'LIVETABLE' , $tableName , 'show' , '' , '' , $module , $className );
$this -> app -> Tpl -> Parse ( 'PAGE' , 'livetable_async.tpl' );
}
protected function EntferneSteuerzeichen ( $string )
{
$len = strlen ( $string );
$out = '' ;
for ( $i = 0 ; $i < $len ; $i ++ ) {
$ord = ord ( $string [ $i ]);
if ( $ord != 127 && ( $ord > 31 || $ord == 13 || $ord == 10 || $ord == 9 )) {
$out .= $string [ $i ];
}
}
return $out ;
}
protected function fnColumnToFieldPosition ( $i )
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
$findcols = $this -> app -> YUI -> TablePositionSearch ( '' , $cmd , 'findcols' );
return ! empty ( $findcols [ $i ]) ? $findcols [ $i ] : 0 ;
}
protected function fnColumnToField ( $i )
{
$cmd = $this -> app -> Secure -> GetGET ( 'cmd' );
$frommodule = $this -> app -> Secure -> GetGET ( 'frommodule' );
$fromclass = $this -> app -> Secure -> GetGET ( 'fromclass' );
$findcols = $this -> app -> YUI -> TableSearch ( '' , $cmd , 'findcols' , '' , '' , $frommodule , $fromclass );
return $findcols [ $i ];
}
}