X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2F477.html;h=2e9f9428ead16928f6c890df0c42acd1c020ea2b;hb=refs%2Fheads%2F24899_agent_virt_attach_report;hp=68493377d7593f730de7f5e6d2ae433327777802;hpb=8fdc0ea36474cfb3d1389f41691c14598559cbe7;p=freeside.git
diff --git a/httemplate/search/477.html b/httemplate/search/477.html
index 68493377d..2e9f9428e 100644
--- a/httemplate/search/477.html
+++ b/httemplate/search/477.html
@@ -32,39 +32,85 @@ table.fcc477part thead tr.subhead {
font-size: large;
float: left;
}
+.errortitle {
+ font-weight: bold;
+ color: #ff0000;
+}
+tr.error td {
+ background-color: #ffdddd;
+}
+tr.error td.error {
+ text-align: left;
+ border: none;
+}
+tr.error ul {
+ margin: 0px;
+ list-style-image: url("<% $fsurl %>images/cross.png");
+}
a.download {
float: right;
}
-% foreach my $partnum (@partnums) {
-% $cgi->param('parts', $partnum);
+% foreach my $partname (@partnames) {
+% my $this_part = $parts{$partname};
+% $cgi->param('parts', $partname);
% $cgi->param('type', 'csv');
- Part <% $partnum %>
+ <% $part_titles->{$partname} %>
+% if ( $this_part->{num_errors} > 0 ) {
+% # disable downloading while it contains errors
+
+ <% emt('This section contains [quant,_1,error].', $this_part->{num_errors}) %>
+
+% } else {
Download
+% }
-% my $header = ".header$partnum";
-% my $data = $parts{$partnum};
+% my $header = ".header_$partname";
+% my $data = $this_part->{data};
+% my $error = $this_part->{error};
<& $header &>
-% #XXX column headings
+% my $rownum = 0;
% foreach my $row (@$data) {
-
+% my %eh; # error hash
+% if ( $error->[$rownum] ) {
+% %eh = %{ $error->[$rownum] };
+% }
+
>
+% my $first = 1;
% foreach my $item (@$row) {
- <% $item %> |
+
+% if ($first and $part_link{$partname}) {
+ "><% $item || '(empty)' %>
+% $first = 0;
+% } else {
+ <% $item %>
+% }
+ |
+% } #foreach $item
+% # display errors
+% if ( keys %eh ) {
+
+% foreach my $key (sort keys %eh) {
+ - <% $eh{$key} %>
% }
+ |
+% } # if there are errors
-% }
+% $rownum++;
+% } #foreach $row
-% } # foreach $partnum
+% } # foreach $partname
<& /elements/footer.html &>
<%init>
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('List packages');
my %parts;
+my %part_link;
# load from cache if possible
my $session;
if ( $cgi->param('session') =~ /^(\d+)$/ ) {
@@ -80,24 +126,34 @@ if ($cgi->param('agentnum') =~ /^(\d+)$/ ) {
$agentnum = $1;
}
my $date = parse_datetime($cgi->param('date')) || time;
-my @partnums = grep /^\d+$/, $cgi->param('parts');
-foreach my $partnum (@partnums) {
- my $method = "part$partnum";
- $parts{$partnum} ||= FS::Report::FCC_477->$method(
- date => $date,
- agentnum => $agentnum
- );
+my @partnames = grep /^\w+$/, $cgi->param('parts');
+my $ignore_quantity = ($cgi->param('ignore_quantity') ? 1 : 0);
+
+foreach my $partname (@partnames) {
+ $parts{$partname} ||= FS::Report::FCC_477->report( $partname,
+ date => $date,
+ agentnum => $agentnum,
+ ignore_quantity => $ignore_quantity,
+ ); # includes error, detail, and data parts
+ my $detail_table = FS::Report::FCC_477->part_table($partname);
+ if ($detail_table eq 'cust_pkg') {
+ my $link = popurl(1).'477_cust_pkg.html?477part='.$partname.";date=$date;";
+ if ($agentnum) {
+ $link .= "agentnum=$agentnum;";
+ }
+ $part_link{$partname} = $link;
+ } # don't include detail links to deploy_blocks, that's pointless
}
$m->cache->set($session, \%parts, '1h');
my $title = 'FCC Form 477 Data - ' . time2str('%b %o, %Y', $date);
if ( $cgi->param('type') eq 'csv' ) {
- my $partnum = $partnums[0]; # ignore any beyond the first
- my $data = $parts{$partnum};
+ my $partname = $partnames[0]; # ignore any beyond the first
+ my $data = $parts{$partname}->{data};
my $csv = Text::CSV_XS->new({ eol => "\r\n" }); # i think
- my $filename = time2str('%Y-%m-%d', $date) . '-part' . $partnum . '.csv';
+ my $filename = time2str('%Y-%m-%d', $date) . '-'. $partname . '.csv';
http_header('Content-Type' => 'text/csv');
http_header('Content-Disposition' => qq(attachment;filename="$filename"));
@@ -110,24 +166,30 @@ if ( $cgi->param('type') eq 'csv' ) {
$m->abort;
}
+my $part_titles = FS::Report::FCC_477->parts;
+
%init>
-<%def .header6>
+<%def .header_fbd>
- Census Tract |
+ Census Block |
+ DBA Name |
Technology |
- Speed (Mbps) |
- Subscriptions |
+ Consumer? |
+ Advertised Speed (Mbps) |
+ Business? |
+ Contractual Speed (Mbps) |
Down |
Up |
- Total |
- Consumer |
+ Down |
+ Up |
%def>
-<%def .header7>
+<%def .header_fbs>
- State |
+ Census Tract |
+ Technology |
Speed (Mbps) |
Subscriptions |
@@ -138,17 +200,18 @@ if ( $cgi->param('type') eq 'csv' ) {
Consumer |
%def>
-<%def .header8>
+<%def .header_fvs>
- State |
- Subscriptions |
+ Census Tract |
+ VoIP? |
+ Lines/Subscriptions |
Total |
- Direct |
+ Consumer |
%def>
-<%def .header9>
+<%def .header_lts>
State |
Wholesale |
@@ -183,9 +246,9 @@ if ( $cgi->param('type') eq 'csv' ) {
Wireless |
%def>
-<%def .header10>
+<%def .header_voip>
- State |
+ State |
VoIP OTT |
VoIP Non-OTT |
@@ -206,14 +269,29 @@ if ( $cgi->param('type') eq 'csv' ) {
Other |
%def>
-<%def .header11>
+<%def .header_mbs>
+%# unimplemented
- Census Tract |
- VoIP? |
- Lines/Subscriptions |
+ State |
+ Speed (Mbps) |
+ Subscriptions |
+ Down |
+ Up |
Total |
Consumer |
%def>
+<%def .header_mvs>
+%# unimplemented
+
+ State |
+ Subscriptions |
+
+
+ Total |
+ Direct |
+
+%def>
+