fixing pending reserves to use dates specified
[koha.git] / circ / pendingreserves.pl
blob76ad768171b42bf657f8a96e7bad854807e69448
1 #!/usr/bin/perl
4 # Copyright 2000-2002 Katipo Communications
6 # This file is part of Koha.
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.
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.
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
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/;
28 my $input = new CGI;
29 my $order = $input->param('order');
30 my $startdate=$input->param('from');
31 my $enddate=$input->param('to');
33 my $theme = $input->param('theme'); # only used if allowthemeoverride is set
35 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
37 template_name => "circ/pendingreserves.tmpl",
38 query => $input,
39 type => "intranet",
40 authnotrequired => 0,
41 flagsrequired => { circulate => 1 },
42 debug => 1,
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;
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] );
65 my $dbh = C4::Context->dbh;
66 my ($sqlorderby, $sqldatewhere) = ("","");
67 warn format_date_in_iso($startdate);
68 warn format_date_in_iso($enddate);
69 $sqldatewhere .= " AND reservedate >= " . $dbh->quote(format_date_in_iso($startdate)) if ($startdate) ;
70 $sqldatewhere .= " AND reservedate <= " . $dbh->quote(format_date_in_iso($enddate)) if ($enddate) ;
72 if ($order eq "borrower") {
73 $sqlorderby = " order by borrower, reservedate";
74 } elsif ($order eq "biblio") {
75 $sqlorderby = " order by biblio.title, priority,reservedate";
76 } elsif ($order eq "priority") {
77 $sqlorderby = "order by priority DESC";
78 } else {
79 $sqlorderby = " order by reservedate, borrower";
81 my $strsth =
82 "SELECT reservedate,
83 reserves.borrowernumber as borrowernumber,
84 concat(firstname,' ',surname) as borrower,
85 borrowers.phone,
86 borrowers.email,
87 reserves.biblionumber,
88 reserves.branchcode as branch,
89 items.holdingbranch,
90 items.itemcallnumber,
91 items.itemnumber,
92 notes,
93 notificationdate,
94 reminderdate,
95 priority,
96 reserves.found,
97 biblio.title,
98 biblio.author
99 FROM reserves
100 LEFT JOIN items ON items.biblionumber=reserves.biblionumber
101 LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
102 LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
103 WHERE isnull(cancellationdate)
104 $sqldatewhere
105 AND reserves.found is NULL ";
107 if (C4::Context->preference('IndependantBranches')){
108 $strsth .= " AND items.holdingbranch=? ";
110 $strsth .= $sqlorderby;
111 my $sth = $dbh->prepare($strsth);
113 if (C4::Context->preference('IndependantBranches')){
114 $sth->execute(C4::Context->userenv->{'branch'});
116 else {
117 $sth->execute();
119 my @reservedata;
120 my $previous;
121 my $this;
122 while ( my $data = $sth->fetchrow_hashref ) {
123 $this=$data->{biblionumber}.":".$data->{borrowernumber};
124 my @itemlist;
125 push(
126 @reservedata,
128 reservedate => $previous eq $this?"":format_date( $data->{reservedate} ),
129 priority => $previous eq $this?"":$data->{priority},
130 name => $previous eq $this?"":$data->{borrower},
131 title => $previous eq $this?"":$data->{title},
132 author => $previous eq $this?"":$data->{author},
133 borrowernumber => $previous eq $this?"":$data->{borrowernumber},
134 itemnum => $previous eq $this?"":$data->{itemnumber},
135 phone => $previous eq $this?"":$data->{phone},
136 email => $previous eq $this?"":$data->{email},
137 biblionumber => $previous eq $this?"":$data->{biblionumber},
138 statusw => ( $data->{found} eq "w" ),
139 statusf => ( $data->{found} eq "f" ),
140 holdingbranch => $data->{holdingbranch},
141 branch => $previous eq $this?"":$data->{branch},
142 itemcallnumber => $data->{itemcallnumber},
143 notes => $previous eq $this?"":$data->{notes},
144 notificationdate => $previous eq $this?"":$data->{notificationdate},
145 reminderdate => $previous eq $this?"":$data->{reminderdate}
148 $previous=$this;
151 $sth->finish;
153 $template->param(
154 todaysdate => format_date($todaysdate),
155 from => $startdate,
156 to => $enddate,
157 reserveloop => \@reservedata,
158 "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
159 DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
162 output_html_with_http_headers $input, $cookie, $template->output;