Die hoffentlich letzten Änderungen um den Bug 935 zu schliessen. Ferner eine Anpassun...
authorJan Büren <information@richardson-bueren.de>
Sat, 25 Apr 2009 06:49:45 +0000 (06:49 +0000)
committerJan Büren <information@richardson-bueren.de>
Sat, 25 Apr 2009 06:49:45 +0000 (06:49 +0000)
SL/WH.pm
bin/mozilla/wh.pl

index 2c4d759..b93eebd 100644 (file)
--- 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. <br>";       # 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. <br>";   # 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);
index 1ec6449..c8cffcd 100644 (file)
@@ -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)};