Bug 19299: Replace C4::Reserves::GetReservesForBranch with Koha::Holds->waiting

GetReservesForBranch simply returns the waiting holds, for a specific
branch of not. This can easily be replaced with a call to
Koha::Holds->waiting

To avoid any regressions, I reuse the exact conditions (priority = 0),
but I do not think it is useful.

Test plan:
Make sure the holds information are correctly displayed on the waiting
holds screen.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Jonathan Druart 2017-09-11 12:49:33 -03:00
parent 1e9b730102
commit e110f90c34
2 changed files with 23 additions and 60 deletions

View File

@ -104,7 +104,6 @@ BEGIN {
@EXPORT = qw(
&AddReserve
&GetReservesForBranch
&GetReserveStatus
&GetOtherReserves
@ -562,41 +561,6 @@ SELECT COUNT(*) FROM reserves WHERE biblionumber=? AND borrowernumber<>?
return $fee;
}
=head2 GetReservesForBranch
@transreserv = GetReservesForBranch($frombranch);
=cut
sub GetReservesForBranch {
my ($frombranch) = @_;
my $dbh = C4::Context->dbh;
my $query = "
SELECT reserve_id,borrowernumber,reservedate,itemnumber,waitingdate, expirationdate
FROM reserves
WHERE priority='0'
AND found='W'
";
$query .= " AND branchcode=? " if ( $frombranch );
$query .= "ORDER BY waitingdate" ;
my $sth = $dbh->prepare($query);
if ($frombranch){
$sth->execute($frombranch);
} else {
$sth->execute();
}
my @transreserv;
my $i = 0;
while ( my $data = $sth->fetchrow_hashref ) {
$transreserv[$i] = $data;
$i++;
}
return (@transreserv);
}
=head2 GetReserveStatus
$reservestatus = GetReserveStatus($itemnumber);

View File

@ -84,54 +84,53 @@ $template->param( all_branches => 1 ) if $all_branches;
my (@reservloop, @overloop);
my ($reservcount, $overcount);
my @getreserves = $all_branches ? GetReservesForBranch() : GetReservesForBranch($default);
# FIXME - Is priority => 0 useful? If yes it must be moved to waiting, otherwise we need to remove it from here.
my $holds = Koha::Holds->waiting->search({ priority => 0, ( $all_branches ? () : ( branchcode => $default ) ) }, { order_by => ['waitingdate'] });
# get reserves for the branch we are logged into, or for all branches
my $today = Date_to_Days(&Today);
my $max_pickup_delay = C4::Context->preference('ReservesMaxPickUpDelay');
foreach my $num (@getreserves) {
next unless ($num->{'waitingdate'} && $num->{'waitingdate'} ne '0000-00-00');
while ( my $hold = $holds->next ) {
next unless ($hold->waitingdate && $hold->waitingdate ne '0000-00-00');
my $itemnumber = $num->{'itemnumber'};
my $item = Koha::Items->find( $itemnumber );
my $item = $hold->item;
my $patron = $hold->borrower;
my $biblio = $item->biblio;
my $borrowernum = $num->{'borrowernumber'};
my $holdingbranch = $item->holdingbranch;
my $homebranch = $item->homebranch;
my %getreserv = (
itemnumber => $itemnumber,
borrowernum => $borrowernum,
title => $biblio->title,
itemnumber => $item->itemnumber,
waitingdate => $hold->waitingdate,
borrowernum => $patron->borrowernumber,
biblionumber => $biblio->biblionumber,
barcode => $item->barcode,
homebranch => $homebranch,
holdingbranch => $item->holdingbranch,
itemcallnumber => $item->itemcallnumber,
enumchron => $item->enumchron,
copynumber => $item->copynumber,
borrowername => $patron->surname, # FIXME Let's send $patron to the template
borrowerfirstname => $patron->firstname,
borrowerphone => $patron->phone,
);
my $patron = Koha::Patrons->find( $num->{borrowernumber} );
my $itemtype = Koha::ItemTypes->find( $item->effective_itemtype );
$getreserv{'waitingdate'} = $num->{'waitingdate'};
my ( $expire_year, $expire_month, $expire_day ) = split (/-/, $num->{'expirationdate'});
my ( $expire_year, $expire_month, $expire_day ) = split (/-/, $hold->expirationdate);
my $calcDate = Date_to_Days( $expire_year, $expire_month, $expire_day );
$getreserv{'itemtype'} = $itemtype->description; # FIXME Should not it be translated_description?
$getreserv{'title'} = $biblio->title;
$getreserv{'subtitle'} = GetRecordValue(
'subtitle',
GetMarcBiblio({ biblionumber => $biblio->biblionumber }),
$biblio->frameworkcode);
$getreserv{'biblionumber'} = $biblio->biblionumber;
$getreserv{'barcode'} = $item->barcode;
$getreserv{'homebranch'} = $homebranch;
$getreserv{'holdingbranch'} = $item->holdingbranch;
$getreserv{'itemcallnumber'} = $item->itemcallnumber;
$getreserv{'enumchron'} = $item->enumchron;
$getreserv{'copynumber'} = $item->copynumber;
if ( $homebranch ne $holdingbranch ) {
$getreserv{'dotransfer'} = 1;
}
$getreserv{'borrowername'} = $patron->surname;
$getreserv{'borrowerfirstname'} = $patron->firstname;
$getreserv{'borrowerphone'} = $patron->phone;
my $borEmail = GetFirstValidEmailAddress( $borrowernum );
my $borEmail = $patron->first_valid_email_address;
if ( $borEmail ) {
$getreserv{'borrowermail'} = $borEmail;
@ -139,7 +138,7 @@ foreach my $num (@getreserves) {
if ($today > $calcDate) {
if ($cancelall) {
my $res = cancel( $itemnumber, $borrowernum, $holdingbranch, $homebranch, !$transfer_when_cancel_all );
my $res = cancel( $item->itemnumber, $patron->borrowernumber, $holdingbranch, $homebranch, !$transfer_when_cancel_all );
push @cancel_result, $res if $res;
next;
} else {