created old_issues and old_reserves tables
[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::Dates qw/format_date format_date_in_iso/;
27
28 use vars qw($debug);
29
30 BEGIN {
31     $debug = $ENV{DEBUG} || 0;
32 }
33
34 my $input = new CGI;
35 my $order = $input->param('order');
36 my $startdate=$input->param('from');
37 my $enddate=$input->param('to');
38
39 my $theme = $input->param('theme');    # only used if allowthemeoverride is set
40
41 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
42     {
43         template_name   => "circ/pendingreserves.tmpl",
44         query           => $input,
45         type            => "intranet",
46         authnotrequired => 0,
47         flagsrequired   => { circulate => 1 },
48         debug           => 1,
49     }
50 );
51
52 my $duedate;
53 my $borrowernumber;
54 my $itemnum;
55 my $data1;
56 my $data2;
57 my $data3;
58 my $name;
59 my $phone;
60 my $email;
61 my $biblionumber;
62 my $title;
63 my $author;
64
65 my @datearr    = localtime( time() );
66 my $todaysdate =
67     ( 1900 + $datearr[5] ) . '-'
68   . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
69   . sprintf( "%0.2d", $datearr[3] );
70
71 my $dbh    = C4::Context->dbh;
72 my ($sqlorderby, $sqldatewhere) = ("","");
73 $debug and warn format_date_in_iso($startdate) . "\n" . format_date_in_iso($enddate);
74 $sqldatewhere .= " AND reservedate >= " . $dbh->quote(format_date_in_iso($startdate))  if ($startdate) ;
75 $sqldatewhere .= " AND reservedate <= " . $dbh->quote(format_date_in_iso($enddate))  if ($enddate) ;
76
77 if ($order eq "borrower") {
78         $sqlorderby = " order by  borrower, reservedate";
79 } elsif ($order eq "biblio") {
80         $sqlorderby = " order by biblio.title, priority,reservedate";
81 } elsif ($order eq "priority") {
82     $sqlorderby = "order by priority DESC";
83 } else {
84         $sqlorderby = " order by reservedate, borrower";
85 }
86 my $strsth =
87 "SELECT reservedate,
88         reserves.borrowernumber as borrowernumber,
89         concat(firstname,' ',surname) as borrower,
90         borrowers.phone,
91         borrowers.email,
92         reserves.biblionumber,
93         reserves.branchcode as branch,
94         items.holdingbranch,
95         items.itemcallnumber,
96         items.itemnumber,
97         notes,
98         notificationdate,
99         reminderdate,
100         priority,
101         reserves.found,
102         biblio.title,
103         biblio.author
104  FROM  reserves
105  LEFT JOIN items ON items.biblionumber=reserves.biblionumber 
106  LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
107  LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
108  WHERE reserves.found is NULL 
109  $sqldatewhere
110  AND reserves.itemnumber is NULL";
111
112 if (C4::Context->preference('IndependantBranches')){
113         $strsth .= " AND items.holdingbranch=? ";
114 }
115 $strsth .= $sqlorderby;
116 my $sth = $dbh->prepare($strsth);
117
118 if (C4::Context->preference('IndependantBranches')){
119         $sth->execute(C4::Context->userenv->{'branch'});
120 }
121 else {
122         $sth->execute();
123 }       
124 my @reservedata;
125 my $previous;
126 my $this;
127 while ( my $data = $sth->fetchrow_hashref ) {
128     $this=$data->{biblionumber}.":".$data->{borrowernumber};
129     my @itemlist;
130     push(
131         @reservedata,
132         {
133             reservedate      => $previous eq $this?"":format_date( $data->{reservedate} ),
134             priority         => $previous eq $this?"":$data->{priority},
135             name             => $previous eq $this?"":$data->{borrower},
136             title            => $previous eq $this?"":$data->{title},
137             author           => $previous eq $this?"":$data->{author},
138             borrowernumber   => $previous eq $this?"":$data->{borrowernumber},
139             itemnum          => $previous eq $this?"":$data->{itemnumber},
140             phone            => $previous eq $this?"":$data->{phone},
141             email            => $previous eq $this?"":$data->{email},
142             biblionumber     => $previous eq $this?"":$data->{biblionumber},
143             statusw          => ( $data->{found} eq "W" ),
144             statusf          => ( $data->{found} eq "F" ),
145             holdingbranch    => $data->{holdingbranch},
146             branch           => $previous eq $this?"":$data->{branch},
147             itemcallnumber   => $data->{itemcallnumber},
148             notes            => $previous eq $this?"":$data->{notes},
149             notificationdate => $previous eq $this?"":$data->{notificationdate},
150             reminderdate     => $previous eq $this?"":$data->{reminderdate}
151         }
152     );
153     $previous=$this;
154 }
155
156 $sth->finish;
157 $strsth=~ s/AND reserves.itemnumber is NULL/AND reserves.itemnumber is NOT NULL/;
158 $strsth=~ s/LEFT JOIN items ON items.biblionumber=reserves.biblionumber/LEFT JOIN items ON items.biblionumber=reserves.itemnumber/;
159 $sth = $dbh->prepare($strsth);                                                                                                                          
160 if (C4::Context->preference('IndependantBranches')){
161         $sth->execute(C4::Context->userenv->{'branch'});
162 }     
163 else {
164         $sth->execute(); 
165 }              
166 while ( my $data = $sth->fetchrow_hashref ) {
167     $this=$data->{biblionumber}.":".$data->{borrowernumber};
168     my @itemlist;
169     push(
170         @reservedata,
171         {
172             reservedate      => $previous eq $this?"":format_date( $data->{reservedate} ),
173             priority         => $previous eq $this?"":$data->{priority},
174             name             => $previous eq $this?"":$data->{borrower},
175             title            => $previous eq $this?"":$data->{title},
176             author           => $previous eq $this?"":$data->{author},
177             borrowernumber   => $previous eq $this?"":$data->{borrowernumber},
178             itemnum          => $previous eq $this?"":$data->{itemnumber},
179             phone            => $previous eq $this?"":$data->{phone},
180             email            => $previous eq $this?"":$data->{email},
181             biblionumber     => $previous eq $this?"":$data->{biblionumber},
182             statusw          => ( $data->{found} eq "W" ),
183             statusf          => ( $data->{found} eq "F" ),
184             holdingbranch    => $data->{holdingbranch},
185             branch           => $previous eq $this?"":$data->{branch},
186             itemcallnumber   => $data->{itemcallnumber},
187             notes            => $previous eq $this?"":$data->{notes},
188             notificationdate => $previous eq $this?"":$data->{notificationdate},
189             reminderdate     => $previous eq $this?"":$data->{reminderdate},
190                         thisitemonly     => 1,
191         }
192     );
193     $previous=$this;
194 }
195
196 $sth->finish;
197
198 $template->param(
199     todaysdate      => format_date($todaysdate),
200     from             => $startdate,
201     to              => $enddate,
202     reserveloop     => \@reservedata,
203     "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
204     DHTMLcalendar_dateformat =>  C4::Dates->DHTMLcalendar(),
205 );
206
207 output_html_with_http_headers $input, $cookie, $template->output;