# 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., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# 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; FIXME - Bug 2505
use CGI;
use Date::Manip;
use C4::Koha;
use C4::Output;
use C4::Circulation;
+use C4::Reports;
use C4::Dates qw/format_date format_date_in_iso/;
use C4::Members;
my $calc = $input->param("Cellvalue");
my $output = $input->param("output");
my $basename = $input->param("basename");
-my $mime = $input->param("MIME");
-my $del = $input->param("sep");
my ($template, $borrowernumber, $cookie) = get_template_and_user({
template_name => $fullreportname,
query => $input,
type => "intranet",
authnotrequired => 0,
- flagsrequired => {reports => 1},
+ flagsrequired => {reports => '*'},
debug => 0,
});
+our $sep = $input->param("sep");
+$sep = "\t" if ($sep eq 'tabulation');
$template->param(do_it => $do_it,
DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
);
-filename=>"$basename.csv" );
my $cols = @$results[0]->{loopcol};
my $lines = @$results[0]->{looprow};
- my $sep = C4::Context->preference("delimiter");
# header top-right
print @$results[0]->{line} ."/". @$results[0]->{column} .$sep;
# Other header
print map {$sep.$_->{totalcol}} @$cols;
print $sep.@$results[0]->{total};
}
- exit(1); # exit either way after $do_it
+ exit; # exit either way after $do_it
}
my $dbh = C4::Context->dbh;
# create itemtype arrayref for <select>.
my @itemtypeloop;
-for my $itype ( keys(%$itemtypes)) {
+for my $itype ( sort {$itemtypes->{$a}->{description} cmp $itemtypes->{$b}->{description}} keys(%$itemtypes)) {
push @itemtypeloop, { code => $itype , description => $itemtypes->{$itype}->{description} } ;
}
-my $branches=GetBranches();
-my @branchloop;
-foreach (keys %$branches) {
- my $thisbranch = ''; # FIXME
- my %row = (
- branchcode => $_,
- selected => ($thisbranch eq $_ ? 1 : 0),
- code => $branches->{$_}->{'branchcode'},
- description => $branches->{$_}->{'branchname'},
- );
- push @branchloop, \%row;
-}
-
# location list
my @locations;
foreach (sort keys %$locations) {
}
my @ccodes;
-foreach (keys %$ccodes) {
+foreach (sort {$ccodes->{$a} cmp $ccodes->{$b}} keys %$ccodes) {
push @ccodes, { code => $_, description => $ccodes->{$_} };
}
-# various
-my @mime = (C4::Context->preference("MIME"));
-
my $CGIextChoice=CGI::scrolling_list(
-name => 'MIME',
-id => 'MIME',
- -values => \@mime,
+ -values => ['CSV'], # FIXME translation
-size => 1,
-multiple => 0 );
-my @dels = ( C4::Context->preference("delimiter") );
-my $CGIsepChoice=CGI::scrolling_list(
- -name => 'sep',
- -id => 'sep',
- -values => \@dels,
- -size => 1,
- -multiple => 0 );
+my $CGIsepChoice=GetDelimiterChoices;
$template->param(
categoryloop => $categoryloop,
itemtypeloop => \@itemtypeloop,
locationloop => \@locations,
ccodeloop => \@ccodes,
- branchloop => \@branchloop,
+ branchloop => GetBranchesLoop(C4::Context->userenv->{'branch'}),
hassort1=> $hassort1,
hassort2=> $hassort2,
Bsort1 => $Bsort1,
# Checking filters
#
my @loopfilter;
- for (my $i=0;$i<=10;$i++) {
+ for (my $i=0;$i<=12;$i++) {
my %cell;
(@$filters[$i]) or next;
if (($i==1) and (@$filters[$i-1])) {
$cell{filter} = format_date(@$filters[$i]);
}
$cell{crit} =
- ($i==0) ? "Period From" :
- ($i==1) ? "Period To" :
- ($i==2) ? "Patron Category =" :
- ($i==3) ? "Item Type =" :
- ($i==4) ? "Library =" :
- ($i==5) ? "Collection =" :
- ($i==6) ? "Location =" :
- ($i==7) ? "Item callnumber >=" :
- ($i==8) ? "Item callnumber <" :
- ($i==9) ? "sort1 =" :
- ($i==10)? "sort2 =" : "UNKNOWN FILTER ($i)";
+ ( $i == 0 ) ? "Period From"
+ : ( $i == 1 ) ? "Period To"
+ : ( $i == 2 ) ? "Patron Category ="
+ : ( $i == 3 ) ? "Item Type ="
+ : ( $i == 4 ) ? "Library ="
+ : ( $i == 5 ) ? "Collection ="
+ : ( $i == 6 ) ? "Location ="
+ : ( $i == 7 ) ? "Item callnumber >="
+ : ( $i == 8 ) ? "Item callnumber <"
+ : ( $i == 9 ) ? "sort1 ="
+ : ( $i == 10 ) ? "sort2 ="
+ : ( $i == 11 ) ? "Home library ="
+ : ( $i == 12 )? "Holding library ="
+ : "UNKNOWN FILTER ($i)";
+
# FIXME - no translation mechanism !
push @loopfilter, \%cell;
}
$debug and warn "filtres ". join "|", @filters;
my ($colsource, $linesource);
$linefilter[1] = @$filters[1] if ($line =~ /datetime/);
- $linefilter[0] = ($line =~ /datetime/) ? @$filters[0] :
- ($line =~ /category/) ? @$filters[2] :
- ($line =~ /itemtype/) ? @$filters[3] :
- ($line =~ /branch/ ) ? @$filters[4] :
- ($line =~ /ccode/ ) ? @$filters[5] :
- ($line =~ /location/) ? @$filters[6] :
- ($line =~ /sort1/ ) ? @$filters[9] :
- ($line =~ /sort2/ ) ? @$filters[10] : undef ;
- if ($line =~ /ccode/ or $line =~ /location/) {
+ $linefilter[0] =
+ ( $line =~ /datetime/ ) ? @$filters[0]
+ : ( $line =~ /category/ ) ? @$filters[2]
+ : ( $line =~ /itemtype/ ) ? @$filters[3]
+ : ( $line =~ /^branch/ ) ? @$filters[4]
+ : ( $line =~ /ccode/ ) ? @$filters[5]
+ : ( $line =~ /location/ ) ? @$filters[6]
+ : ( $line =~ /sort1/ ) ? @$filters[9]
+ : ( $line =~ /sort2/ ) ? @$filters[10]
+ : ( $line =~ /homebranch/) ? @$filters[11]
+ : ( $line =~ /holdingbranch/) ? @$filters[12]
+ : undef;
+
+ if ( $line =~ /ccode/ or $line =~ /location/ or $line =~ /homebranch/ or $line =~ /holdingbranch/ ) {
$linesource = 'items';
}
my @colfilter;
$colfilter[1] = @$filters[1] if ($column =~ /datetime/);
- $colfilter[0] = ($column =~ /datetime/) ? @$filters[0] :
- ($column =~ /category/) ? @$filters[2] :
- ($column =~ /itemtype/) ? @$filters[3] :
- ($column =~ /branch/ ) ? @$filters[4] :
- ($column =~ /ccode/ ) ? @$filters[5] :
- ($column =~ /location/) ? @$filters[6] :
- ($column =~ /sort1/ ) ? @$filters[9] :
- ($column =~ /sort1/ ) ? @$filters[10] : undef ;
- if ($column =~ /ccode/ or $column =~ /location/) {
+ $colfilter[0] =
+ ( $column =~ /datetime/ ) ? @$filters[0]
+ : ( $column =~ /category/ ) ? @$filters[2]
+ : ( $column =~ /itemtype/ ) ? @$filters[3]
+ : ( $column =~ /^branch/ ) ? @$filters[4]
+ : ( $column =~ /ccode/ ) ? @$filters[5]
+ : ( $column =~ /location/ ) ? @$filters[6]
+ : ( $column =~ /sort1/ ) ? @$filters[9]
+ : ( $column =~ /sort1/ ) ? @$filters[10]
+ : ( $column =~ /homebranch/) ? @$filters[11]
+ : ( $column =~ /holdingbranch/) ? @$filters[12]
+ : undef;
+
+ if ( $column =~ /ccode/ or $column =~ /location/ or $column =~ /homebranch/ or $column =~ /holdingbranch/ ) {
$colsource = 'items';
}
# 1st, loop rows.
} else {
$colfield = $column;
}
- $colorder = ($colfield =~ /dayname/) ? "weekday($line)" :
- ($colfield =~ /^month/ ) ? " month($line)" : $colfield;
+ $colorder = ($colfield =~ /dayname/) ? "weekday($column)" :
+ ($colfield =~ /^month/ ) ? " month($column)" : $colfield;
my $strsth2 = "SELECT distinctrow $colfield FROM statistics, ";
# get stats on items if ccode or location, otherwise borrowers.
$strsth2 .= ($colsource eq 'items' ) ?
my $strcalc = "SELECT $linefield, $colfield, ";
$strcalc .= ($process == 1) ? " COUNT(*) " :
($process == 2) ? "(COUNT(DISTINCT borrowers.borrowernumber))" :
- ($process == 3) ? "(COUNT(DISTINCT issues.itemnumber))" : '';
+ ($process == 3) ? "(COUNT(DISTINCT statistics.itemnumber))" : '';
if ($process == 4) {
my $rqbookcount = $dbh->prepare("SELECT count(*) FROM items");
$rqbookcount->execute;
my ($bookcount) = $rqbookcount->fetchrow;
- $strcalc .= "100*(COUNT(DISTINCT issues.itemnumber))/ $bookcount " ;
+ $strcalc .= "100*(COUNT(DISTINCT statistics.itemnumber))/ $bookcount " ;
}
$strcalc .= "
FROM statistics