mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-24 13:40:29 +01:00
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)
|
||||
{
|
||||
|
||||
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(
|
||||
'<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 = [];
|
||||
@ -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 = '<option value="teillieferung">Teilauftrag erstellen</option>';
|
||||
}
|
||||
|
||||
if($status==='freigegeben') {
|
||||
$alleartikelreservieren = "<option value=\"reservieren\">alle Artikel reservieren</option>";
|
||||
|
||||
@ -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."<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">
|
||||
<ul>
|
||||
<li><a href="#tabs-1">[TABTEXT]</a></li>
|
||||
</ul>
|
||||
<!-- ende gehort zu tabview -->
|
||||
|
||||
<!-- erstes tab -->
|
||||
<div id="tabs-1">
|
||||
<div class="info">Teillieferung: Auswahl der Artikel für eine Teillieferung. Bestimmen Sie welche Artikel als Teillieferung vorab versendet werden sollen,<br>
|
||||
und wann die Rechnung versendet wird (bei aktueller oder nächster Lieferung).</div>
|
||||
<br>
|
||||
<form action="" method="post">
|
||||
[MESSAGE]
|
||||
[TAB1]
|
||||
[TAB1NEXT]
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- tab view schließen -->
|
||||
<div id="tabs-1">
|
||||
<div class="info">[INFOTEXT]</div>
|
||||
<br>
|
||||
<form action="" method="post">
|
||||
[MESSAGE]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-14 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
[TABLE]
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user