use C4::Dates qw/format_date/;
use List::Util qw(shuffle);
+use List::MoreUtils qw(any);
use Data::Dumper;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
return unless scalar(@$hold_requests) > 0;
return unless scalar(@$available_items) > 0;
- my $automatic_return = C4::Context->preference("AutomaticItemReturn");
-
# identify item-level requests
my %specific_items_requested = map { $_->{itemnumber} => 1 }
grep { defined($_->{itemnumber}) }
my $pickup_branch = $request->{branchcode} || $request->{borrowerbranch};
my ($itemnumber, $holdingbranch);
- my $holding_branch_items = $automatic_return ? undef : $items_by_branch{$pickup_branch};
+ my $holding_branch_items = $items_by_branch{$pickup_branch};
if ( $holding_branch_items ) {
foreach my $item (@$holding_branch_items) {
if ( $request->{borrowerbranch} eq $item->{homebranch} ) {
#$from - arrayref
my ($to, $from, $transport_cost_matrix) = @_;
-# Nothing really spectacular: supply to branch, a list of potential from branches
-# and find the minimum from - to value from the transport_cost_matrix
+ # 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;
+ # If the pickup library is in the list of libraries to pull from,
+ # return that library right away, it is obviously the least costly
+ return ($to) if any { $_ eq $to } @$from;
+
my ($least_cost, @branch);
foreach (@$from) {
my $cell = $transport_cost_matrix->{$to}{$_};
use Data::Dumper;
-use Test::More tests => 19;
+use Test::More tests => 17;
+
use C4::Branch;
use C4::ItemType;
# Make a reserve
AddReserve ( $borrower_branchcode, $borrowernumber, $biblionumber, $constraint, $bibitems, $priority );
# $resdate, $expdate, $notes, $title, $checkitem, $found
-$dbh->do("UPDATE reserves SET reservedate = reservedate - 1");
+$dbh->do("UPDATE reserves SET reservedate = DATE_SUB( reservedate, INTERVAL 1 DAY )");
# Tests
my $use_cost_matrix_sth = $dbh->prepare("UPDATE systempreferences SET value = ? WHERE variable = 'UseTransportCostMatrix'");
# test_queue will flush
C4::Context->set_preference('AutomaticItemReturn', 1);
# Not sure how to make this test more difficult - holding branch does not matter
-test_queue ('take from holdingbranch AutomaticItemReturn on', 0, $borrower_branchcode, undef);
-test_queue ('take from holdingbranch AutomaticItemReturn on', 1, $borrower_branchcode, $least_cost_branch_code);
$dbh->do("DELETE FROM tmp_holdsqueue");
$dbh->do("DELETE FROM hold_fill_targets");
or diag( "Expected item for pick $borrower_branchcode, hold $least_cost_branch_code, got ".Dumper($queue_item) );
ok( exists($queue_item->{itype}), 'item type included in queued items list (bug 5825)' );
+ok(
+ C4::HoldsQueue::least_cost_branch( 'B', [ 'A', 'B', 'C' ] ) eq 'B',
+ 'C4::HoldsQueue::least_cost_branch returns the local branch if it is in the list of branches to pull from'
+);
+
# XXX All this tests are for borrower branch pick-up.
# Maybe needs expanding to homebranch or holdingbranch pick-up.