Teilauftrag WIP
This commit is contained in:
parent
84eaf1b495
commit
35f6532520
|
|
@ -40,6 +40,7 @@ class Auftrag extends GenAuftrag
|
||||||
*/
|
*/
|
||||||
public function TableSearch($app, $name, $erlaubtevars)
|
public function TableSearch($app, $name, $erlaubtevars)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch($name)
|
switch($name)
|
||||||
{
|
{
|
||||||
case 'auftraege':
|
case 'auftraege':
|
||||||
|
|
@ -711,6 +712,55 @@ class Auftrag extends GenAuftrag
|
||||||
|
|
||||||
|
|
||||||
break;
|
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(
|
||||||
|
'<input type = \"number\" min=\"0\" max=\"',
|
||||||
|
ap.menge,
|
||||||
|
'\" name=\"teilmenge_',
|
||||||
|
ap.id,
|
||||||
|
'\"',
|
||||||
|
' value=\"',
|
||||||
|
|
||||||
|
'\">',
|
||||||
|
'</input>'
|
||||||
|
)";
|
||||||
|
|
||||||
|
|
||||||
|
// .'(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 = [];
|
$erg = [];
|
||||||
|
|
@ -765,7 +815,7 @@ class Auftrag extends GenAuftrag
|
||||||
$this->app->ActionHandler("rechnung","AuftragRechnung");
|
$this->app->ActionHandler("rechnung","AuftragRechnung");
|
||||||
$this->app->ActionHandler("lieferschein","AuftragLieferschein");
|
$this->app->ActionHandler("lieferschein","AuftragLieferschein");
|
||||||
$this->app->ActionHandler("lieferscheinrechnung","AuftragLieferscheinRechnung");
|
$this->app->ActionHandler("lieferscheinrechnung","AuftragLieferscheinRechnung");
|
||||||
|
$this->app->ActionHandler("teillieferung","AuftragTeillieferung");
|
||||||
$this->app->ActionHandler("nachlieferung","AuftragNachlieferung");
|
$this->app->ActionHandler("nachlieferung","AuftragNachlieferung");
|
||||||
// $this->app->ActionHandler("versand","AuftragVersand");
|
// $this->app->ActionHandler("versand","AuftragVersand");
|
||||||
$this->app->ActionHandler("freigabe","AuftragFreigabe");
|
$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");
|
$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");
|
//$art = $this->app->DB->Select("SELECT art FROM auftrag WHERE id='$id' LIMIT 1");
|
||||||
$alleartikelreservieren = '';
|
$alleartikelreservieren = '';
|
||||||
$teillieferungen = '';
|
|
||||||
|
if ($status==='angelegt' || $status==='freigegeben') {
|
||||||
|
$teillieferungen = '<option value="teillieferung">Teilauftrag erstellen</option>';
|
||||||
|
}
|
||||||
|
|
||||||
if($status==='freigegeben') {
|
if($status==='freigegeben') {
|
||||||
$alleartikelreservieren = "<option value=\"reservieren\">alle Artikel reservieren</option>";
|
$alleartikelreservieren = "<option value=\"reservieren\">alle Artikel reservieren</option>";
|
||||||
|
|
||||||
|
|
@ -1369,9 +1423,14 @@ class Auftrag extends GenAuftrag
|
||||||
{
|
{
|
||||||
switch(cmd)
|
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 'storno':
|
||||||
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;
|
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 'teillieferung': window.location.href='index.php?module=auftrag&action=teillieferung&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 '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 '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;
|
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');
|
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."<br>");
|
||||||
|
$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."<br>");
|
||||||
|
$this->app->DB->Update($sql);
|
||||||
|
$sql = "UPDATE auftrag_position SET auftrag = $id_neu, menge = $menge_neu WHERE id = $posid_neu";
|
||||||
|
echo("---------------------------".$sql."<br>");
|
||||||
|
$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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,35 @@
|
||||||
<!-- gehort zu tabview -->
|
|
||||||
<div id="tabs">
|
<div id="tabs">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#tabs-1">[TABTEXT]</a></li>
|
<li><a href="#tabs-1">[TABTEXT]</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<!-- ende gehort zu tabview -->
|
<div id="tabs-1">
|
||||||
|
<div class="info">[INFOTEXT]</div>
|
||||||
<!-- erstes tab -->
|
<br>
|
||||||
<div id="tabs-1">
|
<form action="" method="post">
|
||||||
<div class="info">Teillieferung: Auswahl der Artikel für eine Teillieferung. Bestimmen Sie welche Artikel als Teillieferung vorab versendet werden sollen,<br>
|
[MESSAGE]
|
||||||
und wann die Rechnung versendet wird (bei aktueller oder nächster Lieferung).</div>
|
<div class="row">
|
||||||
<br>
|
<div class="row-height">
|
||||||
<form action="" method="post">
|
<div class="col-xs-14 col-md-12 col-md-height">
|
||||||
[MESSAGE]
|
<div class="inside inside-full-height">
|
||||||
[TAB1]
|
<fieldset>
|
||||||
[TAB1NEXT]
|
[TABLE]
|
||||||
</form>
|
</fieldset>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
<!-- tab view schließen -->
|
<div class="col-xs-14 col-md-2 col-md-height">
|
||||||
|
<div class="inside inside-full-height">
|
||||||
|
<fieldset>
|
||||||
|
<table width="100%" border="0" class="mkTableFormular">
|
||||||
|
<legend>{|Aktionen|}</legend>
|
||||||
|
<tr><td><button name="submit" id="speichern" value="speichern" class="ui-button-icon" style="width:100%";>Teilauftrag erzeugen</button></td></tr>
|
||||||
|
<tr><td><button name="submit" id="abbrechen" value="abbrechen" class="ui-button-icon" style="width:100%";>Vorgang abbrechen</button></td></tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue