From 97681c79a854833f8b0a854b710ef9ad6bfad3b3 Mon Sep 17 00:00:00 2001 From: szrj1m Date: Mon, 22 Aug 2005 00:21:41 +0000 Subject: [PATCH] HLT mod for till reconciliation, opens to csv'ed excel. --- stats.print.pl | 187 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100755 stats.print.pl diff --git a/stats.print.pl b/stats.print.pl new file mode 100755 index 0000000000..960c17b05c --- /dev/null +++ b/stats.print.pl @@ -0,0 +1,187 @@ +#!/usr/bin/perl + +#things to do + +# First sort by branch +#Then sort by surname + +#_Branch_: Could we have Levin displaying as L, please, not C__ + +#_Totals_ : +#*Total Paid * +#*Total written off* +#*Total credits (which will include manual credits and credits for lost books returned* + +#use strict; +use CGI; +use C4::Output; +use HTML::Template; +use C4::Auth; +use C4::Interface::CGI::Output; +use C4::Context; +use Date::Manip; +use C4::Stats; +use Data::Dumper; + +use Text::CSV_XS; + +my $csv = Text::CSV_XS->new( + { + 'quote_char' => '"', + 'escape_char' => '"', + 'sep_char' => ',', + 'binary' => 1, + 'always_quote' => 1, + } +); + +my $input=new CGI; + +#my $time=$input->param('time'); +#my $time="month"; +#my $time="today"; + +my $date; +my $date2; +if ($time eq 'yesterday'){ + $date=ParseDate('yesterday'); + $date2=ParseDate('today'); +} +if ($time eq 'today'){ + $date=ParseDate('today'); + $date2=ParseDate('tomorrow'); +} +if ($time eq 'daybefore'){ + $date=ParseDate('2 days ago'); + $date2=ParseDate('yesterday'); +} +if ($time eq 'month') { + $date = ParseDate('1 month ago'); + $date2 = ParseDate('today'); + +} +if ($time=~ /\//){ + $date=ParseDate($time); + $date2=ParseDateDelta('+ 1 day'); + $date2=DateCalc($date,$date2); +} + +#my $date=UnixDate($date,'%Y-%m-%d'); +#my $date2=UnixDate($date2,'%Y-%m-%d'); + +my $date="2005-08-19"; +my $date2="2005-08-20"; + +#my $date="2005-01-05"; +#my $date2="2005-01-06"; + +#get a list of every payment +my @payments=TotalPaid($date,$date2); + +my $count=@payments; +# print "MASON: number of payments=$count\n"; + +my $i=0; +my $totalcharges=0; +my $totalcredits=0; +my $totalpaid=0; +my $totalwritten=0; + +# lets get a a list of all individual item charges paid for by that payment +while ($i<$count ){ + + my $count; + my @charges; + + if ($payments[$i]{'type'} ne 'writeoff'){ # lets ignore writeoff payments!. + @charges=getcharges($payments[$i]{'borrowernumber'}, $payments[$i]{'timestamp'}, $payments[$i]{'proccode'}); + $totalcharges++; + $count=@charges; + # getting each of the charges and putting them into a array to be printed out + #this loops per charge per person + for (my $i2=0;$i2<$count;$i2++){ + my $hour=substr($payments[$i]{'timestamp'},8,2); + my $min=substr($payments[$i]{'timestamp'},10,2); + my $sec=substr($payments[$i]{'timestamp'},12,2); + my $time="$hour:$min:$sec"; + my $time2="$payments[$i]{'date'}"; + my $branch=Getpaidbranch($time2,$payments[$i]{'borrowernumber'}); + my @rows1 = ($branch, # lets build up a row + $payments[$i]->{'datetime'}, + $payments[$i]->{'surname'}, + $payments[$i]->{'firstname'}, + $charges[$i2]->{'description'}, + $charges[$i2]->{'accounttype'}, + sprintf("%.2f", $charges[$i2]->{'amount'}), # rounding amounts to 2dp + $payments[$i]->{'type'}, + $payments[$i]->{'value'}); + push (@loop1, \@rows1); + } + } else { + ++$totalwritten; + } + $i++; #increment the while loop + $totalpaid = $totalpaid + $payments[$i]->{'value'}; +} + + + +#get credits and append to the bottom of payments +my @credits=getcredits($date,$date2); + +#print Dumper(@credits); + +my $count=@credits; +my $i=0; + +while ($i<$count ){ + + my @rows2 = ($credits[$i]->{'branchcode'}, + $credits[$i]->{'date'}, + $credits[$i]->{'surname'}, + $credits[$i]->{'firstname'}, + $credits[$i]->{'description'}, + $credits[$i]->{'accounttype'}, + $credits[$i]->{'amount'}); + + push (@loop2, \@rows2); + $i++; #increment the while loop + $totalcredits = $totalcredits + $credits[$i]->{'amount'}; + ; + +} +#takes off first char minus sign "-100.00" + + +$totalcredits = substr($totalcredits, 1); + + +print $input->header( + -type => 'application/vnd.ms-excel', + -attachment => "moo.csv", +); +print "Branch, Datetime, Surame, Firstnames, Description, Type, Invoice amount, Payment type, Payment Amount\n"; + + +for my $row ( @loop1 ) { + + $csv->combine(@$row); + my $string = $csv->string; + print $string, "\n"; +} + +print ",,,,,,,\n"; + +for my $row ( @loop2 ) { + + $csv->combine(@$row); + my $string = $csv->string; + print $string, "\n"; +} + +print ",,,,,,,\n"; +print ",,,,,,,\n"; +print ",,Total Amount Paid, $totalpaid\n"; +print ",,Total Number Written, $totalwritten\n"; +print ",,Total Amount Credits, $totalcredits\n"; + -- 2.11.0