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
|
% if ( @$packages ) {
<TR>
% #my $width = $show_location ? 'WIDTH="25%"' : 'WIDTH="33%"';
<TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Package') |h %></TH>
<TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Status') |h %></TH>
<TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Contact/Location') |h %></TH>
<TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Services') |h %></TH>
</TR>
% #$FS::cust_pkg::DEBUG = 2;
% foreach my $cust_pkg (@$packages) {
<& .packagerow, $cust_pkg,
( map { $_ => $opt{$_} } qw(
cust_main bgcolor
no_links before_pkg_callback before_svc_callback after_svc_callback
)),
%conf_opt
&>
% }
% } else { # there are no packages
<BR>
% }
<%def .packagerow>
%
% my ($cust_pkg, %iopt) = @_;
% $iopt{'cust_pkg'} = $cust_pkg;
% $iopt{'part_pkg'} = $cust_pkg->part_pkg;
<!--pkgnum: <% $cust_pkg->pkgnum %>-->
<TR CLASS="row<%$row % 2%>">
<& package.html, %iopt &>
<& status.html, %iopt &>
<TD CLASS="inv" BGCOLOR="<% $iopt{bgcolor} %>" WIDTH="20%" VALIGN="top">
<& contact.html, %iopt &><BR>
<& location.html, %iopt &>
</TD>
<& services.html, %iopt &>
</TR>
% $row++;
% # include supplemental packages if any
% $iopt{'supplemental'} = ($iopt{'supplemental'} || 0) + 1;
% foreach my $supp_pkg ($cust_pkg->supplemental_pkgs) {
<& .packagerow, $supp_pkg, %iopt &>
% }
</%def>
<%shared>
my $row = 0;
</%shared>
<%init>
my %opt = @_;
my $conf = new FS::Conf;
my $curuser = $FS::CurrentUser::CurrentUser;
my $packages = $opt{'packages'};
# Sort order is hardcoded for now, can change this if needed.
@$packages = sort {
( $a->getfield('cancel') <=> $b->getfield('cancel') ) or
( $a->getfield('setup') <=> $b->getfield('setup') ) or
( $a->getfield('pkgnum') <=> $b->getfield('pkgnum') )
} @$packages;
my %change_custnum = map { $_->change_custnum => 1 }
grep { $_->change_custnum }
grep { $_->getfield('cancel') }
@$packages;
my $pkg_attached = ( scalar(keys %change_custnum) == 1
&& ! grep { ! $_->getfield('cancel') } @$packages
);
my $countrydefault = scalar($conf->config('countrydefault')) || 'US';
my %conf_opt = (
#for services.html and status.html
'cust_pkg-display_times' => ($conf->exists('cust_pkg-display_times')
|| $curuser->option('cust_pkg-display_times')),
#for status.html
'cust_pkg-show_autosuspend' => $conf->exists('cust_pkg-show_autosuspend'),
'pkg_attached' => $pkg_attached,
#for status.html pkg-balances
'pkg-balances' => $conf->exists('pkg-balances'),
'money_char' => ( $conf->config('money_char') || '$' ),
#for location.html
'countrydefault' => $countrydefault,
'statedefault' => ( scalar($conf->config('statedefault'))
|| ($countrydefault eq 'US' ? 'CA' : '') ),
#for services.html
'svc_external-skip_manual' => $conf->exists('svc_external-skip_manual'),
'legacy_link' => $conf->exists('legacy_link'),
'manage_link' => scalar($conf->config('svc_broadband-manage_link')),
'manage_link_text' => scalar($conf->config('svc_broadband-manage_link_text')),
'manage_link_loc' => scalar($conf->config('svc_broadband-manage_link_loc')),
'manage_link-new_window' => $conf->exists('svc_broadband-manage_link-new_window'),
'cust_pkg-large_pkg_size' => scalar($conf->config('cust_pkg-large_pkg_size')),
);
</%init>
|