Revision c9cace86
Von Jan Büren vor mehr als 3 Jahren hinzugefügt
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
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.