use C4::Circulation;
use C4::Members;
use C4::Biblio;
-use C4::Dates qw/format_date/;
use List::Util qw(shuffle);
use List::MoreUtils qw(any);
}
}
else {
- warn "No transport costs for $pickup_branch";
+ next;
}
}
} else {
$pull_branches = [keys %items_by_branch];
}
+
+ # Try picking items where the home and pickup branch match first
PULL_BRANCHES:
foreach my $branch (@$pull_branches) {
my $holding_branch_items = $items_by_branch{$branch}
}
}
+ # Now try items from the least cost branch based on the transport cost matrix or StaticHoldsQueueWeight
unless ( $itemnumber ) {
foreach my $current_item ( @{ $items_by_branch{$holdingbranch} } ) {
if ( $holdingbranch && ( $current_item->{holdallowed} == 2 || $request->{borrowerbranch} eq $current_item->{homebranch} ) ) {
}
}
}
+
+ # Now try for items for any item that can fill this hold
+ unless ( $itemnumber ) {
+ PULL_BRANCHES2:
+ foreach my $branch (@$pull_branches) {
+ my $holding_branch_items = $items_by_branch{$branch}
+ or next;
+
+ foreach my $item (@$holding_branch_items) {
+ next if ( $item->{holdallowed} == 1 && $item->{homebranch} ne $request->{borrowerbranch} );
+
+ $itemnumber = $item->{itemnumber};
+ $holdingbranch = $branch;
+ last PULL_BRANCHES2;
+ }
+ }
+ }
}
if ($itemnumber) {
# Nothing really spectacular: supply to branch, a list of potential from branches
# and find the minimum from - to value from the transport_cost_matrix
- return $from->[0] if @$from == 1;
+ return $from->[0] if ( @$from == 1 && $transport_cost_matrix->{$to}{$from->[0]}->{disable_transfer} != 1 );
# If the pickup library is in the list of libraries to pull from,
# return that library right away, it is obviously the least costly