X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=reports%2Facquisitions_stats.pl;h=d7dea6a85f05cf90fe3f887b8d28382555b40e89;hb=refs%2Fheads%2Fkoha_ffzg;hp=de4b0f34bb3fcb76be57abc908427fb3fd2f8dd4;hpb=a9dbc8eadd21a46489077b22f8ed3e6b60cc6699;p=koha.git diff --git a/reports/acquisitions_stats.pl b/reports/acquisitions_stats.pl index de4b0f34bb..d7dea6a85f 100755 --- a/reports/acquisitions_stats.pl +++ b/reports/acquisitions_stats.pl @@ -1,58 +1,60 @@ #!/usr/bin/perl - # Copyright 2000-2002 Katipo Communications # # 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 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 3 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. +# 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. - -# test comment +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . use Modern::Perl; use C4::Auth; -use CGI; +use CGI qw ( -utf8 ); use C4::Context; use C4::Reports; use C4::Output; use C4::Koha; use C4::Circulation; -use C4::Dates qw/format_date format_date_in_iso/; -use C4::Branch; use C4::Biblio; +use Koha::ItemTypes; +use Koha::DateUtils; +use Koha::Libraries; =head1 NAME -plugin that shows a stats on borrowers +reports/acquisitions_stats.pl =head1 DESCRIPTION -=over 2 +Plugin that shows a stats on borrowers =cut my $input = new CGI; my $do_it = $input->param('do_it'); -my $fullreportname = "reports/acquisitions_stats.tmpl"; +my $fullreportname = "reports/acquisitions_stats.tt"; my $line = $input->param("Line"); my $column = $input->param("Column"); -my @filters = $input->param("Filter"); -$filters[0] = format_date_in_iso( $filters[0] ); -$filters[1] = format_date_in_iso( $filters[1] ); -$filters[2] = format_date_in_iso( $filters[2] ); -$filters[3] = format_date_in_iso( $filters[3] ); +my @filters = $input->multi_param("Filter"); +$filters[0] = eval { output_pref( { dt => dt_from_string( $filters[0]), dateonly => 1, dateformat => 'iso' } ); } + if ( $filters[0] ); +$filters[1] = eval { output_pref( { dt => dt_from_string( $filters[1]), dateonly => 1, dateformat => 'iso' } ); } + if ( $filters[1] ); +$filters[2] = eval { output_pref( { dt => dt_from_string( $filters[2]), dateonly => 1, dateformat => 'iso' } ); } + if ( $filters[2] ); +$filters[3] = eval { output_pref( { dt => dt_from_string( $filters[3]), dateonly => 1, dateformat => 'iso' } ); } + if ( $filters[3] ); my $podsp = $input->param("PlacedOnDisplay"); my $rodsp = $input->param("ReceivedOnDisplay"); my $calc = $input->param("Cellvalue"); @@ -72,10 +74,11 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( our $sep = $input->param("sep") // ''; $sep = "\t" if ($sep eq 'tabulation'); + $template->param( do_it => $do_it, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), ); + if ($do_it) { my $results = calculate( $line, $column, $podsp, $rodsp, $calc, \@filters ); @@ -122,80 +125,47 @@ else { $req->execute; my $booksellers = $req->fetchall_arrayref({}); - $req = $dbh->prepare("SELECT DISTINCTROW itemtype,description FROM itemtypes ORDER BY description"); - $req->execute; - my @select; - my %select; - push @select, ""; - $select{''} = "All Item Types"; - while ( my ( $value, $desc ) = $req->fetchrow ) { - push @select, $value; - $select{$value} = $desc; - } - my $CGIItemTypes = CGI::scrolling_list( - -name => 'Filter', - -id => 'itemtypes', - -values => \@select, - -labels => \%select, - -size => 1, - -multiple => 0 - ); - $req = $dbh->prepare("SELECT DISTINCTROW budget_code, budget_name FROM aqbudgets ORDER BY budget_name"); $req->execute; - undef @select; - undef %select; - push @select, ""; - $select{''} = "All budgets"; + my @bselect; + my %bselect; while ( my ( $value, $desc ) = $req->fetchrow ) { - push @select, $value; - $select{$value} = $desc; + push @bselect, $value; + $bselect{$value} = $desc; } - my $CGIBudget = CGI::scrolling_list( - -name => 'Filter', - -id => 'budget', - -values => \@select, - -labels => \%select, - -size => 1, - -multiple => 0 - ); + my $Budgets = { + values => \@bselect, + labels => \%bselect, + }; $req = $dbh->prepare( "SELECT DISTINCTROW sort1 FROM aqorders WHERE sort1 IS NOT NULL ORDER BY sort1" ); $req->execute; - undef @select; - undef %select; - push @select, ""; - $select{''} = "All"; + my @s1select; + my %s1select; my $hassort1; while ( my ($value) = $req->fetchrow ) { if ($value) { $hassort1 = 1; - push @select, $value; - $select{$value} = $value; + push @s1select, $value; + $s1select{$value} = $value; } } - my $CGISort1 = CGI::scrolling_list( - -name => 'Filter', - -id => 'sort1', - -values => \@select, - -labels => \%select, - -size => 1, - -multiple => 0 - ); + my $Sort1 = { + values => \@s1select, + labels => \%s1select, + }; $req = $dbh->prepare( "SELECT DISTINCTROW sort2 FROM aqorders WHERE sort2 IS NOT NULL ORDER BY sort2" ); $req->execute; - undef @select; - undef %select; - push @select, ""; - $select{''} = "All"; + my @s2select; + my %s2select; my $hassort2; my $hglghtsort2; @@ -203,36 +173,20 @@ else { if ($value) { $hassort2 = 1; $hglghtsort2 = !($hassort1); - push @select, $value; - $select{$value} = $value; + push @s2select, $value; + $s2select{$value} = $value; } } - my $CGISort2 = CGI::scrolling_list( - -name => 'Filter', - -id => 'sort2', - -values => \@select, - -labels => \%select, - -size => 1, - -multiple => 0 - ); - - my $CGIextChoice = CGI::scrolling_list( - -name => 'MIME', - -id => 'MIME', - -values => ['CSV'], # FIXME translation - -size => 1, - -multiple => 0 - ); + my $Sort2 = { + values => \@s2select, + labels => \%s2select, + }; my $CGIsepChoice = GetDelimiterChoices; - my $branches = GetBranches; - my @branches; - foreach ( sort keys %$branches ) { - push @branches, $branches->{$_}; - } + my @branches = Koha::Libraries->search({}, { order_by => 'branchname' }); - my $ccode_subfield_structure = GetMarcSubfieldStructureFromKohaField('items.ccode', ''); + my $ccode_subfield_structure = GetMarcSubfieldStructureFromKohaField('items.ccode'); my $ccode_label; my $ccode_avlist; if($ccode_subfield_structure) { @@ -240,15 +194,15 @@ else { $ccode_avlist = GetAuthorisedValues($ccode_subfield_structure->{authorised_value}); } + my $itemtypes = Koha::ItemTypes->search_with_localization; $template->param( booksellers => $booksellers, - CGIItemType => $CGIItemTypes, - CGIBudget => $CGIBudget, + itemtypes => $itemtypes, # FIXME Should use the TT plugin instead + Budgets => $Budgets, hassort1 => $hassort1, hassort2 => $hassort2, - CGISort1 => $CGISort1, - CGISort2 => $CGISort2, - CGIextChoice => $CGIextChoice, + Sort1 => $Sort1, + Sort2 => $Sort2, CGIsepChoice => $CGIsepChoice, branches => \@branches, ccode_label => $ccode_label, @@ -288,7 +242,8 @@ sub calculate { if ($i >= 4) { $cell{filter} = @$filters[$i]; } else { - $cell{filter} = format_date(@$filters[$i]); + $cell{filter} = eval { output_pref( { dt => dt_from_string( @$filters[$i] ), dateonly => 1 }); } + if ( @$filters[$i] ); } $cell{crit} = $i; push @loopfilter, \%cell; @@ -300,51 +255,55 @@ sub calculate { foreach ($line, $column) { $filter{$_} = []; $field{$_} = $_; - given ($_) { - when (/closedate/) { - $filter{$_}->[0] = @$filters[0]; - $filter{$_}->[1] = @$filters[1]; - my $a = $_; - given ($podsp) { - when (1) { $field{$a} = "concat(hex(weekday($a)+1),'-',dayname($a))" } - when (2) { $field{$a} = "concat(hex(month($a)),'-',monthname($a))" } - when (3) { $field{$a} = "Year($a)" } - default { $field{$a} = $a } - } - } - when (/received/) { - $filter{$_}->[0] = @$filters[2]; - $filter{$_}->[1] = @$filters[3]; - my $a = $_; - given ($rodsp) { - when (1) { $field{$a} = "concat(hex(weekday($a)+1),'-',dayname($a))" } - when (2) { $field{$a} = "concat(hex(month($a)),'-',monthname($a))" } - when (3) { $field{$a} = "Year($a)" } - default { $field{$a} = $a } - } - } - when (/bookseller/) { - $filter{$_}->[0] = @$filters[4]; - } - when (/homebranch/) { - $filter{$_}->[0] = @$filters[5]; - } - when (/ccode/) { - $filter{$_}->[0] = @$filters[6]; - } - when (/itemtype/) { - $filter{$_}->[0] = @$filters[7]; - } - when (/budget/) { - $filter{$_}->[0] = @$filters[8]; - } - when (/sort1/) { - $filter{$_}->[0] = @$filters[9]; + if ( $_ =~ /closedate/ ) { + $filter{$_}->[0] = @$filters[0]; + $filter{$_}->[1] = @$filters[1]; + my $a = $_; + if ( $podsp == 1 ) { + $field{$a} = "concat(hex(weekday($a)+1),'-',dayname($a))"; + } elsif ( $podsp == 2 ) { + $field{$a} = "concat(hex(month($a)),'-',monthname($a))"; + } elsif ( $podsp == 3 ) { + $field{$a} = "Year($a)"; + } else { + $field{$a} = $a; } - when (/sort2/) { - $filter{$_}->[0] = @$filters[10]; + } + elsif ( $_ =~ /received/ ) { + $filter{$_}->[0] = @$filters[2]; + $filter{$_}->[1] = @$filters[3]; + my $a = $_; + if ( $rodsp == 1 ) { + $field{$a} = "concat(hex(weekday($a)+1),'-',dayname($a))"; + } elsif ( $rodsp == 2 ) { + $field{$a} = "concat(hex(month($a)),'-',monthname($a))"; + } elsif ( $rodsp == 3 ) { + $field{$a} = "Year($a)"; + } else { + $field{$a} = $a; } } + elsif ( $_ =~ /bookseller/ ) { + $filter{$_}->[0] = @$filters[4]; + } + elsif ( $_ =~ /homebranch/ ) { + $filter{$_}->[0] = @$filters[5]; + } + elsif ( $_ =~ /ccode/ ) { + $filter{$_}->[0] = @$filters[6]; + } + elsif ( $_ =~ /itemtype/ ) { + $filter{$_}->[0] = @$filters[7]; + } + elsif ( $_ =~ /budget/ ) { + $filter{$_}->[0] = @$filters[8]; + } + elsif ( $_ =~ /sort1/ ) { + $filter{$_}->[0] = @$filters[9]; + } + elsif ( $_ =~ /sort2/ ) { + $filter{$_}->[0] = @$filters[10]; + } } my @linefilter = @{ $filter{$line} }; @@ -483,11 +442,14 @@ sub calculate { # preparing calculation my $strcalc; $strcalc .= "SELECT $linefield, $colfield, "; - given ($process) { - when (1) { $strcalc .= "COUNT(*) " } - when (2) { $strcalc .= "COUNT(DISTINCT(aqorders.biblionumber)) " } - when ([3,4,5]) { $strcalc .= "SUM(aqorders.listprice) " } - default { $strcalc .= "NULL " } + if ( $process == 1 ) { + $strcalc .= "COUNT(*) "; + } elsif ( $process == 2 ) { + $strcalc .= "COUNT(DISTINCT(aqorders.biblionumber)) "; + } elsif ( $process == 3 || $process == 4 || $process == 5 ) { + $strcalc .= "SUM(aqorders.listprice) "; + } else { + $strcalc .= "NULL "; } $strcalc .= " FROM aqorders