Changing to two-column layout
[koha.git] / circ / pendingreserves.pl
1 #!/usr/bin/perl
2
3
4 # Copyright 2000-2002 Katipo Communications
5 #
6 # This file is part of Koha.
7 #
8 # Koha is free software; you can redistribute it and/or modify it under the
9 # terms of the GNU General Public License as published by the Free Software
10 # Foundation; either version 2 of the License, or (at your option) any later
11 # version.
12 #
13 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
14 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License along with
18 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
19 # Suite 330, Boston, MA  02111-1307 USA
20
21 use strict;
22 use C4::Context;
23 use C4::Output;
24 use CGI;
25 use C4::Auth;
26 use C4::Date;
27
28 my $input = new CGI;
29 my $order = $input->param('order');
30 my $startdate=$input->param('from');
31 my $enddate=format_date_in_iso($input->param('to'));
32
33 my $theme = $input->param('theme');    # only used if allowthemeoverride is set
34
35 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
36     {
37         template_name   => "circ/pendingreserves.tmpl",
38         query           => $input,
39         type            => "intranet",
40         authnotrequired => 0,
41         flagsrequired   => { circulate => 1 },
42         debug           => 1,
43     }
44 );
45
46 my $duedate;
47 my $borrowernumber;
48 my $itemnum;
49 my $data1;
50 my $data2;
51 my $data3;
52 my $name;
53 my $phone;
54 my $email;
55 my $biblionumber;
56 my $title;
57 my $author;
58
59 my @datearr    = localtime( time() );
60 my $todaysdate =
61     ( 1900 + $datearr[5] ) . '-'
62   . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
63   . sprintf( "%0.2d", $datearr[3] );
64
65 my $dbh    = C4::Context->dbh;
66 my ($sqlorderby, $sqldatewhere) = ("","");
67
68 $sqldatewhere .= " && reservedate >= " . $dbh->quote($startdate)  if ($startdate) ;
69 $sqldatewhere .= " && reservedate <= " . $dbh->quote($enddate)  if ($enddate) ;
70
71 if ($order eq "borrower") {
72         $sqlorderby = " order by  borrower, reservedate";
73 } elsif ($order eq "biblio") {
74         $sqlorderby = " order by biblio.title, priority,reservedate";
75 } elsif ($order eq "priority") {
76     $sqlorderby = "order by priority DESC";
77 } else {
78         $sqlorderby = " order by reservedate, borrower";
79 }
80 my $strsth =
81 "SELECT reservedate,
82         reserves.borrowernumber as borrowernumber,
83         concat(firstname,' ',surname) as borrower,
84         borrowers.phone,
85         borrowers.email,
86         reserves.biblionumber,
87         reserves.branchcode as branch,
88         items.holdingbranch,
89         items.itemcallnumber,
90         items.itemnumber,
91         notes,
92         notificationdate,
93         reminderdate,
94         priority,
95         reserves.found,
96         biblio.title,
97         biblio.author
98  FROM  reserves
99  LEFT JOIN items ON items.biblionumber=reserves.biblionumber 
100  LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
101  LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
102  WHERE isnull(cancellationdate)
103  AND reserves.found is NULL ";
104
105 if (C4::Context->preference('IndependantBranches')){
106         $strsth .= " items.holdingbranch=? ";
107 }
108 $strsth .= $sqlorderby;
109 my $sth = $dbh->prepare($strsth);
110
111 if (C4::Context->preference('IndependantBranches')){
112         $sth->execute(C4::Context->userenv->{'branch'});
113 }
114 else {
115         $sth->execute();
116 }       
117 my @reservedata;
118 my $previous;
119 my $this;
120 while ( my $data = $sth->fetchrow_hashref ) {
121     $this=$data->{biblionumber}.":".$data->{borrowernumber};
122     my @itemlist;
123     push(
124         @reservedata,
125         {
126             reservedate      => $previous eq $this?"":format_date( $data->{reservedate} ),
127             priority         => $previous eq $this?"":$data->{priority},
128             name             => $previous eq $this?"":$data->{borrower},
129             title            => $previous eq $this?"":$data->{title},
130             author           => $previous eq $this?"":$data->{author},
131             borrowernumber   => $previous eq $this?"":$data->{borrowernumber},
132             itemnum          => $previous eq $this?"":$data->{itemnumber},
133             phone            => $previous eq $this?"":$data->{phone},
134             email            => $previous eq $this?"":$data->{email},
135             biblionumber     => $previous eq $this?"":$data->{biblionumber},
136             statusw          => ( $data->{found} eq "w" ),
137             statusf          => ( $data->{found} eq "f" ),
138             holdingbranch    => $data->{holdingbranch},
139             branch           => $previous eq $this?"":$data->{branch},
140             itemcallnumber   => $data->{itemcallnumber},
141             notes            => $previous eq $this?"":$data->{notes},
142             notificationdate => $previous eq $this?"":$data->{notificationdate},
143             reminderdate     => $previous eq $this?"":$data->{reminderdate}
144         }
145     );
146     $previous=$this;
147 }
148
149 $sth->finish;
150
151 $template->param(
152     todaysdate      => format_date($todaysdate),
153     fro             => $startdate,
154     to              => $enddate,
155     reserveloop     => \@reservedata,
156     "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
157     DHTMLcalendar_dateformat => get_date_format_string_for_DHTMLcalendar(),
158 );
159
160 output_html_with_http_headers $input, $cookie, $template->output;