Produktion ziellagerplatz, use lagerplatz of artikel or produktion

This commit is contained in:
OpenXE 2022-11-16 10:37:45 +00:00
parent 8518e327aa
commit 3ee518af03
2 changed files with 86 additions and 27 deletions

View File

@ -123,7 +123,7 @@
<div [POSITIONEN_TAB_VISIBLE]>
<div id="tabs-2">
[MESSAGE]
<form action="" method="post">
<form action="#tabs-2" method="post">
[FORMHANDLEREVENT]
<div class="row">
<div class="row-height">
@ -140,7 +140,7 @@
</div>
<div class="row">
<div class="row-height">
<div class="col-xs-14 col-md-6 col-md-height">
<div class="col-xs-14 col-md-5 col-md-height">
<div class="inside inside-full-height">
<fieldset>
<legend [AKTION_PLANEN_VISIBLE]>{|Zu produzierende Artikel|}</legend>
@ -169,6 +169,7 @@
<td>[MENGE_PRODUZIERBAR]</td>
</tr>
</tr>
<tr [ARTIKEL_MENGE_VISIBLE]>
<td>{|Ausschuss|}:</td>
<td>[MENGEAUSSCHUSS]</td>
</tr>
@ -176,15 +177,23 @@
</fieldset>
</div>
</div>
<div class="col-xs-14 col-md-6 col-md-height">
<div class="col-xs-14 col-md-5 col-md-height">
<div class="inside inside-full-height">
<fieldset>
<legend [AKTION_PRODUZIEREN_VISIBLE]>{|Parameter|}</legend>
<table width="100%" border="0" class="mkTableFormular">
<tr [AKTION_PRODUZIEREN_VISIBLE]><td>{|Menge|}:</td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><input type="text" name="menge_produzieren" id="menge_produzieren" value="[MENGE_PRODUZIEREN]" size="20" style="width:100%;"></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td>{|Ausschuss|}:</td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><input type="text" name="menge_ausschuss" id="menge_ausschuss" value="[MENGE_AUSSCHUSS]" size="20" style="width:100%;"></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]>
<td>{|Menge|}:</td>
<td><input type="text" name="menge_produzieren" id="menge_produzieren" value="[MENGE_PRODUZIEREN]" size="20""></td>
</tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]>
<td>{|Ausschuss|}:</td>
<td><input type="text" name="menge_ausschuss" id="menge_ausschuss" value="[MENGE_AUSSCHUSS]" size="20"></td>
</tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]>
<td>{|Ziellager|}:</td>
<td><input type="text" name="ziellager" id="ziellager" value="[ZIELLAGER]" size="20"></td>
</tr>
</table>
</fieldset>
</div>
@ -193,14 +202,23 @@
<div class="inside inside-full-height">
<fieldset>
<table width="100%" border="0" class="mkTableFormular">
<legend>{|Aktionen|}</legend>
<tr [AKTION_PLANEN_VISIBLE]><td><button name="submit" value="planen" class="ui-button-icon" style="width:100%;">Planen</button></td></tr>
<tr [AKTION_FREIGEBEN_VISIBLE]><td><button name="submit" value="freigeben" class="ui-button-icon" style="width:100%;">Freigeben</button></td></tr>
<legend>{|Anpassen|}</legend>
<tr [AKTION_PLANEN_VISIBLE]><td><button name="submit" value="planen" class="ui-button-icon" style="width:100%;">Planen</button></td></tr>
<tr [AKTION_LEEREN_VISIBLE]><td><button name="submit" value="leeren" class="ui-button-icon" style="width:100%;">Leeren</button></td></tr>
<tr [AKTION_FREIGEBEN_VISIBLE]><td><button name="submit" value="freigeben" class="ui-button-icon" style="width:100%;">Freigeben</button></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><button name="submit" value="teilen" class="ui-button-icon" style="width:100%;">Teilen</button></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><button name="submit" value="anpassen" class="ui-button-icon" style="width:100%;">Anpassen</button></td></tr>
</table>
</fieldset>
</div>
</div>
<div class="col-xs-14 col-md-2 col-md-height">
<div class="inside inside-full-height">
<fieldset>
<table width="100%" border="0" class="mkTableFormular">
<legend>{|Produzieren|}</legend>
<tr [AKTION_RESERVIEREN_VISIBLE]><td><button name="submit" value="reservieren" class="ui-button-icon" style="width:100%;">Reservieren</button></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><button name="submit" value="produzieren" class="ui-button-icon" style="width:100%;">Produzieren</button></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><button name="submit" value="teilen" class="ui-button-icon" style="width:100%;">Teilproduktion erstellen</button></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><button name="submit" value="anpassen" class="ui-button-icon" style="width:100%;">Anpassen</button></td></tr>
<tr [AKTION_LEEREN_VISIBLE]><td><button name="submit" value="leeren" class="ui-button-icon" style="width:100%;">Leeren</button></td></tr>
<tr [AKTION_PRODUZIEREN_VISIBLE]><td><button name="submit" value="produzieren" class="ui-button-icon" style="width:100%;">Produzieren</button></td></tr>
<tr [AKTION_ABSCHLIESSEN_VISIBLE]><td><button name="submit" value="abschliessen" class="ui-button-icon" style="width:100%;">Abschliessen</button></td></tr>
</table>
</fieldset>

View File

@ -366,7 +366,6 @@ class Produktion {
// Write to database
// Add checks here
$input['standardlager'] = $this->app->erp->ReplaceLagerPlatz(true,$input['standardlager'],true); // Parameters: Target db?, value, from form?
if (empty($input['datum'])) {
$input['datum'] = date("Y-m-d");
@ -376,7 +375,6 @@ class Produktion {
if ($id == 'NULL') {
$input['status'] = 'angelegt';
$this->ProtokollSchreiben($id,'Produktion angelegt');
}
$input['datumauslieferung'] = $this->app->erp->ReplaceDatum(true,$input['datumauslieferung'],true);
@ -405,7 +403,9 @@ class Produktion {
$id = $this->app->DB->GetInsertID();
if (!empty($id)) {
$msg .= $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
$this->ProtokollSchreiben($id,'Produktion angelegt');
$msg .= "<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>";
$msg = $this->app->erp->base64_url_encode($msg);
header("Location: index.php?module=produktion&action=edit&id=$id&msg=$msg");
}
@ -459,7 +459,7 @@ class Produktion {
$this->app->DB->Update($sql);
$msg .= "<div class=\"success\">Planung angelegt.</div>";
$this->ProtokollSchreiben($id,'Produktion geplant');
$this->ProtokollSchreiben($id,'Produktion geplant ($artikel_planen_menge)');
break;
case 'freigeben':
@ -573,17 +573,55 @@ class Produktion {
break;
}
// Insert produced parts into stock
// Insert produced parts into stock
// Check target stock, if not existing, use default stock of article, if not given use production stock
$ziellager_from_form = $this->app->erp->ReplaceLagerPlatz(true,$this->app->Secure->GetPOST('ziellager'),true); // Parameters: Target db?, value, from form?
$use_artikel_lager = false;
$ziellager = $global_standardlager;
if (!empty($ziellager_from_form)) {
$sql = "SELECT id FROM lager_platz WHERE id = ".$ziellager_from_form;
$result = $this->app->DB->SelectArr($sql);
if (!empty($result)) {
$ziellager = $ziellager_from_form;
} else {
$use_artikel_lager = true;
}
} else {
$use_artikel_lager = true;
}
if ($use_artikel_lager) {
$sql = "SELECT lager_platz FROM artikel WHERE id = ".$produktionsartikel_position['artikel'];
$result = $this->app->DB->SelectArr($sql);
if (!empty($result) && !empty($result[0]['lager_platz'])) {
$ziellager = $result[0]['lager_platz'];
} else {
}
} else {
}
$sql = "SELECT kurzbezeichnung FROM lager_platz WHERE id = $ziellager";
$lagername = $this->app->DB->SelectArr($sql)[0]['kurzbezeichnung'];
// ERPAPI
// function LagerEinlagern($artikel,$menge,$regal,$projekt,$grund="",$importer="",$paketannahme="",$doctype = "", $doctypeid = 0, $vpeid = 0, $permanenteinventur = 0, $adresse = 0)
$this->app->erp->LagerEinlagern($produktionsartikel_position['artikel'],$menge_produzieren,$global_standardlager,$global_projekt,"Produktion $global_produktionsnummer");
$this->app->erp->LagerEinlagern($produktionsartikel_position['artikel'],$menge_produzieren,$ziellager,$global_projekt,"Produktion $global_produktionsnummer");
// No error handling in LagerEinlagern...
$sql = "UPDATE produktion SET mengeerfolgreich = mengeerfolgreich + $menge_produzieren, mengeausschuss = mengeausschuss + $menge_ausschuss WHERE id = $id";
$this->app->DB->Update($sql);
$msg .= "<div class=\"info\">Produktion durchgeführt.</div>";
$this->ProtokollSchreiben($id,"Produktion durchgef&uuml;hrt ($menge_produzieren, davon $menge_ausschuss Ausschuss)");
if ($menge_ausschuss < $menge_produzieren) {
$lagertext = ", eingelagert in $lagername";
}
$text = "Produktion durchgef&uuml;hrt ($menge_produzieren, davon $menge_ausschuss Ausschuss)$lagertext";
$msg .= "<div class=\"info\">$text.</div>";
$this->ProtokollSchreiben($id,$text);
break;
case 'teilen':
@ -714,8 +752,10 @@ class Produktion {
}
$msg .= $this->app->erp->base64_url_encode("<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>");
header("Location: index.php?module=produktion&action=list&msg=$msg");
$this->ProtokollSchreiben($id,"Teilproduktion erstellt: ".$produktion_neu['belegnr']." (Menge $menge_abteilen)");
$msg .= "<div class=\"success\">Das Element wurde erfolgreich angelegt.</div>";
$msg = $this->app->erp->base64_url_encode($msg);
header("Location: index.php?module=produktion&action=edit&id=$produktion_neu_id&msg=$msg");
break;
case 'leeren':
@ -981,6 +1021,8 @@ class Produktion {
$this->app->YUI->AutoComplete("artikel_planen", "stuecklistenartikel");
$this->app->YUI->AutoComplete("standardlager", "lagerplatz");
$this->app->YUI->AutoComplete("ziellager", "lagerplatz");
$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");
@ -1120,13 +1162,11 @@ class Produktion {
}
}
public function produktion_minidetail($parsetarget='',$menu=true) {
$id = $this->app->Secure->GetGET('id');
$fortschritt = $this->MengeFortschritt($id, 0);
$fortschritt = $this->MengeFortschritt((int) $id, 0);
if (!empty($fortschritt)) {
$this->app->Tpl->Set('MENGE_GEPLANT',$fortschritt['geplant']);
@ -1167,6 +1207,7 @@ class Produktion {
$input['datum'] = $this->app->Secure->GetPOST('datum');
$input['standardlager'] = $this->app->Secure->GetPOST('standardlager');
$input['standardlager'] = $this->app->erp->ReplaceLagerPlatz(true,$input['standardlager'],true); // Parameters: Target db?, value, from form?
$input['reservierart'] = $this->app->Secure->GetPOST('reservierart');
$input['auslagerart'] = $this->app->Secure->GetPOST('auslagerart');