HTL mod for till reconciliation.
[koha.git] / stats.print.pl
1 #!/usr/bin/perl\r
2 \r
3 \r
4 #use strict;\r
5 use CGI;\r
6 use C4::Output;\r
7 use HTML::Template;\r
8 use C4::Auth;\r
9 use C4::Interface::CGI::Output;\r
10 use C4::Context;\r
11 use Date::Manip;\r
12 use C4::Stats;\r
13 \r
14 \r
15 \r
16 my $input=new CGI;\r
17 \r
18 \r
19 my $date;\r
20 my $date2;\r
21 if ($time eq 'yesterday'){\r
22         $date=ParseDate('yesterday');\r
23         $date2=ParseDate('today');\r
24 }\r
25 if ($time eq 'today'){\r
26         $date=ParseDate('today');\r
27         $date2=ParseDate('tomorrow');\r
28 }\r
29 if ($time eq 'daybefore'){\r
30         $date=ParseDate('2 days ago');\r
31         $date2=ParseDate('yesterday');\r
32 }\r
33 if ($time eq 'month') {\r
34         $date = ParseDate('1 month ago');\r
35         $date2 = ParseDate('today');\r
36 \r
37 }\r
38 if ($time=~ /\//){\r
39         $date=ParseDate($time);\r
40         $date2=ParseDateDelta('+ 1 day');\r
41         $date2=DateCalc($date,$date2);\r
42 }\r
43 \r
44 my $date=UnixDate($date,'%Y-%m-%d');\r
45 my $date2=UnixDate($date2,'%Y-%m-%d');\r
46 \r
47 \r
48 #get a list of every payment\r
49 my @payments=TotalPaid($date,$date2);\r
50 \r
51 my $count=@payments;\r
52 # print "MASON: number of payments=$count\n";\r
53 \r
54 my $i=0;\r
55 my $totalcharges=0;\r
56 my $totalcredits=0;\r
57 my $totalpaid=0;\r
58 my $totalwritten=0;\r
59 \r
60 # lets get a a list of all individual item charges paid for by that payment\r
61 while ($i<$count ){\r
62 \r
63        my $count;\r
64        my @charges;\r
65 \r
66        if ($payments[$i]{'type'} ne 'writeoff'){         # lets ignore writeoff payments!.\r
67            @charges=getcharges($payments[$i]{'borrowernumber'}, $payments[$i]{'timestamp'}, $payments[$i]{'proccode'});\r
68            $totalcharges++;\r
69            $count=@charges;\r
70 \r
71            # getting each of the charges and putting them into a array to be printed out\r
72            #this loops per charge per person\r
73            for (my $i2=0;$i2<$count;$i2++){\r
74 \r
75                my $hour=substr($payments[$i]{'timestamp'},8,2);\r
76                my $min=substr($payments[$i]{'timestamp'},10,2);\r
77                my $sec=substr($payments[$i]{'timestamp'},12,2);\r
78                my $time="$hour:$min:$sec";\r
79                my $time2="$payments[$i]{'date'}";\r
80                my $branch=Getpaidbranch($time2,$payments[$i]{'borrowernumber'});\r
81 \r
82                my @rows1 = ($branch,          # lets build up a row\r
83                             $payments[$i]->{'datetime'},\r
84                             $payments[$i]->{'surname'},\r
85                             $payments[$i]->{'firstname'},\r
86                             $charges[$i2]->{'description'},\r
87                             $charges[$i2]->{'accounttype'},\r
88                             sprintf("%.2f", $charges[$i2]->{'amount'}), # rounding amounts to 2dp\r
89                             $payments[$i]->{'type'},\r
90                             $payments[$i]->{'value'});\r
91 \r
92                push (@loop1, \@rows1);\r
93            }\r
94        } else {\r
95          ++$totalwritten;\r
96        }\r
97        $i++; #increment the while loop\r
98        $totalpaid = $totalpaid + $payments[$i]->{'value'};\r
99 }\r
100 \r
101 #get credits and append to the bottom of payments\r
102 my @credits=getcredits($date,$date2);\r
103 \r
104 my $count=@credits;\r
105 my $i=0;\r
106 \r
107 while ($i<$count ){\r
108 \r
109        my @rows2 = ($credits[$i]->{'branchcode'},\r
110                     $credits[$i]->{'date'},\r
111                     $credits[$i]->{'surname'},\r
112                     $credits[$i]->{'firstname'},\r
113                     $credits[$i]->{'description'},\r
114                     $credits[$i]->{'accounttype'},\r
115                     $credits[$i]->{'amount'});\r
116 \r
117        push (@loop2, \@rows2);\r
118        $i++;\r
119        $totalcredits = $totalcredits + $credits[$i]->{'amount'};\r
120        ;\r
121 \r
122 }\r
123 #takes off first char minus sign "-100.00"\r
124 $totalcredits = substr($totalcredits, 1);\r
125 \r
126 print $input->header(\r
127     -type       => 'application/vnd.ms-excel',\r
128     -attachment => "moo.csv",\r
129 );\r
130 print "Branch, Datetime, Surame, Firstnames, Description, Type, Invoice amount, Payment type, Payment Amount\n";\r
131 \r
132 \r
133 for my $row ( @loop1 ) {\r
134 \r
135     $csv->combine(@$row);\r
136     my $string = $csv->string;\r
137     print $string, "\n";\r
138 }\r
139 \r
140 print ",,,,,,,\n";\r
141 \r
142 for my $row ( @loop2 ) {\r
143 \r
144     $csv->combine(@$row);\r
145     my $string = $csv->string;\r
146     print $string, "\n";\r
147 }\r
148 \r
149 print ",,,,,,,\n";\r
150 print ",,,,,,,\n";\r
151 print ",,Total Amount Paid, $totalpaid\n";\r
152 print ",,Total Number Written, $totalwritten\n";\r
153 print ",,Total Amount Credits, $totalcredits\n";\r
154 \r