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);
+ }
+
}