Bugzilla – Attachment 42745 Details for
Bug 13918
Add waiting expiration date to opac list of holds for user
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 13918 - Add waiting expiration date to opac list of holds for user
Bug-13918---Add-waiting-expiration-date-to-opac-li.patch (text/plain), 16.01 KB, created by
Kyle M Hall (khall)
on 2015-09-21 17:18:55 UTC
(
hide
)
Description:
Bug 13918 - Add waiting expiration date to opac list of holds for user
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2015-09-21 17:18:55 UTC
Size:
16.01 KB
patch
obsolete
>From ee7d802fdbbd41965896fd2a52af9fb74b47b1e5 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Wed, 18 Mar 2015 11:45:07 -0400 >Subject: [PATCH] Bug 13918 - Add waiting expiration date to opac list of holds for user > >Waiting holds for patrons in the opac should display the hold expiration >date based on the max pickup delay if it is set. > >Test Plan: >1) Ensure ReservesMaxPickUpDelay is set >2) Place a hold on a record >3) Check in the item, use it to fill the hold >4) Log into the opac as that user >5) View the holds list, note the 'until <date>' addition to the > waiting hold line. > >Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com> > >Signed-off-by: Cathi Wiggins <CWIGGINS@ci.arcadia.ca.us> > >Signed-off-by: Megan Wianecki <mwianecki@mplmain.mtpl.org> >--- > Koha/Biblio.pm | 13 +++ > Koha/Hold.pm | 38 +++++++++ > .../opac-tmpl/bootstrap/en/modules/opac-user.tt | 54 ++++++++----- > opac/opac-user.pl | 81 ++------------------ > 4 files changed, 91 insertions(+), 95 deletions(-) > >diff --git a/Koha/Biblio.pm b/Koha/Biblio.pm >index 9c467d7..2145a04 100644 >--- a/Koha/Biblio.pm >+++ b/Koha/Biblio.pm >@@ -21,6 +21,8 @@ use Modern::Perl; > > use Carp; > >+use C4::Biblio qw( GetRecordValue GetMarcBiblio GetFrameworkCode ); >+ > use Koha::Database; > > use base qw(Koha::Object); >@@ -35,6 +37,17 @@ Koha::Biblio - Koha Biblio Object class > > =cut > >+=head3 subtitle >+ >+=cut >+ >+sub subtitle { >+ my ( $self ) = @_; >+ >+ return GetRecordValue( 'subtitle', GetMarcBiblio( $self->id() ), GetFrameworkCode( $self->id() ) ); >+} >+ >+ > =head3 type > > =cut >diff --git a/Koha/Hold.pm b/Koha/Hold.pm >index 975f699..ef45eeb 100644 >--- a/Koha/Hold.pm >+++ b/Koha/Hold.pm >@@ -105,6 +105,44 @@ sub is_in_transit { > return $self->found() eq 'T'; > } > >+=head3 is_cancelable >+ >+Returns true if hold is a cancelable hold >+ >+=cut >+ >+sub is_cancelable { >+ my ($self) = @_; >+ >+ return ( $self->is_waiting() && !$self->is_found() ) >+ || ( !$self->is_waiting() && !$self->is_in_transit() ); >+} >+ >+=head3 is_in_transit >+ >+Returns true if hold is a in_transit hold >+ >+=cut >+ >+sub is_in_transit { >+ my ($self) = @_; >+ >+ return 0 unless $self->found(); >+ return $self->found() eq 'T'; >+} >+ >+=head3 is_at_destination >+ >+Returns true if hold is a in_transit hold >+ >+=cut >+ >+sub is_at_destination { >+ my ($self) = @_; >+ >+ return $self->is_waiting() && ( $self->branchcode() eq $self->item()->holdingbranch() ); >+} >+ > =head3 biblio > > Returns the related Koha::Biblio object for this hold >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 b5bc8d2..bb0d148 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt >@@ -511,9 +511,9 @@ > </thead> > <tbody> > [% FOREACH RESERVE IN RESERVES %] >- [% IF ( RESERVE.wait ) %] >- [% IF ( RESERVE.atdestination ) %] >- [% IF ( RESERVE.found ) %] >+ [% IF ( RESERVE.is_waiting ) %] >+ [% IF ( RESERVE.is_at_destination ) %] >+ [% IF ( RESERVE.is_found ) %] > <tr class="reserved"> > [% ELSE %] > <tr> >@@ -526,13 +526,13 @@ > [% END %] > <td class="title"> > <a class="title" href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% RESERVE.biblionumber %]"> >- [% RESERVE.reserves_title %] >- [% FOREACH subtitl IN RESERVE.subtitle %] >+ [% RESERVE.biblio.title %] >+ [% FOREACH subtitl IN RESERVE.biblio.subtitle %] > [% subtitl.subfield %] > [% END %] >- [% RESERVE.enumchron %] >+ [% RESERVE.item.enumchron %] > </a> >- [% RESERVE.author %] >+ [% RESERVE.biblio.author %] > </td> > <td class="reservedate"> > <span title="[% RESERVE.reservedate %]"> >@@ -541,19 +541,23 @@ > </span> > </td> > <td class="expirationdate"> >- [% IF ( RESERVE.expirationdate ) %] >- <span> >+ [% IF ! RESERVE.found %] >+ [% IF ( RESERVE.expirationdate ) %] >+ <span> >+ <span class="tdlabel">Expiration:</span> >+ [% RESERVE.expirationdate | $KohaDates %] >+ </span> >+ [% ELSE %] > <span class="tdlabel">Expiration:</span> >- [% RESERVE.expirationdate | $KohaDates %] >- </span> >+ Never expires >+ [% END %] > [% ELSE %] >- <span class="tdlabel">Expiration:</span> >- Never expires >+ - > [% END %] > </td> > <td class="branch"> > <span class="tdlabel">Pick up location:</span> >- [% RESERVE.branch %] >+ [% RESERVE.branch.branchname %] > </td> > [% IF ( showpriority ) %] > <td class="priority"> >@@ -563,11 +567,17 @@ > [% END %] > <td class="status"> > <span class="tdlabel">Status:</span> >- [% IF ( RESERVE.wait ) %] >- [% IF ( RESERVE.atdestination ) %] >+ [% IF ( RESERVE.is_waiting ) %] >+ [% IF ( RESERVE.is_at_destination ) %] > [% IF ( RESERVE.found ) %] >- Item waiting at <b> [% RESERVE.wbrname %]</b>[% IF ( RESERVE.waitingdate ) %] since [% RESERVE.waitingdate | $KohaDates %][% END %] >- <input type="hidden" name="pickup" value="[% RESERVE.wbrcd %]" /> >+ Item waiting at <b> [% RESERVE.branch.branchname %]</b> >+ [% IF ( RESERVE.waitingdate ) %] >+ since [% RESERVE.waitingdate | $KohaDates %] >+ [% IF RESERVE.waiting_expires_on %] >+ until [% RESERVE.waiting_expires_on | $KohaDates %] >+ [% END %] >+ [% END %] >+ <input type="hidden" name="pickup" value="[% RESERVE.branchcode %]" /> > [% ELSE %] > Item waiting to be pulled from <b> [% RESERVE.wbrname %]</b> > [% END %] >@@ -575,7 +585,7 @@ > Item in transit to <b> [% RESERVE.wbrname %]</b> <input type="hidden" name="pickup" value="[% RESERVE.wbrcd %]" /> > [% END %] > [% ELSE %] >- [% IF ( RESERVE.intransit ) %] >+ [% IF ( RESERVE.is_in_transit ) %] > Item in transit from <b> [% RESERVE.frombranch %]</b> since > [% RESERVE.datesent | $KohaDates %] > [% ELSIF ( RESERVE.suspend ) %] >@@ -587,7 +597,7 @@ > </td> > [% IF SuspendHoldsOpac %] > <td> >- [% IF ( RESERVE.cancelable ) %] >+ [% IF ( RESERVE.is_cancelable ) %] > [% IF RESERVE.suspend %] > <form class="form-inline" action="/cgi-bin/koha/opac-modrequest-suspend.pl" method="post"> > <input type="hidden" name="reserve_id" value="[% RESERVE.reserve_id %]" /> >@@ -628,11 +638,11 @@ > </form> > [% END # / IF AutoResumeSuspendedHolds %] > [% END # / IF RESERVE.suspend %] >- [% END # / IF ( RESERVE.cancelable )%] >+ [% END # / IF ( RESERVE.is_cancelable )%] > </td> > [% END # / IF SuspendHoldsOpac %] > <td class="modify"> >- [% IF ( RESERVE.cancelable ) %] >+ [% IF ( RESERVE.is_cancelable ) %] > <form action="/cgi-bin/koha/opac-modrequest.pl" method="post"> > <input type="hidden" name="biblionumber" value="[% RESERVE.biblionumber %]" /> > <input type="hidden" name="reserve_id" value="[% RESERVE.reserve_id %]" /> >diff --git a/opac/opac-user.pl b/opac/opac-user.pl >index 28e73de..37325a5 100755 >--- a/opac/opac-user.pl >+++ b/opac/opac-user.pl >@@ -36,6 +36,7 @@ use C4::Letters; > use C4::Branch; # GetBranches > use Koha::DateUtils; > use Koha::Borrower::Debarments qw(IsDebarred); >+use Koha::Holds; > > use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE'; > >@@ -276,79 +277,14 @@ for my $branch_hash ( sort keys %{$branches} ) { > $template->param( branchloop => \@branch_loop ); > > # now the reserved items.... >-my @reserves = GetReservesFromBorrowernumber( $borrowernumber ); >-foreach my $res (@reserves) { >+my $reserves = Koha::Holds->search( { borrowernumber => $borrowernumber } ); > >- if ( $res->{'expirationdate'} eq '0000-00-00' ) { >- $res->{'expirationdate'} = ''; >- } >- $res->{'subtitle'} = GetRecordValue('subtitle', GetMarcBiblio($res->{'biblionumber'}), GetFrameworkCode($res->{'biblionumber'})); >- $res->{'waiting'} = 1 if $res->{'found'} eq 'W'; >- $res->{'branch'} = $branches->{ $res->{'branchcode'} }->{'branchname'}; >- my $biblioData = GetBiblioData($res->{'biblionumber'}); >- $res->{'reserves_title'} = $biblioData->{'title'}; >- $res->{'author'} = $biblioData->{'author'}; >- >- if ($show_priority) { >- $res->{'priority'} ||= ''; >- } >- if ( $res->{'suspend_until'} ) { >- $res->{'suspend_until'} = output_pref({ dt => dt_from_string( $res->{'suspend_until'} , 'iso' ), dateonly => 1 }); >- } >-} >- >-# use Data::Dumper; >-# warn Dumper(@reserves); >- >-$template->param( RESERVES => \@reserves ); >-$template->param( reserves_count => $#reserves+1 ); >-$template->param( showpriority=>$show_priority ); >- >-my @waiting; >-my $wcount = 0; >-foreach my $res (@reserves) { >- if ( $res->{'itemnumber'} ) { >- my $item = GetItem( $res->{'itemnumber'}); >- $res->{'holdingbranch'} = >- $branches->{ $item->{'holdingbranch'} }->{'branchname'}; >- $res->{'branch'} = $branches->{ $res->{'branchcode'} }->{'branchname'}; >- $res->{'enumchron'} = $item->{'enumchron'} if $item->{'enumchron'}; >- # get document reserve status >- my $biblioData = GetBiblioData($res->{'biblionumber'}); >- $res->{'waiting_title'} = $biblioData->{'title'}; >- if ( ( $res->{'found'} eq 'W' ) ) { >- my $item = $res->{'itemnumber'}; >- $item = GetBiblioFromItemNumber($item,undef); >- $res->{'wait'}= 1; >- $res->{'holdingbranch'}=$item->{'holdingbranch'}; >- $res->{'biblionumber'}=$item->{'biblionumber'}; >- $res->{'barcode'} = $item->{'barcode'}; >- $res->{'wbrcode'} = $res->{'branchcode'}; >- $res->{'itemnumber'} = $res->{'itemnumber'}; >- $res->{'wbrname'} = $branches->{$res->{'branchcode'}}->{'branchname'}; >- if($res->{'holdingbranch'} eq $res->{'wbrcode'}){ >- $res->{'atdestination'} = 1; >- } >- # set found to 1 if reserve is waiting for patron pickup >- $res->{'found'} = 1 if $res->{'found'} eq 'W'; >- } else { >- my ($transfertwhen, $transfertfrom, $transfertto) = GetTransfers( $res->{'itemnumber'} ); >- if ($transfertwhen) { >- $res->{intransit} = 1; >- $res->{datesent} = $transfertwhen; >- $res->{frombranch} = GetBranchName($transfertfrom); >- } >- } >- push @waiting, $res; >- $wcount++; >- } >- # can be cancelled >- #$res->{'cancelable'} = 1 if ($res->{'wait'} && $res->{'atdestination'} && $res->{'found'} ne "1"); >- $res->{'cancelable'} = 1 if ($res->{wait} and not $res->{found}) or (not $res->{wait} and not $res->{intransit}); >- >-} >- >-$template->param( WAITING => \@waiting ); >+$template->param( >+ RESERVES => $reserves, >+ reserves_count => $reserves->count(), >+ showpriority => $show_priority, >+ WAITING => $reserves->waiting() >+); > > # current alert subscriptions > my $alerts = getalert($borrowernumber); >@@ -386,7 +322,6 @@ if ( $borr->{'opacnote'} ) { > > $template->param( > bor_messages_loop => GetMessages( $borrowernumber, 'B', 'NONE' ), >- waiting_count => $wcount, > patronupdate => $patronupdate, > OpacRenewalAllowed => C4::Context->preference("OpacRenewalAllowed"), > userview => 1, >-- >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 13918
:
37271
|
37272
|
40033
|
40035
|
41862
|
41863
|
41864
|
41865
|
41945
|
41946
|
41947
|
41948
|
42652
|
42653
|
42654
|
42655
|
42656
|
42745
|
42746
|
42747
|
42748
|
42749
|
42779
|
42780
|
42781
|
42782
|
42783
|
43429
|
43430
|
43431
|
43432
|
43433
|
43438
|
43502
|
43503
|
43504
|
43505
|
43506
|
43507
|
46130
|
46131
|
46132
|
46133
|
46134
|
46135