mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-24 13:40:29 +01:00
Bugfix produktion non-stock artikel
This commit is contained in:
parent
cad0103b7f
commit
1fdd6dbf95
@ -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.';
|
||||
$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.';
|
||||
|
@ -191,7 +191,7 @@
|
||||
<td><input type="number" min="0" name="menge_ausschuss_produzieren" id="menge_ausschuss_produzieren" value="[MENGE_AUSSCHUSS_PRODUZIEREN]" size="20"></td>
|
||||
</tr>
|
||||
<tr [AKTION_PRODUZIEREN_VISIBLE]>
|
||||
<td>{|Ziellager|}:</td>
|
||||
<td>{|Ziellager|}:</td><i>Info like this.</i>
|
||||
<td><input type="text" name="ziellager" id="ziellager" value="[ZIELLAGER]" size="20"></td>
|
||||
</tr>
|
||||
</table>
|
||||
@ -243,15 +243,24 @@
|
||||
</div>
|
||||
<div id="tabs-3">
|
||||
[MESSAGE]
|
||||
<form action="" method="post">
|
||||
<form action="index.php?module=produktion_position&action=edit&produktion=[PRODUKTION_ID]" method="post">
|
||||
[FORMHANDLEREVENT]
|
||||
<div class="row">
|
||||
<div class="row-height">
|
||||
<div class="col-xs-12 col-md-12 col-md-height">
|
||||
<div class="inside inside-full-height">
|
||||
<fieldset>
|
||||
<legend>{|Positionen|}</legend>
|
||||
[PRODUKTION_POSITION_SOURCE_POSITION_TABELLE]
|
||||
<legend>{|Positionen|}</legend>
|
||||
[PRODUKTION_POSITION_SOURCE_POSITION_TABELLE]
|
||||
<table width="100%" border="0" class="mkTableFormular">
|
||||
<tr [AKTION_FREIGEBEN]>
|
||||
<td>{|Artikel|}:</td>
|
||||
<td><input type="text" name="artikel" id="artikel" size="20"></td>
|
||||
<td>{|Menge|}:</td>
|
||||
<td><input type="number" min="0" name="menge" id="menge" size="20"></td>
|
||||
<td><button name="submit" value="hinzufuegen" class="ui-button-icon" style="width:100%;">Hinzufügen</button></td>
|
||||
</tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -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 = "<table cellpadding=0 cellspacing=0><tr><td nowrap>" . "<a href=\"index.php?module=produktion_position&action=edit&id=%value%\"><img src=\"./themes/{$app->Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\"></a> <a href=\"#\" onclick=DeleteDialog(\"index.php?module=produktion_position&action=delete&id=%value%\");>" . "<img src=\"themes/{$app->Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\"></a>" . "</td></tr></table>";
|
||||
} 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 .= "<div class=\"error\">Kritischer Fehler beim Ausbuchen! (Position ".$material_position['id'].", Menge ".$menge_artikel_auslagern.").</div>".
|
||||
@ -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 .= "<div class=\"error\">Kein Lager ausgewählt.</div>";
|
||||
$msg .= "<div class=\"error\">Kein Materiallager ausgewählt.</div>";
|
||||
}
|
||||
|
||||
$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";
|
||||
|
@ -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']);
|
||||
|
Loading…
Reference in New Issue
Block a user