5 # Copyright 2000-2002 Katipo Communications
7 # This file is part of Koha.
9 # Koha is free software; you can redistribute it and/or modify it under the
10 # terms of the GNU General Public License as published by the Free Software
11 # Foundation; either version 2 of the License, or (at your option) any later
14 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
15 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
16 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License along with
19 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
20 # Suite 330, Boston, MA 02111-1307 USA
26 use vars qw($VERSION @ISA @EXPORT);
28 # set the version for version checking
33 C4::Stats - Update Koha statistics (log)
41 The C<&UpdateStats> function adds an entry to the statistics table in
42 the Koha database, which acts as an activity log.
51 @EXPORT = qw(&UpdateStats &statsreport &TotalOwing
52 &TotalPaid &getcharges &Getpaidbranch &unfilledreserves &getcredits &getinvoices);
56 &UpdateStats($env, $branch, $type, $value, $other, $itemnumber,
57 $itemtype, $borrowernumber);
59 Adds a line to the statistics table of the Koha database. In effect,
62 C<$branch>, C<$type>, C<$value>, C<$other>, C<$itemnumber>,
63 C<$itemtype>, and C<$borrowernumber> correspond to the fields of the
64 statistics table in the Koha database.
66 If C<$branch> is the empty string, the branch code will be taken from
67 C<$env-E<gt>{branchcode}>.
69 C<$env-E<gt>{usercode}> specifies the value of the C<usercode> field.
74 #module to insert stats data into stats table
75 my ($env,$branch,$type,$amount,$other,$itemnum,$itemtype,$borrowernumber,$accountno)=@_;
76 my $dbh = C4::Context->dbh;
77 $env=C4::Context->userenv unless $env;
79 $branch=$env->{'branchcode'};
81 my $user = C4::Context->userenv;
82 # print $borrowernumber;
83 my $userid=$user->{'cardnumber'} if $user;
84 # FIXME - Use $dbh->do() instead
85 my $sth=$dbh->prepare("Insert into statistics (datetime,branch,type,usercode,value,
86 other,itemnumber,itemtype,borrowernumber,proccode) values (now(),?,?,?,?,?,?,?,?,?)");
87 $sth->execute($branch,$type,$userid,$amount,$other,$itemnum,$itemtype,$borrowernumber,$accountno);
91 # Otherwise, it'd need a POD.
94 $time2=$time unless $time2;
95 my $dbh = C4::Context->dbh;
98 my $query="Select * from accountlines,borrowers where (accounttype = 'Pay' or accounttype='W')
99 and accountlines.borrowernumber = borrowers.borrowernumber";
101 if ($time eq 'today'){
102 $query .= " and date = now()";
104 $query.=" and date>=? and date<=?";
105 @bind = ($time,$time2);
111 $query.=" order by timestamp";
115 my $sth=$dbh->prepare($query);
118 $sth->execute(@bind);
121 while (my $data=$sth->fetchrow_hashref){
130 # Otherwise, it needs a POD.
132 my($borrowerno,$offset,$accountno)=@_;
133 my $dbh = C4::Context->dbh;
137 # getcharges is now taking accountno. as an argument
139 $sth=$dbh->prepare("Select * from accountlines where borrowernumber=?
140 and accountno = ? and amount>0");
141 $sth->execute($borrowerno,$offset);
143 # this bit left in for old 2 arg usage of getcharges
145 $sth=$dbh->prepare("Select * from accountlines where borrowernumber=?
147 $sth->execute($borrowerno,$accountno);
150 # print $query,"<br>";
153 while (my $data=$sth->fetchrow_hashref){
154 # if ($data->{'timestamp'} == $timestamp){
162 # Otherwise, it needs a POD.
164 my ($date,$date2)=@_;
165 my $dbh = C4::Context->dbh;
169 my $sth=$dbh->prepare("Select * from accountlines,borrowers where (( (accounttype <> 'Pay'))
170 and amount < 0 and accountlines.borrowernumber = borrowers.borrowernumber
171 and date >=? and date <=?)");
172 $sth->execute($date, $date2);
176 while (my $data=$sth->fetchrow_hashref){
184 my ($date,$date2)=@_;
185 my $dbh = C4::Context->dbh;
186 my $sth=$dbh->prepare("Select * from accountlines,borrowers where amount>0 and amountoutstanding > 0 and accountlines.borrowernumber = borrowers.borrowernumber
187 and (date >=? and date <=?)");
188 $sth->execute($date, $date2);
192 while (my $data=$sth->fetchrow_hashref){
200 # Otherwise, this needs a POD.
202 my($date,$borrno)=@_;
203 my $dbh = C4::Context->dbh;
204 my $sth=$dbh->prepare("select * from statistics where type='payment' and datetime >? and borrowernumber=?");
205 $sth->execute($date,$borrno);
207 my $data=$sth->fetchrow_hashref;
209 return($data->{'branch'});
212 # FIXME - This is only used in reservereport.pl and reservereport.xls,
213 # neither of which is used.
214 # Otherwise, it needs a POD.
215 sub unfilledreserves {
216 my $dbh = C4::Context->dbh;
221 my $sth=$dbh->prepare("select *,biblio.title from reserves,biblio,borrowers where (found <> '1' or found is NULL) and cancellationdate
222 is NULL and biblio.biblionumber=reserves.biblionumber and
223 reserves.borrowernumber=borrowers.borrowernumber
225 reserves.reservedate,biblio.title");
227 while (my $data=$sth->fetchrow_hashref){
232 return($i,\@results);
242 Koha Developement team <info@koha.org>