Bugzilla – Attachment 8601 Details for
Bug 7710
multiple holds per title
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 7710 - multiple holds per title - Part 2 - Switch to using reservenumber
Bug-7710---multiple-holds-per-title---Part-2---Swi.patch (text/plain), 30.69 KB, created by
Kyle M Hall
on 2012-03-23 14:47:45 UTC
(
hide
)
Description:
Bug 7710 - multiple holds per title - Part 2 - Switch to using reservenumber
Filename:
MIME Type:
Creator:
Kyle M Hall
Created:
2012-03-23 14:47:45 UTC
Size:
30.69 KB
patch
obsolete
>From 84ac34a65d129820bc478515ecea39fdd3cbe065 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Tue, 20 Mar 2012 12:50:39 -0400 >Subject: [PATCH] Bug 7710 - multiple holds per title - Part 2 - Switch to using reservenumber > >Where necessary, switch from using biblionumber/borrowernumber >to using reservenumber to reference individual reserves. >--- > C4/Reserves.pm | 335 ++++++++------------ > .../prog/en/modules/reserve/request.tt | 13 +- > opac/opac-modrequest.pl | 6 +- > reserve/modrequest.pl | 21 +- > reserve/request.pl | 46 ++-- > 5 files changed, 180 insertions(+), 241 deletions(-) > >diff --git a/C4/Reserves.pm b/C4/Reserves.pm >index 276658c..45b7a52 100644 >--- a/C4/Reserves.pm >+++ b/C4/Reserves.pm >@@ -90,7 +90,8 @@ BEGIN { > @ISA = qw(Exporter); > @EXPORT = qw( > &AddReserve >- >+ >+ &GetReserve > &GetReservesFromItemnumber > &GetReservesFromBiblionumber > &GetReservesFromBorrowernumber >@@ -237,6 +238,24 @@ sub AddReserve { > return; # FIXME: why not have a useful return value? > } > >+=head2 GetReserve >+ >+ $res = GetReserve( $reservenumber ); >+ >+=cut >+ >+sub GetReserve { >+ my ($reservenumber) = @_; >+ #warn "C4::Reserves::GetReserve( $reservenumber )"; >+ >+ my $dbh = C4::Context->dbh; >+ my $query = "SELECT * FROM reserves WHERE reservenumber = ?"; >+ my $sth = $dbh->prepare( $query ); >+ $sth->execute( $reservenumber ); >+ my $res = $sth->fetchrow_hashref(); >+ return $res; >+} >+ > =head2 GetReservesFromBiblionumber > > ($count, $title_reserves) = &GetReserves($biblionumber); >@@ -253,7 +272,8 @@ sub GetReservesFromBiblionumber { > > # Find the desired items in the reserves > my $query = " >- SELECT branchcode, >+ SELECT reservenumber, >+ branchcode, > timestamp AS rtimestamp, > priority, > biblionumber, >@@ -319,7 +339,7 @@ sub GetReservesFromBiblionumber { > > =head2 GetReservesFromItemnumber > >- ( $reservedate, $borrowernumber, $branchcode ) = GetReservesFromItemnumber($itemnumber); >+ ( $reservedate, $borrowernumber, $branchcode, $reservenumber ) = GetReservesFromItemnumber($itemnumber); > > TODO :: Description here > >@@ -329,7 +349,7 @@ sub GetReservesFromItemnumber { > my ( $itemnumber, $all_dates ) = @_; > my $dbh = C4::Context->dbh; > my $query = " >- SELECT reservedate,borrowernumber,branchcode >+ SELECT reservedate,borrowernumber,branchcode,reservenumber > FROM reserves > WHERE itemnumber=? > "; >@@ -502,11 +522,11 @@ sub GetReserveCount { > > my $dbh = C4::Context->dbh; > >- my $query = ' >+ my $query = " > SELECT COUNT(*) AS counter > FROM reserves >- WHERE borrowernumber = ? >- '; >+ WHERE borrowernumber = ? >+ "; > my $sth = $dbh->prepare($query); > $sth->execute($borrowernumber); > my $row = $sth->fetchrow_hashref; >@@ -678,7 +698,7 @@ sub GetReservesToBranch { > my ( $frombranch ) = @_; > my $dbh = C4::Context->dbh; > my $sth = $dbh->prepare( >- "SELECT borrowernumber,reservedate,itemnumber,timestamp >+ "SELECT reservenumber,borrowernumber,reservedate,itemnumber,timestamp > FROM reserves > WHERE priority='0' > AND branchcode=?" >@@ -701,22 +721,24 @@ sub GetReservesToBranch { > > sub GetReservesForBranch { > my ($frombranch) = @_; >- my $dbh = C4::Context->dbh; >- my $query = "SELECT borrowernumber,reservedate,itemnumber,waitingdate >+ my $dbh = C4::Context->dbh; >+ >+ my $query = " >+ SELECT reservenumber,borrowernumber,reservedate,itemnumber,waitingdate > FROM reserves > WHERE priority='0' >- AND found='W' "; >- if ($frombranch){ >- $query .= " AND branchcode=? "; >- } >+ 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(); >- } >+ $sth->execute($frombranch); >+ } else { >+ $sth->execute(); >+ } >+ > my @transreserv; > my $i = 0; > while ( my $data = $sth->fetchrow_hashref ) { >@@ -896,109 +918,49 @@ sub CancelExpiredReserves { > > =head2 CancelReserve > >- &CancelReserve($biblionumber, $itemnumber, $borrowernumber); >+ &CancelReserve( $reservenumber ); > > Cancels a reserve. > >-Use either C<$biblionumber> or C<$itemnumber> to specify the item to >-cancel, but not both: if both are given, C<&CancelReserve> uses >-C<$itemnumber>. >- >-C<$borrowernumber> is the borrower number of the patron on whose >-behalf the book was reserved. >- >-If C<$biblionumber> was given, C<&CancelReserve> also adjusts the >-priorities of the other people who are waiting on the book. >- > =cut > > sub CancelReserve { >- my ( $biblio, $item, $borr ) = @_; >+ my ( $reservenumber ) = @_; > my $dbh = C4::Context->dbh; >- if ( $item and $borr ) { >- # removing a waiting reserve record.... >- # update the database... >- my $query = " >- UPDATE reserves >- SET cancellationdate = now(), >- found = Null, >- priority = 0 >- WHERE itemnumber = ? >- AND borrowernumber = ? >- "; >- my $sth = $dbh->prepare($query); >- $sth->execute( $item, $borr ); >- $sth->finish; >- $query = " >- INSERT INTO old_reserves >- SELECT * FROM reserves >- WHERE itemnumber = ? >- AND borrowernumber = ? >- "; >- $sth = $dbh->prepare($query); >- $sth->execute( $item, $borr ); >- $query = " >- DELETE FROM reserves >- WHERE itemnumber = ? >- AND borrowernumber = ? >- "; >- $sth = $dbh->prepare($query); >- $sth->execute( $item, $borr ); >- } >- else { >- # removing a reserve record.... >- # get the prioritiy on this record.... >- my $priority; >- my $query = qq/ >- SELECT priority FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- AND cancellationdate IS NULL >- AND itemnumber IS NULL >- /; >- my $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borr ); >- ($priority) = $sth->fetchrow_array; >- $sth->finish; >- $query = qq/ >- UPDATE reserves >- SET cancellationdate = now(), >- found = Null, >- priority = 0 >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >- >- # update the database, removing the record... >- $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borr ); >- $sth->finish; > >- $query = qq/ >- INSERT INTO old_reserves >- SELECT * FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >- $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borr ); >+ my $query = " >+ UPDATE reserves >+ SET cancellationdate = now(), >+ found = Null, >+ priority = 0 >+ WHERE reservenumber = ? >+ "; >+ my $sth = $dbh->prepare($query); >+ $sth->execute( $reservenumber ); >+ $sth->finish; > >- $query = qq/ >- DELETE FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >- $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borr ); >+ $query = " >+ INSERT INTO old_reserves >+ SELECT * FROM reserves >+ WHERE reservenumber = ? >+ "; >+ $sth = $dbh->prepare($query); >+ $sth->execute( $reservenumber ); > >- # now fix the priority on the others.... >- _FixPriority( $biblio, $borr ); >- } >+ $query = " >+ DELETE FROM reserves >+ WHERE reservenumber = ? >+ "; >+ $sth = $dbh->prepare($query); >+ $sth->execute( $reservenumber ); >+ >+ # now fix the priority on the others.... >+ _FixPriority( $reservenumber ); > } > > =head2 ModReserve > >- ModReserve($rank, $biblio, $borrower, $branch[, $itemnumber]) >+ ModReserve($rank, $reservenumber, $branch[, $itemnumber]) > > Change a hold request's priority or cancel it. > >@@ -1029,48 +991,44 @@ itemnumber and supplying itemnumber. > > sub ModReserve { > #subroutine to update a reserve >- my ( $rank, $biblio, $borrower, $branch , $itemnumber) = @_; >+ my ( $rank, $reservenumber, $branch , $itemnumber) = @_; > return if $rank eq "W"; > return if $rank eq "n"; > my $dbh = C4::Context->dbh; > if ( $rank eq "del" ) { >- my $query = qq/ >+ my $query = " > UPDATE reserves > SET cancellationdate=now() >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >+ WHERE reservenumber = ? >+ "; > my $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrower ); >+ $sth->execute( $reservenumber ); > $sth->finish; >- $query = qq/ >+ $query = " > INSERT INTO old_reserves > SELECT * > FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >+ WHERE reservenumber = ? >+ "; > $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrower ); >- $query = qq/ >+ $sth->execute( $reservenumber ); >+ $query = " > DELETE FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >+ WHERE reservenumber = ? >+ "; > $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrower ); >+ $sth->execute( $reservenumber ); > > } > elsif ($rank =~ /^\d+/ and $rank > 0) { >- my $query = qq/ >- UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL, waitingdate = NULL >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >+ my $query = " >+ UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL, waitingdate = NULL >+ WHERE reservenumber = ? >+ "; > my $sth = $dbh->prepare($query); >- $sth->execute( $rank, $branch,$itemnumber, $biblio, $borrower); >+ $sth->execute( $rank, $branch, $itemnumber, $reservenumber ); > $sth->finish; >- _FixPriority( $biblio, $borrower, $rank); >+ _FixPriority( $reservenumber, $rank ); > } > } > >@@ -1090,6 +1048,7 @@ sub ModReserveFill { > my ($res) = @_; > my $dbh = C4::Context->dbh; > # fill in a reserve record.... >+ my $reservenumber = $res->{'reservenumber'}; > my $biblionumber = $res->{'biblionumber'}; > my $borrowernumber = $res->{'borrowernumber'}; > my $resdate = $res->{'reservedate'}; >@@ -1138,7 +1097,7 @@ sub ModReserveFill { > # now fix the priority on the others (if the priority wasn't > # already sorted!).... > unless ( $priority == 0 ) { >- _FixPriority( $biblionumber, $borrowernumber ); >+ _FixPriority( $reservenumber ); > } > } > >@@ -1265,20 +1224,19 @@ Reduce the values of queuded list > =cut > > sub ModReserveMinusPriority { >- my ( $itemnumber, $borrowernumber, $biblionumber ) = @_; >+ my ( $itemnumber, $reservenumber ) = @_; > > #first step update the value of the first person on reserv > my $dbh = C4::Context->dbh; > my $query = " > UPDATE reserves > SET priority = 0 , itemnumber = ? >- WHERE borrowernumber=? >- AND biblionumber=? >+ WHERE reservenumber = ? > "; > my $sth_upd = $dbh->prepare($query); >- $sth_upd->execute( $itemnumber, $borrowernumber, $biblionumber ); >+ $sth_upd->execute( $itemnumber, $reservenumber ); > # second step update all others reservs >- _FixPriority($biblionumber, $borrowernumber, '0'); >+ _FixPriority( $reservenumber, '0'); > } > > =head2 GetReserveInfo >@@ -1291,7 +1249,7 @@ Current implementation this query should have a single result. > =cut > > sub GetReserveInfo { >- my ( $borrowernumber, $biblionumber ) = @_; >+ my ( $reservenumber ) = @_; > my $dbh = C4::Context->dbh; > my $strsth="SELECT > reservedate, >@@ -1325,11 +1283,9 @@ sub GetReserveInfo { > LEFT JOIN items USING(itemnumber) > LEFT JOIN borrowers USING(borrowernumber) > LEFT JOIN biblio ON (reserves.biblionumber=biblio.biblionumber) >- WHERE >- reserves.borrowernumber=? >- AND reserves.biblionumber=?"; >+ WHERE reserves.reservenumber = ?"; > my $sth = $dbh->prepare($strsth); >- $sth->execute($borrowernumber,$biblionumber); >+ $sth->execute($reservenumber); > > my $data = $sth->fetchrow_hashref; > return $data; >@@ -1418,29 +1374,25 @@ Input: $where is 'up', 'down', 'top' or 'bottom'. Biblionumber, Date reserve was > =cut > > sub AlterPriority { >- my ( $where, $borrowernumber, $biblionumber ) = @_; >- >+ my ( $where, $reservenumber ) = @_; >+ #warn "C4::Reserves::AlterPriority( $where, $reservenumber )"; > my $dbh = C4::Context->dbh; >- >- ## Find this reserve >- my $sth = $dbh->prepare('SELECT * FROM reserves WHERE biblionumber = ? AND borrowernumber = ? AND cancellationdate IS NULL'); >- $sth->execute( $biblionumber, $borrowernumber ); >- my $reserve = $sth->fetchrow_hashref(); >- $sth->finish(); >+ >+ my $reserve = GetReserve( $reservenumber ); > > if ( $where eq 'up' || $where eq 'down' ) { > > my $priority = $reserve->{'priority'}; > $priority = $where eq 'up' ? $priority - 1 : $priority + 1; >- _FixPriority( $biblionumber, $borrowernumber, $priority ) >+ _FixPriority( $reservenumber, $priority ) > > } elsif ( $where eq 'top' ) { > >- _FixPriority( $biblionumber, $borrowernumber, '1' ) >+ _FixPriority( $reservenumber, '1' ) > > } elsif ( $where eq 'bottom' ) { > >- _FixPriority( $biblionumber, $borrowernumber, '999999' ) >+ _FixPriority( $reservenumber, '999999' ) > > } > } >@@ -1454,27 +1406,20 @@ This function sets the lowestPriority field to true if is false, and false if it > =cut > > sub ToggleLowestPriority { >- my ( $borrowernumber, $biblionumber ) = @_; >+ my ( $reservenumber ) = @_; > > my $dbh = C4::Context->dbh; > >- my $sth = $dbh->prepare( >- "UPDATE reserves SET lowestPriority = NOT lowestPriority >- WHERE biblionumber = ? >- AND borrowernumber = ?" >- ); >- $sth->execute( >- $biblionumber, >- $borrowernumber, >- ); >+ my $sth = $dbh->prepare( "UPDATE reserves SET lowestPriority = NOT lowestPriority WHERE reservenumber = ?"); >+ $sth->execute( $reservenumber ); > $sth->finish; > >- _FixPriority( $biblionumber, $borrowernumber, '999999' ); >+ _FixPriority( $reservenumber, '999999' ); > } > > =head2 _FixPriority > >- &_FixPriority($biblio,$borrowernumber,$rank,$ignoreSetLowestRank); >+ &_FixPriority( $reservenumber, $rank, $ignoreSetLowestRank); > > Only used internally (so don't export it) > Changed how this functions works # >@@ -1486,41 +1431,39 @@ in new priority rank > =cut > > sub _FixPriority { >- my ( $biblio, $borrowernumber, $rank, $ignoreSetLowestRank ) = @_; >+ my ( $reservenumber, $rank, $ignoreSetLowestRank ) = @_; > my $dbh = C4::Context->dbh; >- if ( $rank eq "del" ) { >- CancelReserve( $biblio, undef, $borrowernumber ); >- } >- if ( $rank eq "W" || $rank eq "0" ) { >+ >+ my $res = GetReserve( $reservenumber ); >+ >+ if ( $rank eq "del" ) { >+ CancelReserve( $reservenumber ); >+ } >+ elsif ( $rank eq "W" || $rank eq "0" ) { > > # make sure priority for waiting or in-transit items is 0 >- my $query = qq/ >+ my $query = " > UPDATE reserves > SET priority = 0 >- WHERE biblionumber = ? >- AND borrowernumber = ? >- AND found IN ('W', 'T') >- /; >+ WHERE reservenumber = ? >+ AND found IN ('W', 'T') >+ "; > my $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrowernumber ); >+ $sth->execute( $reservenumber ); > } > my @priority; > my @reservedates; > > # get whats left >-# FIXME adding a new security in returned elements for changing priority, >-# now, we don't care anymore any reservations with itemnumber linked (suppose a waiting reserve) >- # This is wrong a waiting reserve has W set >- # The assumption that having an itemnumber set means waiting is wrong and should be corrected any place it occurs >- my $query = qq/ >- SELECT borrowernumber, reservedate, constrainttype >+ my $query = " >+ SELECT reservenumber, borrowernumber, reservedate, constrainttype > FROM reserves > WHERE biblionumber = ? >- AND ((found <> 'W' AND found <> 'T') or found is NULL) >+ AND ((found <> 'W' AND found <> 'T') OR found IS NULL) > ORDER BY priority ASC >- /; >+ "; > my $sth = $dbh->prepare($query); >- $sth->execute($biblio); >+ $sth->execute( $res->{'biblionumber'} ); > while ( my $line = $sth->fetchrow_hashref ) { > push( @reservedates, $line ); > push( @priority, $line ); >@@ -1530,7 +1473,7 @@ sub _FixPriority { > my $i; > my $key = -1; # to allow for 0 to be a valid result > for ( $i = 0 ; $i < @priority ; $i++ ) { >- if ( $borrowernumber == $priority[$i]->{'borrowernumber'} ) { >+ if ( $reservenumber == $priority[$i]->{'reservenumber'} ) { > $key = $i; # save the index > last; > } >@@ -1546,29 +1489,25 @@ sub _FixPriority { > > # now fix the priority on those that are left.... > $query = " >- UPDATE reserves >- SET priority = ? >- WHERE biblionumber = ? >- AND borrowernumber = ? >- AND reservedate = ? >- AND found IS NULL >+ UPDATE reserves >+ SET priority = ? >+ WHERE reservenumber = ? > "; > $sth = $dbh->prepare($query); > for ( my $j = 0 ; $j < @priority ; $j++ ) { > $sth->execute( >- $j + 1, $biblio, >- $priority[$j]->{'borrowernumber'}, >- $priority[$j]->{'reservedate'} >+ $j + 1, >+ $priority[$j]->{'reservenumber'} > ); > $sth->finish; > } > >- $sth = $dbh->prepare( "SELECT borrowernumber FROM reserves WHERE lowestPriority = 1 ORDER BY priority" ); >+ $sth = $dbh->prepare( "SELECT reservenumber FROM reserves WHERE lowestPriority = 1 ORDER BY priority" ); > $sth->execute(); > > unless ( $ignoreSetLowestRank ) { > while ( my $res = $sth->fetchrow_hashref() ) { >- _FixPriority( $biblio, $res->{'borrowernumber'}, '999999', 1 ); >+ _FixPriority( $res->{'reservenumber'}, '999999', 1 ); > } > } > } >@@ -1835,7 +1774,7 @@ sub _ShiftPriorityByDateAndPriority { > > =head2 MoveReserve > >- MoveReserve( $itemnumber, $borrowernumber, $cancelreserve ) >+ MoveReserve( $reservenumber, $cancelreserve ) > > Use when checking out an item to handle reserves > If $cancelreserve boolean is set to true, it will remove existing reserve >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >index 2771c6f..d4cf225 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >@@ -601,6 +601,7 @@ function checkMultiHold() { > [% FOREACH reserveloo IN biblioloo.reserveloop %] > [% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %] > <td> >+ <input type="hidden" name="reservenumber" value="[% reserveloo.reservenumber %]" /> > <input type="hidden" name="borrowernumber" value="[% reserveloo.borrowernumber %]" /> > <input type="hidden" name="biblionumber" value="[% reserveloo.biblionumber %]" /> > <select name="rank-request"> >@@ -620,19 +621,19 @@ function checkMultiHold() { > > [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] > <td style="white-space:nowrap;"> >- <a title="Move Hold Up" href="request.pl?action=move&where=up&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&date=[% reserveloo.date %]"> >+ <a title="Move Hold Up" href="request.pl?action=move&where=up&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&reservenumber=[% reserveloo.reservenumber %]&date=[% reserveloo.date %]"> > <img src="/intranet-tmpl/[% theme %]/img/go-up.png" border="0" alt="Go up" /> > </a> > >- <a title="Move Hold To Top" href="request.pl?action=move&where=top&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&date=[% reserveloo.date %]"> >+ <a title="Move Hold To Top" href="request.pl?action=move&where=top&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&reservenumber=[% reserveloo.reservenumber %]&date=[% reserveloo.date %]"> > <img src="/intranet-tmpl/[% theme %]/img/go-top.png" border="0" alt="Go top" /> > </a> > >- <a title="Move Hold To Bottom" href="request.pl?action=move&where=bottom&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&date=[% reserveloo.date %]"> >+ <a title="Move Hold To Bottom" href="request.pl?action=move&where=bottom&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&reservenumber=[% reserveloo.reservenumber %]&date=[% reserveloo.date %]"> > <img src="/intranet-tmpl/[% theme %]/img/go-bottom.png" border="0" alt="Go bottom" /> > </a> > >- <a title="Move Hold Down" href="request.pl?action=move&where=down&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&date=[% reserveloo.date %]"> >+ <a title="Move Hold Down" href="request.pl?action=move&where=down&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&reservenumber=[% reserveloo.reservenumber %]&date=[% reserveloo.date %]"> > <img src="/intranet-tmpl/[% theme %]/img/go-down.png" border="0" alt="Go down" /> > </a> > </td> >@@ -712,7 +713,7 @@ function checkMultiHold() { > > [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %] > <td> >- <a title="Toggle Lowest Priority" href="request.pl?action=setLowestPriority&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&date=[% reserveloo.date %]"> >+ <a title="Toggle Lowest Priority" href="request.pl?action=setLowestPriority&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&reservenumber=[% reserveloo.reservenumber %]&date=[% reserveloo.date %]"> > [% IF ( reserveloo.lowestPriority ) %] > <img src="/intranet-tmpl/[% theme %]/img/go-bottom.png" border="0" alt="Unset Lowest Priority" /> > [% ELSE %] >@@ -723,7 +724,7 @@ function checkMultiHold() { > [% END %] > > <td> >- <a title="Cancel Hold" href="request.pl?action=cancel&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&date=[% reserveloo.date %]"> >+ <a title="Cancel Hold" href="request.pl?action=cancel&borrowernumber=[% reserveloo.borrowernumber %]&biblionumber=[% reserveloo.biblionumber %]&reservenumber=[% reserveloo.reservenumber %]&date=[% reserveloo.date %]"> > <img src="/intranet-tmpl/[% theme %]/img/x.png" border="0" alt="Cancel" /> > </a> > </td> >diff --git a/opac/opac-modrequest.pl b/opac/opac-modrequest.pl >index 7e2f2e5..39a5728 100755 >--- a/opac/opac-modrequest.pl >+++ b/opac/opac-modrequest.pl >@@ -41,8 +41,8 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( > } > ); > >-my $biblionumber = $query->param('biblionumber'); >-if ($biblionumber and $borrowernumber) { >- CancelReserve($biblionumber, '', $borrowernumber); >+my $reservenumber = $query->param('reservenumber'); >+if ($reservenumber && $borrowernumber) { >+ CancelReserve( $reservenumber ); > } > print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds"); >diff --git a/reserve/modrequest.pl b/reserve/modrequest.pl >index eecd86b..66b9c43 100755 >--- a/reserve/modrequest.pl >+++ b/reserve/modrequest.pl >@@ -41,22 +41,23 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > } > ); > >-my @rank=$query->param('rank-request'); >-my @biblionumber=$query->param('biblionumber'); >-my @borrower=$query->param('borrowernumber'); >-my @branch=$query->param('pickup'); >-my @itemnumber=$query->param('itemnumber'); >+my @reservenumber = $query->param('reservenumber'); >+my @rank = $query->param('rank-request'); >+my @biblionumber = $query->param('biblionumber'); >+my @borrower = $query->param('borrowernumber'); >+my @branch = $query->param('pickup'); >+my @itemnumber = $query->param('itemnumber'); > my $multi_hold = $query->param('multi_hold'); > my $biblionumbers = $query->param('biblionumbers'); > my $count=@rank; > >-my $CancelBiblioNumber=$query->param('CancelBiblioNumber'); >-my $CancelBorrowerNumber=$query->param('CancelBorrowerNumber'); >-my $CancelItemnumber=$query->param('CancelItemnumber'); >+my $CancelBiblioNumber = $query->param('CancelBiblioNumber'); >+my $CancelBorrowerNumber = $query->param('CancelBorrowerNumber'); >+my $CancelItemnumber = $query->param('CancelItemnumber'); > > # 2 possibilitys : cancel an item reservation, or modify or cancel the queded list > >-# 1) cancel an item reservation by fonction ModReserveCancelAll (in reserves.pm) >+# 1) cancel an item reservation by function ModReserveCancelAll (in reserves.pm) > if ($CancelBorrowerNumber) { > ModReserveCancelAll($CancelItemnumber, $CancelBorrowerNumber); > $biblionumber[0] = $CancelBiblioNumber, >@@ -66,7 +67,7 @@ if ($CancelBorrowerNumber) { > else { > for (my $i=0;$i<$count;$i++){ > undef $itemnumber[$i] unless $itemnumber[$i] ne ''; >- ModReserve($rank[$i],$biblionumber[$i],$borrower[$i],$branch[$i],$itemnumber[$i]); #from C4::Reserves >+ ModReserve($rank[$i],$reservenumber[$i],$branch[$i],$itemnumber[$i]); #from C4::Reserves > } > } > my $from=$query->param('from'); >diff --git a/reserve/request.pl b/reserve/request.pl >index 24557f4..5f8b1f9 100755 >--- a/reserve/request.pl >+++ b/reserve/request.pl >@@ -98,17 +98,14 @@ $action ||= q{}; > > if ( $action eq 'move' ) { > my $where = $input->param('where'); >- my $borrowernumber = $input->param('borrowernumber'); >- my $biblionumber = $input->param('biblionumber'); >- AlterPriority( $where, $borrowernumber, $biblionumber ); >+ my $reservenumber = $input->param('reservenumber'); >+ AlterPriority( $where, $reservenumber ); > } elsif ( $action eq 'cancel' ) { >- my $borrowernumber = $input->param('borrowernumber'); >- my $biblionumber = $input->param('biblionumber'); >- CancelReserve( $biblionumber, '', $borrowernumber ); >+ my $reservenumber = $input->param('reservenumber'); >+ CancelReserve( $reservenumber ); > } elsif ( $action eq 'setLowestPriority' ) { >- my $borrowernumber = $input->param('borrowernumber'); >- my $biblionumber = $input->param('biblionumber'); >- ToggleLowestPriority( $borrowernumber, $biblionumber ); >+ my $reservenumber = $input->param('reservenumber'); >+ ToggleLowestPriority( $reservenumber ); > } > > if ($findborrower) { >@@ -142,7 +139,7 @@ if ($borrowernumber_hold && !$action) { > GetReserveCount( $borrowerinfo->{'borrowernumber'} ); > > if ( C4::Context->preference('maxreserves') && ($number_reserves >= C4::Context->preference('maxreserves')) ) { >- $warnings = 1; >+ $warnings = 1; > $maxreserves = 1; > } > >@@ -156,7 +153,7 @@ if ($borrowernumber_hold && !$action) { > > # check if the borrower make the reserv in a different branch > if ( $borrowerinfo->{'branchcode'} ne C4::Context->userenv->{'branch'} ) { >- $messages = 1; >+ $messages = 1; > $diffbranch = 1; > } > >@@ -178,8 +175,8 @@ if ($borrowernumber_hold && !$action) { > maxreserves => $maxreserves, > expiry => $expiry, > diffbranch => $diffbranch, >- messages => $messages, >- warnings => $warnings >+ messages => $messages, >+ warnings => $warnings > ); > } > >@@ -233,12 +230,12 @@ my @biblioloop = (); > foreach my $biblionumber (@biblionumbers) { > > my %biblioloopiter = (); >- my $maxreserves; >+ my $maxreserves; > >- my $dat = GetBiblioData($biblionumber); >+ my $dat = GetBiblioData($biblionumber); > > unless ( CanBookBeReserved($borrowerinfo->{borrowernumber}, $biblionumber) ) { >- $warnings = 1; >+ $warnings = 1; > $maxreserves = 1; > } > # get existing reserves ..... >@@ -262,8 +259,8 @@ foreach my $biblionumber (@biblionumbers) { > $template->param( alreadyreserved => $alreadyreserved, > messages => $messages, > warnings => $warnings, >- maxreserves=>$maxreserves >- ); >+ maxreserves=>$maxreserves >+ ); > > > # FIXME think @optionloop, is maybe obsolete, or must be switchable by a systeme preference fixed rank or not >@@ -290,11 +287,11 @@ foreach my $biblionumber (@biblionumbers) { > if (my $items = get_itemnumbers_of($biblionumber)->{$biblionumber}){ > @itemnumbers = @$items; > } >- my @hostitems = get_hostitemnumbers_of($biblionumber); >- if (@hostitems){ >- $template->param('hostitemsflag' => 1); >- push(@itemnumbers, @hostitems); >- } >+ my @hostitems = get_hostitemnumbers_of($biblionumber); >+ if (@hostitems){ >+ $template->param('hostitemsflag' => 1); >+ push(@itemnumbers, @hostitems); >+ } > > if (!@itemnumbers) { > $template->param('noitems' => 1); >@@ -372,7 +369,7 @@ foreach my $biblionumber (@biblionumbers) { > } > > # checking reserve >- my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber); >+ my ($reservedate,$reservedfor,$expectedAt,$reservenumber) = GetReservesFromItemnumber($itemnumber); > my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor ); > > if ( defined $reservedate ) { >@@ -567,6 +564,7 @@ foreach my $biblionumber (@biblionumbers) { > $reserve{'lowestPriority'} = $res->{'lowestPriority'}; > $reserve{'branchloop'} = GetBranchesLoop($res->{'branchcode'}); > $reserve{'optionloop'} = \@optionloop; >+ $reserve{'reservenumber'} = $res->{'reservenumber'}; > > push( @reserveloop, \%reserve ); > } >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 7710
:
8598
|
8599
|
8600
|
8601
|
8602
|
8603
|
10091
|
10098
|
10099
|
10100
|
10101
|
10102
|
10818
|
10897
|
12620
|
14083
|
14600
|
14602
|
14603
|
15252
|
15253
|
15295
|
15731
|
15732
|
17448
|
18217
|
18320
|
18321
|
19117
|
27429
|
30218
|
35397
|
35518