X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FStats.pm;h=11710f82a775d184c4de45f74d433cd76dbbff9d;hb=763d69732e518272b8537ce3d3f781b84370b4da;hp=7190d204220dafe5cf290d0a7014cf5041e5ac10;hpb=2ffd5b7228f4e638583162d483e1dd2febeafe1b;p=koha_gimpoz diff --git a/C4/Stats.pm b/C4/Stats.pm index 7190d20422..11710f82a7 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -1,6 +1,5 @@ package C4::Stats; -# $Id$ # Copyright 2000-2002 Katipo Communications # @@ -15,20 +14,29 @@ package C4::Stats; # 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; require Exporter; -use DBI; use C4::Context; +use C4::Debug; use vars qw($VERSION @ISA @EXPORT); -# set the version for version checking -$VERSION = $VERSION = do { my @v = '$Revision$' =~ /\d+/g; - shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); -}; +our $debug; + +BEGIN { + # set the version for version checking + $VERSION = 3.01; + @ISA = qw(Exporter); + @EXPORT = qw( + &UpdateStats + &TotalPaid + ); +} + =head1 NAME @@ -47,16 +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 - getrefunds); - =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, @@ -66,11 +67,6 @@ 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 #' @@ -78,29 +74,23 @@ sub UpdateStats { #module to insert stats data into stats table my ( - $env, $branch, $type, + $branch, $type, $amount, $other, $itemnum, $itemtype, $borrowernumber, $accountno ) = @_; my $dbh = C4::Context->dbh; - if ( $branch eq '' ) { - $branch = $env->{'branchcode'}; - } - my $user = $env->{'usercode'}; - my $organisation = $env->{'organisation'}; - - # FIXME - Use $dbh->do() instead my $sth = $dbh->prepare( - "Insert into statistics (datetime,branch,type,usercode,value, - other,itemnumber,itemtype,borrowernumber,proccode,associatedborrower) values (now(),?,?,?,?,?,?,?,?,?,?)" + "INSERT INTO statistics + (datetime, branch, type, value, + other, itemnumber, itemtype, borrowernumber, proccode) + VALUES (now(),?,?,?,?,?,?,?,?)" ); $sth->execute( - $branch, $type, $user, $amount, + $branch, $type, $amount, $other, $itemnum, $itemtype, $borrowernumber, - $accountno, $organisation + $accountno ); - $sth->finish; } # Otherwise, it'd need a POD. @@ -108,180 +98,24 @@ sub TotalPaid { my ( $time, $time2, $spreadsheet ) = @_; $time2 = $time unless $time2; my $dbh = C4::Context->dbh; - my $query = "SELECT * FROM statistics,borrowers - WHERE statistics.borrowernumber= borrowers.borrowernumber - AND (statistics.type='payment' OR statistics.type='writeoff') "; + 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'"; + $query .= " AND datetime = now()"; + } else { + $query .= " AND datetime > '$time'"; # FIXME: use placeholders } if ( $time2 ne '' ) { - $query .= " AND datetime < '$time2'"; + $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(); - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - push @results, $data; - } - $sth->finish; - 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 = $dbh->prepare( -"Select * from accountlines,borrowers where (((accounttype = 'LR') or (accounttype <> 'Pay')) - and amount < 0 and accountlines.borrowernumber = borrowers.borrowernumber - and timestamp >=? and timestamp execute( $timestamp, $timestamp2 ); - - my $i = 0; - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - $results[$i] = $data; - $i++; - } - return (@results); -} - -sub getrefunds { - 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 = $dbh->prepare( -"Select * from accountlines,borrowers where (accounttype = 'REF' - and accountlines.borrowernumber = borrowers.borrowernumber - and timestamp >=? and timestamp execute( $timestamp, $timestamp2 ); - - my @results; - while ( my $data = $sth->fetchrow_hashref ) { - push @results, $data; - } - 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' or - found is NULL) 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' or found is NULL) 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 ); + return @{$sth->fetchall_arrayref({})}; } 1; @@ -291,7 +125,7 @@ __END__ =head1 AUTHOR -Koha Developement team +Koha Development Team =cut