summaryrefslogtreecommitdiff
path: root/httemplate/browse/cust_class.html
blob: a35c045cf8208b1547301e6125ada7493de66cc4 (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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<% include( 'elements/browse.html',
                 'title'       => 'Customer classes',
                 'html_init'   => $html_init,
                 'name'        => 'customer classes',
                 'disableable' => 1,
                 'disabled_statuspos' => 2,
                 'query'       => { 'table'     => 'cust_class',
                                    'hashref'   => {},
                                    'order_by' => 'ORDER BY classnum',
                                  },
                 'count_query' => $count_query,
                 'header'      => $header,
                 'fields'      => $fields,
                 'links'       => $links,
             )
%>
<%init>

die "access denied"
  unless $FS::CurrentUser::CurrentUser->access_right('Configuration');

my $html_init = 
  'Customer classes define groups of customer for reporting.<BR><BR>'.
  qq!<A HREF="${p}edit/cust_class.html"><I>Add a customer class</I></A><BR><BR>!;

#cust_class-disable_counts?  or just migrate this to one config probably
#my $disable_counts = $conf->exists('agent-disable_counts');
my $disable_counts = 0; 

my $customers_sub = sub {
  my $cust_class = shift;

  my $cust_main_link = $p. 'search/cust_main.html?'.
                       'classnum='. $cust_class->classnum;

  #false laziness w/agent.cgi
  my $OUT = '<TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>';

  my @cust_status =
    qw( prospect inactive ordered active suspended cancelled );
  my %PL = ( 'prospect' => 'prospects', );
  #my %link = ( 'cancelled' => 'showcancelledcustomers=1&cancelled' );
  my $statuscolor = FS::cust_main->statuscolors;

  foreach my $status ( @cust_status ) {
    my $meth = 'num_'. $status;
    #my $link = exists($link{$status}) ? $link{$status} : $status;

    $OUT .= '<TR>';
      my $num = 0;
      unless ( $disable_counts ) {
        $num = $cust_class->$meth();
        $OUT .= '<TH ALIGN="right" WIDTH="40%">'.
                '<FONT COLOR="#'. $statuscolor->{$status}. '">'.
                $num. '&nbsp;</FONT></TH>';
      }
    $OUT .= '<TD>';

    if ( $num || $disable_counts ) { 
      $OUT .= '<A HREF="'. $cust_main_link. "&status=$status". '">';
    } 
    $OUT .= exists($PL{$status}) ? $PL{$status} : $status;
    if ($num || $disable_counts ) {
      $OUT .= '</A>';
    } 

    $OUT .= '</TD></TR>';

  }

  $OUT .= '</TABLE>';

  $OUT;

};

my $count_query = 'SELECT COUNT(*) FROM cust_class';

my $link = [ $p.'edit/cust_class.html?', 'classnum' ];
my $header = [ '#', 'Class', 'Customers' ];
my $fields = [ 'classnum', 'classname', $customers_sub, ];
my $links  = [ $link, $link ];

my $cat_query = 'SELECT COUNT(*) FROM cust_class where categorynum IS NOT NULL';
my $sth = dbh->prepare($cat_query)
  or die "Error preparing $cat_query: ". dbh->errstr;
$sth->execute
  or die "Error executing $cat_query: ". $sth->errstr;
if ($sth->fetchrow_arrayref->[0]) {
  push @$header, 'Category';
  push @$fields, 'categoryname';
  push @$links,  $link;
}

my $conf = new FS::Conf;
if ( $conf->exists('cust_class-tax_exempt') ) {
  push @$header, 'Tax exempt';
  push @$fields, 'tax';
  push @$links,  '';
}

</%init>