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 @@
-