From 64c39b744b9fba960b32315ac7ea36477c85e8a5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20B=C3=BCren?= Date: Sat, 25 Apr 2009 06:49:45 +0000 Subject: [PATCH] =?utf8?q?Die=20hoffentlich=20letzten=20=C3=84nderungen=20?= =?utf8?q?um=20den=20Bug=20935=20zu=20schliessen.=20Ferner=20eine=20Anpass?= =?utf8?q?ung=20im=20Frontend,=20um=20die=20Fehlermeldung=20bei=20Artikeln?= =?utf8?q?=20mit=20double-quotes=20'erscheinen'=20zu=20lassen?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- SL/WH.pm | 43 ++++++++++++++++++++++--------------------- bin/mozilla/wh.pl | 28 +++++++++++++++------------- 2 files changed, 37 insertions(+), 34 deletions(-) diff --git a/SL/WH.pm b/SL/WH.pm index 2c4d7591f..b93eebdd6 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -138,24 +138,25 @@ sub transfer_assembly { my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig); -# Ablauferklärung -# -# ... Standard-Check oben Ende. Hier die eigentliche SQL-Abfrage -# select parts_id,qty from assembly where id=1064; -# Erweiterung für bug 935 am 23.4.09 - Erzeugnisse können Dienstleistungen enthalten, die ja nicht 'lagerbar' sind. -# select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id where assembly.id=1066 and inventory_accno_id IS NOT NULL; -# Erweiterung für bug 23.4.09 -2 Erzeugnisse in Erzeugnissen können nicht ausgelagert werden, wenn assembly nicht überprüft wird ... -# select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id where assembly.id=1066 and parts.inventory_accno_id IS NOT NULL and parts.assembly=false; + # Ablauferklärung + # + # ... Standard-Check oben Ende. Hier die eigentliche SQL-Abfrage + # select parts_id,qty from assembly where id=1064; + # Erweiterung für bug 935 am 23.4.09 - Erzeugnisse können Dienstleistungen enthalten, die ja nicht 'lagerbar' sind. + # select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id where assembly.id=1066 and inventory_accno_id IS NOT NULL; + # Erweiterung für bug 23.4.09 -2 Erzeugnisse in Erzeugnissen können nicht ausgelagert werden, wenn assembly nicht überprüft wird ... + # patch von joachim eingespielt 24.4.2009: + # my $query = qq|select parts_id,qty from assembly inner join parts + # on assembly.parts_id = parts.id where assembly.id = ? and + # (inventory_accno_id IS NOT NULL or parts.assembly = TRUE)|; -# -# # my $query = qq|select parts_id,qty from assembly where id = ?|; - my $query = qq|select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id where assembly.id = ? and inventory_accno_id IS NOT NULL and parts.assembly = FALSE|; + my $query = qq|select parts_id,qty from assembly inner join parts on assembly.parts_id = parts.id where assembly.id = ? and (inventory_accno_id IS NOT NULL or parts.assembly = TRUE)|; my $sth_part_qty_assembly = prepare_execute_query($form, $dbh, $query, $params{assembly_id}); -# Hier wird das prepared Statement für die Schleife über alle Lagerplätze vorbereitet + # Hier wird das prepared Statement für die Schleife über alle Lagerplätze vorbereitet my $transferPartSQL = qq|INSERT INTO inventory (parts_id, warehouse_id, bin_id, chargenumber, comment, employee_id, qty, trans_id, trans_type_id) VALUES (?, ?, ?, ?, ?,(SELECT id FROM employee WHERE login = ?), ?, nextval('id'), (SELECT id FROM transfer_type WHERE direction = 'out' AND description = 'used'))|; @@ -172,17 +173,17 @@ sub transfer_assembly { my $max_parts = get_max_qty_parts($self, parts_id => $currentPart_ID, warehouse_id => $params{dst_warehouse_id}); #$self angeben, damit die Standardkonvention (Name, Parameter) eingehalten wird if ($partsQTY > $max_parts){ - - # Gibt es hier ein Problem mit nicht "escapten" Zeichen? - $kannNichtFertigen .= "Zum Fertigen fehlen:" . abs($partsQTY) . " Stueck der Ware:" . get_part_description($self, parts_id => $currentPart_ID) . ", um das Erzeugnis herzustellen.
"; # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen + # Gibt es hier ein Problem mit nicht "escapten" Zeichen? 25.4.09 Antwort: Ja. Aber erst wenn im Frontend die locales-Funktion aufgerufen wird + $kannNichtFertigen .= "Zum Fertigen fehlen:" . abs($partsQTY - $max_parts) . " Stueck der Ware:" . get_part_description($self, parts_id => $currentPart_ID) . ", um das Erzeugnis herzustellen.
"; # Konnte die Menge nicht mit der aktuellen Anzahl der Waren fertigen + next; # die weiteren Überprüfungen sind unnötig } -# Eine kurze Vorabfrage, um den Lagerplatz und die Chargennummber zu bestimmen -# Offen: Die Summe über alle Lagerplätze wird noch nicht gebildet -# Gelöst: Wir haben vorher schon die Abfrage durchgeführt, ob wir fertigen können. -# Noch besser gelöst: Wir laufen durch alle benötigten Waren zum Fertigen und geben eine Rückmeldung an den Benutzer was noch fehlt -# und lösen den Rest dann so wie bei xplace im Barcode-Programm -# S.a. Kommentar im bin/mozilla-Code mb übernimmt und macht das in ordentlich + # Eine kurze Vorabfrage, um den Lagerplatz und die Chargennummber zu bestimmen + # Offen: Die Summe über alle Lagerplätze wird noch nicht gebildet + # Gelöst: Wir haben vorher schon die Abfrage durchgeführt, ob wir fertigen können. + # Noch besser gelöst: Wir laufen durch alle benötigten Waren zum Fertigen und geben eine Rückmeldung an den Benutzer was noch fehlt + # und lösen den Rest dann so wie bei xplace im Barcode-Programm + # S.a. Kommentar im bin/mozilla-Code mb übernimmt und macht das in ordentlich my $tempquery = qq|SELECT SUM(qty), bin_id, chargenumber FROM inventory WHERE warehouse_id = ? AND parts_id = ? GROUP BY bin_id, chargenumber having SUM(qty)>0|; my $tempsth = prepare_execute_query($form, $dbh, $tempquery, $params{dst_warehouse_id}, $currentPart_ID); diff --git a/bin/mozilla/wh.pl b/bin/mozilla/wh.pl index 1ec64494b..c8cffcd2d 100644 --- a/bin/mozilla/wh.pl +++ b/bin/mozilla/wh.pl @@ -377,25 +377,26 @@ sub transfer_stock_get_partunit { # wir brauchen eine hilfsfunktion, die nee. brauchen wir nicht. der algorithmus läuft genau wie bei check max_create, nur dass hier auch eine lagerbewegung (verbraucht) stattfindet # Manko ist derzeit noch, dass unterschiedliche Lagerplätze, bzw. das Quelllager an sich nicht ausgewählt werden können. # Laut Absprache in KW11 09 übernimmt mb hier den rest im April ... jb 18.3.09 + sub create_assembly { -# my $maxcreate=shift; # oben begonnene auskommentierte idee, hier als motiv weiterverfolgen (umkehrungen und sequenzierungen als stilmittel nicht vergessen) $lxdebug->enter_sub(); $form->{qty} = $form->parse_amount(\%myconfig, $form->{qty}); -# my $maxcreate = WH->check_assembly_max_create(assembly_id => $form->{parts_id}); if ($form->{qty} <= 0) { $form->show_generic_error($locale->text('Invalid quantity.'), 'back_button' => 1); - } #else { if ($form->{qty} > $maxcreate) { #s.o. -# $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1); -# $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1); -# } -# } + } + # TODO Es wäre schön, hier schon die maximale Anzahl der zu fertigenden Erzeugnisse zu haben + #else { if ($form->{qty} > $maxcreate) { #s.o. + # $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1); + # $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1); + # } + # } if (!$form->{warehouse_id} || !$form->{bin_id}) { $form->error($locale->text('The warehouse or the bin is missing.')); } -# WIESO war das nicht vorher schon ein %HASH?? ein hash ist ein hash! das hat mich mehr als eine Stunde gekostet herauszufinden. grr. jb 3.3.2009 -# Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen + # WIESO war das nicht vorher schon ein %HASH?? ein hash ist ein hash! das hat mich mehr als eine Stunde gekostet herauszufinden. grr. jb 3.3.2009 + # Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen my %TRANSFER = ( 'transfer_type' => 'assembly', 'login' => $form->{login}, @@ -405,14 +406,15 @@ sub create_assembly { 'assembly_id' => $form->{parts_id}, 'qty' => $form->{qty}, 'unit' => $form->{unit}, - 'comment' => $form->{comment}, + 'comment' => $form->{comment} ); my $ret = WH->transfer_assembly (%TRANSFER); -# Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick... -# Ideen? jb 18.3.09 + # Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick... + # Ideen? jb 18.3.09 if ($ret ne "1"){ - $form->show_generic_error($locale->text($ret), 'back_button' => 1); + # Die locale-Funktion kann keine Double-Quotes escapen, deswegen hier erstmal so (ein wahrscheinlich immerwährender Hotfix) s.a. Frage davor jb 25.4.09 + $form->show_generic_error($ret, 'back_button' => 1); } delete @{$form}{qw(parts_id partnumber description qty unit chargenumber comment)}; -- 2.20.1