kommissionierung rework functions

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

View File

@ -5782,69 +5782,33 @@ 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; $druckercode = $this->app->erp->Projektdaten($projekt,'druckerlogistikstufe1');
}
$auslagernresult =
if($kommissionierung){ $this->app->erp->LieferscheinAuslagern(
$this->app->DB->Update( $lieferschein,
sprintf( true,
"UPDATE kommissionierung SET lieferschein = %d, auftrag = %d, adresse = %d WHERE id = %d LIMIT 1", (int)$this->app->DB->Select(sprintf('SELECT standardlager FROM auftrag WHERE id = %d LIMIT 1', $id)),
$lieferschein, 'lieferschein',
$id, true,
$adresse, false,
$kommissionierung $nurRestmenge
) );
);
}
$auslagernresult =
$this->app->erp->LieferscheinAuslagern(
$lieferschein,
true,
(int)$this->app->DB->Select(sprintf('SELECT standardlager FROM auftrag WHERE id = %d LIMIT 1', $id)),
'lieferschein',
true,
false,
$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
$this->app->erp->BriefpapierHintergrundDisable($druckercode); $this->app->erp->BriefpapierHintergrundDisable($druckercode);
@ -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(
sprintf(
"INSERT INTO kommissionierung_position (kommissionierung, artikel, lager_platz, menge) VALUES (%d, %d, %d, %d)",
$kid,
$storageMovement['artikel'],
$storageMovement['lager_platz'],
$storageMovement['menge']
)
);
}
$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."'"); $projektarr = $this->app->DB->SelectRow("SELECT projekt.* FROM projekt INNER JOIN auftrag ON projekt.id = auftrag.projekt WHERE auftrag.id = '".$v."'");
// Kommissionierschein drucken? $this->Kommissionieren(
if ($projektarr['autodruckkommissionierscheinstufe1']) { kommissionierung : $kid,
$Brief = new KommissionierungPDF($this->app, styleData: array('ohne_steuer' => true, 'artikeleinheit' => false, 'abstand_boxrechtsoben' => -70, 'abstand_artikeltabelleoben' => -70, 'abstand_betreffzeileoben' => -70, 'preise_ausblenden' => true)); auftrag: $v,
$Brief->GetKommissionierung($kid); lieferschein: 0,
$tmpfile = $Brief->displayTMP(); ausgelagert: false,
for($mengedruck=$projektarr['autodruckkommissionierscheinstufe1menge'];$mengedruck > 0;$mengedruck--) { lagerplatzliste: $auslagernresult,
$druckercode = $this->app->erp->Projektdaten($projektarr['id'],'druckerlogistikstufe1'); mengedruck: $projektarr['autodruckkommissionierscheinstufe1']?$projektarr['autodruckkommissionierscheinstufe1menge']:0,
$this->app->printer->Drucken($druckercode, $tmpfile); druckercode: $druckercode);
}
unlink($tmpfile); $this->app->erp->AuftragProtokoll($v,'Auftrag vorkommissioniert, Kommissionierung '.$kid);
}
} }
} }
break; break;
@ -7345,5 +7293,48 @@ Die Gesamtsumme stimmt nicht mehr mit ursprünglich festgelegten Betrag '.
$this->app->YUI->TableSearch('TAB1','offenepositionen',"show","","",basename(__FILE__), __CLASS__); $this->app->YUI->TableSearch('TAB1','offenepositionen',"show","","",basename(__FILE__), __CLASS__);
$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
}
}
} }