diff --git a/www/pages/produktion.php b/www/pages/produktion.php
index 99551bf2..e143f0e4 100644
--- a/www/pages/produktion.php
+++ b/www/pages/produktion.php
@@ -226,6 +226,8 @@ class Produktion {
$this->app->erp->MenuEintrag("index.php", "Zurück");
+ $this->StatusBerechnen(0); // all open ones
+
$this->app->YUI->TableSearch('TAB1', 'produktion_list', "show", "", "", basename(__FILE__), __CLASS__);
$this->app->Tpl->Parse('PAGE', "produktion_list.tpl");
}
@@ -398,7 +400,7 @@ class Produktion {
break;
}
- $fortschritt = $this->MengeFortschritt($id,-1);
+ $fortschritt = $this->MengeFortschritt($id,$global_standardlager);
if (empty($fortschritt)) {
break;
@@ -516,6 +518,10 @@ class Produktion {
$fortschritt = $this->MengeFortschritt($id,$global_standardlager);
+ if (empty($fortschritt)) {
+ break;
+ }
+
if ($menge_abteilen < 1 || $menge_abteilen > ($fortschritt['geplant']-$fortschritt['produziert'])) {
$msg .= "
Ungültige Teilmenge.
";
break;
@@ -590,11 +596,13 @@ class Produktion {
$geliefert_menge = $position['geliefert_menge'];
$menge = $position['menge'];
$produktion_alt_id = $position['produktion'];
+ $menge_pro_stueck = $menge/$fortschritt['geplant'];
// For the new positions
$position['id'] = 'NULL';
$position['geliefert_menge'] = 0;
- $position['menge'] = $menge_abteilen*($position['menge']/$fortschritt['geplant']);
+
+ $position['menge'] = $menge_abteilen*$menge_pro_stueck;
$position['produktion'] = $produktion_neu_id;
$values = "";
@@ -623,9 +631,10 @@ class Produktion {
$sql = "UPDATE produktion_position SET $update WHERE id = $pos_id";
$this->app->DB->Update($sql);
-
+
// Free surplus reservations
- $result = $this->ArtikelReservieren($position['artikel'],$global_standardlager,0,$position['menge']-$position['geliefert_menge'],'produktion',$id,$position['id'],"Produktion $global_produktionsnummer");
+ $restreservierung = $menge_pro_stueck * $fortschritt['offen']-$menge_abteilen;
+ $result = $this->ArtikelReservieren($position['artikel'],$global_standardlager,0,$restreservierung,'produktion',$id,$position['id'],"Produktion $global_produktionsnummer");
}
@@ -661,6 +670,8 @@ class Produktion {
break;
}
+ $fortschritt = $this->MengeFortschritt($id,$global_standardlager);
+
$result = $this->MengeAnpassen($id,$menge_anpassen,$global_standardlager);
if ($result == -1) {
@@ -1190,6 +1201,8 @@ class Produktion {
*/
function MengeAnpassen(int $produktion_id, int $menge_neu, int $lager) : int {
+ $fortschritt = $this->MengeFortschritt($produktion_id,$lager);
+
$sql = "SELECT menge,geliefert_menge FROM produktion_position WHERE produktion = $produktion_id AND stuecklistestufe = 1";
$produktionsmengen_alt = $this->app->DB->SelectArr($sql)[0];
@@ -1208,11 +1221,15 @@ class Produktion {
$positionen = $this->app->DB->SelectArr($sql);
foreach ($positionen as $position) {
- $position_menge_neu = $menge_neu*($position['menge']/$produktionsmengen_alt['menge']);
+ $menge_pro_stueck = $position['menge']/$produktionsmengen_alt['menge'];
+ $position_menge_neu = $menge_neu*$menge_pro_stueck;
$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']);
+ $restreservierung = $menge_pro_stueck * ($menge_neu+$fortschritt['ausschuss']-$fortschritt['produziert']);
+
+ $result = $this->ArtikelReservieren($position['artikel'],$lager,0,$restreservierung,'produktion',$produktion_id,$position['id'],"Produktion ".$produktion_alt['belegnr']);
}
return(1);
}
@@ -1271,70 +1288,83 @@ class Produktion {
}
// Do calculations for the status icon display
+ // id = 0 for all open ones
function StatusBerechnen(int $produktion_id) {
- $fortschritt = $this->MengeFortschritt($produktion_id,-1);
- if (empty($fortschritt)) {
- return;
+ $where = "WHERE status IN ('freigegeben','gestartet') ";
+
+ if ($produktion_id > 0) {
+ $where .= "AND id = $produktion_id";
}
- $sql = "SELECT lager_ok, reserviert_ok, auslagern_ok, einlagern_ok, zeit_ok, versand_ok FROM produktion WHERE id = $produktion_id";
- $values = $this->app->DB->SelectArr($sql)[0];
+ $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) {
- // lager_ok
- if ($fortschritt['produzierbar'] >= $fortschritt['offen']) {
- $values['lager_ok'] = 1;
-// } else if ($fortschritt['produzierbar'] > 0) {
-// $values['lager_ok'] = 2;
- } else {
- $values['lager_ok'] = 0;
+ $produktion_id = $produktion['id'];
+
+ $fortschritt = $this->MengeFortschritt($produktion_id,-1);
+
+ if (empty($fortschritt)) {
+ continue;
+ }
+
+ // lager_ok
+ if ($fortschritt['produzierbar'] >= $fortschritt['offen']) {
+ $values['lager_ok'] = 1;
+ // } else if ($fortschritt['produzierbar'] > 0) {
+ // $values['lager_ok'] = 2;
+ } else {
+ $values['lager_ok'] = 0;
+ }
+
+ // reserviert_ok
+ if ($fortschritt['reserviert'] >= $fortschritt['offen']) {
+ $values['reserviert_ok'] = 1;
+ // } else if ($fortschritt['reserviert'] > 0) {
+ // $values['reserviert_ok'] = 2;
+ } else {
+ $values['reserviert_ok'] = 0;
+ }
+
+ // auslagern_ok
+ if ($fortschritt['produziert'] >= $fortschritt['geplant']) {
+ $values['auslagern_ok'] = 1;
+ // } else if ($fortschritt['produziert'] > 0) {
+ // $values['auslagern_ok'] = 2;
+ } else {
+ $values['auslagern_ok'] = 0;
+ }
+
+ // einlagern_ok
+ if ($fortschritt['erfolgreich'] >= $fortschritt['geplant']) {
+ $values['einlagern_ok'] = 1;
+ // } else if ($fortschritt['erfolgreich'] > 0) {
+ // $values['einlagern_ok'] = 2;
+ } else {
+ $values['einlagern_ok'] = 0;
+ }
+
+ // reserviert_ok
+ if ($fortschritt['produziert'] >= $fortschritt['geplant']) {
+ $values['auslagern_ok'] = 1;
+ // } else if ($fortschritt['produziert'] > 0) {
+ // $values['auslagern_ok'] = 2;
+ } else {
+ $values['auslagern_ok'] = 0;
+ }
+
+ $fix = "";
+ $update = "";
+ foreach ($values as $key => $value) {
+ $update = $update.$fix.$key." = '".($value)."'";
+ $fix = ", ";
+ }
+
+ $sql = "UPDATE produktion SET $update WHERE id = $produktion_id";
+ $this->app->DB->Update($sql);
}
-
- // reserviert_ok
- if ($fortschritt['reserviert'] >= $fortschritt['offen']) {
- $values['reserviert_ok'] = 1;
-// } else if ($fortschritt['reserviert'] > 0) {
-// $values['reserviert_ok'] = 2;
- } else {
- $values['reserviert_ok'] = 0;
- }
-
- // auslagern_ok
- if ($fortschritt['produziert'] >= $fortschritt['geplant']) {
- $values['auslagern_ok'] = 1;
-// } else if ($fortschritt['produziert'] > 0) {
-// $values['auslagern_ok'] = 2;
- } else {
- $values['auslagern_ok'] = 0;
- }
-
- // einlagern_ok
- if ($fortschritt['erfolgreich'] >= $fortschritt['geplant']) {
- $values['einlagern_ok'] = 1;
-// } else if ($fortschritt['erfolgreich'] > 0) {
-// $values['einlagern_ok'] = 2;
- } else {
- $values['einlagern_ok'] = 0;
- }
-
- // reserviert_ok
- if ($fortschritt['produziert'] >= $fortschritt['geplant']) {
- $values['auslagern_ok'] = 1;
-// } else if ($fortschritt['produziert'] > 0) {
-// $values['auslagern_ok'] = 2;
- } else {
- $values['auslagern_ok'] = 0;
- }
-
- $fix = "";
- $update = "";
- foreach ($values as $key => $value) {
- $update = $update.$fix.$key." = '".($value)."'";
- $fix = ", ";
- }
-
- $sql = "UPDATE produktion SET $update WHERE id = $produktion_id";
- $this->app->DB->Update($sql);
}
}