Fixed bug #358
[koha.git] / stats.pl
1 #!/usr/bin/perl
2
3 # $Id$
4
5 #written 14/1/2000
6 #script to display reports
7
8
9 # Copyright 2000-2002 Katipo Communications
10 #
11 # This file is part of Koha.
12 #
13 # Koha is free software; you can redistribute it and/or modify it under the
14 # terms of the GNU General Public License as published by the Free Software
15 # Foundation; either version 2 of the License, or (at your option) any later
16 # version.
17 #
18 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
19 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
20 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
21 #
22 # You should have received a copy of the GNU General Public License along with
23 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
24 # Suite 330, Boston, MA  02111-1307 USA
25
26 use strict;
27 use CGI;
28 use C4::Output;
29 use HTML::Template;
30 use C4::Auth;
31 use C4::Interface::CGI::Output;
32 use C4::Context;
33 use Date::Manip;
34 use C4::Stats;
35
36 my $input=new CGI;
37 my $time=$input->param('time');
38
39 my ($template, $loggedinuser, $cookie)
40     = get_template_and_user({template_name => "stats.tmpl",
41                              query => $input,
42                              type => "intranet",
43                              authnotrequired => 0,
44                              flagsrequired => {borrowers => 1},
45                              debug => 1,
46                              });
47
48 my $date;
49 my $date2;
50 if ($time eq 'yesterday'){
51   $date=ParseDate('yesterday');
52   $date2=ParseDate('today');
53 }
54 if ($time eq 'today'){
55   $date=ParseDate('today');
56   $date2=ParseDate('tomorrow');
57 }
58 if ($time eq 'daybefore'){
59   $date=ParseDate('2 days ago');
60   $date2=ParseDate('yesterday');
61 }
62 if ($time=~ /\//){
63   $date=ParseDate($time);
64   $date2=ParseDateDelta('+ 1 day');
65   $date2=DateCalc($date,$date2);
66 }
67 $date=UnixDate($date,'%Y-%m-%d');
68 $date2=UnixDate($date2,'%Y-%m-%d');
69 my @payments=TotalPaid($date);
70 my $count=@payments;
71 my $total=0;
72 my $oldtime;
73 my $totalw=0;
74 my @loop;
75 my %row;
76 my $i=0;
77 while ($i<$count){
78   my $time=$payments[$i]{'datetime'};
79   my $payments=$payments[$i]{'value'};
80   my $charge=0;
81   my @temp=split(/ /,$payments[$i]{'datetime'});
82   my $date=$temp[0];
83   my @charges=getcharges($payments[$i]{'borrowernumber'},$payments[$i]{'timestamp'});
84   my $count=@charges;
85   my $temptotalf=0;
86   my $temptotalr=0;
87   my $temptotalres=0;
88   my $temptotalren=0;
89   my $temptotalw=0;
90   for (my $i2=0;$i2<$count;$i2++){
91      $charge+=$charges[$i2]->{'amount'};
92      %row = ( name   => $charges[$i2]->{'description'},
93               type   => $charges[$i2]->{'accounttype'},
94               time   => $charges[$i2]->{'timestamp'},
95               amount => $charges[$i2]->{'amount'},
96               branch => $charges[$i2]->{'amountoutstanding'} );
97       push(@loop, \%row);
98       if ($payments[$i]{'accountytpe'} ne 'W'){
99         if ($charges[$i2]->{'accounttype'} eq 'Rent'){
100           $temptotalr+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
101         }
102         if ($charges[$i2]->{'accounttype'} eq 'F' || $charges[$i2]->{'accounttype'} eq 'FU' || $charges[$i2]->{'accounttype'} eq 'FN' ){
103           $temptotalf+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
104         }
105         if ($charges[$i2]->{'accounttype'} eq 'Res'){
106           $temptotalres+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
107         }
108         if ($charges[$i2]->{'accounttype'} eq 'R'){
109          $temptotalren+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
110         }
111      }
112   }
113
114   my $hour=substr($payments[$i]{'timestamp'},8,2);
115   my  $min=substr($payments[$i]{'timestamp'},10,2);
116   my $sec=substr($payments[$i]{'timestamp'},12,2);
117   my $time="$hour:$min:$sec";
118   my $time2="$payments[$i]{'date'}";
119   my $branch=Getpaidbranch($time2,$payments[$i]{'borrowernumber'});
120   my $bornum=$payments[$i]{'borrowernumber'};
121   my $oldtime=$payments[$i]{'timestamp'};
122   my $oldtype=$payments[$i]{'accounttype'};
123   while ($bornum eq $payments[$i]{'borrowernumber'} && $oldtype == $payments[$i]{'accounttype'}  && $oldtime eq $payments[$i]{'timestamp'}){
124      my $hour=substr($payments[$i]{'timestamp'},8,2);
125      my  $min=substr($payments[$i]{'timestamp'},10,2);
126      my $sec=substr($payments[$i]{'timestamp'},12,2);
127      my $time="$hour:$min:$sec";
128          my $time2="$payments[$i]{'date'}";
129      my $branch=Getpaidbranch($time2,$payments[$i]{'borrowernumber'});
130
131     if ($payments[$i]{'accounttype'} eq 'W'){
132       $totalw+=$payments[$i]{'amount'};
133     } else {
134       $payments[$i]{'amount'}=$payments[$i]{'amount'}*-1;
135       $total+=$payments[$i]{'amount'};
136     }
137
138    %row = ( name   => $payments[$i]{'firstname'} . " <b>" . $payments[$i]{'surname'} . "</b>",
139             type   => $payments[$i]{'accounttype'},
140             time   => $payments[$i]{'date'},
141             amount => $payments[$i]{'amount'},
142             branch => $branch );
143     
144     push(@loop, \%row);
145              
146     $oldtype=$payments[$i]{'accounttype'};
147     $oldtime=$payments[$i]{'timestamp'};
148     $bornum=$payments[$i]{'borrowernumber'};
149     $i++;
150
151   }
152 }
153
154 $template->param( loop   => \@loop,
155                   totalw => $totalw,
156                   total  => $total );
157
158 output_html_with_http_headers $input, $cookie, $template->output;
159
160