Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 64c39b74

Von Jan Büren vor mehr als 15 Jahren hinzugefügt

  • ID 64c39b744b9fba960b32315ac7ea36477c85e8a5
  • Vorgänger 157de633
  • Nachfolger eb3f8a46

Die hoffentlich letzten Änderungen um den Bug 935 zu schliessen. Ferner eine Anpassung im Frontend, um die Fehlermeldung bei Artikeln mit double-quotes 'erscheinen' zu lassen

Unterschiede anzeigen:

SL/WH.pm
138 138
  my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
139 139

  
140 140

  
141
# Ablauferklärung
142
#
143
# ... Standard-Check oben Ende. Hier die eigentliche SQL-Abfrage
144
# select parts_id,qty from assembly where id=1064;
145
# Erweiterung für bug 935 am 23.4.09 - Erzeugnisse können Dienstleistungen enthalten, die ja nicht 'lagerbar' sind.
146
# 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;
147
# Erweiterung für bug 23.4.09 -2 Erzeugnisse in Erzeugnissen können nicht ausgelagert werden, wenn assembly nicht überprüft wird ...
148
# 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;
141
  # Ablauferklärung
142
  #
143
  # ... Standard-Check oben Ende. Hier die eigentliche SQL-Abfrage
144
  # select parts_id,qty from assembly where id=1064;
145
  # Erweiterung für bug 935 am 23.4.09 - Erzeugnisse können Dienstleistungen enthalten, die ja nicht 'lagerbar' sind.
146
  # 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;
147
  # Erweiterung für bug 23.4.09 -2 Erzeugnisse in Erzeugnissen können nicht ausgelagert werden, wenn assembly nicht überprüft wird ...
148
  # patch von joachim eingespielt 24.4.2009:
149
  # my $query    = qq|select parts_id,qty from assembly inner join parts
150
  # on assembly.parts_id = parts.id  where assembly.id = ? and
151
  # (inventory_accno_id IS NOT NULL or parts.assembly = TRUE)|;
149 152

  
150
# 
151
# 
152 153

  
153 154
  # my $query    = qq|select parts_id,qty from assembly where id = ?|;
154
  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|;
155
  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)|;
155 156

  
156 157
  my $sth_part_qty_assembly      = prepare_execute_query($form, $dbh, $query, $params{assembly_id});
157 158

  
158
# Hier wird das prepared Statement für die Schleife über alle Lagerplätze vorbereitet
159
  # Hier wird das prepared Statement für die Schleife über alle Lagerplätze vorbereitet
159 160
  my $transferPartSQL = qq|INSERT INTO inventory (parts_id, warehouse_id, bin_id, chargenumber, comment, employee_id, qty, trans_id, trans_type_id)
160 161
			    VALUES (?, ?, ?, ?, ?,(SELECT id FROM employee WHERE login = ?), ?, nextval('id'), 
161 162
				    (SELECT id FROM transfer_type WHERE direction = 'out' AND description = 'used'))|;
......
172 173
    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
173 174

  
174 175
    if ($partsQTY  > $max_parts){
175

  
176
      # Gibt es hier ein Problem mit nicht "escapten" Zeichen?
177
	$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
176
      # Gibt es hier ein Problem mit nicht "escapten" Zeichen? 25.4.09 Antwort: Ja.  Aber erst wenn im Frontend die locales-Funktion aufgerufen wird
177
      $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
178
      next;	# die weiteren Überprüfungen sind unnötig
178 179
    }
179 180

  
180
# Eine kurze Vorabfrage, um den Lagerplatz und die Chargennummber zu bestimmen
181
# Offen: Die Summe über alle Lagerplätze wird noch nicht gebildet
182
# Gelöst: Wir haben vorher schon die Abfrage durchgeführt, ob wir fertigen können.
183
# Noch besser gelöst: Wir laufen durch alle benötigten Waren zum Fertigen und geben eine Rückmeldung an den Benutzer was noch fehlt
184
# und lösen den Rest dann so wie bei xplace im Barcode-Programm
185
# S.a. Kommentar im bin/mozilla-Code mb übernimmt und macht das in ordentlich
181
    # Eine kurze Vorabfrage, um den Lagerplatz und die Chargennummber zu bestimmen
182
    # Offen: Die Summe über alle Lagerplätze wird noch nicht gebildet
183
    # Gelöst: Wir haben vorher schon die Abfrage durchgeführt, ob wir fertigen können.
184
    # Noch besser gelöst: Wir laufen durch alle benötigten Waren zum Fertigen und geben eine Rückmeldung an den Benutzer was noch fehlt
185
    # und lösen den Rest dann so wie bei xplace im Barcode-Programm
186
    # S.a. Kommentar im bin/mozilla-Code mb übernimmt und macht das in ordentlich
186 187

  
187 188
    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|;
188 189
    my $tempsth	  =	prepare_execute_query($form, $dbh, $tempquery, $params{dst_warehouse_id}, $currentPart_ID);
bin/mozilla/wh.pl
377 377
# 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
378 378
# Manko ist derzeit noch, dass unterschiedliche Lagerplätze, bzw. das Quelllager an sich nicht ausgewählt werden können.
379 379
# Laut Absprache in KW11 09 übernimmt mb hier den rest im April ... jb 18.3.09
380

  
380 381
sub create_assembly {
381
#  my $maxcreate=shift;	# oben begonnene auskommentierte idee, hier als motiv weiterverfolgen (umkehrungen und sequenzierungen als stilmittel nicht vergessen)
382 382
  $lxdebug->enter_sub();
383 383

  
384 384
  $form->{qty} = $form->parse_amount(\%myconfig, $form->{qty});
385
#  my $maxcreate = WH->check_assembly_max_create(assembly_id	=>	$form->{parts_id});
386 385
  if ($form->{qty} <= 0) {
387 386
    $form->show_generic_error($locale->text('Invalid quantity.'), 'back_button' => 1);
388
  } #else { if ($form->{qty} > $maxcreate) {	#s.o.
389
#	    $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1);
390
#	    $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1);
391
#	  } 
392
#  }
387
  }
388
  # TODO Es wäre schön, hier schon die maximale Anzahl der zu fertigenden Erzeugnisse zu haben  
389
  #else { if ($form->{qty} > $maxcreate) {	#s.o.
390
  #	    $form->show_generic_error($locale->text('Can not create that quantity with current stock'), 'back_button' => 1);
391
  #	    $form->show_generic_error('Maximale Stückzahl' . $maxcreate , 'back_button' => 1);
392
  #	  } 
393
  #  }
393 394

  
394 395
  if (!$form->{warehouse_id} || !$form->{bin_id}) {
395 396
    $form->error($locale->text('The warehouse or the bin is missing.'));
396 397
  }
397
# 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
398
# Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen
398
  # 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
399
  # Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen
399 400
  my %TRANSFER = (
400 401
    'transfer_type'    => 'assembly',
401 402
    'login'	=> $form->{login},
......
405 406
    'assembly_id'         => $form->{parts_id},
406 407
    'qty'              => $form->{qty},
407 408
    'unit'             => $form->{unit},
408
    'comment'          => $form->{comment},
409
    'comment'          => $form->{comment}
409 410
  );
410 411

  
411 412
  my $ret = WH->transfer_assembly (%TRANSFER);
412
# Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick...
413
# Ideen? jb 18.3.09
413
  # Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick...
414
  # Ideen? jb 18.3.09
414 415
  if ($ret ne "1"){
415
    $form->show_generic_error($locale->text($ret), 'back_button' => 1);
416
    # 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
417
    $form->show_generic_error($ret, 'back_button' => 1);
416 418
  }
417 419

  
418 420
  delete @{$form}{qw(parts_id partnumber description qty unit chargenumber comment)};

Auch abrufbar als: Unified diff