@@ -40,6 +40,7 @@ class Auftrag extends GenAuftrag
40
40
*/
41
41
public function TableSearch ($ app , $ name , $ erlaubtevars )
42
42
{
43
+
43
44
switch ($ name )
44
45
{
45
46
case 'auftraege ' :
@@ -711,6 +712,55 @@ function fnFilterColumn' . $r . ' ( i )
711
712
712
713
713
714
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 ;
714
764
715
765
}
716
766
$ erg = [];
@@ -765,7 +815,7 @@ public function __construct($app, $intern = false)
765
815
$ this ->app ->ActionHandler ("rechnung " ,"AuftragRechnung " );
766
816
$ this ->app ->ActionHandler ("lieferschein " ,"AuftragLieferschein " );
767
817
$ this ->app ->ActionHandler ("lieferscheinrechnung " ,"AuftragLieferscheinRechnung " );
768
-
818
+ $ this -> app -> ActionHandler ( " teillieferung " , " AuftragTeillieferung " );
769
819
$ this ->app ->ActionHandler ("nachlieferung " ,"AuftragNachlieferung " );
770
820
// $this->app->ActionHandler("versand","AuftragVersand");
771
821
$ this ->app ->ActionHandler ("freigabe " ,"AuftragFreigabe " );
@@ -1271,7 +1321,11 @@ function AuftragIconMenu($id,$prefix="")
1271
1321
$ kommissionierart = $ this ->app ->DB ->Select ("SELECT kommissionierverfahren FROM projekt WHERE id=' $ projekt' LIMIT 1 " );
1272
1322
//$art = $this->app->DB->Select("SELECT art FROM auftrag WHERE id='$id' LIMIT 1");
1273
1323
$ alleartikelreservieren = '' ;
1274
- $ teillieferungen = '' ;
1324
+
1325
+ if ($ status ==='angelegt ' || $ status ==='freigegeben ' ) {
1326
+ $ teillieferungen = '<option value="teillieferung">Teilauftrag erstellen</option> ' ;
1327
+ }
1328
+
1275
1329
if ($ status ==='freigegeben ' ) {
1276
1330
$ alleartikelreservieren = "<option value= \"reservieren \">alle Artikel reservieren</option> " ;
1277
1331
@@ -1369,9 +1423,14 @@ function onchangeauftrag(cmd)
1369
1423
{
1370
1424
switch(cmd)
1371
1425
{
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;
1375
1434
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;
1376
1435
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;
1377
1436
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() {
7004
7063
header ('Location: index.php?module=auftrag&action=versandzentrum ' );
7005
7064
}
7006
7065
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ü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
+
7007
7183
}
0 commit comments