use C4::Context;
use C4::Output;
use CGI;
-use HTML::Template;
use C4::Auth;
use C4::Date;
+use C4::Interface::CGI::Output;
my $input = new CGI;
-my $type=$input->param('type');
-my $order=$input->param('order');
-
-my $theme = $input->param('theme'); # only used if allowthemeoverride is set
-
-my ($template, $loggedinuser, $cookie)
- = get_template_and_user({template_name => "circ/reserve.tmpl",
- query => $input,
- type => "intranet",
- authnotrequired => 0,
- flagsrequired => {borrowers => 1},
- debug => 1,
- });
-# borrowernumber int(11)
-# reservedate date
-# biblionumber int(11)
-# constrainttype char(1)
-# branchcode varchar(4)
-# notificationdate date
-# reminderdate date
-# cancellationdate date
-# reservenotes text
-# priority smallint(6)
-# found char(1)
-# timestamp timestamp ON UPDATE CURRENT_TIMESTAMP Oui CURRENT_TIMESTAMP Modifier Supprimer Primaire Index Unique Texte entier
-# itemnumber int(11)
+my $order = $input->param('order');
+my $startdate=$input->param('from');
+my $enddate=$input->param('to');
+
+my $theme = $input->param('theme'); # only used if allowthemeoverride is set
+
+my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+ {
+ template_name => "circ/reserve.tmpl",
+ query => $input,
+ type => "intranet",
+ authnotrequired => 0,
+ flagsrequired => { circulate => 1 },
+ debug => 1,
+ }
+);
+
my $duedate;
-my $bornum;
+my $borrowernumber;
my $itemnum;
my $data1;
my $data2;
my $biblionumber;
my $title;
my $author;
-my @datearr = localtime(time());
-my $todaysdate = (1900+$datearr[5]).'-'.sprintf ("%0.2d", ($datearr[4]+1)).'-'.sprintf ("%0.2d", $datearr[3]);
-my $dbh = C4::Context->dbh;
-my $strsth="select reservedate,reserves.borrowernumber as bornum, concat(firstname,' ',surname) as borrower, borrowers.phone, borrowers.emailaddress,reserves.biblionumber, reserves.branchcode as branch, items.holdingbranch, items.itemcallnumber, items.itemnumber, notes, notificationdate, reminderdate, priority, reserves.found, biblio.title, biblio.author from reserves left join items on items.itemnumber=reserves.itemnumber, borrowers,biblio where isnull(cancellationdate) && reserves.borrowernumber=borrowers.borrowernumber && reserves.biblionumber=biblio.biblionumber order by reservedate, borrower ";
-$strsth="select reservedate,reserves.borrowernumber as bornum,concat(firstname,' ',surname) as borrower, borrowers.phone, borrowers.emailaddress,reserves.biblionumber, reserves.branchcode as branch, items.holdingbranch, items.itemcallnumber, items.itemnumber, notes, notificationdate, reminderdate, priority, reserves.found, biblio.title, biblio.author from reserves left join items on items.itemnumber=reserves.itemnumber , borrowers,biblio where isnull(cancellationdate) && reserves.borrowernumber=borrowers.borrowernumber && reserves.biblionumber=biblio.biblionumber order by borrower,reservedate " if ($order eq "borrower");
-$strsth="select reservedate,reserves.borrowernumber as bornum,concat(firstname,' ',surname) as borrower, borrowers.phone, borrowers.emailaddress,reserves.biblionumber, reserves.branchcode as branch, items.holdingbranch, items.itemcallnumber, items.itemnumber, notes, notificationdate, reminderdate, priority, reserves.found, biblio.title, biblio.author from reserves left join items on items.itemnumber=reserves.itemnumber, borrowers,biblio where isnull(cancellationdate) && reserves.borrowernumber=borrowers.borrowernumber && reserves.biblionumber=biblio.biblionumber order by biblio.title, priority,reservedate " if ($order eq "biblio");
-my $sth=$dbh->prepare($strsth);
-warn "".$strsth;
-$sth->execute();
+my @datearr = localtime( time() );
+my $todaysdate =
+ ( 1900 + $datearr[5] ) . '-'
+ . sprintf( "%0.2d", ( $datearr[4] + 1 ) ) . '-'
+ . sprintf( "%0.2d", $datearr[3] );
-my @reservedata;
-while (my $data=$sth->fetchrow_hashref) {
- push (@reservedata,
- {
- reservedate => format_date($data->{reservedate}),
- priority => $data->{priority},
- name => $data->{borrower},
- title => $data->{title},
- author => $data->{author},
- bornum => $data->{bornum},
- itemnum => $data->{itemnumber},
- phone => $data->{phone},
- email => $data->{email},
- biblionumber => $data->{biblionumber},
- statusw => ($data->{found} eq "w"),
- statusf => ($data->{found} eq "f"),
- holdingbranch => $data->{holdingbranch},
- branch => $data->{branch},
- itemcallnumber => $data->{itemcallnumber},
- notes => $data->{notes},
- notificationdate => $data->{notificationdate},
- reminderdate => $data->{reminderdate}
- }
-
- );
+my $dbh = C4::Context->dbh;
+my ($sqlorderby, $sqldatewhere) = ("","");
+
+$sqldatewhere .= " && reservedate >= " . $dbh->quote($startdate) if ($startdate) ;
+$sqldatewhere .= " && reservedate <= " . $dbh->quote($enddate) if ($enddate) ;
+if ($order eq "borrower") {
+ $sqlorderby = " order by borrower, reservedate";
+} elsif ($order eq "biblio") {
+ $sqlorderby = " order by biblio.title, priority,reservedate";
+} elsif ($order eq "priority") {
+ $sqlorderby = "order by priority DESC";
+} else {
+ $sqlorderby = " order by reservedate, borrower";
+}
+my $strsth =
+"SELECT reservedate,
+ reserves.borrowernumber as borrowernumber,
+ concat(firstname,' ',surname) as borrower,
+ borrowers.phone,
+ borrowers.email,
+ reserves.biblionumber,
+ reserves.branchcode as branch,
+ items.holdingbranch,
+ items.itemcallnumber,
+ items.itemnumber,
+ notes,
+ notificationdate,
+ reminderdate,
+ priority,
+ reserves.found,
+ biblio.title,
+ biblio.author
+ FROM reserves
+ LEFT JOIN items ON items.biblionumber=reserves.biblionumber,
+ borrowers,biblio
+ WHERE isnull(cancellationdate)
+ && reserves.borrowernumber=borrowers.borrowernumber
+ && reserves.biblionumber=biblio.biblionumber
+ && reserves.found is NULL
+ && items.holdingbranch=?
+ ";
+
+$strsth .= $sqlorderby;
+
+my $sth = $dbh->prepare($strsth);
+
+$sth->execute(C4::Context->userenv->{'branch'});
+
+my @reservedata;
+my $previous;
+my $this;
+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}
+ }
+ );
+ $previous=$this;
}
$sth->finish;
-$template->param(todaysdate => format_date($todaysdate),
- reserveloop => \@reservedata,
- intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"),
- intranetstylesheet => C4::Context->preference("intranetstylesheet"),
- IntranetNav => C4::Context->preference("IntranetNav"),
- );
+$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"),
+ "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
+);
-print "Content-Type: text/html\n\n", $template->output;
+output_html_with_http_headers $input, $cookie, $template->output;