cleanup of opac-search.pl, synch with search.pl, etc.
[koha_fer] / circ / pendingreserves.pl
index 4952afa..c7a8ee2 100755 (executable)
@@ -1,6 +1,5 @@
 #!/usr/bin/perl
 
-# $Id$
 
 # Copyright 2000-2002 Katipo Communications
 #
@@ -24,7 +23,13 @@ use C4::Context;
 use C4::Output;
 use CGI;
 use C4::Auth;
-use C4::Date;
+use C4::Dates qw/format_date format_date_in_iso/;
+
+use vars qw($debug);
+
+BEGIN {
+    $debug = $ENV{DEBUG} || 0;
+}
 
 my $input = new CGI;
 my $order = $input->param('order');
@@ -65,9 +70,9 @@ my $todaysdate =
 
 my $dbh    = C4::Context->dbh;
 my ($sqlorderby, $sqldatewhere) = ("","");
-
-$sqldatewhere .= " && reservedate >= " . $dbh->quote($startdate)  if ($startdate) ;
-$sqldatewhere .= " && reservedate <= " . $dbh->quote($enddate)  if ($enddate) ;
+$debug and warn format_date_in_iso($startdate) . "\n" . format_date_in_iso($enddate);
+$sqldatewhere .= " AND reservedate >= " . $dbh->quote(format_date_in_iso($startdate))  if ($startdate) ;
+$sqldatewhere .= " AND reservedate <= " . $dbh->quote(format_date_in_iso($enddate))  if ($enddate) ;
 
 if ($order eq "borrower") {
        $sqlorderby = " order by  borrower, reservedate";
@@ -97,21 +102,26 @@ my $strsth =
         biblio.title,
         biblio.author
  FROM  reserves
- LEFT JOIN items ON items.biblionumber=reserves.biblionumber,
-  borrowers,biblio
+ LEFT JOIN items ON items.biblionumber=reserves.biblionumber 
+ LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
+ LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
  WHERE isnull(cancellationdate)
-  && reserves.borrowernumber=borrowers.borrowernumber 
-  && reserves.biblionumber=biblio.biblionumber
-  && reserves.found is NULL
-  && items.holdingbranch=?
- ";
+ $sqldatewhere
+ AND reserves.found is NULL 
+ AND reserves.itemnumber is NULL";
 
+if (C4::Context->preference('IndependantBranches')){
+       $strsth .= " AND items.holdingbranch=? ";
+}
 $strsth .= $sqlorderby;
-
 my $sth = $dbh->prepare($strsth);
 
-$sth->execute(C4::Context->userenv->{'branch'});
-
+if (C4::Context->preference('IndependantBranches')){
+       $sth->execute(C4::Context->userenv->{'branch'});
+}
+else {
+       $sth->execute();
+}      
 my @reservedata;
 my $previous;
 my $this;
@@ -145,17 +155,54 @@ while ( my $data = $sth->fetchrow_hashref ) {
 }
 
 $sth->finish;
+$strsth=~ s/AND reserves.itemnumber is NULL/AND reserves.itemnumber is NOT NULL/;
+$strsth=~ s/LEFT JOIN items ON items.biblionumber=reserves.biblionumber/LEFT JOIN items ON items.biblionumber=reserves.itemnumber/;
+$sth = $dbh->prepare($strsth);                                                                                                                          
+if (C4::Context->preference('IndependantBranches')){
+       $sth->execute(C4::Context->userenv->{'branch'});
+}     
+else {
+       $sth->execute(); 
+}              
+while ( my $data = $sth->fetchrow_hashref ) {
+    $this=$data->{biblionumber}.":".$data->{borrowernumber};
+    my @itemlist;
+    push(
+        @reservedata,
+        {
+            reservedate      => $previous eq $this?"":format_date( $data->{reservedate} ),
+            priority         => $previous eq $this?"":$data->{priority},
+            name             => $previous eq $this?"":$data->{borrower},
+            title            => $previous eq $this?"":$data->{title},
+            author           => $previous eq $this?"":$data->{author},
+            borrowernumber   => $previous eq $this?"":$data->{borrowernumber},
+            itemnum          => $previous eq $this?"":$data->{itemnumber},
+            phone            => $previous eq $this?"":$data->{phone},
+            email            => $previous eq $this?"":$data->{email},
+            biblionumber     => $previous eq $this?"":$data->{biblionumber},
+            statusw          => ( $data->{found} eq "w" ),
+            statusf          => ( $data->{found} eq "f" ),
+            holdingbranch    => $data->{holdingbranch},
+            branch           => $previous eq $this?"":$data->{branch},
+            itemcallnumber   => $data->{itemcallnumber},
+            notes            => $previous eq $this?"":$data->{notes},
+            notificationdate => $previous eq $this?"":$data->{notificationdate},
+            reminderdate     => $previous eq $this?"":$data->{reminderdate},
+                       thisitemonly     => 1,
+        }
+    );
+    $previous=$this;
+}
+
+$sth->finish;
 
 $template->param(
-    todaysdate              => format_date($todaysdate),
-       from                        => $startdate,
-       to                                  => $enddate,
-    reserveloop             => \@reservedata,
-    intranetcolorstylesheet =>
-      C4::Context->preference("intranetcolorstylesheet"),
-    intranetstylesheet => C4::Context->preference("intranetstylesheet"),
-    IntranetNav        => C4::Context->preference("IntranetNav"),
+    todaysdate      => format_date($todaysdate),
+    from             => $startdate,
+    to              => $enddate,
+    reserveloop     => \@reservedata,
     "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
+    DHTMLcalendar_dateformat =>  C4::Dates->DHTMLcalendar(),
 );
 
 output_html_with_http_headers $input, $cookie, $template->output;