diff --git a/phpwf/plugins/class.yui.php b/phpwf/plugins/class.yui.php index c35e31c5..58a89a4d 100644 --- a/phpwf/plugins/class.yui.php +++ b/phpwf/plugins/class.yui.php @@ -3691,6 +3691,43 @@ class YUI { END, '')"; } + function IconsSQL_lieferung() { + + $lieferschein_kein = "app->Conf->WFconf['defaulttheme']}/images/summe_stop.png\" title=\"Kein Lieferschein\" border=\"0\" style=\"margin-right:1px\">"; + $lieferschein_ohne_pos = "app->Conf->WFconf['defaulttheme']}/images/summe_go.png\" title=\"Lieferschein ohne Positionen\" border=\"0\" style=\"margin-right:1px\">"; + $lieferschein_voll = "app->Conf->WFconf['defaulttheme']}/images/lagergo.png\" title=\"Lieferschein vollständig\" border=\"0\" style=\"margin-right:1px\">"; + $lieferschein_teil = "app->Conf->WFconf['defaulttheme']}/images/lagergo_stop.png\" title=\"Lieferschein teilweise\" border=\"0\" style=\"margin-right:1px\">"; + + $versendet = "app->Conf->WFconf['defaulttheme']}/images/liefersperrego.png\" title=\"Versendet\" border=\"0\" style=\"margin-right:1px\">"; + $versendet_nicht = "app->Conf->WFconf['defaulttheme']}/images/liefersperrestop.png\" title=\"Nicht versendet\" border=\"0\" style=\"margin-right:1px\">"; + $versendet_teil = "app->Conf->WFconf['defaulttheme']}/images/liefersperregostop.png\" title=\"Teilweise versendet\" border=\"0\" style=\"margin-right:1px\">"; + + $ausgeliefert = "app->Conf->WFconf['defaulttheme']}/images/delivery_ok.png\" style=\"margin-right:1px\" title=\"Ausgeliefert\" border=\"0\">"; + $ausgeliefert_nicht = "app->Conf->WFconf['defaulttheme']}/images/delivery.png\" style=\"margin-right:1px\" title=\"Nicht ausgeliefert\" border=\"0\">"; + $ausgeliefert_teil = "app->Conf->WFconf['defaulttheme']}/images/delivery_pending.png\" style=\"margin-right:1px\" title=\"Teilweise ausgeliefert\" border=\"0\">"; + + $storno = "app->Conf->WFconf['defaulttheme']}/images/storno.png\" style=\"margin-right:1px\" title=\"Storniert\" border=\"0\">"; + + return "CONCAT( + '
', + CASE + WHEN vmenge >= lmenge THEN '$lieferschein_voll' + WHEN vmenge < lmenge AND vmenge <> 0 THEN '$lieferschein_teil' + ELSE '$lieferschein_kein' + END, + CASE + WHEN alle_abgeschlossen THEN '$versendet' + WHEN alle_versendet THEN '$versendet' + WHEN eins_versendet THEN '$versendet_teil' + ELSE '$versendet_nicht' + END, + CASE + WHEN alle_abgeschlossen THEN '$ausgeliefert' + WHEN eins_abgeschlossen THEN '$ausgeliefert_teil' + ELSE '$ausgeliefert_nicht' + END, + '
')"; + } function TablePositionSearch($parsetarget, $name, $callback = "show", $gener) { diff --git a/www/pages/ajax.php b/www/pages/ajax.php index 6587512f..8faae048 100644 --- a/www/pages/ajax.php +++ b/www/pages/ajax.php @@ -2482,7 +2482,7 @@ select a.kundennummer, (SELECT name FROM adresse a2 WHERE a2.kundennummer = a.ku $adresse = $this->app->DB->Select("SELECT id FROM adresse WHERE kundennummer = '".$kunde[0]."' AND kundennummer <> '' LIMIT 1"); } $beleg = str_replace('kunden','',$filtername); - $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 = 'angelegt' OR status = 'freigegeben') + $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')) ".($adresse?" AND adresse = '$adresse' ":'')." ".$this->app->erp->ProjektRechte('projekt')." ORDER by belegnr LIMIT 20"); $carr = !empty($arr)?count($arr):0; diff --git a/www/pages/content/versandpakete_lieferscheine.tpl b/www/pages/content/versandpakete_lieferscheine.tpl deleted file mode 100644 index 394c103a..00000000 --- a/www/pages/content/versandpakete_lieferscheine.tpl +++ /dev/null @@ -1,10 +0,0 @@ -
- -
- [MESSAGE] - [TAB1] - [TAB1NEXT] -
-
diff --git a/www/pages/versandpakete.php b/www/pages/versandpakete.php index aa61bc59..3a2d4f81 100644 --- a/www/pages/versandpakete.php +++ b/www/pages/versandpakete.php @@ -38,7 +38,7 @@ class Versandpakete { $this->app->ActionHandler("create", "versandpakete_edit"); // This automatically adds a "New" button $this->app->ActionHandler("edit", "versandpakete_edit"); $this->app->ActionHandler("add", "versandpakete_add"); - $this->app->ActionHandler("lieferscheine", "versandpakete_lieferscheine"); + $this->app->ActionHandler("pakete", "versandpakete_pakete"); $this->app->ActionHandler("stapelverarbeitung", "versandpakete_stapelverarbeitung"); $this->app->ActionHandler("paketmarke", "versandpakete_paketmarke"); $this->app->ActionHandler("delete", "versandpakete_delete"); @@ -63,11 +63,12 @@ class Versandpakete { // columns that are aligned right (numbers etc) // $alignright = array(4,5,6,7,8); - $findcols = array('id','id','id','datum'); - $searchsql = array('v.versand', 'v.nr', 'v.tracking', 'v.versender', 'v.gewicht', 'v.bemerkung', 'v.status'); + $findcols = array('id','id','id','datum','name','if (lieferscheine IS NULL, lieferscheine_ohne_pos, lieferscheine)','versandart','tracking','lmenge','vmenge','gewicht','versender','bemerkung','status','id','id'); + $searchsql = array('name', 'if (lieferscheine IS NULL, lieferscheine_ohne_pos, lieferscheine)', 'tracking', 'bemerkung'); $defaultorder = 1; $defaultorderdesc = 0; + $aligncenter = [9,10,11]; $dropnbox = "'' AS `open`, CONCAT('') AS `auswahl`"; @@ -103,9 +104,9 @@ class Versandpakete { id, $dropnbox, id, - datum, - if (lieferscheine IS NULL,alop_name,name), - if (lieferscheine IS NULL, lieferscheine_ohne_pos, lieferscheine), + datum_format, + if (lieferscheine IS NULL,alop_name,name) as name, + if (lieferscheine IS NULL, lieferscheine_ohne_pos, lieferscheine) as belegnr, versandart, tracking_link, lmenge, @@ -115,12 +116,14 @@ class Versandpakete { bemerkung, status, ".$app->YUI->IconsSQL_versandpaket().", - id + id, + datum FROM ( SELECT v.id, - ".$app->erp->FormatDateTimeShort('v.datum')." AS datum, + ".$app->erp->FormatDateShort('v.datum')." AS datum_format, + v.datum, a.name, alop.name alop_name, GROUP_CONCAT(DISTINCT ".$app->erp->ConcatSQL($lieferschein_link)." SEPARATOR ', ') as lieferscheine, @@ -153,7 +156,7 @@ class Versandpakete { ) temp "; - $where = "status IN ('neu', 'versendet')"; + $where = "((status IN ('neu', 'versendet')"; // Toggle filters $app->Tpl->Add('JQUERYREADY', "$('#geschlossene').click( function() { fnFilterColumn1( 0 ); } );"); $app->Tpl->Add('JQUERYREADY', "$('#stornierte').click( function() { fnFilterColumn2( 0 ); } );"); @@ -179,15 +182,17 @@ class Versandpakete { $more_data1 = $app->Secure->GetGET("more_data1"); if ($more_data1 == 1) { - $where .= " OR status IN ('abgeschlossen')"; + $where .= " OR status IN ('abgeschlossen'))"; } else { + $where .= " )"; } $more_data2 = $app->Secure->GetGET("more_data2"); if ($more_data2 == 1) { - $where .= " OR status IN ('storniert')"; + $where .= " OR status IN ('storniert'))"; } else { + $where .= " )"; } // END Toggle filters @@ -199,14 +204,14 @@ class Versandpakete { $allowed['versandpakete_lieferscheine'] = array('lieferscheine'); - $heading = array('','', 'Lieferschein', 'Adresse','Menge','Menge in Versandpaketen', 'Paket erstellen'); - $width = array('1%','1%', '10%', '10%', '10%', '10%' ,'10%', '1%'); // Fill out manually later + $heading = array('', '', 'Lieferschein', 'Adresse','Menge','Menge in Versandpaketen','Monitor','Paket erstellen'); + $width = array( '1%','1%', '10%', '10%', '10%', '10%' ,'1%', '1%'); // Fill out manually later // columns that are aligned right (numbers etc) // $alignright = array(4,5,6,7,8); - $findcols = array('id','id'); - $searchsql = array('v.versand', 'v.nr', 'v.tracking', 'v.versender', 'v.gewicht', 'v.bemerkung', 'v.status'); + $findcols = array('id','id','belegnr','name','lmenge','vmenge','(alle_versendet+alle_abgeschlossen*2)','id'); + $searchsql = array('belegnr','name'); $defaultorder = 1; $defaultorderdesc = 0; @@ -215,40 +220,110 @@ class Versandpakete { $menucol = 1; $moreinfoaction = "lieferschein"; $moreinfo = true; // Allow drop down details - + $aligncenter = [5,6,7,8]; + $menu = "Conf->WFconf['defaulttheme']}/images/forward.svg\" border=\"0\">"; + $sql_lieferschein_position = " + SELECT + l.id, + l.belegnr, + l.name, + lp.menge lmenge, + SUM(vlp.menge) vmenge, + BIT_OR(COALESCE(v.status,0) IN ('versendet')) AS eins_versendet, + BIT_AND(COALESCE(v.status,0) IN ('versendet')) AS alle_versendet, + BIT_OR(COALESCE(v.status,0) IN ('abgeschlossen')) AS eins_abgeschlossen, + BIT_AND(COALESCE(v.status,0) IN ('abgeschlossen')) AS alle_abgeschlossen + FROM + lieferschein l + INNER JOIN lieferschein_position lp ON lp.lieferschein = l.id + INNER JOIN artikel a ON lp.artikel = a.id + LEFT JOIN versandpaket_lieferschein_position vlp ON vlp.lieferschein_position = lp.id + LEFT JOIN versandpakete v ON vlp.versandpaket = v.id + WHERE + l.belegnr <> '' AND + (v.status <> 'storniert' OR v.status IS NULL) AND + a.lagerartikel + GROUP BY lp.id + "; + + $sql_lieferschein = " + SELECT + id, + belegnr, + name, + SUM(lmenge) lmenge, + SUM(COALESCE(vmenge,0)) vmenge, + eins_versendet, + alle_versendet, + eins_abgeschlossen, + alle_abgeschlossen + FROM ( + ".$sql_lieferschein_position." + ) lp + GROUP BY id + "; + $sql = " SELECT SQL_CALC_FOUND_ROWS id, ".$dropnbox.", CONCAT('',belegnr,''), name, - ".$app->erp->FormatMenge("SUM(lmenge)")." as lmenge, - ".$app->erp->FormatMenge("SUM(vmenge)")." as vmenge, - id - FROM - ( - SELECT - l.id, - l.belegnr, - l.name, - lp.menge lmenge, - SUM(vlp.menge) vmenge - FROM - lieferschein l - INNER JOIN lieferschein_position lp ON lp.lieferschein = l.id - LEFT JOIN versandpaket_lieferschein_position vlp ON vlp.lieferschein_position = lp.id - LEFT JOIN versandpakete v ON vlp.versandpaket = v.id - WHERE - l.belegnr <> '' AND l.versendet <> 1 AND (v.status IS NULL OR (v.status != 'storniert' AND v.status <> 'abgeschlossen')) - GROUP BY lp.id - ) l_mengen + ".$app->erp->FormatMenge("lmenge").", + ".$app->erp->FormatMenge("vmenge").", + ".$app->YUI->IconsSQL_lieferung().", + id, + alle_abgeschlossen + FROM ( + ".$sql_lieferschein." + ) l "; $where = ""; + + // Toggle filters + $app->Tpl->Add('JQUERYREADY', "$('#geschlossene').click( function() { fnFilterColumn1( 0 ); } );"); + $app->Tpl->Add('JQUERYREADY', "$('#unterwegs').click( function() { fnFilterColumn2( 0 ); } );"); + + for ($r = 1;$r <= 2;$r++) { + $app->Tpl->Add('JAVASCRIPT', ' + function fnFilterColumn' . $r . ' ( i ) + { + if(oMoreData' . $r . $name . '==1) + oMoreData' . $r . $name . ' = 0; + else + oMoreData' . $r . $name . ' = 1; + + $(\'#' . $name . '\').dataTable().fnFilter( + \'\', + i, + 0,0 + ); + } + '); + } + + + $more_data1 = $app->Secure->GetGET("more_data1"); + if ($more_data1 == 1) { + $where = "1"; + } else { + $where = "(!alle_abgeschlossen)"; + } + $more_data2 = $app->Secure->GetGET("more_data2"); + if ($more_data2 == 1) { + $where .= " AND (alle_versendet)"; + } else { + } + + // END Toggle filters + + + // $count = "SELECT count(DISTINCT id) FROM versandpakete v WHERE $where"; - $groupby = "GROUP BY id"; + $groupby = ""; break; case "versandpakete_paketinhalt_list": @@ -257,12 +332,12 @@ class Versandpakete { $allowed['versandpakete_paketinhalt_list'] = array('list'); $heading = array('Lieferschein','Pos', 'Artikel', 'Artikel-Nr.','Menge Lieferschein', 'Menge Paket', 'Menü',''); - $width = array('10%','10%','10%'); // Fill out manually later + $width = array( '10%', '10%', '10%', '10%', '1%', '1%', '1%', '1%'); // Fill out manually later // columns that are aligned right (numbers etc) // $alignright = array(4,5,6,7,8); - $findcols = array('lp.id','v.id','v.id','a.name','l.belegnr','v.tracking', 'v.versender', 'v.gewicht', 'v.bemerkung', 'v.status'); + $findcols = array('l.belegnr','sort','a.name_de','a.nummer','lp.menge', 'vlp.menge', 'l.belegnr', 'l.belegnr'); $searchsql = array('v.versand', 'v.nr', 'v.tracking', 'v.versender', 'v.gewicht', 'v.bemerkung', 'v.status'); $defaultorder = 1; @@ -278,7 +353,8 @@ class Versandpakete { // $menu = "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; $menu = ""; - $menucol = 6; + $menucol = 6; + $aligncenter = [5,6,7]; $lieferschein_link = array( 'erp->ConcatSQL($paket_link)." SEPARATOR ', ') as pakete, vlp.id FROM lieferschein l - INNER JOIN lieferschein_position lp ON - lp.lieferschein = l.id - INNER JOIN artikel a ON - lp.artikel = a.id + INNER JOIN lieferschein_position lp ON lp.lieferschein = l.id + INNER JOIN artikel a ON lp.artikel = a.id LEFT JOIN versandpaket_lieferschein_position vlp ON vlp.lieferschein_position = lp.id "; - $where = "l.id =".$lieferschein_id; + $where = "l.id =".$lieferschein_id." AND a.lagerartikel"; // $count = "SELECT count(DISTINCT id) FROM versandpakete v WHERE $where"; // $groupby = "GROUP BY lp.id"; $groupby = "GROUP BY lp.id"; @@ -387,12 +462,12 @@ class Versandpakete { } function versandpakete_menu() { - $this->app->erp->MenuEintrag("index.php?module=versandpakete&action=list", "Übersicht"); - $this->app->erp->MenuEintrag("index.php?module=versandpakete&action=lieferscheine", "Offene Lieferscheine"); + $this->app->erp->MenuEintrag("index.php?module=versandpakete&action=list", "Lieferungen"); + $this->app->erp->MenuEintrag("index.php?module=versandpakete&action=pakete", "Versandpakete"); $this->app->erp->MenuEintrag("index.php?module=versandpakete&action=create", "Neu anlegen"); } - function versandpakete_list() { + function versandpakete_pakete() { $this->versandpakete_menu(); // Status select $options_text = ""; @@ -426,10 +501,10 @@ class Versandpakete { $this->versandpakete_list(); } - function versandpakete_lieferscheine() { + function versandpakete_list() { $this->versandpakete_menu(); $this->app->YUI->TableSearch('TAB1', 'versandpakete_lieferscheine', "show", "", "", basename(__FILE__), __CLASS__); - $this->app->Tpl->Parse('PAGE', "versandpakete_lieferscheine.tpl"); + $this->app->Tpl->Parse('PAGE', "versandpakete_lieferungen.tpl"); } public function versandpakete_delete() { @@ -688,8 +763,9 @@ class Versandpakete { MAX(lp.menge) AS lp_menge, SUM(vlp.menge) AS v_menge FROM lieferschein_position lp - LEFT JOIN versandpaket_lieferschein_position vlp ON vlp.lieferschein_position = lp.id - WHERE lp.lieferschein = ".$lieferschein." AND lp.artikel = ".$artikel." + INNER JOIN artikel a ON lp.artikel = a.id + LEFT JOIN versandpaket_lieferschein_position vlp ON vlp.lieferschein_position = lp.id + WHERE lp.lieferschein = ".$lieferschein." AND lp.artikel = ".$artikel." AND a.lagerartikel GROUP BY lp.id "; @@ -738,8 +814,9 @@ class Versandpakete { MAX(lp.menge) AS lp_menge, SUM(vlp.menge) AS v_menge FROM lieferschein_position lp + INNER JOIN artikel a ON lp.artikel = a. id LEFT JOIN versandpaket_lieferschein_position vlp ON vlp.lieferschein_position = lp.id - WHERE lp.lieferschein = ".$lieferschein." + WHERE lp.lieferschein = ".$lieferschein." AND a.lagerartikel GROUP BY lp.id ";