diff --git a/languages/german/tooltip.php b/languages/german/tooltip.php index 277cc9f9..6f54377f 100644 --- a/languages/german/tooltip.php +++ b/languages/german/tooltip.php @@ -1083,9 +1083,9 @@ $tooltip['produktionszentrum']['abschluss']['#auftragmengenanpassen']="Die Menge $tooltip['produktion']['abschluss']['#mengeerfolgreich'] = 'Höhere Mengen als die geplante Menge können nur mit der deaktivierten (kein Haken setzen) Systemeinstellung "Produktionskorrektur nicht verwenden" verbucht werden. '; $tooltip['produktion']['edit']['#mengeerfolgreich'] = $tooltip['produktion']['abschluss']['#mengeerfolgreich']; -$tooltip['produktion']['create']['#standardlager'] = "Lager, aus dem die Artikel für die Produktion ausgelagert werden sollen.Hier können alle Lager ausgewählt werden, in denen sich mindestens ein Lagerplatz befindet, aus dem Produktionen ausgelagert werden dürfen (Einstellung auf Regalebene unter Lager => Lagerverwaltung)."; +$tooltip['produktion']['create']['#standardlager'] = "Lager, aus dem die Artikel für die Produktion ausgelagert werden sollen. Hier können alle Lager ausgewählt werden, in denen sich mindestens ein Lagerplatz befindet, aus dem Produktionen ausgelagert werden dürfen (Einstellung auf Regalebene unter Lager => Lagerverwaltung)."; $tooltip['produktion']['edit']['#standardlager'] = $tooltip['produktion']['create']['#standardlager']; - +$tooltip['produktion']['edit']['#ziellager'] = "Wenn kein Ziellager angegenen ist, wird in das Standard-Lager des Artikels gebucht, wenn es das nicht gibt, in das Materiallager der Produktion."; /* PROJEKT */ @@ -1460,4 +1460,4 @@ $tooltip['coppersurcharge']['list']['surcharge-invoice'] = '(Pflichtfeld) Welche $tooltip['coppersurcharge']['list']['surcharge-delivery-costs'] = '(Pflichtfeld) Bezugskosten sind eine Grundlage der Berechnungsformel (in %): Kupferzuschlag EUR/km = (Kupfergewicht (kg/km) * (DEL + Bezugskosten)) - Kupferbasis / 100. Der Standard sind derzeit 1%'; $tooltip['coppersurcharge']['list']['surcharge-copper-base-standard'] = '(Pflichtfeld) Die Kupferbasis ist eine Grundlage der Berechnungsformel: Kupferzuschlag EUR/km = (Kupfergewicht (kg/km) * (DEL + Bezugskosten)) - Kupferbasis / 100. Der Standard sind derzeit 150 EUR pro 100kg'; $tooltip['coppersurcharge']['list']['surcharge-copper-base'] = 'Falls ein Artikel eine abweichende Kupferbasis haben soll kann diese in einem Freifeld gepflegt werden. Dieses kann hier ausgewählt werden.'; -$tooltip['coppersurcharge']['list']['surcharge-copper-number'] = '(Pflichtfeld) In diesem Freifeld kann die artikelspezifische Kupferzahl (km/kg) gepflegt werden. Sie ist Grundlage der Berechnung: Kupferzuschlag EUR/km = (Kupfergewicht (kg/km) * (DEL + Bezugskosten)) - Kupferbasis / 100.'; \ No newline at end of file +$tooltip['coppersurcharge']['list']['surcharge-copper-number'] = '(Pflichtfeld) In diesem Freifeld kann die artikelspezifische Kupferzahl (km/kg) gepflegt werden. Sie ist Grundlage der Berechnung: Kupferzuschlag EUR/km = (Kupfergewicht (kg/km) * (DEL + Bezugskosten)) - Kupferbasis / 100.'; diff --git a/www/pages/content/produktion_edit.tpl b/www/pages/content/produktion_edit.tpl index 1315e582..a77fa542 100644 --- a/www/pages/content/produktion_edit.tpl +++ b/www/pages/content/produktion_edit.tpl @@ -191,7 +191,7 @@ - {|Ziellager|}: + {|Ziellager|}:Info like this. @@ -243,15 +243,24 @@
[MESSAGE] -
+ [FORMHANDLEREVENT]
- {|Positionen|} - [PRODUKTION_POSITION_SOURCE_POSITION_TABELLE] + {|Positionen|} + [PRODUKTION_POSITION_SOURCE_POSITION_TABELLE] + + + + + + + + +
{|Artikel|}:{|Menge|}:
diff --git a/www/pages/produktion.php b/www/pages/produktion.php index 766ee0bd..ce7ae7ae 100644 --- a/www/pages/produktion.php +++ b/www/pages/produktion.php @@ -176,11 +176,11 @@ class Produktion { if (in_array($status,array('angelegt','freigegeben'))) { $heading = array('','','Nummer', 'Artikel', 'Projekt', 'Planmenge pro Stück', 'Lager alle (verfügbar)', 'Lager (verfügbar)', 'Reserviert', 'Planmenge', 'Verbraucht', 'Menü'); - $width = array('1%','1%', '5%','30%', '5%', '1%', '1%', '1%' , '1%', '1%', '1%' ,'1%'); + $width = array( '1%','1%','5%', '30%', '5%', '1%', '1%', '1%' , '1%', '1%', '1%' ,'1%'); $menu = "
" . "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"> " . "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">" . "
"; } else { - $heading = array('','','Nummer', 'Artikel', 'Projekt','Planmenge pro Stück', 'Lager (verfügbar)', 'Reserviert','Planmenge', 'Verbraucht',''); - $width = array('1%','1%', '5%','30%', '5%', '1%', '1%', '1%' , '1%' ,'1%' ,'1%'); + $heading = array('','','Nummer', 'Artikel', 'Projekt','Planmenge pro Stück', 'Lager alle (verfügbar)', 'Lager (verfügbar)', 'Reserviert', 'Planmenge', 'Verbraucht', ''); + $width = array( '1%','1%','5%', '30%', '5%', '1%', '1%', '1%' , '1%', '1%', '1%' ,'1%'); $menu = ""; } @@ -201,6 +201,7 @@ class Produktion { (SELECT a.name_de FROM artikel a WHERE a.id = p.artikel LIMIT 1) as name, (SELECT projekt.abkuerzung FROM projekt INNER JOIN artikel a WHERE a.projekt = projekt.id AND a.id = p.artikel LIMIT 1) as projekt, FORMAT(p.menge/$produktionsmenge,0,'de_DE') as stueckmenge, + IF ((SELECT lagerartikel FROM artikel a WHERE a.id = p.artikel LIMIT 1) != 0, CONCAT ( FORMAT (IFNULL((SELECT SUM(menge) FROM lager_platz_inhalt lpi WHERE lpi.artikel = p.artikel),0),0,'de_DE'), ' (', @@ -211,8 +212,8 @@ class Produktion { 'de_DE' ), ')' - ) as lageralle, - if ('$standardlager' = '0','-', + ),'') as lageralle, + if (('$standardlager' != '0') && ((SELECT lagerartikel FROM artikel a WHERE a.id = p.artikel LIMIT 1) != 0), CONCAT ( FORMAT (IFNULL((SELECT SUM(menge) FROM lager_platz_inhalt lpi WHERE lpi.lager_platz = $standardlager AND lpi.artikel = p.artikel),0),0,'de_DE'), ' (', @@ -224,6 +225,7 @@ class Produktion { ), ')' ) + ,'' ) as lager, FORMAT ((SELECT SUM(menge) FROM lager_reserviert r WHERE r.lager_platz = $standardlager AND r.artikel = p.artikel AND r.objekt = 'produktion' AND r.parameter = $id AND r.posid = p.id),0,'de_DE') as Reserviert, FORMAT(p.menge,0,'de_DE'), @@ -268,6 +270,7 @@ class Produktion { (SELECT a.name_de FROM artikel a WHERE a.id = p.artikel LIMIT 1) as name, (SELECT projekt.abkuerzung FROM projekt INNER JOIN artikel a WHERE a.projekt = projekt.id AND a.id = p.artikel LIMIT 1) as projekt, FORMAT(SUM(p.menge)/$produktionsmenge,0,'de_DE') as stueckmenge, + IF ((SELECT lagerartikel FROM artikel a WHERE a.id = p.artikel LIMIT 1) != 0, CONCAT ( FORMAT (IFNULL((SELECT SUM(menge) FROM lager_platz_inhalt lpi WHERE lpi.artikel = p.artikel),0),0,'de_DE'), ' (', @@ -278,8 +281,8 @@ class Produktion { 'de_DE' ), ')' - ) as lageralle, - if ('$standardlager' = '0','-', + ),'') as lageralle, + if (('$standardlager' != '0') && ((SELECT lagerartikel FROM artikel a WHERE a.id = p.artikel LIMIT 1) != 0), CONCAT ( FORMAT (IFNULL((SELECT SUM(menge) FROM lager_platz_inhalt lpi WHERE lpi.lager_platz = $standardlager AND lpi.artikel = p.artikel),0),0,'de_DE'), ' (', @@ -291,6 +294,7 @@ class Produktion { ), ')' ) + ,'' ) as lager, FORMAT ((SELECT SUM(menge) FROM lager_reserviert r WHERE r.lager_platz = $standardlager AND r.artikel = p.artikel AND r.objekt = 'produktion' AND r.parameter = $id),0,'de_DE') as reserviert, FORMAT(SUM(p.menge),0,'de_DE') as menge, @@ -579,7 +583,7 @@ class Produktion { $sql = "UPDATE produktion SET status = 'gestartet' WHERE id=$id"; $this->app->DB->Update($sql); - $sql = "SELECT id, artikel, menge, geliefert_menge, stuecklistestufe FROM produktion_position pp WHERE produktion=$id"; + $sql = "SELECT pp.id, pp.artikel, pp.menge, pp.geliefert_menge, pp.stuecklistestufe, a.lagerartikel FROM produktion_position pp INNER JOIN artikel a ON a.id = pp.artikel WHERE pp.produktion=$id"; $material = $this->app->DB->SelectArr($sql); foreach ($material as $material_position) { @@ -588,7 +592,7 @@ class Produktion { $menge_artikel_auslagern = $material_position['menge']/$produktionsartikel_position['menge']*$menge_auslagern; // Remove material from stock - if ($material_position['stuecklistestufe'] == 0) { + if ($material_position['stuecklistestufe'] == 0 && $material_position['lagerartikel']) { $result = $this->app->erp->LagerAuslagernRegal($material_position['artikel'],$global_standardlager,$menge_artikel_auslagern,$global_projekt,'Produktion '.$produktion_belegnr); if ($result != 1) { $msg .= "
Kritischer Fehler beim Ausbuchen! (Position ".$material_position['id'].", Menge ".$menge_artikel_auslagern.").
". @@ -834,7 +838,7 @@ 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); @@ -1046,7 +1050,7 @@ class Produktion { } if($produktion_from_db['standardlager'] == 0) { - $msg .= "
Kein Lager ausgewählt.
"; + $msg .= "
Kein Materiallager ausgewählt.
"; } $this->app->YUI->AutoComplete("projekt", "projektname", 1); @@ -1054,10 +1058,13 @@ class Produktion { $this->app->YUI->AutoComplete("auftragid", "auftrag", 1); $this->app->YUI->AutoComplete("artikel_planen", "stuecklistenartikel"); + $this->app->YUI->AutoComplete("artikel_hinzu", "artikelnummer"); $this->app->YUI->AutoComplete("standardlager", "lagerplatz"); $this->app->YUI->AutoComplete("ziellager", "lagerplatz"); + $this->app->YUI->AutoComplete("artikel", "artikelnummer"); + $this->app->Tpl->Set('STANDARDLAGER', $this->app->erp->ReplaceLagerPlatz(false,$produktion_from_db['standardlager'],false)); // Convert ID to form display $this->app->YUI->DatePicker("datum"); @@ -1172,6 +1179,8 @@ class Produktion { break; } + $this->app->Tpl->Set('PRODUKTION_ID',$id); + $this->app->Tpl->Set('MESSAGE', $msg); $this->produktion_minidetail('MINIDETAILINEDIT'); $this->app->Tpl->Parse('PAGE', "produktion_edit.tpl"); @@ -1267,7 +1276,7 @@ class Produktion { $menge_moeglich = PHP_INT_MAX; - $sql = "SELECT id, artikel, SUM(menge) as menge, geliefert_menge FROM produktion_position pp WHERE produktion=$produktion_id AND stuecklistestufe=0 GROUP BY artikel"; + $sql = "SELECT pp.id, artikel, SUM(menge) as menge, geliefert_menge FROM produktion_position pp INNER JOIN artikel a ON pp.artikel = a.id WHERE pp.produktion=$produktion_id AND pp.stuecklistestufe=0 AND a.lagerartikel != 0 GROUP BY artikel"; $materialbedarf_gesamt = $this->app->DB->SelectArr($sql); $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"; diff --git a/www/pages/produktion_position.php b/www/pages/produktion_position.php index 19477b3d..91de8f31 100644 --- a/www/pages/produktion_position.php +++ b/www/pages/produktion_position.php @@ -86,7 +86,6 @@ class Produktion_position { } if ($go_to_production) { - if ($pid == 0) { $id = (int) $this->app->Secure->GetGET('id'); $sql = "SELECT p.status, p.id from produktion p INNER JOIN produktion_position pp ON pp.produktion = p.id WHERE pp.id = $id"; @@ -138,17 +137,27 @@ class Produktion_position { if (empty($id)) { // New item $id = 'NULL'; - } + $produktion_id = $this->app->Secure->GetGET('produktion'); + $sql = "SELECT p.status from produktion p WHERE p.id = $produktion_id"; + $result = $this->app->DB->SelectArr($sql)[0]; + $status = $result['status']; + } else { + $sql = "SELECT p.status, p.id from produktion p INNER JOIN produktion_position pp ON pp.produktion = p.id WHERE pp.id = $id"; + $result = $this->app->DB->SelectArr($sql)[0]; + $status = $result['status']; + $produktion_id = $result['id']; + } - $sql = "SELECT p.status, p.id from produktion p INNER JOIN produktion_position pp ON pp.produktion = p.id WHERE pp.id = $id"; - $result = $this->app->DB->SelectArr($sql)[0]; - $status = $result['status']; - $produktion_id = $result['id']; + $input['produktion'] = $produktion_id; $sql = "SELECT FORMAT(menge,0) as menge FROM produktion_position WHERE produktion = $produktion_id AND stuecklistestufe = 1"; $result = $this->app->DB->SelectArr($sql)[0]; $planmenge = $result['menge']; + if ($planmenge == 0) { + $this->produktion_position_edit_end("Keine Planung vorhanden.",true, true, $produktion_id); + } + if ($submit != '') { @@ -168,7 +177,7 @@ class Produktion_position { // Only allow quantities that are a multiple of the target quantity if ($input['menge'] % $planmenge != 0) { - $this->produktion_position_edit_end("Positionsmenge muss Vielfaches von $planmenge sein.",true, true); + $this->produktion_position_edit_end("Positionsmenge muss Vielfaches von $planmenge sein.",true, true, $produktion_id); } $columns = "id, "; @@ -200,7 +209,7 @@ class Produktion_position { } else { $msg = "Die Einstellungen wurden erfolgreich übernommen."; } - $this->produktion_position_edit_end($msg,false,true); + $this->produktion_position_edit_end($msg,false,true,$produktion_id); } @@ -222,8 +231,8 @@ class Produktion_position { $this->app->Tpl->Add('ANGEZEIGTERNAME', $angezeigtername); */ - //$this->app->YUI->AutoComplete("artikel", "artikelnummer"); - $this->app->YUI->AutoComplete("artikel", "lagerartikelnummer"); + $this->app->YUI->AutoComplete("artikel", "artikelnummer"); + //$this->app->YUI->AutoComplete("artikel", "lagerartikelnummer"); $this->app->Tpl->Set('ARTIKEL',$this->app->erp->ReplaceArtikel(false, $result[0]['artikel'], false)); // Convert from form to db $this->app->Tpl->Set('PRODUKTIONID',$result[0]['produktion']);