X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=inline;f=circ%2Fwaitingreserves.pl;h=5943ea567378bf6f336ae1ada57ede7a86b7e027;hb=fdb5d0ca1ac16563c4b34c47dd32d61f96913d8a;hp=f781869e471890b2c3fc067b96cf580c5ad41d7d;hpb=091d6c513bcbee224ff06477e79be48cea7fe825;p=koha.git diff --git a/circ/waitingreserves.pl b/circ/waitingreserves.pl index f781869e47..5943ea5673 100755 --- a/circ/waitingreserves.pl +++ b/circ/waitingreserves.pl @@ -18,8 +18,7 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; use CGI qw ( -utf8 ); use C4::Context; use C4::Output; @@ -37,7 +36,9 @@ use C4::Reserves; use C4::Koha; use Koha::DateUtils; use Koha::BiblioFrameworks; +use Koha::Items; use Koha::ItemTypes; +use Koha::Patrons; my $input = new CGI; @@ -66,7 +67,7 @@ my $transfer_when_cancel_all = C4::Context->preference('TransferWhenCancelAllWai $template->param( TransferWhenCancelAllWaitingHolds => 1 ) if $transfer_when_cancel_all; my @cancel_result; -# if we have a return from the form we launch the subroutine CancelReserve +# if we have a return from the form we cancel the holds if ($item) { my $res = cancel( $item, $borrowernumber, $fbr, $tbr ); push @cancel_result, $res if $res; @@ -82,60 +83,58 @@ $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 $gettitle = GetBiblioFromItemNumber( $itemnumber ); - my $borrowernum = $num->{'borrowernumber'}; - my $holdingbranch = $gettitle->{'holdingbranch'}; - my $homebranch = $gettitle->{'homebranch'}; + my $item = $hold->item; + my $patron = $hold->borrower; + my $biblio = $item->biblio; + my $holdingbranch = $item->holdingbranch; + my $homebranch = $item->homebranch; my %getreserv = ( - itemnumber => $itemnumber, - borrowernum => $borrowernum, + title => $biblio->title, + itemnumber => $item->itemnumber, + waitingdate => $hold->waitingdate, + reservedate => $hold->reservedate, + 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, ); - # fix up item type for display - $gettitle->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $gettitle->{'itype'} : $gettitle->{'itemtype'}; - my $getborrower = GetMember(borrowernumber => $num->{'borrowernumber'}); - my $itemtype = Koha::ItemTypes->find( $gettitle->{'itemtype'} ); # using the fixed up itype/itemtype - $getreserv{'waitingdate'} = $num->{'waitingdate'}; - my ( $expire_year, $expire_month, $expire_day ) = split (/-/, $num->{'expirationdate'}); + my $itemtype = Koha::ItemTypes->find( $item->effective_itemtype ); + 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'} = $gettitle->{'title'}; - $getreserv{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($gettitle->{'biblionumber'}), GetFrameworkCode($gettitle->{'biblionumber'})); - $getreserv{'biblionumber'} = $gettitle->{'biblionumber'}; - $getreserv{'barcode'} = $gettitle->{'barcode'}; - $getreserv{'homebranch'} = $gettitle->{'homebranch'}; - $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'}; - $getreserv{'itemcallnumber'} = $gettitle->{'itemcallnumber'}; - $getreserv{'enumchron'} = $gettitle->{'enumchron'}; - $getreserv{'copynumber'} = $gettitle->{'copynumber'}; + $getreserv{'subtitle'} = GetRecordValue( + 'subtitle', + GetMarcBiblio({ biblionumber => $biblio->biblionumber }), + $biblio->frameworkcode); if ( $homebranch ne $holdingbranch ) { $getreserv{'dotransfer'} = 1; } - $getreserv{'borrowername'} = $getborrower->{'surname'}; - $getreserv{'borrowerfirstname'} = $getborrower->{'firstname'}; - $getreserv{'borrowerphone'} = $getborrower->{'phone'}; - my $borEmail = GetFirstValidEmailAddress( $borrowernum ); - - if ( $borEmail ) { - $getreserv{'borrowermail'} = $borEmail; - } + $getreserv{patron} = $patron; 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 { @@ -189,8 +188,8 @@ sub cancel { # if we have a result if ($nextreservinfo) { my %res; - my $borrowerinfo = C4::Members::GetMember( borrowernumber => $nextreservinfo ); - my $iteminfo = GetBiblioFromItemNumber($item); + my $patron = Koha::Patrons->find( $nextreservinfo ); + my $title = Koha::Items->find( $item )->biblio->title; if ( $messages->{'transfert'} ) { $res{messagetransfert} = $messages->{'transfert'}; $res{branchcode} = $messages->{'transfert'}; @@ -198,10 +197,10 @@ sub cancel { $res{message} = 1; $res{nextreservnumber} = $nextreservinfo; - $res{nextreservsurname} = $borrowerinfo->{'surname'}; - $res{nextreservfirstname} = $borrowerinfo->{'firstname'}; + $res{nextreservsurname} = $patron->surname; + $res{nextreservfirstname} = $patron->firstname; $res{nextreservitem} = $item; - $res{nextreservtitle} = $iteminfo->{'title'}; + $res{nextreservtitle} = $title; $res{waiting} = $messages->{'waiting'} ? 1 : 0; return \%res;