1 <& elements/svc_Common.html,
2 'title' => 'Broadband Search Results',
3 'name' => 'broadband services',
4 'html_init' => $html_init,
6 'count_query' => $sql_query->{'count_query'},
7 'redirect' => [ popurl(2). "view/svc_broadband.cgi?", 'svcnum' ],
15 FS::UI::Web::cust_header($cgi->param('cust_fields')),
17 'fields' => [ 'svcnum',
20 my $router = shift->router;
21 $router ? $router->routername : '';
27 $cust_pkg_cache{$_[0]->svcnum} ||= $_[0]->cust_svc->cust_pkg;
28 return '' unless $cust_pkg_cache{$_[0]->svcnum};
29 $cust_pkg_cache{$_[0]->svcnum}->ucfirst_status
31 \&FS::UI::Web::cust_fields,
36 (map '', @tower_fields),
40 ( map { $_ ne 'Cust. Status' ? $link_cust : '' }
41 FS::UI::Web::cust_header($cgi->param('cust_fields'))
44 'align' => 'rll'.('r' x @tower_fields).
48 FS::UI::Web::cust_aligns(),
53 (map '', @tower_fields),
57 $cust_pkg_cache{$_[0]->svcnum} ||= $_[0]->cust_svc->cust_pkg;
58 return '' unless $cust_pkg_cache{$_[0]->svcnum};
59 my $c = FS::cust_pkg::statuscolors;
60 $c->{$cust_pkg_cache{$_[0]->svcnum}->status };
62 FS::UI::Web::cust_colors(),
68 (map '', @tower_fields),
72 FS::UI::Web::cust_styles(),
78 die "access denied" unless
79 $FS::CurrentUser::CurrentUser->access_right('List services');
83 my $conf = new FS::Conf;
85 $m->comp('/elements/handle_uri_query');
88 if ( $cgi->param('magic') eq 'unlinked' ) {
89 %search_hash = ( 'unlinked' => 1 );
91 foreach (qw( custnum agentnum svcpart cust_fields )) {
92 $search_hash{$_} = $cgi->param($_) if $cgi->param($_);
94 foreach (qw(pkgpart routernum towernum sectornum)) {
95 $search_hash{$_} = [ $cgi->param($_) ] if $cgi->param($_);
97 if ( defined($cgi->param('cancelled')) ) {
98 $search_hash{'cancelled'} = $cgi->param('cancelled') ? 1 : 0;
102 if ( $cgi->param('sortby') =~ /^(\w+)$/ ) {
103 $search_hash{'order_by'} = "ORDER BY $1";
106 my $sql_query = FS::svc_broadband->search(\%search_hash);
110 if ( FS::tower_sector->count > 0 ) {
111 push @tower_header, 'Tower/Sector';
112 push @tower_fields, sub { $_[0]->tower_sector ?
113 $_[0]->tower_sector->description : '' };
116 my %routerbyblock = ();
117 foreach my $router (qsearch('router', {})) {
118 foreach ($router->addr_block) {
119 $routerbyblock{$_->blocknum} = $router;
123 my $link = [ $p.'view/svc_broadband.cgi?', 'svcnum' ];
125 #XXX get the router link working
126 #my $link_router = sub {
127 # my $routernum = $routerbyblock{shift->blocknum}->routernum;
128 # [ $p.'view/router.cgi?'.$routernum, 'routernum' ];
131 my $link_cust = [ $p.'view/cust_main.cgi?', 'custnum' ];
133 my $html_init = include('/elements/email-link.html',
134 'search_hash' => \%search_hash,
135 'table' => 'svc_broadband'
138 my $query = $m->scomp('/elements/create_uri_query');
140 $html_init .= ' | ' .
142 $fsurl . 'search/svc_broadband-map.html?' . $query .
143 '">' . emt('View a map of these services') . '</a>';
145 my (@header_pkg,@fields_pkg,@blank_pkg);
147 #false laziness with search/svc_acct.cgi
148 $cgi->param('cust_pkg_fields') =~ /^([\w\,]*)$/ or die "bad cust_pkg_fields";
149 my @pkg_fields = split(',', $1);
150 foreach my $pkg_field ( @pkg_fields ) {
151 ( my $header = ucfirst($pkg_field) ) =~ s/_/ /; #:/
152 push @header_pkg, $header;
154 #not the most efficient to do it every field, but this is of niche use. so far
155 push @fields_pkg, sub { my $svc_x = shift;
156 my $cust_pkg = $svc_x->cust_svc->cust_pkg or return '';
158 if ($pkg_field eq 'package') {
159 $value = $cust_pkg->part_pkg->pkg;
160 #$value = $cust_pkg->pkg_label;
163 $value = $cust_pkg->get($pkg_field);#closures help alot
164 $value ? time2str('%b %d %Y', $value ) : '';