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);
my $dbh = C4::Context->dbh;
my @bind_params = ();
- my $query = q/SELECT tmp_holdsqueue.*, biblio.author, items.ccode, items.location, items.enumchron, items.cn_sort, biblioitems.publishercode,biblio.copyrightdate,biblioitems.publicationyear,biblioitems.pages,biblioitems.size,biblioitems.publicationyear,biblioitems.isbn,items.copynumber
+ my $query = q/SELECT tmp_holdsqueue.*, biblio.author, items.ccode, items.itype, biblioitems.itemtype, items.location, items.enumchron, items.cn_sort, biblioitems.publishercode,biblio.copyrightdate,biblioitems.publicationyear,biblioitems.pages,biblioitems.size,biblioitems.publicationyear,biblioitems.isbn,items.copynumber
FROM tmp_holdsqueue
JOIN biblio USING (biblionumber)
LEFT JOIN biblioitems USING (biblionumber)
$row->{parts} = GetRecordValue('parts',$record,'')->[0]->{subfield};
$row->{numbers} = GetRecordValue('numbers',$record,'')->[0]->{subfield};
}
+
+ # return the bib-level or item-level itype per syspref
+ if (!C4::Context->preference('item-level_itypes')) {
+ $row->{itype} = $row->{itemtype};
+ }
+ delete $row->{itemtype};
+
push @$items, $row;
}
return $items;
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}) }
push @{ $items_by_branch{ $item->{holdingbranch} } }, $item
unless exists $allocated_items{ $item->{itemnumber} };
}
- return unless keys %items_by_branch;
+ return \%item_map unless keys %items_by_branch;
# now handle the title-level requests
$num_items_remaining = scalar(@$available_items) - scalar(keys %allocated_items);
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}{$_};