foreach my $i (1 .. $form->{rowcount}) {
next if !$form->{"id_$i"};
- my ($err, $wh_id, $bin_id, $chargenumber);
+ my ($err, $qty, $wh_id, $bin_id, $chargenumber);
- if ($::instance_conf->get_sales_serial_eq_charge) {
- next unless $form->{"serialnumber_$i"};
+ if ($::instance_conf->get_sales_serial_eq_charge && $form->{"serialnumber_$i"}) {
my @serials = split(" ", $form->{"serialnumber_$i"});
if (scalar @serials != $form->{"qty_$i"}) {
push @errors, $::locale->text("Cannot transfer #1 qty with #2 serial number(s)", $form->{"qty_$i"}, scalar @serials);
last;
}
foreach my $serial (@serials) {
- ($wh_id, $bin_id, $chargenumber) = WH->get_wh_and_bin_for_charge(chargenumber => $serial);
-
+ ($qty, $wh_id, $bin_id, $chargenumber) = WH->get_wh_and_bin_for_charge(chargenumber => $serial);
+ if (!$qty) {
+ push @errors, $::locale->text("Not enough in stock for the serial number #1", $serial);
+ last;
+ }
push @transfers, {
'parts_id' => $form->{"id_$i"},
'qty' => 1,