From f081063d72e7e03de179b096f2bbe425ed264505 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 8 Oct 2014 12:04:35 -0400 Subject: [PATCH] Bug 13030: Show waiting hold expiration date for waiting holds on circulation.pl We should show the date a waiting hold is set to expire for each hold in the list of waiting holds in circulation.pl Test Plan: 1) Apply this patch 2) Find a waiting hold for a patron, browser to circulation.pl for that patron 3) Set system preference ReservesMaxPickUpDelay to 5 4) Refresh circulation.pl, note the waiting holds now display a "waiting until" part with the waiting date plus 5 days 5) Set system preference ReservesMaxPickUpDelay to 0 ( or empty string ) 6) Refresh circulation.pl, note the waiting hols no longer have a "waiting until" line. Signed-off-by: Owen Leonard Followed test plan successfully. Automated tests successful. Signed-off-by: Kyle M Hall Signed-off-by: Cathi Wiggins Signed-off-by: Megan Wianecki Bug 13030 [QA Followup] - Fix unit tests Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi --- Koha/Hold.pm | 25 +++++++++ .../prog/en/modules/circ/circulation.tt | 2 +- t/db_dependent/Hold.t | 53 +++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100755 t/db_dependent/Hold.t diff --git a/Koha/Hold.pm b/Koha/Hold.pm index 5bb1fc75de..ee4a8a0893 100644 --- a/Koha/Hold.pm +++ b/Koha/Hold.pm @@ -21,9 +21,11 @@ use Modern::Perl; use Carp; +use C4::Context qw(preference); use Koha::Branches; use Koha::Biblios; use Koha::Items; +use Koha::DateUtils qw(dt_from_string); use base qw(Koha::Object); @@ -37,6 +39,29 @@ Koha::Hold - Koha Hold object class =cut +=head3 waiting_expires_on + +Returns a DateTime for the date a waiting holds expires on. +Returns undef if the system peference ReservesMaxPickUpDelay is not set. +Returns undef if the hold is not waiting ( found = 'W' ). + +=cut + +sub waiting_expires_on { + my ($self) = @_; + + return unless $self->found() eq 'W'; + + my $ReservesMaxPickUpDelay = C4::Context->preference('ReservesMaxPickUpDelay'); + return unless $ReservesMaxPickUpDelay; + + my $dt = dt_from_string( $self->waitingdate() ); + + $dt->add( days => $ReservesMaxPickUpDelay ); + + return $dt; +} + =head3 biblio Returns the related Koha::Biblio object for this hold diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index 6b552276c1..4d9edafd34 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -796,7 +796,7 @@ No patron matched [% message %]
[% IF ( w.branch.branchcode == Branches.GetLoggedInBranchcode() ) %][% ELSE %][% END %] - Waiting at [% w.branch.branchname | html %] + Waiting at [% w.branch.branchname | html %] [% IF w.waiting_expires_on %] until [% w.waiting_expires_on | $KohaDates %] [% END %] diff --git a/t/db_dependent/Hold.t b/t/db_dependent/Hold.t new file mode 100755 index 0000000000..0aa7076010 --- /dev/null +++ b/t/db_dependent/Hold.t @@ -0,0 +1,53 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use C4::Context; +use Koha::Database; + +use Test::More tests => 5; + +use_ok('Koha::Hold'); + +my $schema = Koha::Database->new()->schema(); +$schema->storage->txn_begin(); + +my $dbh = C4::Context->dbh; +$dbh->{RaiseError} = 1; + +my $hold = Koha::Hold->new({ found => 'W', waitingdate => '2000-01-01'}); + +C4::Context->set_preference( 'ReservesMaxPickUpDelay', '' ); +my $dt = $hold->waiting_expires_on(); +is( $dt, undef, "Koha::Hold->waiting_expires_on returns undef if ReservesMaxPickUpDelay is not set"); + +C4::Context->set_preference( 'ReservesMaxPickUpDelay', '5' ); +$dt = $hold->waiting_expires_on(); +is( $dt->ymd, "2000-01-06", "Koha::Hold->waiting_expires_on returns DateTime of waitingdate + ReservesMaxPickUpDelay if set"); + +$hold->found('T'); +$dt = $hold->waiting_expires_on(); +is( $dt, undef, "Koha::Hold->waiting_expires_on returns undef if found is not 'W' ( Set to 'T' )"); + +$hold->found(q{}); +$dt = $hold->waiting_expires_on(); +is( $dt, undef, "Koha::Hold->waiting_expires_on returns undef if found is not 'W' ( Set to empty string )"); + +$schema->storage->txn_rollback(); + +1; -- 2.39.5