Bug 10283: Hide "many items" on second tab when using OpacSeparateHoldings
[koha.git] / reports / issues_by_borrower_category.plugin
old mode 100644 (file)
new mode 100755 (executable)
index 608ae22..806ff7c
@@ -1,6 +1,5 @@
 #!/usr/bin/perl
 
-# $Id$
 
 # Copyright 2000-2002 Katipo Communications
 #
 # 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., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# 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.
 
 use strict;
 use C4::Auth;
 use CGI;
 use C4::Context;
-use HTML::Template;
 use C4::Search;
 use C4::Output;
 use C4::Koha;
+use C4::Members;
+
+use C4::Branch; # GetBranches
 
 =head1 NAME
 
@@ -61,27 +62,22 @@ the hashes are then translated to hash / arrays to be returned to manager.pl & s
 =cut
 
 sub set_parameters {
-       my ($template) = @_;
-       my $dbh = C4::Context->dbh;
-       my $branches=getbranches();
-       my @branches;
-       my @select_branch;
-       my %select_branches;
-       push @select_branch,"";
-       $select_branches{""} = "";
-       foreach my $branch (keys %$branches) {
-               push @select_branch, $branch;
-               $select_branches{$branch} = $branches->{$branch}->{'branchname'};
-       }
-       my $CGIbranch=CGI::scrolling_list( -name     => 'value',
-                               -id => 'value',
-                               -values   => \@select_branch,
-                               -labels   => \%select_branches,
-                               -size     => 1,
-                               -multiple => 0 );
-       $template->param(CGIbranch => $CGIbranch);
-       return $template;
+    my ($template) = @_;
+
+    $template->param( branchloop => GetBranchesLoop() );
+  
+    my ($codes,$labels)=GetborCatFromCatType(undef,undef);
+    my @borcatloop;
+    foreach my $thisborcat (sort keys %$labels) {
+        push @borcatloop, {
+                          value       => $thisborcat,
+                          description => $labels->{$thisborcat},
+                          };
+    }
+    $template->param(loopcategories => \@borcatloop);
+    return $template;
 }
+
 sub calculate {
        my ($parameters) = @_;
        my @results =();
@@ -100,71 +96,132 @@ sub calculate {
                $itemtypes{$itemtype}->{total} = 0;
        }
 # now, parse each category. Before filling the result array, fill it with 0 to have every itemtype column.
-       my $sth = $dbh->prepare("SELECT itemtype, count( * )
+       my $strsth="SELECT itemtype, count( * )
                                FROM issues, borrowers, biblioitems, items
                                WHERE issues.borrowernumber = borrowers.borrowernumber 
                                        AND items.itemnumber = issues.itemnumber 
                                        AND biblioitems.biblionumber = items.biblionumber 
-                                       AND borrowers.categorycode = ?
-                               GROUP BY biblioitems.itemtype");
+                                       AND borrowers.categorycode = ?";
+       $strsth.= " AND borrowers.branchcode = ".$dbh->quote($branch) if ($branch);
+       $strsth .= " GROUP BY biblioitems.itemtype";
+       my $sth = $dbh->prepare($strsth);
        my $sthcategories = $dbh->prepare("select categorycode,description from categories");
        $sthcategories->execute;
        my %borrowertype;
        my @categorycodeloop;
-       while (my ($categorycode,$description) = $sthcategories->fetchrow) {
-               $borrowertype{$categorycode}->{description} = $description;
-               $borrowertype{$categorycode}->{total} = 0;
-               my %categorycode;
-               $categorycode{categorycode} = $description;
-               push @categorycodeloop,\%categorycode;
-               foreach my $itemtype (keys %itemtypes) {
-                       $itemtypes{$itemtype}->{results}->{$categorycode} = 0;
-               }
-               $sth->execute($categorycode);
-               while (my ($itemtype, $total) = $sth->fetchrow) {
-                       $itemtypes{$itemtype}->{results}->{$categorycode} = $total;
-                       $borrowertype{$categorycode}->{total} += $total;
-                       $itemtypes{$itemtype}->{total} += $total;
-               }
-       }
-       my $grantotal = 0;
-# build the result
+       my $categorycode;
+       my $description;
+       my $borrower_categorycode =0;
        my @mainloop;
        my @itemtypeloop;
        my @loopborrowertype;
+       my @loopborrowertotal;
        my %globalline;
        my $hilighted=-1;
-       foreach my $itemtype (keys %itemtypes) {
-               my @loopitemtype;
-               foreach my $categorycode (keys %{$itemtypes{$itemtype}->{results}}) {
+       my $grantotal =0;
+       #If no Borrower-category selected....
+       # Print all 
+       if (!$borrower_category) {
+               while ( ($categorycode,$description) = $sthcategories->fetchrow) {
+                       $borrowertype{$categorycode}->{description} = $description;
+                       $borrowertype{$categorycode}->{total} = 0;
+                       my %categorycode;
+                       $categorycode{categorycode} = $description;
+                       push @categorycodeloop,\%categorycode;
+                       foreach my $itemtype (keys %itemtypes) {
+                               $itemtypes{$itemtype}->{results}->{$categorycode} = 0;
+                       }
+                       $sth->execute($categorycode);
+                       while (my ($itemtype, $total) = $sth->fetchrow) {
+                               $itemtypes{$itemtype}->{results}->{$categorycode} = $total;
+                               $borrowertype{$categorycode}->{total} += $total;
+                               $itemtypes{$itemtype}->{total} += $total;
+                               $grantotal += $total;
+                       }
+               }
+               # build the result
+               foreach my $itemtype (keys %itemtypes) {
+                       my @loopitemtype;
+                       $sthcategories->execute;
+                       while (($categorycode,$description) =  $sthcategories->fetchrow ) {
+                               my %cell;
+                               $cell{issues} = $itemtypes{$itemtype}->{results}->{$categorycode};
+                               #printf stderr "%s      ",$categorycode;
+                               push @loopitemtype,\%cell;
+                       }
+                       #printf stderr "\n";
+                       my %line;
+                       $line{loopitemtype} = \@loopitemtype;
+                       if ($itemtypes{$itemtype}->{description}) {
+                               $line{itemtype} = $itemtypes{$itemtype}->{description};
+                       } else {
+                               $line{itemtype} = "$itemtype (no entry in itemtype table)";
+                       }
+                       $line{hilighted} = 1 if $hilighted eq 1;
+                       $line{totalitemtype} = $itemtypes{$itemtype}->{total};
+                       $hilighted = -$hilighted;
+                       push @loopborrowertype, \%line;
+               }
+               $sthcategories->execute;
+               while (($categorycode,$description) =  $sthcategories->fetchrow ) {
+                       my %line;
+                       $line{issues} = $borrowertype{$categorycode}->{total};
+                       push @loopborrowertotal, \%line;
+               }
+       } else {
+               # A Borrower_category has been selected
+               # extracting corresponding data
+               $borrowertype{$categorycode}->{description} = $borrower_category;
+               $borrowertype{$categorycode}->{total} = 0;
+               while (($categorycode,$description) = $sthcategories->fetchrow) {
+                       if ($description =~ /$borrower_category/ ) {
+                               $borrower_categorycode = $categorycode;
+                               my %cc;
+                               $cc{categorycode} = $description;
+                               push @categorycodeloop,\%cc;
+                               foreach my $itemtype (keys %itemtypes) {
+                                       $itemtypes{$itemtype}->{results}->{$categorycode} = 0;
+                               }
+                               $sth->execute($categorycode);
+                               while (my ($itemtype, $total) = $sth->fetchrow) {
+                                       $itemtypes{$itemtype}->{results}->{$categorycode} = $total;
+                                       $borrowertype{$categorycode}->{total} += $total;
+                                       $itemtypes{$itemtype}->{total} += $total;
+                                       $grantotal +=$total;
+                               }
+                       }
+               }
+               # build the result
+               foreach my $itemtype (keys %itemtypes) {
+                       my @loopitemtype;
                        my %cell;
-                       $cell{issues} = $itemtypes{$itemtype}->{results}->{$categorycode};
-                       push @loopitemtype,\%cell;
+                       $cell{issues}=$itemtypes{$itemtype}->{results}->{$borrower_categorycode};
+                       push @loopitemtype, \%cell;
+                       my %line;
+                       $line{loopitemtype} = \@loopitemtype;
+                       if ($itemtypes{$itemtype}->{description}) {
+                               $line{itemtype} = $itemtypes{$itemtype}->{description};
+                       } else {
+                               $line{itemtype} = "$itemtype (no entry in itemtype table)";
+                       }
+                       $line{hilighted} = 1 if $hilighted eq 1;
+                       $line{totalitemtype} = $itemtypes{$itemtype}->{total};
+                       $hilighted = -$hilighted;
+                       push @loopborrowertype, \%line;
                }
-               my %line;
-               $line{loopitemtype} = \@loopitemtype;
-               $line{itemtype} = $itemtypes{$itemtype}->{description};
-               $line{hilighted} = 1 if $hilighted eq 1;
-               $line{totalitemtype} = $itemtypes{$itemtype}->{total};
-               $hilighted = -$hilighted;
-               push @loopborrowertype, \%line;
+               my %cell;
+               $cell{issues} = $borrowertype{$borrower_categorycode}->{total};
+               push @loopborrowertotal, \%cell;
        }
        # the header of the table
        $globalline{loopborrowertype} = \@loopborrowertype;
        # the core of the table
        $globalline{categorycodeloop} = \@categorycodeloop;
        # the foot (totals by borrower type)
-       my @loopborrowertotal;
-       foreach my $categorycode (keys %borrowertype) {
-               my %line;
-               $line{issues} = $borrowertype{$categorycode}->{total};
-               push @loopborrowertotal, \%line;
-       }
        $globalline{loopborrowertotal} = \@loopborrowertotal;
-#      $globalline{total} = $grantotal;
-#      $globalline{borrower_category} = $borrower_category;
+       $globalline{grantotal}= $grantotal;
        push @mainloop,\%globalline;
        return \@mainloop;
 }
 
-1;
\ No newline at end of file
+1;