X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FStats.pm;h=0afd810d4f5ca86af6c5b9dab54977b54a93bcde;hb=83d8e095aef7275df4bf94f427612dccc84fbdc3;hp=df504e3d66766606da6f2855d7b4c86ceb7d6094;hpb=e295b51570fb013f8926b6819f200b9b93c10c47;p=koha.git diff --git a/C4/Stats.pm b/C4/Stats.pm index df504e3d66..0afd810d4f 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -1,247 +1,132 @@ -package C4::Stats; #asummes C4/Stats - -#requires DBI.pm to be installed -#uses DBD:Pg +package C4::Stats; + + +# Copyright 2000-2002 Katipo Communications +# +# 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 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., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA use strict; require Exporter; -use DBI; -use C4::Database; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); - -# set the version for version checking -$VERSION = 0.01; - -@ISA = qw(Exporter); -@EXPORT = qw(&UpdateStats &statsreport &Count &Overdues &TotalOwing -&TotalPaid &getcharges &Getpaidbranch &unfilledreserves); -%EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], +use C4::Context; +use vars qw($VERSION @ISA @EXPORT); + +BEGIN { + # set the version for version checking + $VERSION = 3.01; + @ISA = qw(Exporter); + @EXPORT = qw( + &UpdateStats + &TotalPaid + ); +} -# your exported package globals go here, -# as well as any optionally exported functions -@EXPORT_OK = qw($Var1 %Hashit); +=head1 NAME +C4::Stats - Update Koha statistics (log) -# non-exported package globals go here -use vars qw(@more $stuff); +=head1 SYNOPSIS -# initalize package globals, first exported ones + use C4::Stats; -my $Var1 = ''; -my %Hashit = (); +=head1 DESCRIPTION +The C<&UpdateStats> function adds an entry to the statistics table in +the Koha database, which acts as an activity log. -# then the others (which are still accessible as $Some::Module::stuff) -my $stuff = ''; -my @more = (); +=head1 FUNCTIONS -# all file-scoped lexicals must be created before -# the functions below that use them. +=over 2 -# file-private lexicals go here -my $priv_var = ''; -my %secret_hash = (); +=item UpdateStats -# here's a file-private function as a closure, -# callable as &$priv_func; it cannot be prototyped. -my $priv_func = sub { - # stuff goes here. - }; - -# make all your functions, whether exported or not; + &UpdateStats($branch, $type, $value, $other, $itemnumber, + $itemtype, $borrowernumber); -sub UpdateStats { - #module to insert stats data into stats table - my ($env,$branch,$type,$amount,$other,$itemnum,$itemtype,$borrowernumber)=@_; - my $dbh=C4Connect(); - my $branch=$env->{'branchcode'}; - my $user = $env->{'usercode'}; - print $borrowernumber; - my $sth=$dbh->prepare("Insert into statistics - (datetime,branch,type,usercode,value, - other,itemnumber,itemtype,borrowernumber) - values (now(),'$branch','$type','$user','$amount', - '$other','$itemnum','$itemtype','$borrowernumber')"); - $sth->execute; - $sth->finish; - $dbh->disconnect; -} +Adds a line to the statistics table of the Koha database. In effect, +it logs an event. -sub statsreport { - #module to return a list of stats for a given day,time,branch type - #or to return search stats - my ($type,$time)=@_; - my @data; -# print "here"; -# if ($type eq 'issue'){ - @data=circrep($time,$type); -# } - return(@data); -} +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. -sub circrep { - my ($time,$type)=@_; - my $dbh=C4Connect; - my $query="Select * from statistics"; - if ($time eq 'today'){ - $query=$query." where type='$type' and datetime - >=datetime('yesterday'::date)"; - } - my $sth=$dbh->prepare($query); - $sth->execute; - my $i=0; - my @results; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]="$data->{'datetime'}\t$data->{'branch'}"; - $i++; - } - $sth->finish; -# print $query; - $dbh->disconnect; - return(@results); +=cut -} +#' +sub UpdateStats { -sub Count { - my ($type,$branch,$time,$time2)=@_; - my $dbh=C4Connect; - my $query="Select count(*) from statistics where type='$type'"; - $query.=" and datetime >= '$time' and datetime< '$time2' and branch='$branch'"; - my $sth=$dbh->prepare($query); - $sth->execute; - my $data=$sth->fetchrow_hashref; - $sth->finish; -# print $query; - $dbh->disconnect; - return($data->{'count(*)'}); + #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 + ); + $sth->finish; } -sub Overdues{ - my $dbh=C4Connect; - my $query="Select count(*) from issues where date_due >= now()"; - my $sth=$dbh->prepare($query); - $sth->execute; - my $count=$sth->fetchrow_hashref; - $sth->finish; - $dbh->disconnect; - return($count->{'count(*)'}); +# Otherwise, it'd need a POD. +sub TotalPaid { + 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 = $query . " AND datetime = now()"; + } + else { + $query .= " AND datetime > '$time'"; + } + if ( $time2 ne '' ) { + $query .= " AND datetime < '$time2'"; + } + if ($spreadsheet) { + $query .= " ORDER BY branch, type"; + } + my $sth = $dbh->prepare($query); +warn $query; + $sth->execute(); + my @results; + while ( my $data = $sth->fetchrow_hashref ) { + push @results, $data; + } + $sth->finish; + return (@results); } -sub TotalOwing{ - my ($type)=@_; - my $dbh=C4Connect; - my $query="Select sum(amountoutstanding) from accountlines"; - if ($type eq 'fine'){ - $query=$query." where accounttype='F' or accounttype='FN'"; - } - my $sth=$dbh->prepare($query); -# print $query; - $sth->execute; - my $total=$sth->fetchrow_hashref; - $sth->finish; - $dbh->disconnect; - return($total->{'sum(amountoutstanding)'}); -} +1; +__END__ -sub TotalPaid { - my ($time)=@_; - my $dbh=C4Connect; - 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; - my @results; - my $i=0; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]=$data; - $i++; - } - $sth->finish; - $dbh->disconnect; -# print $query; - return(@results); -} +=back -sub getcharges{ - my($borrowerno,$timestamp)=@_; - my $dbh=C4Connect; - my $timestamp2=$timestamp-1; - my $query="Select * from accountlines where borrowernumber=$borrowerno - and timestamp = '$timestamp' and accounttype <> 'Pay' and - accounttype <> 'W'"; - my $sth=$dbh->prepare($query); - print $query,"
"; - $sth->execute; - my $i=0; - my @results; - while (my $data=$sth->fetchrow_hashref){ -# if ($data->{'timestamp'} == $timestamp){ - $results[$i]=$data; - $i++; -# } - } - $dbh->disconnect; - return(@results); -} +=head1 AUTHOR -sub Getpaidbranch{ - my($date)=@_; - my $dbh=C4Connect; - my $query="select * from statistics where type='payment' and datetime='$date'"; - my $sth=$dbh->prepare($query); - $sth->execute; -# print $query; - my $data=$sth->fetchrow_hashref; - $sth->finish; - $dbh->disconnect; - return($data->{'branch'}); -} +Koha Developement team -sub unfilledreserves { - my $dbh=C4Connect; - my $query="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"; - my $sth=$dbh->prepare($query); - $sth->execute; - my $i=0; - my @results; - while (my $data=$sth->fetchrow_hashref){ - $results[$i]=$data; - $i++; - } - $sth->finish; - $query="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=$dbh->prepare($query); - $sth->execute; - while (my $data=$sth->fetchrow_hashref){ - @results[$i]=$data; - $i++; - } - $sth->finish; - $dbh->disconnect; - return($i,\@results); -} +=cut -END { } # module clean-up code here (global destructor) - -