adding authentification with Auth.pm
[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 C4::Stats;
27 use strict;
28 use Date::Manip;
29 use CGI;
30 use C4::Output;
31
32 my $input=new CGI;
33 my $time=$input->param('time');
34 print $input->header;
35
36 print startpage;
37 print startmenu('report');
38 print center;
39
40 my $date;
41 my $date2;
42 if ($time eq 'yesterday'){
43   $date=ParseDate('yesterday');
44   $date2=ParseDate('today');
45 }
46 if ($time eq 'today'){
47   $date=ParseDate('today');
48   $date2=ParseDate('tomorrow');
49 }
50 if ($time eq 'daybefore'){
51   $date=ParseDate('2 days ago');
52   $date2=ParseDate('yesterday');
53 }
54 if ($time=~ /\//){
55   $date=ParseDate($time);
56   $date2=ParseDateDelta('+ 1 day');
57   $date2=DateCalc($date,$date2);
58 }
59 $date=UnixDate($date,'%Y-%m-%d');
60 $date2=UnixDate($date2,'%Y-%m-%d');
61 my @payments=TotalPaid($date);
62 my $count=@payments;
63 my $total=0;
64 my %levin;
65 my %foxton;
66 my %shannon;
67 my $oldtime;
68 my $totalw=0;
69 #my $totalcf=0;
70 print mktablehdr;
71 print mktablerow(5,'#99cc33',bold('Name'),bold('Type'),bold('Date/time'),bold('Amount'), bold('Branch'),'/images/background-mem.gif');
72 my $i=0;
73 while ($i<$count){
74   my $time=$payments[$i]{'datetime'};
75   my $payments=$payments[$i]{'value'};
76   my $charge=0;
77   my @temp=split(/ /,$payments[$i]{'datetime'});
78   my $date=$temp[0];
79   my @charges=getcharges($payments[$i]{'borrowernumber'},$payments[$i]{'timestamp'});
80   my $count=@charges;
81   my $temptotalf=0;
82   my $temptotalr=0;
83   my $temptotalres=0;
84   my $temptotalren=0;
85   my $temptotalw=0;
86   for (my $i2=0;$i2<$count;$i2++){
87      $charge+=$charges[$i2]->{'amount'};
88       print mktablerow(6,'red',$charges[$i2]->{'description'},$charges[$i2]->{'accounttype'},$charges[$i2]->{'timestamp'},
89       $charges[$i2]->{'amount'},$charges[$i2]->{'amountoutstanding'});
90       if ($payments[$i]{'accountytpe'} ne 'W'){
91         if ($charges[$i2]->{'accounttype'} eq 'Rent'){
92           $temptotalr+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
93         }
94         if ($charges[$i2]->{'accounttype'} eq 'F' || $charges[$i2]->{'accounttype'} eq 'FU' || $charges[$i2]->{'accounttype'} eq 'FN' ){
95           $temptotalf+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
96         }
97         if ($charges[$i2]->{'accounttype'} eq 'Res'){
98           $temptotalres+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
99         }
100         if ($charges[$i2]->{'accounttype'} eq 'R'){
101          $temptotalren+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
102         }
103      }
104   }
105
106 #  my $branch=
107   my $hour=substr($payments[$i]{'timestamp'},8,2);
108   my  $min=substr($payments[$i]{'timestamp'},10,2);
109   my $sec=substr($payments[$i]{'timestamp'},12,2);
110   my $time="$hour:$min:$sec";
111   my $time2="$payments[$i]{'date'}";
112   my $branch=Getpaidbranch($time2,$payments[$i]{'borrowernumber'});
113   if ($branch eq 'C'){
114     $levin{'totalf'}+=$temptotalf;
115     $levin{'totalres'}+=$temptotalres;
116     $levin{'totalren'}+=$temptotalren;
117     $levin{'totalr'}+=$temptotalr;
118   } elsif ($branch eq 'F'){
119     $foxton{'totalf'}+=$temptotalf;
120     $foxton{'totalres'}+=$temptotalres;
121     $foxton{'totalren'}+=$temptotalren;
122     $foxton{'totalr'}+=$temptotalr;
123   } elsif ($branch eq 'S'){
124     $shannon{'totalf'}+=$temptotalf;
125     $shannon{'totalres'}+=$temptotalres;
126     $shannon{'totalren'}+=$temptotalren;
127     $shannon{'totalr'}+=$temptotalr;
128   }
129   my $bornum=$payments[$i]{'borrowernumber'};
130   my $oldtime=$payments[$i]{'timestamp'};
131   my $oldtype=$payments[$i]{'accounttype'};
132   while ($bornum eq $payments[$i]{'borrowernumber'} && $oldtype == $payments[$i]{'accounttype'}  && $oldtime eq $payments[$i]{'timestamp'}){
133      my $hour=substr($payments[$i]{'timestamp'},8,2);
134      my  $min=substr($payments[$i]{'timestamp'},10,2);
135      my $sec=substr($payments[$i]{'timestamp'},12,2);
136      my $time="$hour:$min:$sec";
137          my $time2="$payments[$i]{'date'}";
138      my $branch=Getpaidbranch($time2,$payments[$i]{'borrowernumber'});
139
140     if ($payments[$i]{'accounttype'} eq 'W'){
141       $totalw+=$payments[$i]{'amount'};
142     } else {
143       $payments[$i]{'amount'}=$payments[$i]{'amount'}*-1;
144       $total+=$payments[$i]{'amount'};
145       if ($branch eq 'C'){
146         $levin{'total'}+=$payments[$i]{'amount'};
147       }
148       if ($branch eq 'F'){
149         $foxton{'total'}+=$payments[$i]{'amount'};
150       }
151       if ($branch eq 'S'){
152         $shannon{'total'}+=$payments[$i]{'amount'};
153       }
154
155     }
156 #    my $time2="$payments[$i]{'date'} $time";
157
158
159     print mktablerow(6,'white',"$payments[$i]{'firstname'} <b>$payments[$i]{'surname'}</b>",
160     ,$payments[$i]{'accounttype'},"$payments[$i]{'date'} $time",$payments[$i]{'amount'}
161     ,$branch);
162     $oldtype=$payments[$i]{'accounttype'};
163     $oldtime=$payments[$i]{'timestamp'};
164     $bornum=$payments[$i]{'borrowernumber'};
165     $i++;
166
167   }
168   print mktablerow('6','white','','','','','','');
169 }
170 print mktableft;
171 print endcenter;
172 #$totalw=$totalw * -1;
173 print "<p><b>Total Paid $total</b>";
174 print "<br><b>total written off $totalw</b>";
175 print mktablehdr;
176 $levin{'issues'}=Count('issue','C',$date,$date2);
177 $foxton{'issues'}=Count('issue','F',$date,$date2);
178 $shannon{'issues'}=Count('issue','S',$date,$date2);
179 $levin{'returns'}=Count('return','C',$date,$date2);
180 $foxton{'returns'}=Count('return','F',$date,$date2);
181 $shannon{'returns'}=Count('return','S',$date,$date2);
182 $levin{'renewals'}=Count('renew','C',$date,$date2);
183 $foxton{'renewals'}=Count('renew','F',$date,$date2);
184 $shannon{'renewals'}=Count('renew','S',$date,$date2);
185 $levin{'unknown'}=$levin{'total'}-($levin{'totalf'}+$levin{'totalr'}+$levin{'totalres'}+$levin{'totalren'});
186 $foxton{'unknown'}=$foxton{'total'}-($foxton{'totalf'}+$foxton{'totalr'}+$foxton{'totalres'}+$foxton{'totalren'});
187 $foxton{'unknown'}=$foxton{'total'}-($foxton{'totalf'}+$foxton{'totalr'}+$foxton{'totalres'}+$foxton{'totalren'});
188 print mktablerow(10,'white',"<b>Levin</b>","Fines $levin{'totalf'}","Rental Charges $levin{'totalr'}",
189 "Reserve Charges $levin{'totalres'}","Renewal Charges $levin{'totalren'}","Unknown $levin{'unknown'}","<b>Total $levin{'total'}</b>",
190 "Issues $levin{'issues'}","Renewals $levin{'renewals'}","Returns $levin{'returns'}");
191 print mktablerow(10,'white',"<b>foxton</b>","Fines $foxton{'totalf'}","Rental Charges $foxton{'totalr'}","Reserve Charges $foxton{'totalres'}","Renewal Charges $foxton{'totalren'}","Unknown $foxton{'unknown'}","<b>Total $foxton{'total'}</b>",
192 "Issues $foxton{'issues'}","Renewals $foxton{'renewals'}","Returns $foxton{'returns'}");
193 print mktablerow(10,'white',"<b>shannon</b>","Fines $shannon{'totalf'}","Rental Charges $shannon{'totalr'}","Reserve Charges $shannon{'totalres'}","Renewal Charges $shannon{'totalren'}","Unknown $shannon{'unknown'}","<b>Total $shannon{'total'}</b>",
194 "Issues $shannon{'issues'}","Renewals $shannon{'renewals'}","Returns $shannon{'returns'}");
195 print mktableft;
196
197
198 print endmenu('report');
199 print endpage;