Skip to content

Commit 35f6532

Browse files
author
OpenXE
committed
Teilauftrag WIP
1 parent 84eaf1b commit 35f6532

File tree

2 files changed

+210
-21
lines changed

2 files changed

+210
-21
lines changed

www/pages/auftrag.php

Lines changed: 181 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class Auftrag extends GenAuftrag
4040
*/
4141
public function TableSearch($app, $name, $erlaubtevars)
4242
{
43+
4344
switch($name)
4445
{
4546
case 'auftraege':
@@ -711,6 +712,55 @@ function fnFilterColumn' . $r . ' ( i )
711712

712713

713714
break;
715+
case 'positionen_teillieferung':
716+
717+
$id = $app->Secure->GetGET('id');
718+
$allowed['positionen_teillieferung'] = array('list');
719+
$heading = array('Position','Artikel','Nr.','Menge','Lager','Teilmenge','');
720+
$width = array( '1%', '60%', '29%','5%','5%'); // Fill out manually later
721+
722+
// columns that are aligned right (numbers etc)
723+
// $alignright = array(4,5,6,7,8);
724+
725+
$findcols = array('ap.sort','a.name_de','a.nummer','ap.menge','lager','teilmenge');
726+
$searchsql = array('');
727+
728+
$defaultorder = 2;
729+
$defaultorderdesc = 0;
730+
731+
$input_for_menge = "CONCAT(
732+
'<input type = \"number\" min=\"0\" max=\"',
733+
ap.menge,
734+
'\" name=\"teilmenge_',
735+
ap.id,
736+
'\"',
737+
' value=\"',
738+
739+
'\">',
740+
'</input>'
741+
)";
742+
743+
744+
// .'(SELECT TRIM(IFNULL(SUM(l.menge),0))+0 FROM lager_platz_inhalt l WHERE l.artikel=a.id) as lager'
745+
746+
$sql = "SELECT SQL_CALC_FOUND_ROWS
747+
ap.sort,
748+
ap.sort,
749+
a.name_de,
750+
a.nummer,"
751+
.$this->app->erp->FormatMenge('ap.menge').","
752+
."(SELECT TRIM(IFNULL(SUM(l.menge),0))+0 FROM lager_platz_inhalt l WHERE l.artikel=a.id) as lager,"
753+
.$input_for_menge
754+
." FROM auftrag_position ap
755+
INNER JOIN
756+
artikel a
757+
ON ap.artikel = a.id";
758+
759+
$where = " ap.auftrag = $id ";
760+
$count = "SELECT count(DISTINCT ap.id) FROM auftrag_position ap WHERE $where";
761+
// $groupby = "";
762+
763+
break;
714764

715765
}
716766
$erg = [];
@@ -765,7 +815,7 @@ public function __construct($app, $intern = false)
765815
$this->app->ActionHandler("rechnung","AuftragRechnung");
766816
$this->app->ActionHandler("lieferschein","AuftragLieferschein");
767817
$this->app->ActionHandler("lieferscheinrechnung","AuftragLieferscheinRechnung");
768-
818+
$this->app->ActionHandler("teillieferung","AuftragTeillieferung");
769819
$this->app->ActionHandler("nachlieferung","AuftragNachlieferung");
770820
// $this->app->ActionHandler("versand","AuftragVersand");
771821
$this->app->ActionHandler("freigabe","AuftragFreigabe");
@@ -1271,7 +1321,11 @@ function AuftragIconMenu($id,$prefix="")
12711321
$kommissionierart = $this->app->DB->Select("SELECT kommissionierverfahren FROM projekt WHERE id='$projekt' LIMIT 1");
12721322
//$art = $this->app->DB->Select("SELECT art FROM auftrag WHERE id='$id' LIMIT 1");
12731323
$alleartikelreservieren = '';
1274-
$teillieferungen = '';
1324+
1325+
if ($status==='angelegt' || $status==='freigegeben') {
1326+
$teillieferungen = '<option value="teillieferung">Teilauftrag erstellen</option>';
1327+
}
1328+
12751329
if($status==='freigegeben') {
12761330
$alleartikelreservieren = "<option value=\"reservieren\">alle Artikel reservieren</option>";
12771331

@@ -1369,9 +1423,14 @@ function onchangeauftrag(cmd)
13691423
{
13701424
switch(cmd)
13711425
{
1372-
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;
1373-
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;
1374-
case 'teillieferung': window.location.href='index.php?module=auftrag&action=teillieferung&id=%value%'; break;
1426+
case 'storno':
1427+
if(!confirm('Wirklich stornieren?')) return document.getElementById('aktion$prefix').selectedIndex = 0; else window.location.href='index.php?module=auftrag&action=delete&id=%value%'; break;
1428+
case 'unstorno':
1429+
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%';
1430+
break;
1431+
case 'teillieferung':
1432+
window.location.href='index.php?module=auftrag&action=teillieferung&id=%value%';
1433+
break;
13751434
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;
13761435
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;
13771436
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 @@ public function Auftraegeberechnen() {
70047063
header('Location: index.php?module=auftrag&action=versandzentrum');
70057064
}
70067065

7066+
/*
7067+
* Split auftrag into separate documents with submit -> do it and return jump to the new split part
7068+
*/
7069+
function AuftragTeillieferung() {
7070+
7071+
$id = $this->app->Secure->GetGET('id');
7072+
$this->AuftragMenu();
7073+
$submit = $this->app->Secure->GetPOST('submit');
7074+
7075+
7076+
$sql = "SELECT * from auftrag WHERE id = $id";
7077+
$auftrag_alt = $this->app->DB->SelectArr($sql)[0];
7078+
$msg = "";
7079+
7080+
if (in_array($auftrag_alt['status'],array('angelegt','freigegeben'))) {
7081+
if ($submit != '') {
7082+
$msg = "";
7083+
switch ($submit) {
7084+
case 'speichern':
7085+
// Get parameters
7086+
7087+
$teilmenge_input = $this->app->Secure->GetPOSTArray();
7088+
7089+
$teilmengen = array();
7090+
7091+
foreach ($teilmenge_input as $key => $value) {
7092+
7093+
if ((strpos($key,'teilmenge_') === 0) && ($value !== '')) {
7094+
$posid = substr($key,'10');
7095+
$teilmenge = array('posid' => $posid, 'menge' => $value);
7096+
$teilmengen[] = $teilmenge;
7097+
}
7098+
}
7099+
7100+
if (!empty($teilmengen)) {
7101+
7102+
// Create new auftrag
7103+
$sql = "SELECT * from auftrag WHERE id = $id";
7104+
$auftrag_alt = $this->app->DB->SelectArr($sql)[0];
7105+
7106+
// Part auftrag of part auftrag -> select parent
7107+
$hauptauftrag_id = $auftrag_alt['teillieferungvon'];
7108+
if ($hauptauftrag_id != 0) {
7109+
$sql = "SELECT belegnr FROM auftrag WHERE id = $hauptauftrag_id";
7110+
$hauptauftrag_belegnr = $this->app->DB->SelectArr($sql)[0]['belegnr'];
7111+
} else {
7112+
$hauptauftrag_id = $auftrag_alt['id'];
7113+
$hauptauftrag_belegnr = $auftrag_alt['belegnr'];
7114+
}
7115+
7116+
$sql = "SELECT MAX(teillieferungnummer) as tpn FROM auftrag WHERE teillieferungvon = $hauptauftrag_id";
7117+
$teillieferungnummer = $this->app->DB->SelectArr($sql)[0]['tpn'];
7118+
if (empty($teillieferungnummer) || $teillieferungnummer == 0) {
7119+
$teillieferungnummer = '1';
7120+
} else {
7121+
$teillieferungnummer++;
7122+
}
7123+
7124+
$belegnr_neu = $hauptauftrag_belegnr."-".$teillieferungnummer;
7125+
7126+
$auftrag_neu = $auftrag_alt;
7127+
$auftrag_neu['id'] = null;
7128+
$auftrag_neu['belegnr'] = $belegnr_neu;
7129+
$auftrag_neu['teillieferungvon'] = $hauptauftrag_id;
7130+
$auftrag_neu['teillieferungnummer'] = $teillieferungnummer;
7131+
7132+
$id_neu = $this->app->DB->MysqlCopyRow('auftrag','id',$id);
7133+
$sql = "UPDATE auftrag SET belegnr = '$belegnr_neu', teillieferungvon = $hauptauftrag_id, teillieferungnummer = $teillieferungnummer WHERE id = $id_neu";
7134+
echo("---------------------------".$sql."<br>");
7135+
$this->app->DB->Update($sql);
7136+
7137+
// Adjust quantities
7138+
foreach ($teilmengen as $teilmenge) {
7139+
7140+
$sql = "SELECT menge FROM auftrag_position WHERE id = ".$teilmenge['posid'];
7141+
$menge_alt = $this->app->DB->SelectArr($sql)[0]['menge'];
7142+
7143+
$menge_neu = $teilmenge['menge'];
7144+
if ($menge_neu > $menge_alt) {
7145+
$menge_neu = $menge_alt;
7146+
}
7147+
7148+
$menge_reduziert = $menge_alt-$menge_neu;
7149+
7150+
$posid_alt = $teilmenge['posid'];
7151+
$posid_neu = $this->app->DB->MysqlCopyRow('auftrag_position','id',$posid_alt);
7152+
7153+
$sql = "UPDATE auftrag_position SET menge = $menge_reduziert WHERE id = $posid_alt";
7154+
echo("---------------------------".$sql."<br>");
7155+
$this->app->DB->Update($sql);
7156+
$sql = "UPDATE auftrag_position SET auftrag = $id_neu, menge = $menge_neu WHERE id = $posid_neu";
7157+
echo("---------------------------".$sql."<br>");
7158+
$this->app->DB->Update($sql);
7159+
}
7160+
}
7161+
7162+
break;
7163+
case 'abbrechen':
7164+
header('Location: index.php?module=auftrag&action=edit&id='.$id);
7165+
return;
7166+
break;
7167+
}
7168+
} // Submit
7169+
else {
7170+
$msg = "Teilauftrag: Auswahl der Artikel f&uuml;r den Teilauftrag.";
7171+
}
7172+
} // Status ok
7173+
else {
7174+
$msg = 'Teilauftrag in diesem Status nicht möglich.';
7175+
}
7176+
7177+
$this->app->Tpl->Add('INFOTEXT',$msg);
7178+
$this->app->YUI->TableSearch('TABLE','positionen_teillieferung', 'show','','',basename(__FILE__), __CLASS__);
7179+
7180+
$this->app->Tpl->Parse('PAGE','auftrag_teillieferung.tpl');
7181+
} // AuftragTeillieferung
7182+
70077183
}
Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
1-
<!-- gehort zu tabview -->
21
<div id="tabs">
32
<ul>
43
<li><a href="#tabs-1">[TABTEXT]</a></li>
54
</ul>
6-
<!-- ende gehort zu tabview -->
7-
8-
<!-- erstes tab -->
9-
<div id="tabs-1">
10-
<div class="info">Teillieferung: Auswahl der Artikel f&uuml;r eine Teillieferung. Bestimmen Sie welche Artikel als Teillieferung vorab versendet werden sollen,<br>
11-
und wann die Rechnung versendet wird (bei aktueller oder n&auml;chster Lieferung).</div>
12-
<br>
13-
<form action="" method="post">
14-
[MESSAGE]
15-
[TAB1]
16-
[TAB1NEXT]
17-
</form>
18-
</div>
19-
20-
<!-- tab view schließen -->
5+
<div id="tabs-1">
6+
<div class="info">[INFOTEXT]</div>
7+
<br>
8+
<form action="" method="post">
9+
[MESSAGE]
10+
<div class="row">
11+
<div class="row-height">
12+
<div class="col-xs-14 col-md-12 col-md-height">
13+
<div class="inside inside-full-height">
14+
<fieldset>
15+
[TABLE]
16+
</fieldset>
17+
</div>
18+
</div>
19+
<div class="col-xs-14 col-md-2 col-md-height">
20+
<div class="inside inside-full-height">
21+
<fieldset>
22+
<table width="100%" border="0" class="mkTableFormular">
23+
<legend>{|Aktionen|}</legend>
24+
<tr><td><button name="submit" id="speichern" value="speichern" class="ui-button-icon" style="width:100%";>Teilauftrag erzeugen</button></td></tr>
25+
<tr><td><button name="submit" id="abbrechen" value="abbrechen" class="ui-button-icon" style="width:100%";>Vorgang abbrechen</button></td></tr>
26+
</table>
27+
</fieldset>
28+
</div>
29+
</div>
30+
</div>
31+
</div>
32+
</form>
33+
</div>
2134
</div>
2235

0 commit comments

Comments
 (0)