Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision c9cace86

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

  • ID c9cace869bcf939c42de9c142df65d7c214ecdbc
  • Vorgänger bde97469
  • Nachfolger 01e8c002

Feature: Auslagern über Rechnung inkl. Seriennummer == Chargennummer

Prüft, ob die kommaseparierte Liste in serialnumber mit
der Stückzahl in der Position übereinstimmt
Prüft, ob die Seriennummer als Chargennummer vorhanden sind.
Bei Erfolg werden diese Chargen dann ausgelagert.

Unterschiede anzeigen:

SL/IS.pm
1461 1461

  
1462 1462
  foreach my $i (1 .. $form->{rowcount}) {
1463 1463
    next if !$form->{"id_$i"};
1464
    my ($err, $wh_id, $bin_id) = _determine_wh_and_bin($dbh, $::instance_conf,
1465
                                                       $form->{"id_$i"},
1466
                                                       $form->{"qty_$i"},
1467
                                                       $form->{"unit_$i"});
1468
    if (!@{ $err } && $wh_id && $bin_id) {
1469
      push @transfers, {
1470
        'parts_id'         => $form->{"id_$i"},
1471
        'qty'              => $form->{"qty_$i"},
1472
        'unit'             => $form->{"unit_$i"},
1473
        'transfer_type'    => 'shipped',
1474
        'src_warehouse_id' => $wh_id,
1475
        'src_bin_id'       => $bin_id,
1476
        'project_id'       => $form->{"project_id_$i"},
1477
        'invoice_id'       => $form->{"invoice_id_$i"},
1478
        'comment'          => $::locale->text("Default transfer invoice"),
1479
      };
1480
    }
1481 1464

  
1465
    my ($err, $wh_id, $bin_id, $chargenumber);
1466

  
1467
    if ($::instance_conf->get_sales_serial_eq_charge) {
1468
      next unless $form->{"serialnumber_$i"};
1469
      my @serials = split(" ", $form->{"serialnumber_$i"});
1470
      if (scalar @serials != $form->{"qty_$i"}) {
1471
        push @errors, $::locale->text("Cannot transfer #1 qty with #2 serial number(s)", $form->{"qty_$i"}, scalar @serials);
1472
        last;
1473
      }
1474
      foreach my $serial (@serials) {
1475
        ($wh_id, $bin_id, $chargenumber) = WH->get_wh_and_bin_for_charge(chargenumber => $serial);
1476

  
1477
        push @transfers, {
1478
            'parts_id'         => $form->{"id_$i"},
1479
            'qty'              => 1,
1480
            'unit'             => $form->{"unit_$i"},
1481
            'transfer_type'    => 'shipped',
1482
            'src_warehouse_id' => $wh_id,
1483
            'src_bin_id'       => $bin_id,
1484
            'chargenumber'     => $chargenumber,
1485
            'project_id'       => $form->{"project_id_$i"},
1486
            'invoice_id'       => $form->{"invoice_id_$i"},
1487
            'comment'          => $::locale->text("Default transfer invoice with charge number"),
1488
        };
1489
      }
1490
      $err = []; # error handling uses @errors direct
1491
    } else {
1492
      ($err, $wh_id, $bin_id)    = _determine_wh_and_bin($dbh, $::instance_conf,
1493
                                                         $form->{"id_$i"},
1494
                                                         $form->{"qty_$i"},
1495
                                                         $form->{"unit_$i"});
1496
      if (!@{ $err } && $wh_id && $bin_id) {
1497
        push @transfers, {
1498
          'parts_id'         => $form->{"id_$i"},
1499
          'qty'              => $form->{"qty_$i"},
1500
          'unit'             => $form->{"unit_$i"},
1501
          'transfer_type'    => 'shipped',
1502
          'src_warehouse_id' => $wh_id,
1503
          'src_bin_id'       => $bin_id,
1504
          'project_id'       => $form->{"project_id_$i"},
1505
          'invoice_id'       => $form->{"invoice_id_$i"},
1506
          'comment'          => $::locale->text("Default transfer invoice"),
1507
        };
1508
      }
1509
    }
1482 1510
    push @errors, @{ $err };
1483
  }
1511
  } # end form rowcount
1484 1512

  
1485 1513
  if (!@errors) {
1486 1514
    WH->transfer(@transfers);

Auch abrufbar als: Unified diff