X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=reports%2Fborrowers_out.pl;h=0502dc6676a11546b9816420c4c79235a882cd12;hb=12f9aa973d855fb1f058fdcbe68a0e84dfbd77ae;hp=6a31475030e7c2c163d83a034009a0f16bc89fc1;hpb=a5bd2403218b5add150088ab525b1f00e50a0c12;p=koha.git diff --git a/reports/borrowers_out.pl b/reports/borrowers_out.pl index 6a31475030..0502dc6676 100755 --- a/reports/borrowers_out.pl +++ b/reports/borrowers_out.pl @@ -1,7 +1,5 @@ #!/usr/bin/perl -# $Id$ - # Copyright 2000-2002 Katipo Communications # # This file is part of Koha. @@ -15,19 +13,22 @@ # 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 warnings; + use CGI; use C4::Auth; use C4::Context; use C4::Koha; use C4::Output; use C4::Circulation; +use C4::Reports; use C4::Members; -use C4::Date; +use C4::Dates qw/format_date_in_iso/; =head1 NAME @@ -45,21 +46,21 @@ my $fullreportname = "reports/borrowers_out.tmpl"; my $limit = $input->param("Limit"); my $column = $input->param("Criteria"); my @filters = $input->param("Filter"); +$filters[1] = format_date_in_iso($filters[1]) if $filters[1]; my $output = $input->param("output"); my $basename = $input->param("basename"); -my $mime = $input->param("MIME"); -my $del = $input->param("sep"); -#warn "calcul : ".$calc; +our $sep = $input->param("sep") || ''; +$sep = "\t" if ($sep eq 'tabulation'); my ($template, $borrowernumber, $cookie) = get_template_and_user({template_name => $fullreportname, query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => {reports => 1}, + flagsrequired => {reports => '*'}, debug => 1, }); $template->param(do_it => $do_it, - DHTMLcalendar_dateformat => get_date_format_string_for_DHTMLcalendar(), + DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), ); if ($do_it) { # Displaying results @@ -77,8 +78,6 @@ if ($do_it) { -filename=>"$basename.csv" ); my $cols = @$results[0]->{loopcol}; my $lines = @$results[0]->{looprow}; - my $sep; - $sep =C4::Context->preference("delimiter"); # header top-right print "num /". @$results[0]->{column} .$sep; # Other header @@ -91,9 +90,10 @@ if ($do_it) { my $x = $line->{loopcell}; print $line->{rowtitle}.$sep; foreach my $cell (@$x) { - print $cell->{value}.$sep; + my $cellvalue = defined $cell->{value} ? $cell->{value}.$sep : ''.$sep; + print $cellvalue; } - print $line->{totalrow}; +# print $line->{totalrow}; print "\n"; } # footer @@ -113,32 +113,19 @@ if ($do_it) { my %select; my $req; - my @mime = ( C4::Context->preference("MIME") ); -# foreach my $mime (@mime){ -# warn "".$mime; -# } - my $CGIextChoice=CGI::scrolling_list( -name => 'MIME', -id => 'MIME', - -values => \@mime, + -values => ['CSV'], # FIXME translation -size => 1, -multiple => 0 ); - my @dels = ( C4::Context->preference("delimiter") ); - my $CGIsepChoice=CGI::scrolling_list( - -name => 'sep', - -id => 'sep', - -values => \@dels, - -size => 1, - -multiple => 0 ); + my $CGIsepChoice = GetDelimiterChoices; my ($codes,$labels) = GetborCatFromCatType(undef,undef); my @borcatloop; foreach my $thisborcat (sort keys %$labels) { -# my $selected = 1 if $thisbranch eq $branch; my %row =(value => $thisborcat, -# selected => $selected, description => $labels->{$thisborcat}, ); push @borcatloop, \%row; @@ -152,8 +139,6 @@ output_html_with_http_headers $input, $cookie, $template->output; } - - sub calculate { my ($line, $column, $filters) = @_; my @mainloop; @@ -185,7 +170,7 @@ sub calculate { my $colfield; my $colorder; if ($column){ - $column = "borrowers.".$column if $column=~/categorycode/; + $column = "borrowers.".$column if $column=~/categorycode/ || $column=~/branchcode/; my @colfilter ; $colfilter[0] = @$filters[0] if ($column =~ /category/ ) ; # $colfilter[0] = @$filters[11] if ($column =~ /sort2/ ) ; @@ -196,20 +181,17 @@ sub calculate { $colorder .= $column; my $strsth2; - $strsth2 .= "select distinctrow $colfield FROM borrowers LEFT JOIN `issues` ON issues.borrowernumber=borrowers.borrowernumber"; + $strsth2 .= "select distinctrow $colfield FROM borrowers LEFT JOIN `old_issues` USING(borrowernumber)"; if ($colfilter[0]) { $colfilter[0] =~ s/\*/%/g; $strsth2 .= " and $column LIKE '$colfilter[0]' " ; } $strsth2 .=" group by $colfield"; $strsth2 .=" order by $colorder"; - warn "". $strsth2; + # warn "". $strsth2; my $sth2 = $dbh->prepare( $strsth2 ); $sth2->execute; - - - while (my ($celvalue) = $sth2->fetchrow) { my %cell; # my %ft; @@ -223,16 +205,16 @@ sub calculate { my $i=0; # my @totalcol; - my $hilighted=-1; #Initialization of cell values..... my @table; # warn "init table"; - for (my $i=1;$i<=$line;$i++) { - foreach my $col ( @loopcol ) { -# warn " init table : $row->{rowtitle} / $col->{coltitle} "; - $table[$i]->{($col->{coltitle})?$col->{coltitle}:"Global"}=0; + if($line) { + for (my $i=1;$i<=$line;$i++) { + foreach my $col ( @loopcol ) { + $table[$i]->{($col->{coltitle})?$col->{coltitle}:"Global"}=0; + } } } @@ -247,52 +229,40 @@ sub calculate { $strcalc .= "WHERE 1 "; @$filters[0]=~ s/\*/%/g if (@$filters[0]); $strcalc .= " AND borrowers.categorycode like '" . @$filters[0] ."'" if ( @$filters[0] ); + my $strqueryfilter = "SELECT DISTINCT borrowernumber FROM old_issues WHERE borrowernumber IS NOT NULL "; if (@$filters[1]){ - my $strqueryfilter="SELECT DISTINCT borrowernumber FROM issues where issues.timestamp> @$filters[1] "; - my $queryfilter = $dbh->prepare("SELECT DISTINCT borrowernumber FROM issues where issues.timestamp> ".format_date_in_iso(@$filters[1])); - $strcalc .= " AND borrowers.borrowernumber not in ($strqueryfilter)"; - -# $queryfilter->execute(@$filters[1]); -# while (my ($borrowernumber)=$queryfilter->fetchrow){ -# $strcalc .= " AND borrowers.borrowernumber <> $borrowernumber "; -# } - } else { - my $strqueryfilter="SELECT DISTINCT borrowernumber FROM issues "; - my $queryfilter = $dbh->prepare("SELECT DISTINCT borrowernumber FROM issues "); - $queryfilter->execute; - $strcalc .= " AND borrowers.borrowernumber not in ($strqueryfilter)"; -# while (my ($borrowernumber)=$queryfilter->fetchrow){ -# $strcalc .= " AND borrowers.borrowernumber <> $borrowernumber "; -# } + my $strqueryfilter .= "AND old_issues.timestamp> @$filters[1] "; } + $strcalc .= " AND borrowers.borrowernumber not in ($strqueryfilter)"; $strcalc .= " group by borrowers.borrowernumber"; $strcalc .= ", $colfield" if ($column); $strcalc .= " order by $colfield " if ($colfield); my $max; - if (@loopcol) { - $max = $line*@loopcol; - } else { $max=$line;} - $strcalc .= " LIMIT 0,$max" if ($line); - warn "SQL :". $strcalc; + if ($line) { + if (@loopcol) { + $max = $line*@loopcol; + } else { $max=$line;} + $strcalc .= " LIMIT 0,$max"; + } my $dbcalc = $dbh->prepare($strcalc); $dbcalc->execute; # warn "filling table"; my $previous_col; - my $i=1; + $i=1; while (my @data = $dbcalc->fetchrow) { my ($row, $col )=@data; - $col = "zzEMPTY" if ($col eq undef); + $col = "zzEMPTY" if (!defined($col)); $i=1 if (($previous_col) and not($col eq $previous_col)); $table[$i]->{$col}=$row; -# warn " ".$i." ".$col. " ".$row; +# warn " $i $col $row"; $i++; $previous_col=$col; } push @loopcol,{coltitle => "Global"} if not($column); - my $max =(($line)?$line:@table -1); + $max =(($line)?$line:@table -1); for ($i=1; $i<=$max;$i++) { my @loopcell; #@loopcol ensures the order for columns is common with column titles @@ -309,9 +279,7 @@ sub calculate { } push @looprow,{ 'rowtitle' => $i , 'loopcell' => \@loopcell, - 'hilighted' => ($hilighted >0), }; - $hilighted = -$hilighted; } @@ -331,3 +299,4 @@ sub calculate { } 1; +__END__