Bugzilla – Attachment 55119 Details for
Bug 14695
Add ability to place multiple item holds on a given record per patron
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14695 [QA Followup] - Filling one hold fills all of them
Bug-14695-QA-Followup---Filling-one-hold-fills-all.patch (text/plain), 8.39 KB, created by
Kyle M Hall (khall)
on 2016-09-02 13:13:17 UTC
(
hide
)
Description:
Bug 14695 [QA Followup] - Filling one hold fills all of them
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2016-09-02 13:13:17 UTC
Size:
8.39 KB
patch
obsolete
>From 4e4bc97e64303b3419d12f200642f2564212e27c Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Tue, 19 Jan 2016 17:10:29 +0000 >Subject: [PATCH] Bug 14695 [QA Followup] - Filling one hold fills all of them > >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> > >Signed-off-by: Jason M. Burds <JBurds@dubuque.lib.ia.us> >Signed-off-by: Benjamin Rokseth <benjamin.rokseth@kul.oslo.kommune.no> >--- > C4/Reserves.pm | 87 ++++++++++------------ > circ/returns.pl | 10 +-- > .../intranet-tmpl/prog/en/modules/circ/returns.tt | 2 + > 3 files changed, 48 insertions(+), 51 deletions(-) > >diff --git a/C4/Reserves.pm b/C4/Reserves.pm >index e7066d2..c717af6 100644 >--- a/C4/Reserves.pm >+++ b/C4/Reserves.pm >@@ -1324,7 +1324,7 @@ take care of the waiting status > =cut > > sub ModReserveAffect { >- my ( $itemnumber, $borrowernumber,$transferToDo ) = @_; >+ my ( $itemnumber, $borrowernumber, $transferToDo, $reserve_id ) = @_; > my $dbh = C4::Context->dbh; > > # we want to attach $itemnumber to $borrowernumber, find the biblionumber >@@ -1335,44 +1335,52 @@ sub ModReserveAffect { > > # get request - need to find out if item is already > # waiting in order to not send duplicate hold filled notifications >- my $reserve_id = GetReserveId({ >- borrowernumber => $borrowernumber, >- biblionumber => $biblionumber, >- }); >- return unless defined $reserve_id; >- my $request = GetReserveInfo($reserve_id); >- my $already_on_shelf = ($request && $request->{found} eq 'W') ? 1 : 0; >+ >+ my $hold; >+ # Find hold by id if we have it >+ $hold = Koha::Holds->find( $reserve_id ) if $reserve_id; >+ # Find item level hold for this item if there is one >+ $hold ||= Koha::Holds->search( { borrowernumber => $borrowernumber, itemnumber => $itemnumber } )->next(); >+ # Find record level hold if there is no item level hold >+ $hold ||= Koha::Holds->search( { borrowernumber => $borrowernumber, biblionumber => $biblionumber } )->next(); >+ >+ return unless $hold; >+ >+ $reserve_id = $hold->id(); >+ >+ my $already_on_shelf = $hold->found && $hold->found eq 'W'; > > # If we affect a reserve that has to be transferred, don't set to Waiting > my $query; > if ($transferToDo) { >- $query = " >- UPDATE reserves >- SET priority = 0, >- itemnumber = ?, >- found = 'T' >- WHERE borrowernumber = ? >- AND biblionumber = ? >- "; >+ $hold->set( >+ { >+ priority => 0, >+ itemnumber => $itemnumber, >+ found => 'T', >+ } >+ ); > } > else { >- # affect the reserve to Waiting as well. >- $query = " >- UPDATE reserves >- SET priority = 0, >- found = 'W', >- waitingdate = NOW(), >- itemnumber = ? >- WHERE borrowernumber = ? >- AND biblionumber = ? >- "; >+ # affect the reserve to Waiting as well. >+ $hold->set( >+ { >+ priority => 0, >+ itemnumber => $itemnumber, >+ found => 'W', >+ waitingdate => dt_from_string(), >+ } >+ ); > } >- $sth = $dbh->prepare($query); >- $sth->execute( $itemnumber, $borrowernumber,$biblionumber); >- _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$transferToDo && !$already_on_shelf ); >+ $hold->store(); >+ >+ _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) >+ if ( !$transferToDo && !$already_on_shelf ); >+ > _FixPriority( { biblionumber => $biblionumber } ); >+ > if ( C4::Context->preference("ReturnToShelvingCart") ) { >- CartToShelf( $itemnumber ); >+ CartToShelf($itemnumber); > } > > return; >@@ -2342,26 +2350,13 @@ sub GetReserveId { > > return unless ( ( $params->{'biblionumber'} || $params->{'itemnumber'} ) && $params->{'borrowernumber'} ); > >- my $dbh = C4::Context->dbh(); >- >- my $sql = "SELECT reserve_id FROM reserves WHERE "; >- >- my @params; >- my @limits; > foreach my $key ( keys %$params ) { >- if ( defined( $params->{$key} ) ) { >- push( @limits, "$key = ?" ); >- push( @params, $params->{$key} ); >- } >+ delete $params->{$key} unless defined( $params->{$key} ); > } > >- $sql .= join( " AND ", @limits ); >- >- my $sth = $dbh->prepare( $sql ); >- $sth->execute( @params ); >- my $row = $sth->fetchrow_hashref(); >+ my $hold = Koha::Holds->search( $params )->next(); > >- return $row->{'reserve_id'}; >+ return $hold->id(); > } > > =head2 ReserveSlip >diff --git a/circ/returns.pl b/circ/returns.pl >index 418f94e..3dd0bda 100755 >--- a/circ/returns.pl >+++ b/circ/returns.pl >@@ -143,10 +143,10 @@ if ($query->param('WT-itemNumber')){ > updateWrongTransfer ($query->param('WT-itemNumber'),$query->param('WT-waitingAt'),$query->param('WT-From')); > } > >-if ( $query->param('resbarcode') ) { >+if ( $query->param('reserve_id') ) { > my $item = $query->param('itemnumber'); > my $borrowernumber = $query->param('borrowernumber'); >- my $resbarcode = $query->param('resbarcode'); >+ my $reserve_id = $query->param('reserve_id'); > my $diffBranchReturned = $query->param('diffBranch'); > my $iteminfo = GetBiblioFromItemNumber($item); > my $cancel_reserve = $query->param('cancel_reserve'); >@@ -154,12 +154,12 @@ if ( $query->param('resbarcode') ) { > $iteminfo->{'itemtype'} = C4::Context->preference('item-level_itypes') ? $iteminfo->{'itype'} : $iteminfo->{'itemtype'}; > > if ( $cancel_reserve ) { >- CancelReserve({ borrowernumber => $borrowernumber, itemnumber => $item, charge_cancel_fee => !$forgivemanualholdsexpire }); >+ CancelReserve({ reserve_id => $reserve_id, charge_cancel_fee => !$forgivemanualholdsexpire }); > } else { > my $diffBranchSend = ($userenv_branch ne $diffBranchReturned) ? $diffBranchReturned : undef; > # diffBranchSend tells ModReserveAffect whether document is expected in this library or not, > # i.e., whether to apply waiting status >- ModReserveAffect( $item, $borrowernumber, $diffBranchSend); >+ ModReserveAffect( $item, $borrowernumber, $diffBranchSend, $reserve_id ); > } > # check if we have other reserves for this document, if we have a return send the message of transfer > my ( $messages, $nextreservinfo ) = GetOtherReserves($item); >@@ -440,7 +440,7 @@ if ( $messages->{'ResFound'}) { > $template->param( > intransit => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ), > transfertodo => ($userenv_branch eq $reserve->{'branchcode'} ? 0 : 1 ), >- resbarcode => $barcode, >+ reserve_id => $reserve->{reserve_id}, > reserved => 1, > ); > } >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >index f0d584b..0a942a4 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >@@ -283,6 +283,7 @@ $(document).ready(function () { > <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" /> > <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" /> > <input type="hidden" name="resbarcode" value="[% barcode | html %]" /> >+ <input type="hidden" name="reserve_id" value="[% reserve_id %]" /> > <input type="hidden" name="diffBranch" value="[% destbranch %]" /> > <input type="hidden" name="exemptfine" value="[% exemptfine %]" /> > <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" /> >@@ -448,6 +449,7 @@ $(document).ready(function () { > <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" /> > <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" /> > <input type="hidden" name="resbarcode" value="[% barcode | html %]" /> >+ <input type="hidden" name="reserve_id" value="[% reserve_id %]" /> > <input type="hidden" name="diffBranch" value="[% destbranch %]" /> > <input type="hidden" name="exemptfine" value="[% exemptfine %]" /> > <input type="hidden" name="dropboxmode" value="[% dropboxmode %]" /> >-- >2.1.4
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 14695
:
44143
|
44144
|
44145
|
45058
|
45059
|
45060
|
45061
|
45063
|
45064
|
46548
|
46549
|
46550
|
46551
|
46552
|
46553
|
46554
|
46555
|
46556
|
46557
|
46914
|
46915
|
46916
|
46917
|
46918
|
46919
|
46920
|
47183
|
47184
|
47185
|
47186
|
47187
|
47188
|
47189
|
47190
|
47191
|
47196
|
47227
|
47228
|
47229
|
47230
|
47231
|
47232
|
47233
|
47234
|
47355
|
47372
|
47606
|
47607
|
47608
|
47609
|
47610
|
47611
|
47612
|
47613
|
47614
|
47615
|
48792
|
48795
|
48796
|
48797
|
48798
|
48799
|
48800
|
48801
|
48802
|
48803
|
50056
|
50057
|
50058
|
50059
|
50060
|
50061
|
50062
|
50063
|
50064
|
50065
|
50327
|
50391
|
51006
|
51007
|
51008
|
51009
|
51010
|
51011
|
51012
|
51013
|
51014
|
51015
|
51016
|
51017
|
51027
|
51030
|
51031
|
51032
|
51033
|
51034
|
51035
|
51036
|
51037
|
51038
|
51039
|
51040
|
51041
|
51042
|
51277
|
51278
|
51279
|
51280
|
51281
|
51282
|
51283
|
51284
|
51285
|
51286
|
51287
|
51288
|
51289
|
52457
|
54546
|
54547
|
54548
|
54549
|
54550
|
54551
|
54552
|
54553
|
54554
|
54555
|
54556
|
54557
|
54558
|
54559
|
55114
|
55115
|
55116
|
55117
|
55118
|
55119
|
55120
|
55121
|
55122
|
55123
|
55124
|
55125
|
55126
|
55127
|
55128
|
55148
|
55149
|
55150
|
55151
|
55152
|
55153
|
55154
|
55155
|
55156
|
55157
|
55158
|
55159
|
55160
|
55161
|
55162
|
55163
|
55299
|
55332
|
55730
|
55731