263dded818
use encoding(UTF-8) rather than utf-8 for stricter encoding Marking output as ':utf8' only flags the data as utf8 using :encoding(UTF-8) also checks it as valid utf-8 see binmode in perlfunc for more details In accordance with the robustness principle input filehandles have not been changed as code may make the undocumented assumption that invalid utf-8 is present in the imput Fixes errors reported by t/00-testcritic.t Where feasable some filehandles have been made lexical rather than reusing global filehandle vars Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
170 lines
5.2 KiB
Perl
Executable file
170 lines
5.2 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'} = format_date(GetExpirationDate($row->{'subscriptionid'}));
|
|
$row->{'startdate'} = format_date($row->{'startdate'});
|
|
push @datas, $row if ($expired || (not $expired && not HasSubscriptionExpired($row->{subscriptionid})) );
|
|
}
|
|
|
|
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(1);
|
|
}
|
|
}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)
|
|
}
|
|
|
|
## We generate branchlist
|
|
my $branches=GetBranches();
|
|
my @branchloop;
|
|
foreach (sort {$branches->{$a}->{'branchname'} cmp $branches->{$b}->{'branchname'}} keys %$branches) {
|
|
my $thisbranch = ''; # FIXME: populate $thisbranch to preselect one
|
|
my %row = (branchcode => $_,
|
|
selected => ($thisbranch eq $_ ? 1 : 0),
|
|
branchname => $branches->{$_}->{'branchname'},
|
|
);
|
|
push @branchloop, \%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 => \@branchloop);
|
|
}
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|