Bugzilla – Attachment 10099 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 reserve_id
Bug-7710---multiple-holds-per-title---Part-2---Swi.patch (text/plain), 30.81 KB, created by
Kyle M Hall
on 2012-06-10 13:13:58 UTC
(
hide
)
Description:
Bug 7710 - multiple holds per title - Part 2 - Switch to using reserve_id
Filename:
MIME Type:
Creator:
Kyle M Hall
Created:
2012-06-10 13:13:58 UTC
Size:
30.81 KB
patch
obsolete
>From 2a7d1bebd6d340b286aee4eda0f0de3ce7e95232 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 reserve_id > >Where necessary, switch from using biblionumber/borrowernumber >to using reserve_id to reference individual reserves. >--- > C4/Reserves.pm | 329 ++++++++------------ > .../prog/en/modules/reserve/request.tt | 13 +- > opac/opac-modrequest.pl | 6 +- > reserve/modrequest.pl | 21 +- > reserve/request.pl | 46 ++-- > 5 files changed, 178 insertions(+), 237 deletions(-) > >diff --git a/C4/Reserves.pm b/C4/Reserves.pm >index a64abde..204cb9f 100644 >--- a/C4/Reserves.pm >+++ b/C4/Reserves.pm >@@ -93,7 +93,8 @@ BEGIN { > @ISA = qw(Exporter); > @EXPORT = qw( > &AddReserve >- >+ >+ &GetReserve > &GetReservesFromItemnumber > &GetReservesFromBiblionumber > &GetReservesFromBorrowernumber >@@ -244,6 +245,24 @@ sub AddReserve { > return; # FIXME: why not have a useful return value? > } > >+=head2 GetReserve >+ >+ $res = GetReserve( $reserve_id ); >+ >+=cut >+ >+sub GetReserve { >+ my ($reserve_id) = @_; >+ #warn "C4::Reserves::GetReserve( $reserve_id )"; >+ >+ my $dbh = C4::Context->dbh; >+ my $query = "SELECT * FROM reserves WHERE reserve_id = ?"; >+ my $sth = $dbh->prepare( $query ); >+ $sth->execute( $reserve_id ); >+ my $res = $sth->fetchrow_hashref(); >+ return $res; >+} >+ > =head2 GetReservesFromBiblionumber > > ($count, $title_reserves) = &GetReserves($biblionumber); >@@ -260,7 +279,8 @@ sub GetReservesFromBiblionumber { > > # Find the desired items in the reserves > my $query = " >- SELECT branchcode, >+ SELECT reserve_id, >+ branchcode, > timestamp AS rtimestamp, > priority, > biblionumber, >@@ -328,7 +348,7 @@ sub GetReservesFromBiblionumber { > > =head2 GetReservesFromItemnumber > >- ( $reservedate, $borrowernumber, $branchcode ) = GetReservesFromItemnumber($itemnumber); >+ ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber); > > TODO :: Description here > >@@ -338,7 +358,7 @@ sub GetReservesFromItemnumber { > my ( $itemnumber, $all_dates ) = @_; > my $dbh = C4::Context->dbh; > my $query = " >- SELECT reservedate,borrowernumber,branchcode >+ SELECT reservedate,borrowernumber,branchcode,reserve_id > FROM reserves > WHERE itemnumber=? > "; >@@ -511,11 +531,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; >@@ -687,7 +707,7 @@ sub GetReservesToBranch { > my ( $frombranch ) = @_; > my $dbh = C4::Context->dbh; > my $sth = $dbh->prepare( >- "SELECT borrowernumber,reservedate,itemnumber,timestamp >+ "SELECT reserve_id,borrowernumber,reservedate,itemnumber,timestamp > FROM reserves > WHERE priority='0' > AND branchcode=?" >@@ -710,22 +730,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 reserve_id,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 ) { >@@ -923,109 +945,49 @@ sub AutoUnsuspendReserves { > > =head2 CancelReserve > >- &CancelReserve($biblionumber, $itemnumber, $borrowernumber); >+ &CancelReserve( $reserve_id ); > > 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 ( $reserve_id ) = @_; > 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 reserve_id = ? >+ "; >+ my $sth = $dbh->prepare($query); >+ $sth->execute( $reserve_id ); >+ $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 reserve_id = ? >+ "; >+ $sth = $dbh->prepare($query); >+ $sth->execute( $reserve_id ); > >- # now fix the priority on the others.... >- _FixPriority( $biblio, $borr ); >- } >+ $query = " >+ DELETE FROM reserves >+ WHERE reserve_id = ? >+ "; >+ $sth = $dbh->prepare($query); >+ $sth->execute( $reserve_id ); >+ >+ # now fix the priority on the others.... >+ _FixPriority( $reserve_id ); > } > > =head2 ModReserve > >- ModReserve($rank, $biblio, $borrower, $branch[, $itemnumber]) >+ ModReserve($rank, $reserve_id, $branch[, $itemnumber]) > > Change a hold request's priority or cancel it. > >@@ -1056,46 +1018,42 @@ itemnumber and supplying itemnumber. > > sub ModReserve { > #subroutine to update a reserve >- my ( $rank, $biblio, $borrower, $branch , $itemnumber, $suspend_until) = @_; >+ my ( $rank, $reserve_id, $branch , $itemnumber, $suspend_until) = @_; > 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 reserve_id = ? >+ "; > my $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrower ); >+ $sth->execute( $reserve_id ); > $sth->finish; >- $query = qq/ >+ $query = " > INSERT INTO old_reserves > SELECT * > FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >+ WHERE reserve_id = ? >+ "; > $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrower ); >- $query = qq/ >+ $sth->execute( $reserve_id ); >+ $query = " > DELETE FROM reserves >- WHERE biblionumber = ? >- AND borrowernumber = ? >- /; >+ WHERE reserve_id = ? >+ "; > $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrower ); >+ $sth->execute( $reserve_id ); > > } > elsif ($rank =~ /^\d+/ and $rank > 0) { > my $query = " > UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL, waitingdate = NULL >- WHERE biblionumber = ? >- AND borrowernumber = ? >+ WHERE reserve_id = ? > "; > my $sth = $dbh->prepare($query); >- $sth->execute( $rank, $branch,$itemnumber, $biblio, $borrower); >+ $sth->execute( $rank, $branch, $itemnumber, $reserve_id ); > $sth->finish; > > if ( defined( $suspend_until ) ) { >@@ -1107,7 +1065,7 @@ sub ModReserve { > } > } > >- _FixPriority( $biblio, $borrower, $rank); >+ _FixPriority( $reserve_id, $rank ); > } > } > >@@ -1127,6 +1085,7 @@ sub ModReserveFill { > my ($res) = @_; > my $dbh = C4::Context->dbh; > # fill in a reserve record.... >+ my $reserve_id = $res->{'reserve_id'}; > my $biblionumber = $res->{'biblionumber'}; > my $borrowernumber = $res->{'borrowernumber'}; > my $resdate = $res->{'reservedate'}; >@@ -1175,7 +1134,7 @@ sub ModReserveFill { > # now fix the priority on the others (if the priority wasn't > # already sorted!).... > unless ( $priority == 0 ) { >- _FixPriority( $biblionumber, $borrowernumber ); >+ _FixPriority( $reserve_id ); > } > } > >@@ -1302,20 +1261,19 @@ Reduce the values of queuded list > =cut > > sub ModReserveMinusPriority { >- my ( $itemnumber, $borrowernumber, $biblionumber ) = @_; >+ my ( $itemnumber, $reserve_id ) = @_; > > #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 reserve_id = ? > "; > my $sth_upd = $dbh->prepare($query); >- $sth_upd->execute( $itemnumber, $borrowernumber, $biblionumber ); >+ $sth_upd->execute( $itemnumber, $reserve_id ); > # second step update all others reservs >- _FixPriority($biblionumber, $borrowernumber, '0'); >+ _FixPriority( $reserve_id, '0'); > } > > =head2 GetReserveInfo >@@ -1328,7 +1286,7 @@ Current implementation this query should have a single result. > =cut > > sub GetReserveInfo { >- my ( $borrowernumber, $biblionumber ) = @_; >+ my ( $reserve_id ) = @_; > my $dbh = C4::Context->dbh; > my $strsth="SELECT > reservedate, >@@ -1362,11 +1320,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.reserve_id = ?"; > my $sth = $dbh->prepare($strsth); >- $sth->execute($borrowernumber,$biblionumber); >+ $sth->execute($reserve_id); > > my $data = $sth->fetchrow_hashref; > return $data; >@@ -1455,29 +1411,25 @@ Input: $where is 'up', 'down', 'top' or 'bottom'. Biblionumber, Date reserve was > =cut > > sub AlterPriority { >- my ( $where, $borrowernumber, $biblionumber ) = @_; >- >+ my ( $where, $reserve_id ) = @_; >+ #warn "C4::Reserves::AlterPriority( $where, $reserve_id )"; > 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( $reserve_id ); > > if ( $where eq 'up' || $where eq 'down' ) { > > my $priority = $reserve->{'priority'}; > $priority = $where eq 'up' ? $priority - 1 : $priority + 1; >- _FixPriority( $biblionumber, $borrowernumber, $priority ) >+ _FixPriority( $reserve_id, $priority ) > > } elsif ( $where eq 'top' ) { > >- _FixPriority( $biblionumber, $borrowernumber, '1' ) >+ _FixPriority( $reserve_id, '1' ) > > } elsif ( $where eq 'bottom' ) { > >- _FixPriority( $biblionumber, $borrowernumber, '999999' ) >+ _FixPriority( $reserve_id, '999999' ) > > } > } >@@ -1491,22 +1443,15 @@ This function sets the lowestPriority field to true if is false, and false if it > =cut > > sub ToggleLowestPriority { >- my ( $borrowernumber, $biblionumber ) = @_; >+ my ( $reserve_id ) = @_; > > 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 reserve_id = ?"); >+ $sth->execute( $reserve_id ); > $sth->finish; > >- _FixPriority( $biblionumber, $borrowernumber, '999999' ); >+ _FixPriority( $reserve_id, '999999' ); > } > > =head2 ToggleSuspend >@@ -1603,7 +1548,7 @@ sub SuspendAll { > > =head2 _FixPriority > >- &_FixPriority($biblio,$borrowernumber,$rank,$ignoreSetLowestRank); >+ &_FixPriority( $reserve_id, $rank, $ignoreSetLowestRank); > > Only used internally (so don't export it) > Changed how this functions works # >@@ -1615,41 +1560,39 @@ in new priority rank > =cut > > sub _FixPriority { >- my ( $biblio, $borrowernumber, $rank, $ignoreSetLowestRank ) = @_; >+ my ( $reserve_id, $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( $reserve_id ); >+ >+ if ( $rank eq "del" ) { >+ CancelReserve( $reserve_id ); >+ } >+ 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 reserve_id = ? >+ AND found IN ('W', 'T') >+ "; > my $sth = $dbh->prepare($query); >- $sth->execute( $biblio, $borrowernumber ); >+ $sth->execute( $reserve_id ); > } > 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 reserve_id, 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 ); >@@ -1659,7 +1602,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 ( $reserve_id == $priority[$i]->{'reserve_id'} ) { > $key = $i; # save the index > last; > } >@@ -1675,29 +1618,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 reserve_id = ? > "; > $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]->{'reserve_id'} > ); > $sth->finish; > } > >- $sth = $dbh->prepare( "SELECT borrowernumber FROM reserves WHERE lowestPriority = 1 ORDER BY priority" ); >+ $sth = $dbh->prepare( "SELECT reserve_id 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->{'reserve_id'}, '999999', 1 ); > } > } > } >@@ -1967,7 +1906,7 @@ sub _ShiftPriorityByDateAndPriority { > > =head2 MoveReserve > >- MoveReserve( $itemnumber, $borrowernumber, $cancelreserve ) >+ MoveReserve( $reserve_id, $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 8e8470b..81aee44 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt >@@ -603,6 +603,7 @@ function checkMultiHold() { > [% FOREACH reserveloo IN biblioloo.reserveloop %] > [% UNLESS ( loop.odd ) %]<tr class="highlight">[% ELSE %]<tr>[% END %] > <td> >+ <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id %]" /> > <input type="hidden" name="borrowernumber" value="[% reserveloo.borrowernumber %]" /> > <input type="hidden" name="biblionumber" value="[% reserveloo.biblionumber %]" /> > <select name="rank-request"> >@@ -622,19 +623,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 %]&reserve_id=[% reserveloo.reserve_id %]&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 %]&reserve_id=[% reserveloo.reserve_id %]&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 %]&reserve_id=[% reserveloo.reserve_id %]&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 %]&reserve_id=[% reserveloo.reserve_id %]&date=[% reserveloo.date %]"> > <img src="/intranet-tmpl/[% theme %]/img/go-down.png" border="0" alt="Go down" /> > </a> > </td> >@@ -714,7 +715,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 %]&reserve_id=[% reserveloo.reserve_id %]&date=[% reserveloo.date %]"> > [% IF ( reserveloo.lowestPriority ) %] > <img src="/intranet-tmpl/[% theme %]/img/go-bottom.png" border="0" alt="Unset Lowest Priority" /> > [% ELSE %] >@@ -725,7 +726,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 %]&reserve_id=[% reserveloo.reserve_id %]&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..81f0152 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 $reserve_id = $query->param('reserve_id'); >+if ($reserve_id && $borrowernumber) { >+ CancelReserve( $reserve_id ); > } > print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds"); >diff --git a/reserve/modrequest.pl b/reserve/modrequest.pl >index 03ef064..328d997 100755 >--- a/reserve/modrequest.pl >+++ b/reserve/modrequest.pl >@@ -41,23 +41,24 @@ 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 @reserve_id = $query->param('reserve_id'); >+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 @suspend_until=$query->param('suspend_until'); > 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, >@@ -67,7 +68,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],$suspend_until[$i]); #from C4::Reserves >+ ModReserve($rank[$i],$reserve_id[$i],$branch[$i],$itemnumber[$i],$suspend_until[$i]); #from C4::Reserves > } > } > my $from=$query->param('from'); >diff --git a/reserve/request.pl b/reserve/request.pl >index c34a614..045ec92 100755 >--- a/reserve/request.pl >+++ b/reserve/request.pl >@@ -99,22 +99,20 @@ $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 $reserve_id = $input->param('reserve_id'); >+ AlterPriority( $where, $reserve_id ); > } elsif ( $action eq 'cancel' ) { >- my $borrowernumber = $input->param('borrowernumber'); >- my $biblionumber = $input->param('biblionumber'); >- CancelReserve( $biblionumber, '', $borrowernumber ); >+ my $reserve_id = $input->param('reserve_id'); >+ CancelReserve( $reserve_id ); > } elsif ( $action eq 'setLowestPriority' ) { > my $borrowernumber = $input->param('borrowernumber'); > my $biblionumber = $input->param('biblionumber'); >- ToggleLowestPriority( $borrowernumber, $biblionumber ); >+ ToggleLowestPriority( $reserve_id ); > } elsif ( $action eq 'toggleSuspend' ) { > my $borrowernumber = $input->param('borrowernumber'); > my $biblionumber = $input->param('biblionumber'); > my $suspend_until = $input->param('suspend_until'); >- ToggleSuspend( $borrowernumber, $biblionumber, $suspend_until ); >+ ToggleSuspend( $reserve_id, $suspend_until ); > } > > if ($findborrower) { >@@ -148,7 +146,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; > } > >@@ -162,7 +160,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; > } > >@@ -184,8 +182,8 @@ if ($borrowernumber_hold && !$action) { > maxreserves => $maxreserves, > expiry => $expiry, > diffbranch => $diffbranch, >- messages => $messages, >- warnings => $warnings >+ messages => $messages, >+ warnings => $warnings > ); > } > >@@ -239,12 +237,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 ..... >@@ -268,8 +266,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 >@@ -296,11 +294,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); >@@ -378,7 +376,7 @@ foreach my $biblionumber (@biblionumbers) { > } > > # checking reserve >- my ($reservedate,$reservedfor,$expectedAt) = GetReservesFromItemnumber($itemnumber); >+ my ($reservedate,$reservedfor,$expectedAt,$reserve_id) = GetReservesFromItemnumber($itemnumber); > my $ItemBorrowerReserveInfo = GetMember( borrowernumber => $reservedfor ); > > if ( defined $reservedate ) { >@@ -575,6 +573,8 @@ foreach my $biblionumber (@biblionumbers) { > $reserve{'optionloop'} = \@optionloop; > $reserve{'suspend'} = $res->{'suspend'}; > $reserve{'suspend_until'} = $res->{'suspend_until'}; >+ $reserve{'reserve_id'} = $res->{'reserve_id'}; >+ > 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