Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 455d008c

Von Jan Büren vor fast 3 Jahren hinzugefügt

  • ID 455d008cdb1c6e53d442e94babfd6412cce34c38
  • Vorgänger 776972e4
  • Nachfolger 9ea55a4e

WH::transfer_assembly gegen S/H/Inventory::produce_assembly getauscht

Testfälle i.O., weiteres Feature für das Erzeugnis fertigen möglich
und im Changelog kommentiert. S.a. #429

Unterschiede anzeigen:

bin/mozilla/wh.pl
45 45
use SL::IC;
46 46
use SL::WH;
47 47
use SL::OE;
48
# use SL::Helper::Inventory qw(produce_assembly);
48
use SL::Helper::Inventory qw(produce_assembly);
49 49
use SL::Locale::String qw(t8);
50 50
use SL::ReportGenerator;
51 51
use SL::Presenter::Tag qw(checkbox_tag);
......
371 371
  $main::lxdebug->leave_sub();
372 372
}
373 373

  
374
# vorüberlegung jb 22.2.2009
375
# wir benötigen für diese funktion, die anzahl die vom erzeugnis hergestellt werden soll. vielleicht direkt per js fehleingaben verhindern?
376
# ferner dann nochmal mit check_asssembly_max_create gegenprüfen und dann transaktionssicher wegbuchen.
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
# Manko ist derzeit noch, dass unterschiedliche Lagerplätze, bzw. das Quelllager an sich nicht ausgewählt werden können.
379
# Laut Absprache in KW11 09 übernimmt mb hier den rest im April ... jb 18.3.09
380

  
381 374
sub create_assembly {
382 375
  $main::lxdebug->enter_sub();
383 376

  
......
389 382
  if ($form->{qty} <= 0) {
390 383
    $form->show_generic_error($locale->text('Invalid quantity.'));
391 384
  }
392
  # TODO Es wäre schön, hier schon die maximale Anzahl der zu fertigenden Erzeugnisse zu haben
393
  #else { if ($form->{qty} > $maxcreate) { #s.o.
394
  #     $form->show_generic_error($locale->text('Can not create that quantity with current stock'));
395
  #     $form->show_generic_error('Maximale Stückzahl' . $maxcreate);
396
  #   }
397
  #  }
398

  
399 385
  if (!$form->{warehouse_id} || !$form->{bin_id}) {
400 386
    $form->error($locale->text('The warehouse or the bin is missing.'));
401 387
  }
388
  # need part and bin object
389
  my ($bin, $assembly);
390
  $assembly = SL::DB::Manager::Part->find_by(id => $form->{parts_id}, part_type => 'assembly');
391
  $form->show_generic_error($locale->text('Invalid assembly')) unless ref $assembly eq 'SL::DB::Part';
392

  
393
  $bin = SL::DB::Manager::Bin->find_by(id => $form->{bin_id});
394
  $form->show_generic_error($locale->text('Invalid bin')) unless ref $bin eq 'SL::DB::Bin';
402 395

  
403 396
  if (!$::instance_conf->get_show_bestbefore) {
404
      $form->{bestbefore} = '';
397
    $form->{bestbefore} = '';
405 398
  }
406 399

  
407
  # 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
408
  # Anm. jb 18.3. vielleicht auch nur meine unwissenheit in perl-datenstrukturen
409
  my %TRANSFER = (
410
    'transfer_type'    => 'assembly',
411
    'login'            => $::myconfig{login},
412
    'dst_warehouse_id' => $form->{warehouse_id},
413
    'dst_bin_id'       => $form->{bin_id},
414
    'chargenumber'     => $form->{chargenumber},
415
    'bestbefore'       => $form->{bestbefore},
416
    'assembly_id'      => $form->{parts_id},
417
    'qty'              => $form->{qty},
418
    'unit'             => $form->{unit},
419
    'comment'          => $form->{comment}
400
  produce_assembly(
401
              part           => $assembly,               # target assembly
402
              qty            => $form->{qty},            # qty
403
              auto_allocate  => 1,
404
              bin            => $bin,                    # needed unless a global standard target is configured
405
              chargenumber   => $form->{chargenumber},   # optional
406
              bestbefore     => $form->{bestbefore},
407
              comment        => $form->{comment},        # optional
420 408
  );
421 409

  
422
  my $ret = WH->transfer_assembly (%TRANSFER);
423
  # Frage: Ich pack in den return-wert auch gleich die Fehlermeldung. Irgendwelche Nummern als Fehlerkonstanten definieren find ich auch nicht besonders schick...
424
  # Ideen? jb 18.3.09
425
  if ($ret ne "1"){
426
    # 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
427
    $form->show_generic_error($ret);
428
  }
429

  
430 410
  delete @{$form}{qw(parts_id partnumber description qty unit chargenumber bestbefore comment)};
431 411

  
432 412
  $form->{saved_message} = $locale->text('The assembly has been created.');

Auch abrufbar als: Unified diff