summaryrefslogtreecommitdiff
path: root/httemplate/graph/cust_churn.html
blob: 1777b05fd58e3c526aed3a70d0755dbd36f42a5e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<& elements/monthly.html,
  'title'         => $agentname. 'Customer Churn',
  'items'         => \@items,
  'labels'        => \@labels,
  'graph_labels'  => \@labels,
  'colors'        => \@colors,
  'links'         => \@links,
  #'params'        => \@params,
  'agentnum'      => $agentnum,
  'sprintf'       => ( $normalize ? '%0.1f%%' : '%u'), 
  'normalize'     => ( $normalize ? 0 : undef ),
  'disable_money' => 1,
  'remove_empty'  => 0,
  'nototal'       => 1,
  'no_graph'      => [ 1, 0, 0, 0, 0 ], # don't graph 'active'
&>
<%init>

my $curuser = $FS::CurrentUser::CurrentUser;
die "access denied"
  unless $curuser->access_right('Customers: Customer churn report');

my( $agentnum, $agent ) = ('', '');
if ( $cgi->param('agentnum') =~ /^(\d+)$/ ) {
  $agentnum = $1;
  $agent = qsearchs('agent', { 'agentnum' => $agentnum } );
} else {
  die "agentnum required"; # UI prevents this
}

my $agentname = $agent ? $agent->agent.' ' : '';

my @base_items = qw(active_cust    
                    started_cust   
                    suspended_cust 
                    resumed_cust   
                    cancelled_cust  );

my %base_labels = (
  active_cust    => 'Active customers',
  started_cust   => 'New',
  suspended_cust => 'Suspended',
  resumed_cust   => 'Resumed',
  cancelled_cust => 'Cancelled',
);

my %base_colors = (
  active_cust     => '000000', #black
  started_cust    => '00cc00', #green
  suspended_cust  => 'ff9900', #yellow
  resumed_cust    => '4444ff', #light blue for some reason
  cancelled_cust  => 'cc0000', #red 
);

my %base_links;
foreach my $status (qw(active started suspended resumed cancelled)) {
  $base_links{$status.'_cust'} =
    "${p}search/cust_main_churn.html?agentnum=$agentnum;status=$status;";
}

# indirection in case at some point we need to add breakdown options
my (@items, @labels, @colors, @links, @params);
@items = @base_items;
@labels = @base_labels{@base_items};
@colors = @base_colors{@base_items};
@links = @base_links{@base_items};

my $normalize = $cgi->param('normalize');

</%init>