Bug 23271: Replace search_limited with search_with_library_limits
[srvgit] / reports / cat_issues_top.pl
index 08b1852..ee0c092 100755 (executable)
@@ -18,8 +18,7 @@
 # You should have received a copy of the GNU General Public License
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
-#use warnings; FIXME - Bug 2505
+use Modern::Perl;
 use C4::Auth;
 use CGI qw ( -utf8 );
 use C4::Context;
@@ -29,6 +28,7 @@ use C4::Circulation;
 use C4::Reports;
 use C4::Members;
 use Koha::DateUtils;
+use Koha::ItemTypes;
 
 =head1 NAME
 
@@ -38,7 +38,7 @@ plugin that shows a stats on borrowers
 
 =cut
 
-my $input = new CGI;
+my $input = CGI->new;
 my $do_it=$input->param('do_it');
 my $fullreportname = "reports/cat_issues_top.tt";
 my $limit = $input->param("Limit");
@@ -55,7 +55,6 @@ my ($template, $borrowernumber, $cookie)
     = get_template_and_user({template_name => $fullreportname,
                 query => $input,
                 type => "intranet",
-                authnotrequired => 0,
                 flagsrequired => { reports => '*'},
                 debug => 1,
                 });
@@ -93,39 +92,21 @@ if ($do_it) {
             print $line->{rowtitle}.$sep;
             foreach my $cell (@$x) {
                 print $cell->{value}.$sep;
+                print $cell->{count} // '';
             }
-            print $line->{totalrow};
             print "\n";
         }
-# footer
-        print "TOTAL";
-        $cols = @$results[0]->{loopfooter};
-        foreach my $col ( @$cols ) {
-            print $sep.$col->{totalcol};
-        }
-        print $sep.@$results[0]->{total};
         exit;
     }
 # Displaying choices
 } else {
     my $dbh = C4::Context->dbh;
-    my @values;
-    my %labels;
-    my %select;
-    my $req;
     
     my $CGIextChoice = ( 'CSV' ); # FIXME translation
     my $CGIsepChoice=GetDelimiterChoices;
 
     #doctype
-    my $itemtypes = GetItemTypes;
-    my @itemtypeloop;
-    foreach my $thisitemtype ( sort {$itemtypes->{$a}->{translated_description} cmp $itemtypes->{$b}->{translated_description}} keys %$itemtypes) {
-            my %row =(value => $thisitemtype,
-                      description => $itemtypes->{$thisitemtype}->{translated_description},
-                            );
-            push @itemtypeloop, \%row;
-    }
+    my $itemtypes = Koha::ItemTypes->search_with_localization;
 
     #ccode
     my $ccodes = GetAuthorisedValues('CCODE');
@@ -151,12 +132,12 @@ if ($do_it) {
 
     @shelvinglocloop = sort {$a->{value} cmp $b->{value}} @shelvinglocloop;
 
-    my $patron_categories = Koha::Patron::Categories->search_limited({}, {order_by => ['categorycode']});
+    my $patron_categories = Koha::Patron::Categories->search_with_library_limits({}, {order_by => ['categorycode']});
 
     $template->param(
                     CGIextChoice => $CGIextChoice,
                     CGIsepChoice => $CGIsepChoice,
-                    itemtypeloop =>\@itemtypeloop,
+                    itemtypes => $itemtypes,
                     ccodeloop =>\@ccodeloop,
                     shelvinglocloop =>\@shelvinglocloop,
                     patron_categories => $patron_categories,
@@ -170,9 +151,7 @@ output_html_with_http_headers $input, $cookie, $template->output;
 sub calculate {
     my ($line, $column, $filters) = @_;
     my @mainloop;
-    my @loopfooter;
     my @loopcol;
-    my @loopline;
     my @looprow;
     my %globalline;
     my $grantotal =0;
@@ -215,14 +194,14 @@ sub calculate {
     my $colfield;
     my $colorder;
     if ($column){
-        $column = "old_issues.".$column if (($column=~/branchcode/) or ($column=~/timestamp/));
+        $column = "old_issues.".$column if (($column=~/branchcode/) or ($column=~/issuedate/));
         if($column=~/itemtype/){
             $column = C4::Context->preference('item-level_itypes') ? "items.itype": "biblioitems.itemtype";
         }
         $column = "borrowers.".$column if $column=~/categorycode/;
         my @colfilter ;
-        $colfilter[0] = @$filters[0] if ($column =~ /timestamp/ )  ;
-        $colfilter[1] = @$filters[1] if ($column =~ /timestamp/ )  ;
+        $colfilter[0] = @$filters[0] if ($column =~ /issuedate/ )  ;
+        $colfilter[1] = @$filters[1] if ($column =~ /issuedate/ )  ;
         $colfilter[0] = @$filters[2] if ($column =~ /returndate/ )  ;
         $colfilter[1] = @$filters[3] if ($column =~ /returndate/ )  ;
         $colfilter[0] = @$filters[4] if ($column =~ /branch/ )  ;
@@ -233,25 +212,25 @@ sub calculate {
         $colfilter[0] = @$filters[8] if ($column =~ /category/ )  ;
       # This commented out row (sort2) was not removed when adding new filters for ccode, shelving location and call number
       # $colfilter[0] = @$filters[11] if ($column =~ /sort2/ ) ;
-        $colfilter[0] = @$filters[9] if ($column =~ /timestamp/ ) ;
-        $colfilter[0] = @$filters[10] if ($column =~ /timestamp/ ) ;
-        $colfilter[0] = @$filters[11] if ($column =~ /timestamp/ ) ;
+        $colfilter[0] = @$filters[9] if ($column =~ /issuedate/ ) ;
+        $colfilter[0] = @$filters[10] if ($column =~ /issuedate/ ) ;
+        $colfilter[0] = @$filters[11] if ($column =~ /issuedate/ ) ;
     #warn "filtre col ".$colfilter[0]." ".$colfilter[1];
                                                 
     # loop cols.
         if ($column eq "Day") {
             #Display by day
-            $column = "old_issues.timestamp";
+            $column = "old_issues.issuedate";
             $colfield .="dayname($column)";  
             $colorder .="weekday($column)";
         } elsif ($column eq "Month") {
             #Display by Month
-            $column = "old_issues.timestamp";
+            $column = "old_issues.issuedate";
             $colfield .="monthname($column)";  
             $colorder .="month($column)";  
         } elsif ($column eq "Year") {
             #Display by Year
-            $column = "old_issues.timestamp";
+            $column = "old_issues.issuedate";
             $colfield .="Year($column)";
             $colorder .= $column;
         } else {
@@ -266,7 +245,7 @@ sub calculate {
                      LEFT JOIN items ON old_issues.itemnumber=items.itemnumber 
                      LEFT JOIN biblioitems  ON biblioitems.biblioitemnumber=items.biblioitemnumber 
                      WHERE 1";
-        if (($column=~/timestamp/) or ($column=~/returndate/)){
+        if (($column=~/issuedate/) or ($column=~/returndate/)){
             if ($colfilter[1] and ($colfilter[0])){
                 $strsth2 .= " and $column between '$colfilter[0]' and '$colfilter[1]' " ;
             } elsif ($colfilter[1]) {
@@ -332,9 +311,9 @@ sub calculate {
                   WHERE 1";
 
     @$filters[0]=~ s/\*/%/g if (@$filters[0]);
-    $strcalc .= " AND old_issues.timestamp > '" . @$filters[0] ."'" if ( @$filters[0] );
+    $strcalc .= " AND old_issues.issuedate > '" . @$filters[0] ."'" if ( @$filters[0] );
     @$filters[1]=~ s/\*/%/g if (@$filters[1]);
-    $strcalc .= " AND old_issues.timestamp < '" . @$filters[1] ."'" if ( @$filters[1] );
+    $strcalc .= " AND old_issues.issuedate < '" . @$filters[1] ."'" if ( @$filters[1] );
     @$filters[2]=~ s/\*/%/g if (@$filters[2]);
     $strcalc .= " AND old_issues.returndate > '" . @$filters[2] ."'" if ( @$filters[2] );
     @$filters[3]=~ s/\*/%/g if (@$filters[3]);
@@ -359,11 +338,11 @@ sub calculate {
     @$filters[9]=~ s/\*/%/g if (@$filters[9]);
     $strcalc .= " AND borrowers.categorycode like '" . @$filters[9] ."'" if ( @$filters[9] );
     @$filters[10]=~ s/\*/%/g if (@$filters[10]);
-    $strcalc .= " AND dayname(old_issues.timestamp) like '" . @$filters[10]."'" if (@$filters[10]);
+    $strcalc .= " AND dayname(old_issues.issuedate) like '" . @$filters[10]."'" if (@$filters[10]);
     @$filters[11]=~ s/\*/%/g if (@$filters[11]);
-    $strcalc .= " AND monthname(old_issues.timestamp) like '" . @$filters[11]."'" if (@$filters[11]);
+    $strcalc .= " AND monthname(old_issues.issuedate) like '" . @$filters[11]."'" if (@$filters[11]);
     @$filters[12]=~ s/\*/%/g if (@$filters[12]);
-    $strcalc .= " AND year(old_issues.timestamp) like '" . @$filters[12] ."'" if ( @$filters[12] );
+    $strcalc .= " AND year(old_issues.issuedate) like '" . @$filters[12] ."'" if ( @$filters[12] );
     
     $strcalc .= " group by biblio.biblionumber";
     $strcalc .= ", $colfield" if ($column);
@@ -372,7 +351,6 @@ sub calculate {
     
     my $dbcalc = $dbh->prepare($strcalc);
     $dbcalc->execute;
-    my $previous_col;
     my %indice;
     while (my  @data = $dbcalc->fetchrow) {
         my ($row, $rank, $id, $callnum, $ccode, $loc, $col )=@data;
@@ -422,7 +400,6 @@ sub calculate {
     $globalline{looprow} = \@looprow;
     $globalline{loopcol} = \@loopcol;
 #      # the foot (totals by borrower type)
-    $globalline{loopfooter} = \@loopfooter;
     $globalline{total}= $grantotal;
     $globalline{line} = $line;
     $globalline{column} = $column;