cleanup of opac-search.pl, synch with search.pl, etc.
[koha_fer] / circ / pendingreserves.pl
index 99674da..c7a8ee2 100755 (executable)
@@ -23,12 +23,18 @@ 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');
 my $startdate=$input->param('from');
-my $enddate=format_date_in_iso($input->param('to'));
+my $enddate=$input->param('to');
 
 my $theme = $input->param('theme');    # only used if allowthemeoverride is set
 
@@ -64,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";
@@ -100,7 +106,9 @@ my $strsth =
  LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
  LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
  WHERE isnull(cancellationdate)
- AND reserves.found is NULL ";
+ $sqldatewhere
+ AND reserves.found is NULL 
+ AND reserves.itemnumber is NULL";
 
 if (C4::Context->preference('IndependantBranches')){
        $strsth .= " AND items.holdingbranch=? ";
@@ -147,14 +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),
-    fro             => $startdate,
+    from             => $startdate,
     to              => $enddate,
     reserveloop     => \@reservedata,
     "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
-    DHTMLcalendar_dateformat => get_date_format_string_for_DHTMLcalendar(),
+    DHTMLcalendar_dateformat =>  C4::Dates->DHTMLcalendar(),
 );
 
 output_html_with_http_headers $input, $cookie, $template->output;