From 9f90acb2f22574f40e21b5601d976e367c56be3e Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Thu, 2 May 2013 08:38:36 +0000 Subject: [PATCH] Bug 8918: Move $rank and $found calculation into AddReserve and update scripts that call it. --- C4/ILSDI/Services.pm | 26 ++++---------------------- C4/Reserves.pm | 24 ++++++++++++++++++++++-- opac/opac-reserve.pl | 14 ++------------ reserve/placerequest.pl | 21 ++++----------------- 4 files changed, 32 insertions(+), 53 deletions(-) diff --git a/C4/ILSDI/Services.pm b/C4/ILSDI/Services.pm index 666cc75..71d1858 100644 --- a/C4/ILSDI/Services.pm +++ b/C4/ILSDI/Services.pm @@ -26,7 +26,7 @@ use C4::Circulation; use C4::Branch; use C4::Accounts; use C4::Biblio; -use C4::Reserves qw(AddReserve CancelReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved GetReserveNextRank); +use C4::Reserves qw(AddReserve CancelReserve GetReservesFromBiblionumber GetReservesFromBorrowernumber CanBookBeReserved CanItemBeReserved); use C4::Context; use C4::AuthoritiesMarc; use C4::ILSDI::Utility; @@ -626,11 +626,9 @@ sub HoldTitle { $branch = $$borrower{branchcode}; } - my $rank = GetReserveNextRank($biblionumber); - # Add the reserve # $branch, $borrowernumber, $biblionumber, $constraint, $bibitems, $priority, $notes, $title, $checkitem, $found - AddReserve( $branch, $borrowernumber, $biblionumber, 'a', undef, $rank, undef, $title, undef, undef ); + AddReserve( $branch, $borrowernumber, $biblionumber, 'a', undef, undef, undef, $title, undef, undef ); # Hashref building my $out; @@ -692,9 +690,8 @@ sub HoldItem { my $canbookbereserved = C4::Reserves::CanBookBeReserved( $borrowernumber, $biblionumber ); return { code => 'NotHoldable' } unless $canbookbereserved and $canitembereserved; - my $branch; - # Pickup branch management + my $branch; if ( $cgi->param('pickup_location') ) { $branch = $cgi->param('pickup_location'); my $branches = GetBranches(); @@ -703,24 +700,9 @@ sub HoldItem { $branch = $$borrower{branchcode}; } - my $rank; - my $found; - - # Get rank and found - if (C4::Context->preference('ReservesNeedReturns')) { - $rank = GetReserveNextRank($biblionumber); - } else { - $rank = '0'; - if ($item->{'holdingbranch'} eq $branch) { - $found = 'W'; - } else { - $found = 'T'; - } - } - # Add the reserve # $branch,$borrowernumber,$biblionumber,$constraint,$bibitems,$priority,$resdate,$expdate,$notes,$title,$checkitem,$found - AddReserve( $branch, $borrowernumber, $biblionumber, 'a', undef, $rank, '', '', '', $title, $itemnumber, $found ); + AddReserve( $branch, $borrowernumber, $biblionumber, 'a', undef, undef, '', '', '', $title, $itemnumber ); # Hashref building my $out; diff --git a/C4/Reserves.pm b/C4/Reserves.pm index def4c69..2862ed8 100644 --- a/C4/Reserves.pm +++ b/C4/Reserves.pm @@ -162,9 +162,29 @@ sub AddReserve { } else { undef $expdate; # make reserves.expirationdate default to null rather than '0000-00-00' } + + # Calculate priority if not given + if (not defined $priority) { + if ($checkitem and not C4::Context->preference('ReservesNeedReturns')) { + $priority = 0; + } else { + $priority = GetReserveNextRank($biblionumber); + } + } + + # Calculate found if not given + if ($priority == 0 and not defined $found) { + my $item = GetItem($checkitem); + if ($item->{holdingbranch} eq $branch) { + $found = 'W'; + } else { + $found = 'T'; + } + } + if ( C4::Context->preference( 'AllowHoldDateInFuture' ) ) { - # Make room in reserves for this before those of a later reserve date - $priority = _ShiftPriorityByDateAndPriority( $biblionumber, $resdate, $priority ); + # Make room in reserves for this before those of a later reserve date + $priority = _ShiftPriorityByDateAndPriority( $biblionumber, $resdate, $priority ); } my $waitingdate; diff --git a/opac/opac-reserve.pl b/opac/opac-reserve.pl index e725d30..5bf9a6f 100755 --- a/opac/opac-reserve.pl +++ b/opac/opac-reserve.pl @@ -224,7 +224,6 @@ if ( $query->param('place_reserve') ) { } my $biblioData = $biblioDataHash{$biblioNum}; - my $found; # Check for user supplied reserve date my $startdate; @@ -236,17 +235,8 @@ if ( $query->param('place_reserve') ) { my $expiration_date = $query->param("expiration_date_$biblioNum"); - # If a specific item was selected and the pickup branch is the same as the - # holdingbranch, force the value $rank and $found. - my $rank = $biblioData->{rank}; if ( $itemNum ne '' ) { $canreserve = 1 if CanItemBeReserved( $borrowernumber, $itemNum ); - $rank = '0' unless C4::Context->preference('ReservesNeedReturns'); - my $item = GetItem($itemNum); - if ( $item->{'holdingbranch'} eq $branch ) { - $found = 'W' - unless C4::Context->preference('ReservesNeedReturns'); - } } else { $canreserve = 1 if CanBookBeReserved( $borrowernumber, $biblioNum ); @@ -266,10 +256,10 @@ if ( $query->param('place_reserve') ) { AddReserve( $branch, $borrowernumber, $biblioNum, 'a', - [$biblioNum], $rank, + [$biblioNum], undef, $startdate, $expiration_date, $notes, $biblioData->{title}, - $itemNum, $found + $itemNum, undef ); ++$reserve_cnt; } diff --git a/reserve/placerequest.pl b/reserve/placerequest.pl index 3fe459c..bd1ce13 100755 --- a/reserve/placerequest.pl +++ b/reserve/placerequest.pl @@ -68,19 +68,6 @@ foreach my $bibnum (@biblionumbers) { $bibinfos{$bibnum} = \%bibinfo; } -my $found; - -# if we have an item selectionned, and the pickup branch is the same as the holdingbranch -# of the document, we force the value $rank and $found . -if ($checkitem ne ''){ - $rank[0] = '0' unless C4::Context->preference('ReservesNeedReturns'); - my $item = $checkitem; - $item = GetItem($item); - if ( $item->{'holdingbranch'} eq $branch ){ - $found = 'W' unless C4::Context->preference('ReservesNeedReturns'); - } -} - if ($type eq 'str8' && $borrower){ foreach my $biblionumber (keys %bibinfos) { @@ -110,17 +97,17 @@ if ($type eq 'str8' && $borrower){ if ($multi_hold) { my $bibinfo = $bibinfos{$biblionumber}; AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',[$biblionumber], - $bibinfo->{rank},$startdate,$expirationdate,$notes,$bibinfo->{title},$checkitem,$found); + $bibinfo->{rank},$startdate,$expirationdate,$notes,$bibinfo->{title},$checkitem, undef); } else { if ($input->param('request') eq 'any'){ # place a request on 1st available - AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem,$found); + AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,undef,$startdate,$expirationdate,$notes,$title,$checkitem,undef); } elsif ($reqbib[0] ne ''){ # FIXME : elsif probably never reached, (see top of the script) # place a request on a given item - AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'o',\@reqbib,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem, $found); + AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'o',\@reqbib,undef,$startdate,$expirationdate,$notes,$title,$checkitem,undef); } else { - AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem, $found); + AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,undef,$startdate,$expirationdate,$notes,$title,$checkitem,undef); } } } -- 1.7.2.5