svc_phone service and CDR billing from imported CDRs
[freeside.git] / httemplate / search / svc_phone.cgi
diff --git a/httemplate/search/svc_phone.cgi b/httemplate/search/svc_phone.cgi
new file mode 100644 (file)
index 0000000..a68a13e
--- /dev/null
@@ -0,0 +1,94 @@
+<%
+
+my $conf = new FS::Conf;
+
+my($query)=$cgi->keywords;
+$query ||= ''; #to avoid use of unitialized value errors
+
+my $orderby = 'ORDER BY svcnum';
+my %svc_phone = ();
+my @extra_sql = ();
+if ( $query eq 'svcnum' ) {
+  #$orderby = 'ORDER BY svcnum';
+} elsif ( $query eq 'phonenum' ) {
+  $orderby = 'ORDER BY phonenum';
+} elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
+  #$orderby = 'ORDER BY svcnum';
+  push @extra_sql, "svcpart = $1";
+} else {
+  $cgi->param('phonenum') =~ /^([\d\- ]+)$/; 
+  ( $svc_phone{'phonenum'} = $1 ) =~ s/\D//g;
+}
+
+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 ) ';
+
+#here is the agent virtualization
+push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
+my $extra_sql = '';
+if ( @extra_sql ) {
+  $extra_sql = ( keys(%svc_phone) ? ' AND ' : ' WHERE ' ).
+               join(' AND ', @extra_sql );
+}
+
+my $count_query = "SELECT COUNT(*) FROM svc_phone $addl_from ";
+if ( keys %svc_phone ) {
+  $count_query .= ' WHERE '.
+                    join(' AND ', map "$_ = ". dbh->quote($svc_phone{$_}),
+                                      keys %svc_phone
+                        );
+}
+$count_query .= $extra_sql;
+
+my $sql_query = {
+  'table'     => 'svc_phone',
+  'hashref'   => \%svc_phone,
+  'select'    => join(', ',
+                   'svc_phone.*',
+                   'part_svc.svc',
+                    'cust_main.custnum',
+                    FS::UI::Web::cust_sql_fields(),
+                 ),
+  'extra_sql' => "$extra_sql $orderby",
+  'addl_from' => $addl_from,
+};
+
+my $link = [ "${p}view/svc_phone.cgi?", 'svcnum' ];
+
+#smaller false laziness w/svc_*.cgi here
+my $link_cust = sub {
+  my $svc_x = shift;
+  $svc_x->custnum ? [ "${p}view/cust_main.cgi?", 'custnum' ] : '';
+};
+
+%><%= include( 'elements/search.html',
+                 'title'             => "Phone number search results",
+                 'name'              => 'phone numbers',
+                 'query'             => $sql_query,
+                 'count_query'       => $count_query,
+                 'redirect'          => $link,
+                 'header'            => [ '#',
+                                          'Service',
+                                          'Country code',
+                                          'Phone number',
+                                          FS::UI::Web::cust_header(),
+                                        ],
+                 'fields'            => [ 'svcnum',
+                                          'svc',
+                                          'countrycode',
+                                          'phonenum',
+                                          \&FS::UI::Web::cust_fields,
+                                        ],
+                 'links'             => [ $link,
+                                          $link,
+                                          $link,
+                                          $link,
+                                          ( map { $link_cust }
+                                                FS::UI::Web::cust_header()
+                                          ),
+                                        ],
+              )
+%>