Revision 2e50c674
Von Jan Büren vor fast 15 Jahren hinzugefügt
SL/WH.pm | ||
---|---|---|
164 | 164 |
(SELECT id FROM transfer_type WHERE direction = 'out' AND description = 'used'))|; |
165 | 165 |
my $sthTransferPartSQL = prepare_query($form, $dbh, $transferPartSQL); |
166 | 166 |
|
167 |
my $kannNichtFertigen =""; # der return-string für die fehlermeldung inkl. welche waren zum fertigen noch fehlen |
|
167 |
# der return-string für die fehlermeldung inkl. welche waren zum fertigen noch fehlen |
|
168 |
my $kannNichtFertigen ="Für dieses Erzeugnis sind keine Einzelteile definiert. |
|
169 |
Dementsprechend kann auch nichts hergestellt werden"; |
|
168 | 170 |
|
169 | 171 |
while (my $hash_ref = $sth_part_qty_assembly->fetchrow_hashref()) { # Schleife für $query=select parts_id,qty from assembly |
170 |
|
|
172 |
$kannNichtFertigen =""; # Wieder auf erfolgreich setzen LEER == keine Fehlermeldung |
|
171 | 173 |
my $partsQTY = $hash_ref->{qty} * $params{qty}; # benötigte teile * anzahl erzeugnisse |
172 | 174 |
my $currentPart_ID = $hash_ref->{parts_id}; |
173 | 175 |
|
... | ... | |
176 | 178 |
|
177 | 179 |
if ($partsQTY > $max_parts){ |
178 | 180 |
# Gibt es hier ein Problem mit nicht "escapten" Zeichen? 25.4.09 Antwort: Ja. Aber erst wenn im Frontend die locales-Funktion aufgerufen wird |
179 |
$kannNichtFertigen .= "Zum Fertigen fehlen:" . abs($partsQTY - $max_parts) . " Einheiten der Ware:" . get_part_description($self, parts_id => $currentPart_ID) . ", um das Erzeugnis herzustellen. <br>"; # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen
|
|
181 |
$kannNichtFertigen .= "Zum Fertigen fehlen:" . abs($partsQTY - $max_parts) . " Einheiten der Ware:" . $self->get_part_description(parts_id => $currentPart_ID) . ", um das Erzeugnis herzustellen. <br>"; # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen
|
|
180 | 182 |
next; # die weiteren Überprüfungen sind unnötig |
181 | 183 |
} |
182 | 184 |
|
... | ... | |
200 | 202 |
if ($tmpPartsQTY > $temppart_qty) { # wir haben noch mehr waren zum wegbuchen. Wir buchen den kompletten Lagerplatzbestand und zählen die Hilfsvariable runter |
201 | 203 |
$tmpPartsQTY = $tmpPartsQTY - $temppart_qty; |
202 | 204 |
$temppart_qty = $temppart_qty * -1; # beim analyiseren des sql-trace, war dieser wert positiv, wenn * -1 als berechnung in der parameter-übergabe angegeben wird. Dieser Wert IST und BLEIBT positiv!! Hilfe. Liegt das daran, dass dieser Wert aus einem SQL-Statement stammt? |
203 |
do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . get_part_description($self, parts_id => $params{assembly_id}), $params{login}, $temppart_qty);
|
|
205 |
do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . $self->get_part_description(parts_id => $params{assembly_id}), $params{login}, $temppart_qty);
|
|
204 | 206 |
|
205 | 207 |
# hier ist noch ein fehler am besten mit definierten erzeugnissen debuggen 02/2009 jb |
206 | 208 |
# idee: ausbuch algorithmus mit rekursion lösen und an- und abschaltbar machen |
... | ... | |
208 | 210 |
# auf jeden fall war der internal-server-error nach aktivierung von strict und warnings plus ein paar my-definitionen weg |
209 | 211 |
} else { # okay, wir haben weniger oder gleich Waren die wir wegbuchen müssen, wir können also aufhören |
210 | 212 |
$tmpPartsQTY *=-1; |
211 |
do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . get_part_description($self, parts_id => $params{assembly_id}), $params{login}, $tmpPartsQTY);
|
|
213 |
do_statement($form, $sthTransferPartSQL, $transferPartSQL, $currentPart_ID, $params{dst_warehouse_id}, $temppart_bin_id, $temppart_chargenumber, 'Verbraucht für ' . $self->get_part_description(parts_id => $params{assembly_id}), $params{login}, $tmpPartsQTY);
|
|
212 | 214 |
last; # beendet die schleife (springt zum letzten element) |
213 | 215 |
} |
214 | 216 |
} # ende while SELECT SUM(qty), bin_id, chargenumber FROM inventory WHERE warehouse_id |
... | ... | |
811 | 813 |
my $self = shift; |
812 | 814 |
my %params = @_; |
813 | 815 |
|
814 |
Common::check_params(\%params, qw(parts_id )); #die brauchen wir
|
|
816 |
Common::check_params(\%params, qw(parts_id)); #die brauchen wir |
|
815 | 817 |
|
816 | 818 |
my $myconfig = \%main::myconfig; |
817 | 819 |
my $form = $main::form; |
Auch abrufbar als: Unified diff
Fehlerbehandlung falls beim Erzeugnis fertigen keine entsprechenden Einzelwaren definiert sind. Ferner besseres objektorientiertes Aufrufverhalten ->get_part_description statt get_part_description()