Bugzilla – Attachment 72338 Details for
Bug 19532
Recalls for Koha
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 19532 - Improve and refine recalls functionality
Bug-19532---Improve-and-refine-recalls-functionali.patch (text/plain), 25.17 KB, created by
Nick Clemens
on 2018-03-01 16:02:13 UTC
(
hide
)
Description:
Bug 19532 - Improve and refine recalls functionality
Filename:
MIME Type:
Creator:
Nick Clemens
Created:
2018-03-01 16:02:13 UTC
Size:
25.17 KB
patch
obsolete
>From 6bc4ac1b978289ea571b8cc5919107ed9f635663 Mon Sep 17 00:00:00 2001 >From: Nick Clemens <nick@bywatersolutions.com> >Date: Thu, 1 Mar 2018 15:46:22 +0000 >Subject: [PATCH] Bug 19532 - Improve and refine recalls functionality > >Only allow 1 recall per item >When checking in only check for holds if no reserves found >Add a T/transferring status for recalls, only confirm them once arrived >Improve message when checking in recall >Fix clashing ids on recall-history >Check if patron can hold item before allowing recall >Prevent multiple recalls when pressing back button >Select/fill only active recall when issuing > >To test: >1 - Repeat major test plan - verify all points >2 - Attempt to place multiple recallsusing back button, should fail >3 - Set all item level holds to not allowed, should not be able to place >recall >4 - Check-in recall at branch other than destination, should be in >transit >5 - Confirm at correct branch, should send message and get expiration >date etc. >6 - Return to another branch, should eb in transit again >7 - Play with circ rules and verify only allowed patrons can place >recall > >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> >--- > C4/Circulation.pm | 46 ++++++++--------- > catalogue/detail.pl | 2 +- > circ/returns.pl | 57 ++++++++++++---------- > .../atomicupdate/bug_19532_-_add_recalls_table.sql | 2 +- > installer/data/mysql/kohastructure.sql | 2 +- > .../prog/en/modules/circ/recalls_waiting.tt | 6 +-- > .../intranet-tmpl/prog/en/modules/circ/returns.tt | 12 +++-- > .../opac-tmpl/bootstrap/en/modules/opac-recall.tt | 6 ++- > .../opac-tmpl/bootstrap/en/modules/opac-recalls.tt | 4 +- > .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 4 +- > opac/opac-detail.pl | 6 ++- > opac/opac-recall.pl | 22 ++++++--- > opac/opac-user.pl | 2 +- > 13 files changed, 101 insertions(+), 70 deletions(-) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index 76d093e..23bb6c9 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -345,19 +345,9 @@ sub transferbook { > $messages->{'WasReturned'} = $issue->borrowernumber; > } > >- # find reserves..... >- # That'll save a database query. >- my ( $resfound, $resrec, undef ) = >- CheckReserves( $itemnumber ); >- if ( $resfound and not $ignoreRs ) { >- $resrec->{'ResFound'} = $resfound; >- >- # $messages->{'ResFound'} = $resrec; >- $dotransfer = 1; >- } > > # check if item has been recalled. do a transfer if the recall branch is different to the item holding branch, otherwise don't do a transfer >- my $recall = Koha::Recalls->find({ itemnumber => $item->itemnumber, status => 'R' }); >+ my $recall = Koha::Recalls->find({ itemnumber => $item->itemnumber, old => undef }); > if (defined $recall){ > if ($recall->branchcode eq $fbr){ > $dotransfer = 0; >@@ -365,6 +355,17 @@ sub transferbook { > } else { > $dotransfer = 1; > } >+ } else { #recalls take priority over holds, only check holds if no recalls >+ # find reserves..... >+ # That'll save a database query. >+ my ( $resfound, $resrec, undef ) = >+ CheckReserves( $itemnumber ); >+ if ( $resfound and not $ignoreRs ) { >+ $resrec->{'ResFound'} = $resfound; >+ >+ # $messages->{'ResFound'} = $resrec; >+ $dotransfer = 1; >+ } > } > > #actually do the transfer.... >@@ -1378,7 +1379,7 @@ sub AddIssue { > > # Check if a recall > if ( C4::Context->preference('UseRecalls') ) { >- my $recall = Koha::Recalls->find({ itemnumber => $item->{'itemnumber'}, borrowernumber => $borrower->{'borrowernumber'} }); >+ my $recall = Koha::Recalls->find({ itemnumber => $item->{'itemnumber'}, borrowernumber => $borrower->{'borrowernumber'}, old => undef }); > if (defined $recall) { > $recall->update({ status => "F", old => 1 }); > } >@@ -2027,23 +2028,24 @@ sub AddReturn { > } > } > >- # find reserves..... >- # if we don't have a reserve with the status W, we launch the Checkreserves routine > my ($resfound, $resrec); >- my $lookahead= C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds >- ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'}, undef, $lookahead ) unless ( $item->{'withdrawn'} ); >- if ($resfound) { >- $resrec->{'ResFound'} = $resfound; >- $messages->{'ResFound'} = $resrec; >- } >- > # find recalls..... >- my $recall = Koha::Recalls->find({ itemnumber => $item->{'itemnumber'} }); >+ my $recall = Koha::Recalls->find({ itemnumber => $item->{'itemnumber'}, old => undef }); > if (defined $recall){ > $messages->{'RecallFound'} = 1; > $messages->{'Recall'} = $recall; >+ } else { >+ # find reserves..... >+ # if we don't have a reserve with the status W, we launch the Checkreserves routine >+ my $lookahead= C4::Context->preference('ConfirmFutureHolds'); #number of days to look for future holds >+ ($resfound, $resrec, undef) = C4::Reserves::CheckReserves( $item->{'itemnumber'}, undef, $lookahead ) unless ( $item->{'withdrawn'} ); >+ if ($resfound) { >+ $resrec->{'ResFound'} = $resfound; >+ $messages->{'ResFound'} = $resrec; >+ } > } > >+ > # Record the fact that this book was returned. > UpdateStats({ > branch => $branch, >diff --git a/catalogue/detail.pl b/catalogue/detail.pl >index 0f36d28..77ed3aa 100755 >--- a/catalogue/detail.pl >+++ b/catalogue/detail.pl >@@ -320,7 +320,7 @@ foreach my $item (@items) { > } > } > >- my $recall = Koha::Recalls->find({ itemnumber => $item->{itemnumber} }); >+ my $recall = Koha::Recalls->find({ itemnumber => $item->{itemnumber}, old => undef }); > if (defined $recall){ > $item->{recalled} = 1; > $item->{recall} = $recall; >diff --git a/circ/returns.pl b/circ/returns.pl >index fbb8894..2c53203 100755 >--- a/circ/returns.pl >+++ b/circ/returns.pl >@@ -189,29 +189,33 @@ if ( $query->param('reserve_id') ) { > } > > if ( $query->param('recall_id') ){ >- my $recall = Koha::Recalls->find(scalar $query->param('recall_id')); >+ my $recall = Koha::Recalls->find( $query->param('recall_id') ); > my $recall_borrower = $recall->patron; > my $item = Koha::Items->find($recall->itemnumber); > my $biblio = Koha::Biblios->find($item->biblionumber); > >- my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule({ categorycode => $recall_borrower->categorycode, itemtype => $item->itype, branchcode => $item->holdingbranch }); >- my $shelf_time = $issuing_rule->recall_shelf_time || C4::Context->preference('RecallsMaxPickUpDelay'); >- my $expirationdate = dt_from_string()->add( $issuing_rule->lengthunit => $shelf_time ); >- $recall->update({ status => 'W', waitingdate => dt_from_string(), expirationdate => $expirationdate }); >- >- # send notice to user who requested recall to pick up item >- my $letter = C4::Letters::GetPreparedLetter ( >- module => 'circulation', >- letter_code => 'PICKUP_RECALLED_ITEM', >- branchcode => $recall->branchcode, >- tables => { >- 'biblio', $biblio->biblionumber, >- 'borrowers', $recall_borrower->borrowernumber, >- 'items', $item->itemnumber, >- 'recalls', $recall->recall_id, >- }, >- ); >- C4::Message->enqueue($letter, $recall_borrower->unblessed, 'email'); >+ if( $query->param("transfer_recall") ){ >+ $recall->update({ status => 'T', waitingdate => undef, expirationdate => undef }); >+ } else { >+ my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule({ categorycode => $recall_borrower->categorycode, itemtype => $item->itype, branchcode => $item->holdingbranch }); >+ my $shelf_time = $issuing_rule->recall_shelf_time || C4::Context->preference('RecallsMaxPickUpDelay'); >+ my $expirationdate = dt_from_string()->add( $issuing_rule->lengthunit => $shelf_time ); >+ $recall->update({ status => 'W', waitingdate => dt_from_string(), expirationdate => $expirationdate }); >+ >+ # send notice to user who requested recall to pick up item >+ my $letter = C4::Letters::GetPreparedLetter ( >+ module => 'circulation', >+ letter_code => 'PICKUP_RECALLED_ITEM', >+ branchcode => $recall->branchcode, >+ tables => { >+ 'biblio', $biblio->biblionumber, >+ 'borrowers', $recall_borrower->borrowernumber, >+ 'items', $item->itemnumber, >+ 'recalls', $recall->recall_id, >+ }, >+ ); >+ C4::Message->enqueue($letter, $recall_borrower->unblessed, 'email'); >+ } > } > > my $borrower; >@@ -485,13 +489,14 @@ if ( $messages->{'RecallFound'} ){ > found => 1, > recalled => 1, > recall => $recall, >- address => $patron->address, >- address2 => $patron->address2, >- streetnumber => $patron->streetnumber, >- city => $patron->city, >- zipcode => $patron->zipcode, >- state => $patron->state, >- country => $patron->country, >+ transfer_recall => ($userenv_branch eq $recall->branchcode ? 1 : 0 ) >+# address => $patron->address, >+# address2 => $patron->address2, >+# streetnumber => $patron->streetnumber, >+# city => $patron->city, >+# zipcode => $patron->zipcode, >+# state => $patron->state, >+# country => $patron->country, > ); > } > >diff --git a/installer/data/mysql/atomicupdate/bug_19532_-_add_recalls_table.sql b/installer/data/mysql/atomicupdate/bug_19532_-_add_recalls_table.sql >index 29730e4..d37e891 100644 >--- a/installer/data/mysql/atomicupdate/bug_19532_-_add_recalls_table.sql >+++ b/installer/data/mysql/atomicupdate/bug_19532_-_add_recalls_table.sql >@@ -9,7 +9,7 @@ CREATE TABLE `recalls` ( -- information related to recalls in Koha > `cancellationdate` date default NULL, -- the date this recall was cancelled > `recallnotes` mediumtext, -- notes related to this recall > `priority` smallint(6) default NULL, -- where in the queue the patron sits >- `status` varchar(1) default NULL, -- a one letter code defining what the status is of the recall is after it has been requested. R=requested, O=overdue, W=awaiting pickup, E=expired, C=cancelled, F=finished/completed >+ `status` varchar(1) default NULL, -- a one letter code defining what the status is of the recall is after it has been requested. R=requested, O=overdue, W=awaiting pickup, E=expired, C=cancelled, F=finished/completed, T=transferring > `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this recall was last updated > `itemnumber` int(11) default NULL, -- foreign key from the items table defining the specific item the recall request was placed on > `waitingdate` date default NULL, -- the date the item was marked as waiting for the patron at the library >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 34ccc96..89378fe 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -1860,7 +1860,7 @@ CREATE TABLE `recalls` ( -- information related to recalls in Koha > `cancellationdate` date default NULL, -- the date this recall was cancelled > `recallnotes` mediumtext, -- notes related to this recall > `priority` smallint(6) default NULL, -- where in the queue the patron sits >- `found` varchar(1) default NULL, -- a one letter code defining what the status is of the recall is after it has been requested. R=requested, O=overdue, W=awaiting pickup, E=expired, F=finished/completed >+ `found` varchar(1) default NULL, -- a one letter code defining what the status is of the recall is after it has been requested. R=requested, O=overdue, W=awaiting pickup, T=transferring, E=expired, F=finished/completed > `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -- the date and time this recall was last updated > `itemnumber` int(11) default NULL, -- foreign key from the items table defining the specific item the recall request was placed on > `waitingdate` date default NULL, -- the date the item was marked as waiting for the patron at the library >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt >index d4ecc86..48605f6 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/recalls_waiting.tt >@@ -47,8 +47,8 @@ > <div id="results" class="toptabs"> > > <ul> >- <li><a href="#recallswaiting">Recalls waiting: [% recalls.count %]</a></li> >- <li><a href="#recallsover">Recalls waiting over [% Koha.Preference('RecallsMaxPickUpDelay') %] days: [% over.count %]</a></li> >+ <li><a href="#recallswaiting">Recalls waiting: [% recalls.size %]</a></li> >+ <li><a href="#recallsover">Recalls waiting over [% Koha.Preference('RecallsMaxPickUpDelay') %] days: [% over.size %]</a></li> > </ul> > > <div id="recallswaiting"> >@@ -99,7 +99,7 @@ > </div> > > <div id="recallsover"> >- [% IF ( over.count ) %] >+ [% IF ( over.size > 0) %] > [% IF ( Koha.Preference('RecallsMaxPickUpDelay') ) %]<p>Recalls listed here have been awaiting pickup for more than [% Koha.Preference('RecallsMaxPickUpDelay') %] days.</p>[% END %] > <table id="recallsover-table"> > <thead><tr> >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 6c2eeff..5007431 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >@@ -465,7 +465,7 @@ > <div class="modal-content"> > <form method="post" action="/cgi-bin/koha/circ/returns.pl" class="confirm"> > <div class="modal-header"> >- <h3>Recall found: <br/> >+ <h3>Recall found [% IF transfer_recall %] needing transfer to [% Branches.GetName( recall.branchcode ) %][% END %]: <br/> > <a href="/cgi-bin/koha/catalogue/detail.pl?type=intra&biblionumber=[% itembiblionumber %]">[% itembarcode |html %]: [% title |html %] </a> > </h3> > </div> >@@ -499,18 +499,22 @@ > <li class="error">Patron's address is in doubt</li> > [% END %] > >- <h4><strong>Wait for pickup at</strong> [% recall.library.branchname %]</h4> >+ <h4> >+ [% IF transfer_recall %]Transfer to [% Branches.GetName( recall.branchcode ) %] >+ [% ELSIF recall.status == 'W' %]Hold for pickup (already waiting) at [% recall.library.branchname %] >+ [% ELSE %]Hold for pickup at [% recall.library.branchname %][% END %] >+ </h4> > > <input type="hidden" name="itemnumber" value="[% recall.itemnumber %]" /> > <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" /> > <input type="hidden" name="biblionumber" value="[% itembiblionumber %]" /> > <input type="hidden" name="recall_id" value="[% recall.recall_id %]" /> >- <input type="hidden" name="diffBranch" value="[% recall.branchcode %]" /> >+ <input type="hidden" name="transfer_recall" value="[% recall.branchcode %]" /> > </div> > > <div class="modal-footer"> > <button type="submit" class="btn btn-default approve"> >- <i class="fa fa-check"></i> Confirm recall waiting >+ <i class="fa fa-check"></i> Confirm recall [% IF transfer_recall %]and transfer[% END %] > </button> > > <button data-dismiss="modal" aria-hidden="true" type="submit" class="btn btn-danger deny" onclick="$('#barcode').focus(); return false;"> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt >index 69d9248..036a817 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recall.tt >@@ -33,7 +33,11 @@ > [% IF error == 'notloggedin' %] > Please log in to place a recall. > [% ELSIF error == 'duplicate' %] >- You have already placed a recall on this item. >+ A recall has already been placed on this item. >+ [% ELSIF error == 'not_issued' %] >+ Cannot recall an item that is not issued. >+ [% ELSIF error == 'not_allowed' %] >+ You may not place a recall on this item according to circulation rules. > [% ELSE %] > An error has occurred while attempting to place a recall. Please contact your library. > [% END %] >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt >index d6de23c..5c4f10c 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-recalls.tt >@@ -98,6 +98,8 @@ > Expired > [% ELSIF ( RECALL.is_cancelled ) %] > Cancelled >+ [% ELSIF ( RECALL.is_finished ) %] >+ Finished > [% END %] > </td> > <td class="due_date"> >@@ -116,7 +118,7 @@ > <input type="hidden" name="op" value="cancel"> > <input type="hidden" name="recall_id" value="[% RECALL.recall_id %]"> > <input type="hidden" name="itemnumber" value="[% RECALL.itemnumber %]"> >- <button type="submit" name="submit" class="btn btn-mini btn-danger" id="cancel_recall"><i class="icon-remove icon-white"></i> Cancel</button> >+ <button type="submit" name="submit" class="btn btn-xs btn-danger" id="cancel_recall_[% RECALL.recall_id %]"><i class="icon-remove icon-white"></i> Cancel</button> > </form> > [% END %] > </td> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >index 3ff034a..5c8fb10 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >@@ -843,10 +843,12 @@ Using this account is not recommended because some parts of Koha will not functi > Requested > [% ELSIF ( RECALL.is_waiting ) %] > Ready for pickup >+ [% ELSIF ( RECALL.status == 'T' ) %] >+ In-transit to pickup library > [% END %] > </td> > <td class="cancelrecall"> >- [% IF ( !RECALL.cancellationdate && ( RECALL.is_requested || RECALL.is_overdue ) ) %] >+ [% IF ( !RECALL.cancellationdate && ( RECALL.is_requested || RECALL.is_overdue || RECALL.status == 'T' ) ) %] > <form action="/cgi-bin/koha/opac-recall.pl" method="post"> > <input type="hidden" name="op" value="cancel"> > <input type="hidden" name="recall_id" value="[% RECALL.recall_id %]"> >diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl >index 9eefa3f..4ff44ce 100755 >--- a/opac/opac-detail.pl >+++ b/opac/opac-detail.pl >@@ -708,8 +708,10 @@ if ( not $viewallitems and @items > $max_items_to_display ) { > $itm->{on_order} = 1 > if grep /^$itm->{itemnumber}$/, @itemnumbers_on_order; > } >- >- if ( $itm->{datedue} && $borrowernumber && $itm->{borrowernumber} != $borrowernumber && C4::Context->preference('UseRecalls') ) { >+ my $recall = Koha::Recalls->find({ itemnumber => $itm->{itemnumber}, old => undef }); >+ if ( !$recall && $itm->{datedue} && $borrowernumber && $itm->{borrowernumber} != $borrowernumber >+ && C4::Context->preference('UseRecalls') >+ && Koha::IssuingRules->get_opacitemholds_policy({ item => $item, patron => $patron }) ne 'N' ) { > $itm->{avail_for_recall} = 1; > } > >diff --git a/opac/opac-recall.pl b/opac/opac-recall.pl >index d580ab8..fc89e75 100755 >--- a/opac/opac-recall.pl >+++ b/opac/opac-recall.pl >@@ -1,4 +1,5 @@ > #!/usr/bin/perl >+#pinio > > # This file is part of Koha. > # >@@ -46,15 +47,25 @@ my $op = $query->param('op') || ''; > my $itemnumber = $query->param('itemnumber'); > my $item = Koha::Items->find($itemnumber); > my $biblio = Koha::Biblios->find($item->biblionumber); >-my $recalled = Koha::Recalls->find({ itemnumber => $itemnumber }); >+my $patron = Koha::Patrons->find($borrowernumber); >+my $recalled = Koha::Recalls->find({ itemnumber => $itemnumber, old => undef, borrowernumber => $borrowernumber }); > my $error; > >-if ( defined $recalled && $recalled->borrowernumber == $borrowernumber && ($recalled->is_requested || $recalled->is_waiting || $recalled->is_overdue) ){ >+if ( defined $recalled ){ > # can't place a recall on an item that this borrower has already recalled > # if recall is expired or cancelled, user may recall again > $error = 'duplicate'; > } > >+my $checkout = Koha::Checkouts->find({ itemnumber => $itemnumber }); >+unless ( defined $checkout ){ >+ # can't recall an item not checked out >+ # checking in case they force the itemnumber >+ $error = 'not_issued'; >+} >+ >+$error = 'not_allowed' unless Koha::IssuingRules->get_opacitemholds_policy({ item => $item, patron => $patron }) ne 'N'; >+ > if ($op eq 'request'){ > if (!defined $borrowernumber){ > # can't place recall if not logged in >@@ -62,8 +73,7 @@ if ($op eq 'request'){ > print $query->redirect('/cgi-bin/koha/opac-detail.pl?biblionumber='.$item->biblionumber); > } elsif ( !defined $error ){ > # can recall >- my $borrower = Koha::Patrons->find($borrowernumber); >- my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule({ categorycode => $borrower->categorycode, itemtype => $item->itype, branchcode => $item->holdingbranch }); >+ my $issuing_rule = Koha::IssuingRules->get_effective_issuing_rule({ categorycode => $patron->categorycode, itemtype => $item->itype, branchcode => $item->holdingbranch }); > my $recall_request = Koha::Recall->new({ > borrowernumber => $borrowernumber, > recalldate => dt_from_string(), >@@ -78,8 +88,8 @@ if ($op eq 'request'){ > # updating due date on checkout > my $timestamp = dt_from_string($recall->timestamp); > my $due_date = $timestamp->add( $issuing_rule->lengthunit => $issuing_rule->recall_due_date_interval ); >- my $checkout = Koha::Checkouts->find({ itemnumber => $itemnumber })->update({ date_due => $due_date }); >- my $checkout_borrower = Koha::Patrons->find($checkout->borrowernumber->borrowernumber); >+ $checkout->update({ date_due => $due_date }); >+ my $checkout_borrower = $checkout->patron; > > # send notice to user with recalled item checked out > my $letter = C4::Letters::GetPreparedLetter ( >diff --git a/opac/opac-user.pl b/opac/opac-user.pl >index 31f4ef9..9c4213a 100755 >--- a/opac/opac-user.pl >+++ b/opac/opac-user.pl >@@ -305,7 +305,7 @@ $template->param( show_barcode => 1 ) if $show_barcode; > > # now the reserved items.... > my $reserves = Koha::Holds->search( { borrowernumber => $borrowernumber } ); >-my $recalls = Koha::Recalls->search( { borrowernumber => $borrowernumber, status => { '=', ['R', 'W'] } } ); >+my $recalls = Koha::Recalls->search( { borrowernumber => $borrowernumber, old => undef } ); > > $template->param( > RESERVES => $reserves, >-- >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 19532
:
68569
|
68570
|
68571
|
68572
|
68642
|
68643
|
68644
|
68645
|
68653
|
69100
|
69102
|
69147
|
69148
|
69149
|
69170
|
69172
|
69221
|
69222
|
69223
|
69322
|
69353
|
69354
|
69405
|
69409
|
69410
|
69411
|
69841
|
69872
|
69873
|
69874
|
69875
|
69876
|
69877
|
69878
|
69879
|
69880
|
69881
|
69882
|
69883
|
69884
|
69885
|
69886
|
69887
|
69888
|
69889
|
69890
|
69986
|
70093
|
71409
|
71574
|
71575
|
71576
|
71577
|
71578
|
71579
|
71580
|
71581
|
71582
|
71583
|
71584
|
71585
|
71586
|
71587
|
71588
|
71589
|
71590
|
71591
|
71592
|
72244
|
72311
|
72312
|
72313
|
72314
|
72315
|
72316
|
72317
|
72318
|
72319
|
72320
|
72321
|
72322
|
72323
|
72324
|
72325
|
72326
|
72327
|
72328
|
72329
|
72330
|
72331
|
72332
|
72333
|
72334
|
72335
|
72336
|
72337
|
72338
|
72527