<% include('elements/report.html', 'title' => $agentname . 'Customer signups by time of day', 'items' => [ 'signupdate' ], 'data' => [ \@count ], 'row_labels' => [ 'New customers' ], 'colors' => [ '00cc00' ], #green 'col_labels' => [ map { "$_:00" } @hours ], 'links' => [ \@links ], 'graph_type' => 'Bars', 'nototal' => 0, 'sprintf' => '%u', 'disable_money' => 1, ) %> <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Financial reports'); #XXX or virtual my( $agentnum, $agent ) = ('', ''); if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) { $agentnum = $1; $agent = qsearchs('agent', { 'agentnum' => $agentnum } ); die "agentnum $agentnum not found!" unless $agent; } my $agentname = $agent ? $agent->agent.' ' : ''; my $usernum = $cgi->param('usernum'); my @hours = (0..23); my @count = (0) x 24; my %where; $where{'agentnum'} = $agentnum if $agentnum; $where{'usernum'} = $usernum if $usernum; my $sdate = DateTime->new( year => scalar($cgi->param('start_year')), month => scalar($cgi->param('start_month')), )->epoch(); my $edate = DateTime->new( year => scalar($cgi->param('end_year')), month => scalar($cgi->param('end_month')), )->add( months => 1 )->epoch(); my $where = (%where ? ' AND ' : ' WHERE '); $where .= " signupdate >= $sdate ". " AND signupdate < $edate "; foreach my $cust (qsearch({ table => 'cust_main', hashref => \%where, extra_sql => $where } )) { next if !$cust->signupdate; my $hour = time2str('%H',$cust->signupdate); $count[$hour]++; } my @links = ("${p}search/cust_main.html?" . join (';', map {$_.'='.$where{$_}} (keys(%where))) ). ";signupdate_beginning=$sdate;signupdate_ending=$edate"; push @links, map { ";signuphour=$_" } @hours;