summaryrefslogtreecommitdiff
path: root/httemplate/graph/signupdate.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/graph/signupdate.cgi')
-rw-r--r--httemplate/graph/signupdate.cgi60
1 files changed, 60 insertions, 0 deletions
diff --git a/httemplate/graph/signupdate.cgi b/httemplate/graph/signupdate.cgi
new file mode 100644
index 0000000..5b70758
--- /dev/null
+++ b/httemplate/graph/signupdate.cgi
@@ -0,0 +1,60 @@
+<% 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 = $cgi->param('start_year').
+ '-'.
+ $cgi->param('start_month').
+ '-01';
+my $edate = ($cgi->param('end_year') +
+ ($cgi->param('end_month')==12)).
+ '-'.
+ ($cgi->param('end_month') % 12 + 1).
+ '-01'; # first day of the next month
+
+my $sql = "AND signupdate >= ".str2time($sdate).
+ " AND signupdate < ".str2time($edate);
+
+foreach my $cust (qsearch({ table => 'cust_main',
+ hashref => \%where,
+ extra_sql => $sql } )) {
+ 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;
+</%init>