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
103
104
105
106
107
108
109
110
111
112
113
114
115
|
package FS::cust_main::Status;
use strict;
use vars qw( $conf ); # $module ); #$DEBUG $me );
use Tie::IxHash;
use FS::UID;
use FS::cust_pkg;
#$DEBUG = 0;
#$me = '[FS::cust_main::Status]';
install_callback FS::UID sub {
$conf = new FS::Conf;
#$module = $conf->config('cust_main-status_module') || 'Classic';
};
=head1 NAME
FS::cust_main::Status - Status mixin for cust_main
=head1 SYNOPSIS
=head1 DESCRIPTION
These methods are available on FS::cust_main objects:
=head1 METHODS
=over 4
=item statuscolors
Returns an (ordered with Tie::IxHash) hash reference of possible status
names and colors.
=cut
sub statuscolors {
#my $self = shift; #i guess i'm a class method
my %statuscolors;
my $module = $conf->config('cust_main-status_module') || 'Classic';
if ( $module eq 'Classic' ) {
tie %statuscolors, 'Tie::IxHash',
'prospect' => '7e0079', #'000000', #black? naw, purple
'active' => '00CC00', #green
'ordered' => '009999', #teal? cyan?
'inactive' => '0000CC', #blue
'suspended' => 'FF9900', #yellow
'cancelled' => 'FF0000', #red
;
} elsif ( $module eq 'Recurring' ) {
tie %statuscolors, 'Tie::IxHash',
'prospect' => '7e0079', #'000000', #black? naw, purple
'active' => '00CC00', #green
'ordered' => '009999', #teal? cyan?
'suspended' => 'FF9900', #yellow
'cancelled' => 'FF0000', #red
'inactive' => '0000CC', #blue
;
} else {
die "unknown status module $module";
}
\%statuscolors;
}
=item cancelled_sql
=cut
sub cancelled_sql {
my $self = shift;
my $recurring_sql = FS::cust_pkg->recurring_sql;
my $cancelled_sql = FS::cust_pkg->cancelled_sql;
my $select_count_pkgs = $self->select_count_pkgs_sql;
my $sql = "
0 < ( $select_count_pkgs )
AND 0 = ( $select_count_pkgs AND $recurring_sql
AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 )
)
AND 0 < ( $select_count_pkgs AND $cancelled_sql )
";
my $module = $conf->config('cust_main-status_module') || 'Classic';
if ( $module eq 'Classic' ) {
$sql .=
" AND 0 = ( $select_count_pkgs AND ". FS::cust_pkg->inactive_sql. " ) ";
#} elsif ( $module eq 'Recurring' ) {
#} else {
# die "unknown status module $module";
}
$sql;
}
=back
=head1 BUGS
=head1 SEE ALSO
L<FS::cust_main>
=cut
1;
|