diff --git a/www/pages/content/produktion_edit.tpl b/www/pages/content/produktion_edit.tpl index f1aad135..ef7f6e6a 100644 --- a/www/pages/content/produktion_edit.tpl +++ b/www/pages/content/produktion_edit.tpl @@ -151,9 +151,9 @@ {|Planmenge|}: - {|Menge geplant|}: - {|Menge produziert|}: - {|Menge erfolgreich|}: + {|Geplant|}: + {|Produziert|}: + {|Erfolgreich|}: [MENGE_GEPLANT] @@ -197,6 +197,7 @@ + diff --git a/www/pages/produktion.php b/www/pages/produktion.php index e30276de..5901d261 100644 --- a/www/pages/produktion.php +++ b/www/pages/produktion.php @@ -355,7 +355,7 @@ class Produktion { } if ($artikel_planen_menge < 1) { - $msg .= "
Ungültige Planmenge.
"; + $msg .= "
Ungültige Planmenge.
"; break; } @@ -390,7 +390,6 @@ class Produktion { // Check quantities and reserve for every position if($global_standardlager == 0) { - $msg .= "
Kein Lager ausgewählt.
"; break; } @@ -643,6 +642,27 @@ class Produktion { $msg .= "
Planung kann nicht geleert werden.
"; } + break; + case 'anpassen': + + if ($global_status == 'angelegt' || $global_status == 'freigegeben' || $global_status == 'gestartet') { + + $menge_anpassen = $this->app->Secure->GetPOST('menge_produzieren'); + + if (empty($menge_anpassen)) { + $msg .= "
Ungültige Planmenge.
"; + break; + } + + $result = $this->MengeAnpassen($id,$menge_anpassen,$global_standardlager); + + if ($result == -1) { + $msg .= "
Ungültige Planmenge.
"; + } else { + $msg .= "
Planmenge angepasst.
"; + } + } + break; case 'abschliessen': $sql = "UPDATE produktion SET status = 'abgeschlossen' WHERE id=$id"; @@ -850,6 +870,10 @@ class Produktion { $this->app->Tpl->Set('TEILPRODUKTIONINFO',"Zu dieser Produktion gehören die Teilproduktionen: ".implode(', ',array_column($teilproduktionen,'belegnr'))); } + if($produktion_from_db['standardlager'] == 0) { + $msg .= "
Kein Lager ausgewählt.
"; + } + $this->app->YUI->AutoComplete("projekt", "projektname", 1); $this->app->YUI->AutoComplete("kundennummer", "kunde", 1); $this->app->YUI->AutoComplete("auftragid", "auftrag", 1); @@ -1147,4 +1171,39 @@ class Produktion { } + + /* + Adjust the planned quantity of a produktion + Lower limit is the already produced quantity + Return -1 if not possible, else 1 + */ + function MengeAnpassen(int $produktion_id, int $menge_neu, int $lager) : int { + + $sql = "SELECT menge,geliefert_menge FROM produktion_position WHERE produktion = $produktion_id AND stuecklistestufe = 1"; + $produktionsmengen_alt = $this->app->DB->SelectArr($sql)[0]; + + if (empty($produktionsmengen_alt)) { + return(-1); + } + if ($menge_neu <= $produktionsmengen_alt['geliefert_menge']) { + return(-1); + } + + $sql = "SELECT * from produktion WHERE id = $produktion_id"; + $produktion_alt = $this->app->DB->SelectArr($sql)[0]; + + // Process positions + $sql = "SELECT * FROM produktion_position WHERE produktion = $produktion_id"; + $positionen = $this->app->DB->SelectArr($sql); + + foreach ($positionen as $position) { + $position_menge_neu = $menge_neu*($position['menge']/$produktionsmengen_alt['menge']); + $sql = "UPDATE produktion_position SET menge=".$position_menge_neu." WHERE id =".$position['id']; + $this->app->DB->Update($sql); + // Free surplus reservations + $result = $this->ArtikelReservieren($position['artikel'],$lager,0,$position_menge_neu-$position['geliefert_menge'],'produktion',$produktion_id,$position['id'],"Produktion ".$produktion_alt['belegnr']); + } + return(1); + } + }