From 625b9627e87760e5f194c183d2f2f5a1acc7347a Mon Sep 17 00:00:00 2001 From: OpenXE <> Date: Thu, 17 Nov 2022 17:56:58 +0100 Subject: [PATCH] Produktion minor bugfixes --- www/pages/content/produktion_minidetail.tpl | 30 +++---- www/pages/produktion.php | 86 +++++++++++---------- 2 files changed, 62 insertions(+), 54 deletions(-) diff --git a/www/pages/content/produktion_minidetail.tpl b/www/pages/content/produktion_minidetail.tpl index 25cfca48..7514c2a3 100644 --- a/www/pages/content/produktion_minidetail.tpl +++ b/www/pages/content/produktion_minidetail.tpl @@ -1,44 +1,46 @@
-
- {|Produktionsfortschritt|} +
+ {|Produktionsfortschritt|}
- + - + - + - + - + - + - - + +
{|Geplant|}:[MENGE_GEPLANT][MINI_MENGE_GEPLANT] {|Offen:|}[MENGE_OFFEN][MINI_MENGE_OFFEN]
{|Produziert|}:[MENGE_PRODUZIERT][MINI_MENGE_PRODUZIERT] {|Reserviert:|}[MENGE_RESERVIERT][MINI_MENGE_RESERVIERT]
{|Erfolgreich|}:[MENGEERFOLGREICH][MINI_MENGEERFOLGREICH] {|Produzierbar:|}[MENGE_PRODUZIERBAR][MINI_MENGE_PRODUZIERBAR]
{|Ausschuss|}:[MENGEAUSSCHUSS]{|Ausschuss|}:[MINI_MENGEAUSSCHUSS]
-
+
-
- {|Protokoll|} +
+ {|Protokoll|}
[PROTOKOLL]
-
+
+ + diff --git a/www/pages/produktion.php b/www/pages/produktion.php index 2b1a81bb..1b3b5b5e 100644 --- a/www/pages/produktion.php +++ b/www/pages/produktion.php @@ -8,6 +8,12 @@ use Xentral\Components\Database\Exception\QueryFailureException; class Produktion { + // Botched helper function -> Should be replaced with a proper locale solution someday TODO + function FormatMenge ($value) { + return(number_format($value,0,',','.')); // DE +// return(number_format($value,0,'.',',')); // EN + } + function __construct($app, $intern = false) { $this->app = $app; if ($intern) @@ -404,7 +410,7 @@ class Produktion { if (!empty($id)) { $this->ProtokollSchreiben($id,'Produktion angelegt'); - $msg .= "
Das Element wurde erfolgreich angelegt.
"; + $msg = "
Das Element wurde erfolgreich angelegt.
"; // Overwrite old MSG $msg = $this->app->erp->base64_url_encode($msg); header("Location: index.php?module=produktion&action=edit&id=$id&msg=$msg"); } @@ -480,7 +486,7 @@ class Produktion { break; } - $sql = "SELECT pp.id, pp.artikel, a.name_de, a.nummer, FORMAT(pp.menge,0) as menge, FORMAT(pp.geliefert_menge,0) as geliefert_menge FROM produktion_position pp INNER JOIN artikel a ON a.id = pp.artikel WHERE pp.produktion=$id AND pp.stuecklistestufe=0"; + $sql = "SELECT pp.id, pp.artikel, a.name_de, a.nummer, pp.menge as menge, pp.geliefert_menge as geliefert_menge FROM produktion_position pp INNER JOIN artikel a ON a.id = pp.artikel WHERE pp.produktion=$id AND pp.stuecklistestufe=0"; $materialbedarf = $this->app->DB->SelectArr($sql); // Try to reserve material @@ -507,7 +513,7 @@ class Produktion { // Check quanitites // Parse positions - $sql = "SELECT artikel, FORMAT(menge,0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1"; + $sql = "SELECT artikel, menge, geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1"; $produktionsartikel_position = $this->app->DB->SelectArr($sql)[0]; if (empty($produktionsartikel_position)) { @@ -544,7 +550,7 @@ class Produktion { $sql = "UPDATE produktion SET status = 'gestartet' WHERE id=$id"; $this->app->DB->Update($sql); - $sql = "SELECT id, artikel, FORMAT(menge,0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge, stuecklistestufe FROM produktion_position pp WHERE produktion=$id"; + $sql = "SELECT id, artikel, menge, geliefert_menge, stuecklistestufe FROM produktion_position pp WHERE produktion=$id"; $material = $this->app->DB->SelectArr($sql); foreach ($material as $material_position) { @@ -616,10 +622,10 @@ class Produktion { $sql = "UPDATE produktion SET mengeerfolgreich = mengeerfolgreich + $menge_produzieren, mengeausschuss = mengeausschuss + $menge_ausschuss WHERE id = $id"; $this->app->DB->Update($sql); - if ($menge_ausschuss < $menge_produzieren) { + if ($menge_produzieren > 0) { $lagertext = ", eingelagert in $lagername"; } - $text = "Produktion durchgeführt ($menge_produzieren, davon $menge_ausschuss Ausschuss)$lagertext"; + $text = "Produktion durchgeführt ($menge_produzieren erfolgreich, $menge_ausschuss Ausschuss)$lagertext"; $msg .= "
$text.
"; $this->ProtokollSchreiben($id,$text); @@ -636,7 +642,7 @@ class Produktion { break; } - if ($menge_abteilen < 1 || $menge_abteilen > ($fortschritt['geplant']-$fortschritt['produziert'])) { + if (($menge_abteilen < 1) || ($menge_abteilen > $fortschritt['offen'])) { $msg .= "
Ungültige Teilmenge.
"; break; } @@ -753,7 +759,7 @@ class Produktion { } $this->ProtokollSchreiben($id,"Teilproduktion erstellt: ".$produktion_neu['belegnr']." (Menge $menge_abteilen)"); - $msg .= "
Das Element wurde erfolgreich angelegt.
"; + $msg = "
Das Element wurde erfolgreich angelegt.
"; // Overwrite old MSG $msg = $this->app->erp->base64_url_encode($msg); header("Location: index.php?module=produktion&action=edit&id=$produktion_neu_id&msg=$msg"); @@ -761,7 +767,7 @@ class Produktion { case 'leeren': if ($global_status == 'angelegt' || $global_status == 'freigegeben') { - $sql = "SELECT id, artikel, FORMAT(menge,0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=0"; + $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) { // Remove reservation @@ -797,14 +803,14 @@ class Produktion { } } - $this->ProtokollSchreiben($id,"Menge angepasst auf $menge_anpassen"); + $this->ProtokollSchreiben($id,"Menge angepasst auf ".$this->FormatMenge($menge_anpassen)); break; case 'abschliessen': $sql = "UPDATE produktion SET status = 'abgeschlossen' WHERE id=$id"; $this->app->DB->Update($sql); - $sql = "SELECT id, artikel, FORMAT(menge,0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=0"; + $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) { @@ -970,8 +976,8 @@ class Produktion { p.parent, p.parentnummer, p.bearbeiterid, - FORMAT(p.mengeausschuss,0) as mengeausschuss, - FORMAT(p.mengeerfolgreich,0) as mengeerfolgreich, + p.mengeausschuss, + p.mengeerfolgreich, p.abschlussbemerkung, p.auftragid, p.funktionstest, @@ -1056,11 +1062,12 @@ class Produktion { */ // Reparse positions - $sql = "SELECT id,artikel, FORMAT(menge,0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge FROM produktion_position pp WHERE produktion=$id AND stuecklistestufe=1"; + $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_PRODUZIEREN_VISIBLE','hidden'); @@ -1070,18 +1077,20 @@ class Produktion { } else { // Planned - $fortschritt = $this->MengeFortschritt($id, $produktion_from_db['standardlager']); + $fortschritt = $this->MengeFortschritt((int) $id, 0); if (!empty($fortschritt)) { - $this->app->Tpl->Set('MENGE_GEPLANT',$fortschritt['geplant']); - $this->app->Tpl->Set('MENGE_PRODUZIERT',$fortschritt['produziert']); - $this->app->Tpl->Set('MENGE_OFFEN',$fortschritt['offen']); - $this->app->Tpl->Add('MENGE_RESERVIERT',$fortschritt['reserviert']); - $this->app->Tpl->Set('MENGE_PRODUZIERBAR',$fortschritt['produzierbar']); + $this->app->Tpl->Set('MENGE_GEPLANT',$this->FormatMenge($fortschritt['geplant'])); + $this->app->Tpl->Set('MENGE_PRODUZIERT',$this->FormatMenge($fortschritt['produziert'])); + $this->app->Tpl->Set('MENGE_OFFEN',$this->FormatMenge($fortschritt['offen'])); + $this->app->Tpl->Set('MENGE_RESERVIERT',$this->FormatMenge($fortschritt['reserviert'])); + $this->app->Tpl->Set('MENGE_PRODUZIERBAR',$this->FormatMenge($fortschritt['produzierbar'])); + $this->app->Tpl->Set('MENGEERFOLGREICH',$this->FormatMenge($fortschritt['erfolgreich'])); + $this->app->Tpl->Set('MENGEAUSSCHUSS',$this->FormatMenge($fortschritt['ausschuss'])); + } - if ($fortschritt['produziert'] > $fortschritt['geplant']) { - $msg .= "
Planmenge überschritten.
"; - } + if ($fortschritt['produziert'] > $fortschritt['geplant']) { + $msg .= "
Planmenge überschritten.
"; } $this->app->Tpl->Set('AKTION_PLANEN_VISIBLE','hidden'); @@ -1169,17 +1178,13 @@ class Produktion { $fortschritt = $this->MengeFortschritt((int) $id, 0); if (!empty($fortschritt)) { - $this->app->Tpl->Set('MENGE_GEPLANT',$fortschritt['geplant']); - $this->app->Tpl->Set('MENGE_PRODUZIERT',$fortschritt['produziert']); - $this->app->Tpl->Set('MENGE_OFFEN',$fortschritt['offen']); - $this->app->Tpl->Set('MENGE_RESERVIERT',$fortschritt['reserviert']); - $this->app->Tpl->Set('MENGE_PRODUZIERBAR',$fortschritt['produzierbar']); - $this->app->Tpl->Set('MENGEERFOLGREICH',$fortschritt['erfolgreich']); - $this->app->Tpl->Set('MENGEAUSSCHUSS',$fortschritt['ausschuss']); - - if ($fortschritt['produziert'] > $fortschritt['geplant']) { - $msg .= "
Planmenge überschritten.
"; - } + $this->app->Tpl->Set('MINI_MENGE_GEPLANT',$this->FormatMenge($fortschritt['geplant'])); + $this->app->Tpl->Set('MINI_MENGE_PRODUZIERT',$this->FormatMenge($fortschritt['produziert'])); + $this->app->Tpl->Set('MINI_MENGE_OFFEN',$this->FormatMenge($fortschritt['offen'])); + $this->app->Tpl->Set('MINI_MENGE_RESERVIERT',$this->FormatMenge($fortschritt['reserviert'])); + $this->app->Tpl->Set('MINI_MENGE_PRODUZIERBAR',$this->FormatMenge($fortschritt['produzierbar'])); + $this->app->Tpl->Set('MINI_MENGEERFOLGREICH',$this->FormatMenge($fortschritt['erfolgreich'])); + $this->app->Tpl->Set('MINI_MENGEAUSSCHUSS',$this->FormatMenge($fortschritt['ausschuss'])); } $this->ProtokollTabelleErzeugen($id, 'PROTOKOLL'); @@ -1233,10 +1238,10 @@ class Produktion { $menge_moeglich = PHP_INT_MAX; - $sql = "SELECT id, artikel, FORMAT(SUM(menge),0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge FROM produktion_position pp WHERE produktion=$produktion_id AND stuecklistestufe=0 GROUP BY artikel"; + $sql = "SELECT id, artikel, SUM(menge) as menge, geliefert_menge FROM produktion_position pp WHERE produktion=$produktion_id AND stuecklistestufe=0 GROUP BY artikel"; $materialbedarf_gesamt = $this->app->DB->SelectArr($sql); - $sql = "SELECT id, artikel, FORMAT(SUM(menge),0) as menge, FORMAT(geliefert_menge,0) as geliefert_menge FROM produktion_position pp WHERE produktion=$produktion_id AND stuecklistestufe=1 GROUP BY artikel"; + $sql = "SELECT id, artikel, SUM(menge) as menge, geliefert_menge as geliefert_menge FROM produktion_position pp WHERE produktion=$produktion_id AND stuecklistestufe=1 GROUP BY artikel"; $result = $this->app->DB->SelectArr($sql)[0]; $menge_plan_gesamt = $result['menge']; @@ -1244,7 +1249,7 @@ class Produktion { return(0); } - $sql = "SELECT FORMAT(SUM(mengeerfolgreich),0) as menge FROM produktion WHERE id=$produktion_id"; + $sql = "SELECT SUM(mengeerfolgreich) as menge FROM produktion WHERE id=$produktion_id"; $result = $this->app->DB->SelectArr($sql)[0]; $menge_geliefert_gesamt = $result['menge']; @@ -1253,7 +1258,7 @@ class Produktion { $artikel = $materialbedarf_artikel['artikel']; $position = $materialbedarf_artikel['id']; $menge_plan_artikel = $materialbedarf_artikel['menge']; - $menge_geliefert = $materialbedarf_artikel['geliefert_menge']; + $menge_geliefert = $materialbedarf_artikel['menge_geliefert']; $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']; @@ -1442,14 +1447,14 @@ class Produktion { return($result); } - $sql = "SELECT FORMAT(menge,0) as geplant,FORMAT(geliefert_menge,0) as produziert FROM produktion_position WHERE produktion = $produktion_id AND stuecklistestufe = 1"; + $sql = "SELECT menge as geplant, geliefert_menge as produziert FROM produktion_position WHERE produktion = $produktion_id AND stuecklistestufe = 1"; $position_values = $this->app->DB->SelectArr($sql)[0]; if (empty($position_values)) { return($result); } - $sql = "SELECT FORMAT(mengeerfolgreich,0) as erfolgreich,FORMAT(mengeausschuss,0) as ausschuss FROM produktion WHERE id = $produktion_id"; + $sql = "SELECT mengeerfolgreich as erfolgreich, mengeausschuss as ausschuss FROM produktion WHERE id = $produktion_id"; $produktion_values = $this->app->DB->SelectArr($sql)[0]; if (empty($produktion_values)) { @@ -1662,3 +1667,4 @@ class Produktion { } +