Finalized XML version for intranet
[koha.git] / circ / branchreserves.pl
1 #!/usr/bin/perl
2
3 # $Id$
4
5 # Copyright 2000-2002 Katipo Communications
6 #
7 # This file is part of Koha.
8 #
9 # Koha is free software; you can redistribute it and/or modify it under the
10 # terms of the GNU General Public License as published by the Free Software
11 # Foundation; either version 2 of the License, or (at your option) any later
12 # version.
13 #
14 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
15 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
16 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License along with
19 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
20 # Suite 330, Boston, MA  02111-1307 USA
21
22 use strict;
23 use C4::Context;
24 use C4::Output;
25 use CGI;
26 use HTML::Template;
27 use C4::Auth;
28 use C4::Date;
29 use C4::Circulation::Circ2;
30 use Date::Manip;
31 use C4::Reserves2;
32 use C4::Search;
33 use C4::Koha;
34
35 my $input = new CGI;
36
37 my $item=$input->param('itemnumber');
38 my $borrowernumber=$input->param('borrowernumber');
39 my $fbr=$input->param('fbr');
40 my $tbr=$input->param('tbr');
41
42 my $cancel;
43
44
45 my $theme = $input->param('theme'); # only used if allowthemeoverride is set
46
47 my ($template, $loggedinuser, $cookie)
48       = get_template_and_user({template_name => "circ/branchreserves.tmpl",
49                                          query => $input,
50                                          type => "intranet",
51                                          authnotrequired => 0,
52                                          flagsrequired => {borrowers => 1},
53                                          debug => 1,
54                                          });
55
56 my $default = C4::Context->userenv->{'branch'};
57
58 my @datearr = localtime(time());
59 my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
60
61
62 # if we have a return from the form we launch the subroutine CancelReserve
63         if ($item){
64                 my $messages;
65                 my $nextreservinfo;
66                 my %env;
67                 my $waiting;
68                 ($messages,$nextreservinfo) = GlobalCancel($item,$borrowernumber);
69 #               if we have a result 
70                 if ($nextreservinfo){
71                         my $borrowerinfo = getpatroninformation(\%env,$nextreservinfo);
72                         my $iteminfo = C4::Circulation::Circ2::getiteminformation(\%env,$item);
73                         if ($messages->{'transfert'}){
74                         my $branchname = getbranchname($messages->{'transfert'});
75                                 $template->param(
76                                         messagetransfert => $messages->{'transfert'},
77                                         branchname      => $branchname,
78                                 );
79                         }
80                         if ($messages->{'waiting'}){
81                         $waiting = 1;
82                         }
83
84                                 $template->param(
85                                         message                 => 1,
86                                         nextreservnumber  =>  $nextreservinfo,
87                                         nextreservsurname => $borrowerinfo->{'surname'},
88                                         nextreservfirstname => $borrowerinfo->{'firstname'},
89                                         nextreservitem          => $item,
90                                         nextreservtitle         => $iteminfo->{'title'},
91                                         waiting                 => $waiting
92                                 );
93                         }
94 #               if the document is not in his homebranch location and there is not reservation after, we transfer it
95                 if (($fbr ne $tbr) and (not $nextreservinfo)){
96                         C4::Circulation::Circ2::dotransfer($item,$fbr,$tbr);
97                 }
98         }
99         
100 my @reservloop;
101 my @getreserves = GetReservesForBranch($default);
102 foreach my $num (@getreserves) {
103         my %getreserv;
104         my %env;
105         my $gettitle = getiteminformation(\%env,$num->{'itemnumber'});
106         my $getborrower = getpatroninformation (\%env,$num->{'borrowernumber'});
107         my $itemtypeinfo = getitemtypeinfo($gettitle->{'itemtype'});
108         $getreserv{'waitingdate'} = format_date($num->{'waitingdate'});
109         my $calcDate=DateCalc($num->{'waitingdate'},"+".C4::Context->preference('ReservesMaxPickUpDelay')."  days");
110         my $warning=Date_Cmp(ParseDate("today"),$calcDate);
111         if ($warning>0){
112                 $getreserv{'messcompa'} = 1;
113         }
114         $getreserv{'title'} = $gettitle->{'title'};
115         $getreserv{'itemnumber'} = $gettitle->{'itemnumber'};
116         $getreserv{'biblionumber'} = $gettitle->{'biblionumber'};
117         $getreserv{'barcode'} = $gettitle->{'barcode'};
118         $getreserv{'itemtype'} = $itemtypeinfo->{'description'};
119         $getreserv{'homebranch'} = $gettitle->{'homebranch'};
120         $getreserv{'holdingbranch'} = $gettitle->{'holdingbranch'};
121         if ($gettitle->{'homebranch'} ne $gettitle->{'holdingbranch'}){
122                 $getreserv{'dotransfer'} = 1;
123                 }
124         $getreserv{'itemcallnumber'} = $gettitle->{'itemcallnumber'};
125         $getreserv{'borrowernum'} = $getborrower->{'borrowernumber'};
126         $getreserv{'borrowername'} = $getborrower->{'surname'};
127         $getreserv{'borrowerfirstname'} =  $getborrower->{'firstname'} ;
128         if ($getborrower->{'emailaddress'}){
129                 $getreserv{'borrowermail'} =  $getborrower->{'emailaddress'} ;
130         }
131         $getreserv{'borrowerphone'} = $getborrower->{'phone'};
132         push(@reservloop, \%getreserv);
133 }
134
135         $template->param( reserveloop       => \@reservloop,
136                         show_date       => format_date($todaysdate),    
137                          );
138         
139         print "Content-Type: text/html\n\n", $template->output;