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. ' </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>
|