diff --git a/classes/Core/ErrorHandler/ErrorPageRenderer.php b/classes/Core/ErrorHandler/ErrorPageRenderer.php index 51479009..522ef94b 100644 --- a/classes/Core/ErrorHandler/ErrorPageRenderer.php +++ b/classes/Core/ErrorHandler/ErrorPageRenderer.php @@ -35,8 +35,10 @@ final class ErrorPageRenderer $content .= '
{|Lagerplatz|} ({|von|}): | |
{|Lagerplatz|} ({|bis|}): | $druckbutton |
{|Etikett|}: | |
{|Drucker|}: |
" .
+ $menu = "
![]() Der Eintrag wurde storniert. ");
+ $this->app->Tpl->Set('MESSAGE', "Der Eintrag wurde storniert. ");
} else {
- $this->app->Tpl->Set('MESSAGE', "Der Eintrag kann nicht storniert werden, da bereits Buchungen vorhanden sind. ");
- }
+ $this->app->Tpl->Set('MESSAGE', "Der Eintrag kann nicht storniert werden, da bereits Buchungen vorhanden sind. ");
+ }
$this->produktion_list();
- }
+ }
/*
* Edit produktion item
* If id is empty, create a new one
*/
-
+
function produktion_edit($id = NULL) {
if (empty($id)) {
@@ -375,25 +377,25 @@ class Produktion {
$this->app->erp->MenuEintrag("index.php?module=produktion&action=edit&id=$id", "Details");
$this->app->erp->MenuEintrag("index.php?module=produktion&action=list", "Zurück zur Übersicht");
$input = $this->GetInput();
- $msg = $this->app->erp->base64_url_decode($this->app->Secure->GetGET('msg'));
+ $msg = $this->app->erp->base64_url_decode($this->app->Secure->GetGET('msg'));
$sql = "SELECT status, belegnr, projekt, standardlager FROM produktion WHERE id = '$id'";
- $from_db = $this->app->DB->SelectArr($sql)[0];
+ $from_db = $this->app->DB->SelectArr($sql)[0];
$global_status = $from_db['status'];
$global_produktionsnummer = $from_db['belegnr'];
- $global_projekt = $from_db['projekt'];
- $global_standardlager = $from_db['standardlager'];
-
+ $global_projekt = $from_db['projekt'];
+ $global_standardlager = $from_db['standardlager'];
+
// foreach ($input as $key => $value) {
// echo($key." -> ".$value."\n"); // } - $this->app->Tpl->Set('MESSAGE', ""); + $this->app->Tpl->Set('MESSAGE', ""); if (empty($id)) { // New item - $id = 'NULL'; - + $id = 'NULL'; + } else { } @@ -405,7 +407,7 @@ class Produktion { switch ($submit) { case 'speichern': // Write to database - + // Add checks here if (empty($input['datum'])) { @@ -422,26 +424,31 @@ class Produktion { $input['datumbereitstellung'] = $this->app->erp->ReplaceDatum(true,$input['datumbereitstellung'],true); $input['datumproduktion'] = $this->app->erp->ReplaceDatum(true,$input['datumproduktion'],true); $input['datumproduktionende'] = $this->app->erp->ReplaceDatum(true,$input['datumproduktionende'],true); + + $input['adresse'] = $this->app->erp->ReplaceKunde(true,$input['adresse'],true); + $input['auftragid'] = $this->app->erp->ReplaceAuftrag(true,$input['auftrag'],true); + unset($input['auftrag']); $input['projekt'] = $this->app->erp->ReplaceProjekt(true,$input['projekt'],true); $columns = "id, "; $values = "$id, "; $update = ""; - + $fix = ""; foreach ($input as $key => $value) { $columns = $columns.$fix.$key; $values = $values.$fix."'".$value."'"; $update = $update.$fix.$key." = '$value'"; - $fix = ", "; + $fix = ", "; } $sql = "INSERT INTO produktion (".$columns.") VALUES (".$values.") ON DUPLICATE KEY UPDATE ".$update; + $this->app->DB->Update($sql); if ($id == 'NULL') { - + $id = $this->app->DB->GetInsertID(); if (!empty($id)) { @@ -450,25 +457,25 @@ class Produktion { $msg = $this->app->erp->base64_url_encode($msg); header("Location: index.php?module=produktion&action=edit&id=$id&msg=$msg"); } - + } else { $msg .= " Die Einstellungen wurden erfolgreich übernommen. ";
}
break;
case 'planen':
-
- // Check
- // Parse positions
+
+ // Check
+ // Parse positions
$sql = "SELECT artikel FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1";
$produktionsartikel = $this->app->DB->SelectArr($sql);
if (!empty($produktionsartikel)) {
$msg .= "Bereits geplant. ";
- break;
+ break;
}
$artikel_planen_id = $this->app->erp->ReplaceArtikel(true, $this->app->Secure->GetPOST('artikel_planen'),true); // Convert from form to artikel number
- $artikel_planen_menge = $this->app->Secure->GetPOST('artikel_planen_menge');
+ $artikel_planen_menge = $this->app->Secure->GetPOST('artikel_planen_menge');
if (!$artikel_planen_id) {
$msg .= "Artikel ist keine Stückliste. ";
@@ -492,28 +499,28 @@ class Produktion {
break;
}
- foreach ($stueckliste as $key => $value) {
+ foreach ($stueckliste as $key => $value) {
$value['menge'] = $value['menge'] * $artikel_planen_menge;
$position_values[] = '('.implode(",",$value).',\'\')';
}
$sql = "INSERT INTO produktion_position (produktion, artikel, menge, stuecklistestufe, projekt) VALUES ( $id, $artikel_planen_id, $artikel_planen_menge, 1, '$global_projekt'), ".implode(',',$position_values);
- $this->app->DB->Update($sql);
+ $this->app->DB->Update($sql);
$msg .= "Planung angelegt. ";
$this->ProtokollSchreiben($id,"Produktion geplant ($artikel_planen_menge)");
- break;
+ break;
case 'freigeben':
$this->app->erp->BelegFreigabe("produktion",$id);
$this->ProtokollSchreiben($id,'Produktion freigegeben');
break;
case 'reservieren':
-
+
// Check quantities and reserve for every position
if($global_standardlager == 0) {
- break;
+ break;
}
$fortschritt = $this->MengeFortschritt($id,$global_standardlager);
@@ -530,16 +537,16 @@ class Produktion {
foreach ($materialbedarf as $materialbedarf_position) {
// Calculate new needed quantity if there is scrap
- $materialbedarf_position['menge'] = $materialbedarf_position['menge']*($fortschritt['ausschuss']+$fortschritt['geplant'])/$fortschritt['geplant'];
+ $materialbedarf_position['menge'] = $materialbedarf_position['menge']*($fortschritt['ausschuss']+$fortschritt['geplant'])/$fortschritt['geplant'];
- $result = $this->ArtikelReservieren($materialbedarf_position['artikel'], $global_standardlager, $materialbedarf_position['menge']-$materialbedarf_position['geliefert_menge'], 0, 'produktion', $id, $materialbedarf_position['id'],"Produktion $global_produktionsnummer");
+ $result = $this->ArtikelReservieren($materialbedarf_position['artikel'], $global_standardlager, $materialbedarf_position['menge']-$materialbedarf_position['geliefert_menge'], 0, 'produktion', $id, $materialbedarf_position['id'],"Produktion $global_produktionsnummer");
if ($result > 0) {
- $reservierung_durchgefuehrt = true;
- }
- }
+ $reservierung_durchgefuehrt = true;
+ }
+ }
// Message output
- if ($reservierung_durchgefuehrt) {
+ if ($reservierung_durchgefuehrt) {
$msg .= "Reservierung durchgeführt. ";
} else {
$msg .= "Keine Reservierung durchgeführt! ";
@@ -560,11 +567,11 @@ class Produktion {
$menge_produzieren = $this->app->Secure->GetPOST('menge_produzieren');
if (empty($menge_produzieren)) {
$menge_produzieren = 0;
- }
- $menge_ausschuss = $this->app->Secure->GetPOST('menge_ausschuss_produzieren');
+ }
+ $menge_ausschuss = $this->app->Secure->GetPOST('menge_ausschuss_produzieren');
if (empty($menge_ausschuss)) {
$menge_ausschuss = 0;
- }
+ }
$menge_plan = $produktionsartikel_position['menge'];
$menge_geliefert = $produktionsartikel_position['geliefert_menge'];
@@ -607,16 +614,16 @@ class Produktion {
}
// Update position
- $sql = "UPDATE produktion_position SET geliefert_menge = geliefert_menge + $menge_artikel_auslagern WHERE id = ".$material_position['id'];
+ $sql = "UPDATE produktion_position SET geliefert_menge = geliefert_menge + $menge_artikel_auslagern WHERE id = ".$material_position['id'];
$this->app->DB->Update($sql);
- }
+ }
if ($error) {
break;
}
- // Insert produced parts into stock
+ // Insert produced parts into stock
// Check target stock, if not existing, use default stock of article, if not given use production stock
@@ -627,19 +634,19 @@ class Produktion {
if (!empty($ziellager_from_form)) {
$sql = "SELECT id FROM lager_platz WHERE id = ".$ziellager_from_form;
- $result = $this->app->DB->SelectArr($sql);
- if (!empty($result)) {
+ $result = $this->app->DB->SelectArr($sql);
+ if (!empty($result)) {
$ziellager = $ziellager_from_form;
} else {
$use_artikel_lager = true;
}
} else {
- $use_artikel_lager = true;
+ $use_artikel_lager = true;
}
- if ($use_artikel_lager) {
+ if ($use_artikel_lager) {
$sql = "SELECT lager_platz FROM artikel WHERE id = ".$produktionsartikel_position['artikel'];
- $result = $this->app->DB->SelectArr($sql);
+ $result = $this->app->DB->SelectArr($sql);
if (!empty($result) && !empty($result[0]['lager_platz'])) {
$ziellager = $result[0]['lager_platz'];
} else {
@@ -649,7 +656,7 @@ class Produktion {
}
$sql = "SELECT kurzbezeichnung FROM lager_platz WHERE id = $ziellager";
- $lagername = $this->app->DB->SelectArr($sql)[0]['kurzbezeichnung'];
+ $lagername = $this->app->DB->SelectArr($sql)[0]['kurzbezeichnung'];
// ERPAPI
// function LagerEinlagern($artikel,$menge,$regal,$projekt,$grund="",$importer="",$paketannahme="",$doctype = "", $doctypeid = 0, $vpeid = 0, $permanenteinventur = 0, $adresse = 0)
@@ -726,14 +733,14 @@ class Produktion {
$columns = "";
$values = "";
$update = "";
-
+
$fix = "";
foreach ($produktion_neu as $key => $value) {
$columns = $columns.$fix.$key;
$values = $values.$fix."'".$value."'";
$update = $update.$fix.$key." = '$value'";
- $fix = ", ";
+ $fix = ", ";
}
$sql = "INSERT INTO produktion (".$columns.") VALUES (".$values.")";
@@ -742,7 +749,7 @@ class Produktion {
// Now add the positions
$sql = "SELECT * FROM produktion_position WHERE produktion = $id";
- $positionen = $this->app->DB->SelectArr($sql);
+ $positionen = $this->app->DB->SelectArr($sql);
foreach ($positionen as $position) {
@@ -802,20 +809,20 @@ class Produktion {
break;
case 'leeren':
-
+
if ($global_status == 'angelegt' || $global_status == 'freigegeben') {
$sql = "SELECT id, artikel, menge, geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=0";
$material = $this->app->DB->SelectArr($sql);
- foreach ($material as $material_position) {
+ foreach ($material as $material_position) {
// Remove reservation
$result = $this->ArtikelReservieren($material_position['artikel'],$global_standardlager,0,0,'produktion',$id,$material_position['id'],"Produktion $global_produktionsnummer");
}
$sql = "DELETE FROM produktion_position WHERE produktion = $id";
- $this->app->DB->Update($sql);
- $msg .= "Planung geleert. ";
+ $this->app->DB->Update($sql);
+ $msg .= "Planung geleert. ";
} else {
- $msg .= "Planung kann nicht geleert werden. ";
- }
+ $msg .= "Planung kann nicht geleert werden. ";
+ }
break;
case 'anpassen':
@@ -842,31 +849,57 @@ class Produktion {
$this->ProtokollSchreiben($id,"Menge angepasst auf ".$this->FormatMenge($menge_anpassen));
- break;
+ break;
case 'abschliessen':
$sql = "UPDATE produktion SET status = 'abgeschlossen' WHERE id=$id";
- $this->app->DB->Update($sql);
+ $this->app->DB->Update($sql);
$sql = "SELECT id, artikel, menge, geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=0";
$material = $this->app->DB->SelectArr($sql);
- foreach ($material as $material_position) {
+ foreach ($material as $material_position) {
// Remove reservation
$result = $this->ArtikelReservieren($material_position['artikel'],$global_standardlager,0,0,'produktion',$id,$material_position['id'],"Produktion $global_produktionsnummer");
}
-
+
$this->ProtokollSchreiben($id,'Produktion abgeschlossen');
break;
+ case 'etikettendrucken':
- }
+ $menge_drucken = $this->app->Secure->GetPOST('menge_produzieren');
+
+ if ($menge_drucken) {
+ $sql = "SELECT artikel FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1";
+ $produktionsartikel_position = $this->app->DB->SelectArr($sql)[0];
+ $produktionsartikel_id = $produktionsartikel_position['artikel'];
+
+ $sql = "SELECT al.* FROM article_label al INNER JOIN artikel a ON a.id = al.article_id WHERE type = 'produktion' AND al.article_id = ".$produktionsartikel_id;
+ $produktionsetiketten = $this->app->DB->SelectArr($sql);
+
+ if (!empty($produktionsetiketten)) {
+ foreach ($produktionsetiketten as $produktionsetikett) {
+ $this->app->erp->EtikettenDrucker(
+ kennung: $produktionsetikett['label_id'],
+ anzahl: $menge_drucken*$produktionsetikett['amount'],
+ tabelle: 'artikel',
+ id: $produktionsartikel_id,
+ variables: null,
+ druckercode: $produktionsetikett['printer_id']
+ );
+ }
+ }
+ } else {
+ $msg .= "Ungültige Menge. ";
+ }
+ break;
+ }
}
-
// Load values again from database
// toDo: cleanup
- $sql = "SELECT SQL_CALC_FOUND_ROWS
+ $sql = "SELECT SQL_CALC_FOUND_ROWS
p.id,
(SELECT pp.bezeichnung FROM produktion_position pp WHERE pp.produktion = p.id AND pp.stuecklistestufe = 1 LIMIT 1) as artikelname,
p.datum,
@@ -1027,12 +1060,12 @@ class Produktion {
$produktion_from_db = $this->app->DB->SelectArr($sql)[0];
foreach ($produktion_from_db as $key => $value) {
- $this->app->Tpl->Set(strtoupper($key), $value);
+ $this->app->Tpl->Set(strtoupper($key), $value);
}
-
+
/*
* Add displayed items later
- */
+ */
$this->StatusBerechnen((int)$id);
@@ -1058,10 +1091,12 @@ class Produktion {
}
$this->app->Tpl->Set('PROJEKT',$this->app->erp->ReplaceProjekt(false,$produktion_from_db['projekt'],false));
+ $this->app->Tpl->Set('ADRESSE',$this->app->erp->ReplaceKunde(false,$produktion_from_db['adresse'],false));
+ $this->app->Tpl->Set('AUFTRAG',$this->app->erp->ReplaceAuftrag(false,$produktion_from_db['auftragid'],false));
$this->app->YUI->AutoComplete("projekt", "projektname", 1);
- $this->app->YUI->AutoComplete("kundennummer", "kunde", 1);
- $this->app->YUI->AutoComplete("auftragid", "auftrag", 1);
+ $this->app->YUI->AutoComplete("adresse", "kunde", 1);
+ $this->app->YUI->AutoComplete("auftrag", "auftrag", 1);
$this->app->YUI->AutoComplete("artikel_planen", "stuecklistenartikel");
$this->app->YUI->AutoComplete("artikel_hinzu", "artikelnummer");
@@ -1099,24 +1134,25 @@ class Produktion {
AKTION_FREIGEBEN_VISIBLE
AKTION_RESERVIEREN_VISIBLE
AKTION_PRODUZIEREN_VISIBLE
+ AKTION_ETIKETTEN_DRUCKEN_DISABLED
AKTION_ABSCHLIESSEN_VISIBLE
POSITIONEN_TAB_VISIBLE
*/
- // Reparse positions
+ // Reparse positions
$sql = "SELECT id,artikel, menge, geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1";
$produktionsartikel_position = $this->app->DB->SelectArr($sql)[0];
// Not planned
if (empty($produktionsartikel_position)) {
- $this->app->Tpl->Set('AKTION_FREIGEBEN_VISIBLE','hidden');
- $this->app->Tpl->Set('ARTIKEL_MENGE_VISIBLE','hidden');
+ $this->app->Tpl->Set('AKTION_FREIGEBEN_VISIBLE','hidden');
+ $this->app->Tpl->Set('ARTIKEL_MENGE_VISIBLE','hidden');
$this->app->Tpl->Set('AKTION_PRODUZIEREN_VISIBLE','hidden');
- $this->app->Tpl->Set('AKTION_LEEREN_VISIBLE','hidden');
- $this->app->Tpl->Set('AKTION_RESERVIEREN_VISIBLE','hidden');
- $this->app->Tpl->Set('AKTION_TEILEN_VISIBLE','hidden');
- } else {
+ $this->app->Tpl->Set('AKTION_LEEREN_VISIBLE','hidden');
+ $this->app->Tpl->Set('AKTION_RESERVIEREN_VISIBLE','hidden');
+ $this->app->Tpl->Set('AKTION_TEILEN_VISIBLE','hidden');
+ } else {
// Planned
$fortschritt = $this->MengeFortschritt((int) $id, 0);
@@ -1144,19 +1180,29 @@ class Produktion {
$produktionsartikel = $this->app->DB->SelectArr($sql)[0];
$produktionsartikel_name = $produktionsartikel['name_de'];
$produktionsartikel_nummer = $produktionsartikel['nummer'];
- }
+
+ $sql = "SELECT al.* FROM article_label al INNER JOIN artikel a ON a.id = al.article_id WHERE type = 'produktion'";
+
+
+ $sql = "SELECT artikel FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1";
+
+ $sql = "SELECT al.* FROM article_label al INNER JOIN artikel a ON a.id = al.article_id WHERE type = 'produktion' AND al.article_id = ".$produktionsartikel_id;
+ $produktionsetiketten = $this->app->DB->SelectArr($sql);
+ }
+
+ if (empty($produktionsetiketten)) {
+ $this->app->Tpl->Set('AKTION_ETIKETTEN_DRUCKEN_DISABLED','disabled');
+ }
if (empty($produktion_from_db['belegnr'])) {
$this->app->Tpl->SetText('KURZUEBERSCHRIFT2', 'ENTWURF - '.$produktionsartikel_name." (".$produktionsartikel_nummer.")");
} else {
- $this->app->Tpl->SetText('KURZUEBERSCHRIFT2', $produktion_from_db['belegnr']." ".$produktionsartikel_name." (".$produktionsartikel_nummer.")");
+ $this->app->Tpl->SetText('KURZUEBERSCHRIFT2', $produktion_from_db['belegnr']." ".$produktionsartikel_name." (".$produktionsartikel_nummer.")", html: true);
}
- $this->app->Tpl->SetText('ARTIKELNAME', $produktionsartikel_name);
-
// Action menu
switch ($produktion_from_db['status']) {
- case 'angelegt':
+ case 'angelegt':
$this->app->Tpl->Set('AKTION_RESERVIEREN_VISIBLE','hidden');
$this->app->Tpl->Set('AKTION_PRODUZIEREN_VISIBLE','hidden');
$this->app->Tpl->Set('AKTION_ABSCHLIESSEN_VISIBLE','hidden');
@@ -1172,7 +1218,7 @@ class Produktion {
case 'abgeschlossen':
case 'storniert':
$this->app->Tpl->Set('AKTION_SPEICHERN_DISABLED','disabled');
- $this->app->Tpl->Set('AKTION_PLANEN_VISIBLE','hidden');
+ $this->app->Tpl->Set('AKTION_PLANEN_VISIBLE','hidden');
$this->app->Tpl->Set('AKTION_FREIGEBEN_VISIBLE','hidden');
$this->app->Tpl->Set('AKTION_RESERVIEREN_VISIBLE','hidden');
$this->app->Tpl->Set('AKTION_PRODUZIEREN_VISIBLE','hidden');
@@ -1196,7 +1242,7 @@ class Produktion {
/*
Create a copy as draft
*/
-
+
function produktion_copy() {
$id = (int) $this->app->Secure->GetGET('id');
if (empty($id)) {
@@ -1205,14 +1251,14 @@ class Produktion {
$result = $this->Copy($id,0);
if ($result <= 0) {
$msg .= "Fehler beim Anlegen der Kopie. ";
- $this->app->Tpl->Set('MESSAGE', $msg);
+ $this->app->Tpl->Set('MESSAGE', $msg);
$this->produktion_list();
}
else {
$msg .= "Kopie angelegt. $result new $id old ";
- $this->app->Tpl->Set('MESSAGE', $msg);
+ $this->app->Tpl->Set('MESSAGE', $msg);
$this->produktion_edit((int) $result);
- }
+ }
}
public function produktion_minidetail($parsetarget='',$menu=true) {
@@ -1249,19 +1295,20 @@ class Produktion {
public function GetInput(): array {
$input = array();
- $input['kundennummer'] = $this->app->Secure->GetPOST('kundennummer');
- $input['projekt'] = $this->app->Secure->GetPOST('projekt');
- $input['auftragid'] = $this->app->Secure->GetPOST('auftragid');
- $input['internebezeichnung'] = $this->app->Secure->GetPOST('internebezeichnung');
+ $input['adresse'] = $this->app->Secure->GetPOST('adresse');
+ $input['projekt'] = $this->app->Secure->GetPOST('projekt');
+ $input['auftrag'] = $this->app->Secure->GetPOST('auftrag');
+
+ $input['internebezeichnung'] = $this->app->Secure->GetPOST('internebezeichnung');
$input['datum'] = $this->app->Secure->GetPOST('datum');
$input['standardlager'] = $this->app->Secure->GetPOST('standardlager');
$input['standardlager'] = $this->app->erp->ReplaceLagerPlatz(true,$input['standardlager'],true); // Parameters: Target db?, value, from form?
$input['reservierart'] = $this->app->Secure->GetPOST('reservierart');
- $input['auslagerart'] = $this->app->Secure->GetPOST('auslagerart');
+ $input['auslagerart'] = $this->app->Secure->GetPOST('auslagerart');
$input['unterlistenexplodieren'] = $this->app->Secure->GetPOST('unterlistenexplodieren');
- $input['funktionstest'] = $this->app->Secure->GetPOST('funktionstest');
+ $input['funktionstest'] = $this->app->Secure->GetPOST('funktionstest');
$input['arbeitsschrittetextanzeigen'] = $this->app->Secure->GetPOST('arbeitsschrittetextanzeigen');
$input['seriennummer_erstellen'] = $this->app->Secure->GetPOST('seriennummer_erstellen');
@@ -1306,7 +1353,7 @@ class Produktion {
$sql = "SELECT SUM(menge) as menge FROM lager_reserviert r WHERE lager_platz=$lager AND artikel = $artikel AND r.objekt = 'produktion' AND r.parameter = $produktion_id";
$menge_reserviert_diese = $this->app->DB->SelectArr($sql)[0]['menge'];
-
+
if ($only_reservations) {
$menge_verfuegbar = $menge_reserviert_diese;
} else {
@@ -1329,8 +1376,8 @@ class Produktion {
}
// echo("------------------------Lager $lager a $artikel menge_plan_artikel $menge_plan_artikel menge_geliefert $menge_geliefert menge_lager $menge_lager menge_reserviert_diese $menge_reserviert_diese menge_reserviert_gesamt $menge_reserviert_gesamt menge_verfuegbar $menge_verfuegbar menge_moeglich_artikel $menge_moeglich_artikel menge_moeglich $menge_moeglich"); - - } + + } if ($menge_moeglich < 0) { $menge_moeglich = 0; @@ -1338,7 +1385,7 @@ class Produktion { return($menge_moeglich); - } + } // Modify or add reservation // If quantity is negative, the existing reservation will be reduced @@ -1367,18 +1414,18 @@ class Produktion { if ($menge_lager == null) { $menge_lager = 0; } - + if ($menge_reservieren < 0) { // Relative reduction $menge_reservieren = $menge_reserviert_diese+$menge_reservieren; - - if ($menge_reservieren < 0) { + + if ($menge_reservieren < 0) { $menge_reservieren = 0; - } - } + } + } if (($menge_reservieren == 0) && ($menge_reservieren_limit <= 0)) { $sql = "DELETE FROM lager_reserviert WHERE objekt = '$objekt' AND parameter = $objekt_id AND artikel = $artikel AND posid = $position_id"; - $this->app->DB->Update($sql); + $this->app->DB->Update($sql); return(0); } @@ -1391,7 +1438,7 @@ class Produktion { // Nothing to do return($menge_reserviert_diese); } - } + } if ($menge_lager_reservierbar > 0) { if ($menge_reserviert_diese > 0) { @@ -1399,9 +1446,9 @@ class Produktion { if ($menge_reservieren > $menge_lager_reservierbar) { $menge_reservieren = $menge_lager_reservierbar; // Take all that is there } - $sql = "UPDATE lager_reserviert SET menge = $menge_reservieren WHERE objekt = '$objekt' AND parameter = $objekt_id AND artikel = $artikel AND posid = $position_id"; - $this->app->DB->Update($sql); - } else { + $sql = "UPDATE lager_reserviert SET menge = $menge_reservieren WHERE objekt = '$objekt' AND parameter = $objekt_id AND artikel = $artikel AND posid = $position_id"; + $this->app->DB->Update($sql); + } else { // Create new entry if ($menge_reservieren > $menge_lager_reservierbar) { $menge_reservieren = $menge_lager_reservierbar; // Take all that is there @@ -1415,15 +1462,15 @@ class Produktion { $lager.",". "'$text'". ")"; - $this->app->DB->Update($sql); - } + $this->app->DB->Update($sql); + } } else { $menge_reservieren = 0; - } + } return ($menge_reservieren); - } + } /* @@ -1450,7 +1497,7 @@ class Produktion { // Process positions $sql = "SELECT * FROM produktion_position WHERE produktion = $produktion_id"; - $positionen = $this->app->DB->SelectArr($sql); + $positionen = $this->app->DB->SelectArr($sql); foreach ($positionen as $position) { $menge_pro_stueck = $position['menge']/$produktionsmengen_alt['menge']; @@ -1519,7 +1566,7 @@ class Produktion { return($result); } - + // Do calculations for the status icon display // id = 0 for all open ones function StatusBerechnen(int $produktion_id) { @@ -1532,7 +1579,7 @@ class Produktion { $sql = "SELECT id, lager_ok, reserviert_ok, auslagern_ok, einlagern_ok, zeit_ok, versand_ok FROM produktion ".$where; $produktionen = $this->app->DB->SelectArr($sql); - + foreach ($produktionen as $produktion) { $produktion_id = $produktion['id']; @@ -1600,9 +1647,9 @@ class Produktion { } } - // Copy an existing produktion as draft, with option to adjust the quantity + // Copy an existing produktion as draft, with option to adjust the quantity // return id on sucess, else negative number - + function Copy($produktion_id, $menge_abteilen) : int { if (empty($produktion_id)) { @@ -1633,7 +1680,7 @@ class Produktion { $produktion_neu['art'] = $produktion_alt['art']; $produktion_neu['projekt'] = $produktion_alt['projekt']; $produktion_neu['angebot'] = $produktion_alt['angebot']; - $produktion_neu['kundennummer'] = $produktion_alt['kundennummer']; + $produktion_neu['adresse'] = $produktion_alt['adresse']; $produktion_neu['auftragid'] = $produktion_alt['auftragid']; $produktion_neu['freitext'] = $produktion_alt['freitext']; $produktion_neu['internebemerkung'] = $produktion_alt['internebemerkung']; @@ -1644,8 +1691,8 @@ class Produktion { } else { $produktion_neu['internebezeichnung '] = $produktion_alt['internebezeichnung']; } - - $produktion_neu['standardlager'] = $produktion_alt['standardlager']; + + $produktion_neu['standardlager'] = $produktion_alt['standardlager']; $columns = ""; @@ -1658,7 +1705,7 @@ class Produktion { $columns = $columns.$fix.$key; $values = $values.$fix."'".$value."'"; $update = $update.$fix.$key." = '$value'"; - $fix = ", "; + $fix = ", "; } $sql = "INSERT INTO produktion (".$columns.") VALUES (".$values.")"; @@ -1667,7 +1714,7 @@ class Produktion { // Now add the positions $sql = "SELECT * FROM produktion_position WHERE produktion = $produktion_id"; - $positionen = $this->app->DB->SelectArr($sql); + $positionen = $this->app->DB->SelectArr($sql); foreach ($positionen as $position) { @@ -1699,7 +1746,7 @@ class Produktion { Write something into the log */ function ProtokollSchreiben(int $produktion_id, string $text) { - $sql = "INSERT INTO produktion_protokoll (produktion, zeit, bearbeiter, grund) VALUES ($produktion_id, NOW(), '".$this->app->DB->real_escape_string($this->app->User->GetName())."','".$this->app->DB->real_escape_string($text)."')"; + $sql = "INSERT INTO produktion_protokoll (produktion, zeit, bearbeiter, grund) VALUES ($produktion_id, NOW(), '".$this->app->DB->real_escape_string($this->app->User->GetName())."','".$this->app->DB->real_escape_string($text)."')"; $this->app->DB->Insert($sql); } @@ -1710,6 +1757,13 @@ class Produktion { $tmp->DisplayNew($parsetarget,'Protokoll','noAction'); } + function produktion_pdf() { + $id = $this->app->Secure->GetGET('id'); + $Brief = new ProduktionPDF($this->app, styleData: Array('herstellernummerimdokument' => 1, 'ohne_steuer' => true, 'artikeleinheit' => false, 'abstand_boxrechtsoben' => -70, 'abstand_artikeltabelleoben' => -80, 'abstand_betreffzeileoben' => -70, 'preise_ausblenden' => true, 'hintergrund' => 'none')); + $Brief->GetProduktion($id); + $Brief->displayDocument(false); + exit(); + } } diff --git a/www/pages/projekt.php b/www/pages/projekt.php index 0ce13276..767c253f 100644 --- a/www/pages/projekt.php +++ b/www/pages/projekt.php @@ -152,7 +152,7 @@ class Projekt extends GenProjekt { $width = array('1%','8%', '20%','5%','15%', '15%'); $moreinfo = true; $moreinfoaction='projektuebersicht'; - $findcols = array('p.abkuerzung','p.name','a.kundennummer','a.name','p.verantwortlicher'); + $findcols = array('','p.abkuerzung','p.name','a.kundennummer','a.name','a2.name'); $defaultorder = 6; $menu = "
|