use strict;
use warnings;
-use CGI;
+use CGI qw ( -utf8 );
use C4::Auth;
use C4::Debug;
use C4::Context;
-use C4::Branch; # GetBranches
use C4::Koha;
use C4::Output;
use C4::Reports;
use C4::Members;
-use C4::Dates qw/format_date format_date_in_iso/;
-use C4::Category;
+use Koha::DateUtils;
+use Koha::Libraries;
+use Koha::Patron::Categories;
use List::MoreUtils qw/any/;
use YAML;
=head1 NAME
-plugin that shows circulation stats
+ reports/reserve_stats.pl
=head1 DESCRIPTION
-=over 2
+ Plugin that shows circulation stats
=cut
# my $debug = 1; # override for now.
my $input = new CGI;
-my $fullreportname = "reports/reserves_stats.tmpl";
+my $fullreportname = "reports/reserves_stats.tt";
my $do_it = $input->param('do_it');
my $line = $input->param("Line");
my $column = $input->param("Column");
our $sep = $input->param("sep") || '';
$sep = "\t" if ($sep eq 'tabulation');
$template->param(do_it => $do_it,
- DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(),
);
my $itemtypes = GetItemTypes();
-my $categoryloop = GetBorrowercategoryList;
+my @patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['description']});
my $ccodes = GetKohaAuthorisedValues("items.ccode");
my $locations = GetKohaAuthorisedValues("items.location");
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 ( sort {$itemtypes->{$a}->{description} cmp $itemtypes->{$b}->{description}} keys(%$itemtypes)) {
- push @itemtypeloop, { code => $itype , description => $itemtypes->{$itype}->{description} } ;
+for my $itype ( sort {$itemtypes->{$a}->{translated_description} cmp $itemtypes->{$b}->{translated_description}} keys(%$itemtypes)) {
+ push @itemtypeloop, { code => $itype , description => $itemtypes->{$itype}->{translated_description} } ;
}
# location list
}
# various
-my @mime = (C4::Context->preference("MIME"));
-
-my $CGIextChoice=CGI::scrolling_list(
- -name => 'MIME',
- -id => 'MIME',
- -values => \@mime,
- -size => 1,
- -multiple => 0 );
-
+my $CGIextChoice = ( 'CSV' ); # FIXME translation
my $CGIsepChoice=GetDelimiterChoices;
$template->param(
- categoryloop => $categoryloop,
+ categoryloop => \@patron_categories,
itemtypeloop => \@itemtypeloop,
locationloop => \@locations,
ccodeloop => \@ccodes,
- branchloop => GetBranchesLoop(C4::Context->userenv->{'branch'}),
hassort1=> $hassort1,
hassort2=> $hassort2,
Bsort1 => $Bsort1,
my @loopfilter;
foreach my $filter ( keys %$filters_hashref ) {
$filters_hashref->{$filter} =~ s/\*/%/;
- $filters_hashref->{$filter} =
- format_date_in_iso( $filters_hashref->{$filter} )
- if ( $filter =~ /date/ );
+ if ( $filter =~ /date/ ) {
+ $filters_hashref->{$filter} =
+ eval { output_pref( { dt => dt_from_string( $filters_hashref->{$filter} ), dateonly => 1, dateformat => 'iso' }); };
+ }
}
#display
crit => $_,
filter => (
$_ =~ /date/
- ? format_date( $filters_hashref->{$_} )
+ ? eval { output_pref( { dt => dt_from_string( $filters_hashref->{$_} ), dateonly => 1 }); }
: $filters_hashref->{$_}
)
}
($process == 3) ? "(COUNT(DISTINCT reserves.itemnumber)) calculation" :
($process == 4) ? "(COUNT(DISTINCT reserves.biblionumber)) calculation" : '*';
$strcalc .= "
- FROM reserves
+ FROM (select * from reserves union select * from old_reserves) reserves
LEFT JOIN borrowers USING (borrowernumber)
";
$strcalc .= "LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber "
$strcalc .= " WHERE ".join(" AND ",@sqlwhere) if (@sqlwhere);
$strcalc .= " AND (".join(" OR ",@sqlor).")" if (@sqlor);
$strcalc .= " GROUP BY line, col )";
- my $strcalc_old=$strcalc;
- $strcalc_old=~s/reserves/old_reserves/g;
- $strcalc.=qq{ UNION $strcalc_old ORDER BY line, col};
($debug) and print STDERR $strcalc;
my $dbcalc = $dbh->prepare($strcalc);
push @loopfilter, {crit=>'SQL =', sql=>1, filter=>$strcalc};
@sqlparams=(@sqlparams,@sqlorparams);
- $dbcalc->execute(@sqlparams,@sqlparams);
+ $dbcalc->execute(@sqlparams);
my ($emptycol,$emptyrow);
my $data = $dbcalc->fetchall_hashref([qw(line col)]);
my %cols_hash;
( $crit =~ /ccode/ ) ? $ccodes->{$value}
: ( $crit =~ /location/ ) ? $locations->{$value}
: ( $crit =~ /itemtype/ ) ? $itemtypes->{$value}->{description}
- : ( $crit =~ /branch/ ) ? GetBranchName($value)
+ : ( $crit =~ /branch/ ) ? Koha::Libraries->find($value)->branchname
: ( $crit =~ /reservestatus/ ) ? reservestatushuman($value)
: $value; # default fallback
if ($crit =~ /sort1/) {
}
}
elsif ( $crit =~ /category/ ) {
- foreach (@$categoryloop) {
- ( $value eq $_->{categorycode} ) or next;
- $display_value = $_->{description} and last;
+ foreach my $patron_category ( @patron_categories ) {
+ ( $value eq $patron_category->categorycode ) or next;
+ $display_value = $patron_category->description and last;
}
}
return $display_value;