X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FStats.pm;h=77d5d1442b70a3c55a15bfe19c6ab03cb00aa50a;hb=595c05628d55b34867c1e7eddd88e74c6aff426c;hp=185428db43c517d1e46e0b8e642c4873142e92f2;hpb=621e60b86ec3a53965649047c7bd00607f06c870;p=koha.git diff --git a/C4/Stats.pm b/C4/Stats.pm index 185428db43..77d5d1442b 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -1,6 +1,5 @@ package C4::Stats; -# $Id$ # Copyright 2000-2002 Katipo Communications # @@ -20,13 +19,24 @@ package C4::Stats; # Suite 330, Boston, MA 02111-1307 USA use strict; +#use warnings; # FIXME require Exporter; -use DBI; use C4::Context; +use C4::Debug; use vars qw($VERSION @ISA @EXPORT); -# set the version for version checking -$VERSION = 0.01; +our $debug; + +BEGIN { + # set the version for version checking + $VERSION = 3.01; + @ISA = qw(Exporter); + @EXPORT = qw( + &UpdateStats + &TotalPaid + ); +} + =head1 NAME @@ -45,15 +55,9 @@ the Koha database, which acts as an activity log. =over 2 -=cut - -@ISA = qw(Exporter); -@EXPORT = qw(&UpdateStats &statsreport &TotalOwing -&TotalPaid &getcharges &Getpaidbranch &unfilledreserves &getcredits); - =item UpdateStats - &UpdateStats($env, $branch, $type, $value, $other, $itemnumber, + &UpdateStats($branch, $type, $value, $other, $itemnumber, $itemtype, $borrowernumber); Adds a line to the statistics table of the Koha database. In effect, @@ -63,183 +67,55 @@ C<$branch>, C<$type>, C<$value>, C<$other>, C<$itemnumber>, C<$itemtype>, and C<$borrowernumber> correspond to the fields of the statistics table in the Koha database. -If C<$branch> is the empty string, the branch code will be taken from -C<$env-E{branchcode}>. - -C<$env-E{usercode}> specifies the value of the C field. - =cut + #' sub UpdateStats { - #module to insert stats data into stats table - my ($env,$branch,$type,$amount,$other,$itemnum,$itemtype,$borrowernumber,$accountno)=@_; - my $dbh = C4::Context->dbh; - if ($branch eq ''){ - $branch=$env->{'branchcode'}; - } - my $user = $env->{'usercode'}; - print $borrowernumber; - # FIXME - Use $dbh->do() instead - my $sth=$dbh->prepare("Insert into statistics (datetime,branch,type,usercode,value, - other,itemnumber,itemtype,borrowernumber,proccode) values (now(),?,?,?,?,?,?,?,?,?)"); - $sth->execute($branch,$type,$user,$amount,$other,$itemnum,$itemtype,$borrowernumber,$accountno); - $sth->finish; + + #module to insert stats data into stats table + my ( + $branch, $type, + $amount, $other, $itemnum, + $itemtype, $borrowernumber, $accountno + ) + = @_; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare( + "INSERT INTO statistics + (datetime, branch, type, value, + other, itemnumber, itemtype, borrowernumber, proccode) + VALUES (now(),?,?,?,?,?,?,?,?)" + ); + $sth->execute( + $branch, $type, $amount, + $other, $itemnum, $itemtype, $borrowernumber, + $accountno + ); } # Otherwise, it'd need a POD. sub TotalPaid { - my ($time,$time2)=@_; - $time2=$time unless $time2; - my $dbh = C4::Context->dbh; - - - #my $query="Select * from accountlines,borrowers where (accounttype = 'Pay' or accounttype ='W') - # and accountlines.borrowernumber = borrowers.borrowernumber"; - #my @bind = (); - #if ($time eq 'today'){ - # $query .= " and date = now()"; - #} else { - # $query.=" and date>=? and date<=?"; - # @bind = ($time,$time2); - #} - - my $query="Select * from statistics,borrowers - where statistics.borrowernumber= borrowers.borrowernumber - and (statistics.type='payment' or statistics.type='writeoff') "; - if ($time eq 'today'){ - $query=$query." and datetime = now()"; - } else { - $query.=" and datetime > '$time'"; - } - - - # $query.=" order by timestamp"; - - # print $query; - - my $sth=$dbh->prepare($query); - - $sth->execute(); - # $sth->execute(@bind); - my @results; - my $i=0; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]=$data; - $i++; - } - $sth->finish; - # print $query; - return(@results); -} - -# Otherwise, it needs a POD. -sub getcharges{ - my($borrowerno,$timestamp,$accountno)=@_; - my $dbh = C4::Context->dbh; - my $timestamp2=$timestamp-1; - my $query=""; - my $sth; - - # getcharges is now taking accountno. as an argument - if ($accountno){ - $sth=$dbh->prepare("Select * from accountlines where borrowernumber=? - and accountno = ?"); - $sth->execute($borrowerno,$accountno); - - # this bit left in for old 2 arg usage of getcharges - } else { - $sth=$dbh->prepare("Select * from accountlines where borrowernumber=? - and timestamp = ? and accounttype <> 'Pay' and - accounttype <> 'W'"); - $sth->execute($borrowerno,$timestamp); - } - - # print $query,"
"; - my $i=0; - my @results; - while (my $data=$sth->fetchrow_hashref){ - # if ($data->{'timestamp'} == $timestamp){ - $results[$i]=$data; - $i++; - # } - } - return(@results); -} - -# Otherwise, it needs a POD. -sub getcredits{ - my ($date,$date2)=@_; - my $dbh = C4::Context->dbh; - - #takes date converts to timestamps - my $padding="000000"; - (my $a, my $b, my $c) = unpack("A4 x1 A2 x1 A2", $date); - (my $x, my $y, my $z) = unpack("A4 x1 A2 x1 A2", $date2); - my $timestamp = $a.$b.$c.$padding; - my $timestamp2 = $x.$y.$z.$padding; - - my $sth; - - $sth=$dbh->prepare("Select * from accountlines where (accounttype = 'CR' or accounttype = 'LR') and timestamp >=? and timestamp execute($timestamp,$timestamp2); - - my $i=0; - my @results; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]=$data; - $i++; - } - return(@results); -} - - - -# Otherwise, this needs a POD. -sub Getpaidbranch{ - my($date,$borrno)=@_; - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select * from statistics where type='payment' and datetime >? and borrowernumber=?"); - $sth->execute($date,$borrno); - # print $query; - my $data=$sth->fetchrow_hashref; - $sth->finish; - return($data->{'branch'}); -} - -# FIXME - This is only used in reservereport.pl and reservereport.xls, -# neither of which is used. -# Otherwise, it needs a POD. -sub unfilledreserves { - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select *,biblio.title from reserves,reserveconstraints,biblio,borrowers,biblioitems where found <> 'F' and cancellationdate - is NULL and biblio.biblionumber=reserves.biblionumber and - reserves.constrainttype='o' - and (reserves.biblionumber=reserveconstraints.biblionumber - and reserves.borrowernumber=reserveconstraints.borrowernumber) - and - reserves.borrowernumber=borrowers.borrowernumber and - biblioitems.biblioitemnumber=reserveconstraints.biblioitemnumber order by - biblio.title,reserves.reservedate"); - $sth->execute; - my $i=0; - my @results; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]=$data; - $i++; - } - $sth->finish; - $sth=$dbh->prepare("select *,biblio.title from reserves,biblio,borrowers where found <> 'F' and cancellationdate - is NULL and biblio.biblionumber=reserves.biblionumber and reserves.constrainttype='a' and - reserves.borrowernumber=borrowers.borrowernumber - order by - biblio.title,reserves.reservedate"); - $sth->execute; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]=$data; - $i++; - } - $sth->finish; - return($i,\@results); + my ( $time, $time2, $spreadsheet ) = @_; + $time2 = $time unless $time2; + my $dbh = C4::Context->dbh; + my $query = "SELECT * FROM statistics + LEFT JOIN borrowers ON statistics.borrowernumber= borrowers.borrowernumber + WHERE (statistics.type='payment' OR statistics.type='writeoff') "; + if ( $time eq 'today' ) { + $query .= " AND datetime = now()"; + } else { + $query .= " AND datetime > '$time'"; # FIXME: use placeholders + } + if ( $time2 ne '' ) { + $query .= " AND datetime < '$time2'"; # FIXME: use placeholders + } + if ($spreadsheet) { + $query .= " ORDER BY branch, type"; + } + $debug and warn "TotalPaid query: $query"; + my $sth = $dbh->prepare($query); + $sth->execute(); + return @{$sth->fetchall_arrayref({})}; } 1;