1 % if ( $cgi->param('_type') eq 'xml' ) {
2 % my @cols = qw(a b c d);
3 % for ( my $row = 0; $row < scalar(@rows); $row++ ) {
5 <PartII_<% $row + 1 %><% $cols[$col] %>>\
6 <% $data[$col][$row] || 0 %>\
7 </PartII_<% $row + 1 %><% $cols[$col] %>>
10 % } else { # HTML mode
11 % # fake up the search-html.html header
14 <TR><TD VALIGN="bottom"><BR></TD></TR>
16 <TABLE CLASS="grid" CELLSPACING=0>
18 % foreach (@row1_headers) {
23 % foreach my $rowhead (@rows) {
24 <TR CLASS="row<%$row % 2%>">
25 <TD STYLE="text-align: left; font-weight: bold"><% $rowhead %></TD>
26 % for my $col (0..3) {
28 % if ( exists($data[$col][$row]) ) {
29 <% $data[$col][$row] %>
41 my $curuser = $FS::CurrentUser::CurrentUser;
44 unless $curuser->access_right('List packages');
49 $search_hash{'agentnum'} = $cgi->param('agentnum');
50 $search_hash{'state'} = $cgi->param('state');
51 $search_hash{'classnum'} = [ $cgi->param('classnum') ];
52 $search_hash{'active'} = [ $opt{date}, $opt{date} ];
55 foreach ($cgi->param('part2a_row_option')) {
56 push @row_option, (/^\d+$/ ? $_ : undef);
59 my $is_residential = " AND COALESCE(cust_main.company, '') = ''";
60 my $has_report_option = sub {
62 defined($row_option[$_]) ?
64 SELECT 1 FROM part_pkg_option
65 WHERE part_pkg_option.pkgpart = part_pkg.pkgpart
66 AND optionname = 'report_option_" . $row_option[$_]."'
72 # an arrayref for each column
74 # get the skeleton of the query
75 my $sql_query = FS::cust_pkg->search(\%search_hash);
76 my $from_where = $sql_query->{'count_query'};
77 $from_where =~ s/^SELECT COUNT\(\*\) //;
80 my $query_ds0 = "SELECT SUM(COALESCE(part_pkg.fcc_ds0s, pkg_class.fcc_ds0s, 0))
81 $from_where AND fcc_voip_class = '4'"; # 4 = Local Exchange
83 my $total_lines = FS::Record->scalar_sql($query_ds0);
84 # always return zero for the number of resold lines, until an actual ILEC
85 # starts using this report
96 $has_report_option->(0), # LD carrier
97 ($has_report_option->(0))[0] . $is_residential,
98 $has_report_option->(1..7),
101 if ( $total_lines > 0 ) {
102 foreach (@row_conds) {
103 my $sql = $query_ds0 . $_;
104 my $lines = FS::Record->scalar_sql($sql);
105 my $percent = sprintf('%.3f', 100 * $lines / $total_lines);
106 push @{ $data[0] }, $percent;
114 '% residential and LD',
118 '% UNE-P replacement',