diff options
Diffstat (limited to 'httemplate/search/phone_avail.html')
-rw-r--r-- | httemplate/search/phone_avail.html | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/httemplate/search/phone_avail.html b/httemplate/search/phone_avail.html new file mode 100644 index 000000000..1335379ae --- /dev/null +++ b/httemplate/search/phone_avail.html @@ -0,0 +1,156 @@ +<% include( 'elements/search.html', + 'title' => 'Phone Number (DID) Search Results', + 'name_singular' => 'phone number', + 'query' => { + 'table' => 'phone_avail', + 'hashref' => $hashref, + 'select' => join(', ', + 'phone_avail.*', + 'cust_main.custnum', + FS::UI::Web::cust_sql_fields(), + ), + 'extra_sql' => $search, + 'addl_from' => $addl_from, + }, + 'count_query' => $count_query, + 'header' => [ '#', + 'State', + 'Phone Number', + 'Rate Center', + 'Batch', + 'Export', + 'Service', + FS::UI::Web::cust_header(), + ], + 'fields' => [ + 'availnum', + 'state', + sub { my $pn = shift; + '+'. $pn->countrycode. ' '. + $pn->npa. ' '. $pn->nxx. '-'. $pn->station; + }, + sub { shift->get('name') }, + 'availbatch', + sub { + my $pa = shift; + return '' unless $pa->part_export; + $pa->part_export->exportname; + }, + sub { + my $pa = shift; + return '' unless $pa->cust_svc; + my($label,$value) = $pa->cust_svc->label; + $label . ": " . $value; + }, + \&FS::UI::Web::cust_fields, + '', + ], + 'align' => 'rllllllc'.FS::UI::Web::cust_aligns(), + 'links' => [ + '', + '', + '', + '', + '', + '', #XXX #$export_link - to what exactly? + $svc_link, + ( map { $_ ne 'Cust. Status' ? $link_cust : '' } + FS::UI::Web::cust_header() + ), + '', + ], + 'color' => [ + '', + '', + '', + '', + '', + '', + '', + FS::UI::Web::cust_colors(), + '', + ], + 'style' => [ + '', + '', + '', + '', + '', + '', + '', + FS::UI::Web::cust_styles(), + '', + ], + ) +%> +<%init> + +die "access denied" + unless ( $FS::CurrentUser::CurrentUser->access_right('List inventory') + ); + +my @search = (); + +push @search, "availbatch = '$1'" + if ( $cgi->param('availbatch') =~ /^([\w\d \/\:\-\.]+)$/ ); + +push @search, "countrycode = '$1'" + if ( $cgi->param('countrycode') =~ /^(\d{1,3})$/ ); + +push @search, "phone_avail.state = '$1'" + if ( $cgi->param('state') =~ /^(\w{2})$/ ); + +# i know that the regexps match more than NPA/NXX, but this is good enough now +push @search, "npa = '$1'" + if ( $cgi->param('npa') =~ /^(\d{3})$/ ); +push @search, "nxx = '$1'" + if ( $cgi->param('npa') =~ /^\d{3}$/ && $cgi->param('nxx') =~ /^(\d{3})$/ ); + +push @search, "name = '$1'" + if ( $cgi->param('ratecenter') =~ /^([\w \-\.]+)$/ ); + +push @search, "svcnum is null" + if ( $cgi->param('avail_status') eq 'AVAIL' ); +push @search, "svcnum is not null" + if ( $cgi->param('avail_status') eq 'UNAVAIL' ); + +# #here is the agent virtualization +# push @search, $FS::CurrentUser::CurrentUser->agentnums_sql; + +my $search = scalar(@search) + ? ' WHERE '. join(' AND ', @search) + : ''; + + +my $addl_from = ' LEFT JOIN cust_svc USING ( svcnum ) '. + #' LEFT JOIN part_svc USING ( svcpart ) '. + ' LEFT JOIN cust_pkg USING ( pkgnum ) '. + ' LEFT JOIN cust_main USING ( custnum ) '; + +my $count_query = "SELECT COUNT(*) FROM phone_avail $search"; #$addl_from? + +my $hashref = {}; +$hashref->{'ordernum'} = $1 if $cgi->param('ordernum') =~ /^(\d+)$/; + +my $link_cust = sub { + my $phone_avail = shift; + if ( $phone_avail->svcnum ) { + my $cust_svc = $phone_avail->cust_svc; + if ( $cust_svc->pkgnum ) { + #my $cust_main = $cust_svc->cust_pkg->cust_main; + return [ "${p}view/cust_main.cgi?", 'custnum' ]; + } + } + ''; +}; + +my $svc_link = sub { + my $phone_avail = shift; + my $cust_svc = $phone_avail->cust_svc; + if ( $cust_svc ) { + return [ "${p}view/svc_phone.cgi?", 'svcnum']; + } + ''; +}; + +</%init> |