X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FWH.pm;h=158b216434e10c20d891f2585b8f02fe093aaf7a;hb=d56bda4518586c3b0220c18445394f35ec121d84;hp=979d4de19aedfc20e8ab32ff596ee5902789df93;hpb=c9cace869bcf939c42de9c142df65d7c214ecdbc;p=kivitendo-erp.git diff --git a/SL/WH.pm b/SL/WH.pm index 979d4de19..158b21643 100644 --- a/SL/WH.pm +++ b/SL/WH.pm @@ -1135,15 +1135,25 @@ sub get_wh_and_bin_for_charge { my $self = shift; my %params = @_; + my %bin_qty; croak t8('Need charge number!') unless $params{chargenumber}; - my $inv_item= SL::DB::Manager::Inventory->get_first(where => [chargenumber => $params{chargenumber} ]); + my $inv_items = SL::DB::Manager::Inventory->get_all(where => [chargenumber => $params{chargenumber} ]); - croak t8("Invalid charge number: #1", $params{chargenumber}) unless (ref $inv_item eq 'SL::DB::Inventory'); + croak t8("Invalid charge number: #1", $params{chargenumber}) unless (ref @{$inv_items}[0] eq 'SL::DB::Inventory'); + # add all qty for one bin and add wh_id + ($bin_qty{$_->bin_id}{qty}, $bin_qty{$_->bin_id}{wh}) = ($bin_qty{$_->bin_id}{qty} + $_->qty, $_->warehouse_id) for @{ $inv_items }; + + while (my ($bin, $value) = each (%bin_qty)) { + if ($value->{qty} > 0) { + $main::lxdebug->leave_sub(); + return ($value->{qty}, $value->{wh}, $bin, $params{chargenumber}); + } + } $main::lxdebug->leave_sub(); - return ($inv_item->warehouse_id, $inv_item->bin_id, $inv_item->chargenumber); + return undef; } 1; @@ -1301,10 +1311,11 @@ The typical params would be: =head2 get_wh_and_bin_for_charge C<$params{chargenumber}> -Gets the first inventory entry with the mandatory chargenumber: C<$params{chargenumber}>. +Gets the current qty from the inventory entries with the mandatory chargenumber: C<$params{chargenumber}>. Croaks if the chargenumber is missing or no entry currently exists. -From the found inventory entry the following values and in this order are returned: -C, C, C. +If there is one bin and warehouse with a positive qty, this fields are returned: +C C, C, C. +Otherwise returns undef. =head3 Prerequisites