Bug 30500: Allow patrons to change in transit holds pickup locations
[koha.git] / opac / opac-modrequest.pl
1 #!/usr/bin/perl
2
3 #script to modify reserves/requests
4 #written 2/1/00 by chris@katipo.oc.nz
5 #last update 27/1/2000 by chris@katipo.co.nz
6
7
8 # Copyright 2000-2002 Katipo Communications
9 #
10 # This file is part of Koha.
11 #
12 # Koha is free software; you can redistribute it and/or modify it
13 # under the terms of the GNU General Public License as published by
14 # the Free Software Foundation; either version 3 of the License, or
15 # (at your option) any later version.
16 #
17 # Koha is distributed in the hope that it will be useful, but
18 # WITHOUT ANY WARRANTY; without even the implied warranty of
19 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 # GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License
23 # along with Koha; if not, see <http://www.gnu.org/licenses>.
24
25 use Modern::Perl;
26
27 use CGI qw ( -utf8 );
28 use C4::Output;
29 use C4::Auth qw( get_template_and_user );
30 use Koha::Holds;
31
32 my $query = CGI->new;
33
34 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
35     {   
36         template_name   => "opac-account.tt",
37         query           => $query,
38         type            => "opac",
39     }
40 );
41
42 my $reserve_id = $query->param('reserve_id');
43 my $cancellation_request = $query->param('cancellation_request');
44 my $new_pickup_location  = $query->param('new_pickup_location');
45
46 if ( $reserve_id && $borrowernumber ) {
47
48     my $hold = Koha::Holds->find($reserve_id);
49
50     unless ( $hold->borrowernumber == $borrowernumber ) {
51
52         # whatcha tryin to do?
53         print $query->redirect('/cgi-bin/koha/errors/403.pl');
54         exit;
55     }
56
57     if ($cancellation_request) {
58         $hold->add_cancellation_request
59           if $hold->cancellation_requestable_from_opac;
60     }
61     else {
62         $hold->cancel
63           if $hold->is_cancelable_from_opac;
64     }
65
66     if ( $new_pickup_location ) {
67
68         if ( C4::Context->preference('OPACInTransitHoldPickupLocationChange') ) {
69             $hold->set_pickup_location({ library_id => $new_pickup_location });
70         }
71         else {
72             # whatcha tryin to do?
73             print $query->redirect('/cgi-bin/koha/errors/403.pl');
74             exit;
75         }
76     }
77 }
78
79 print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");