Fixed a bug that was meaning some payments werent counted
[koha.git] / stats.pl
1 #!/usr/bin/perl
2
3 #written 14/1/2000
4 #script to display reports
5
6 use C4::Stats;
7 use strict;
8 use Date::Manip;
9 use CGI;
10 use C4::Output;
11
12 my $input=new CGI;
13 my $time=$input->param('time');
14 print $input->header;
15
16 print startpage;
17 print startmenu('report');
18 print center;
19
20 my $date;
21 my $date2;
22 if ($time eq 'yesterday'){
23   $date=ParseDate('yesterday');
24   $date2=ParseDate('today');
25 }
26 if ($time eq 'today'){
27   $date=ParseDate('today');
28   $date2=ParseDate('tomorrow');
29 }
30 if ($time eq 'daybefore'){
31   $date=ParseDate('2 days ago');
32   $date2=ParseDate('yesterday');
33 }
34 if ($time=~ /\//){
35   $date=ParseDate($time);
36   $date2=ParseDateDelta('+ 1 day');
37   $date2=DateCalc($date,$date2);
38 }
39 $date=UnixDate($date,'%Y-%m-%d');
40 $date2=UnixDate($date2,'%Y-%m-%d');
41 my @payments=TotalPaid($date);
42 my $count=@payments;
43 my $total=0;
44 my %levin;
45 my %foxton;
46 my %shannon;
47 my $oldtime;
48 #my $totalc=0;
49 #my $totalcf=0;
50 print mktablehdr;
51 print mktablerow(5,'#99cc33',bold('Name'),bold('Type'),bold('Date/time'),bold('Amount'), bold('Branch'),'/images/background-mem.gif');
52 for (my $i=0;$i<$count;$i++){
53   my $hour=substr($payments[$i]{'timestamp'},8,2);
54   my  $min=substr($payments[$i]{'timestamp'},10,2);
55   my $sec=substr($payments[$i]{'timestamp'},12,2);
56   my $time="$hour:$min:$sec";
57   $payments[$i]{'amount'}*=-1;
58   $total+=$payments[$i]{'amount'};
59   my @charges=getcharges($payments[$i]{'borrowernumber'},$payments[$i]{'timestamp'});
60   my $count=@charges;
61   my $temptotalf=0;
62   my $temptotalr=0;
63   my $temptotalres=0;
64   my $temptotalren=0;
65   for (my $i2=0;$i2<$count;$i2++){
66     if ($charges[$i2]->{'amountoutstanding'} != $oldtime){
67     print mktablerow(6,'red',$charges[$i2]->{'description'},$charges[$i2]->{'accounttype'},'',
68     $charges[$i2]->{'amount'},$charges[$i2]->{'amountoutstanding'});
69     if ($charges[$i2]->{'accounttype'} eq 'Rent'){
70       $temptotalr+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
71     }
72     if ($charges[$i2]->{'accounttype'} eq 'F' || $charges[$i2]->{'accounttype'} eq 'FU'){
73       $temptotalf+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
74     }
75     if ($charges[$i2]->{'accounttype'} eq 'Res'){
76       $temptotalres+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
77     }
78     if ($charges[$i2]->{'accounttype'} eq 'R'){
79       $temptotalren+=$charges[$i2]->{'amount'}-$charges[$i2]->{'amountoutstanding'};
80     }
81     }
82   }                 
83   my $time2="$payments[$i]{'date'} $time";
84   my $branch=Getpaidbranch($time2);
85   $branch=~ s/Levi/C/;
86   if ($branch eq 'C'){
87     $levin{'total'}+=$payments[$i]{'amount'};
88     $levin{'totalr'}+=$temptotalr;
89     $levin{'totalres'}+=$temptotalres;
90     $levin{'totalf'}+=$temptotalf;
91     $levin{'totalren'}+=$temptotalren;
92   }
93   if ($branch eq 'F'){
94     $foxton{'total'}+=$payments[$i]{'amount'};
95     $foxton{'totalr'}+=$temptotalr;
96     $foxton{'totalres'}+=$temptotalres;
97     $foxton{'totalf'}+=$temptotalf;
98     $foxton{'totalren'}+=$temptotalren;
99   }
100   if ($branch eq 'S'){
101     $shannon{'total'}+=$payments[$i]{'amount'};
102     $shannon{'totalr'}+=$temptotalr;
103     $shannon{'totalres'}+=$temptotalres;
104     $shannon{'totalf'}+=$temptotalf;
105     $shannon{'totalren'}+=$temptotalren;
106   }
107   print mktablerow(6,'white',"$payments[$i]{'firstname'} <b>$payments[$i]{'surname'}</b>"
108   ,$payments[$i]{'accounttype'},"$payments[$i]{'date'} $time",$payments[$i]{'amount'}
109   ,$branch);
110   $oldtime=$payments[$i]{'timestamp'};
111 }
112 print mktableft;
113 print endcenter;
114 print "<p><b>$total</b>";
115 #print "<b
116 print mktablehdr;
117 $levin{'issues'}=Count('issue','C',$date,$date2);
118 $foxton{'issues'}=Count('issue','F',$date,$date2);
119 $shannon{'issues'}=Count('issue','S',$date,$date2);
120 $levin{'returns'}=Count('return','C',$date,$date2);
121 $foxton{'returns'}=Count('return','F',$date,$date2);
122 $shannon{'returns'}=Count('return','S',$date,$date2);
123 print mktablerow(9,'white',"<b>Levin</b>","Fines $levin{'totalf'}","Rental Charges $levin{'totalr'}",
124 "Reserve Charges $levin{'totalres'}","Renewal Charges $levin{'totalren'}","Total $levin{'total'}",
125 "Issues $levin{'issues'}","Renewals $levin{'renewals'}","Returns $levin{'returns'}");
126 print mktablerow(9,'white',"<b>foxton</b>","Fines $foxton{'totalf'}","Rental Charges $foxton{'totalr'}","Reserve Charges $foxton{'totalres'}","Renewal Charges $foxton{'totalren'}","Total $foxton{'total'}",
127 "Issues $foxton{'issues'}","Renewals $foxton{'renewals'}","Returns $foxton{'returns'}");
128 print mktablerow(9,'white',"<b>shannon</b>","Fines $shannon{'totalf'}","Rental Charges $shannon{'totalr'}","Reserve Charges $shannon{'totalres'}","Renewal Charges $shannon{'totalren'}","Total $shannon{'total'}",
129 "Issues $shannon{'issues'}","Renewals $shannon{'renewals'}","Returns $shannon{'returns'}");
130 print mktableft;
131
132
133 print endmenu('report');
134 print endpage;