diff --git a/www/pages/auftrag.php b/www/pages/auftrag.php index f55fb57e..470a4f12 100644 --- a/www/pages/auftrag.php +++ b/www/pages/auftrag.php @@ -40,6 +40,7 @@ class Auftrag extends GenAuftrag */ public function TableSearch($app, $name, $erlaubtevars) { + switch($name) { case 'auftraege': @@ -711,6 +712,55 @@ class Auftrag extends GenAuftrag break; + case 'positionen_teillieferung': + + $id = $app->Secure->GetGET('id'); + $allowed['positionen_teillieferung'] = array('list'); + $heading = array('Position','Artikel','Nr.','Menge','Lager','Teilmenge',''); + $width = array( '1%', '60%', '29%','5%','5%'); // Fill out manually later + + // columns that are aligned right (numbers etc) + // $alignright = array(4,5,6,7,8); + + $findcols = array('ap.sort','a.name_de','a.nummer','ap.menge','lager','teilmenge'); + $searchsql = array(''); + + $defaultorder = 2; + $defaultorderdesc = 0; + + $input_for_menge = "CONCAT( + '', + '' + )"; + + +// .'(SELECT TRIM(IFNULL(SUM(l.menge),0))+0 FROM lager_platz_inhalt l WHERE l.artikel=a.id) as lager' + + $sql = "SELECT SQL_CALC_FOUND_ROWS + ap.sort, + ap.sort, + a.name_de, + a.nummer," + .$this->app->erp->FormatMenge('ap.menge')."," + ."(SELECT TRIM(IFNULL(SUM(l.menge),0))+0 FROM lager_platz_inhalt l WHERE l.artikel=a.id) as lager," + .$input_for_menge + ." FROM auftrag_position ap + INNER JOIN + artikel a + ON ap.artikel = a.id"; + + $where = " ap.auftrag = $id "; + $count = "SELECT count(DISTINCT ap.id) FROM auftrag_position ap WHERE $where"; +// $groupby = ""; + + break; } $erg = []; @@ -765,7 +815,7 @@ class Auftrag extends GenAuftrag $this->app->ActionHandler("rechnung","AuftragRechnung"); $this->app->ActionHandler("lieferschein","AuftragLieferschein"); $this->app->ActionHandler("lieferscheinrechnung","AuftragLieferscheinRechnung"); - + $this->app->ActionHandler("teillieferung","AuftragTeillieferung"); $this->app->ActionHandler("nachlieferung","AuftragNachlieferung"); // $this->app->ActionHandler("versand","AuftragVersand"); $this->app->ActionHandler("freigabe","AuftragFreigabe"); @@ -1271,7 +1321,11 @@ class Auftrag extends GenAuftrag $kommissionierart = $this->app->DB->Select("SELECT kommissionierverfahren FROM projekt WHERE id='$projekt' LIMIT 1"); //$art = $this->app->DB->Select("SELECT art FROM auftrag WHERE id='$id' LIMIT 1"); $alleartikelreservieren = ''; - $teillieferungen = ''; + + if ($status==='angelegt' || $status==='freigegeben') { + $teillieferungen = ''; + } + if($status==='freigegeben') { $alleartikelreservieren = ""; @@ -1369,9 +1423,14 @@ class Auftrag extends GenAuftrag { switch(cmd) { - case 'storno': if(!confirm('Wirklich stornieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=delete&id=%value%'; break; - case 'unstorno': if(!confirm('Wirklich stornierten Auftrag wieder freigeben?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=undelete&id=%value%'; break; - case 'teillieferung': window.location.href='index.php?module=auftrag&action=teillieferung&id=%value%'; break; + case 'storno': + if(!confirm('Wirklich stornieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=delete&id=%value%'; break; + case 'unstorno': + if(!confirm('Wirklich stornierten Auftrag wieder freigeben?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=undelete&id=%value%'; + break; + case 'teillieferung': + window.location.href='index.php?module=auftrag&action=teillieferung&id=%value%'; + break; case 'anfrage': if(!confirm('Wirklich rückführen?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=anfrage&id=%value%'; break; case 'kreditlimit': if(!confirm('Wirklich Kreditlimit für diesen Auftrag freigeben?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=kreditlimit&id=%value%'; break; case 'copy': if(!confirm('Wirklich kopieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=copy&id=%value%'; break; @@ -7004,4 +7063,121 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '. header('Location: index.php?module=auftrag&action=versandzentrum'); } + /* + * Split auftrag into separate documents with submit -> do it and return jump to the new split part + */ + function AuftragTeillieferung() { + + $id = $this->app->Secure->GetGET('id'); + $this->AuftragMenu(); + $submit = $this->app->Secure->GetPOST('submit'); + + + $sql = "SELECT * from auftrag WHERE id = $id"; + $auftrag_alt = $this->app->DB->SelectArr($sql)[0]; + $msg = ""; + + if (in_array($auftrag_alt['status'],array('angelegt','freigegeben'))) { + if ($submit != '') { + $msg = ""; + switch ($submit) { + case 'speichern': + // Get parameters + + $teilmenge_input = $this->app->Secure->GetPOSTArray(); + + $teilmengen = array(); + + foreach ($teilmenge_input as $key => $value) { + + if ((strpos($key,'teilmenge_') === 0) && ($value !== '')) { + $posid = substr($key,'10'); + $teilmenge = array('posid' => $posid, 'menge' => $value); + $teilmengen[] = $teilmenge; + } + } + + if (!empty($teilmengen)) { + + // Create new auftrag + $sql = "SELECT * from auftrag WHERE id = $id"; + $auftrag_alt = $this->app->DB->SelectArr($sql)[0]; + + // Part auftrag of part auftrag -> select parent + $hauptauftrag_id = $auftrag_alt['teillieferungvon']; + if ($hauptauftrag_id != 0) { + $sql = "SELECT belegnr FROM auftrag WHERE id = $hauptauftrag_id"; + $hauptauftrag_belegnr = $this->app->DB->SelectArr($sql)[0]['belegnr']; + } else { + $hauptauftrag_id = $auftrag_alt['id']; + $hauptauftrag_belegnr = $auftrag_alt['belegnr']; + } + + $sql = "SELECT MAX(teillieferungnummer) as tpn FROM auftrag WHERE teillieferungvon = $hauptauftrag_id"; + $teillieferungnummer = $this->app->DB->SelectArr($sql)[0]['tpn']; + if (empty($teillieferungnummer) || $teillieferungnummer == 0) { + $teillieferungnummer = '1'; + } else { + $teillieferungnummer++; + } + + $belegnr_neu = $hauptauftrag_belegnr."-".$teillieferungnummer; + + $auftrag_neu = $auftrag_alt; + $auftrag_neu['id'] = null; + $auftrag_neu['belegnr'] = $belegnr_neu; + $auftrag_neu['teillieferungvon'] = $hauptauftrag_id; + $auftrag_neu['teillieferungnummer'] = $teillieferungnummer; + + $id_neu = $this->app->DB->MysqlCopyRow('auftrag','id',$id); + $sql = "UPDATE auftrag SET belegnr = '$belegnr_neu', teillieferungvon = $hauptauftrag_id, teillieferungnummer = $teillieferungnummer WHERE id = $id_neu"; + echo("---------------------------".$sql."
"); + $this->app->DB->Update($sql); + + // Adjust quantities + foreach ($teilmengen as $teilmenge) { + + $sql = "SELECT menge FROM auftrag_position WHERE id = ".$teilmenge['posid']; + $menge_alt = $this->app->DB->SelectArr($sql)[0]['menge']; + + $menge_neu = $teilmenge['menge']; + if ($menge_neu > $menge_alt) { + $menge_neu = $menge_alt; + } + + $menge_reduziert = $menge_alt-$menge_neu; + + $posid_alt = $teilmenge['posid']; + $posid_neu = $this->app->DB->MysqlCopyRow('auftrag_position','id',$posid_alt); + + $sql = "UPDATE auftrag_position SET menge = $menge_reduziert WHERE id = $posid_alt"; + echo("---------------------------".$sql."
"); + $this->app->DB->Update($sql); + $sql = "UPDATE auftrag_position SET auftrag = $id_neu, menge = $menge_neu WHERE id = $posid_neu"; + echo("---------------------------".$sql."
"); + $this->app->DB->Update($sql); + } + } + + break; + case 'abbrechen': + header('Location: index.php?module=auftrag&action=edit&id='.$id); + return; + break; + } + } // Submit + else { + $msg = "Teilauftrag: Auswahl der Artikel für den Teilauftrag."; + } + } // Status ok + else { + $msg = 'Teilauftrag in diesem Status nicht möglich.'; + } + + $this->app->Tpl->Add('INFOTEXT',$msg); + $this->app->YUI->TableSearch('TABLE','positionen_teillieferung', 'show','','',basename(__FILE__), __CLASS__); + + $this->app->Tpl->Parse('PAGE','auftrag_teillieferung.tpl'); + } // AuftragTeillieferung + } diff --git a/www/pages/content/auftrag_teillieferung.tpl b/www/pages/content/auftrag_teillieferung.tpl index 8ebf1a89..5c6e7d2b 100644 --- a/www/pages/content/auftrag_teillieferung.tpl +++ b/www/pages/content/auftrag_teillieferung.tpl @@ -1,22 +1,35 @@ -
- - - -
-
Teillieferung: Auswahl der Artikel für eine Teillieferung. Bestimmen Sie welche Artikel als Teillieferung vorab versendet werden sollen,
-und wann die Rechnung versendet wird (bei aktueller oder nächster Lieferung).
-
-
-[MESSAGE] -[TAB1] -[TAB1NEXT] -
-
- - +
+
[INFOTEXT]
+
+
+ [MESSAGE] +
+
+
+
+
+ [TABLE] +
+
+
+
+
+
+ + {|Aktionen|} + + +
+
+
+
+
+
+
+