X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2F477.html;h=fb85f1e09b4771408a54c0c37d8b5192960482ee;hb=d7cf0d6bb3b81b1c91ef1bcc3252d56f96b65b0f;hp=45c92ffe7d494aa934a17afcc16ec8332dd19e3d;hpb=0b407666b53dea109661f25d51860a7e7e06981f;p=freeside.git
diff --git a/httemplate/search/477.html b/httemplate/search/477.html
old mode 100755
new mode 100644
index 45c92ffe7..fb85f1e09
--- a/httemplate/search/477.html
+++ b/httemplate/search/477.html
@@ -1,70 +1,239 @@
-<% include( 'elements/search.html',
- 'title' => 'FCC Form 477 Results',
- 'html_init' => $html_init,
- 'name' => 'regions',
- 'query' => $sql_query,
- 'count_query' => $count_query,
- 'header' => [
- 'State code',
- 'County code',
- 'Census tract code',
- 'Quantity',
- ],
- 'fields' => [
- sub { my $row = shift; substr($row->censustract, 0, 2) },
- sub { my $row = shift; substr($row->censustract, 2, 3) },
- sub { my $row = shift; substr($row->censustract, 5) },
- 'quantity',
- ],
- 'links' => [
- [ $link, 'censustract' ],
- [ $link, 'censustract' ],
- [ $link, 'censustract' ],
- [ $link, 'censustract' ],
- ],
- )
-%>
+<& /elements/header.html, $title &>
+
+% foreach my $partname (@partnames) {
+% $cgi->param('parts', $partname);
+% $cgi->param('type', 'csv');
+
+
+ <% $part_titles->{$partname} %>
+ Download
+
+% my $header = ".header_$partname";
+% my $data = $parts{$partname};
+
+ <& $header &>
+
+% foreach my $row (@$data) {
+
+% foreach my $item (@$row) {
+ <% $item %> |
+% }
+
+% }
+
+% } # foreach $partname
+<& /elements/footer.html &>
<%init>
-
-my $curuser = $FS::CurrentUser::CurrentUser;
-
die "access denied"
- unless $curuser->access_right('List packages');
-
-my %search_hash = ();
-
-$search_hash{'query'} = $cgi->keywords;
-
-for ( qw(agentnum magic status classnum) ) {
- $search_hash{$_} = $cgi->param($_) if $cgi->param($_);
+ unless $FS::CurrentUser::CurrentUser->access_right('List packages');
+
+my %parts;
+# load from cache if possible
+my $session;
+if ( $cgi->param('session') =~ /^(\d+)$/ ) {
+ $session = $1;
+ %parts = %{ $m->cache->get($session) };
+} else {
+ $session = sprintf('%010d%06d', time, int(rand(1000000)));
+ $cgi->param('session', $session);
}
+my $agentnum;
+if ($cgi->param('agentnum') =~ /^(\d+)$/ ) {
+ $agentnum = $1;
+}
+my $date = parse_datetime($cgi->param('date')) || time;
+my @partnames = grep /^\w+$/, $cgi->param('parts');
+foreach my $partname (@partnames) {
+ $parts{$partname} ||= FS::Report::FCC_477->report( $partname,
+ date => $date,
+ agentnum => $agentnum
+ );
+}
+$m->cache->set($session, \%parts, '1h');
-my @report_option = $cgi->param('report_option')
- if $cgi->param('report_option');
-$search_hash{report_option} = join(',', @report_option) if @report_option;
+my $title = 'FCC Form 477 Data - ' . time2str('%b %o, %Y', $date);
-my $where = join(' OR ', map { "num = $_" } grep { /^\d+$/ } @report_option );
-my @report_option_name = $where ?
- ( map { $_->name }
- qsearch({ 'table' => 'part_pkg_report_option',
- 'hashref' => {},
- 'extra_sql' => "WHERE $where",
- })
- ) :
- ( 'all packages' );
+if ( $cgi->param('type') eq 'csv' ) {
+ my $partname = $partnames[0]; # ignore any beyond the first
+ my $data = $parts{$partname};
+ my $csv = Text::CSV_XS->new({ eol => "\r\n" }); # i think
-my $html_init = "For
". join(' and
', @report_option_name). "
";
+ my $filename = time2str('%Y-%m-%d', $date) . '-'. $partname . '.csv';
+ http_header('Content-Type' => 'text/csv');
+ http_header('Content-Disposition' => qq(attachment;filename="$filename"));
-my $sql_query = FS::cust_pkg->search_sql(\%search_hash);
+ $m->clear_buffer;
-$sql_query->{select} = 'count(*) as quantity, censustract';
-$sql_query->{extra_sql} =~ /^(.*)(ORDER BY bill)(.*)$/s or die "couldn't parse extra_sql";
-$sql_query->{extra_sql} = "$1 GROUP BY censustract $3";
+ foreach my $row (@$data) {
+ $csv->combine(@$row);
+ $m->print($csv->string);
+ }
+ $m->abort;
+}
-my $count_query = delete($sql_query->{'count_query'});
-$count_query = 'SELECT count(*) FROM (SELECT count(*) FROM cust_pkg '.
- $sql_query->{addl_from}. ' '. $sql_query->{extra_sql}. ') AS foo';
+my $part_titles = FS::Report::FCC_477->parts;
-my $link = 'cust_pkg.cgi?'. $cgi->query_string. ';censustract=';
%init>
+<%def .header_fbd>
+
+ Census Block |
+ DBA Name |
+ Technology |
+ Consumer? |
+ Advertised Speed (Mbps) |
+ Business? |
+ Contractual Speed (Mbps) |
+
+
+ Down |
+ Up |
+ Down |
+ Up |
+
+%def>
+<%def .header_fbs>
+
+ Census Tract |
+ Technology |
+ Speed (Mbps) |
+ Subscriptions |
+
+
+ Down |
+ Up |
+ Total |
+ Consumer |
+
+%def>
+<%def .header_fvs>
+
+ Census Tract |
+ VoIP? |
+ Lines/Subscriptions |
+
+
+ Total |
+ Consumer |
+
+%def>
+<%def .header_lts>
+
+ State |
+ Wholesale |
+ End User Lines |
+
+
+ VGEs |
+ UNE-Ls |
+
+ Total |
+ With Broadband |
+ Consumer |
+ Business |
+
+ Local Loop |
+
+ Special Media |
+
+
+
+ |
+ +LD |
+ |
+ +LD |
+
+ Owned |
+ UNE-L |
+ Resale |
+
+ Fiber |
+ Coaxial |
+ Wireless |
+
+%def>
+<%def .header_voip>
+
+ State |
+ VoIP OTT |
+ VoIP Non-OTT |
+
+
+ Total |
+ Consumer |
+
+ Total |
+ Consumer |
+ Bundled |
+ Media Type |
+
+
+ Copper |
+ Fiber |
+ Coaxial |
+ Wireless |
+ Other |
+
+%def>
+<%def .header_mbs>
+%# unimplemented
+
+ State |
+ Speed (Mbps) |
+ Subscriptions |
+
+
+ Down |
+ Up |
+ Total |
+ Consumer |
+
+%def>
+<%def .header_mvs>
+%# unimplemented
+
+ State |
+ Subscriptions |
+
+
+ Total |
+ Direct |
+
+%def>
+