a35c045cf8208b1547301e6125ada7493de66cc4
[freeside.git] / httemplate / browse / cust_class.html
1 <% include( 'elements/browse.html',
2                  'title'       => 'Customer classes',
3                  'html_init'   => $html_init,
4                  'name'        => 'customer classes',
5                  'disableable' => 1,
6                  'disabled_statuspos' => 2,
7                  'query'       => { 'table'     => 'cust_class',
8                                     'hashref'   => {},
9                                     'order_by' => 'ORDER BY classnum',
10                                   },
11                  'count_query' => $count_query,
12                  'header'      => $header,
13                  'fields'      => $fields,
14                  'links'       => $links,
15              )
16 %>
17 <%init>
18
19 die "access denied"
20   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
21
22 my $html_init = 
23   'Customer classes define groups of customer for reporting.<BR><BR>'.
24   qq!<A HREF="${p}edit/cust_class.html"><I>Add a customer class</I></A><BR><BR>!;
25
26 #cust_class-disable_counts?  or just migrate this to one config probably
27 #my $disable_counts = $conf->exists('agent-disable_counts');
28 my $disable_counts = 0; 
29
30 my $customers_sub = sub {
31   my $cust_class = shift;
32
33   my $cust_main_link = $p. 'search/cust_main.html?'.
34                        'classnum='. $cust_class->classnum;
35
36   #false laziness w/agent.cgi
37   my $OUT = '<TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>';
38
39   my @cust_status =
40     qw( prospect inactive ordered active suspended cancelled );
41   my %PL = ( 'prospect' => 'prospects', );
42   #my %link = ( 'cancelled' => 'showcancelledcustomers=1&cancelled' );
43   my $statuscolor = FS::cust_main->statuscolors;
44
45   foreach my $status ( @cust_status ) {
46     my $meth = 'num_'. $status;
47     #my $link = exists($link{$status}) ? $link{$status} : $status;
48
49     $OUT .= '<TR>';
50       my $num = 0;
51       unless ( $disable_counts ) {
52         $num = $cust_class->$meth();
53         $OUT .= '<TH ALIGN="right" WIDTH="40%">'.
54                 '<FONT COLOR="#'. $statuscolor->{$status}. '">'.
55                 $num. '&nbsp;</FONT></TH>';
56       }
57     $OUT .= '<TD>';
58
59     if ( $num || $disable_counts ) { 
60       $OUT .= '<A HREF="'. $cust_main_link. "&status=$status". '">';
61     } 
62     $OUT .= exists($PL{$status}) ? $PL{$status} : $status;
63     if ($num || $disable_counts ) {
64       $OUT .= '</A>';
65     } 
66
67     $OUT .= '</TD></TR>';
68
69   }
70
71   $OUT .= '</TABLE>';
72
73   $OUT;
74
75 };
76
77 my $count_query = 'SELECT COUNT(*) FROM cust_class';
78
79 my $link = [ $p.'edit/cust_class.html?', 'classnum' ];
80 my $header = [ '#', 'Class', 'Customers' ];
81 my $fields = [ 'classnum', 'classname', $customers_sub, ];
82 my $links  = [ $link, $link ];
83
84 my $cat_query = 'SELECT COUNT(*) FROM cust_class where categorynum IS NOT NULL';
85 my $sth = dbh->prepare($cat_query)
86   or die "Error preparing $cat_query: ". dbh->errstr;
87 $sth->execute
88   or die "Error executing $cat_query: ". $sth->errstr;
89 if ($sth->fetchrow_arrayref->[0]) {
90   push @$header, 'Category';
91   push @$fields, 'categoryname';
92   push @$links,  $link;
93 }
94
95 my $conf = new FS::Conf;
96 if ( $conf->exists('cust_class-tax_exempt') ) {
97   push @$header, 'Tax exempt';
98   push @$fields, 'tax';
99   push @$links,  '';
100 }
101
102 </%init>