Koha/reports/serials_stats.pl
Owen Leonard d6c40ebe5a Bug 11718 - Use new DataTables include in reports templates
Bug 10649 introduced a new include file for adding DataTables-related
JavaScript assets. This patch adds use of this include file to all
circ-related pages which use DataTables.

Apply the patch and test the following pages to confirm that table
sorting works correctly:

- Reports -> Guided reports -> Use saved
  (reports/guided_reports.pl?phase=Use saved):
  "Creation date" sorting has been reconfigured to use the title-string
  method for sorting on an unformatted date. C4:Reports::Guided.pm has
  been modified to pass an unformatted date to the template. Sorting
  should work correctly for all settings of the dateformat system pref.

- Reports -> Catalog by item type
  (reports/manager.pl?report_name=itemtypes)

- Reports -> Serials statistics wizard (reports/serials_stats.pl):
  The subscription begin and subscription end columns have been modified
  to use the title-string filter for sorting. An unformatted date is now
  passed from reports/serials_stats.pl to the template, where the
  KohaDates filter is used for formatting. Sorting is based on the
  unformatted date. Sorting should work correctly for all settings of
  the dateformat system pref.

  - Sorting of titles should now exclude article from sorting.
  - Minor template improvements:
    - Vendor name now links to vendor details.
    - Subscription title now links to subscription details.
    - Library name is now shown instead of branchcode.

Signed-off-by: Aleisha <aleishaamohia@hotmail.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Passes all tests and QA script.
Checked all pages, no regressions or Javascript errors detected.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-03-12 17:33:25 +00:00

167 lines
4.9 KiB
Perl
Executable file

#!/usr/bin/perl
# Copyright 2009 SARL Biblibre
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
use warnings;
use C4::Auth;
use CGI;
use C4::Context;
use C4::Branch; # GetBranches
use C4::Dates qw/format_date/;
use C4::Output;
use C4::Koha;
use C4::Reports;
use C4::Serials;
=head1 serials_out
plugin that shows a stats on serials
=head1 DESCRIPTION
=over 2
=cut
my $input = new CGI;
my $templatename = "reports/serials_stats.tmpl";
my $do_it = $input->param("do_it");
my $bookseller = $input->param("bookseller");
my $branchcode = $input->param("branchcode");
my $expired = $input->param("expired");
my $order = $input->param("order");
my $output = $input->param("output");
my $basename = $input->param("basename");
our $sep = $input->param("sep") || '';
$sep = "\t" if ($sep eq 'tabulation');
my ($template, $borrowernumber, $cookie)
= get_template_and_user({template_name => $templatename,
query => $input,
type => "intranet",
authnotrequired => 0,
flagsrequired => {reports => '*'},
debug => 1,
});
my $dbh = C4::Context->dbh;
if($do_it){
my $where = "WHERE 1 ";
my @args;
# if a specific branchcode was selected
if( $branchcode ne '' ){
$where .= "AND branchcode = ? ";
push @args,$branchcode;
}
# if a specific bookseller was selected
if($bookseller ne ''){
$where .= "AND aqbooksellerid = ? ";
push @args,$bookseller;
}
my $sth = $dbh->prepare("SELECT *
FROM subscription
LEFT JOIN aqbooksellers
ON (aqbooksellers.id=subscription.aqbooksellerid)
LEFT JOIN biblio
ON (biblio.biblionumber=subscription.biblionumber)
$where
");
$sth->execute(@args);
## hash generation of items by branchcode
my @datas;
while(my $row = $sth->fetchrow_hashref){
$row->{'enddate'} = GetExpirationDate($row->{'subscriptionid'});
$row->{expired} = HasSubscriptionExpired($row->{subscriptionid});
push @datas, $row if (
$expired
or (
not $expired
and (
not $row->{expired}
and not $row->{closed}
)
)
);
}
if($output eq 'screen'){
$template->param(datas => \@datas,
do_it => 1);
}else{
binmode STDOUT, ':encoding(UTF-8)';
print $input->header(-type => 'application/vnd.sun.xml.calc',
-encoding => 'utf-8',
-name => "$basename.csv",
-attachment => "$basename.csv");
print "Vendor".$sep;
print "Title".$sep;
print "Subscription id".$sep;
print "Branch".$sep;
print "Callnumber".$sep;
print "Subscription Begin".$sep;
print "Subscription End\n";
foreach my $item (@datas){
print $item->{name}.$sep;
print $item->{title}.$sep;
print $item->{subscriptionid}.$sep;
print $item->{branchcode}.$sep;
print $item->{callnumber}.$sep;
print $item->{startdate}.$sep;
print $item->{enddate}."\n";
}
exit;
}
}else{
## We generate booksellers list
my @booksellers;
my $sth = $dbh->prepare("SELECT aqbooksellerid, aqbooksellers.name
FROM subscription
LEFT JOIN aqbooksellers ON (subscription.aqbooksellerid=aqbooksellers.id )
GROUP BY aqbooksellerid");
$sth->execute();
while(my $row = $sth->fetchrow_hashref){
push(@booksellers,$row)
}
my $CGIextChoice=CGI::scrolling_list(
-name => 'MIME',
-id => 'MIME',
-values => ['CSV'], # FIXME translation
-size => 1,
-multiple => 0 );
my $CGIsepChoice=GetDelimiterChoices;
$template->param(
CGIextChoice => $CGIextChoice,
CGIsepChoice => $CGIsepChoice,
booksellers => \@booksellers,
branches => GetBranchesLoop(C4::Context->userenv->{'branch'}));
}
output_html_with_http_headers $input, $cookie, $template->output;