kommissionierung rework functions

This commit is contained in:
OpenXE 2024-06-05 11:00:55 +02:00
parent 765e2ba217
commit d7aa58190e

View File

@ -5782,67 +5782,31 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$sql = "SELECT id FROM kommissionierung k WHERE k.auftrag = '".$id."'"; $sql = "SELECT id FROM kommissionierung k WHERE k.auftrag = '".$id."'";
$vorkommissionierung = $this->app->DB->Select($sql); $vorkommissionierung = $this->app->DB->Select($sql);
if(!$vorkommissionierung) if (!$vorkommissionierung)
{ {
$kommissionierung = $this->app->erp->GetNextKommissionierung(); $kommissionierung = $this->app->erp->GetNextKommissionierung();
} else {
$kommissionierung = false;
}
if($kommissionierung){ $druckercode = $this->app->erp->Projektdaten($projekt,'druckerlogistikstufe1');
$this->app->DB->Update(
sprintf(
"UPDATE kommissionierung SET lieferschein = %d, auftrag = %d, adresse = %d WHERE id = %d LIMIT 1",
$lieferschein,
$id,
$adresse,
$kommissionierung
)
);
}
$auslagernresult = $auslagernresult =
$this->app->erp->LieferscheinAuslagern( $this->app->erp->LieferscheinAuslagern(
$lieferschein, $lieferschein,
true, true,
(int)$this->app->DB->Select(sprintf('SELECT standardlager FROM auftrag WHERE id = %d LIMIT 1', $id)), (int)$this->app->DB->Select(sprintf('SELECT standardlager FROM auftrag WHERE id = %d LIMIT 1', $id)),
'lieferschein', 'lieferschein',
true, true,
false, false,
$nurRestmenge $nurRestmenge
); );
if($kommissionierung){ $this->Kommissionieren(
$this->app->DB->Update( kommissionierung : $kommissionierung,
sprintf( auftrag: $id,
"UPDATE kommissionierung SET ausgelagert = 1 WHERE id = %d LIMIT 1", lieferschein: $lieferschein,
$kommissionierung ausgelagert: true,
) lagerplatzliste: $auslagernresult,
); mengedruck: $projektarr['autodruckkommissionierscheinstufe1']?$projektarr['autodruckkommissionierscheinstufe1menge']:0,
druckercode: $druckercode);
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']
)
);
}
// 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 // Prozesse ohne Versandzentrum
@ -6577,9 +6541,6 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$kid = $this->app->erp->GetNextKommissionierung(); $kid = $this->app->erp->GetNextKommissionierung();
$sql = "UPDATE kommissionierung SET auftrag = $v, adresse = (SELECT adresse FROM auftrag WHERE id = ".$v.") WHERE id = $kid";
$this->app->DB->Update($sql);
$auslagernresult = $auslagernresult =
$this->app->erp->LieferscheinAuslagern( $this->app->erp->LieferscheinAuslagern(
lieferschein: $v, lieferschein: $v,
@ -6592,33 +6553,20 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
simulieren: true simulieren: true
); );
foreach ($auslagernresult['storageMovements'] as $storageMovement) { $druckercode = $this->app->erp->Firmendaten('standardversanddrucker');
$this->app->DB->Update( $projektarr = $this->app->DB->SelectRow("SELECT projekt.* FROM projekt INNER JOIN auftrag ON projekt.id = auftrag.projekt WHERE auftrag.id = '".$v."'");
sprintf(
"INSERT INTO kommissionierung_position (kommissionierung, artikel, lager_platz, menge) VALUES (%d, %d, %d, %d)", $this->Kommissionieren(
$kid, kommissionierung : $kid,
$storageMovement['artikel'], auftrag: $v,
$storageMovement['lager_platz'], lieferschein: 0,
$storageMovement['menge'] ausgelagert: false,
) lagerplatzliste: $auslagernresult,
); mengedruck: $projektarr['autodruckkommissionierscheinstufe1']?$projektarr['autodruckkommissionierscheinstufe1menge']:0,
} druckercode: $druckercode);
$this->app->erp->AuftragProtokoll($v,'Auftrag vorkommissioniert, Kommissionierung '.$kid); $this->app->erp->AuftragProtokoll($v,'Auftrag vorkommissioniert, Kommissionierung '.$kid);
$projektarr = $this->app->DB->SelectRow("SELECT projekt.* FROM projekt INNER JOIN auftrag ON projekt.id = auftrag.projekt WHERE auftrag.id = '".$v."'");
// 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($kid);
$tmpfile = $Brief->displayTMP();
for($mengedruck=$projektarr['autodruckkommissionierscheinstufe1menge'];$mengedruck > 0;$mengedruck--) {
$druckercode = $this->app->erp->Projektdaten($projektarr['id'],'druckerlogistikstufe1');
$this->app->printer->Drucken($druckercode, $tmpfile);
}
unlink($tmpfile);
}
} }
} }
break; break;
@ -7346,4 +7294,47 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$this->app->Tpl->Parse('PAGE',"tabview.tpl"); $this->app->Tpl->Parse('PAGE',"tabview.tpl");
} }
function Kommissionieren(int $kommissionierung, int $auftrag, int $lieferschein, bool $ausgelagert, array $lagerplatzliste, int $mengedruck, int $druckercode) {
$sql = sprintf(
"UPDATE kommissionierung SET lieferschein = %d, auftrag = %d, adresse = IF (%d != 0,(SELECT adresse FROM lieferschein WHERE id = %d LIMIT 1),(SELECT adresse FROM auftrag WHERE id = %d LIMIT 1)), ausgelagert = %d WHERE id = %d LIMIT 1",
$lieferschein,
$auftrag,
$lieferschein,
$lieferschein,
$auftrag,
$adresse,
$kommissionierung,
$ausgelager
);
$this->app->DB->Update(
$sql
);
foreach ($lagerplatzliste['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']
)
);
}
// Kommissionierschein
if ($mengedruck > 0) {
$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();
$this->app->erp->BriefpapierHintergrunddisable = true; // Disable background
for($drucklauf = 0; $drucklauf < $mengedruck;$drucklauf++) {
$this->app->printer->Drucken($druckercode, $tmpfile);
}
unlink($tmpfile);
$this->app->erp->BriefpapierHintergrundDisable($druckercode); // Restore default background from printersettings
}
}
} }