diff --git a/upgrade/data/db_schema.json b/upgrade/data/db_schema.json
index b9527d97..ba830e9c 100644
--- a/upgrade/data/db_schema.json
+++ b/upgrade/data/db_schema.json
@@ -50440,6 +50440,17 @@
"Privileges": "select,insert,update,references",
"Comment": ""
},
+ {
+ "Field": "ausgelagert",
+ "Type": "int(1)",
+ "Collation": null,
+ "Null": "NO",
+ "Key": "",
+ "Default": "0",
+ "Extra": "",
+ "Privileges": "select,insert,update,references",
+ "Comment": ""
+ },
{
"Field": "sprache",
"Type": "varchar(32)",
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index 1d37cb17..abd385be 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -3028,7 +3028,7 @@ function LieferscheinEinlagern($id,$grund="Lieferschein Einlagern", $lpiids = nu
// @refactor LagerBeleg Modul
// Returns Array:
// storageMovements => array('lager_platz', 'artikel', 'menge');
- function LieferscheinAuslagern($lieferschein,$anzeige_lagerplaetze_in_lieferschein=false, $standardlager = 0, $belegtyp = 'lieferschein', $chargenmhdnachprojekt = 0, $forceseriennummerngeliefertsetzen = false,$nurrestmenge = false, $lager_platz_vpe = 0, $lpiid = 0)
+ function LieferscheinAuslagern($lieferschein,$anzeige_lagerplaetze_in_lieferschein=false, $standardlager = 0, $belegtyp = 'lieferschein', $chargenmhdnachprojekt = 0, $forceseriennummerngeliefertsetzen = false,$nurrestmenge = false, $lager_platz_vpe = 0, $lpiid = 0, $simulieren = false)
{
if($lieferschein <= 0) {
return;
@@ -3468,77 +3468,87 @@ function LieferscheinEinlagern($id,$grund="Lieferschein Einlagern", $lpiids = nu
break;
}
- $this->LagerAuslagernRegal($artikel,$lager_max[0]['lager_platz'],$menge_auslagern,$projekt,ucfirst($belegtyp)." $belegnr","",$belegtyp,$lieferschein, $lager_max[0]['lager_platz_vpe'], $lager_max[0]['id']);
- $storageLocations[] = $lager_max[0]['lager_platz'];
- if($anzeige_lagerplaetze_in_lieferschein){
- $this->LagerAuslagernText($artikel, $subid, $lager_max[0]['lager_platz'], $menge_auslagern, $belegtyp);
- } else {
- $this->LagerAuslagernObjektLagerPlatz($artikel, $subid, $lager_max[0]['lager_platz'], $menge_auslagern, $belegtyp);
- }
- $regal_name = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='".$lager_max[0]['lager_platz']."' LIMIT 1");
- $lager_string .= $regal_name."(".(float)$menge_auslagern.") ";
- if(!$nurrestmenge){
- $this->LagerAuslagernRegalMHDCHARGESRN($artikel,$lager_max[0]['lager_platz'],$menge_auslagern,$projekt,ucfirst($belegtyp)." $belegnr","",$belegtyp,$lieferschein,$subid, $chargenauslagern, $mhdauslagern, $seriennummernauslagern);
- }
- $restmenge = round($restmenge - $menge_auslagern, 8);
-
$storageMovements[] = array('lager_platz' => $lager_max[0]['lager_platz'], 'artikel' => $artikel,'menge' => $menge_auslagern);
- }
- }
- $geliefert = $menge;
- if($nurrestmenge && $belegtyp=='produktion') {
- $geliefert = $menge + $artikelarr[$i]['geliefert_menge'];
- }
- $artikelhatseriennummer = $this->app->DB->Select("SELECT seriennummern FROM artikel WHERE id='".$artikel."' LIMIT 1");
- if($belegtyp == 'produktion')
- {
- $this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert_menge='$geliefert', geliefert = 1 WHERE id='$subid' LIMIT 1");
- }else{
-
- if($belegtyp=="lieferschein")
- {
- $auftragposid=$this->app->DB->Select("SELECT auftrag_position_id FROM lieferschein_position WHERE id='$subid'");
- if($auftragposid>0)
- {
- $this->app->DB->Update("UPDATE auftrag_position SET geliefert_menge='$geliefert' WHERE id='$auftragposid' LIMIT 1");
+ if (!$simulieren) {
+ $this->LagerAuslagernRegal($artikel,$lager_max[0]['lager_platz'],$menge_auslagern,$projekt,ucfirst($belegtyp)." $belegnr","",$belegtyp,$lieferschein, $lager_max[0]['lager_platz_vpe'], $lager_max[0]['id']);
+ $storageLocations[] = $lager_max[0]['lager_platz'];
+ if($anzeige_lagerplaetze_in_lieferschein){
+ $this->LagerAuslagernText($artikel, $subid, $lager_max[0]['lager_platz'], $menge_auslagern, $belegtyp);
+ } else {
+ $this->LagerAuslagernObjektLagerPlatz($artikel, $subid, $lager_max[0]['lager_platz'], $menge_auslagern, $belegtyp);
+ }
+ $regal_name = $this->app->DB->Select("SELECT kurzbezeichnung FROM lager_platz WHERE id='".$lager_max[0]['lager_platz']."' LIMIT 1");
+ $lager_string .= $regal_name."(".(float)$menge_auslagern.") ";
+ if(!$nurrestmenge){
+ $this->LagerAuslagernRegalMHDCHARGESRN($artikel,$lager_max[0]['lager_platz'],$menge_auslagern,$projekt,ucfirst($belegtyp)." $belegnr","",$belegtyp,$lieferschein,$subid, $chargenauslagern, $mhdauslagern, $seriennummernauslagern);
+ }
}
- }
-
- if($seriennummernerfassen=='1' && ($artikelhatseriennummer=='vomprodukteinlagern' || $artikelhatseriennummer=='vomprodukt' || $artikelhatseriennummer=='eigene'))
- {
- // wenn Seriennummer erfasst werden soll
- //if($anzeige_lagerplaetze_in_lieferschein)
- //{
- //$this->app->DB->Update("UPDATE ".$belegtyp."_position SET beschreibung='$beschreibung' WHERE id='$subid' LIMIT 1");
- //neue datenstruktur
- //}
- if($forceseriennummerngeliefertsetzen)$this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert='$geliefert' WHERE id='$subid' LIMIT 1");
- } else {
- //wenn nicht
- //if($anzeige_lagerplaetze_in_lieferschein)
- // $this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert='$geliefert',beschreibung='$beschreibung' WHERE id='$subid' LIMIT 1");
- //else
- $this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert='$geliefert' WHERE id='$subid' LIMIT 1");
+ $restmenge = round($restmenge - $menge_auslagern, 8);
}
}
- }
- if(!empty($storageLocations)) {
- $this->addStorageCountry($belegtyp, $lieferschein, $storageLocations);
- }
- $this->app->DB->Delete("DELETE FROM lager_reserviert WHERE objekt = '$belegtyp' AND parameter = '$lieferschein'");
- $auftragid = $this->app->DB->Select("SELECT auftragid FROM $belegtyp WHERE id='$lieferschein'");
- if($auftragid){
- $this->app->DB->Delete("DELETE FROM lager_reserviert WHERE objekt = 'auftrag' AND parameter = '$auftragid'");
+ if (!$simulieren) {
+
+ $geliefert = $menge;
+ if($nurrestmenge && $belegtyp=='produktion') {
+ $geliefert = $menge + $artikelarr[$i]['geliefert_menge'];
+ }
+ $artikelhatseriennummer = $this->app->DB->Select("SELECT seriennummern FROM artikel WHERE id='".$artikel."' LIMIT 1");
+ if($belegtyp == 'produktion')
+ {
+ $this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert_menge='$geliefert', geliefert = 1 WHERE id='$subid' LIMIT 1");
+ }else{
+
+ if($belegtyp=="lieferschein")
+ {
+ $auftragposid=$this->app->DB->Select("SELECT auftrag_position_id FROM lieferschein_position WHERE id='$subid'");
+ if($auftragposid>0)
+ {
+ $this->app->DB->Update("UPDATE auftrag_position SET geliefert_menge='$geliefert' WHERE id='$auftragposid' LIMIT 1");
+ }
+ }
+
+ if($seriennummernerfassen=='1' && ($artikelhatseriennummer=='vomprodukteinlagern' || $artikelhatseriennummer=='vomprodukt' || $artikelhatseriennummer=='eigene'))
+ {
+ // wenn Seriennummer erfasst werden soll
+ //if($anzeige_lagerplaetze_in_lieferschein)
+ //{
+ //$this->app->DB->Update("UPDATE ".$belegtyp."_position SET beschreibung='$beschreibung' WHERE id='$subid' LIMIT 1");
+ //neue datenstruktur
+ //}
+ if($forceseriennummerngeliefertsetzen)$this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert='$geliefert' WHERE id='$subid' LIMIT 1");
+ } else {
+ //wenn nicht
+ //if($anzeige_lagerplaetze_in_lieferschein)
+ // $this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert='$geliefert',beschreibung='$beschreibung' WHERE id='$subid' LIMIT 1");
+ //else
+ $this->app->DB->Update("UPDATE ".$belegtyp."_position SET geliefert='$geliefert' WHERE id='$subid' LIMIT 1");
+ }
+ }
+ } // simulieren
+ } // for loop
+
+ if (!$simulieren) {
+
+ if(!empty($storageLocations)) {
+ $this->addStorageCountry($belegtyp, $lieferschein, $storageLocations);
+ }
+ $this->app->DB->Delete("DELETE FROM lager_reserviert WHERE objekt = '$belegtyp' AND parameter = '$lieferschein'");
+
+ if($belegtyp == '' || $belegtyp === 'lieferschein')
+ {
+ $auftragid = $this->app->DB->Select("SELECT auftragid FROM $belegtyp WHERE id='$lieferschein'");
+ if($auftragid){
+ $this->app->DB->Delete("DELETE FROM lager_reserviert WHERE objekt = 'auftrag' AND parameter = '$auftragid'");
+ }
+
+ $this->RunHook('erpapi_lieferschein_auslagern', 1, $lieferschein);
+ $this->LieferscheinProtokoll($lieferschein,"Lieferschein ausgelagert");
+ }
}
- if($belegtyp == '' || $belegtyp === 'lieferschein')
- {
- $this->RunHook('erpapi_lieferschein_auslagern', 1, $lieferschein);
- $this->LieferscheinProtokoll($lieferschein,"Lieferschein ausgelagert");
- }
return(array('storageMovements' => $storageMovements));
}
diff --git a/www/lib/dokumente/class.kommissionierung.php b/www/lib/dokumente/class.kommissionierung.php
index 467dc6fc..a835c51e 100644
--- a/www/lib/dokumente/class.kommissionierung.php
+++ b/www/lib/dokumente/class.kommissionierung.php
@@ -108,6 +108,7 @@ class KommissionierungPDF extends BriefpapierCustom {
k.bezeichnung,
k.bearbeiter,
DATE_FORMAT(k.zeitstempel,'%Y%m%d') as datum,
+ k.ausgelagert,
l.belegnr as lieferscheinnummer,
ab.belegnr as auftragnummer,
DATE_FORMAT(ab.tatsaechlicheslieferdatum,'%d.%m.%Y') as tatsaechlicheslieferdatum,
@@ -121,11 +122,11 @@ class KommissionierungPDF extends BriefpapierCustom {
LEFT JOIN
auftrag ab
ON
- l.auftragid = ab.id
+ l.auftragid = ab.id OR k.auftrag = ab.id
LEFT JOIN
adresse a
ON
- a.id = l.adresse
+ a.id = k.adresse
WHERE k.id='$id'
");
@@ -170,7 +171,7 @@ class KommissionierungPDF extends BriefpapierCustom {
ksp.menge as amount,
a.herstellernummer as `name`,
'' as steuersatz_ermaessigt,
- DATE_FORMAT(zeitstempel,'%%Y%%m%%d') as datum
+ DATE_FORMAT(zeitstempel,'%%Y%%m%%d') as datum
FROM
kommissionierung ks
INNER JOIN kommissionierung_position ksp ON ks.id = ksp.kommissionierung
@@ -202,6 +203,11 @@ class KommissionierungPDF extends BriefpapierCustom {
if (!empty($data['tatsaechlicheslieferdatum'])) {
$corrDetails['Liefertermin'] = $data['tatsaechlicheslieferdatum'];
}
+ if (!empty($data['ausgelagert'])) {
+ $corrDetails['Ausgelagert'] = "ja";
+ } else {
+ $corrDetails['Ausgelagert'] = "nein";
+ }
$this->setCorrDetails($corrDetails, true);
}
}
diff --git a/www/pages/auftrag.php b/www/pages/auftrag.php
index 95604fb1..72ac3c63 100644
--- a/www/pages/auftrag.php
+++ b/www/pages/auftrag.php
@@ -579,91 +579,93 @@ class Auftrag extends GenAuftrag
break;
case 'auftraegeoffeneauto':
- $allowed['auftraegeoffeneauto'] = array('list');
+ $allowed['auftraegeoffeneauto'] = array('list');
- $heading = array('','', 'Auftrag', 'Vom', 'Kd-Nr.', 'Kunde','Lieferdatum', 'Land','Projekt', 'Zahlung', 'Betrag (brutto)','Monitor','Menü');
- $width = array('1%','1%','1%', '10%', '10%', '10%', '27%', '5%', '5%','1%', '1%', '1%', '1%');
- $findcols = array('open','a.belegnr', 'a.belegnr', 'a.datum', 'a.lieferantkdrnummer', 'a.name','a.tatsaechlicheslieferdatum', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.gesamtsumme');
+ $heading = array('','', 'Auftrag', 'Vom', 'Kd-Nr.', 'Kunde','Lieferdatum', 'Land','Projekt', 'Zahlung', 'Betrag (brutto)','Kommissionierung','Monitor','Menü');
+ $width = array('1%','1%','1%', '10%', '10%', '27%', '10%', '5%', '5%', '1%', '1%', '1%', '1%');
+ $findcols = array('open','a.belegnr', 'a.belegnr', 'a.datum', 'a.lieferantkdrnummer', 'a.name','a.tatsaechlicheslieferdatum', 'a.land', 'p.abkuerzung', 'a.zahlungsweise', 'a.gesamtsumme','(SELECT id FROM kommissionierung WHERE auftrag = a.id)');
- $defaultorder = 1;
- $defaultorderdesc = 0;
+ $defaultorder = 1;
+ $defaultorderdesc = 0;
+ $alignright = array(3,4,5,11,12);
- $menu = "";
+ $menu = "";
- $sql = "SELECT SQL_CALC_FOUND_ROWS
- a.id,
- 'app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`,
- CONCAT('') AS `auswahl`,
- IF(a.fastlane=1,CONCAT(a.belegnr,' (FL)'),a.belegnr) AS `belegnr`,
- DATE_FORMAT(a.datum,'%d.%m.%Y') AS `datum`,
- a.lieferantkdrnummer,
- a.name,
- DATE_FORMAT(a.tatsaechlicheslieferdatum,'%d.%m.%Y') as `tatsaechlicheslieferdatum`,
- a.land,
- p.abkuerzung,
- a.zahlungsweise,
- a.gesamtsumme,
- (" . $this->app->YUI->IconsSQL() . ") AS icons,
- a.id
- FROM
- auftrag a LEFT JOIN projekt p ON a.projekt = p.id";
+ $sql = "SELECT SQL_CALC_FOUND_ROWS
+ a.id,
+ '
app->Conf->WFconf['defaulttheme']}/images/details_open.png class=details>' AS `open`,
+ CONCAT('') AS `auswahl`,
+ IF(a.fastlane=1,CONCAT(a.belegnr,' (FL)'),a.belegnr) AS `belegnr`,
+ DATE_FORMAT(a.datum,'%d.%m.%Y') AS `datum`,
+ a.lieferantkdrnummer,
+ a.name,
+ DATE_FORMAT(a.tatsaechlicheslieferdatum,'%d.%m.%Y') as `tatsaechlicheslieferdatum`,
+ a.land,
+ p.abkuerzung,
+ a.zahlungsweise,
+ a.gesamtsumme,
+ (SELECT id FROM kommissionierung WHERE auftrag = a.id) as kommissionierung,
+ (" . $this->app->YUI->IconsSQL() . ") AS icons,
+ a.id
+ FROM
+ auftrag a LEFT JOIN projekt p ON a.projekt = p.id";
- $where = "a.status = 'freigegeben' AND a.cronjobkommissionierung = 0 AND a.lager_ok=1 AND a.porto_ok=1 AND a.ust_ok=1 AND a.vorkasse_ok=1 AND a.nachnahme_ok=1 AND a.autoversand=1 AND a.check_ok=1 AND a.kreditlimit_ok=1 AND a.liefersperre_ok=1"; // liefertermin_ok special treatment
+ $where = "a.status = 'freigegeben' AND a.cronjobkommissionierung = 0 AND a.lager_ok=1 AND a.porto_ok=1 AND a.ust_ok=1 AND a.vorkasse_ok=1 AND a.nachnahme_ok=1 AND a.autoversand=1 AND a.check_ok=1 AND a.kreditlimit_ok=1 AND a.liefersperre_ok=1"; // liefertermin_ok special treatment
- $count = "SELECT count(DISTINCT id) FROM auftrag a WHERE $where";
+ $count = "SELECT count(DISTINCT id) FROM auftrag a WHERE $where";
// $groupby = "";
- $moreinfo = true; // Allow drop down details
+ $moreinfo = true; // Allow drop down details
- // Toggle filters
- $this->app->Tpl->Add('JQUERYREADY', "$('#fastlane').click( function() { fnFilterColumn1( 0 ); } );");
- $this->app->Tpl->Add('JQUERYREADY', "$('#auftrag_kundemehrereauftraege').click( function() { fnFilterColumn2( 0 ); } );");
- $this->app->Tpl->Add('JQUERYREADY', "$('#auftrag_lieferdatum').click( function() { fnFilterColumn3( 0 ); } );");
+ // Toggle filters
+ $this->app->Tpl->Add('JQUERYREADY', "$('#fastlane').click( function() { fnFilterColumn1( 0 ); } );");
+ $this->app->Tpl->Add('JQUERYREADY', "$('#auftrag_kundemehrereauftraege').click( function() { fnFilterColumn2( 0 ); } );");
+ $this->app->Tpl->Add('JQUERYREADY', "$('#auftrag_lieferdatum').click( function() { fnFilterColumn3( 0 ); } );");
- for ($r = 1;$r <= 3;$r++) {
- $this->app->Tpl->Add('JAVASCRIPT', '
- function fnFilterColumn' . $r . ' ( i )
- {
- if(oMoreData' . $r . $name . '==1)
- oMoreData' . $r . $name . ' = 0;
- else
- oMoreData' . $r . $name . ' = 1;
+ for ($r = 1;$r <= 3;$r++) {
+ $this->app->Tpl->Add('JAVASCRIPT', '
+ function fnFilterColumn' . $r . ' ( i )
+ {
+ if(oMoreData' . $r . $name . '==1)
+ oMoreData' . $r . $name . ' = 0;
+ else
+ oMoreData' . $r . $name . ' = 1;
- $(\'#' . $name . '\').dataTable().fnFilter(
- \'\',
- i,
- 0,0
- );
- }
- ');
- }
+ $(\'#' . $name . '\').dataTable().fnFilter(
+ \'\',
+ i,
+ 0,0
+ );
+ }
+ ');
+ }
- $more_data1 = $this->app->Secure->GetGET("more_data1");
+ $more_data1 = $this->app->Secure->GetGET("more_data1");
- if ($more_data1 == 1) {
- $where .= " AND a.fastlane=1";
- } else {
- }
+ if ($more_data1 == 1) {
+ $where .= " AND a.fastlane=1";
+ } else {
+ }
- $more_data3 = $this->app->Secure->GetGET("more_data3");
- if ($more_data3 == 1) {
- }
- else {
- $where .= " AND a.liefertermin_ok=1";
- }
+ $more_data3 = $this->app->Secure->GetGET("more_data3");
+ if ($more_data3 == 1) {
+ }
+ else {
+ $where .= " AND a.liefertermin_ok=1";
+ }
- $more_data2 = $this->app->Secure->GetGET("more_data2");
- if ($more_data2 == 1) $where .= " AND a.adresse in (SELECT adresse FROM `auftrag` a WHERE ".$where." GROUP BY adresse HAVING count(id) > 1)"; // More than 1 order per address
+ $more_data2 = $this->app->Secure->GetGET("more_data2");
+ if ($more_data2 == 1) $where .= " AND a.adresse in (SELECT adresse FROM `auftrag` a WHERE ".$where." GROUP BY adresse HAVING count(id) > 1)"; // More than 1 order per address
- // END Toggle filters
+ // END Toggle filters
- $menu .= "";
- $menu .= "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
- $menu .= "";
+ $menu .= "";
+ $menu .= "
app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">";
+ $menu .= "";
- $moreinfo = true; // Minidetail active
- $menucol = 11; // For minidetail
+ $moreinfo = true; // Minidetail active
+ $menucol = 11; // For minidetail
break;
case 'auftraegeoffeneautowartend':
@@ -886,7 +888,6 @@ class Auftrag extends GenAuftrag
*/
public function __construct($app, $intern = false)
{
- $this->kommissionierung = false;
$this->app=$app;
if($intern) {
return;
@@ -5453,9 +5454,6 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$this->app->Tpl->Parse('PAGE',"tabview.tpl");
}
-
-
-
function AuftragReservieren()
{
$id = $this->app->Secure->GetGET('id');
@@ -5465,179 +5463,12 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$this->app->Location->execute("index.php?module=auftrag&action=edit&id=$id&msg=$msg");
}
- /**
- * @param int $kommissionierungId
- */
- public function updateCase($kommissionierungId)
- {
- if($kommissionierungId <= 0) {
- return;
- }
- $deliveryNotes = $this->app->DB->SelectArr(
- sprintf(
- 'SELECT id, kiste FROM lieferschein WHERE kommissionierung = %d ORDER BY id',
- $kommissionierungId
- )
- );
- if(empty($deliveryNotes)) {
- return;
- }
-
- $kiste = 0;
- foreach($deliveryNotes as $deliveryNote) {
- $kiste++;
- if($deliveryNote['kiste'] != $kiste) {
- $this->app->DB->Update(
- sprintf(
- 'UPDATE lieferschein SET kiste = %d WHERE id = %d',
- $kiste, $deliveryNote['id']
- )
- );
- }
- }
- }
-
- /**
- * @param array $orders
- * @param int $projectId
- * @param int $cronjobCommissionId
- * @param int $cronjobId
- * @param int $commissionId
- *
- * @return int
- */
- public function sendOrders($orders, $projectId, $cronjobCommissionId, $cronjobId = 0, $commissionId = 0)
- {
- $return = 0;
- if(empty($orders) || !is_array($orders)) {
- return $return;
- }
-
- $commissionName = empty($cronjobCommissionId)?'': $this->app->DB->real_escape_string(
- $this->app->DB->Select(
- sprintf(
- 'SELECT `bezeichnung` FROM `cronjob_kommissionierung` WHERE `id` = %d',
- $cronjobCommissionId
- )
- )
- );
- $this->kommissionierung = $commissionId > 0
- ? $commissionId
- : $this->app->erp->GetNextKommissionierung($commissionName);
- foreach($orders as $auftrag) {
- if(
- $auftragRow = $this->app->DB->SelectRow(
- sprintf(
- "SELECT a.id, a.belegnr
- FROM auftrag AS a
- WHERE (cronjobkommissionierung = '$cronjobCommissionId' OR 0 = '$cronjobCommissionId')
- AND a.id != ''
- AND (a.belegnr!=0 OR a.belegnr!='') AND a.status='freigegeben' AND a.inbearbeitung=0
- AND a.nachlieferung!='1' AND a.autoversand='1' AND a.liefertermin_ok='1' AND kreditlimit_ok='1'
- AND liefersperre_ok='1'
- AND a.vorkasse_ok='1' AND a.porto_ok='1' AND a.lager_ok='1' AND a.check_ok='1' AND a.ust_ok='1'
- AND a.id = %d
- GROUP BY a.id
- ORDER by a.id",
- $auftrag
- )
- )
- ) {
- if($cronjobId > 0){
- $this->app->erp->ProzessstarterStatus(
- 'Auftrag Versand Auftrag: ' . $auftragRow['belegnr'], $cronjobId
- );
- }
- //$this->app->erp->AuftragEinzelnBerechnen($auftrag);
- $this->app->DB->Update(
- "UPDATE prozessstarter
- SET mutex = 1 , mutexcounter = 0, letzteausfuerhung = now()
- WHERE (parameter = 'autoversand_standard' OR parameter = 'autoversand_manuell') AND aktiv = 1"
- );
- $erg = null;
- $this->app->erp->RunHook('VorAutoversand', 1, $auftrag);
- if(
- $this->app->DB->Select(
- sprintf(
- "SELECT a.id
- FROM auftrag AS a
- WHERE a.id = %d AND (a.belegnr!=0 OR a.belegnr!='') AND a.status='freigegeben'
- AND a.inbearbeitung=0 AND a.nachlieferung!='1' AND a.autoversand='1' AND a.liefertermin_ok='1'
- AND kreditlimit_ok='1' AND liefersperre_ok='1'
- AND a.vorkasse_ok='1' AND a.porto_ok='1' AND a.lager_ok='1' AND a.check_ok='1' AND a.ust_ok='1'
- GROUP BY a.id",
- $auftrag
- )
- )
- ) {
- $this->AuftragVersand($auftrag, false, $erg, true);
- $return++;
- }
- $this->app->DB->Update(
- sprintf(
- 'UPDATE auftrag SET cronjobkommissionierung = 0 WHERE id = %d LIMIT 1',
- $auftrag
- )
- );
- }
- }
-
- if(
- empty($projectId)
- || empty($this->kommissionierung)
- || !$this->app->DB->Select(
- sprintf(
- 'SELECT `id` FROM `lieferschein` WHERE `kommissionierung` = %d LIMIT 1',
- $this->kommissionierung
- )
- )
- ) {
- return $return;
- }
-
- $kommissionierlistestufe1 = $this->app->erp->Projektdaten($projectId, 'kommissionierlistestufe1');
- if($kommissionierlistestufe1) {
- $druckercode = $this->app->erp->Projektdaten($projectId, 'druckerlogistikstufe1');
- if($druckercode <=0) {
- $druckercode = $this->app->erp->Firmendaten('standardversanddrucker');
- }
- $kommissionierlistestufe1menge = $this->app->erp->Projektdaten(
- $projectId, 'kommissionierlistestufe1menge'
- );
- if($kommissionierlistestufe1menge < 1) {
- $kommissionierlistestufe1menge = 1;
- }
- /** @var Kommissionierlauf $obj2 */
- $obj2 = $this->app->erp->LoadModul('kommissionierlauf');
- if($obj2 && $this->kommissionierung) {
- if($cronjobId > 0){
- $this->app->erp->ProzessstarterStatus(
- 'KommissionierlaufPDF: ' . $this->kommissionierung, $cronjobId
- );
- }
- $tmpfile = $obj2->KommissionierlaufPDF($this->kommissionierung);
- for($mengedruck=$kommissionierlistestufe1menge;$mengedruck > 0;$mengedruck--) {
- $this->app->printer->Drucken($druckercode,$tmpfile);
- }
- unlink($tmpfile);
- }
- }
-
- return $return;
- }
-
/*
order processed true or false
*/
public function AuftragVersand($id='', $ignoriereliefertermin = false, &$ergebnis = null, $paketmarkedrucken = false)
- {
- if(!$this->kommissionierung)
- {
- $this->kommissionierung = $this->app->erp->GetNextKommissionierung();
- }
-
-
+ {
// mit der funktionen koennen nur erstauftraege abgewickelt koennen!!!
$internmodus = 0;
if($id!='')
@@ -5947,14 +5778,25 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
if($kommissionierverfahren==='lieferschein' && $lieferschein > 0)
{
//FALL 1 Lieferschein mit Lagerplatz
-
- if($this->kommissionierung){
+
+ $sql = "SELECT id FROM kommissionierung k WHERE k.auftrag = '".$id."'";
+ $vorkommissionierung = $this->app->DB->Select($sql);
+
+ if(!$vorkommissionierung)
+ {
+ $kommissionierung = $this->app->erp->GetNextKommissionierung();
+ } else {
+ $kommissionierung = false;
+ }
+
+ if($kommissionierung){
$this->app->DB->Update(
sprintf(
- "UPDATE kommissionierung SET lieferschein = %d, auftrag = %d WHERE id = %d LIMIT 1",
+ "UPDATE kommissionierung SET lieferschein = %d, auftrag = %d, adresse = %d WHERE id = %d LIMIT 1",
$lieferschein,
$id,
- $this->kommissionierung
+ $kommissionierung,
+ $adresse
)
);
}
@@ -5969,30 +5811,39 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
false,
$nurRestmenge
);
-
- foreach ($auslagernresult['storageMovements'] as $storageMovement) {
- $this->app->DB->Update(
- sprintf(
- "INSERT INTO kommissionierung_position (kommissionierung, artikel, lager_platz, menge) VALUES (%d, %d, %d, %d)",
- $this->kommissionierung,
- $storageMovement['artikel'],
- $storageMovement['lager_platz'],
- $storageMovement['menge']
- )
- );
- }
- // Kommissionierschein drucken?
- if ($projektarr['autodruckkommissionierscheinstufe1']) {
- $Brief = new KommissionierungPDF($this->app, styleData: array('ohne_steuer' => true, 'artikeleinheit' => false, 'abstand_boxrechtsoben' => -70, 'abstand_artikeltabelleoben' => -70, 'abstand_betreffzeileoben' => -70, 'preise_ausblenden' => true));
- $Brief->GetKommissionierung($this->kommissionierung);
- $tmpfile = $Brief->displayTMP();
- for($mengedruck=$projektarr['autodruckkommissionierscheinstufe1menge'];$mengedruck > 0;$mengedruck--) {
- $druckercode = $this->app->erp->Projektdaten($projekt,'druckerlogistikstufe1');
- $this->app->printer->Drucken($druckercode, $tmpfile);
+ if($kommissionierung){
+ $this->app->DB->Update(
+ sprintf(
+ "UPDATE kommissionierung SET ausgelagert = 1 WHERE id = %d LIMIT 1",
+ $kommissionierung
+ )
+ );
+
+ foreach ($auslagernresult['storageMovements'] as $storageMovement) {
+ $this->app->DB->Update(
+ sprintf(
+ "INSERT INTO kommissionierung_position (kommissionierung, artikel, lager_platz, menge) VALUES (%d, %d, %d, %d)",
+ $kommissionierung,
+ $storageMovement['artikel'],
+ $storageMovement['lager_platz'],
+ $storageMovement['menge']
+ )
+ );
}
- unlink($tmpfile);
- }
+
+ // Kommissionierschein drucken?
+ if ($projektarr['autodruckkommissionierscheinstufe1']) {
+ $Brief = new KommissionierungPDF($this->app, styleData: array('ohne_steuer' => true, 'artikeleinheit' => false, 'abstand_boxrechtsoben' => -70, 'abstand_artikeltabelleoben' => -70, 'abstand_betreffzeileoben' => -70, 'preise_ausblenden' => true));
+ $Brief->GetKommissionierung($kommissionierung);
+ $tmpfile = $Brief->displayTMP();
+ for($mengedruck=$projektarr['autodruckkommissionierscheinstufe1menge'];$mengedruck > 0;$mengedruck--) {
+ $druckercode = $this->app->erp->Projektdaten($projekt,'druckerlogistikstufe1');
+ $this->app->printer->Drucken($druckercode, $tmpfile);
+ }
+ unlink($tmpfile);
+ }
+ }
// Prozesse ohne Versandzentrum
$this->app->erp->BriefpapierHintergrundDisable($druckercode);
@@ -6649,65 +6500,15 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
foreach ($auftraegenachprojekt as $projekt => $auftraege) {
if(!is_array($auftraege) || empty($auftraege)) {
continue;
- }
- $this->kommissionierung = $this->app->erp->GetNextKommissionierung($bezeichnung);
-
+ }
$processed_orders_num = 0;
-
foreach ($auftraege as $auftrag) {
-
/* Process each order */
- if($this->AuftragVersand($auftrag)) {
+ if($this->AuftragVersand($auftrag, true)) {
$processed_orders_num++;
}
-
}
-
$this->app->Tpl->Set('MESSAGE','