Kyle M Hall
af0d71b747
Some libraries would like to be able to cancel a hold with the option to specify a reason. Providing a reason would generate an email to that patron. Test Plan: 1) Apply this patch 2) Run updatedatabase.pl 3) Restart all the things! 4) Create new AV category "HOLD_CANCELLATION", add some cancelation reasons 5) Add new Holds module notice "HOLD_CANCELLATION", add an email version. A quick test version would be "Reason: <<reserves.cancellation_reason>>" -- [% USE AuthorisedValues %] Reason: [% AuthorisedValues.GetByCode( 'CANCELLATION_REASON', hold.cancellation_reason, 'IS_OPAC' ) %] [% IF hold.cancellation_reason == "MY_AV_VALUE" %] IF perhaps you'd like to have a much longer explanation than just the one sentence in the AV description, you can use IF blocks using Template Toolkit markup! [% END %] -- 6) Place a hold for a patron 7) On request.pl, select the 'del' option for the hold 8) Select a cancellation reason and choose "Update hold(s)" 9) Note a new message has been queue for the patron with the cancelation reason 11) Test again from circulation.pl 12) Test again from moremember.pl 10) Cancel a hold with no reason, note no email is generated 11) Delete your authorised values, not the feature is disabled 12) Reinstate the authorised values, but delete the notice, you should now be able to cancel a hold with a reason, but no email will be generated Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com> Signed-off-by: Rebecca Coert <rcoert@arlingtonva.us> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
102 lines
3.6 KiB
Perl
Executable file
102 lines
3.6 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
#script to modify reserves/requests
|
|
#written 2/1/00 by chris@katipo.oc.nz
|
|
#last update 27/1/2000 by chris@katipo.co.nz
|
|
|
|
|
|
# Copyright 2000-2002 Katipo Communications
|
|
#
|
|
# 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 <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
use CGI qw ( -utf8 );
|
|
use List::MoreUtils qw( uniq );
|
|
use C4::Output;
|
|
use C4::Reserves;
|
|
use C4::Auth;
|
|
use Koha::DateUtils qw( dt_from_string );
|
|
|
|
my $query = new CGI;
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "about.tt",
|
|
query => $query,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => { catalogue => 1 },
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
my @reserve_id = $query->multi_param('reserve_id');
|
|
my @rank = $query->multi_param('rank-request');
|
|
my @borrower = $query->multi_param('borrowernumber');
|
|
my @reservedates = $query->multi_param('reservedate');
|
|
my @expirationdates = $query->multi_param('expirationdate');
|
|
my @branch = $query->multi_param('pickup');
|
|
my @itemnumber = $query->multi_param('itemnumber');
|
|
my @biblionumber = $query->multi_param('biblionumber');
|
|
my $count=@rank;
|
|
|
|
@biblionumber = uniq @biblionumber;
|
|
|
|
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 function ModReserveCancelAll (in reserves.pm)
|
|
if ($CancelBorrowerNumber) {
|
|
ModReserveCancelAll($CancelItemnumber, $CancelBorrowerNumber);
|
|
$biblionumber[0] = $CancelBiblioNumber,
|
|
}
|
|
|
|
# 2) Cancel or modify the queue list of reserves (without item linked)
|
|
else {
|
|
for (my $i=0;$i<$count;$i++){
|
|
undef $itemnumber[$i] if !$itemnumber[$i];
|
|
my $suspend_until = $query->param( "suspend_until_" . $reserve_id[$i] );
|
|
my $cancellation_reason = $query->param("cancellation-reason");
|
|
my $params = {
|
|
rank => $rank[$i],
|
|
reserve_id => $reserve_id[$i],
|
|
expirationdate => $expirationdates[$i] ? dt_from_string($expirationdates[$i]) : undef,
|
|
branchcode => $branch[$i],
|
|
itemnumber => $itemnumber[$i],
|
|
defined $suspend_until ? ( suspend_until => $suspend_until ) : (),
|
|
cancellation_reason => $cancellation_reason,
|
|
};
|
|
if (C4::Context->preference('AllowHoldDateInFuture')) {
|
|
$params->{reservedate} = $reservedates[$i] ? dt_from_string($reservedates[$i]) : undef;
|
|
}
|
|
|
|
ModReserve($params);
|
|
}
|
|
}
|
|
|
|
my $from=$query->param('from');
|
|
$from ||= q{};
|
|
if ( $from eq 'borrower'){
|
|
print $query->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrower[0]");
|
|
} elsif ( $from eq 'circ'){
|
|
print $query->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrower[0]");
|
|
} else {
|
|
my $url = "/cgi-bin/koha/reserve/request.pl?";
|
|
$url .= "biblionumbers=" . join('/', @biblionumber);
|
|
print $query->redirect($url);
|
|
}
|