Bug 16529 - Clean up and improve upload template
[koha.git] / reports / acquisitions_stats.pl
index fd30926..8fd8067 100755 (executable)
@@ -4,18 +4,18 @@
 #
 # 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.
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use Modern::Perl;
 
@@ -26,9 +26,9 @@ 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::DateUtils;
 
 =head1 NAME
 
@@ -45,11 +45,15 @@ my $do_it          = $input->param('do_it');
 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");
@@ -120,80 +124,49 @@ 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
-    );
+    my $itemtypes = GetItemTypes( style => 'array' );
 
     $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 funds";
+    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;
 
@@ -201,26 +174,14 @@ 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;
 
@@ -240,13 +201,12 @@ else {
 
     $template->param(
         booksellers   => $booksellers,
-        CGIItemType   => $CGIItemTypes,
-        CGIBudget     => $CGIBudget,
+        itemtypes     => $itemtypes,
+        Budgets       => $Budgets,
         hassort1      => $hassort1,
         hassort2      => $hassort2,
-        CGISort1      => $CGISort1,
-        CGISort2      => $CGISort2,
-        CGIextChoice  => $CGIextChoice,
+        Sort1         => $Sort1,
+        Sort2         => $Sort2,
         CGIsepChoice  => $CGIsepChoice,
         branches      => \@branches,
         ccode_label   => $ccode_label,
@@ -286,7 +246,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;
@@ -323,7 +284,7 @@ sub calculate {
             } elsif ( $rodsp == 3 ) {
                 $field{$a} = "Year($a)";
             } else {
-                field{$a} = $a;
+                $field{$a} = $a;
             }
         }
         elsif ( $_ =~ /bookseller/ ) {