diff --git a/C4/Biblio.pm b/C4/Biblio.pm
index 4b33d9a131..f475056f9c 100644
--- a/C4/Biblio.pm
+++ b/C4/Biblio.pm
@@ -43,6 +43,7 @@ use Koha::Authority::Types;
use Koha::Acquisition::Currencies;
use Koha::Biblio::Metadata;
use Koha::Biblio::Metadatas;
+use Koha::Holds;
use Koha::SearchEngine;
use Koha::Libraries;
@@ -406,10 +407,11 @@ sub DelBiblio {
}
# We delete any existing holds
+ my $biblio = Koha::Biblios->find( $biblionumber );
+ my $holds = $biblio->holds;
require C4::Reserves;
- my $reserves = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber });
- foreach my $res ( @$reserves ) {
- C4::Reserves::CancelReserve({ reserve_id => $res->{'reserve_id'} });
+ while ( my $hold = $holds->next ) {
+ C4::Reserves::CancelReserve({ reserve_id => $hold->reserve_id }); # TODO Replace with $hold->cancel
}
# Delete in Zebra. Be careful NOT to move this line after _koha_delete_biblio
diff --git a/C4/ILSDI/Services.pm b/C4/ILSDI/Services.pm
index b735d38791..64630b6b80 100644
--- a/C4/ILSDI/Services.pm
+++ b/C4/ILSDI/Services.pm
@@ -25,7 +25,7 @@ use C4::Items;
use C4::Circulation;
use C4::Accounts;
use C4::Biblio;
-use C4::Reserves qw(AddReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved IsAvailableForItemLevelRequest);
+use C4::Reserves qw(AddReserve GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved IsAvailableForItemLevelRequest);
use C4::Context;
use C4::AuthoritiesMarc;
use XML::Simple;
@@ -35,6 +35,7 @@ use DateTime;
use C4::Auth;
use C4::Members::Attributes qw(GetBorrowerAttributes);
+use Koha::Biblios;
use Koha::Libraries;
=head1 NAME
@@ -217,7 +218,8 @@ sub GetRecords {
# Get most of the needed data
my $biblioitemnumber = $biblioitem->{'biblioitemnumber'};
- my $reserves = GetReservesFromBiblionumber({ biblionumber => $biblionumber });
+ my $biblio = Koha::Biblios->find( $biblionumber );
+ my $holds = $biblio->holds_placed_before_today->unblessed;
my $issues = GetBiblioIssues($biblionumber);
my $items = GetItemsByBiblioitemnumber($biblioitemnumber);
@@ -236,7 +238,7 @@ sub GetRecords {
# Hashref building...
$biblioitem->{'items'}->{'item'} = $items;
- $biblioitem->{'reserves'}->{'reserve'} = $reserves;
+ $biblioitem->{'reserves'}->{'reserve'} = $holds;
$biblioitem->{'issues'}->{'issue'} = $issues;
push @records, $biblioitem;
diff --git a/C4/SIP/ILS/Item.pm b/C4/SIP/ILS/Item.pm
index 578f3828a4..c7b8ea7d0a 100644
--- a/C4/SIP/ILS/Item.pm
+++ b/C4/SIP/ILS/Item.pm
@@ -22,6 +22,7 @@ use C4::Circulation;
use C4::Members;
use C4::Reserves;
use Koha::Database;
+use Koha::Biblios;
=encoding UTF-8
@@ -65,12 +66,6 @@ use Koha::Database;
);
=cut
-sub priority_sort {
- defined $a->{priority} or return -1;
- defined $b->{priority} or return 1;
- return $a->{priority} <=> $b->{priority};
-}
-
sub new {
my ($class, $item_id) = @_;
my $type = ref($class) || $class;
@@ -99,8 +94,9 @@ sub new {
}
my $borrower = GetMember(borrowernumber=>$issue->{'borrowernumber'});
$item->{patron} = $borrower->{'cardnumber'};
- my $reserves = GetReservesFromBiblionumber({ biblionumber => $item->{biblionumber} });
- $item->{hold_queue} = [ sort priority_sort @$reserves ];
+ my $biblio = Koha::Biblios->find( $item->{biblionumber } );
+ my $holds = $biblio->holds_placed_before_today->unblessed;
+ $item->{hold_queue} = $holds;
$item->{hold_shelf} = [( grep { defined $_->{found} and $_->{found} eq 'W' } @{$item->{hold_queue}} )];
$item->{pending_queue} = [( grep {(! defined $_->{found}) or $_->{found} ne 'W' } @{$item->{hold_queue}} )];
$self = $item;
diff --git a/acqui/parcel.pl b/acqui/parcel.pl
index 4e11f2b18e..a747aa5208 100755
--- a/acqui/parcel.pl
+++ b/acqui/parcel.pl
@@ -65,11 +65,11 @@ use C4::Items;
use CGI qw ( -utf8 );
use C4::Output;
use C4::Suggestions;
-use C4::Reserves qw/GetReservesFromBiblionumber/;
use Koha::Acquisition::Bookseller;
use Koha::Biblios;
use Koha::DateUtils;
+use Koha::Biblios;
use JSON;
@@ -140,10 +140,12 @@ for my $order ( @orders ) {
$line{invoice} = $invoice->{invoicenumber};
$line{holds} = 0;
my @itemnumbers = GetItemnumbersFromOrder( $order->{ordernumber} );
- for my $itemnumber ( @itemnumbers ) {
- my $holds = GetReservesFromBiblionumber({ biblionumber => $line{biblionumber}, itemnumber => $itemnumber });
- $line{holds} += scalar( @$holds );
- }
+ my $biblio = Koha::Biblios->find( $order->{ordernumber} );
+ $line{holds} = $biblio->holds_placed_before_today->search(
+ {
+ itemnumber => { -in => \@itemnumbers },
+ }
+ )->count;
$line{budget} = GetBudgetByOrderNumber( $line{ordernumber} );
$line{tax_value} = $line{tax_value_on_receiving};
diff --git a/catalogue/ISBDdetail.pl b/catalogue/ISBDdetail.pl
index bb9a29cd07..60b6053dc4 100755
--- a/catalogue/ISBDdetail.pl
+++ b/catalogue/ISBDdetail.pl
@@ -168,9 +168,9 @@ $template->param (countorders => $count_orders_using_biblio);
my $count_deletedorders_using_biblio = scalar @deletedorders_using_biblio ;
$template->param (countdeletedorders => $count_deletedorders_using_biblio);
-my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
-my $holdcount = scalar( @$holds );
-$template->param( holdcount => scalar ( @$holds ) );
+my $biblio = Koha::Biblios->find( $biblionumber );
+my $holds = $biblio->holds;
+$template->param( holdcount => $holds->count );
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/catalogue/MARCdetail.pl b/catalogue/MARCdetail.pl
index 8b32935c78..6a6bdb4278 100755
--- a/catalogue/MARCdetail.pl
+++ b/catalogue/MARCdetail.pl
@@ -343,8 +343,8 @@ $template->param (countorders => $count_orders_using_biblio);
my $count_deletedorders_using_biblio = scalar @deletedorders_using_biblio ;
$template->param (countdeletedorders => $count_deletedorders_using_biblio);
-my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
-my $holdcount = scalar( @$holds );
-$template->param( holdcount => scalar ( @$holds ) );
+$biblio = Koha::Biblios->find( $biblionumber );
+my $holds = $biblio->holds;
+$template->param( holdcount => $holds->count );
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/catalogue/detail.pl b/catalogue/detail.pl
index a31a0c5fac..30436612db 100755
--- a/catalogue/detail.pl
+++ b/catalogue/detail.pl
@@ -42,6 +42,7 @@ use C4::HTML5Media;
use C4::CourseReserves qw(GetItemCourseReservesInfo);
use C4::Acquisition qw(GetOrdersByBiblionumber);
use Koha::AuthorisedValues;
+use Koha::Biblios;
use Koha::Patrons;
use Koha::Virtualshelves;
@@ -461,8 +462,9 @@ if (C4::Context->preference('TagsEnabled') and $tag_quantity = C4::Context->pref
}
#we only need to pass the number of holds to the template
-my $holds = C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
-$template->param( holdcount => scalar ( @$holds ) );
+my $biblio = Koha::Biblios->find( $biblionumber );
+my $holds = $biblio->holds;
+$template->param( holdcount => $holds->count );
my $StaffDetailItemSelection = C4::Context->preference('StaffDetailItemSelection');
if ($StaffDetailItemSelection) {
diff --git a/catalogue/imageviewer.pl b/catalogue/imageviewer.pl
index c5c4cd0a44..3317db1909 100755
--- a/catalogue/imageviewer.pl
+++ b/catalogue/imageviewer.pl
@@ -110,8 +110,8 @@ $template->param (countorders => $count_orders_using_biblio);
my $count_deletedorders_using_biblio = scalar @deletedorders_using_biblio ;
$template->param (countdeletedorders => $count_deletedorders_using_biblio);
-my $holds= C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
-my $holdcount = scalar( @$holds );
-$template->param( holdcount => scalar ( @$holds ) );
+$biblio = Koha::Biblios->find( $biblionumber );
+my $holds = $biblio->holds;
+$template->param( holdcount => $holds->count );
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/catalogue/labeledMARCdetail.pl b/catalogue/labeledMARCdetail.pl
index 6b554f46ba..cd07f73135 100755
--- a/catalogue/labeledMARCdetail.pl
+++ b/catalogue/labeledMARCdetail.pl
@@ -153,8 +153,8 @@ $template->param (countorders => $count_orders_using_biblio);
my $count_deletedorders_using_biblio = scalar @deletedorders_using_biblio ;
$template->param (countdeletedorders => $count_deletedorders_using_biblio);
-my $holds= C4::Reserves::GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
-my $holdcount = scalar( @$holds );
-$template->param( holdcount => scalar ( @$holds ) );
+$biblio = Koha::Biblios->find( $biblionumber );
+my $holds = $biblio->holds;
+$template->param( holdcount => $holds->count );
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl
index 125b103006..b63c53249c 100755
--- a/catalogue/moredetail.pl
+++ b/catalogue/moredetail.pl
@@ -32,10 +32,10 @@ use C4::Auth;
use C4::Serials;
use C4::Members; # to use GetMember
use C4::Search; # enabled_staff_search_views
-use C4::Reserves qw(GetReservesFromBiblionumber);
use Koha::Acquisition::Booksellers;
use Koha::AuthorisedValues;
+use Koha::Biblios;
use Koha::DateUtils;
use Koha::Items;
use Koha::Patrons;
@@ -258,9 +258,9 @@ $template->param (countorders => $count_orders_using_biblio);
my $count_deletedorders_using_biblio = scalar @deletedorders_using_biblio ;
$template->param (countdeletedorders => $count_deletedorders_using_biblio);
-my $holds = GetReservesFromBiblionumber({ biblionumber => $biblionumber, all_dates => 1 });
-my $holdcount = scalar( @$holds );
-$template->param( holdcount => scalar ( @$holds ) );
+my $biblio = Koha::Biblios->find( $biblionumber );
+my $holds = $biblio->holds;
+$template->param( holdcount => $holds->count );
output_html_with_http_headers $query, $cookie, $template->output;
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_delete_records.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_delete_records.tt
index 4d0eb181f4..58249ee857 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_delete_records.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batch_delete_records.tt
@@ -181,11 +181,11 @@ $(document).ready(function() {
[% FOR biblio IN records %]
-
+
[% INCLUDE 'biblio-default-view.inc' biblionumber=biblio.biblionumber %][% biblio.title %][% IF ( biblio.subtitle ) %][% FOREACH subtitle IN biblio.subtitle %] [% subtitle.subfield |html %][% END %][% END %]