ffzg/recall_notices.pl: added --interval and --dedup
[koha.git] / reports / acquisitions_stats.pl
index 99a4aa3..d7dea6a 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,10 @@ 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
 
@@ -45,11 +46,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,19 +125,6 @@ else {
     $req->execute;
     my $booksellers = $req->fetchall_arrayref({});
 
-    $req = $dbh->prepare("SELECT DISTINCTROW itemtype,description FROM itemtypes ORDER BY description");
-    $req->execute;
-    my @iselect;
-    my %iselect;
-    while ( my ( $value, $desc ) = $req->fetchrow ) {
-        push @iselect, $value;
-        $iselect{$value} = $desc;
-    }
-    my $ItemTypes = {
-        values  => \@iselect,
-        labels  => \%iselect,
-   };
-
     $req = $dbh->prepare("SELECT DISTINCTROW budget_code, budget_name FROM aqbudgets ORDER BY budget_name");
     $req->execute;
     my @bselect;
@@ -192,13 +184,9 @@ else {
 
     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) {
@@ -206,9 +194,10 @@ else {
         $ccode_avlist = GetAuthorisedValues($ccode_subfield_structure->{authorised_value});
     }
 
+    my $itemtypes = Koha::ItemTypes->search_with_localization;
     $template->param(
         booksellers   => $booksellers,
-        ItemTypes     => $ItemTypes,
+        itemtypes     => $itemtypes, # FIXME Should use the TT plugin instead
         Budgets       => $Budgets,
         hassort1      => $hassort1,
         hassort2      => $hassort2,
@@ -253,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;
@@ -290,7 +280,7 @@ sub calculate {
             } elsif ( $rodsp == 3 ) {
                 $field{$a} = "Year($a)";
             } else {
-                field{$a} = $a;
+                $field{$a} = $a;
             }
         }
         elsif ( $_ =~ /bookseller/ ) {